import * as AccordionPrimitive from '@rn-primitives/accordion'; import * as React from 'react'; import { Platform, Pressable, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, FadeOutUp, LayoutAnimationConfig, LinearTransition, interpolate, useAnimatedStyle, useDerivedValue, withTiming, } from 'react-native-reanimated'; import { ChevronDown } from '../../lib/icons/ChevronDown'; import { cn } from '../../lib/utils'; import { TextClassContext } from '../../components/ui/text'; function Accordion({ children, ...props }: Omit & { ref?: React.RefObject; }) { return ( {children} ); } function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemProps & { ref?: React.RefObject; }) { return ( ); } const Trigger = Platform.OS === 'web' ? View : Pressable; function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.TriggerProps & { children?: React.ReactNode; ref?: React.RefObject; }) { const { isExpanded } = AccordionPrimitive.useItemContext(); const progress = useDerivedValue(() => isExpanded ? withTiming(1, { duration: 250 }) : withTiming(0, { duration: 200 }), ); const chevronStyle = useAnimatedStyle(() => ({ transform: [{ rotate: `${progress.value * 180}deg` }], opacity: interpolate(progress.value, [0, 1], [1, 0.8], Extrapolation.CLAMP), })); return ( {children} ); } function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps & { ref?: React.RefObject; }) { const { isExpanded } = AccordionPrimitive.useItemContext(); return ( {children} ); } function InnerContent({ children, className, }: { children: React.ReactNode; className?: string; }) { if (Platform.OS === 'web') { return {children}; } return ( {children} ); } export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };