reactnatively-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/Box/Box.tsx","../src/components/layout/Stack/Stack.tsx","../src/components/layout/Flex/Flex.tsx","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Center/Center.tsx","../src/components/layout/Spacer/Spacer.tsx","../src/components/layout/Container/Container.tsx","../src/components/layout/Divider/Divider.tsx","../src/components/layout/AspectRatio/AspectRatio.tsx","../src/components/typography/Text/Text.tsx","../src/components/typography/Heading/Heading.tsx","../src/components/typography/Caption/Caption.tsx","../src/components/typography/Paragraph/Paragraph.tsx","../src/components/typography/Link/Link.tsx","../src/components/typography/Code/Code.tsx","../src/components/typography/GradientText/GradientText.tsx","../src/components/inputs/Button/Button.tsx","../src/components/inputs/IconButton/IconButton.tsx","../src/components/inputs/FAB/FAB.tsx","../src/components/forms/FormControl/form-control-context.ts","../src/components/forms/FormControl/FormControl.tsx","../src/components/forms/TextInput/TextInput.tsx","../src/components/forms/PasswordInput/PasswordInput.tsx","../src/components/forms/TextArea/TextArea.tsx","../src/components/forms/SearchBar/SearchBar.tsx","../src/components/forms/Checkbox/Checkbox.tsx","../src/components/forms/Radio/radio-group-context.ts","../src/components/forms/Radio/Radio.tsx","../src/components/forms/Radio/RadioGroup.tsx","../src/components/forms/Switch/Switch.tsx","../src/components/forms/Slider/Slider.tsx","../src/components/forms/RangeSlider/RangeSlider.tsx","../src/components/forms/OTPInput/OTPInput.tsx","../src/components/forms/Select/Select.tsx","../src/components/forms/MultiSelect/MultiSelect.tsx","../src/components/forms/DatePicker/DatePicker.tsx","../src/components/forms/TimePicker/TimePicker.tsx","../src/components/data-display/Card/LiquidCard.tsx","../src/components/data-display/Avatar/Avatar.tsx","../src/components/data-display/Badge/Badge.tsx","../src/components/data-display/Chip/Chip.tsx","../src/components/data-display/List/ListItem.tsx","../src/components/data-display/List/List.tsx","../src/components/data-display/Accordion/Accordion.tsx","../src/components/data-display/Timeline/Timeline.tsx","../src/components/data-display/Carousel/Carousel.tsx","../src/components/data-display/StatsCard/StatsCard.tsx","../src/components/data-display/Table/Table.tsx","../src/components/feedback/Alert/Alert.tsx","../src/components/feedback/Banner/Banner.tsx","../src/components/feedback/Toast/Toast.tsx","../src/components/feedback/Toast/toast-api.ts","../src/components/feedback/Toast/ToastProvider.tsx","../src/components/feedback/Skeleton/Skeleton.tsx","../src/components/feedback/ProgressBar/ProgressBar.tsx","../src/components/feedback/Spinner/Spinner.tsx","../src/components/feedback/EmptyState/EmptyState.tsx","../src/components/feedback/Dialog/Dialog.tsx","../src/components/feedback/BottomSheet/BottomSheet.tsx","../src/components/feedback/Tooltip/Tooltip.tsx","../src/components/feedback/Popover/Popover.tsx","../src/components/feedback/Snackbar/snackbar-api.ts","../src/components/feedback/Snackbar/Snackbar.tsx","../src/components/navigation/Tabs/Tabs.tsx","../src/components/navigation/SegmentedTabs/SegmentedTabs.tsx","../src/components/navigation/TopNavigation/TopNavigation.tsx","../src/components/navigation/BottomNavigation/BottomNavigation.tsx","../src/components/navigation/Drawer/Drawer.tsx","../src/components/navigation/Sidebar/Sidebar.tsx","../src/components/navigation/Breadcrumb/Breadcrumb.tsx","../src/components/navigation/Stepper/Stepper.tsx","../src/components/overlays/Modal/Modal.tsx","../src/components/overlays/ActionSheet/ActionSheet.tsx","../src/components/overlays/CommandPalette/CommandPalette.tsx","../src/components/overlays/ContextMenu/ContextMenu.tsx","../src/components/overlays/HoverCard/HoverCard.tsx","../src/components/motion/Fade/Fade.tsx","../src/components/motion/Scale/Scale.tsx","../src/components/motion/Slide/Slide.tsx","../src/components/motion/BlurTransition/BlurTransition.tsx","../src/components/motion/MagneticPressable/MagneticPressable.tsx","../src/components/glass-advanced/BlurSurface/BlurSurface.tsx","../src/components/glass-advanced/DynamicIsland/DynamicIsland.tsx","../src/components/glass-advanced/FloatingDock/FloatingDock.tsx","../src/components/glass-advanced/MorphingContainer/MorphingContainer.tsx","../src/components/glass-advanced/GlassNavbar/GlassNavbar.tsx","../src/components/glass-advanced/GlassSidebar/GlassSidebar.tsx","../src/components/glass-advanced/InteractiveGlassSurface/InteractiveGlassSurface.tsx","../src/components/glass-advanced/FloatingMediaPanel/FloatingMediaPanel.tsx"],"names":["spacing","radii","React","useMemo","jsx","View","resolveSpacing","Children","isValidElement","jsxs","StyleSheet","styles","useIsDark","Text","useState","useCallback","useTheme","RNText","Linking","Platform","GlassView","SIZE_CONFIG","defineVariants","Animated","Pressable","useSharedValue","useAnimatedStyle","interpolate","withSpring","SPRING_SNAPPY","ActivityIndicator","Fragment","AnimatedPressable","usePressAnimation","SIZE_MAP","useEntranceAnimation","createContext","useContext","useId","interpolateColor","useRef","RNTextInput","withTiming","TIMING_FAST","SPRING_BOUNCE","useControllable","PanResponder","snapToStep","clamp","TextInput","RNAnimated","Modal","ScrollView","OptionRow","ITEM_HEIGHT","VISIBLE_ITEMS","WHEEL_HEIGHT","h","min","WheelColumn","Image","SPRING_LIQUID","SIZE_PX","useEffect","Chip","SectionList","FlatList","DOT_SIZE","Dimensions","useReducedMotion","TIMING_EXIT","runOnJS","STATUS_COLORS","STATUS_ICONS","SPRING_REVEAL","withRepeat","Extrapolation","SCREEN_WIDTH","show","computePosition","DEFAULT_WIDTH","resolveMaxWidth","RNModal","SCREEN_HEIGHT","DEFAULT_COLLAPSED_WIDTH"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useMemo } from 'react';\nimport { View, type ViewStyle } from 'react-native';\nimport { spacing, radii } from 'reactnatively-theme';\nimport type { SpacingKey, RadiiKey } from 'reactnatively-theme';\nimport type { BoxProps } from './Box.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey];\n}\n\nfunction resolveRadius(value: RadiiKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return radii[value as RadiiKey];\n}\n\nexport const Box = React.memo<BoxProps>(\n ({\n p, px, py, pt, pb, pl, pr,\n m, mx, my, mt, mb, ml, mr,\n flex, direction, align, justify, wrap, gap, rowGap, columnGap, selfAlign,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n bg, borderRadius, overflow, opacity,\n position, top, right, bottom, left, zIndex,\n style, children, testID,\n }) => {\n const computedStyle = useMemo((): ViewStyle => {\n const rs = resolveSpacing;\n const rr = resolveRadius;\n\n return {\n // Padding\n padding: rs(p),\n paddingHorizontal: rs(px),\n paddingVertical: rs(py),\n paddingTop: rs(pt),\n paddingBottom: rs(pb),\n paddingLeft: rs(pl),\n paddingRight: rs(pr),\n // Margin\n margin: rs(m),\n marginHorizontal: rs(mx),\n marginVertical: rs(my),\n marginTop: rs(mt),\n marginBottom: rs(mb),\n marginLeft: rs(ml),\n marginRight: rs(mr),\n // Flex\n flex,\n flexDirection: direction,\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap,\n gap: rs(gap),\n rowGap: rs(rowGap),\n columnGap: rs(columnGap),\n alignSelf: selfAlign as ViewStyle['alignSelf'],\n // Size\n width: width as ViewStyle['width'],\n height: height as ViewStyle['height'],\n minWidth: minWidth as ViewStyle['minWidth'],\n maxWidth: maxWidth as ViewStyle['maxWidth'],\n minHeight: minHeight as ViewStyle['minHeight'],\n maxHeight: maxHeight as ViewStyle['maxHeight'],\n // Appearance\n backgroundColor: bg,\n borderRadius: rr(borderRadius),\n overflow: overflow as ViewStyle['overflow'],\n opacity,\n // Position\n position: position as ViewStyle['position'],\n top, right, bottom, left, zIndex,\n };\n }, [\n p, px, py, pt, pb, pl, pr,\n m, mx, my, mt, mb, ml, mr,\n flex, direction, align, justify, wrap, gap, rowGap, columnGap, selfAlign,\n width, height, minWidth, maxWidth, minHeight, maxHeight,\n bg, borderRadius, overflow, opacity,\n position, top, right, bottom, left, zIndex,\n ]);\n\n return (\n <View testID={testID} style={[computedStyle, style]}>\n {children}\n </View>\n );\n },\n);\n\nBox.displayName = 'Box';\n","import React, { useMemo, Children, isValidElement } from 'react';\nimport { View, StyleSheet, type ViewStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { StackProps } from './Stack.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number {\n if (value === undefined) return 0;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? 0;\n}\n\nexport const Stack = React.memo<StackProps>(\n ({\n direction = 'vertical',\n gap = 4,\n align,\n justify,\n flex,\n wrap = false,\n divider,\n style,\n children,\n testID,\n }) => {\n const isHorizontal = direction === 'horizontal';\n const gapValue = resolveSpacing(gap);\n\n const containerStyle = useMemo((): ViewStyle => ({\n flexDirection: isHorizontal ? 'row' : 'column',\n alignItems: align,\n justifyContent: justify,\n flex,\n flexWrap: wrap ? 'wrap' : 'nowrap',\n }), [isHorizontal, align, justify, flex, wrap]);\n\n const childArray = Children.toArray(children).filter(isValidElement);\n\n return (\n <View testID={testID} style={[containerStyle, style]}>\n {childArray.map((child, index) => {\n const isLast = index === childArray.length - 1;\n return (\n <React.Fragment key={(child as React.ReactElement).key ?? index}>\n {child}\n {!isLast && gapValue > 0 && (\n <View\n style={\n isHorizontal\n ? { width: gapValue }\n : { height: gapValue }\n }\n />\n )}\n {!isLast && divider && (\n <View\n style={[\n isHorizontal ? styles.dividerVertical : styles.dividerHorizontal,\n isHorizontal\n ? { marginHorizontal: gapValue / 2 }\n : { marginVertical: gapValue / 2 },\n ]}\n />\n )}\n </React.Fragment>\n );\n })}\n </View>\n );\n },\n);\n\nStack.displayName = 'Stack';\n\n// Convenience aliases\nexport const HStack = React.memo<Omit<StackProps, 'direction'>>((props) => (\n <Stack direction=\"horizontal\" {...props} />\n));\nHStack.displayName = 'HStack';\n\nexport const VStack = React.memo<Omit<StackProps, 'direction'>>((props) => (\n <Stack direction=\"vertical\" {...props} />\n));\nVStack.displayName = 'VStack';\n\nconst styles = StyleSheet.create({\n dividerHorizontal: {\n height: StyleSheet.hairlineWidth,\n backgroundColor: 'rgba(0,0,0,0.12)',\n alignSelf: 'stretch',\n },\n dividerVertical: {\n width: StyleSheet.hairlineWidth,\n backgroundColor: 'rgba(0,0,0,0.12)',\n alignSelf: 'stretch',\n },\n});\n","import React, { useMemo } from 'react';\nimport { View, StyleSheet, type ViewStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { FlexProps } from './Flex.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? undefined;\n}\n\nexport const Flex = React.memo<FlexProps>(\n ({\n direction = 'row',\n gap,\n align,\n justify,\n wrap = false,\n flex,\n grow,\n shrink,\n basis,\n children,\n style,\n testID,\n }) => {\n const computedStyle = useMemo((): ViewStyle => ({\n flexDirection: direction,\n gap: resolveSpacing(gap),\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? 'wrap' : 'nowrap',\n ...(flex !== undefined ? { flex } : undefined),\n ...(grow !== undefined ? { flexGrow: grow } : undefined),\n ...(shrink !== undefined ? { flexShrink: shrink } : undefined),\n ...(basis !== undefined ? { flexBasis: basis as ViewStyle['flexBasis'] } : undefined),\n }), [direction, gap, align, justify, wrap, flex, grow, shrink, basis]);\n\n return (\n <View testID={testID} style={[computedStyle, style]}>\n {children}\n </View>\n );\n },\n);\n\nFlex.displayName = 'Flex';\n\n// Module-level stylesheet (empty — styles computed via useMemo)\nconst styles = StyleSheet.create({});\n","import React, { useMemo } from 'react';\nimport { View, StyleSheet, type ViewStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { GridProps } from './Grid.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number {\n if (value === undefined) return 0;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? 0;\n}\n\nexport const Grid = React.memo<GridProps>(\n ({\n columns = 2,\n gap,\n rowGap,\n columnGap,\n children,\n style,\n testID,\n }) => {\n const resolvedGap = resolveSpacing(gap);\n const resolvedRowGap = rowGap !== undefined ? resolveSpacing(rowGap) : resolvedGap;\n const resolvedColumnGap = columnGap !== undefined ? resolveSpacing(columnGap) : resolvedGap;\n\n const childArray = React.Children.toArray(children);\n\n const itemWidth = useMemo((): ViewStyle => {\n // Each item occupies 1/columns of the container minus the column gaps\n // Total gap space per row = columnGap * (columns - 1)\n // Per item gap deduction = columnGap * (columns - 1) / columns\n const totalGapPerRow = resolvedColumnGap * (columns - 1);\n const gapDeductionPerItem = totalGapPerRow / columns;\n return {\n width: `${(100 / columns)}%` as ViewStyle['width'],\n paddingHorizontal: resolvedColumnGap / 2,\n };\n }, [columns, resolvedColumnGap]);\n\n return (\n <View testID={testID} style={[styles.container, style]}>\n {childArray.map((child, index) => {\n const row = Math.floor(index / columns);\n return (\n <View\n key={index}\n style={[\n itemWidth,\n row > 0 ? { marginTop: resolvedRowGap } : undefined,\n ]}\n >\n {child}\n </View>\n );\n })}\n </View>\n );\n },\n);\n\nGrid.displayName = 'Grid';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n});\n","import React, { useMemo } from 'react';\nimport { View, StyleSheet, type ViewStyle } from 'react-native';\nimport type { CenterProps } from './Center.types';\n\nexport const Center = React.memo<CenterProps>(\n ({ flex, children, style, testID }) => {\n const computedStyle = useMemo((): ViewStyle => ({\n ...styles.center,\n ...(flex !== undefined ? { flex } : undefined),\n }), [flex]);\n\n return (\n <View testID={testID} style={[computedStyle, style]}>\n {children}\n </View>\n );\n },\n);\n\nCenter.displayName = 'Center';\n\nconst styles = StyleSheet.create({\n center: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","import React, { useMemo } from 'react';\nimport { View, type ViewStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { SpacerProps } from './Spacer.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? undefined;\n}\n\nexport const Spacer = React.memo<SpacerProps>(\n ({ size, axis = 'both' }) => {\n const resolvedSize = resolveSpacing(size);\n\n const computedStyle = useMemo((): ViewStyle => {\n if (resolvedSize === undefined) {\n // Flexible spacer\n return { flex: 1 };\n }\n // Fixed spacer\n if (axis === 'horizontal') {\n return { width: resolvedSize };\n }\n if (axis === 'vertical') {\n return { height: resolvedSize };\n }\n // axis === 'both'\n return { width: resolvedSize, height: resolvedSize };\n }, [resolvedSize, axis]);\n\n return <View style={computedStyle} />;\n },\n);\n\nSpacer.displayName = 'Spacer';\n","import React, { useMemo } from 'react';\nimport { View, StyleSheet, type ViewStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { ContainerProps, ContainerMaxWidth } from './Container.types';\n\nconst MAX_WIDTH_VALUES: Record<ContainerMaxWidth, number> = {\n sm: 480,\n md: 768,\n lg: 1024,\n xl: 1280,\n};\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? undefined;\n}\n\nfunction resolveMaxWidth(value: number | ContainerMaxWidth | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return MAX_WIDTH_VALUES[value];\n}\n\nexport const Container = React.memo<ContainerProps>(\n ({\n maxWidth,\n px = 16,\n py,\n center = true,\n children,\n style,\n }) => {\n const resolvedMaxWidth = resolveMaxWidth(maxWidth);\n const resolvedPx = resolveSpacing(px);\n const resolvedPy = resolveSpacing(py);\n\n const computedStyle = useMemo((): ViewStyle => ({\n width: '100%',\n ...(resolvedMaxWidth !== undefined ? { maxWidth: resolvedMaxWidth } : undefined),\n ...(resolvedPx !== undefined ? { paddingHorizontal: resolvedPx } : undefined),\n ...(resolvedPy !== undefined ? { paddingVertical: resolvedPy } : undefined),\n ...(center ? styles.centered : undefined),\n }), [resolvedMaxWidth, resolvedPx, resolvedPy, center]);\n\n return (\n <View style={[computedStyle, style]}>\n {children}\n </View>\n );\n },\n);\n\nContainer.displayName = 'Container';\n\nconst styles = StyleSheet.create({\n centered: {\n alignSelf: 'center',\n },\n});\n","import React, { useMemo } from 'react';\nimport { View, Text, StyleSheet, type ViewStyle, type TextStyle } from 'react-native';\nimport { spacing } from 'reactnatively-theme';\nimport { useIsDark } from 'reactnatively-theme';\nimport type { SpacingKey } from 'reactnatively-theme';\nimport type { DividerProps } from './Divider.types';\n\nfunction resolveSpacing(value: SpacingKey | number | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return value;\n return spacing[value as SpacingKey] ?? undefined;\n}\n\nexport const Divider = React.memo<DividerProps>(\n ({\n orientation = 'horizontal',\n thickness = StyleSheet.hairlineWidth,\n color,\n spacing: spacingProp,\n label,\n labelStyle,\n style,\n }) => {\n const isDark = useIsDark();\n const resolvedSpacing = resolveSpacing(spacingProp);\n\n const defaultColor = isDark ? 'rgba(255,255,255,0.10)' : 'rgba(0,0,0,0.10)';\n const resolvedColor = color ?? defaultColor;\n\n const isHorizontal = orientation === 'horizontal';\n\n const lineStyle = useMemo((): ViewStyle => {\n if (isHorizontal) {\n return {\n height: thickness,\n backgroundColor: resolvedColor,\n ...(resolvedSpacing !== undefined\n ? { marginVertical: resolvedSpacing }\n : undefined),\n };\n }\n return {\n width: thickness,\n backgroundColor: resolvedColor,\n ...(resolvedSpacing !== undefined\n ? { marginHorizontal: resolvedSpacing }\n : undefined),\n };\n }, [isHorizontal, thickness, resolvedColor, resolvedSpacing]);\n\n if (label && isHorizontal) {\n return (\n <View style={[styles.labelContainer, style]}>\n <View style={[styles.labelLine, { backgroundColor: resolvedColor, height: thickness }]} />\n <Text style={[styles.labelText, labelStyle]}>{label}</Text>\n <View style={[styles.labelLine, { backgroundColor: resolvedColor, height: thickness }]} />\n </View>\n );\n }\n\n return <View style={[lineStyle, isHorizontal ? styles.stretchH : styles.stretchV, style]} />;\n },\n);\n\nDivider.displayName = 'Divider';\n\nconst styles = StyleSheet.create({\n stretchH: {\n alignSelf: 'stretch',\n },\n stretchV: {\n alignSelf: 'stretch',\n },\n labelContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n labelLine: {\n flex: 1,\n },\n labelText: {\n marginHorizontal: 12,\n fontSize: 12,\n color: 'rgba(128,128,128,0.8)',\n },\n});\n","import React, { useState, useCallback, useMemo } from 'react';\nimport { View, type LayoutChangeEvent, type ViewStyle } from 'react-native';\nimport type { AspectRatioProps } from './AspectRatio.types';\n\nexport const AspectRatio = React.memo<AspectRatioProps>(\n ({ ratio, children, style }) => {\n const [width, setWidth] = useState<number>(0);\n\n const onLayout = useCallback((event: LayoutChangeEvent) => {\n const { width: measuredWidth } = event.nativeEvent.layout;\n setWidth(measuredWidth);\n }, []);\n\n const innerStyle = useMemo((): ViewStyle => ({\n width: '100%',\n height: width > 0 ? width / ratio : undefined,\n }), [width, ratio]);\n\n return (\n <View style={[style]} onLayout={onLayout}>\n <View style={innerStyle}>\n {children}\n </View>\n </View>\n );\n },\n);\n\nAspectRatio.displayName = 'AspectRatio';\n","import React, { useMemo } from 'react';\nimport { Text as RNText, StyleSheet, type TextStyle } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { TextProps, TextVariant, TextWeight } from './Text.types';\n\nconst FONT_SIZES: Record<TextVariant, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n '2xl': 24,\n};\n\nconst FONT_WEIGHTS: Record<TextWeight, TextStyle['fontWeight']> = {\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n};\n\nexport const Text = React.memo<TextProps>(\n ({\n variant = 'md',\n weight = 'regular',\n color,\n align,\n italic = false,\n underline = false,\n strikethrough = false,\n numberOfLines,\n style,\n children,\n ...rest\n }) => {\n const { theme } = useTheme();\n\n const computedStyle = useMemo((): TextStyle => ({\n fontSize: FONT_SIZES[variant],\n fontWeight: FONT_WEIGHTS[weight],\n color: color ?? theme.colors.text,\n ...(align !== undefined ? { textAlign: align } : undefined),\n ...(italic ? { fontStyle: 'italic' as const } : undefined),\n ...(underline && strikethrough\n ? { textDecorationLine: 'underline line-through' as const }\n : underline\n ? { textDecorationLine: 'underline' as const }\n : strikethrough\n ? { textDecorationLine: 'line-through' as const }\n : undefined),\n }), [variant, weight, color, theme.colors.text, align, italic, underline, strikethrough]);\n\n return (\n <RNText\n {...rest}\n numberOfLines={numberOfLines}\n style={[computedStyle, style]}\n >\n {children}\n </RNText>\n );\n },\n);\n\nText.displayName = 'Text';\n\n","import React, { useMemo } from 'react';\nimport { Text, StyleSheet, type TextStyle } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { HeadingProps, HeadingLevel } from './Heading.types';\nimport type { TextWeight } from '../Text/Text.types';\n\nconst HEADING_SIZES: Record<HeadingLevel, number> = {\n h1: 36,\n h2: 30,\n h3: 24,\n h4: 20,\n h5: 18,\n h6: 16,\n};\n\nconst DEFAULT_HEADING_WEIGHTS: Record<HeadingLevel, TextStyle['fontWeight']> = {\n h1: '700',\n h2: '700',\n h3: '700',\n h4: '600',\n h5: '600',\n h6: '600',\n};\n\nconst WEIGHT_VALUES: Record<TextWeight, TextStyle['fontWeight']> = {\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n};\n\nexport const Heading = React.memo<HeadingProps>(\n ({\n level = 'h2',\n weight,\n color,\n align,\n style,\n children,\n ...rest\n }) => {\n const { theme } = useTheme();\n\n const computedStyle = useMemo((): TextStyle => ({\n fontSize: HEADING_SIZES[level],\n fontWeight: weight !== undefined ? WEIGHT_VALUES[weight] : DEFAULT_HEADING_WEIGHTS[level],\n color: color ?? theme.colors.text,\n ...(align !== undefined ? { textAlign: align } : undefined),\n }), [level, weight, color, theme.colors.text, align]);\n\n return (\n <Text\n {...rest}\n accessibilityRole=\"header\"\n style={[computedStyle, style]}\n >\n {children}\n </Text>\n );\n },\n);\n\nHeading.displayName = 'Heading';\n\nconst styles = StyleSheet.create({});\n","import React, { useMemo } from 'react';\nimport { Text, StyleSheet, type TextStyle } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { CaptionProps } from './Caption.types';\n\nexport const Caption = React.memo<CaptionProps>(\n ({ color, align, style, children }) => {\n const { theme } = useTheme();\n\n const computedStyle = useMemo((): TextStyle => ({\n fontSize: 12,\n color: color ?? theme.colors.textSecondary,\n ...(align !== undefined ? { textAlign: align } : undefined),\n }), [color, theme.colors.textSecondary, align]);\n\n return (\n <Text style={[computedStyle, style]}>\n {children}\n </Text>\n );\n },\n);\n\nCaption.displayName = 'Caption';\n\nconst styles = StyleSheet.create({});\n","import React, { useMemo } from 'react';\nimport { Text, StyleSheet, type TextStyle } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { ParagraphProps, ParagraphSize } from './Paragraph.types';\n\nconst SIZE_CONFIG: Record<ParagraphSize, { fontSize: number; lineHeight: number }> = {\n sm: { fontSize: 14, lineHeight: 22 },\n md: { fontSize: 16, lineHeight: 26 },\n lg: { fontSize: 18, lineHeight: 30 },\n};\n\nexport const Paragraph = React.memo<ParagraphProps>(\n ({ size = 'md', color, align, style, children }) => {\n const { theme } = useTheme();\n const { fontSize, lineHeight } = SIZE_CONFIG[size];\n\n const computedStyle = useMemo((): TextStyle => ({\n fontSize,\n lineHeight,\n color: color ?? theme.colors.text,\n ...(align !== undefined ? { textAlign: align } : undefined),\n }), [fontSize, lineHeight, color, theme.colors.text, align]);\n\n return (\n <Text style={[computedStyle, style]}>\n {children}\n </Text>\n );\n },\n);\n\nParagraph.displayName = 'Paragraph';\n\nconst styles = StyleSheet.create({});\n","import React, { useCallback, useMemo } from 'react';\nimport { Text, Linking, StyleSheet, type TextStyle } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { LinkProps } from './Link.types';\n\nexport const Link = React.memo<LinkProps>(\n ({\n href,\n onPress,\n color,\n underline = true,\n external = false,\n children,\n style,\n ...rest\n }) => {\n const { theme } = useTheme();\n const resolvedColor = color ?? theme.colors.primary;\n\n const handlePress = useCallback(() => {\n if (onPress) {\n onPress();\n return;\n }\n if (href) {\n Linking.openURL(href).catch(() => {\n // Silently handle URL open failures\n });\n }\n }, [onPress, href]);\n\n const computedStyle = useMemo((): TextStyle => ({\n color: resolvedColor,\n ...(underline ? { textDecorationLine: 'underline' as const } : undefined),\n }), [resolvedColor, underline]);\n\n return (\n <Text\n {...rest}\n accessibilityRole=\"link\"\n onPress={handlePress}\n style={[computedStyle, style]}\n >\n {children}\n </Text>\n );\n },\n);\n\nLink.displayName = 'Link';\n\nconst styles = StyleSheet.create({});\n","import React, { useMemo } from 'react';\nimport { View, Text, Platform, StyleSheet, type ViewStyle, type TextStyle } from 'react-native';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport type { CodeProps } from './Code.types';\n\nconst MONOSPACE_FONT = Platform.select<string>({\n ios: 'Menlo',\n android: 'monospace',\n default: 'monospace',\n});\n\nexport const Code = React.memo<CodeProps>(\n ({\n children,\n block = false,\n language,\n glass = false,\n style,\n textStyle,\n }) => {\n const isDark = useIsDark();\n\n const bgColor = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.06)';\n\n const inlineContainerStyle = useMemo((): ViewStyle => ({\n backgroundColor: bgColor,\n borderRadius: 4,\n paddingHorizontal: 6,\n paddingVertical: 2,\n alignSelf: 'baseline' as ViewStyle['alignSelf'],\n }), [bgColor]);\n\n const blockContainerStyle = useMemo((): ViewStyle => ({\n borderRadius: 12,\n padding: 16,\n ...(!glass ? { backgroundColor: bgColor } : undefined),\n }), [bgColor, glass]);\n\n const codeTextStyle = useMemo((): TextStyle => ({\n fontFamily: MONOSPACE_FONT,\n fontSize: block ? 13 : 12,\n lineHeight: block ? 20 : undefined,\n }), [block]);\n\n if (block) {\n if (glass) {\n return (\n <GlassView style={[blockContainerStyle, style]}>\n <Text\n selectable\n style={[codeTextStyle, textStyle]}\n >\n {children}\n </Text>\n </GlassView>\n );\n }\n\n return (\n <View style={[blockContainerStyle, style]}>\n <Text\n selectable\n style={[codeTextStyle, textStyle]}\n >\n {children}\n </Text>\n </View>\n );\n }\n\n // Inline code\n return (\n <View style={[inlineContainerStyle, style as ViewStyle]}>\n <Text\n selectable\n style={[codeTextStyle, textStyle]}\n >\n {children}\n </Text>\n </View>\n );\n },\n);\n\nCode.displayName = 'Code';\n\nconst styles = StyleSheet.create({});\n","import React, { useMemo } from 'react';\nimport { Text, Platform, StyleSheet, type TextStyle } from 'react-native';\nimport type { GradientTextProps } from './GradientText.types';\n\nconst DEFAULT_COLORS = ['#6366f1', '#8b5cf6', '#ec4899'];\nconst DEFAULT_START = { x: 0, y: 0 };\nconst DEFAULT_END = { x: 1, y: 0 };\n\n// Lazy-require MaskedView and LinearGradient to handle optional peer deps gracefully\nlet MaskedView: React.ComponentType<{\n maskElement: React.ReactElement;\n style?: object;\n children?: React.ReactNode;\n}> | null = null;\n\nlet LinearGradient: React.ComponentType<{\n colors: string[];\n start?: { x: number; y: number };\n end?: { x: number; y: number };\n style?: object;\n children?: React.ReactNode;\n}> | null = null;\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n MaskedView = require('@react-native-masked-view/masked-view').default;\n} catch {\n MaskedView = null;\n}\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n LinearGradient = require('react-native-linear-gradient').default;\n} catch {\n LinearGradient = null;\n}\n\nexport const GradientText = React.memo<GradientTextProps>(\n ({\n colors = DEFAULT_COLORS,\n start = DEFAULT_START,\n end = DEFAULT_END,\n children,\n style,\n ...rest\n }) => {\n // All hooks must be called unconditionally (Rules of Hooks)\n const fallbackStyle = useMemo((): TextStyle => ({\n color: colors[0] ?? DEFAULT_COLORS[0],\n }), [colors]);\n\n const maskedTextStyle = useMemo((): TextStyle => ({\n opacity: 0,\n }), []);\n\n // Only use MaskedView + LinearGradient on iOS when both are available\n const canUseGradient =\n Platform.OS === 'ios' &&\n MaskedView !== null &&\n LinearGradient !== null;\n\n if (canUseGradient && MaskedView !== null && LinearGradient !== null) {\n const MV = MaskedView;\n const LG = LinearGradient;\n\n return (\n <MV\n style={styles.masked}\n maskElement={\n <Text\n {...rest}\n style={[styles.maskText, style]}\n >\n {children}\n </Text>\n }\n >\n <LG\n colors={colors}\n start={start}\n end={end}\n style={styles.gradient}\n >\n <Text\n {...rest}\n style={[styles.gradientText, style, maskedTextStyle]}\n aria-hidden\n >\n {children}\n </Text>\n </LG>\n </MV>\n );\n }\n\n // Fallback: render with the first gradient color as solid color\n return (\n <Text\n {...rest}\n style={[fallbackStyle, style]}\n >\n {children}\n </Text>\n );\n },\n);\n\nGradientText.displayName = 'GradientText';\n\nconst styles = StyleSheet.create({\n masked: {\n flexDirection: 'row',\n },\n maskText: {\n backgroundColor: 'transparent',\n },\n gradient: {\n flex: 1,\n },\n gradientText: {\n backgroundColor: 'transparent',\n },\n});\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Pressable,\n Text,\n View,\n ActivityIndicator,\n StyleSheet,\n type ViewStyle,\n type TextStyle,\n type GestureResponderEvent,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport { defineVariants } from 'reactnatively-utils';\nimport type { ButtonProps, ButtonSizeConfig, ButtonColor } from './Button.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\nconst SIZE_CONFIG = defineVariants<string, ButtonSizeConfig>({\n xs: { paddingVertical: 5, paddingHorizontal: 12, fontSize: 12, lineHeight: 16, borderRadius: 8, iconSize: 12, loaderSize: 'small' },\n sm: { paddingVertical: 7, paddingHorizontal: 16, fontSize: 13, lineHeight: 18, borderRadius: 10, iconSize: 14, loaderSize: 'small' },\n md: { paddingVertical: 11, paddingHorizontal: 20, fontSize: 15, lineHeight: 20, borderRadius: 12, iconSize: 16, loaderSize: 'small' },\n lg: { paddingVertical: 14, paddingHorizontal: 26, fontSize: 17, lineHeight: 22, borderRadius: 14, iconSize: 18, loaderSize: 'small' },\n xl: { paddingVertical: 18, paddingHorizontal: 32, fontSize: 19, lineHeight: 24, borderRadius: 16, iconSize: 20, loaderSize: 'large' },\n});\n\n// ─── Color resolver ───────────────────────────────────────────────────────────\ntype ColorTokens = { bg: string; bgHover: string; bgTinted: string; textOnBg: string; border: string };\n\nfunction resolveColorTokens(\n color: ButtonColor,\n theme: ReturnType<typeof useTheme>['theme'],\n): ColorTokens {\n const c = theme.colors;\n const map: Record<ButtonColor, ColorTokens> = {\n primary: { bg: c.primary, bgHover: c.primaryHover, bgTinted: c.primaryMuted, textOnBg: '#fff', border: c.primary },\n secondary: { bg: c.secondary, bgHover: c.secondaryHover, bgTinted: 'rgba(139,92,246,0.12)', textOnBg: '#fff', border: c.secondary },\n success: { bg: c.success, bgHover: c.success, bgTinted: c.successSubtle, textOnBg: '#fff', border: c.success },\n warning: { bg: c.warning, bgHover: c.warning, bgTinted: c.warningSubtle, textOnBg: '#fff', border: c.warning },\n error: { bg: c.error, bgHover: c.errorHover, bgTinted: c.errorSubtle, textOnBg: '#fff', border: c.error },\n danger: { bg: c.error, bgHover: c.errorHover, bgTinted: c.errorSubtle, textOnBg: '#fff', border: c.error },\n neutral: { bg: c.neutral, bgHover: c.neutral, bgTinted: c.neutralSubtle, textOnBg: c.textInverted, border: c.border },\n };\n return map[color];\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\n\nexport const Button = React.memo<ButtonProps>(\n ({\n variant = 'solid',\n size = 'md',\n color = 'primary',\n label,\n children,\n leftIcon,\n rightIcon,\n loading = false,\n disabled = false,\n fullWidth = false,\n flex,\n glass,\n style,\n textStyle,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n accessibilityLabel,\n accessibilityHint,\n testID,\n ...pressableProps\n }) => {\n const { theme } = useTheme();\n const pressed = useSharedValue(0);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ scale: interpolate(pressed.value, [0, 1], [1, 0.96]) }],\n opacity: interpolate(pressed.value, [0, 1], [1, 0.88]),\n };\n });\n\n const handlePressIn = useCallback((e: GestureResponderEvent) => {\n pressed.value = withSpring(1, SPRING_SNAPPY);\n onPressIn?.(e);\n }, [onPressIn]);\n\n const handlePressOut = useCallback((e: GestureResponderEvent) => {\n pressed.value = withSpring(0, SPRING_SNAPPY);\n onPressOut?.(e);\n }, [onPressOut]);\n\n const sz = SIZE_CONFIG(size);\n const clr = resolveColorTokens(color, theme);\n\n const containerStyle = useMemo((): ViewStyle => {\n const base: ViewStyle = {\n borderRadius: sz.borderRadius,\n alignSelf: fullWidth ? 'stretch' : 'flex-start',\n opacity: disabled ? 0.45 : 1,\n ...(flex !== undefined && { flex }),\n };\n\n if (variant === 'solid') return { ...base, backgroundColor: clr.bg };\n if (variant === 'destructive') return { ...base, backgroundColor: theme.colors.error };\n if (variant === 'outline') return { ...base, backgroundColor: 'transparent', borderWidth: 1.5, borderColor: clr.border };\n if (variant === 'ghost') return { ...base, backgroundColor: 'transparent' };\n if (variant === 'tinted') return { ...base, backgroundColor: clr.bgTinted };\n return base;\n }, [variant, sz, clr, fullWidth, disabled, theme]);\n\n const resolvedTextStyle = useMemo((): TextStyle => {\n const base: TextStyle = { fontSize: sz.fontSize, lineHeight: sz.lineHeight, fontWeight: '600', letterSpacing: 0.1 };\n if (variant === 'solid' || variant === 'destructive') return { ...base, color: clr.textOnBg };\n if (variant === 'outline' || variant === 'ghost' || variant === 'glass') return { ...base, color: clr.border };\n if (variant === 'tinted') return { ...base, color: clr.border };\n return { ...base, color: theme.colors.text };\n }, [variant, sz, clr, theme]);\n\n const loaderColor = (variant === 'solid' || variant === 'destructive') ? '#fff' : clr.border;\n const isDisabled = disabled || loading;\n\n const resolvedLabel = label ?? (typeof children === 'string' ? children : undefined);\n const customContent = label == null ? children : null;\n\n const innerContent = (\n <View style={[styles.inner, { paddingVertical: sz.paddingVertical, paddingHorizontal: sz.paddingHorizontal }]}>\n {loading ? (\n <ActivityIndicator testID={`${testID ?? ''}-spinner`} size={sz.loaderSize} color={loaderColor} />\n ) : (\n <>\n {leftIcon != null && <View style={styles.iconLeft}>{leftIcon}</View>}\n {resolvedLabel != null && (\n <Text style={[resolvedTextStyle, textStyle]} numberOfLines={1} allowFontScaling={false}>\n {resolvedLabel}\n </Text>\n )}\n {customContent != null && typeof customContent !== 'string' && customContent}\n {rightIcon != null && <View style={styles.iconRight}>{rightIcon}</View>}\n </>\n )}\n </View>\n );\n\n if (variant === 'glass') {\n return (\n <AnimatedPressable\n testID={testID}\n onPress={isDisabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n onLongPress={isDisabled ? undefined : onLongPress}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel ?? label ?? (typeof children === 'string' ? children : 'Button')}\n accessibilityHint={accessibilityHint}\n accessibilityState={{ disabled: isDisabled, busy: loading }}\n style={[\n animatedStyle,\n fullWidth ? styles.fullWidth : flex !== undefined ? { flex } : styles.selfStart,\n { opacity: disabled ? 0.45 : 1 },\n style,\n ]}\n {...pressableProps}\n >\n <GlassView\n testID={`${testID ?? ''}-glass`}\n elevation={glass?.elevation ?? 2}\n variant={glass?.variant ?? 'surface'}\n borderRadius={sz.borderRadius}\n glow={glass?.glow && glass.glowColor ? { color: glass.glowColor, radius: 20, opacity: 0.35 } : false}\n >\n {innerContent}\n </GlassView>\n </AnimatedPressable>\n );\n }\n\n return (\n <AnimatedPressable\n testID={testID}\n onPress={isDisabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n onLongPress={isDisabled ? undefined : onLongPress}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel ?? label ?? (typeof children === 'string' ? children : 'Button')}\n accessibilityHint={accessibilityHint}\n accessibilityState={{ disabled: isDisabled, busy: loading }}\n style={[containerStyle, animatedStyle, style]}\n {...pressableProps}\n >\n {innerContent}\n </AnimatedPressable>\n );\n },\n);\n\nButton.displayName = 'Button';\n\nconst styles = StyleSheet.create({\n inner: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center' },\n iconLeft: { marginRight: 8 },\n iconRight: { marginLeft: 8 },\n fullWidth: { alignSelf: 'stretch' },\n selfStart: { alignSelf: 'flex-start' },\n});\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Pressable,\n ActivityIndicator,\n View,\n StyleSheet,\n type ViewStyle,\n type GestureResponderEvent,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { usePressAnimation } from 'reactnatively-animations';\nimport type { IconButtonProps, IconButtonSize, IconButtonVariant } from './IconButton.types';\nimport type { ButtonColor } from '../Button/Button.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\nconst SIZE_MAP: Record<IconButtonSize, number> = {\n xs: 28,\n sm: 36,\n md: 44,\n lg: 52,\n xl: 60,\n};\n\n// ─── Color tokens (mirrors Button) ───────────────────────────────────────────\nfunction resolveColors(\n color: ButtonColor,\n theme: ReturnType<typeof useTheme>['theme'],\n): { bg: string; border: string; fg: string } {\n const c = theme.colors;\n const map: Record<ButtonColor, { bg: string; border: string; fg: string }> = {\n primary: { bg: c.primary, border: c.primary, fg: '#fff' },\n secondary: { bg: c.secondary, border: c.secondary, fg: '#fff' },\n success: { bg: c.success, border: c.success, fg: '#fff' },\n warning: { bg: c.warning, border: c.warning, fg: '#fff' },\n error: { bg: c.error, border: c.error, fg: '#fff' },\n danger: { bg: c.error, border: c.error, fg: '#fff' },\n neutral: { bg: c.neutral, border: c.border, fg: c.textInverted },\n };\n return map[color];\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\n\nexport const IconButton = React.memo<IconButtonProps>(\n ({\n icon,\n size = 'md',\n variant = 'solid',\n color = 'primary',\n isDisabled = false,\n isLoading = false,\n onPress,\n accessibilityLabel,\n borderRadius,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n const dim = SIZE_MAP[size];\n const clr = resolveColors(color, theme);\n\n const disabled = isDisabled || isLoading;\n\n const resolvedBorderRadius = borderRadius ?? dim / 4;\n\n const { animatedStyle, handlers } = usePressAnimation({\n pressedScale: 0.92,\n pressedOpacity: 0.8,\n disabled,\n });\n\n const handlePressIn = useCallback(() => {\n handlers.onPressIn();\n }, [handlers]);\n\n const handlePressOut = useCallback(() => {\n handlers.onPressOut();\n }, [handlers]);\n\n const containerStyle = useMemo((): ViewStyle => {\n const base: ViewStyle = {\n width: dim,\n height: dim,\n borderRadius: resolvedBorderRadius,\n alignItems: 'center',\n justifyContent: 'center',\n opacity: disabled ? 0.45 : 1,\n };\n\n if (variant === 'solid') return { ...base, backgroundColor: clr.bg };\n if (variant === 'outline') return { ...base, borderWidth: 1.5, borderColor: clr.border, backgroundColor: 'transparent' };\n if (variant === 'ghost') return { ...base, backgroundColor: 'transparent' };\n // glass handled via GlassView\n return base;\n }, [variant, dim, resolvedBorderRadius, clr, disabled]);\n\n const content = isLoading ? (\n <ActivityIndicator\n size=\"small\"\n color={variant === 'solid' ? '#fff' : clr.border}\n />\n ) : icon;\n\n if (variant === 'glass' || glass) {\n return (\n <AnimatedPressable\n onPress={disabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={disabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled, busy: isLoading }}\n style={[\n { width: dim, height: dim, opacity: disabled ? 0.45 : 1, alignSelf: 'flex-start' },\n animatedStyle,\n style,\n ]}\n >\n <GlassView elevation={1} borderRadius={resolvedBorderRadius} style={styles.fill}>\n <View style={styles.center}>{content}</View>\n </GlassView>\n </AnimatedPressable>\n );\n }\n\n return (\n <AnimatedPressable\n onPress={disabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={disabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled, busy: isLoading }}\n style={[containerStyle, animatedStyle, style]}\n >\n {content}\n </AnimatedPressable>\n );\n },\n);\n\nIconButton.displayName = 'IconButton';\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center' },\n});\n","import React, { useCallback, useMemo } from 'react';\nimport {\n Pressable,\n Text,\n View,\n StyleSheet,\n type ViewStyle,\n type GestureResponderEvent,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { usePressAnimation, useEntranceAnimation } from 'reactnatively-animations';\nimport type { FABProps, FABSize, FABPosition } from './FAB.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\nconst SIZE_MAP: Record<FABSize, number> = {\n sm: 48,\n md: 56,\n lg: 64,\n};\n\n// ─── Position map ─────────────────────────────────────────────────────────────\nconst POSITION_STYLES: Record<FABPosition, ViewStyle> = {\n bottomRight: { position: 'absolute', bottom: 24, right: 24 },\n bottomLeft: { position: 'absolute', bottom: 24, left: 24 },\n bottomCenter: { position: 'absolute', bottom: 24, alignSelf: 'center' },\n topRight: { position: 'absolute', top: 24, right: 24 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\n\nexport const FAB = React.memo<FABProps>(\n ({\n icon,\n label,\n size = 'md',\n variant = 'solid',\n color,\n position,\n onPress,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n const dim = SIZE_MAP[size];\n const isExtended = label != null;\n const activeColor = color ?? theme.colors.primary;\n\n const { animatedStyle, handlers } = usePressAnimation({\n pressedScale: 0.94,\n pressedOpacity: 0.85,\n disabled: isDisabled,\n });\n\n const entranceStyle = useEntranceAnimation({ variant: 'scale' });\n\n const handlePressIn = useCallback(() => { handlers.onPressIn(); }, [handlers]);\n const handlePressOut = useCallback(() => { handlers.onPressOut(); }, [handlers]);\n\n // Shadow styles (iOS + Android)\n const shadowStyle = useMemo((): ViewStyle => ({\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.22,\n shadowRadius: 6,\n elevation: 6,\n }), []);\n\n // Base container — round when no label, pill when extended\n const containerBase = useMemo((): ViewStyle => {\n if (isExtended) {\n return {\n height: dim,\n paddingHorizontal: 20,\n borderRadius: dim / 2,\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n };\n }\n return {\n width: dim,\n height: dim,\n borderRadius: dim / 2,\n alignItems: 'center',\n justifyContent: 'center',\n };\n }, [isExtended, dim]);\n\n const positionStyle = position ? POSITION_STYLES[position] : undefined;\n\n const innerContent = (\n <>\n {icon}\n {isExtended && label != null && (\n <Text\n style={[styles.label, { color: variant === 'glass' ? theme.colors.text : '#fff' }]}\n allowFontScaling={false}\n numberOfLines={1}\n >\n {label}\n </Text>\n )}\n </>\n );\n\n if (variant === 'glass') {\n return (\n <Animated.View style={[entranceStyle, positionStyle, shadowStyle, style]}>\n <AnimatedPressable\n onPress={isDisabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={label ?? 'Floating action button'}\n accessibilityState={{ disabled: isDisabled }}\n style={[\n { opacity: isDisabled ? 0.45 : 1, alignSelf: 'flex-start' },\n animatedStyle,\n ]}\n >\n <GlassView elevation={2} borderRadius={isExtended ? dim / 2 : dim / 2}>\n <View style={[containerBase]}>\n {innerContent}\n </View>\n </GlassView>\n </AnimatedPressable>\n </Animated.View>\n );\n }\n\n // Solid variant\n return (\n <Animated.View style={[entranceStyle, positionStyle, shadowStyle, style]}>\n <AnimatedPressable\n onPress={isDisabled ? undefined : onPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={label ?? 'Floating action button'}\n accessibilityState={{ disabled: isDisabled }}\n style={[\n containerBase,\n { backgroundColor: activeColor, opacity: isDisabled ? 0.45 : 1 },\n animatedStyle,\n ]}\n >\n {innerContent}\n </AnimatedPressable>\n </Animated.View>\n );\n },\n);\n\nFAB.displayName = 'FAB';\n\nconst styles = StyleSheet.create({\n label: {\n marginLeft: 10,\n fontSize: 15,\n fontWeight: '600',\n letterSpacing: 0.2,\n },\n});\n","import { createContext, useContext } from 'react';\n\nexport interface FormControlContextValue {\n id: string;\n isRequired: boolean;\n isDisabled: boolean;\n isInvalid: boolean;\n isReadOnly: boolean;\n label?: string;\n helperText?: string;\n errorText?: string;\n}\n\nexport const FormControlContext = createContext<FormControlContextValue | null>(null);\n\nexport function useFormControl(): FormControlContextValue | null {\n return useContext(FormControlContext);\n}\n\nexport function useFormControlValue(): FormControlContextValue {\n return useContext(FormControlContext) ?? {\n id: '',\n isRequired: false,\n isDisabled: false,\n isInvalid: false,\n isReadOnly: false,\n };\n}\n","import React, { useMemo } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport { useId } from 'reactnatively-hooks';\nimport { FormControlContext } from './form-control-context';\nimport type { FormControlContextValue } from './form-control-context';\nimport type { FormControlProps } from './FormControl.types';\n\nexport const FormControl = React.memo<FormControlProps>(\n ({\n id: idProp,\n label,\n helperText,\n errorText,\n isRequired = false,\n isDisabled = false,\n isInvalid: isInvalidProp = false,\n isReadOnly = false,\n children,\n style,\n }) => {\n const { theme } = useTheme();\n const generatedId = useId('form-control');\n const id = idProp ?? generatedId;\n\n // errorText presence automatically makes the field invalid\n const isInvalid = isInvalidProp || Boolean(errorText);\n\n const contextValue = useMemo((): FormControlContextValue => ({\n id,\n isRequired,\n isDisabled,\n isInvalid,\n isReadOnly,\n label,\n helperText,\n errorText,\n }), [id, isRequired, isDisabled, isInvalid, isReadOnly, label, helperText, errorText]);\n\n const subTextStyle = useMemo(() => ({\n fontSize: 12,\n marginTop: 4,\n color: isInvalid && errorText\n ? theme.colors.error\n : theme.colors.textSecondary,\n }), [isInvalid, errorText, theme.colors.error, theme.colors.textSecondary]);\n\n const subText = isInvalid && errorText ? errorText : helperText;\n\n return (\n <FormControlContext.Provider value={contextValue}>\n <View style={[styles.container, style]}>\n {label != null && (\n <Text\n nativeID={`${id}-label`}\n style={[\n styles.label,\n { color: theme.colors.text },\n ]}\n allowFontScaling={false}\n >\n {label}\n {isRequired && (\n <Text style={{ color: theme.colors.error }}> *</Text>\n )}\n </Text>\n )}\n\n {children}\n\n {subText != null && (\n <Text style={subTextStyle} allowFontScaling={false}>\n {subText}\n </Text>\n )}\n </View>\n </FormControlContext.Provider>\n );\n },\n);\n\nFormControl.displayName = 'FormControl';\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n label: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 6,\n },\n});\n","import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport {\n View,\n TextInput as RNTextInput,\n Pressable,\n Text,\n StyleSheet,\n type NativeSyntheticEvent,\n type TextInputFocusEventData,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n interpolateColor,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport { useFormControl } from '../FormControl/form-control-context';\nimport type { TextInputProps, TextInputSizeConfig } from './TextInput.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\n\nconst SIZE_CONFIG: Record<string, TextInputSizeConfig> = {\n sm: { height: 40, fontSize: 14, px: 12 },\n md: { height: 52, fontSize: 15, px: 16 },\n lg: { height: 60, fontSize: 16, px: 18 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const TextInput = React.memo<TextInputProps>(\n ({\n label,\n placeholder,\n helperText,\n errorText,\n leftIcon,\n rightIcon,\n leftAddon,\n rightAddon,\n size = 'md',\n variant = 'outline',\n glass = false,\n isRequired = false,\n isDisabled = false,\n isReadOnly = false,\n isInvalid = false,\n clearable = false,\n onClear,\n style,\n inputStyle,\n containerStyle,\n value,\n defaultValue,\n onFocus,\n onBlur,\n onChangeText,\n ...rest\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const ctx = useFormControl();\n\n // Merge FormControl context\n const resolvedLabel = label ?? ctx?.label;\n const resolvedHelperText = helperText ?? ctx?.helperText;\n const resolvedErrorText = errorText ?? ctx?.errorText;\n const resolvedIsRequired = isRequired || (ctx?.isRequired ?? false);\n const resolvedIsDisabled = isDisabled || (ctx?.isDisabled ?? false);\n const resolvedIsReadOnly = isReadOnly || (ctx?.isReadOnly ?? false);\n const resolvedIsInvalid = isInvalid || (ctx?.isInvalid ?? false) || Boolean(resolvedErrorText);\n\n const resolvedVariant = glass ? 'glass' : variant;\n\n const sz = SIZE_CONFIG[size] ?? SIZE_CONFIG['md']!;\n\n // Track internal value for the uncontrolled case\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const currentValue = value !== undefined ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n // Floating label animation\n const floated = useSharedValue(hasValue ? 1 : 0);\n const focused = useSharedValue(0);\n\n const labelFloated = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [\n { translateY: interpolate(floated.value, [0, 1], [0, -(sz.height / 2 - 4)]) },\n ],\n // fontSize is not directly animatable via useAnimatedStyle but we handle it via scale\n };\n });\n\n // We simulate fontSize change via scale; the label sits at 15px base, scales to 12/15\n const labelScaleStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n const scale = interpolate(floated.value, [0, 1], [1, 0.8]);\n return {\n transform: [\n { translateY: interpolate(floated.value, [0, 1], [0, -(sz.height / 2 - 4)]) },\n { scale },\n ],\n };\n });\n\n const labelColorStyle = useAnimatedStyle(() => {\n 'worklet';\n const isFocused = focused.value > 0.5;\n return {\n color: interpolateColor(\n floated.value,\n [0, 1],\n [theme.colors.textMuted, isFocused ? theme.colors.primary : theme.colors.textSecondary],\n ),\n } as ViewStyle;\n });\n\n const inputRef = useRef<RNTextInput>(null);\n\n const handleFocus = useCallback(\n (e: NativeSyntheticEvent<TextInputFocusEventData>) => {\n focused.value = withSpring(1, SPRING_SNAPPY);\n floated.value = withSpring(1, SPRING_SNAPPY);\n onFocus?.(e);\n },\n [onFocus, focused, floated],\n );\n\n const handleBlur = useCallback(\n (e: NativeSyntheticEvent<TextInputFocusEventData>) => {\n focused.value = withSpring(0, SPRING_SNAPPY);\n if (!hasValue) {\n floated.value = withSpring(0, SPRING_SNAPPY);\n }\n onBlur?.(e);\n },\n [onBlur, focused, floated, hasValue],\n );\n\n const handleChangeText = useCallback(\n (text: string) => {\n if (value === undefined) {\n setInternalValue(text);\n }\n if (text.length > 0) {\n floated.value = withSpring(1, SPRING_SNAPPY);\n } else {\n // Only collapse if not focused\n // We check focused.value in a worklet-safe way: we store the focused state\n // The collapse on empty+unfocused is handled in handleBlur already\n }\n onChangeText?.(text);\n },\n [onChangeText, value, floated],\n );\n\n const handleClear = useCallback(() => {\n if (value === undefined) {\n setInternalValue('');\n }\n floated.value = withSpring(0, SPRING_SNAPPY);\n inputRef.current?.clear();\n onClear?.();\n onChangeText?.('');\n }, [onClear, onChangeText, value, floated]);\n\n // Border color animation\n const borderAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n if (resolvedIsInvalid) return { borderColor: theme.colors.error };\n return {\n borderColor: interpolateColor(\n focused.value,\n [0, 1],\n [theme.colors.border, theme.colors.primary],\n ),\n };\n });\n\n // Container base styles\n const containerBase = useMemo((): ViewStyle => {\n const base: ViewStyle = {\n height: resolvedLabel ? sz.height + 8 : sz.height,\n borderRadius: resolvedVariant === 'underline' ? 0 : 12,\n opacity: resolvedIsDisabled ? 0.5 : 1,\n overflow: 'visible',\n };\n\n if (resolvedVariant === 'outline') {\n return {\n ...base,\n borderWidth: 1.5,\n borderColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border,\n };\n }\n if (resolvedVariant === 'filled') {\n return {\n ...base,\n backgroundColor: isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)',\n };\n }\n if (resolvedVariant === 'underline') {\n return {\n ...base,\n borderBottomWidth: 1.5,\n borderBottomColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border,\n };\n }\n // glass handled separately\n return base;\n }, [resolvedVariant, sz.height, resolvedLabel, resolvedIsDisabled, resolvedIsInvalid, isDark, theme]);\n\n const rnInputStyle = useMemo((): TextStyle => ({\n flex: 1,\n fontSize: sz.fontSize,\n color: theme.colors.text,\n paddingTop: resolvedLabel ? sz.height * 0.35 : 0,\n // Suppress default underline on Android\n textAlignVertical: 'center',\n }), [sz.fontSize, sz.px, theme.colors.text, resolvedLabel, sz.height]);\n\n const showClear = clearable && hasValue && !resolvedIsDisabled && !resolvedIsReadOnly;\n\n const innerContent = (\n <View style={styles.row}>\n {leftAddon != null && <View style={styles.addon}>{leftAddon}</View>}\n {leftIcon != null && (\n <View style={[styles.iconContainer, { marginLeft: sz.px }]}>{leftIcon}</View>\n )}\n <View style={[styles.inputWrapper, { paddingHorizontal: leftIcon || leftAddon ? 8 : sz.px }]}>\n {resolvedLabel != null && (\n <Animated.Text\n style={[styles.floatingLabel, labelScaleStyle, labelColorStyle]}\n allowFontScaling={false}\n onPress={() => inputRef.current?.focus()}\n >\n {resolvedLabel}\n {resolvedIsRequired && (\n <Text style={{ color: theme.colors.error }}> *</Text>\n )}\n </Animated.Text>\n )}\n <RNTextInput\n ref={inputRef}\n value={value}\n defaultValue={defaultValue}\n placeholder={resolvedLabel ? undefined : placeholder}\n placeholderTextColor={theme.colors.textMuted}\n editable={!resolvedIsDisabled && !resolvedIsReadOnly}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChangeText={handleChangeText}\n style={[rnInputStyle, inputStyle]}\n accessibilityLabel={resolvedLabel}\n accessibilityState={{\n disabled: resolvedIsDisabled,\n }}\n {...(rest as any)}\n />\n </View>\n {showClear && (\n <Pressable\n onPress={handleClear}\n style={[styles.iconContainer, { marginRight: 8 }]}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel=\"Clear input\"\n >\n <Text style={[styles.clearIcon, { color: theme.colors.textMuted }]}>✕</Text>\n </Pressable>\n )}\n {rightIcon != null && !showClear && (\n <View style={[styles.iconContainer, { marginRight: sz.px }]}>{rightIcon}</View>\n )}\n {rightAddon != null && <View style={styles.addon}>{rightAddon}</View>}\n </View>\n );\n\n const subText = resolvedIsInvalid && resolvedErrorText ? resolvedErrorText : resolvedHelperText;\n\n if (resolvedVariant === 'glass') {\n return (\n <View style={[styles.outerContainer, containerStyle, style]}>\n <GlassView\n elevation={1}\n variant=\"surface\"\n borderRadius={12}\n style={[{ opacity: resolvedIsDisabled ? 0.5 : 1 }]}\n >\n {innerContent}\n </GlassView>\n {subText != null && (\n <Text\n style={[\n styles.subText,\n { color: resolvedIsInvalid ? theme.colors.error : theme.colors.textSecondary },\n ]}\n allowFontScaling={false}\n >\n {subText}\n </Text>\n )}\n </View>\n );\n }\n\n return (\n <View style={[styles.outerContainer, containerStyle, style]}>\n <Animated.View\n style={[\n containerBase,\n (resolvedVariant === 'outline' || resolvedVariant === 'underline') && borderAnimStyle,\n styles.inputContainer,\n ]}\n >\n {innerContent}\n </Animated.View>\n {subText != null && (\n <Text\n style={[\n styles.subText,\n { color: resolvedIsInvalid ? theme.colors.error : theme.colors.textSecondary },\n ]}\n allowFontScaling={false}\n >\n {subText}\n </Text>\n )}\n </View>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n\nconst styles = StyleSheet.create({\n outerContainer: {\n width: '100%',\n },\n inputContainer: {\n overflow: 'hidden',\n },\n row: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n },\n inputWrapper: {\n flex: 1,\n justifyContent: 'center',\n },\n floatingLabel: {\n position: 'absolute',\n left: 0,\n fontSize: 15,\n fontWeight: '400',\n transformOrigin: 'left center',\n },\n iconContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n minWidth: 24,\n },\n addon: {\n justifyContent: 'center',\n alignItems: 'center',\n paddingHorizontal: 8,\n },\n clearIcon: {\n fontSize: 14,\n fontWeight: '600',\n },\n subText: {\n fontSize: 12,\n marginTop: 4,\n },\n});\n","import React, { useCallback, useState } from 'react';\nimport { Pressable, Text, StyleSheet } from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport { TextInput } from '../TextInput/TextInput';\nimport type { PasswordInputProps } from './PasswordInput.types';\n\n// ─── Toggle icon ─────────────────────────────────────────────────────────────\n\ninterface EyeIconProps {\n visible: boolean;\n color: string;\n}\n\nconst EyeIcon = React.memo<EyeIconProps>(({ visible, color }) => (\n <Text style={[styles.eyeText, { color }]}>\n {visible ? '⊙' : '⊗'}\n </Text>\n));\nEyeIcon.displayName = 'EyeIcon';\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const PasswordInput = React.memo<PasswordInputProps>(\n ({\n defaultVisible = false,\n label = 'Password',\n ...rest\n }) => {\n const { theme } = useTheme();\n const [visible, setVisible] = useState(defaultVisible);\n\n const toggleVisibility = useCallback(() => {\n setVisible(prev => !prev);\n }, []);\n\n const toggleButton = (\n <Pressable\n onPress={toggleVisibility}\n style={styles.toggleButton}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={visible ? 'Hide password' : 'Show password'}\n hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}\n >\n <EyeIcon visible={visible} color={theme.colors.textMuted} />\n </Pressable>\n );\n\n return (\n <TextInput\n label={label}\n secureTextEntry={!visible}\n rightIcon={toggleButton}\n autoCapitalize=\"none\"\n autoCorrect={false}\n autoComplete=\"password\"\n textContentType={visible ? 'none' : 'password'}\n {...rest}\n />\n );\n },\n);\n\nPasswordInput.displayName = 'PasswordInput';\n\nconst styles = StyleSheet.create({\n toggleButton: {\n justifyContent: 'center',\n alignItems: 'center',\n padding: 4,\n },\n eyeText: {\n fontSize: 18,\n },\n});\n","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n View,\n TextInput as RNTextInput,\n Text,\n StyleSheet,\n type NativeSyntheticEvent,\n type TextInputContentSizeChangeEventData,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport { useFormControl } from '../FormControl/form-control-context';\nimport type { TextAreaProps } from './TextArea.types';\n\n// Approximate line height for minHeight calculation\nconst LINE_HEIGHT = 22;\n\nexport const TextArea = React.memo<TextAreaProps>(\n ({\n label,\n helperText,\n errorText,\n size = 'md',\n variant = 'outline',\n glass = false,\n isRequired = false,\n isDisabled = false,\n isReadOnly = false,\n isInvalid = false,\n numberOfLines = 4,\n autoGrow = false,\n maxHeight,\n style,\n inputStyle,\n containerStyle,\n value,\n defaultValue,\n onFocus,\n onBlur,\n onChangeText,\n onContentSizeChange,\n ...rest\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const ctx = useFormControl();\n\n const resolvedLabel = label ?? ctx?.label;\n const resolvedHelperText = helperText ?? ctx?.helperText;\n const resolvedErrorText = errorText ?? ctx?.errorText;\n const resolvedIsRequired = isRequired || (ctx?.isRequired ?? false);\n const resolvedIsDisabled = isDisabled || (ctx?.isDisabled ?? false);\n const resolvedIsReadOnly = isReadOnly || (ctx?.isReadOnly ?? false);\n const resolvedIsInvalid = isInvalid || (ctx?.isInvalid ?? false) || Boolean(resolvedErrorText);\n\n const resolvedVariant = glass ? 'glass' : variant;\n\n const minHeight = numberOfLines * LINE_HEIGHT + 24; // padding\n const [contentHeight, setContentHeight] = useState(minHeight);\n\n const focused = useSharedValue(0);\n\n const handleFocus = useCallback(\n (e: NativeSyntheticEvent<unknown>) => {\n focused.value = withSpring(1, SPRING_SNAPPY);\n (onFocus as ((e: NativeSyntheticEvent<unknown>) => void) | undefined)?.(e);\n },\n [onFocus, focused],\n );\n\n const handleBlur = useCallback(\n (e: NativeSyntheticEvent<unknown>) => {\n focused.value = withSpring(0, SPRING_SNAPPY);\n (onBlur as ((e: NativeSyntheticEvent<unknown>) => void) | undefined)?.(e);\n },\n [onBlur, focused],\n );\n\n const handleContentSizeChange = useCallback(\n (e: NativeSyntheticEvent<TextInputContentSizeChangeEventData>) => {\n if (autoGrow) {\n const newHeight = e.nativeEvent.contentSize.height + 24;\n const capped = maxHeight ? Math.min(newHeight, maxHeight) : newHeight;\n setContentHeight(Math.max(capped, minHeight));\n }\n onContentSizeChange?.(e);\n },\n [autoGrow, maxHeight, minHeight, onContentSizeChange],\n );\n\n const borderAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n if (resolvedIsInvalid) return { borderColor: theme.colors.error };\n return {\n borderColor: interpolateColor(\n focused.value,\n [0, 1],\n [theme.colors.border, theme.colors.primary],\n ),\n };\n });\n\n const containerBase = useMemo((): ViewStyle => {\n const h = autoGrow ? contentHeight : minHeight;\n const base: ViewStyle = {\n minHeight: h,\n borderRadius: resolvedVariant === 'underline' ? 0 : 12,\n opacity: resolvedIsDisabled ? 0.5 : 1,\n overflow: 'hidden',\n };\n\n if (resolvedVariant === 'outline') {\n return { ...base, borderWidth: 1.5, borderColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border };\n }\n if (resolvedVariant === 'filled') {\n return { ...base, backgroundColor: isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)' };\n }\n if (resolvedVariant === 'underline') {\n return { ...base, borderBottomWidth: 1.5, borderBottomColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border };\n }\n return base;\n }, [resolvedVariant, autoGrow, contentHeight, minHeight, resolvedIsDisabled, resolvedIsInvalid, isDark, theme]);\n\n const rnInputStyle = useMemo((): TextStyle => ({\n flex: 1,\n fontSize: 15,\n color: theme.colors.text,\n padding: 12,\n textAlignVertical: 'top',\n }), [theme.colors.text]);\n\n const subText = resolvedIsInvalid && resolvedErrorText ? resolvedErrorText : resolvedHelperText;\n\n const inputEl = (\n <RNTextInput\n value={value}\n defaultValue={defaultValue}\n multiline\n numberOfLines={numberOfLines}\n editable={!resolvedIsDisabled && !resolvedIsReadOnly}\n onFocus={handleFocus as any}\n onBlur={handleBlur as any}\n onChangeText={onChangeText}\n onContentSizeChange={handleContentSizeChange}\n placeholderTextColor={theme.colors.textMuted}\n scrollEnabled={!autoGrow}\n style={[rnInputStyle, inputStyle]}\n accessibilityLabel={resolvedLabel}\n accessibilityState={{ disabled: resolvedIsDisabled }}\n {...rest}\n />\n );\n\n return (\n <View style={[styles.outerContainer, containerStyle, style]}>\n {resolvedLabel != null && (\n <Text\n style={[styles.label, { color: theme.colors.text }]}\n allowFontScaling={false}\n >\n {resolvedLabel}\n {resolvedIsRequired && (\n <Text style={{ color: theme.colors.error }}> *</Text>\n )}\n </Text>\n )}\n\n {resolvedVariant === 'glass' ? (\n <GlassView\n elevation={1}\n variant=\"surface\"\n borderRadius={12}\n style={{ opacity: resolvedIsDisabled ? 0.5 : 1 }}\n >\n {inputEl}\n </GlassView>\n ) : (\n <Animated.View\n style={[\n containerBase,\n (resolvedVariant === 'outline' || resolvedVariant === 'underline') && borderAnimStyle,\n ]}\n >\n {inputEl}\n </Animated.View>\n )}\n\n {subText != null && (\n <Text\n style={[\n styles.subText,\n { color: resolvedIsInvalid ? theme.colors.error : theme.colors.textSecondary },\n ]}\n allowFontScaling={false}\n >\n {subText}\n </Text>\n )}\n </View>\n );\n },\n);\n\nTextArea.displayName = 'TextArea';\n\nconst styles = StyleSheet.create({\n outerContainer: {\n width: '100%',\n },\n label: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 6,\n },\n subText: {\n fontSize: 12,\n marginTop: 4,\n },\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n TextInput as RNTextInput,\n Pressable,\n Text,\n View,\n StyleSheet,\n type NativeSyntheticEvent,\n type TextInputFocusEventData,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { TIMING_FAST } from 'reactnatively-animations';\nimport type { SearchBarProps, SearchBarSize } from './SearchBar.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\ninterface SizeConfig {\n height: number;\n fontSize: number;\n px: number;\n iconSize: number;\n}\n\nconst SIZE_CONFIG: Record<SearchBarSize, SizeConfig> = {\n sm: { height: 36, fontSize: 13, px: 10, iconSize: 14 },\n md: { height: 44, fontSize: 15, px: 12, iconSize: 16 },\n lg: { height: 52, fontSize: 16, px: 14, iconSize: 18 },\n};\n\n// Cancel button animated width (collapsed = 0, expanded = 70)\nconst CANCEL_WIDTH = 70;\n\n// ─── Component ───────────────────────────────────────────────────────────────\nexport const SearchBar = React.memo<SearchBarProps>(\n ({\n value,\n defaultValue = '',\n onChangeText,\n onSearch,\n onCancel,\n placeholder = 'Search',\n showCancel = true,\n autoFocus = false,\n glass = false,\n size = 'md',\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const inputRef = useRef<RNTextInput>(null);\n\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = value !== undefined ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n const sz = SIZE_CONFIG[size];\n\n // Animated cancel button width: 0 (hidden) → CANCEL_WIDTH (visible)\n const cancelWidth = useSharedValue(0);\n\n const cancelAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n width: cancelWidth.value,\n opacity: cancelWidth.value / CANCEL_WIDTH,\n };\n });\n\n const handleFocus = useCallback(\n (e: NativeSyntheticEvent<TextInputFocusEventData>) => {\n if (showCancel) {\n cancelWidth.value = withTiming(CANCEL_WIDTH, TIMING_FAST);\n }\n },\n [showCancel, cancelWidth],\n );\n\n const handleBlur = useCallback(\n (e: NativeSyntheticEvent<TextInputFocusEventData>) => {\n // Only collapse cancel if there is no value\n if (!hasValue && showCancel) {\n cancelWidth.value = withTiming(0, TIMING_FAST);\n }\n },\n [hasValue, showCancel, cancelWidth],\n );\n\n const handleChangeText = useCallback(\n (text: string) => {\n if (value === undefined) {\n setInternalValue(text);\n }\n onChangeText?.(text);\n },\n [value, onChangeText],\n );\n\n const handleClear = useCallback(() => {\n if (value === undefined) {\n setInternalValue('');\n }\n inputRef.current?.clear();\n onChangeText?.('');\n }, [value, onChangeText]);\n\n const handleCancel = useCallback(() => {\n inputRef.current?.blur();\n if (value === undefined) {\n setInternalValue('');\n }\n inputRef.current?.clear();\n onChangeText?.('');\n cancelWidth.value = withTiming(0, TIMING_FAST);\n onCancel?.();\n }, [value, onChangeText, cancelWidth, onCancel]);\n\n const handleSubmit = useCallback((_e: unknown) => {\n onSearch?.(currentValue);\n }, [currentValue, onSearch]);\n\n const inputBg: ViewStyle = {\n backgroundColor: isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)',\n };\n\n const innerContent = (\n <View style={[styles.inputRow, { height: sz.height, paddingHorizontal: sz.px }]}>\n {/* Search icon */}\n <Text\n style={[styles.searchIcon, { fontSize: sz.iconSize, color: theme.colors.textMuted }]}\n allowFontScaling={false}\n >\n ⌕\n </Text>\n\n {/* Text input */}\n <RNTextInput\n ref={inputRef}\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textMuted}\n autoFocus={autoFocus}\n returnKeyType=\"search\"\n clearButtonMode=\"never\"\n onFocus={handleFocus as any}\n onBlur={handleBlur as any}\n onChangeText={handleChangeText}\n onSubmitEditing={handleSubmit}\n style={[\n styles.input,\n {\n fontSize: sz.fontSize,\n color: theme.colors.text,\n },\n ]}\n accessibilityLabel=\"Search input\"\n \n />\n\n {/* Clear button */}\n {hasValue && (\n <Pressable\n onPress={handleClear}\n style={styles.clearBtn}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel=\"Clear search\"\n hitSlop={8}\n >\n <Text\n style={[styles.clearIcon, { color: theme.colors.textMuted }]}\n allowFontScaling={false}\n >\n ✕\n </Text>\n </Pressable>\n )}\n </View>\n );\n\n const searchContainer = glass ? (\n <GlassView elevation={1} borderRadius={12} style={styles.glassContainer}>\n {innerContent}\n </GlassView>\n ) : (\n <View style={[styles.inputContainer, inputBg, { borderRadius: 12 }]}>\n {innerContent}\n </View>\n );\n\n return (\n <View style={[styles.outerRow, style]}>\n <View style={styles.searchWrapper}>\n {searchContainer}\n </View>\n\n {showCancel && (\n <Animated.View style={[styles.cancelWrapper, cancelAnimStyle]}>\n <Pressable\n onPress={handleCancel}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel=\"Cancel search\"\n >\n <Text\n style={[styles.cancelText, { color: theme.colors.primary }]}\n allowFontScaling={false}\n numberOfLines={1}\n >\n Cancel\n </Text>\n </Pressable>\n </Animated.View>\n )}\n </View>\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\nconst styles = StyleSheet.create({\n outerRow: { flexDirection: 'row', alignItems: 'center' },\n searchWrapper: { flex: 1 },\n inputContainer: { overflow: 'hidden' },\n glassContainer: {},\n inputRow: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n searchIcon: {\n marginRight: 6,\n includeFontPadding: false,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n },\n clearBtn: {\n marginLeft: 6,\n alignItems: 'center',\n justifyContent: 'center',\n },\n clearIcon: {\n fontSize: 13,\n fontWeight: '600',\n },\n cancelWrapper: {\n overflow: 'hidden',\n alignItems: 'center',\n justifyContent: 'center',\n },\n cancelText: {\n fontSize: 15,\n fontWeight: '500',\n paddingLeft: 8,\n },\n});\n","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n Pressable,\n Text,\n View,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport { useFormControl } from '../FormControl/form-control-context';\nimport type { CheckboxProps, CheckboxSize } from './Checkbox.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\ninterface SizeConfig {\n box: number;\n borderRadius: number;\n fontSize: number;\n labelSize: number;\n}\n\nconst SIZE_CONFIG: Record<CheckboxSize, SizeConfig> = {\n sm: { box: 20, borderRadius: 6, fontSize: 13, labelSize: 14 },\n md: { box: 24, borderRadius: 7, fontSize: 15, labelSize: 15 },\n lg: { box: 28, borderRadius: 8, fontSize: 17, labelSize: 16 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\nexport const Checkbox = React.memo<CheckboxProps>(\n ({\n checked,\n defaultChecked = false,\n onChange,\n label,\n helperText,\n errorText,\n size = 'md',\n glass = false,\n isDisabled = false,\n isInvalid = false,\n isIndeterminate = false,\n style,\n }) => {\n const { theme } = useTheme();\n const ctx = useFormControl();\n\n // Merge FormControl context\n const resolvedIsDisabled = isDisabled || (ctx?.isDisabled ?? false);\n const resolvedIsInvalid = isInvalid || (ctx?.isInvalid ?? false) || Boolean(errorText ?? ctx?.errorText);\n const resolvedHelperText = helperText ?? ctx?.helperText;\n const resolvedErrorText = errorText ?? ctx?.errorText;\n\n // Controlled / uncontrolled state\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n // Reanimated shared value: 0 = unchecked, 1 = checked/indeterminate\n const progress = useSharedValue(isChecked || isIndeterminate ? 1 : 0);\n\n const sz = SIZE_CONFIG[size];\n\n const handlePress = useCallback(() => {\n if (resolvedIsDisabled) return;\n const next = !isChecked;\n if (checked === undefined) {\n setInternalChecked(next);\n }\n progress.value = withSpring(next || isIndeterminate ? 1 : 0, SPRING_BOUNCE);\n onChange?.(next);\n }, [resolvedIsDisabled, isChecked, checked, isIndeterminate, progress, onChange]);\n\n // Update progress when controlled value changes\n React.useEffect(() => {\n progress.value = withSpring(isChecked || isIndeterminate ? 1 : 0, SPRING_BOUNCE);\n }, [isChecked, isIndeterminate]);\n\n // Animated style for the checkmark icon\n const checkmarkStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: interpolate(progress.value, [0, 0.5, 1], [0, 0, 1]),\n transform: [\n { scale: interpolate(progress.value, [0, 1], [0.4, 1]) },\n ],\n };\n });\n\n // Box background and border\n const boxStyle = useMemo((): ViewStyle => {\n const active = isChecked || isIndeterminate;\n return {\n width: sz.box,\n height: sz.box,\n borderRadius: sz.borderRadius,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: active ? theme.colors.primary : 'transparent',\n borderWidth: active ? 0 : 1.5,\n borderColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border,\n };\n }, [isChecked, isIndeterminate, sz, theme, resolvedIsInvalid]);\n\n const subText = resolvedIsInvalid && resolvedErrorText\n ? resolvedErrorText\n : resolvedHelperText;\n\n const boxContent = (\n <View style={boxStyle}>\n <Animated.Text\n style={[\n styles.checkmark,\n { fontSize: sz.fontSize, color: '#fff' },\n checkmarkStyle,\n ]}\n allowFontScaling={false}\n >\n {isIndeterminate ? '−' : '✓'}\n </Animated.Text>\n </View>\n );\n\n const wrappedBox = glass ? (\n <GlassView elevation={1} borderRadius={sz.borderRadius}>\n {boxContent}\n </GlassView>\n ) : boxContent;\n\n return (\n <View style={[styles.container, { opacity: resolvedIsDisabled ? 0.45 : 1 }, style]}>\n <Pressable\n onPress={handlePress}\n disabled={resolvedIsDisabled}\n accessible\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: isIndeterminate ? 'mixed' : isChecked, disabled: resolvedIsDisabled }}\n accessibilityLabel={label}\n style={styles.row}\n >\n {wrappedBox}\n {label != null && (\n <Text\n style={[styles.label, { fontSize: sz.labelSize, color: theme.colors.text }]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n )}\n </Pressable>\n {subText != null && (\n <Text\n style={[\n styles.subText,\n { color: resolvedIsInvalid ? theme.colors.error : theme.colors.textSecondary },\n ]}\n allowFontScaling={false}\n >\n {subText}\n </Text>\n )}\n </View>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-start',\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n checkmark: {\n fontWeight: '700',\n lineHeight: undefined,\n },\n label: {\n marginLeft: 10,\n fontWeight: '400',\n },\n subText: {\n fontSize: 12,\n marginTop: 4,\n marginLeft: 0,\n },\n});\n","import { createContext, useContext } from 'react';\nimport type { RadioGroupContextValue } from './Radio.types';\n\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport function useRadioGroup(): RadioGroupContextValue | null {\n return useContext(RadioGroupContext);\n}\n","import React, { useCallback } from 'react';\nimport {\n Pressable,\n Text,\n View,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport { useRadioGroup } from './radio-group-context';\nimport type { RadioProps, RadioSize } from './Radio.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\ninterface SizeConfig {\n outer: number;\n inner: number;\n labelSize: number;\n}\n\nconst SIZE_CONFIG: Record<RadioSize, SizeConfig> = {\n sm: { outer: 18, inner: 8, labelSize: 14 },\n md: { outer: 20, inner: 10, labelSize: 15 },\n lg: { outer: 24, inner: 12, labelSize: 16 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\nexport const Radio = React.memo<RadioProps>(\n ({ value, label, isDisabled = false, style }) => {\n const { theme } = useTheme();\n const groupCtx = useRadioGroup();\n\n const isSelected = groupCtx?.value === value;\n const resolvedSize = groupCtx?.size ?? 'md';\n const disabled = isDisabled || (groupCtx?.isDisabled ?? false);\n const isInvalid = groupCtx?.isInvalid ?? false;\n\n const sz = SIZE_CONFIG[resolvedSize];\n\n // Spring progress: 0 = deselected, 1 = selected\n const progress = useSharedValue(isSelected ? 1 : 0);\n\n React.useEffect(() => {\n progress.value = withSpring(isSelected ? 1 : 0, SPRING_BOUNCE);\n }, [isSelected]);\n\n const innerDotStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [\n { scale: interpolate(progress.value, [0, 1], [0, 1]) },\n ],\n opacity: interpolate(progress.value, [0, 0.4, 1], [0, 0, 1]),\n };\n });\n\n const handlePress = useCallback(() => {\n if (disabled) return;\n groupCtx?.onChange(value);\n }, [disabled, groupCtx, value]);\n\n const outerBorderColor = isInvalid\n ? theme.colors.error\n : isSelected\n ? theme.colors.primary\n : theme.colors.border;\n\n return (\n <Pressable\n onPress={handlePress}\n disabled={disabled}\n accessible\n accessibilityRole=\"radio\"\n accessibilityState={{ checked: isSelected, disabled }}\n accessibilityLabel={label ?? value}\n style={[\n styles.row,\n { opacity: disabled ? 0.45 : 1 },\n style,\n ]}\n >\n {/* Outer ring */}\n <View\n style={[\n styles.outerRing,\n {\n width: sz.outer,\n height: sz.outer,\n borderRadius: sz.outer / 2,\n borderColor: outerBorderColor,\n borderWidth: 1.5,\n alignItems: 'center',\n justifyContent: 'center',\n },\n ]}\n >\n {/* Inner dot */}\n <Animated.View\n style={[\n {\n width: sz.inner,\n height: sz.inner,\n borderRadius: sz.inner / 2,\n backgroundColor: theme.colors.primary,\n },\n innerDotStyle,\n ]}\n />\n </View>\n\n {label != null && (\n <Text\n style={[\n styles.label,\n { fontSize: sz.labelSize, color: theme.colors.text },\n ]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n )}\n </Pressable>\n );\n },\n);\n\nRadio.displayName = 'Radio';\n\nconst styles = StyleSheet.create({\n row: { flexDirection: 'row', alignItems: 'center' },\n outerRing: {},\n label: { marginLeft: 10, fontWeight: '400' },\n});\n","import React, { useMemo, useState } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { RadioGroupContext } from './radio-group-context';\nimport type { RadioGroupProps } from './Radio.types';\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n value,\n defaultValue = '',\n onChange,\n direction = 'column',\n children,\n isDisabled = false,\n isInvalid = false,\n size = 'md',\n style,\n }) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const resolvedValue = value !== undefined ? value : internalValue;\n\n const handleChange = useMemo(\n () => (v: string) => {\n if (value === undefined) {\n setInternalValue(v);\n }\n onChange?.(v);\n },\n [value, onChange],\n );\n\n const ctx = useMemo(\n () => ({\n value: resolvedValue,\n onChange: handleChange,\n isDisabled,\n isInvalid,\n size,\n }),\n [resolvedValue, handleChange, isDisabled, isInvalid, size],\n );\n\n return (\n <RadioGroupContext.Provider value={ctx}>\n <View\n style={[\n styles.container,\n direction === 'row' ? styles.row : styles.column,\n style,\n ]}\n accessible\n accessibilityRole=\"radiogroup\"\n >\n {children}\n </View>\n </RadioGroupContext.Provider>\n );\n },\n);\n\nRadioGroup.displayName = 'RadioGroup';\n\nconst styles = StyleSheet.create({\n container: {},\n row: { flexDirection: 'row', flexWrap: 'wrap', gap: 12 },\n column: { flexDirection: 'column', gap: 10 },\n});\n","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n Pressable,\n Text,\n View,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport { useFormControl } from '../FormControl/form-control-context';\nimport type { SwitchProps, SwitchSize, SwitchColor } from './Switch.types';\n\n// ─── Size system ─────────────────────────────────────────────────────────────\ninterface SizeConfig {\n trackWidth: number;\n trackHeight: number;\n thumbSize: number;\n thumbOffset: number; // padding from track edge\n}\n\nconst SIZE_CONFIG: Record<SwitchSize, SizeConfig> = {\n sm: { trackWidth: 36, trackHeight: 20, thumbSize: 14, thumbOffset: 3 },\n md: { trackWidth: 48, trackHeight: 26, thumbSize: 20, thumbOffset: 3 },\n lg: { trackWidth: 56, trackHeight: 30, thumbSize: 24, thumbOffset: 3 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\nexport const Switch = React.memo<SwitchProps>(\n ({\n checked,\n defaultChecked = false,\n onChange,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n glass = false,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n const ctx = useFormControl();\n\n const resolvedIsDisabled = isDisabled || (ctx?.isDisabled ?? false);\n\n // Controlled / uncontrolled\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const sz = SIZE_CONFIG[size];\n\n // Travel distance for thumb (track width - thumb size - 2 * offset)\n const maxTranslate = sz.trackWidth - sz.thumbSize - sz.thumbOffset * 2;\n\n // Reanimated progress: 0 = off, 1 = on\n const progress = useSharedValue(isChecked ? 1 : 0);\n\n // Resolve the active track color from theme\n const activeColor = useMemo((): string => {\n const c = theme.colors;\n const map: Record<SwitchColor, string> = {\n primary: c.primary,\n success: c.success,\n warning: c.warning,\n error: c.error,\n };\n return map[color];\n }, [color, theme]);\n\n const handlePress = useCallback(() => {\n if (resolvedIsDisabled) return;\n const next = !isChecked;\n if (checked === undefined) {\n setInternalChecked(next);\n }\n progress.value = withSpring(next ? 1 : 0, SPRING_BOUNCE);\n onChange?.(next);\n }, [resolvedIsDisabled, isChecked, checked, progress, onChange]);\n\n React.useEffect(() => {\n progress.value = withSpring(isChecked ? 1 : 0, SPRING_BOUNCE);\n }, [isChecked]);\n\n // Animated track color\n const trackAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n backgroundColor: interpolateColor(\n progress.value,\n [0, 1],\n [theme.colors.border, activeColor],\n ),\n };\n });\n\n // Animated thumb translateX\n const thumbAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [\n {\n translateX: progress.value * maxTranslate,\n },\n ],\n };\n });\n\n const trackBase: ViewStyle = {\n width: sz.trackWidth,\n height: sz.trackHeight,\n borderRadius: sz.trackHeight / 2,\n justifyContent: 'center',\n paddingHorizontal: sz.thumbOffset,\n };\n\n const thumbBase: ViewStyle = {\n width: sz.thumbSize,\n height: sz.thumbSize,\n borderRadius: sz.thumbSize / 2,\n backgroundColor: '#fff',\n // iOS shadow\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.25,\n shadowRadius: 2,\n // Android\n elevation: 2,\n };\n\n const glassTrack = glass ? (\n <GlassView elevation={1} borderRadius={sz.trackHeight / 2}>\n <Animated.View style={[trackBase, trackAnimStyle]}>\n <Animated.View style={[thumbBase, thumbAnimStyle]} />\n </Animated.View>\n </GlassView>\n ) : (\n <Animated.View style={[trackBase, trackAnimStyle]}>\n <Animated.View style={[thumbBase, thumbAnimStyle]} />\n </Animated.View>\n );\n\n const labelEl = label != null ? (\n <Text\n style={[\n styles.label,\n { color: theme.colors.text },\n labelPosition === 'left' ? styles.labelLeft : styles.labelRight,\n ]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n ) : null;\n\n return (\n <Pressable\n onPress={handlePress}\n disabled={resolvedIsDisabled}\n accessible\n accessibilityRole=\"switch\"\n accessibilityState={{ checked: isChecked, disabled: resolvedIsDisabled }}\n accessibilityLabel={label}\n style={[\n styles.row,\n { opacity: resolvedIsDisabled ? 0.45 : 1 },\n style,\n ]}\n >\n {labelPosition === 'left' && labelEl}\n {glassTrack}\n {labelPosition === 'right' && labelEl}\n </Pressable>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n\nconst styles = StyleSheet.create({\n row: { flexDirection: 'row', alignItems: 'center' },\n label: { fontSize: 15, fontWeight: '400' },\n labelLeft: { marginRight: 10 },\n labelRight: { marginLeft: 10 },\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Animated,\n PanResponder,\n StyleSheet,\n Text,\n View,\n type LayoutChangeEvent,\n type ViewStyle,\n} from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport { useControllable } from 'reactnatively-hooks';\nimport { defineVariants } from 'reactnatively-utils';\nimport type { SliderProps, SliderSizeConfig } from './Slider.types';\n\n// ─── Size configs ─────────────────────────────────────────────────────────────\nconst SIZE_CONFIG = defineVariants<'sm' | 'md' | 'lg', SliderSizeConfig>({\n sm: { trackHeight: 3, thumbSize: 18 },\n md: { trackHeight: 4, thumbSize: 22 },\n lg: { trackHeight: 6, thumbSize: 28 },\n});\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\nfunction snapToStep(value: number, step: number, min: number): number {\n return Math.round((value - min) / step) * step + min;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport function Slider({\n value: valueProp,\n defaultValue,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n onChangeEnd,\n size = 'md',\n color,\n trackColor,\n thumbSize: thumbSizeProp,\n showValue = false,\n marks = false,\n isDisabled = false,\n style,\n}: SliderProps) {\n const { theme } = useTheme();\n const sz = SIZE_CONFIG(size);\n\n const resolvedColor = color ?? theme.colors.primary;\n const resolvedTrackColor = trackColor ?? theme.colors.border;\n const resolvedThumbSize = thumbSizeProp ?? sz.thumbSize;\n\n const [trackWidth, setTrackWidth] = useState(0);\n\n const [value, setValue] = useControllable<number>({\n value: valueProp,\n defaultValue: defaultValue ?? min,\n onChange,\n });\n\n const resolvedValue = value ?? min;\n\n // Keep mutable refs so PanResponder callbacks never go stale\n const valueRef = useRef(resolvedValue);\n const trackWidthRef = useRef(0);\n const startXRef = useRef(0);\n const startValRef = useRef(resolvedValue);\n\n valueRef.current = resolvedValue;\n\n const thumbOffset = trackWidth > 0\n ? ((resolvedValue - min) / (max - min)) * trackWidth\n : 0;\n\n const thumbAnim = useRef(new Animated.Value(thumbOffset)).current;\n\n // Keep animated value in sync when controlled value changes\n const prevTrackWidth = useRef(0);\n if (trackWidth !== prevTrackWidth.current || resolvedValue !== valueRef.current) {\n const newOffset = trackWidth > 0\n ? ((resolvedValue - min) / (max - min)) * trackWidth\n : 0;\n thumbAnim.setValue(newOffset);\n }\n prevTrackWidth.current = trackWidth;\n\n const onLayout = useCallback((e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width - resolvedThumbSize;\n setTrackWidth(w);\n trackWidthRef.current = w;\n const offset = w > 0 ? ((valueRef.current - min) / (max - min)) * w : 0;\n thumbAnim.setValue(offset);\n }, [min, max, resolvedThumbSize, thumbAnim]);\n\n const computeValue = useCallback((x: number): number => {\n const w = trackWidthRef.current;\n if (w <= 0) return valueRef.current;\n const ratio = clamp(x / w, 0, 1);\n const raw = ratio * (max - min) + min;\n const snapped = snapToStep(raw, step, min);\n return clamp(snapped, min, max);\n }, [min, max, step]);\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !isDisabled,\n onMoveShouldSetPanResponder: () => !isDisabled,\n onPanResponderGrant: (_, gs) => {\n startXRef.current = (thumbAnim as any)._value;\n startValRef.current = valueRef.current;\n },\n onPanResponderMove: (_, gs) => {\n const newX = clamp(startXRef.current + gs.dx, 0, trackWidthRef.current);\n const newVal = computeValue(newX);\n thumbAnim.setValue(newX);\n valueRef.current = newVal;\n setValue(newVal);\n },\n onPanResponderRelease: (_, gs) => {\n const newX = clamp(startXRef.current + gs.dx, 0, trackWidthRef.current);\n const newVal = computeValue(newX);\n setValue(newVal);\n onChangeEnd?.(newVal);\n },\n onPanResponderTerminate: () => {\n // Snap back to last known\n const offset = trackWidthRef.current > 0\n ? ((valueRef.current - min) / (max - min)) * trackWidthRef.current\n : 0;\n thumbAnim.setValue(offset);\n },\n }),\n ).current;\n\n const markPositions: number[] = (() => {\n if (!marks) return [];\n if (marks === true) {\n const count = Math.floor((max - min) / step);\n return Array.from({ length: count + 1 }, (_, i) => min + i * step);\n }\n return marks;\n })();\n\n const containerPadding = resolvedThumbSize / 2;\n\n return (\n <View\n style={[styles.wrapper, style]}\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityValue={{ min, max, now: resolvedValue }}\n accessibilityLabel=\"Slider\"\n accessibilityState={{ disabled: isDisabled }}\n >\n {showValue && (\n <Animated.View\n style={[\n styles.tooltip,\n {\n left: Animated.subtract(thumbAnim, new Animated.Value(containerPadding - resolvedThumbSize / 2)),\n backgroundColor: resolvedColor,\n },\n ]}\n pointerEvents=\"none\"\n >\n <Text style={styles.tooltipText}>{Math.round(resolvedValue)}</Text>\n </Animated.View>\n )}\n\n <View\n style={[styles.trackContainer, { paddingHorizontal: containerPadding }]}\n onLayout={onLayout}\n >\n {/* Background track */}\n <View\n style={[\n styles.track,\n {\n height: sz.trackHeight,\n backgroundColor: resolvedTrackColor,\n borderRadius: sz.trackHeight / 2,\n opacity: isDisabled ? 0.4 : 1,\n },\n ]}\n >\n {/* Filled track */}\n <Animated.View\n style={[\n StyleSheet.absoluteFill,\n {\n right: undefined,\n width: thumbAnim,\n backgroundColor: resolvedColor,\n borderRadius: sz.trackHeight / 2,\n },\n ]}\n />\n </View>\n\n {/* Tick marks */}\n {markPositions.map((markVal) => {\n const markOffset = trackWidth > 0\n ? ((markVal - min) / (max - min)) * trackWidth\n : 0;\n return (\n <View\n key={markVal}\n style={[\n styles.mark,\n {\n left: markOffset + containerPadding - 2,\n top: (sz.thumbSize - 6) / 2,\n backgroundColor:\n markVal <= resolvedValue ? resolvedColor : resolvedTrackColor,\n },\n ]}\n pointerEvents=\"none\"\n />\n );\n })}\n\n {/* Thumb */}\n <Animated.View\n {...panResponder.panHandlers}\n style={[\n styles.thumb,\n {\n width: resolvedThumbSize,\n height: resolvedThumbSize,\n borderRadius: resolvedThumbSize / 2,\n backgroundColor: resolvedColor,\n transform: [{ translateX: thumbAnim }],\n opacity: isDisabled ? 0.5 : 1,\n shadowColor: resolvedColor,\n },\n ]}\n />\n </View>\n </View>\n );\n}\n\nSlider.displayName = 'Slider';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n } as ViewStyle,\n trackContainer: {\n width: '100%',\n justifyContent: 'center',\n } as ViewStyle,\n track: {\n width: '100%',\n overflow: 'hidden',\n } as ViewStyle,\n thumb: {\n position: 'absolute',\n top: undefined,\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.3,\n shadowRadius: 4,\n elevation: 4,\n backgroundColor: '#fff',\n borderWidth: 2,\n borderColor: '#fff',\n } as ViewStyle,\n tooltip: {\n position: 'absolute',\n top: -32,\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 6,\n minWidth: 32,\n alignItems: 'center',\n } as ViewStyle,\n tooltipText: {\n color: '#fff',\n fontSize: 11,\n fontWeight: '600',\n },\n mark: {\n position: 'absolute',\n width: 4,\n height: 6,\n borderRadius: 2,\n } as ViewStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Animated,\n PanResponder,\n StyleSheet,\n View,\n type LayoutChangeEvent,\n type ViewStyle,\n} from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport type { RangeSliderProps } from './RangeSlider.types';\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction snapToStep(value: number, step: number, min: number): number {\n return Math.round((value - min) / step) * step + min;\n}\n\nfunction clamp(value: number, lo: number, hi: number): number {\n return Math.min(Math.max(value, lo), hi);\n}\n\nconst TRACK_HEIGHT = 4;\nconst DEFAULT_THUMB = 20;\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport const RangeSlider = React.memo<RangeSliderProps>(\n ({\n min = 0,\n max = 100,\n step = 1,\n value: valueProp,\n defaultValue,\n onChange,\n onChangeEnd,\n trackColor,\n activeTrackColor,\n thumbSize = DEFAULT_THUMB,\n glass = false,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n\n const resolvedTrackColor = trackColor ?? theme.colors.border;\n const resolvedActiveColor = activeTrackColor ?? theme.colors.primary;\n\n // ─── Controlled / uncontrolled state ────────────────────────────────────\n const isControlled = valueProp !== undefined;\n const initLow = (valueProp ?? defaultValue)?.[0] ?? min;\n const initHigh = (valueProp ?? defaultValue)?.[1] ?? max;\n\n const [internalValue, setInternalValue] = useState<[number, number]>([initLow, initHigh]);\n const currentValue: [number, number] = isControlled ? valueProp! : internalValue;\n\n const [low, high] = currentValue;\n\n // ─── Layout ─────────────────────────────────────────────────────────────\n const [trackWidth, setTrackWidth] = useState(0);\n const trackWidthRef = useRef(0);\n\n const toOffset = useCallback(\n (val: number, tw: number) =>\n tw > 0 ? ((val - min) / (max - min)) * tw : 0,\n [min, max],\n );\n\n const thumbPad = thumbSize / 2;\n\n // ─── Animated values ────────────────────────────────────────────────────\n const lowAnim = useRef(new Animated.Value(toOffset(low, trackWidth))).current;\n const highAnim = useRef(new Animated.Value(toOffset(high, trackWidth))).current;\n\n // Refs for PanResponder closures (never stale)\n const lowRef = useRef(low);\n const highRef = useRef(high);\n const startLowX = useRef(0);\n const startHighX = useRef(0);\n\n lowRef.current = low;\n highRef.current = high;\n\n // Sync animated values when controlled value or track width changes\n const prevTrackWidth = useRef(0);\n if (trackWidth !== prevTrackWidth.current) {\n lowAnim.setValue(toOffset(low, trackWidth));\n highAnim.setValue(toOffset(high, trackWidth));\n }\n prevTrackWidth.current = trackWidth;\n\n const onLayout = useCallback(\n (e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width - thumbSize;\n setTrackWidth(w);\n trackWidthRef.current = w;\n lowAnim.setValue(toOffset(lowRef.current, w));\n highAnim.setValue(toOffset(highRef.current, w));\n },\n [thumbSize, toOffset, lowAnim, highAnim],\n );\n\n // ─── Value compute ───────────────────────────────────────────────────────\n const computeValue = useCallback(\n (x: number): number => {\n const w = trackWidthRef.current;\n if (w <= 0) return 0;\n const ratio = clamp(x / w, 0, 1);\n const raw = ratio * (max - min) + min;\n const snapped = snapToStep(raw, step, min);\n return clamp(snapped, min, max);\n },\n [min, max, step],\n );\n\n // ─── Apply new range value ───────────────────────────────────────────────\n const applyValue = useCallback(\n (nextLow: number, nextHigh: number, ended = false) => {\n const next: [number, number] = [nextLow, nextHigh];\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n if (ended) onChangeEnd?.(next);\n },\n [isControlled, onChange, onChangeEnd],\n );\n\n // ─── Low thumb PanResponder ──────────────────────────────────────────────\n const lowPan = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !isDisabled,\n onMoveShouldSetPanResponder: () => !isDisabled,\n onPanResponderGrant: () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n startLowX.current = (lowAnim as any)._value;\n },\n onPanResponderMove: (_, gs) => {\n const maxLowX = toOffset(highRef.current - step, trackWidthRef.current);\n const newX = clamp(startLowX.current + gs.dx, 0, maxLowX);\n const newVal = computeValue(newX);\n lowAnim.setValue(newX);\n lowRef.current = newVal;\n applyValue(newVal, highRef.current, false);\n },\n onPanResponderRelease: (_, gs) => {\n const maxLowX = toOffset(highRef.current - step, trackWidthRef.current);\n const newX = clamp(startLowX.current + gs.dx, 0, maxLowX);\n const newVal = computeValue(newX);\n applyValue(newVal, highRef.current, true);\n },\n onPanResponderTerminate: () => {\n lowAnim.setValue(toOffset(lowRef.current, trackWidthRef.current));\n },\n }),\n ).current;\n\n // ─── High thumb PanResponder ─────────────────────────────────────────────\n const highPan = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => !isDisabled,\n onMoveShouldSetPanResponder: () => !isDisabled,\n onPanResponderGrant: () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n startHighX.current = (highAnim as any)._value;\n },\n onPanResponderMove: (_, gs) => {\n const minHighX = toOffset(lowRef.current + step, trackWidthRef.current);\n const maxX = trackWidthRef.current;\n const newX = clamp(startHighX.current + gs.dx, minHighX, maxX);\n const newVal = computeValue(newX);\n highAnim.setValue(newX);\n highRef.current = newVal;\n applyValue(lowRef.current, newVal, false);\n },\n onPanResponderRelease: (_, gs) => {\n const minHighX = toOffset(lowRef.current + step, trackWidthRef.current);\n const maxX = trackWidthRef.current;\n const newX = clamp(startHighX.current + gs.dx, minHighX, maxX);\n const newVal = computeValue(newX);\n applyValue(lowRef.current, newVal, true);\n },\n onPanResponderTerminate: () => {\n highAnim.setValue(toOffset(highRef.current, trackWidthRef.current));\n },\n }),\n ).current;\n\n // ─── Active track segment ────────────────────────────────────────────────\n const activeLeft = Animated.add(lowAnim, new Animated.Value(thumbPad));\n const activeWidth = Animated.subtract(highAnim, lowAnim);\n\n const track = (\n <View\n style={[styles.trackContainer, { paddingHorizontal: thumbPad }]}\n onLayout={onLayout}\n >\n {/* Background track */}\n <View\n style={[\n styles.track,\n {\n backgroundColor: resolvedTrackColor,\n opacity: isDisabled ? 0.4 : 1,\n },\n ]}\n />\n\n {/* Active segment */}\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.activeSegment,\n {\n backgroundColor: resolvedActiveColor,\n left: activeLeft,\n width: activeWidth,\n },\n ]}\n />\n\n {/* Low thumb */}\n <Animated.View\n {...lowPan.panHandlers}\n style={[\n styles.thumb,\n {\n width: thumbSize,\n height: thumbSize,\n borderRadius: thumbSize / 2,\n transform: [{ translateX: lowAnim }],\n opacity: isDisabled ? 0.5 : 1,\n },\n ]}\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityValue={{ min, max, now: low }}\n accessibilityLabel=\"Lower range thumb\"\n />\n\n {/* High thumb */}\n <Animated.View\n {...highPan.panHandlers}\n style={[\n styles.thumb,\n {\n width: thumbSize,\n height: thumbSize,\n borderRadius: thumbSize / 2,\n transform: [{ translateX: highAnim }],\n opacity: isDisabled ? 0.5 : 1,\n },\n ]}\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityValue={{ min, max, now: high }}\n accessibilityLabel=\"Upper range thumb\"\n />\n </View>\n );\n\n if (glass) {\n return (\n <GlassView elevation={1} borderRadius={12} style={[styles.wrapper, style]}>\n {track}\n </GlassView>\n );\n }\n\n return (\n <View style={[styles.wrapper, style]}>\n {track}\n </View>\n );\n },\n);\n\nRangeSlider.displayName = 'RangeSlider';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n paddingVertical: 12,\n } as ViewStyle,\n trackContainer: {\n width: '100%',\n height: TRACK_HEIGHT,\n justifyContent: 'center',\n } as ViewStyle,\n track: {\n position: 'absolute',\n left: 0,\n right: 0,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n } as ViewStyle,\n activeSegment: {\n position: 'absolute',\n height: TRACK_HEIGHT,\n borderRadius: TRACK_HEIGHT / 2,\n top: 0,\n } as ViewStyle,\n thumb: {\n position: 'absolute',\n top: -(DEFAULT_THUMB / 2 - TRACK_HEIGHT / 2),\n backgroundColor: '#ffffff',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.25,\n shadowRadius: 4,\n elevation: 4,\n borderWidth: 2,\n borderColor: '#e5e7eb',\n } as ViewStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { useEntranceAnimation, SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { OTPInputProps } from './OTPInput.types';\n\n// ─── Single box ───────────────────────────────────────────────────────────────\n\ninterface BoxProps {\n char: string;\n isFocused: boolean;\n isInvalid: boolean;\n glass: boolean;\n index: number;\n}\n\nconst OTPBox = React.memo<BoxProps>(({ char, isFocused, isInvalid, glass, index }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const entranceStyle = useEntranceAnimation({\n variant: 'scale',\n delay: index * 50,\n });\n\n const focused = useSharedValue(isFocused ? 1 : 0);\n\n // Keep shared value in sync with prop\n if (isFocused) {\n focused.value = 1;\n } else {\n focused.value = 0;\n }\n\n const borderStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n borderColor: isInvalid\n ? theme.colors.error\n : focused.value > 0.5\n ? theme.colors.primary\n : theme.colors.border,\n borderWidth: isFocused ? 2 : 1.5,\n };\n });\n\n const filled = char.length > 0;\n const fillColor = isDark ? 'rgba(255,255,255,0.07)' : 'rgba(0,0,0,0.04)';\n\n if (glass) {\n return (\n <Animated.View style={[styles.boxWrapper, entranceStyle]}>\n <GlassView\n elevation={1}\n borderRadius={12}\n style={[\n styles.box,\n isInvalid && { borderColor: theme.colors.error, borderWidth: 2 },\n isFocused && { borderColor: theme.colors.primary, borderWidth: 2 },\n ]}\n >\n <Text style={[styles.char, { color: theme.colors.text }]}>{char}</Text>\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View style={[styles.boxWrapper, entranceStyle]}>\n <Animated.View\n style={[\n styles.box,\n { backgroundColor: filled ? fillColor : 'transparent' },\n borderStyle,\n ]}\n >\n <Text style={[styles.char, { color: theme.colors.text }]}>{char}</Text>\n </Animated.View>\n </Animated.View>\n );\n});\n\nOTPBox.displayName = 'OTPBox';\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const OTPInput = React.memo<OTPInputProps>(\n ({\n length = 6,\n value: valueProp,\n onChange,\n onComplete,\n type = 'numeric',\n glass = false,\n isInvalid = false,\n isDisabled = false,\n autoFocus = false,\n style,\n }) => {\n const { theme } = useTheme();\n\n const isControlled = valueProp !== undefined;\n const [internal, setInternal] = useState('');\n const currentValue = isControlled ? valueProp! : internal;\n\n // Which box appears focused: derived from cursor position\n const focusedIndex = Math.min(currentValue.length, length - 1);\n\n const inputRef = useRef<TextInput>(null);\n\n const handlePress = useCallback(() => {\n if (!isDisabled) inputRef.current?.focus();\n }, [isDisabled]);\n\n const handleChange = useCallback(\n (text: string) => {\n // Strip to allowed chars\n const filtered = type === 'numeric'\n ? text.replace(/[^0-9]/g, '')\n : text.replace(/[^a-zA-Z0-9]/g, '');\n\n const next = filtered.slice(0, length);\n\n if (!isControlled) setInternal(next);\n onChange?.(next);\n if (next.length === length) {\n onComplete?.(next);\n }\n },\n [isControlled, length, type, onChange, onComplete],\n );\n\n return (\n <Pressable\n onPress={handlePress}\n style={[styles.container, style]}\n accessible\n accessibilityRole=\"none\"\n accessibilityLabel={`OTP input, ${length} digits`}\n accessibilityState={{ disabled: isDisabled }}\n >\n {/* Hidden real input */}\n <TextInput\n ref={inputRef}\n value={currentValue}\n onChangeText={handleChange}\n keyboardType={type === 'numeric' ? 'number-pad' : 'default'}\n maxLength={length}\n autoFocus={autoFocus}\n editable={!isDisabled}\n caretHidden\n style={styles.hiddenInput}\n importantForAccessibility=\"no\"\n autoComplete=\"one-time-code\"\n textContentType=\"oneTimeCode\"\n />\n\n {/* Visual boxes */}\n <View style={styles.boxes} pointerEvents=\"none\">\n {Array.from({ length }, (_, i) => (\n <OTPBox\n key={i}\n index={i}\n char={currentValue[i] ?? ''}\n isFocused={i === focusedIndex}\n isInvalid={isInvalid}\n glass={glass}\n />\n ))}\n </View>\n </Pressable>\n );\n },\n);\n\nOTPInput.displayName = 'OTPInput';\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'stretch',\n },\n hiddenInput: {\n position: 'absolute',\n opacity: 0,\n width: 0,\n height: 0,\n } as TextStyle,\n boxes: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n } as ViewStyle,\n boxWrapper: {\n flex: 1,\n } as ViewStyle,\n box: {\n height: 56,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1.5,\n borderColor: 'transparent',\n } as ViewStyle,\n char: {\n fontSize: 22,\n fontWeight: '600',\n lineHeight: 28,\n } as TextStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Animated as RNAnimated,\n Modal,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY, TIMING_FAST } from 'reactnatively-animations';\nimport type { SelectProps, SelectOption } from './Select.types';\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\nconst SIZE_HEIGHT: Record<string, number> = { sm: 40, md: 52, lg: 60 };\nconst SIZE_FONT: Record<string, number> = { sm: 13, md: 15, lg: 16 };\nconst SIZE_PX: Record<string, number> = { sm: 12, md: 16, lg: 18 };\n\n// ─── Option row ───────────────────────────────────────────────────────────────\n\ninterface OptionRowProps {\n option: SelectOption;\n isSelected: boolean;\n onSelect: (value: string) => void;\n theme: ReturnType<typeof useTheme>['theme'];\n}\n\nconst OptionRow = React.memo<OptionRowProps>(({ option, isSelected, onSelect, theme }) => {\n const handlePress = useCallback(() => {\n if (!option.disabled) onSelect(option.value);\n }, [option, onSelect]);\n\n return (\n <Pressable\n onPress={handlePress}\n style={({ pressed }) => [\n styles.optionRow,\n pressed && { backgroundColor: theme.colors.neutralSubtle },\n option.disabled && { opacity: 0.4 },\n ]}\n accessibilityRole=\"menuitem\"\n accessibilityState={{ selected: isSelected, disabled: option.disabled }}\n >\n <View style={styles.optionContent}>\n <Text style={[styles.optionLabel, { color: theme.colors.text }]}>\n {option.label}\n </Text>\n {option.description != null && (\n <Text style={[styles.optionDesc, { color: theme.colors.textSecondary }]}>\n {option.description}\n </Text>\n )}\n </View>\n {isSelected && (\n <Text style={[styles.checkmark, { color: theme.colors.primary }]}>✓</Text>\n )}\n </Pressable>\n );\n});\n\nOptionRow.displayName = 'OptionRow';\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const Select = React.memo<SelectProps>(\n ({\n options,\n value: valueProp,\n defaultValue,\n onChange,\n placeholder = 'Select an option',\n label,\n helperText,\n errorText,\n size = 'md',\n glass = false,\n isDisabled = false,\n isInvalid = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const isControlled = valueProp !== undefined;\n const [internal, setInternal] = useState(defaultValue ?? '');\n const currentValue = isControlled ? valueProp! : internal;\n\n const [open, setOpen] = useState(false);\n\n // Chevron rotation\n const chevronRot = useSharedValue(0);\n\n // Sheet slide animation (RN Animated for translateY)\n const slideAnim = useRef(new RNAnimated.Value(300)).current;\n\n const openSheet = useCallback(() => {\n if (isDisabled) return;\n setOpen(true);\n chevronRot.value = withSpring(1, SPRING_SNAPPY);\n RNAnimated.spring(slideAnim, {\n toValue: 0,\n useNativeDriver: true,\n damping: 20,\n stiffness: 200,\n }).start();\n }, [isDisabled, chevronRot, slideAnim]);\n\n const closeSheet = useCallback(() => {\n chevronRot.value = withSpring(0, SPRING_SNAPPY);\n RNAnimated.timing(slideAnim, {\n toValue: 300,\n duration: 200,\n useNativeDriver: true,\n }).start(() => setOpen(false));\n }, [chevronRot, slideAnim]);\n\n const handleSelect = useCallback(\n (val: string) => {\n if (!isControlled) setInternal(val);\n onChange?.(val);\n closeSheet();\n },\n [isControlled, onChange, closeSheet],\n );\n\n const chevronStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n const deg = chevronRot.value * 180;\n return {\n transform: [{ rotate: `${deg}deg` }],\n };\n });\n\n const selectedOption = options.find(o => o.value === currentValue);\n const displayLabel = selectedOption?.label ?? '';\n\n const height = SIZE_HEIGHT[size] ?? SIZE_HEIGHT['md']!;\n const fs = SIZE_FONT[size] ?? SIZE_FONT['md']!;\n const px = SIZE_PX[size] ?? SIZE_PX['md']!;\n\n const resolvedIsInvalid = isInvalid || Boolean(errorText);\n const subText = resolvedIsInvalid && errorText ? errorText : helperText;\n\n // Trigger\n const triggerBorder: ViewStyle = {\n borderColor: resolvedIsInvalid ? theme.colors.error : theme.colors.border,\n borderWidth: 1.5,\n borderRadius: 12,\n height,\n opacity: isDisabled ? 0.5 : 1,\n };\n\n const triggerInner = (\n <Pressable\n onPress={openSheet}\n style={[styles.triggerRow, { paddingHorizontal: px }]}\n accessibilityRole=\"combobox\"\n accessibilityState={{ expanded: open, disabled: isDisabled }}\n accessibilityLabel={label ?? placeholder}\n >\n <Text\n style={[\n styles.triggerText,\n {\n fontSize: fs,\n color: displayLabel ? theme.colors.text : theme.colors.textMuted,\n flex: 1,\n },\n ]}\n numberOfLines={1}\n >\n {displayLabel || placeholder}\n </Text>\n <Animated.View style={chevronStyle}>\n <Text style={[styles.chevron, { color: theme.colors.textSecondary }]}>›</Text>\n </Animated.View>\n </Pressable>\n );\n\n return (\n <View style={[styles.wrapper, style]}>\n {label != null && (\n <Text style={[styles.label, { color: theme.colors.text }]}>{label}</Text>\n )}\n\n {glass ? (\n <GlassView elevation={1} borderRadius={12} style={{ opacity: isDisabled ? 0.5 : 1 }}>\n {triggerInner}\n </GlassView>\n ) : (\n <View style={triggerBorder}>\n {triggerInner}\n </View>\n )}\n\n {subText != null && (\n <Text\n style={[\n styles.subText,\n { color: resolvedIsInvalid ? theme.colors.error : theme.colors.textSecondary },\n ]}\n >\n {subText}\n </Text>\n )}\n\n <Modal\n visible={open}\n transparent\n animationType=\"none\"\n onRequestClose={closeSheet}\n statusBarTranslucent\n >\n {/* Backdrop */}\n <Pressable style={styles.backdrop} onPress={closeSheet}>\n <View style={styles.backdropFill} />\n </Pressable>\n\n {/* Sheet */}\n <RNAnimated.View\n style={[styles.sheet, { transform: [{ translateY: slideAnim }] }]}\n >\n {glass ? (\n <GlassView elevation={1} borderRadius={20} style={styles.panelFill}>\n <View style={styles.handle} />\n <ScrollView\n style={styles.optionScroll}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {options.map(opt => (\n <OptionRow\n key={opt.value}\n option={opt}\n isSelected={opt.value === currentValue}\n onSelect={handleSelect}\n theme={theme}\n />\n ))}\n </ScrollView>\n </GlassView>\n ) : (\n <View\n style={[\n styles.panelFill,\n {\n backgroundColor: isDark ? theme.colors.surface : '#fff',\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n ]}\n >\n <View style={styles.handle} />\n <ScrollView\n style={styles.optionScroll}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {options.map(opt => (\n <OptionRow\n key={opt.value}\n option={opt}\n isSelected={opt.value === currentValue}\n onSelect={handleSelect}\n theme={theme}\n />\n ))}\n </ScrollView>\n </View>\n )}\n </RNAnimated.View>\n </Modal>\n </View>\n );\n },\n);\n\nSelect.displayName = 'Select';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n } as ViewStyle,\n label: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 6,\n } as TextStyle,\n subText: {\n fontSize: 12,\n marginTop: 4,\n } as TextStyle,\n triggerRow: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n } as ViewStyle,\n triggerText: {\n fontWeight: '400',\n } as TextStyle,\n chevron: {\n fontSize: 22,\n fontWeight: '300',\n marginLeft: 4,\n } as TextStyle,\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'flex-end',\n } as ViewStyle,\n backdropFill: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.4)',\n } as ViewStyle,\n sheet: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n maxHeight: '70%',\n } as ViewStyle,\n panelFill: {\n overflow: 'hidden',\n } as ViewStyle,\n handle: {\n alignSelf: 'center',\n width: 40,\n height: 4,\n borderRadius: 2,\n backgroundColor: 'rgba(120,120,128,0.3)',\n marginVertical: 12,\n } as ViewStyle,\n optionScroll: {\n maxHeight: 400,\n },\n optionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 14,\n paddingHorizontal: 20,\n } as ViewStyle,\n optionContent: {\n flex: 1,\n } as ViewStyle,\n optionLabel: {\n fontSize: 16,\n fontWeight: '400',\n } as TextStyle,\n optionDesc: {\n fontSize: 13,\n marginTop: 2,\n } as TextStyle,\n checkmark: {\n fontSize: 18,\n fontWeight: '600',\n marginLeft: 12,\n } as TextStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Animated as RNAnimated,\n Modal,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport Animated, { useSharedValue, useAnimatedStyle, withSpring } from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { MultiSelectProps } from './MultiSelect.types';\nimport type { SelectOption } from '../Select/Select.types';\n\n// ─── Chip ─────────────────────────────────────────────────────────────────────\n\ninterface ChipProps {\n label: string;\n onRemove: () => void;\n theme: ReturnType<typeof useTheme>['theme'];\n}\n\nconst Chip = React.memo<ChipProps>(({ label, onRemove, theme }) => (\n <View style={[styles.chip, { backgroundColor: theme.colors.primaryMuted }]}>\n <Text style={[styles.chipLabel, { color: theme.colors.primary }]} numberOfLines={1}>\n {label}\n </Text>\n <Pressable\n onPress={onRemove}\n hitSlop={{ top: 6, bottom: 6, left: 4, right: 4 }}\n accessibilityRole=\"button\"\n accessibilityLabel={`Remove ${label}`}\n >\n <Text style={[styles.chipDismiss, { color: theme.colors.primary }]}>✕</Text>\n </Pressable>\n </View>\n));\n\nChip.displayName = 'Chip';\n\n// ─── Option row ───────────────────────────────────────────────────────────────\n\ninterface OptionRowProps {\n option: SelectOption;\n isSelected: boolean;\n isDisabled: boolean;\n onToggle: (value: string) => void;\n theme: ReturnType<typeof useTheme>['theme'];\n}\n\nconst OptionRow = React.memo<OptionRowProps>(({ option, isSelected, isDisabled, onToggle, theme }) => {\n const handlePress = useCallback(() => {\n if (!option.disabled && !isDisabled) onToggle(option.value);\n }, [option, isDisabled, onToggle]);\n\n return (\n <Pressable\n onPress={handlePress}\n style={({ pressed }) => [\n styles.optionRow,\n pressed && { backgroundColor: theme.colors.neutralSubtle },\n (option.disabled || isDisabled) && { opacity: 0.4 },\n ]}\n accessibilityRole=\"checkbox\"\n accessibilityState={{ checked: isSelected, disabled: option.disabled || isDisabled }}\n >\n {/* Checkbox visual */}\n <View\n style={[\n styles.checkbox,\n {\n borderColor: isSelected ? theme.colors.primary : theme.colors.border,\n backgroundColor: isSelected ? theme.colors.primary : 'transparent',\n },\n ]}\n >\n {isSelected && (\n <Text style={styles.checkboxTick}>✓</Text>\n )}\n </View>\n\n <View style={styles.optionContent}>\n <Text style={[styles.optionLabel, { color: theme.colors.text }]}>\n {option.label}\n </Text>\n {option.description != null && (\n <Text style={[styles.optionDesc, { color: theme.colors.textSecondary }]}>\n {option.description}\n </Text>\n )}\n </View>\n </Pressable>\n );\n});\n\nOptionRow.displayName = 'OptionRow';\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const MultiSelect = React.memo<MultiSelectProps>(\n ({\n options,\n value: valueProp,\n defaultValue,\n onChange,\n placeholder = 'Select options',\n maxSelections,\n glass = false,\n isDisabled = false,\n isInvalid = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const isControlled = valueProp !== undefined;\n const [internal, setInternal] = useState<string[]>(defaultValue ?? []);\n const currentValues = isControlled ? valueProp! : internal;\n\n const [open, setOpen] = useState(false);\n\n const chevronRot = useSharedValue(0);\n const slideAnim = useRef(new RNAnimated.Value(300)).current;\n\n const openSheet = useCallback(() => {\n if (isDisabled) return;\n setOpen(true);\n chevronRot.value = withSpring(1, SPRING_SNAPPY);\n RNAnimated.spring(slideAnim, {\n toValue: 0,\n useNativeDriver: true,\n damping: 20,\n stiffness: 200,\n }).start();\n }, [isDisabled, chevronRot, slideAnim]);\n\n const closeSheet = useCallback(() => {\n chevronRot.value = withSpring(0, SPRING_SNAPPY);\n RNAnimated.timing(slideAnim, {\n toValue: 300,\n duration: 200,\n useNativeDriver: true,\n }).start(() => setOpen(false));\n }, [chevronRot, slideAnim]);\n\n const handleToggle = useCallback(\n (val: string) => {\n let next: string[];\n if (currentValues.includes(val)) {\n next = currentValues.filter(v => v !== val);\n } else {\n if (maxSelections != null && currentValues.length >= maxSelections) return;\n next = [...currentValues, val];\n }\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [currentValues, isControlled, maxSelections, onChange],\n );\n\n const handleRemoveChip = useCallback(\n (val: string) => {\n const next = currentValues.filter(v => v !== val);\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [currentValues, isControlled, onChange],\n );\n\n const chevronStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ rotate: `${chevronRot.value * 180}deg` }],\n };\n });\n\n const selectedOptions = options.filter(o => currentValues.includes(o.value));\n\n const triggerContent = (\n <Pressable\n onPress={openSheet}\n style={[styles.triggerRow]}\n accessibilityRole=\"combobox\"\n accessibilityState={{ expanded: open, disabled: isDisabled }}\n accessibilityLabel={placeholder}\n >\n <View style={styles.chipsContainer}>\n {selectedOptions.length === 0 ? (\n <Text style={[styles.placeholder, { color: theme.colors.textMuted }]}>\n {placeholder}\n </Text>\n ) : (\n selectedOptions.map(opt => (\n <Chip\n key={opt.value}\n label={opt.label}\n onRemove={() => handleRemoveChip(opt.value)}\n theme={theme}\n />\n ))\n )}\n </View>\n <Animated.View style={chevronStyle}>\n <Text style={[styles.chevron, { color: theme.colors.textSecondary }]}>›</Text>\n </Animated.View>\n </Pressable>\n );\n\n const triggerBorder: ViewStyle = {\n borderColor: isInvalid ? theme.colors.error : theme.colors.border,\n borderWidth: 1.5,\n borderRadius: 12,\n minHeight: 52,\n opacity: isDisabled ? 0.5 : 1,\n };\n\n return (\n <View style={[styles.wrapper, style]}>\n {glass ? (\n <GlassView elevation={1} borderRadius={12} style={{ opacity: isDisabled ? 0.5 : 1 }}>\n {triggerContent}\n </GlassView>\n ) : (\n <View style={triggerBorder}>\n {triggerContent}\n </View>\n )}\n\n <Modal\n visible={open}\n transparent\n animationType=\"none\"\n onRequestClose={closeSheet}\n statusBarTranslucent\n >\n <Pressable style={styles.backdrop} onPress={closeSheet}>\n <View style={styles.backdropFill} />\n </Pressable>\n\n <RNAnimated.View\n style={[styles.sheet, { transform: [{ translateY: slideAnim }] }]}\n >\n {glass ? (\n <GlassView elevation={1} borderRadius={20} style={styles.panelFill}>\n <View style={styles.handle} />\n {maxSelections != null && (\n <Text style={[styles.limitText, { color: theme.colors.textSecondary }]}>\n {currentValues.length}/{maxSelections} selected\n </Text>\n )}\n <ScrollView\n style={styles.optionScroll}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {options.map(opt => (\n <OptionRow\n key={opt.value}\n option={opt}\n isSelected={currentValues.includes(opt.value)}\n isDisabled={\n isDisabled ||\n (maxSelections != null &&\n currentValues.length >= maxSelections &&\n !currentValues.includes(opt.value))\n }\n onToggle={handleToggle}\n theme={theme}\n />\n ))}\n </ScrollView>\n </GlassView>\n ) : (\n <View\n style={[\n styles.panelFill,\n {\n backgroundColor: isDark ? theme.colors.surface : '#fff',\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n ]}\n >\n <View style={styles.handle} />\n {maxSelections != null && (\n <Text style={[styles.limitText, { color: theme.colors.textSecondary }]}>\n {currentValues.length}/{maxSelections} selected\n </Text>\n )}\n <ScrollView\n style={styles.optionScroll}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {options.map(opt => (\n <OptionRow\n key={opt.value}\n option={opt}\n isSelected={currentValues.includes(opt.value)}\n isDisabled={\n isDisabled ||\n (maxSelections != null &&\n currentValues.length >= maxSelections &&\n !currentValues.includes(opt.value))\n }\n onToggle={handleToggle}\n theme={theme}\n />\n ))}\n </ScrollView>\n </View>\n )}\n </RNAnimated.View>\n </Modal>\n </View>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n } as ViewStyle,\n triggerRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 8,\n minHeight: 52,\n flexWrap: 'nowrap',\n } as ViewStyle,\n chipsContainer: {\n flex: 1,\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 6,\n alignItems: 'center',\n } as ViewStyle,\n placeholder: {\n fontSize: 15,\n } as TextStyle,\n chip: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 4,\n paddingLeft: 10,\n paddingRight: 6,\n borderRadius: 20,\n gap: 4,\n } as ViewStyle,\n chipLabel: {\n fontSize: 13,\n fontWeight: '500',\n maxWidth: 100,\n } as TextStyle,\n chipDismiss: {\n fontSize: 11,\n fontWeight: '700',\n } as TextStyle,\n chevron: {\n fontSize: 22,\n fontWeight: '300',\n marginLeft: 4,\n } as TextStyle,\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'flex-end',\n } as ViewStyle,\n backdropFill: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.4)',\n } as ViewStyle,\n sheet: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n maxHeight: '70%',\n } as ViewStyle,\n panelFill: {\n overflow: 'hidden',\n } as ViewStyle,\n handle: {\n alignSelf: 'center',\n width: 40,\n height: 4,\n borderRadius: 2,\n backgroundColor: 'rgba(120,120,128,0.3)',\n marginVertical: 12,\n } as ViewStyle,\n limitText: {\n fontSize: 13,\n textAlign: 'center',\n paddingBottom: 8,\n } as TextStyle,\n optionScroll: {\n maxHeight: 400,\n },\n optionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 14,\n paddingHorizontal: 20,\n gap: 14,\n } as ViewStyle,\n checkbox: {\n width: 22,\n height: 22,\n borderRadius: 6,\n borderWidth: 1.5,\n alignItems: 'center',\n justifyContent: 'center',\n } as ViewStyle,\n checkboxTick: {\n color: '#fff',\n fontSize: 13,\n fontWeight: '700',\n lineHeight: 16,\n } as TextStyle,\n optionContent: {\n flex: 1,\n } as ViewStyle,\n optionLabel: {\n fontSize: 16,\n fontWeight: '400',\n } as TextStyle,\n optionDesc: {\n fontSize: 13,\n marginTop: 2,\n } as TextStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Modal,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type NativeSyntheticEvent,\n type NativeScrollEvent,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport type { DatePickerProps } from './DatePicker.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst ITEM_HEIGHT = 44;\nconst VISIBLE_ITEMS = 5;\nconst WHEEL_HEIGHT = ITEM_HEIGHT * VISIBLE_ITEMS;\n\nconst MONTHS = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\nconst DAYS = Array.from({ length: 31 }, (_, i) => i + 1);\n\nconst CURRENT_YEAR = new Date().getFullYear();\nconst YEARS = Array.from({ length: 61 }, (_, i) => CURRENT_YEAR - 50 + i);\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatDate(date: Date): string {\n const d = date.getDate().toString().padStart(2, '0');\n const m = (date.getMonth() + 1).toString().padStart(2, '0');\n const y = date.getFullYear();\n return `${m}/${d}/${y}`;\n}\n\nfunction formatDateTime(date: Date): string {\n const base = formatDate(date);\n const h = date.getHours().toString().padStart(2, '0');\n const min = date.getMinutes().toString().padStart(2, '0');\n return `${base} ${h}:${min}`;\n}\n\n// ─── Wheel column ─────────────────────────────────────────────────────────────\n\ninterface WheelProps {\n items: string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n theme: ReturnType<typeof useTheme>['theme'];\n width: number;\n}\n\nconst WheelColumn = React.memo<WheelProps>(({ items, selectedIndex, onSelect, theme, width }) => {\n const scrollRef = useRef<ScrollView>(null);\n const lastIndex = useRef(selectedIndex);\n\n // Scroll to initial position without animation\n const handleContentSize = useCallback(() => {\n scrollRef.current?.scrollTo({ y: selectedIndex * ITEM_HEIGHT, animated: false });\n }, [selectedIndex]);\n\n const handleScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const y = e.nativeEvent.contentOffset.y;\n const i = Math.round(y / ITEM_HEIGHT);\n const clamped = Math.max(0, Math.min(i, items.length - 1));\n if (clamped !== lastIndex.current) {\n lastIndex.current = clamped;\n onSelect(clamped);\n }\n },\n [items.length, onSelect],\n );\n\n return (\n <View style={[styles.wheel, { width }]}>\n {/* Selection highlight */}\n <View\n pointerEvents=\"none\"\n style={[styles.selectionHighlight, { borderColor: theme.colors.primary }]}\n />\n\n <ScrollView\n ref={scrollRef}\n showsVerticalScrollIndicator={false}\n snapToInterval={ITEM_HEIGHT}\n decelerationRate=\"fast\"\n onScroll={handleScroll}\n scrollEventThrottle={16}\n onContentSizeChange={handleContentSize}\n contentContainerStyle={{ paddingVertical: ITEM_HEIGHT * 2 }}\n >\n {items.map((item, i) => {\n const isSelected = i === selectedIndex;\n return (\n <View key={i} style={styles.wheelItem}>\n <Text\n style={[\n styles.wheelText,\n {\n color: isSelected ? theme.colors.primary : theme.colors.textSecondary,\n fontWeight: isSelected ? '600' : '400',\n fontSize: isSelected ? 17 : 15,\n },\n ]}\n >\n {item}\n </Text>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n});\n\nWheelColumn.displayName = 'WheelColumn';\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const DatePicker = React.memo<DatePickerProps>(\n ({\n value: valueProp,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n mode = 'date',\n glass = false,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const isControlled = valueProp !== undefined;\n const initDate = valueProp ?? defaultValue ?? new Date();\n\n const [internal, setInternal] = useState<Date>(initDate);\n const currentDate = isControlled ? valueProp! : internal;\n\n const [open, setOpen] = useState(false);\n\n // Draft state while modal is open\n const [draftMonth, setDraftMonth] = useState(currentDate.getMonth());\n const [draftDay, setDraftDay] = useState(currentDate.getDate() - 1);\n const [draftYear, setDraftYear] = useState(\n YEARS.indexOf(currentDate.getFullYear()) >= 0\n ? YEARS.indexOf(currentDate.getFullYear())\n : 50,\n );\n const [draftHour, setDraftHour] = useState(currentDate.getHours());\n const [draftMinute, setDraftMinute] = useState(currentDate.getMinutes());\n\n const openPicker = useCallback(() => {\n if (isDisabled) return;\n const d = isControlled ? valueProp! : internal;\n setDraftMonth(d.getMonth());\n setDraftDay(d.getDate() - 1);\n const yi = YEARS.indexOf(d.getFullYear());\n setDraftYear(yi >= 0 ? yi : 50);\n setDraftHour(d.getHours());\n setDraftMinute(d.getMinutes());\n setOpen(true);\n }, [isDisabled, isControlled, valueProp, internal]);\n\n const handleConfirm = useCallback(() => {\n const month = draftMonth;\n const day = draftDay + 1;\n const year = YEARS[draftYear] ?? CURRENT_YEAR;\n const next = new Date(year, month, day, draftHour, draftMinute, 0, 0);\n if (!isControlled) setInternal(next);\n onChange?.(next);\n setOpen(false);\n }, [draftMonth, draftDay, draftYear, draftHour, draftMinute, isControlled, onChange]);\n\n const handleCancel = useCallback(() => setOpen(false), []);\n\n const displayText = mode === 'datetime'\n ? formatDateTime(currentDate)\n : formatDate(currentDate);\n\n const hours = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));\n const minutes = Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'));\n\n const panelContent = (\n <>\n <View style={styles.handle} />\n <Text style={[styles.panelTitle, { color: theme.colors.text }]}>Select Date</Text>\n\n <View style={styles.wheelsRow}>\n <WheelColumn\n items={MONTHS}\n selectedIndex={draftMonth}\n onSelect={setDraftMonth}\n theme={theme}\n width={130}\n />\n <WheelColumn\n items={DAYS.map(d => d.toString().padStart(2, '0'))}\n selectedIndex={draftDay}\n onSelect={setDraftDay}\n theme={theme}\n width={60}\n />\n <WheelColumn\n items={YEARS.map(String)}\n selectedIndex={draftYear}\n onSelect={setDraftYear}\n theme={theme}\n width={80}\n />\n </View>\n\n {mode === 'datetime' && (\n <>\n <View style={[styles.divider, { backgroundColor: theme.colors.border }]} />\n <View style={styles.wheelsRow}>\n <WheelColumn\n items={hours}\n selectedIndex={draftHour}\n onSelect={setDraftHour}\n theme={theme}\n width={80}\n />\n <Text style={[styles.timeSep, { color: theme.colors.textSecondary }]}>:</Text>\n <WheelColumn\n items={minutes}\n selectedIndex={draftMinute}\n onSelect={setDraftMinute}\n theme={theme}\n width={80}\n />\n </View>\n </>\n )}\n\n <View style={styles.actions}>\n <Pressable onPress={handleCancel} style={styles.actionBtn}>\n <Text style={[styles.cancelText, { color: theme.colors.textSecondary }]}>Cancel</Text>\n </Pressable>\n <Pressable\n onPress={handleConfirm}\n style={[styles.actionBtn, styles.confirmBtn, { backgroundColor: theme.colors.primary }]}\n >\n <Text style={styles.confirmText}>Confirm</Text>\n </Pressable>\n </View>\n </>\n );\n\n return (\n <View style={[styles.wrapper, style]}>\n <Pressable\n onPress={openPicker}\n style={[\n styles.trigger,\n {\n borderColor: theme.colors.border,\n opacity: isDisabled ? 0.5 : 1,\n backgroundColor: isDark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.03)',\n },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Date picker, current value: ${displayText}`}\n accessibilityState={{ disabled: isDisabled }}\n >\n <Text style={[styles.triggerText, { color: theme.colors.text }]}>\n {displayText}\n </Text>\n <Text style={[styles.triggerIcon, { color: theme.colors.textSecondary }]}>📅</Text>\n </Pressable>\n\n <Modal\n visible={open}\n transparent\n animationType=\"slide\"\n onRequestClose={handleCancel}\n statusBarTranslucent\n >\n <Pressable style={styles.backdrop} onPress={handleCancel}>\n <View style={styles.backdropFill} />\n </Pressable>\n\n {glass ? (\n <GlassView elevation={1} borderRadius={20} style={styles.panel}>\n {panelContent}\n </GlassView>\n ) : (\n <View\n style={[\n styles.panel,\n {\n backgroundColor: isDark ? theme.colors.surface : '#fff',\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n ]}\n >\n {panelContent}\n </View>\n )}\n </Modal>\n </View>\n );\n },\n);\n\nDatePicker.displayName = 'DatePicker';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n } as ViewStyle,\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n paddingVertical: 14,\n borderWidth: 1.5,\n borderRadius: 12,\n } as ViewStyle,\n triggerText: {\n fontSize: 15,\n fontWeight: '400',\n } as TextStyle,\n triggerIcon: {\n fontSize: 18,\n } as TextStyle,\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'flex-end',\n } as ViewStyle,\n backdropFill: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.4)',\n } as ViewStyle,\n panel: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n paddingBottom: 32,\n overflow: 'hidden',\n } as ViewStyle,\n handle: {\n alignSelf: 'center',\n width: 40,\n height: 4,\n borderRadius: 2,\n backgroundColor: 'rgba(120,120,128,0.3)',\n marginVertical: 12,\n } as ViewStyle,\n panelTitle: {\n fontSize: 17,\n fontWeight: '600',\n textAlign: 'center',\n marginBottom: 8,\n } as TextStyle,\n wheelsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: WHEEL_HEIGHT,\n paddingHorizontal: 8,\n } as ViewStyle,\n wheel: {\n height: WHEEL_HEIGHT,\n overflow: 'hidden',\n } as ViewStyle,\n selectionHighlight: {\n position: 'absolute',\n top: ITEM_HEIGHT * 2,\n left: 4,\n right: 4,\n height: ITEM_HEIGHT,\n borderWidth: 1,\n borderRadius: 8,\n zIndex: 1,\n } as ViewStyle,\n wheelItem: {\n height: ITEM_HEIGHT,\n alignItems: 'center',\n justifyContent: 'center',\n } as ViewStyle,\n wheelText: {\n textAlign: 'center',\n } as TextStyle,\n divider: {\n height: 1,\n marginHorizontal: 20,\n marginVertical: 8,\n } as ViewStyle,\n timeSep: {\n fontSize: 22,\n fontWeight: '600',\n marginHorizontal: 4,\n } as TextStyle,\n actions: {\n flexDirection: 'row',\n paddingHorizontal: 20,\n paddingTop: 16,\n gap: 12,\n } as ViewStyle,\n actionBtn: {\n flex: 1,\n height: 48,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n } as ViewStyle,\n confirmBtn: {} as ViewStyle,\n cancelText: {\n fontSize: 16,\n fontWeight: '500',\n } as TextStyle,\n confirmText: {\n fontSize: 16,\n fontWeight: '600',\n color: '#fff',\n } as TextStyle,\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Modal,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type NativeSyntheticEvent,\n type NativeScrollEvent,\n type ViewStyle,\n type TextStyle,\n} from 'react-native';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport type { TimePickerProps } from './TimePicker.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst ITEM_HEIGHT = 44;\nconst VISIBLE_ITEMS = 5;\nconst WHEEL_HEIGHT = ITEM_HEIGHT * VISIBLE_ITEMS;\n\nconst AM_PM = ['AM', 'PM'];\n\nconst HOURS_24 = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));\nconst HOURS_12 = Array.from({ length: 12 }, (_, i) => (i + 1).toString().padStart(2, '0'));\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i.toString().padStart(2, '0'));\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction formatTime(date: Date, use24Hour: boolean): string {\n if (use24Hour) {\n const h = date.getHours().toString().padStart(2, '0');\n const min = date.getMinutes().toString().padStart(2, '0');\n return `${h}:${min}`;\n }\n let h = date.getHours();\n const ampm = h >= 12 ? 'PM' : 'AM';\n h = h % 12 || 12;\n const min = date.getMinutes().toString().padStart(2, '0');\n return `${h.toString().padStart(2, '0')}:${min} ${ampm}`;\n}\n\n// Converts a 12-hour display index (0-based, i.e. 0=1,…,11=12) to 24-hour\nfunction to24Hour(hourIndex: number, ampmIndex: number): number {\n const h12 = hourIndex + 1; // 1-12\n if (ampmIndex === 0) {\n // AM\n return h12 === 12 ? 0 : h12;\n } else {\n // PM\n return h12 === 12 ? 12 : h12 + 12;\n }\n}\n\n// ─── Wheel column ─────────────────────────────────────────────────────────────\n\ninterface WheelProps {\n items: string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n theme: ReturnType<typeof useTheme>['theme'];\n width: number;\n}\n\nconst WheelColumn = React.memo<WheelProps>(({ items, selectedIndex, onSelect, theme, width }) => {\n const scrollRef = useRef<ScrollView>(null);\n const lastIndex = useRef(selectedIndex);\n\n const handleContentSize = useCallback(() => {\n scrollRef.current?.scrollTo({ y: selectedIndex * ITEM_HEIGHT, animated: false });\n }, [selectedIndex]);\n\n const handleScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const y = e.nativeEvent.contentOffset.y;\n const i = Math.round(y / ITEM_HEIGHT);\n const clamped = Math.max(0, Math.min(i, items.length - 1));\n if (clamped !== lastIndex.current) {\n lastIndex.current = clamped;\n onSelect(clamped);\n }\n },\n [items.length, onSelect],\n );\n\n return (\n <View style={[styles.wheel, { width }]}>\n <View\n pointerEvents=\"none\"\n style={[styles.selectionHighlight, { borderColor: theme.colors.primary }]}\n />\n <ScrollView\n ref={scrollRef}\n showsVerticalScrollIndicator={false}\n snapToInterval={ITEM_HEIGHT}\n decelerationRate=\"fast\"\n onScroll={handleScroll}\n scrollEventThrottle={16}\n onContentSizeChange={handleContentSize}\n contentContainerStyle={{ paddingVertical: ITEM_HEIGHT * 2 }}\n >\n {items.map((item, i) => {\n const isSelected = i === selectedIndex;\n return (\n <View key={i} style={styles.wheelItem}>\n <Text\n style={[\n styles.wheelText,\n {\n color: isSelected ? theme.colors.primary : theme.colors.textSecondary,\n fontWeight: isSelected ? '600' : '400',\n fontSize: isSelected ? 18 : 15,\n },\n ]}\n >\n {item}\n </Text>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n});\n\nWheelColumn.displayName = 'WheelColumn';\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport const TimePicker = React.memo<TimePickerProps>(\n ({\n value: valueProp,\n defaultValue,\n onChange,\n use24Hour = false,\n glass = false,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const isControlled = valueProp !== undefined;\n const initDate = valueProp ?? defaultValue ?? new Date();\n\n const [internal, setInternal] = useState<Date>(initDate);\n const currentDate = isControlled ? valueProp! : internal;\n\n const [open, setOpen] = useState(false);\n\n // Compute initial draft indices\n function initDraftIndices(d: Date) {\n if (use24Hour) {\n return {\n hourIndex: d.getHours(),\n minuteIndex: d.getMinutes(),\n ampmIndex: 0,\n };\n }\n const h24 = d.getHours();\n const ampmIdx = h24 >= 12 ? 1 : 0;\n const h12 = h24 % 12 || 12;\n return {\n hourIndex: h12 - 1, // 0-based: 0=1h … 11=12h\n minuteIndex: d.getMinutes(),\n ampmIndex: ampmIdx,\n };\n }\n\n const [draftHour, setDraftHour] = useState(() => initDraftIndices(initDate).hourIndex);\n const [draftMinute, setDraftMinute] = useState(() => initDraftIndices(initDate).minuteIndex);\n const [draftAmpm, setDraftAmpm] = useState(() => initDraftIndices(initDate).ampmIndex);\n\n const openPicker = useCallback(() => {\n if (isDisabled) return;\n const d = isControlled ? valueProp! : internal;\n const { hourIndex, minuteIndex, ampmIndex } = initDraftIndices(d);\n setDraftHour(hourIndex);\n setDraftMinute(minuteIndex);\n setDraftAmpm(ampmIndex);\n setOpen(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled, isControlled, valueProp, internal, use24Hour]);\n\n const handleConfirm = useCallback(() => {\n const h = use24Hour ? draftHour : to24Hour(draftHour, draftAmpm);\n const next = new Date(currentDate);\n next.setHours(h, draftMinute, 0, 0);\n if (!isControlled) setInternal(next);\n onChange?.(next);\n setOpen(false);\n }, [use24Hour, draftHour, draftAmpm, draftMinute, currentDate, isControlled, onChange]);\n\n const handleCancel = useCallback(() => setOpen(false), []);\n\n const displayText = formatTime(currentDate, use24Hour);\n\n const hourItems = use24Hour ? HOURS_24 : HOURS_12;\n\n const panelContent = (\n <>\n <View style={styles.handle} />\n <Text style={[styles.panelTitle, { color: theme.colors.text }]}>Select Time</Text>\n\n <View style={styles.wheelsRow}>\n <WheelColumn\n items={hourItems}\n selectedIndex={draftHour}\n onSelect={setDraftHour}\n theme={theme}\n width={80}\n />\n <Text style={[styles.timeSep, { color: theme.colors.textSecondary }]}>:</Text>\n <WheelColumn\n items={MINUTES}\n selectedIndex={draftMinute}\n onSelect={setDraftMinute}\n theme={theme}\n width={80}\n />\n {!use24Hour && (\n <WheelColumn\n items={AM_PM}\n selectedIndex={draftAmpm}\n onSelect={setDraftAmpm}\n theme={theme}\n width={64}\n />\n )}\n </View>\n\n <View style={styles.actions}>\n <Pressable onPress={handleCancel} style={styles.actionBtn}>\n <Text style={[styles.cancelText, { color: theme.colors.textSecondary }]}>Cancel</Text>\n </Pressable>\n <Pressable\n onPress={handleConfirm}\n style={[styles.actionBtn, { backgroundColor: theme.colors.primary }]}\n >\n <Text style={styles.confirmText}>Confirm</Text>\n </Pressable>\n </View>\n </>\n );\n\n return (\n <View style={[styles.wrapper, style]}>\n <Pressable\n onPress={openPicker}\n style={[\n styles.trigger,\n {\n borderColor: theme.colors.border,\n opacity: isDisabled ? 0.5 : 1,\n backgroundColor: isDark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.03)',\n },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Time picker, current value: ${displayText}`}\n accessibilityState={{ disabled: isDisabled }}\n >\n <Text style={[styles.triggerText, { color: theme.colors.text }]}>\n {displayText}\n </Text>\n <Text style={[styles.triggerIcon, { color: theme.colors.textSecondary }]}>⏰</Text>\n </Pressable>\n\n <Modal\n visible={open}\n transparent\n animationType=\"slide\"\n onRequestClose={handleCancel}\n statusBarTranslucent\n >\n <Pressable style={styles.backdrop} onPress={handleCancel}>\n <View style={styles.backdropFill} />\n </Pressable>\n\n {glass ? (\n <GlassView elevation={1} borderRadius={20} style={styles.panel}>\n {panelContent}\n </GlassView>\n ) : (\n <View\n style={[\n styles.panel,\n {\n backgroundColor: isDark ? theme.colors.surface : '#fff',\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n ]}\n >\n {panelContent}\n </View>\n )}\n </Modal>\n </View>\n );\n },\n);\n\nTimePicker.displayName = 'TimePicker';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n } as ViewStyle,\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n paddingVertical: 14,\n borderWidth: 1.5,\n borderRadius: 12,\n } as ViewStyle,\n triggerText: {\n fontSize: 15,\n fontWeight: '400',\n } as TextStyle,\n triggerIcon: {\n fontSize: 18,\n } as TextStyle,\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'flex-end',\n } as ViewStyle,\n backdropFill: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.4)',\n } as ViewStyle,\n panel: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n paddingBottom: 32,\n overflow: 'hidden',\n } as ViewStyle,\n handle: {\n alignSelf: 'center',\n width: 40,\n height: 4,\n borderRadius: 2,\n backgroundColor: 'rgba(120,120,128,0.3)',\n marginVertical: 12,\n } as ViewStyle,\n panelTitle: {\n fontSize: 17,\n fontWeight: '600',\n textAlign: 'center',\n marginBottom: 8,\n } as TextStyle,\n wheelsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: WHEEL_HEIGHT,\n paddingHorizontal: 8,\n gap: 4,\n } as ViewStyle,\n wheel: {\n height: WHEEL_HEIGHT,\n overflow: 'hidden',\n } as ViewStyle,\n selectionHighlight: {\n position: 'absolute',\n top: ITEM_HEIGHT * 2,\n left: 4,\n right: 4,\n height: ITEM_HEIGHT,\n borderWidth: 1,\n borderRadius: 8,\n zIndex: 1,\n } as ViewStyle,\n wheelItem: {\n height: ITEM_HEIGHT,\n alignItems: 'center',\n justifyContent: 'center',\n } as ViewStyle,\n wheelText: {\n textAlign: 'center',\n } as TextStyle,\n timeSep: {\n fontSize: 24,\n fontWeight: '600',\n paddingBottom: 4,\n } as TextStyle,\n actions: {\n flexDirection: 'row',\n paddingHorizontal: 20,\n paddingTop: 16,\n gap: 12,\n } as ViewStyle,\n actionBtn: {\n flex: 1,\n height: 48,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n } as ViewStyle,\n cancelText: {\n fontSize: 16,\n fontWeight: '500',\n } as TextStyle,\n confirmText: {\n fontSize: 16,\n fontWeight: '600',\n color: '#fff',\n } as TextStyle,\n});\n","import React, { useCallback } from 'react';\nimport {\n View,\n Image,\n Pressable,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { SPRING_LIQUID } from 'reactnatively-animations';\nimport type {\n LiquidCardProps,\n LiquidCardHeaderProps,\n LiquidCardBodyProps,\n LiquidCardFooterProps,\n LiquidCardImageProps,\n} from './LiquidCard.types';\n\n// ─── Sub-components ───────────────────────────────────────────────────────────\n\nconst LiquidCardHeader = React.memo<LiquidCardHeaderProps>(\n ({ children, style, bordered = false, compact = false }) => {\n const isDark = useIsDark();\n return (\n <View\n style={[\n styles.header,\n compact && styles.compact,\n bordered && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: isDark\n ? 'rgba(255,255,255,0.10)'\n : 'rgba(0,0,0,0.08)',\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n },\n);\nLiquidCardHeader.displayName = 'LiquidCard.Header';\n\nconst LiquidCardBody = React.memo<LiquidCardBodyProps>(\n ({ children, style, compact = false }) => (\n <View style={[styles.body, compact && styles.compact, style]}>\n {children}\n </View>\n ),\n);\nLiquidCardBody.displayName = 'LiquidCard.Body';\n\nconst LiquidCardFooter = React.memo<LiquidCardFooterProps>(\n ({ children, style, bordered = true, compact = false }) => {\n const isDark = useIsDark();\n return (\n <View\n style={[\n styles.footer,\n compact && styles.compact,\n bordered && {\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: isDark\n ? 'rgba(255,255,255,0.10)'\n : 'rgba(0,0,0,0.08)',\n },\n style,\n ]}\n >\n {children}\n </View>\n );\n },\n);\nLiquidCardFooter.displayName = 'LiquidCard.Footer';\n\nconst LiquidCardImage = React.memo<LiquidCardImageProps>(\n ({ source, height = 200, style, rounded = false }) => (\n <Image\n source={source}\n style={[\n styles.image,\n { height },\n rounded && { borderRadius: 12 },\n style,\n ]}\n resizeMode=\"cover\"\n />\n ),\n);\nLiquidCardImage.displayName = 'LiquidCard.Image';\n\n// ─── Root card ────────────────────────────────────────────────────────────────\n\nconst LiquidCardRoot = React.memo<LiquidCardProps>(\n ({\n elevation = 2,\n variant = 'surface',\n borderRadius = 20,\n glow,\n border = true,\n pressable = false,\n onPress,\n onLongPress,\n fullWidth = false,\n style,\n contentStyle,\n children,\n testID,\n accessibilityLabel,\n accessibilityHint,\n }) => {\n const pressed = useSharedValue(0);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n if (!pressable) return {};\n return {\n transform: [{ scale: interpolate(pressed.value, [0, 1], [1, 0.97]) }],\n };\n });\n\n const handlePressIn = useCallback(() => {\n if (!pressable) return;\n pressed.value = withSpring(1, SPRING_LIQUID);\n }, [pressable]);\n\n const handlePressOut = useCallback(() => {\n if (!pressable) return;\n pressed.value = withSpring(0, SPRING_LIQUID);\n }, [pressable]);\n\n const glass = (\n <GlassView\n testID={testID}\n elevation={elevation}\n variant={variant}\n borderRadius={borderRadius}\n border={border}\n glow={glow}\n style={fullWidth ? styles.fullWidth : undefined}\n contentStyle={contentStyle}\n >\n {children}\n </GlassView>\n );\n\n if (pressable) {\n return (\n <Pressable\n onPress={onPress}\n onLongPress={onLongPress}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n accessible\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={accessibilityHint}\n style={fullWidth ? styles.fullWidth : undefined}\n >\n <Animated.View style={[animatedStyle, style]}>\n {glass}\n </Animated.View>\n </Pressable>\n );\n }\n\n return (\n <Animated.View style={[style]}>\n {glass}\n </Animated.View>\n );\n },\n);\nLiquidCardRoot.displayName = 'LiquidCard';\n\n// ─── Compound component assembly ──────────────────────────────────────────────\n\nexport const LiquidCard = Object.assign(LiquidCardRoot, {\n Header: LiquidCardHeader,\n Body: LiquidCardBody,\n Footer: LiquidCardFooter,\n Image: LiquidCardImage,\n});\n\nconst styles = StyleSheet.create({\n header: {\n paddingHorizontal: 20,\n paddingTop: 20,\n paddingBottom: 12,\n },\n body: {\n paddingHorizontal: 20,\n paddingVertical: 12,\n },\n footer: {\n paddingHorizontal: 20,\n paddingTop: 12,\n paddingBottom: 20,\n flexDirection: 'row',\n alignItems: 'center',\n },\n compact: {\n paddingHorizontal: 14,\n paddingVertical: 10,\n },\n image: {\n width: '100%',\n borderTopLeftRadius: 20,\n borderTopRightRadius: 20,\n },\n fullWidth: {\n alignSelf: 'stretch',\n },\n});\n","import React, { useState, useMemo } from 'react';\nimport { View, Image, Text, StyleSheet } from 'react-native';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { defineVariants } from 'reactnatively-utils';\nimport type { AvatarProps, AvatarSize } from './Avatar.types';\n\nconst SIZE_PX = defineVariants<string, number>({\n xs: 24,\n sm: 32,\n md: 44,\n lg: 56,\n xl: 72,\n '2xl': 96,\n});\n\nfunction resolveSizePx(size: AvatarSize): number {\n if (typeof size === 'number') return size;\n return SIZE_PX(size);\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) return (parts[0]?.[0] ?? '').toUpperCase();\n return ((parts[0]?.[0] ?? '') + (parts[parts.length - 1]?.[0] ?? '')).toUpperCase();\n}\n\n// Deterministic color from name — same name always gets the same color\nconst AVATAR_COLORS = [\n '#6366f1', '#8b5cf6', '#ec4899', '#f43f5e',\n '#f59e0b', '#10b981', '#06b6d4', '#3b82f6',\n];\n\nfunction colorFromName(name: string): string {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length] ?? AVATAR_COLORS[0]!;\n}\n\nconst INDICATOR_COLORS: Record<string, string> = {\n online: '#22c55e',\n offline: '#6b7280',\n busy: '#ef4444',\n away: '#f59e0b',\n};\n\n// ─── Avatar ───────────────────────────────────────────────────────────────────\n\nexport const Avatar = React.memo<AvatarProps>(\n ({\n src,\n name,\n size = 'md',\n online,\n bordered = false,\n borderColor,\n fallbackBg,\n fallbackColor = '#fff',\n style,\n imageStyle,\n testID,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const [imgError, setImgError] = useState(false);\n const sizePx = resolveSizePx(size);\n const fontSize = Math.round(sizePx * 0.38);\n\n const bgColor = useMemo(\n () => fallbackBg ?? (name ? colorFromName(name) : theme.colors.neutral),\n [fallbackBg, name, theme.colors.neutral],\n );\n\n const showImage = src != null && !imgError;\n const showInitials = !showImage && name != null;\n\n const borderStyle = bordered\n ? {\n borderWidth: 2.5,\n borderColor: borderColor ?? (isDark ? 'rgba(255,255,255,0.25)' : 'rgba(255,255,255,0.85)'),\n }\n : {};\n\n // Online indicator size scales with avatar\n const indicatorSize = Math.max(10, Math.round(sizePx * 0.24));\n const indicatorBorder = Math.ceil(indicatorSize * 0.2);\n\n const indicatorColor = (() => {\n if (!online) return null;\n if (online === true) return INDICATOR_COLORS['online']!;\n return INDICATOR_COLORS[online] ?? INDICATOR_COLORS['online']!;\n })();\n\n return (\n <View\n testID={testID}\n style={[\n {\n width: sizePx,\n height: sizePx,\n borderRadius: sizePx / 2,\n },\n style,\n ]}\n >\n {/* Background + content */}\n <View\n style={[\n styles.container,\n {\n width: sizePx,\n height: sizePx,\n borderRadius: sizePx / 2,\n backgroundColor: showImage ? 'transparent' : bgColor,\n },\n borderStyle,\n ]}\n >\n {showImage && (\n <Image\n source={src!}\n style={[\n StyleSheet.absoluteFill,\n { width: sizePx, height: sizePx, borderRadius: sizePx / 2 },\n imageStyle,\n ]}\n onError={() => setImgError(true)}\n />\n )}\n\n {showInitials && (\n <Text\n style={{\n fontSize,\n fontWeight: '700',\n color: fallbackColor,\n letterSpacing: -0.5,\n }}\n allowFontScaling={false}\n >\n {getInitials(name!)}\n </Text>\n )}\n </View>\n\n {/* Online indicator */}\n {indicatorColor != null && (\n <View\n style={[\n styles.indicator,\n {\n width: indicatorSize,\n height: indicatorSize,\n borderRadius: indicatorSize / 2,\n backgroundColor: indicatorColor,\n borderWidth: indicatorBorder,\n borderColor: isDark ? '#13131f' : '#fff',\n bottom: borderStyle.borderWidth ? -1 : 0,\n right: borderStyle.borderWidth ? -1 : 0,\n },\n ]}\n />\n )}\n </View>\n );\n },\n);\n\nAvatar.displayName = 'Avatar';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n indicator: {\n position: 'absolute',\n },\n});\n","import React, { useEffect } from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport type { BadgeProps, BadgeStatus, BadgeVariant } from './Badge.types';\n\n// ─── Size tables ──────────────────────────────────────────────────────────────\n\nconst DOT_SIZE = { sm: 8, md: 10, lg: 12 } as const;\nconst BADGE_H = { sm: 18, md: 22, lg: 26 } as const;\nconst FONT_SIZE = { sm: 10, md: 12, lg: 13 } as const;\nconst H_PADDING = { sm: 5, md: 7, lg: 9 } as const;\n\n// ─── Color resolution ─────────────────────────────────────────────────────────\n\nfunction useStatusColors(\n status: BadgeStatus,\n variant: BadgeVariant,\n isDark: boolean,\n primaryColor: string,\n) {\n const STATUS_SOLID: Record<BadgeStatus, string> = {\n primary: primaryColor,\n secondary: isDark ? '#8b5cf6' : '#7c3aed',\n success: isDark ? '#22c55e' : '#16a34a',\n warning: isDark ? '#f59e0b' : '#d97706',\n error: isDark ? '#ef4444' : '#dc2626',\n neutral: isDark ? '#6b7280' : '#4b5563',\n };\n\n const STATUS_TEXT: Record<BadgeStatus, string> = {\n primary: '#fff',\n secondary: '#fff',\n success: '#fff',\n warning: '#fff',\n error: '#fff',\n neutral: '#fff',\n };\n\n const STATUS_SUBTLE_BG: Record<BadgeStatus, string> = {\n primary: isDark ? 'rgba(99,102,241,0.22)' : 'rgba(99,102,241,0.12)',\n secondary: isDark ? 'rgba(139,92,246,0.22)' : 'rgba(139,92,246,0.12)',\n success: isDark ? 'rgba(34,197,94,0.22)' : 'rgba(22,163,74,0.12)',\n warning: isDark ? 'rgba(245,158,11,0.22)' : 'rgba(217,119,6,0.12)',\n error: isDark ? 'rgba(239,68,68,0.22)' : 'rgba(220,38,38,0.12)',\n neutral: isDark ? 'rgba(107,114,128,0.22)': 'rgba(75,85,99,0.12)',\n };\n\n const STATUS_SUBTLE_TEXT: Record<BadgeStatus, string> = {\n primary: isDark ? '#a5b4fc' : '#4f46e5',\n secondary: isDark ? '#c4b5fd' : '#7c3aed',\n success: isDark ? '#86efac' : '#15803d',\n warning: isDark ? '#fcd34d' : '#b45309',\n error: isDark ? '#fca5a5' : '#b91c1c',\n neutral: isDark ? '#d1d5db' : '#374151',\n };\n\n const solidBg = STATUS_SOLID[status];\n const solidText = STATUS_TEXT[status];\n const subtleBg = STATUS_SUBTLE_BG[status];\n const subtleText = STATUS_SUBTLE_TEXT[status];\n const outlineBorder = STATUS_SOLID[status];\n\n switch (variant) {\n case 'solid':\n return { bg: solidBg, text: solidText, border: 'transparent' };\n case 'subtle':\n return { bg: subtleBg, text: subtleText, border: 'transparent' };\n case 'outline':\n return {\n bg: 'transparent',\n text: outlineBorder,\n border: outlineBorder,\n };\n case 'glass':\n return {\n bg: isDark ? 'rgba(255,255,255,0.10)' : 'rgba(255,255,255,0.60)',\n text: isDark ? '#e2e8f0' : '#1e293b',\n border: isDark ? 'rgba(255,255,255,0.18)' : 'rgba(255,255,255,0.80)',\n };\n }\n}\n\n// ─── Badge pill / dot ─────────────────────────────────────────────────────────\n\ninterface BadgePillProps {\n count?: number;\n dot?: boolean;\n label?: string;\n status: BadgeStatus;\n variant: BadgeVariant;\n maxCount: number;\n size: 'sm' | 'md' | 'lg';\n}\n\nconst BadgePill = React.memo<BadgePillProps>(\n ({ count, dot, label, status, variant, maxCount, size }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const scale = useSharedValue(1);\n\n const colors = useStatusColors(status, variant, isDark, theme.colors.primary);\n\n // Scale pop when count changes\n useEffect(() => {\n if (count == null) return;\n scale.value = withSpring(1.25, SPRING_BOUNCE, () => {\n 'worklet';\n scale.value = withSpring(1, SPRING_BOUNCE);\n });\n }, [count]);\n\n const animStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n if (dot) {\n const dotSize = DOT_SIZE[size];\n if (variant === 'glass') {\n return (\n <Animated.View style={animStyle}>\n <GlassView\n borderRadius={dotSize / 2}\n style={{ width: dotSize, height: dotSize }}\n />\n </Animated.View>\n );\n }\n return (\n <Animated.View\n style={[\n animStyle,\n {\n width: dotSize,\n height: dotSize,\n borderRadius: dotSize / 2,\n backgroundColor: colors.bg,\n borderWidth: variant === 'outline' ? 1.5 : 0,\n borderColor: colors.border,\n },\n ]}\n />\n );\n }\n\n const height = BADGE_H[size];\n const fontSize = FONT_SIZE[size];\n const px = H_PADDING[size];\n\n let displayText = label ?? '';\n if (count != null) {\n displayText = count > maxCount ? `${maxCount}+` : String(count);\n }\n const minWidth = height;\n\n if (variant === 'glass') {\n return (\n <Animated.View style={animStyle}>\n <GlassView\n borderRadius={height / 2}\n style={{ height, minWidth, paddingHorizontal: px }}\n contentStyle={styles.pillContent}\n >\n <Text\n style={[styles.pillText, { fontSize, color: colors.text }]}\n allowFontScaling={false}\n numberOfLines={1}\n >\n {displayText}\n </Text>\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View\n style={[\n animStyle,\n {\n height,\n minWidth,\n borderRadius: height / 2,\n backgroundColor: colors.bg,\n paddingHorizontal: px,\n borderWidth: variant === 'outline' ? 1.5 : 0,\n borderColor: colors.border,\n },\n styles.pillContent,\n ]}\n >\n <Text\n style={[styles.pillText, { fontSize, color: colors.text }]}\n allowFontScaling={false}\n numberOfLines={1}\n >\n {displayText}\n </Text>\n </Animated.View>\n );\n },\n);\nBadgePill.displayName = 'Badge.Pill';\n\n// ─── Placement helpers ────────────────────────────────────────────────────────\n\ntype Placement = NonNullable<BadgeProps['placement']>;\n\nfunction placementStyle(placement: Placement, size: 'sm' | 'md' | 'lg') {\n const offset = -(DOT_SIZE[size] / 2);\n switch (placement) {\n case 'topRight': return { top: offset, right: offset };\n case 'topLeft': return { top: offset, left: offset };\n case 'bottomRight': return { bottom: offset, right: offset };\n case 'bottomLeft': return { bottom: offset, left: offset };\n }\n}\n\n// ─── Badge (root) ─────────────────────────────────────────────────────────────\n\nexport const Badge = React.memo<BadgeProps>(\n ({\n count,\n dot = false,\n label,\n status = 'primary',\n variant = 'solid',\n maxCount = 99,\n size = 'md',\n children,\n placement = 'topRight',\n style,\n }) => {\n const pill = (\n <BadgePill\n count={count}\n dot={dot}\n label={label}\n status={status}\n variant={variant}\n maxCount={maxCount}\n size={size}\n />\n );\n\n if (!children) {\n return <View style={style}>{pill}</View>;\n }\n\n return (\n <View style={[styles.wrapper, style]}>\n {children}\n <View style={[styles.positioned, placementStyle(placement, size)]}>\n {pill}\n </View>\n </View>\n );\n },\n);\nBadge.displayName = 'Badge';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: 'relative',\n alignSelf: 'flex-start',\n },\n positioned: {\n position: 'absolute',\n zIndex: 10,\n },\n pillContent: {\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n pillText: {\n fontWeight: '700',\n letterSpacing: -0.2,\n textAlign: 'center',\n },\n});\n","import React from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { usePressAnimation } from 'reactnatively-animations';\nimport type { ChipProps, ChipVariant } from './Chip.types';\n\n// ─── Size tables ──────────────────────────────────────────────────────────────\n\nconst CHIP_HEIGHT = { sm: 28, md: 34, lg: 42 } as const;\nconst CHIP_FONT = { sm: 12, md: 13, lg: 15 } as const;\nconst CHIP_PADDING = { sm: 8, md: 10, lg: 14 } as const;\nconst AVATAR_SIZE = { sm: 20, md: 24, lg: 28 } as const;\nconst DISMISS_SIZE = { sm: 16, md: 18, lg: 20 } as const;\n\n// ─── Color resolution ─────────────────────────────────────────────────────────\n\ninterface ChipColors {\n bg: string;\n text: string;\n border: string;\n selectedBg: string;\n selectedText: string;\n}\n\nfunction useChipColors(\n variant: ChipVariant,\n customColor: string | undefined,\n isDark: boolean,\n primaryColor: string,\n): ChipColors {\n const accent = customColor ?? primaryColor;\n\n switch (variant) {\n case 'solid':\n return {\n bg: isDark ? 'rgba(255,255,255,0.10)' : 'rgba(0,0,0,0.06)',\n text: isDark ? '#e2e8f0' : '#1e293b',\n border: 'transparent',\n selectedBg: accent,\n selectedText: '#fff',\n };\n case 'outline':\n return {\n bg: 'transparent',\n text: isDark ? '#cbd5e1' : '#374151',\n border: isDark ? 'rgba(255,255,255,0.22)' : 'rgba(0,0,0,0.18)',\n selectedBg: accent,\n selectedText: '#fff',\n };\n case 'subtle':\n return {\n bg: isDark ? 'rgba(99,102,241,0.15)' : 'rgba(99,102,241,0.10)',\n text: isDark ? '#a5b4fc' : '#4f46e5',\n border: 'transparent',\n selectedBg: accent,\n selectedText: '#fff',\n };\n case 'glass':\n return {\n bg: isDark ? 'rgba(255,255,255,0.08)' : 'rgba(255,255,255,0.55)',\n text: isDark ? '#e2e8f0' : '#1e293b',\n border: isDark ? 'rgba(255,255,255,0.15)' : 'rgba(255,255,255,0.70)',\n selectedBg: accent,\n selectedText: '#fff',\n };\n }\n}\n\n// ─── Dismiss button ───────────────────────────────────────────────────────────\n\ninterface DismissButtonProps {\n onPress: () => void;\n size: 'sm' | 'md' | 'lg';\n color: string;\n}\n\nconst DismissButton = React.memo<DismissButtonProps>(({ onPress, size, color }) => {\n const dim = DISMISS_SIZE[size];\n return (\n <Pressable\n onPress={onPress}\n hitSlop={6}\n accessibilityLabel=\"Dismiss\"\n accessibilityRole=\"button\"\n style={[\n styles.dismiss,\n { width: dim, height: dim, borderRadius: dim / 2 },\n ]}\n >\n <Text style={[styles.dismissText, { fontSize: dim * 0.55, color }]}>\n ✕\n </Text>\n </Pressable>\n );\n});\nDismissButton.displayName = 'Chip.DismissButton';\n\n// ─── Chip ─────────────────────────────────────────────────────────────────────\n\nexport const Chip = React.memo<ChipProps>(\n ({\n label,\n avatar,\n icon,\n trailingIcon,\n onDismiss,\n isSelected = false,\n onPress,\n variant = 'solid',\n size = 'md',\n color,\n glass = false,\n isDisabled = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const resolvedVariant: ChipVariant = glass ? 'glass' : variant;\n const colors = useChipColors(resolvedVariant, color, isDark, theme.colors.primary);\n\n const { animatedStyle, handlers } = usePressAnimation({\n pressedScale: 0.97,\n pressedOpacity: 0.85,\n disabled: isDisabled || !onPress,\n });\n\n const height = CHIP_HEIGHT[size];\n const fontSize = CHIP_FONT[size];\n const px = CHIP_PADDING[size];\n const avatarSz = AVATAR_SIZE[size];\n\n const activeBg = isSelected ? colors.selectedBg : colors.bg;\n const activeText = isSelected ? colors.selectedText : colors.text;\n const activeBorder = isSelected ? 'transparent' : colors.border;\n\n const inner = (\n <View\n style={[\n styles.row,\n {\n height,\n borderRadius: height / 2,\n paddingHorizontal: px,\n backgroundColor: resolvedVariant === 'glass' ? 'transparent' : activeBg,\n borderWidth: activeBorder !== 'transparent' ? 1 : 0,\n borderColor: activeBorder,\n opacity: isDisabled ? 0.45 : 1,\n },\n ]}\n >\n {/* Avatar */}\n {avatar != null && (\n <View\n style={[\n styles.avatarSlot,\n { width: avatarSz, height: avatarSz, borderRadius: avatarSz / 2 },\n { marginRight: 6 },\n ]}\n >\n {avatar}\n </View>\n )}\n\n {/* Leading icon */}\n {icon != null && avatar == null && (\n <View style={[styles.iconSlot, { marginRight: 4 }]}>{icon}</View>\n )}\n\n {/* Label */}\n <Text\n style={[styles.label, { fontSize, color: activeText }]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {label}\n </Text>\n\n {/* Trailing icon */}\n {trailingIcon != null && onDismiss == null && (\n <View style={[styles.iconSlot, { marginLeft: 4 }]}>{trailingIcon}</View>\n )}\n\n {/* Dismiss button */}\n {onDismiss != null && (\n <DismissButton\n onPress={onDismiss}\n size={size}\n color={activeText}\n />\n )}\n </View>\n );\n\n const glassInner = resolvedVariant === 'glass' ? (\n <GlassView\n borderRadius={height / 2}\n style={{ overflow: 'hidden' }}\n contentStyle={[\n styles.row,\n {\n height,\n paddingHorizontal: px,\n opacity: isDisabled ? 0.45 : 1,\n },\n ]}\n >\n {avatar != null && (\n <View\n style={[\n styles.avatarSlot,\n { width: avatarSz, height: avatarSz, borderRadius: avatarSz / 2, marginRight: 6 },\n ]}\n >\n {avatar}\n </View>\n )}\n {icon != null && avatar == null && (\n <View style={[styles.iconSlot, { marginRight: 4 }]}>{icon}</View>\n )}\n <Text\n style={[styles.label, { fontSize, color: isSelected ? '#fff' : colors.text }]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {label}\n </Text>\n {trailingIcon != null && onDismiss == null && (\n <View style={[styles.iconSlot, { marginLeft: 4 }]}>{trailingIcon}</View>\n )}\n {onDismiss != null && (\n <DismissButton\n onPress={onDismiss}\n size={size}\n color={isSelected ? '#fff' : colors.text}\n />\n )}\n </GlassView>\n ) : null;\n\n if (onPress) {\n return (\n <Pressable\n onPress={onPress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSelected, disabled: isDisabled }}\n >\n <Animated.View style={[animatedStyle, style]}>\n {glassInner ?? inner}\n </Animated.View>\n </Pressable>\n );\n }\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n {glassInner ?? inner}\n </Animated.View>\n );\n },\n);\nChip.displayName = 'Chip';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n overflow: 'hidden',\n },\n avatarSlot: {\n overflow: 'hidden',\n alignItems: 'center',\n justifyContent: 'center',\n },\n iconSlot: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n label: {\n fontWeight: '500',\n letterSpacing: -0.1,\n },\n dismiss: {\n marginLeft: 4,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0,0,0,0.12)',\n },\n dismissText: {\n fontWeight: '600',\n lineHeight: undefined,\n },\n});\n","import React from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { usePressAnimation } from 'reactnatively-animations';\nimport type { ListItemProps } from './List.types';\n\nexport const ListItem = React.memo<ListItemProps>(\n ({\n title,\n subtitle,\n description,\n leading,\n trailing,\n onPress,\n onLongPress,\n isDisabled = false,\n glass = false,\n showDivider = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const { animatedStyle, handlers } = usePressAnimation({\n pressedScale: 0.99,\n pressedOpacity: 0.80,\n disabled: isDisabled || (!onPress && !onLongPress),\n });\n\n const dividerColor = isDark\n ? 'rgba(255,255,255,0.08)'\n : 'rgba(0,0,0,0.07)';\n\n const content = (\n <>\n {/* Leading slot */}\n {leading != null && (\n <View style={styles.leadingSlot}>{leading}</View>\n )}\n\n {/* Text block */}\n <View style={styles.textBlock}>\n <Text\n style={[styles.title, { color: isDisabled ? theme.colors.textDisabled : theme.colors.text }]}\n numberOfLines={2}\n >\n {title}\n </Text>\n\n {subtitle != null && (\n <Text\n style={[styles.subtitle, { color: isDisabled ? theme.colors.textDisabled : theme.colors.textSecondary }]}\n numberOfLines={1}\n >\n {subtitle}\n </Text>\n )}\n\n {description != null && (\n <Text\n style={[styles.description, { color: theme.colors.textMuted }]}\n numberOfLines={3}\n >\n {description}\n </Text>\n )}\n </View>\n\n {/* Trailing slot */}\n {trailing != null && (\n <View style={styles.trailingSlot}>{trailing}</View>\n )}\n </>\n );\n\n const rowStyle = [\n styles.row,\n showDivider && { borderBottomWidth: StyleSheet.hairlineWidth, borderBottomColor: dividerColor },\n { opacity: isDisabled ? 0.5 : 1 },\n style,\n ];\n\n if (glass) {\n const inner = (\n <GlassView\n borderRadius={12}\n style={styles.glassContainer}\n contentStyle={styles.row}\n >\n {content}\n </GlassView>\n );\n\n if (onPress || onLongPress) {\n return (\n <Pressable\n onPress={onPress}\n onLongPress={onLongPress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: isDisabled }}\n >\n <Animated.View style={[animatedStyle, style, { opacity: isDisabled ? 0.5 : 1 }]}>\n {inner}\n </Animated.View>\n </Pressable>\n );\n }\n\n return (\n <View style={[style, { opacity: isDisabled ? 0.5 : 1 }]}>\n {inner}\n </View>\n );\n }\n\n if (onPress || onLongPress) {\n return (\n <Pressable\n onPress={onPress}\n onLongPress={onLongPress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: isDisabled }}\n >\n <Animated.View style={[animatedStyle, rowStyle]}>\n {content}\n </Animated.View>\n </Pressable>\n );\n }\n\n return <View style={rowStyle}>{content}</View>;\n },\n);\nListItem.displayName = 'ListItem';\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 13,\n minHeight: 56,\n },\n glassContainer: {\n marginHorizontal: 0,\n },\n leadingSlot: {\n marginRight: 12,\n alignItems: 'center',\n justifyContent: 'center',\n },\n textBlock: {\n flex: 1,\n gap: 2,\n },\n title: {\n fontSize: 15,\n fontWeight: '500',\n lineHeight: 20,\n letterSpacing: -0.2,\n },\n subtitle: {\n fontSize: 13,\n fontWeight: '400',\n lineHeight: 18,\n },\n description: {\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 17,\n marginTop: 2,\n },\n trailingSlot: {\n marginLeft: 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","import React, { useCallback } from 'react';\nimport { View, Text, FlatList, SectionList, StyleSheet } from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { ListItem } from './ListItem';\nimport type { ListProps, ListItemProps, ListSection } from './List.types';\n\n// ─── Section header ───────────────────────────────────────────────────────────\n\ninterface SectionHeaderProps {\n title?: string;\n}\n\nconst SectionHeader = React.memo<SectionHeaderProps>(({ title }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n if (!title) return null;\n\n return (\n <View\n style={[\n styles.sectionHeader,\n {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: isDark\n ? 'rgba(255,255,255,0.08)'\n : 'rgba(0,0,0,0.07)',\n backgroundColor: isDark ? theme.colors.backgroundDeep : theme.colors.background,\n },\n ]}\n >\n <Text style={[styles.sectionTitle, { color: theme.colors.textSecondary }]}>\n {title.toUpperCase()}\n </Text>\n </View>\n );\n});\nSectionHeader.displayName = 'List.SectionHeader';\n\n// ─── List ─────────────────────────────────────────────────────────────────────\n\nconst ListRoot = React.memo<ListProps>(\n ({\n items,\n sections,\n keyExtractor,\n renderItem: customRenderItem,\n glass = false,\n style,\n }) => {\n const defaultKeyExtractor = useCallback(\n (item: ListItemProps, index: number) =>\n keyExtractor ? keyExtractor(item, index) : (item.title + index),\n [keyExtractor],\n );\n\n const defaultRenderItem = useCallback(\n ({ item }: { item: ListItemProps }) => {\n if (customRenderItem) {\n return <>{customRenderItem(item)}</>;\n }\n return <ListItem {...item} glass={glass} />;\n },\n [customRenderItem, glass],\n );\n\n const renderSectionHeader = useCallback(\n ({ section }: { section: ListSection }) => (\n <SectionHeader title={section.title} />\n ),\n [],\n );\n\n const container = sections ? (\n <SectionList<ListItemProps, ListSection>\n sections={sections}\n keyExtractor={defaultKeyExtractor}\n renderItem={defaultRenderItem}\n renderSectionHeader={renderSectionHeader}\n stickySectionHeadersEnabled={false}\n showsVerticalScrollIndicator={false}\n style={glass ? undefined : style}\n contentContainerStyle={styles.content}\n />\n ) : (\n <FlatList<ListItemProps>\n data={items ?? []}\n keyExtractor={defaultKeyExtractor}\n renderItem={defaultRenderItem}\n showsVerticalScrollIndicator={false}\n style={glass ? undefined : style}\n contentContainerStyle={styles.content}\n />\n );\n\n if (glass) {\n return (\n <GlassView\n borderRadius={16}\n style={style}\n contentStyle={styles.glassContent}\n >\n {container}\n </GlassView>\n );\n }\n\n return container;\n },\n);\nListRoot.displayName = 'List';\n\n// ─── Compound export ──────────────────────────────────────────────────────────\n\nexport const List = Object.assign(ListRoot, { Item: ListItem });\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n content: {\n flexGrow: 1,\n },\n glassContent: {\n overflow: 'hidden',\n },\n sectionHeader: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n sectionTitle: {\n fontSize: 11,\n fontWeight: '600',\n letterSpacing: 0.8,\n },\n});\n","import React, {\n createContext,\n useContext,\n useState,\n useCallback,\n useRef,\n} from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type {\n AccordionProps,\n AccordionItemProps,\n AccordionContextValue,\n} from './Accordion.types';\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nconst AccordionContext = createContext<AccordionContextValue>({\n openItems: [],\n toggle: () => {},\n glass: false,\n});\n\nfunction useAccordion() {\n return useContext(AccordionContext);\n}\n\n// ─── AccordionItem ────────────────────────────────────────────────────────────\n\nconst AccordionItem = React.memo<AccordionItemProps>(\n ({ value, title, children, icon, isDisabled = false }) => {\n const { openItems, toggle, glass } = useAccordion();\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const isOpen = openItems.includes(value);\n\n // Chevron rotation\n const rotation = useSharedValue(isOpen ? 1 : 0);\n // Content measured height\n const measured = useRef(0);\n const maxHeight = useSharedValue(isOpen ? 9999 : 0);\n const opacity = useSharedValue(isOpen ? 1 : 0);\n\n const handlePress = useCallback(() => {\n if (isDisabled) return;\n const opening = !isOpen;\n rotation.value = withSpring(opening ? 1 : 0, SPRING_SNAPPY);\n maxHeight.value = withSpring(\n opening ? Math.max(measured.current, 300) : 0,\n SPRING_SNAPPY,\n );\n opacity.value = withSpring(opening ? 1 : 0, SPRING_SNAPPY);\n toggle(value);\n }, [isDisabled, isOpen, toggle, value]);\n\n const chevronStyle = useAnimatedStyle(() => ({\n transform: [\n { rotate: `${interpolate(rotation.value, [0, 1], [0, 90])}deg` },\n ],\n }));\n\n const contentStyle = useAnimatedStyle(() => ({\n maxHeight: maxHeight.value,\n opacity: opacity.value,\n overflow: 'hidden',\n }));\n\n const borderColor = isDark\n ? 'rgba(255,255,255,0.08)'\n : 'rgba(0,0,0,0.07)';\n\n const triggerBg = isDark\n ? 'rgba(255,255,255,0.04)'\n : 'rgba(0,0,0,0.02)';\n\n const trigger = (\n <Pressable\n onPress={handlePress}\n disabled={isDisabled}\n accessible\n accessibilityRole=\"button\"\n accessibilityState={{ expanded: isOpen, disabled: isDisabled }}\n style={[\n styles.trigger,\n {\n backgroundColor: isOpen ? triggerBg : 'transparent',\n opacity: isDisabled ? 0.45 : 1,\n borderBottomWidth: isOpen ? StyleSheet.hairlineWidth : 0,\n borderBottomColor: borderColor,\n },\n ]}\n >\n {/* Leading icon */}\n {icon != null && (\n <View style={styles.triggerIcon}>{icon}</View>\n )}\n\n {/* Title */}\n <Text\n style={[styles.triggerTitle, { color: theme.colors.text, flex: 1 }]}\n numberOfLines={2}\n >\n {title}\n </Text>\n\n {/* Chevron */}\n <Animated.View style={[styles.chevronWrap, chevronStyle]}>\n <Text style={[styles.chevron, { color: theme.colors.textMuted }]}>\n ›\n </Text>\n </Animated.View>\n </Pressable>\n );\n\n const contentInner = (\n <Animated.View style={contentStyle}>\n <View\n style={styles.contentPad}\n onLayout={(e) => {\n const h = e.nativeEvent.layout.height;\n if (h > 0) measured.current = h;\n }}\n >\n {children}\n </View>\n </Animated.View>\n );\n\n if (glass) {\n return (\n <GlassView\n borderRadius={12}\n style={styles.glassItem}\n contentStyle={styles.glassContent}\n >\n {trigger}\n {contentInner}\n </GlassView>\n );\n }\n\n return (\n <View\n style={[\n styles.item,\n {\n borderWidth: StyleSheet.hairlineWidth,\n borderColor,\n borderRadius: 12,\n },\n ]}\n >\n {trigger}\n {contentInner}\n </View>\n );\n },\n);\nAccordionItem.displayName = 'Accordion.Item';\n\n// ─── AccordionRoot ────────────────────────────────────────────────────────────\n\nconst AccordionRoot = React.memo<AccordionProps>(\n ({\n allowMultiple = false,\n defaultValue,\n value: controlledValue,\n onChange,\n glass = false,\n children,\n style,\n }) => {\n const [internalOpen, setInternalOpen] = useState<string[]>(() => {\n if (defaultValue == null) return [];\n return Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n });\n\n const openItems = controlledValue != null\n ? (Array.isArray(controlledValue) ? controlledValue : [controlledValue])\n : internalOpen;\n\n const toggle = useCallback(\n (val: string) => {\n let next: string[];\n if (openItems.includes(val)) {\n next = openItems.filter((v) => v !== val);\n } else {\n next = allowMultiple ? [...openItems, val] : [val];\n }\n\n if (controlledValue == null) {\n setInternalOpen(next);\n }\n onChange?.(allowMultiple ? next : (next[0] ?? ''));\n },\n [openItems, allowMultiple, controlledValue, onChange],\n );\n\n return (\n <AccordionContext.Provider value={{ openItems, toggle, glass }}>\n <View style={[styles.root, style]}>{children}</View>\n </AccordionContext.Provider>\n );\n },\n);\nAccordionRoot.displayName = 'Accordion';\n\n// ─── Compound export ──────────────────────────────────────────────────────────\n\nexport const Accordion = Object.assign(AccordionRoot, { Item: AccordionItem });\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n root: {\n gap: 8,\n },\n item: {\n overflow: 'hidden',\n },\n glassItem: {\n overflow: 'hidden',\n },\n glassContent: {\n overflow: 'hidden',\n },\n trigger: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 14,\n minHeight: 52,\n },\n triggerIcon: {\n marginRight: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n triggerTitle: {\n fontSize: 15,\n fontWeight: '500',\n letterSpacing: -0.2,\n lineHeight: 21,\n },\n chevronWrap: {\n marginLeft: 8,\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n },\n chevron: {\n fontSize: 22,\n fontWeight: '300',\n lineHeight: 22,\n marginTop: -1,\n },\n contentPad: {\n paddingHorizontal: 16,\n paddingBottom: 16,\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport { View, Text, StyleSheet, Animated as RNAnimated } from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport type { TimelineProps, TimelineItem, TimelineItemStatus } from './Timeline.types';\n\n// ─── Dot sizes ────────────────────────────────────────────────────────────────\n\nconst DOT_SIZE = 14;\nconst DOT_OUTER_SIZE = 22; // pulsing ring diameter\n\n// ─── Pulsing dot for \"active\" status ─────────────────────────────────────────\n\nconst PulsingDot = React.memo<{ color: string }>(({ color }) => {\n const scale = useRef(new RNAnimated.Value(1)).current;\n const opacity = useRef(new RNAnimated.Value(0.8)).current;\n\n useEffect(() => {\n const anim = RNAnimated.loop(\n RNAnimated.parallel([\n RNAnimated.sequence([\n RNAnimated.timing(scale, { toValue: 1.5, duration: 900, useNativeDriver: true }),\n RNAnimated.timing(scale, { toValue: 1.0, duration: 900, useNativeDriver: true }),\n ]),\n RNAnimated.sequence([\n RNAnimated.timing(opacity, { toValue: 0.3, duration: 900, useNativeDriver: true }),\n RNAnimated.timing(opacity, { toValue: 0.8, duration: 900, useNativeDriver: true }),\n ]),\n ]),\n );\n anim.start();\n return () => anim.stop();\n }, []);\n\n return (\n <View style={styles.dotOuter}>\n {/* Pulsing ring */}\n <RNAnimated.View\n style={[\n styles.pulseRing,\n {\n backgroundColor: color,\n transform: [{ scale }],\n opacity,\n },\n ]}\n />\n {/* Solid dot */}\n <View style={[styles.dot, { backgroundColor: color }]} />\n </View>\n );\n});\nPulsingDot.displayName = 'Timeline.PulsingDot';\n\n// ─── Static dot ───────────────────────────────────────────────────────────────\n\nconst StaticDot = React.memo<{ status: TimelineItemStatus; primaryColor: string }>(\n ({ status, primaryColor }) => {\n const isDark = useIsDark();\n const color =\n status === 'complete' ? primaryColor\n : status === 'pending' ? (isDark ? '#4b5563' : '#d1d5db')\n : primaryColor;\n\n if (status === 'active') {\n return <PulsingDot color={primaryColor} />;\n }\n\n return (\n <View style={styles.dotOuter}>\n <View\n style={[\n styles.dot,\n { backgroundColor: color },\n status === 'pending' && styles.dotPending,\n ]}\n />\n </View>\n );\n },\n);\nStaticDot.displayName = 'Timeline.Dot';\n\n// ─── Single timeline row ──────────────────────────────────────────────────────\n\ninterface TimelineRowProps {\n item: TimelineItem;\n isLast: boolean;\n primaryColor: string;\n connectorColorAbove: string;\n connectorColorBelow: string;\n}\n\nconst TimelineRow = React.memo<TimelineRowProps>(\n ({ item, isLast, primaryColor, connectorColorAbove, connectorColorBelow }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n const status = item.status ?? 'pending';\n\n const isActive = status === 'active';\n const isComplete = status === 'complete';\n\n // Line above = primary if complete or active, gray otherwise\n const lineColor = isComplete || isActive ? primaryColor : connectorColorBelow;\n\n return (\n <View style={styles.row}>\n {/* Left column: dot + connector */}\n <View style={styles.leftCol}>\n {/* Connector line above dot */}\n <View\n style={[\n styles.connector,\n { backgroundColor: connectorColorAbove },\n ]}\n />\n\n {/* Dot / icon */}\n {item.icon ? (\n <View\n style={[\n styles.iconDot,\n { backgroundColor: isComplete ? primaryColor : (isDark ? '#374151' : '#e5e7eb') },\n ]}\n >\n {item.icon}\n </View>\n ) : (\n <StaticDot status={status} primaryColor={primaryColor} />\n )}\n\n {/* Connector line below dot */}\n {!isLast && (\n <View\n style={[\n styles.connectorBottom,\n { backgroundColor: lineColor },\n ]}\n />\n )}\n </View>\n\n {/* Right column: timestamp + title + description */}\n <View style={styles.rightCol}>\n {item.timestamp != null && (\n <Text style={[styles.timestamp, { color: theme.colors.textMuted }]}>\n {item.timestamp}\n </Text>\n )}\n <Text style={[styles.title, { color: theme.colors.text }]}>\n {item.title}\n </Text>\n {item.description != null && (\n <Text style={[styles.description, { color: theme.colors.textSecondary }]}>\n {item.description}\n </Text>\n )}\n </View>\n </View>\n );\n },\n);\nTimelineRow.displayName = 'Timeline.Row';\n\n// ─── Timeline ─────────────────────────────────────────────────────────────────\n\nexport const Timeline = React.memo<TimelineProps>(\n ({ items, glass = false, style }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const primaryColor = theme.colors.primary;\n const pendingLine = isDark ? '#374151' : '#e5e7eb';\n\n // Find the last complete/active index to determine where line color switches\n const lastActiveIdx = items.reduce((acc, item, i) => {\n const s = item.status ?? 'pending';\n return s === 'complete' || s === 'active' ? i : acc;\n }, -1);\n\n const inner = (\n <View>\n {items.map((item, index) => {\n const connAbove = index <= lastActiveIdx ? primaryColor : pendingLine;\n const connBelow = index < lastActiveIdx ? primaryColor : pendingLine;\n\n return (\n <TimelineRow\n key={index}\n item={item}\n isLast={index === items.length - 1}\n primaryColor={primaryColor}\n connectorColorAbove={index === 0 ? 'transparent' : connAbove}\n connectorColorBelow={connBelow}\n />\n );\n })}\n </View>\n );\n\n if (glass) {\n return (\n <GlassView\n borderRadius={16}\n style={style}\n contentStyle={styles.glassPad}\n >\n {inner}\n </GlassView>\n );\n }\n\n return <View style={style}>{inner}</View>;\n },\n);\nTimeline.displayName = 'Timeline';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n minHeight: 60,\n },\n leftCol: {\n width: DOT_OUTER_SIZE,\n alignItems: 'center',\n marginRight: 14,\n },\n connector: {\n width: 2,\n height: 16,\n borderRadius: 1,\n },\n connectorBottom: {\n flex: 1,\n width: 2,\n minHeight: 12,\n borderRadius: 1,\n marginTop: 2,\n },\n dotOuter: {\n width: DOT_OUTER_SIZE,\n height: DOT_OUTER_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n },\n dot: {\n width: DOT_SIZE,\n height: DOT_SIZE,\n borderRadius: DOT_SIZE / 2,\n position: 'absolute',\n },\n dotPending: {\n borderWidth: 2,\n borderColor: 'transparent',\n },\n pulseRing: {\n width: DOT_OUTER_SIZE,\n height: DOT_OUTER_SIZE,\n borderRadius: DOT_OUTER_SIZE / 2,\n position: 'absolute',\n },\n iconDot: {\n width: DOT_OUTER_SIZE,\n height: DOT_OUTER_SIZE,\n borderRadius: DOT_OUTER_SIZE / 2,\n alignItems: 'center',\n justifyContent: 'center',\n },\n rightCol: {\n flex: 1,\n paddingBottom: 16,\n gap: 2,\n },\n timestamp: {\n fontSize: 11,\n fontWeight: '500',\n letterSpacing: 0.2,\n textAlign: 'right',\n alignSelf: 'flex-end',\n marginBottom: 2,\n },\n title: {\n fontSize: 14,\n fontWeight: '600',\n lineHeight: 20,\n letterSpacing: -0.1,\n },\n description: {\n fontSize: 13,\n fontWeight: '400',\n lineHeight: 18,\n marginTop: 2,\n },\n glassPad: {\n padding: 16,\n },\n});\n","import React, {\n useRef,\n useState,\n useEffect,\n useCallback,\n} from 'react';\nimport {\n View,\n FlatList,\n Dimensions,\n StyleSheet,\n type ViewToken,\n} from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme } from 'reactnatively-theme';\nimport type { CarouselProps } from './Carousel.types';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\n\n// ─── Dot indicator ────────────────────────────────────────────────────────────\n\ninterface DotsProps {\n count: number;\n activeIndex: number;\n primaryColor: string;\n}\n\nconst Dots = React.memo<DotsProps>(({ count, activeIndex, primaryColor }) => {\n if (count <= 1) return null;\n\n return (\n <View style={styles.dotsRow}>\n {Array.from({ length: count }).map((_, i) => {\n const isActive = i === activeIndex;\n return (\n <View\n key={i}\n style={[\n styles.dot,\n {\n backgroundColor: isActive\n ? primaryColor\n : 'rgba(150,150,150,0.35)',\n width: isActive ? 20 : 8,\n height: 8,\n },\n ]}\n />\n );\n })}\n </View>\n );\n});\nDots.displayName = 'Carousel.Dots';\n\n// ─── Carousel ─────────────────────────────────────────────────────────────────\n\nexport const Carousel = React.memo<CarouselProps>(\n ({\n data,\n renderItem,\n itemWidth = SCREEN_WIDTH,\n gap = 0,\n showDots = true,\n autoPlay = false,\n autoPlayInterval = 3000,\n loop = false,\n onIndexChange,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n const listRef = useRef<FlatList>(null);\n const [activeIdx, setActiveIdx] = useState(0);\n const timerRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n const stepSize = itemWidth + gap;\n\n // Viewability config — item must be ≥50% visible to count as \"active\"\n const viewabilityConfig = useRef({\n itemVisiblePercentThreshold: 50,\n });\n\n const onViewableItemsChanged = useRef(\n ({ viewableItems }: { viewableItems: ViewToken[] }) => {\n if (viewableItems.length > 0 && viewableItems[0]?.index != null) {\n const idx = viewableItems[0].index;\n setActiveIdx(idx);\n onIndexChange?.(idx);\n }\n },\n );\n\n // AutoPlay\n const advance = useCallback(() => {\n setActiveIdx((prev) => {\n const next = loop\n ? (prev + 1) % data.length\n : Math.min(prev + 1, data.length - 1);\n listRef.current?.scrollToIndex({ index: next, animated: true });\n return next;\n });\n }, [data.length, loop]);\n\n useEffect(() => {\n if (!autoPlay || data.length <= 1) return;\n timerRef.current = setInterval(advance, autoPlayInterval);\n return () => {\n if (timerRef.current) clearInterval(timerRef.current);\n };\n }, [autoPlay, autoPlayInterval, advance, data.length]);\n\n const keyExtractor = useCallback(\n (_: any, index: number) => String(index),\n [],\n );\n\n const renderListItem = useCallback(\n ({ item, index }: { item: any; index: number }) => (\n <View\n style={{\n width: itemWidth,\n marginRight: index < data.length - 1 ? gap : 0,\n }}\n >\n {renderItem({ item, index })}\n </View>\n ),\n [renderItem, itemWidth, gap, data.length],\n );\n\n const list = (\n <FlatList\n ref={listRef}\n data={data}\n horizontal\n keyExtractor={keyExtractor}\n renderItem={renderListItem}\n snapToInterval={stepSize}\n snapToAlignment=\"center\"\n decelerationRate=\"fast\"\n showsHorizontalScrollIndicator={false}\n pagingEnabled={gap === 0 && itemWidth === SCREEN_WIDTH}\n onViewableItemsChanged={onViewableItemsChanged.current}\n viewabilityConfig={viewabilityConfig.current}\n getItemLayout={(_, index) => ({\n length: stepSize,\n offset: stepSize * index,\n index,\n })}\n />\n );\n\n const container = glass ? (\n <GlassView\n borderRadius={16}\n style={style}\n contentStyle={styles.glassContent}\n >\n {list}\n {showDots && (\n <Dots\n count={data.length}\n activeIndex={activeIdx}\n primaryColor={theme.colors.primary}\n />\n )}\n </GlassView>\n ) : (\n <View style={style}>\n {list}\n {showDots && (\n <Dots\n count={data.length}\n activeIndex={activeIdx}\n primaryColor={theme.colors.primary}\n />\n )}\n </View>\n );\n\n return container;\n },\n);\nCarousel.displayName = 'Carousel';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n glassContent: {\n overflow: 'hidden',\n },\n dotsRow: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 6,\n paddingVertical: 10,\n },\n dot: {\n borderRadius: 4,\n },\n});\n","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { useEntranceAnimation } from 'reactnatively-animations';\nimport type { StatsCardProps, TrendDirection } from './StatsCard.types';\n\n// ─── Trend indicator ──────────────────────────────────────────────────────────\n\nconst TREND_ARROW: Record<TrendDirection, string> = {\n up: '↑',\n down: '↓',\n neutral: '→',\n};\n\ninterface TrendProps {\n value: string;\n direction: TrendDirection;\n}\n\nconst TrendBadge = React.memo<TrendProps>(({ value, direction }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const trendColor =\n direction === 'up'\n ? (isDark ? '#4ade80' : '#16a34a')\n : direction === 'down'\n ? (isDark ? '#f87171' : '#dc2626')\n : (isDark ? '#94a3b8' : '#64748b');\n\n const trendBg =\n direction === 'up'\n ? (isDark ? 'rgba(74,222,128,0.12)' : 'rgba(22,163,74,0.10)')\n : direction === 'down'\n ? (isDark ? 'rgba(248,113,113,0.12)' : 'rgba(220,38,38,0.10)')\n : (isDark ? 'rgba(148,163,184,0.12)' : 'rgba(100,116,139,0.10)');\n\n return (\n <View style={[styles.trendBadge, { backgroundColor: trendBg }]}>\n <Text style={[styles.trendText, { color: trendColor }]}>\n {TREND_ARROW[direction]} {value}\n </Text>\n </View>\n );\n});\nTrendBadge.displayName = 'StatsCard.Trend';\n\n// ─── StatsCard ────────────────────────────────────────────────────────────────\n\nexport const StatsCard = React.memo<StatsCardProps>(\n ({\n value,\n label,\n prefix,\n suffix,\n trend,\n icon,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n\n const entranceStyle = useEntranceAnimation({ variant: 'slideUp' });\n\n const cardContent = (\n <>\n {/* Top row: label + icon */}\n <View style={styles.topRow}>\n <Text\n style={[styles.label, { color: theme.colors.textSecondary }]}\n numberOfLines={1}\n >\n {label}\n </Text>\n {icon != null && (\n <View style={styles.iconSlot}>{icon}</View>\n )}\n </View>\n\n {/* Value */}\n <Text\n style={[styles.value, { color: theme.colors.text }]}\n numberOfLines={1}\n adjustsFontSizeToFit\n >\n {prefix && (\n <Text style={[styles.valueAffix, { color: theme.colors.textSecondary }]}>\n {prefix}\n </Text>\n )}\n {String(value)}\n {suffix && (\n <Text style={[styles.valueAffix, { color: theme.colors.textSecondary }]}>\n {suffix}\n </Text>\n )}\n </Text>\n\n {/* Trend */}\n {trend != null && (\n <TrendBadge value={trend.value} direction={trend.direction} />\n )}\n </>\n );\n\n if (glass) {\n return (\n <Animated.View style={[entranceStyle, style]}>\n <GlassView\n borderRadius={16}\n contentStyle={styles.cardPad}\n >\n {cardContent}\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View\n style={[\n entranceStyle,\n styles.card,\n {\n backgroundColor: theme.colors.surface,\n borderColor: theme.colors.border,\n },\n style,\n ]}\n >\n {cardContent}\n </Animated.View>\n );\n },\n);\nStatsCard.displayName = 'StatsCard';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 16,\n padding: 20,\n borderWidth: StyleSheet.hairlineWidth,\n },\n cardPad: {\n padding: 20,\n },\n topRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n marginBottom: 8,\n },\n label: {\n fontSize: 13,\n fontWeight: '500',\n letterSpacing: 0.1,\n flex: 1,\n },\n iconSlot: {\n marginLeft: 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n value: {\n fontSize: 32,\n fontWeight: '700',\n letterSpacing: -1,\n lineHeight: 38,\n marginBottom: 10,\n },\n valueAffix: {\n fontSize: 20,\n fontWeight: '500',\n letterSpacing: -0.5,\n },\n trendBadge: {\n alignSelf: 'flex-start',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 20,\n },\n trendText: {\n fontSize: 12,\n fontWeight: '600',\n letterSpacing: 0.1,\n },\n});\n","import React, { useState, useCallback } from 'react';\nimport {\n View,\n Text,\n ScrollView,\n Pressable,\n StyleSheet,\n Platform,\n} from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport type { TableProps, TableColumn } from './Table.types';\n\n// ─── Sort indicator ───────────────────────────────────────────────────────────\n\ninterface SortIconProps {\n active: boolean;\n direction: 'asc' | 'desc';\n color: string;\n}\n\nconst SortIcon = React.memo<SortIconProps>(({ active, direction, color }) => (\n <Text\n style={[\n styles.sortIcon,\n { color: active ? color : 'rgba(150,150,150,0.45)' },\n ]}\n >\n {active ? (direction === 'asc' ? '↑' : '↓') : '↕'}\n </Text>\n));\nSortIcon.displayName = 'Table.SortIcon';\n\n// ─── Cell alignment helper ────────────────────────────────────────────────────\n\nfunction textAlign(align: TableColumn['align']): 'left' | 'center' | 'right' {\n return align ?? 'left';\n}\n\n// ─── Table ────────────────────────────────────────────────────────────────────\n\nexport const Table = React.memo<TableProps>(\n ({\n columns,\n data,\n onSort,\n glass = false,\n striped = false,\n bordered = false,\n stickyHeader = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const [sortKey, setSortKey] = useState<string | null>(null);\n const [sortDir, setSortDir] = useState<'asc' | 'desc'>('asc');\n\n const handleHeaderPress = useCallback(\n (col: TableColumn) => {\n if (!col.sortable) return;\n const next: 'asc' | 'desc' =\n sortKey === col.key && sortDir === 'asc' ? 'desc' : 'asc';\n setSortKey(col.key);\n setSortDir(next);\n onSort?.(col.key, next);\n },\n [sortKey, sortDir, onSort],\n );\n\n const borderColor = isDark\n ? 'rgba(255,255,255,0.09)'\n : 'rgba(0,0,0,0.09)';\n\n const headerBg = isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.035)';\n\n const rowBg = (index: number) =>\n striped && index % 2 === 1\n ? (isDark ? 'rgba(255,255,255,0.03)' : 'rgba(0,0,0,0.025)')\n : 'transparent';\n\n const cellBorderStyle = bordered\n ? {\n borderRightWidth: StyleSheet.hairlineWidth,\n borderRightColor: borderColor,\n }\n : {};\n\n // ── Header row ────────────────────────────────────────────────────────────\n\n const headerRow = (\n <View\n style={[\n styles.headerRow,\n {\n backgroundColor: headerBg,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: borderColor,\n },\n stickyHeader && styles.stickyHeader,\n ]}\n >\n {columns.map((col, ci) => (\n <Pressable\n key={col.key}\n onPress={() => handleHeaderPress(col)}\n disabled={!col.sortable}\n style={[\n styles.headerCell,\n { width: col.width ?? 120 },\n ci < columns.length - 1 ? cellBorderStyle : {},\n ]}\n >\n <Text\n style={[\n styles.headerText,\n { color: theme.colors.textSecondary, textAlign: textAlign(col.align) },\n ]}\n numberOfLines={2}\n >\n {col.title}\n </Text>\n {col.sortable && (\n <SortIcon\n active={sortKey === col.key}\n direction={sortDir}\n color={theme.colors.primary}\n />\n )}\n </Pressable>\n ))}\n </View>\n );\n\n // ── Data rows ─────────────────────────────────────────────────────────────\n\n const dataRows = data.map((row, ri) => (\n <View\n key={ri}\n style={[\n styles.dataRow,\n { backgroundColor: rowBg(ri) },\n ri < data.length - 1 && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: borderColor,\n },\n ]}\n >\n {columns.map((col, ci) => {\n const cellValue = row[col.key];\n return (\n <View\n key={col.key}\n style={[\n styles.dataCell,\n { width: col.width ?? 120 },\n ci < columns.length - 1 ? cellBorderStyle : {},\n ]}\n >\n {col.renderCell ? (\n col.renderCell(cellValue, row)\n ) : (\n <Text\n style={[\n styles.cellText,\n { color: theme.colors.text, textAlign: textAlign(col.align) },\n ]}\n numberOfLines={3}\n >\n {cellValue == null ? '' : String(cellValue)}\n </Text>\n )}\n </View>\n );\n })}\n </View>\n ));\n\n // ── Outer border ──────────────────────────────────────────────────────────\n\n const outerBorder = bordered\n ? {\n borderWidth: StyleSheet.hairlineWidth,\n borderColor,\n borderRadius: 12,\n overflow: 'hidden' as const,\n }\n : { borderRadius: 12, overflow: 'hidden' as const };\n\n const tableInner = (\n <ScrollView horizontal showsHorizontalScrollIndicator={Platform.OS !== 'web'}>\n <View>\n {headerRow}\n <ScrollView\n nestedScrollEnabled\n showsVerticalScrollIndicator\n style={styles.bodyScroll}\n >\n {dataRows}\n </ScrollView>\n </View>\n </ScrollView>\n );\n\n if (glass) {\n return (\n <GlassView\n borderRadius={12}\n style={style}\n contentStyle={styles.glassContent}\n >\n {tableInner}\n </GlassView>\n );\n }\n\n return (\n <View style={[outerBorder, style]}>\n {tableInner}\n </View>\n );\n },\n);\nTable.displayName = 'Table';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n stickyHeader: {\n // On native, sticky positioning in ScrollView is done per-platform;\n // this flag just signals intent — full sticky requires SectionList headers\n },\n headerRow: {\n flexDirection: 'row',\n },\n headerCell: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 11,\n minHeight: 44,\n },\n headerText: {\n fontSize: 12,\n fontWeight: '600',\n letterSpacing: 0.4,\n flex: 1,\n },\n sortIcon: {\n fontSize: 14,\n marginLeft: 4,\n fontWeight: '700',\n },\n dataRow: {\n flexDirection: 'row',\n },\n dataCell: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n justifyContent: 'center',\n minHeight: 44,\n },\n cellText: {\n fontSize: 14,\n fontWeight: '400',\n lineHeight: 20,\n },\n bodyScroll: {\n maxHeight: 400,\n },\n glassContent: {\n overflow: 'hidden',\n },\n});\n","import React, { useState, useCallback } from 'react';\nimport type { ReactNode } from 'react';\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { useEntranceAnimation, useReducedMotion, TIMING_EXIT } from 'reactnatively-animations';\n\nexport type AlertStatus = 'info' | 'success' | 'warning' | 'error';\nexport type AlertVariant = 'subtle' | 'solid' | 'outline' | 'glass';\n\nexport interface AlertProps {\n status?: AlertStatus;\n variant?: AlertVariant;\n title?: string;\n description?: string;\n icon?: ReactNode;\n showIcon?: boolean;\n isDismissible?: boolean;\n onDismiss?: () => void;\n action?: { label: string; onPress: () => void };\n style?: StyleProp<ViewStyle>;\n children?: ReactNode;\n}\n\nconst STATUS_COLORS: Record<AlertStatus, string> = {\n info: '#06b6d4',\n success: '#10b981',\n warning: '#f59e0b',\n error: '#ef4444',\n};\n\nconst STATUS_ICONS: Record<AlertStatus, string> = {\n info: 'ℹ',\n success: '✓',\n warning: '⚠',\n error: '✕',\n};\n\nexport const Alert = React.memo<AlertProps>(\n ({\n status = 'info',\n variant = 'subtle',\n title,\n description,\n icon,\n showIcon = true,\n isDismissible = false,\n onDismiss,\n action,\n style,\n children,\n }) => {\n const isDark = useIsDark();\n const isReduced = useReducedMotion();\n const [visible, setVisible] = useState(true);\n const [mounted, setMounted] = useState(true);\n\n const exitOpacity = useSharedValue(1);\n const exitScale = useSharedValue(1);\n\n const entranceStyle = useEntranceAnimation({ variant: 'slideDown' });\n\n const handleDismiss = useCallback(() => {\n if (isReduced) {\n setMounted(false);\n onDismiss?.();\n return;\n }\n setVisible(false);\n exitOpacity.value = withTiming(0, TIMING_EXIT, () => {\n runOnJS(setMounted)(false);\n if (onDismiss) runOnJS(onDismiss)();\n });\n exitScale.value = withTiming(0.95, TIMING_EXIT);\n }, [isReduced, onDismiss, exitOpacity, exitScale]);\n\n const exitStyle = useAnimatedStyle(() => ({\n opacity: exitOpacity.value,\n transform: [{ scale: exitScale.value }],\n }));\n\n if (!mounted) return null;\n\n const accentColor = STATUS_COLORS[status];\n const iconChar = STATUS_ICONS[status];\n\n const containerStyle = resolveContainerStyle(variant, status, isDark);\n const textColor = resolveTextColor(variant, isDark);\n\n const inner = (\n <View style={styles.inner}>\n {showIcon && (\n <View style={[styles.iconWrap, variant === 'solid' ? styles.iconWrapSolid : { backgroundColor: `${accentColor}20` }]}>\n {icon != null ? (\n icon\n ) : (\n <Text style={[styles.iconText, { color: variant === 'solid' ? '#fff' : accentColor }]}>\n {iconChar}\n </Text>\n )}\n </View>\n )}\n\n <View style={styles.textBlock}>\n {title != null && (\n <Text style={[styles.title, { color: textColor }]} numberOfLines={2}>\n {title}\n </Text>\n )}\n {description != null && (\n <Text style={[styles.description, { color: variant === 'solid' ? 'rgba(255,255,255,0.85)' : isDark ? '#94a3b8' : '#475569' }]}>\n {description}\n </Text>\n )}\n {children}\n </View>\n\n <View style={styles.actionsRow}>\n {action != null && (\n <Pressable onPress={action.onPress} style={styles.actionBtn}>\n <Text style={[styles.actionText, { color: variant === 'solid' ? '#fff' : accentColor }]}>\n {action.label}\n </Text>\n </Pressable>\n )}\n {isDismissible && (\n <Pressable onPress={handleDismiss} style={styles.closeBtn} accessibilityLabel=\"Dismiss alert\" accessibilityRole=\"button\">\n <Text style={[styles.closeText, { color: variant === 'solid' ? 'rgba(255,255,255,0.7)' : isDark ? '#64748b' : '#94a3b8' }]}>\n ✕\n </Text>\n </Pressable>\n )}\n </View>\n </View>\n );\n\n if (variant === 'glass') {\n return (\n <Animated.View style={[entranceStyle, exitStyle, style]}>\n <GlassView elevation={1} borderRadius={12} style={[styles.glassLeftBorder, { borderLeftColor: accentColor }]}>\n {inner}\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View style={[containerStyle, entranceStyle, exitStyle, style]}>\n {inner}\n </Animated.View>\n );\n },\n);\n\nAlert.displayName = 'Alert';\n\nfunction resolveContainerStyle(\n variant: AlertVariant,\n status: AlertStatus,\n isDark: boolean,\n): ViewStyle {\n const accentColor = STATUS_COLORS[status];\n const base: ViewStyle = {\n borderRadius: 12,\n overflow: 'hidden',\n };\n\n if (variant === 'subtle') {\n return {\n ...base,\n backgroundColor: `${accentColor}1A`,\n borderLeftWidth: 4,\n borderLeftColor: accentColor,\n };\n }\n\n if (variant === 'solid') {\n return {\n ...base,\n backgroundColor: accentColor,\n };\n }\n\n if (variant === 'outline') {\n return {\n ...base,\n backgroundColor: 'transparent',\n borderWidth: 1.5,\n borderColor: accentColor,\n };\n }\n\n return base;\n}\n\nfunction resolveTextColor(variant: AlertVariant, isDark: boolean): string {\n if (variant === 'solid') return '#ffffff';\n return isDark ? '#f1f5f9' : '#0f172a';\n}\n\nconst styles = StyleSheet.create({\n inner: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n padding: 12,\n minHeight: 52,\n },\n iconWrap: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 10,\n flexShrink: 0,\n },\n iconWrapSolid: {\n backgroundColor: 'rgba(255,255,255,0.25)',\n },\n iconText: {\n fontSize: 14,\n fontWeight: '700',\n },\n textBlock: {\n flex: 1,\n paddingTop: 6,\n },\n title: {\n fontSize: 15,\n fontWeight: '700',\n lineHeight: 20,\n marginBottom: 2,\n },\n description: {\n fontSize: 13,\n lineHeight: 18,\n marginTop: 2,\n },\n actionsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 4,\n },\n actionBtn: {\n paddingHorizontal: 8,\n paddingVertical: 6,\n },\n actionText: {\n fontSize: 13,\n fontWeight: '700',\n },\n closeBtn: {\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n closeText: {\n fontSize: 14,\n lineHeight: 18,\n },\n glassLeftBorder: {\n borderLeftWidth: 4,\n },\n});\n","import React, { useState, useCallback } from 'react';\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { useEntranceAnimation, useReducedMotion, TIMING_EXIT } from 'reactnatively-animations';\nimport type { BannerProps, BannerStatus } from './Banner.types';\n\nconst STATUS_COLORS: Record<BannerStatus, string> = {\n info: '#06b6d4',\n success: '#10b981',\n warning: '#f59e0b',\n error: '#ef4444',\n neutral: '#6b7280',\n};\n\nconst STATUS_ICONS: Record<BannerStatus, string> = {\n info: 'ℹ',\n success: '✓',\n warning: '⚠',\n error: '✕',\n neutral: '●',\n};\n\nexport const Banner = React.memo<BannerProps>(\n ({\n status = 'info',\n title,\n description,\n action,\n secondaryAction,\n isDismissible = false,\n onDismiss,\n glass = false,\n style,\n }) => {\n const isDark = useIsDark();\n const isReduced = useReducedMotion();\n const [mounted, setMounted] = useState(true);\n\n const exitOpacity = useSharedValue(1);\n\n const entranceStyle = useEntranceAnimation({ variant: 'slideDown' });\n\n const handleDismiss = useCallback(() => {\n if (isReduced) {\n setMounted(false);\n onDismiss?.();\n return;\n }\n exitOpacity.value = withTiming(0, TIMING_EXIT, () => {\n runOnJS(setMounted)(false);\n if (onDismiss) runOnJS(onDismiss)();\n });\n }, [isReduced, onDismiss, exitOpacity]);\n\n const exitStyle = useAnimatedStyle(() => {\n 'worklet';\n return { opacity: exitOpacity.value };\n });\n\n if (!mounted) return null;\n\n const accentColor = STATUS_COLORS[status];\n const iconChar = STATUS_ICONS[status];\n const textColor = isDark ? '#f1f5f9' : '#0f172a';\n const subColor = isDark ? '#94a3b8' : '#475569';\n\n const inner = (\n <View style={styles.inner}>\n {/* Left color bar */}\n <View style={[styles.colorBar, { backgroundColor: accentColor }]} />\n\n {/* Icon */}\n <View style={[styles.iconWrap, { backgroundColor: `${accentColor}20` }]}>\n <Text style={[styles.iconText, { color: accentColor }]}>{iconChar}</Text>\n </View>\n\n {/* Text block */}\n <View style={styles.textBlock}>\n {title != null && (\n <Text style={[styles.title, { color: textColor }]} numberOfLines={2}>\n {title}\n </Text>\n )}\n {description != null && (\n <Text style={[styles.description, { color: subColor }]}>\n {description}\n </Text>\n )}\n\n {/* Action buttons */}\n {(action != null || secondaryAction != null) && (\n <View style={styles.actionsRow}>\n {action != null && (\n <Pressable onPress={action.onPress} style={styles.actionBtn}>\n <Text style={[styles.actionText, { color: accentColor }]}>\n {action.label}\n </Text>\n </Pressable>\n )}\n {secondaryAction != null && (\n <Pressable onPress={secondaryAction.onPress} style={styles.actionBtn}>\n <Text style={[styles.secondaryActionText, { color: subColor }]}>\n {secondaryAction.label}\n </Text>\n </Pressable>\n )}\n </View>\n )}\n </View>\n\n {/* Dismiss button */}\n {isDismissible && (\n <Pressable\n onPress={handleDismiss}\n style={styles.closeBtn}\n accessibilityLabel=\"Dismiss banner\"\n accessibilityRole=\"button\"\n >\n <Text style={[styles.closeText, { color: subColor }]}>✕</Text>\n </Pressable>\n )}\n </View>\n );\n\n if (glass) {\n return (\n <Animated.View style={[styles.wrapper, entranceStyle, exitStyle, style]}>\n <GlassView elevation={1} borderRadius={4}>\n {inner}\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View\n style={[\n styles.wrapper,\n styles.solidBg,\n { backgroundColor: isDark ? '#1e293b' : '#f8fafc' },\n entranceStyle,\n exitStyle,\n style,\n ]}\n >\n {inner}\n </Animated.View>\n );\n },\n);\n\nBanner.displayName = 'Banner';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n borderRadius: 4,\n overflow: 'hidden',\n },\n solidBg: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.06,\n shadowRadius: 4,\n elevation: 2,\n },\n inner: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n minHeight: 52,\n },\n colorBar: {\n width: 4,\n alignSelf: 'stretch',\n },\n iconWrap: {\n width: 32,\n height: 32,\n borderRadius: 16,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 12,\n marginTop: 10,\n flexShrink: 0,\n },\n iconText: {\n fontSize: 13,\n fontWeight: '700',\n },\n textBlock: {\n flex: 1,\n paddingLeft: 10,\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 4,\n },\n title: {\n fontSize: 14,\n fontWeight: '700',\n lineHeight: 20,\n marginBottom: 2,\n },\n description: {\n fontSize: 13,\n lineHeight: 18,\n },\n actionsRow: {\n flexDirection: 'row',\n marginTop: 8,\n flexWrap: 'wrap',\n },\n actionBtn: {\n marginRight: 12,\n paddingVertical: 2,\n },\n actionText: {\n fontSize: 13,\n fontWeight: '700',\n },\n secondaryActionText: {\n fontSize: 13,\n fontWeight: '500',\n },\n closeBtn: {\n padding: 10,\n alignSelf: 'flex-start',\n alignItems: 'center',\n justifyContent: 'center',\n },\n closeText: {\n fontSize: 14,\n lineHeight: 18,\n },\n});\n","import React, { useEffect, useCallback } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { SPRING_REVEAL, TIMING_EXIT } from 'reactnatively-animations';\nimport type { ToastItem } from './Toast.types';\n\ninterface ToastProps {\n item: ToastItem;\n onDismiss: (id: string) => void;\n}\n\nconst TYPE_COLORS: Record<string, string> = {\n success: '#22c55e',\n error: '#ef4444',\n warning: '#f59e0b',\n info: '#06b6d4',\n default: '#6366f1',\n};\n\nconst TYPE_ICONS: Record<string, string> = {\n success: '✓',\n error: '✕',\n warning: '⚠',\n info: 'ℹ',\n default: '●',\n};\n\nexport const Toast = React.memo<ToastProps>(({ item, onDismiss }) => {\n const isDark = useIsDark();\n const opacity = useSharedValue(0);\n const translateY = useSharedValue(item.position === 'top' ? -20 : 20);\n\n const dismiss = useCallback(() => {\n opacity.value = withTiming(0, TIMING_EXIT, () => runOnJS(onDismiss)(item.id));\n translateY.value = withTiming(item.position === 'top' ? -16 : 16, TIMING_EXIT);\n }, [item.id, item.position, onDismiss]);\n\n useEffect(() => {\n opacity.value = withSpring(1, SPRING_REVEAL);\n translateY.value = withSpring(0, SPRING_REVEAL);\n }, []);\n\n useEffect(() => {\n if (item.duration === 0) return;\n const timer = setTimeout(() => dismiss(), item.duration);\n return () => clearTimeout(timer);\n }, [item.duration, dismiss]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }],\n }));\n\n const accentColor = TYPE_COLORS[item.type] ?? TYPE_COLORS['default']!;\n const iconChar = TYPE_ICONS[item.type] ?? TYPE_ICONS['default']!;\n\n const content = (\n <View style={styles.content}>\n <View style={[styles.accentBar, { backgroundColor: accentColor }]} />\n <View style={[styles.iconWrap, { backgroundColor: `${accentColor}20` }]}>\n <Text style={[styles.icon, { color: accentColor }]}>\n {item.icon != null ? item.icon : iconChar}\n </Text>\n </View>\n <Text style={[styles.message, { color: isDark ? '#f1f5f9' : '#0f172a' }]} numberOfLines={2}>\n {item.message}\n </Text>\n {item.action != null && (\n <Pressable onPress={() => { item.action!.onPress(); dismiss(); }} style={styles.actionBtn}>\n <Text style={[styles.actionText, { color: accentColor }]}>{item.action.label}</Text>\n </Pressable>\n )}\n <Pressable onPress={dismiss} style={styles.closeBtn}>\n <Text style={{ color: isDark ? '#94a3b8' : '#64748b', fontSize: 18, lineHeight: 22 }}>×</Text>\n </Pressable>\n </View>\n );\n\n return (\n <Animated.View style={[styles.wrapper, animatedStyle]}>\n {item.glass ? (\n <GlassView elevation={3} borderRadius={14}>{content}</GlassView>\n ) : (\n <View style={[styles.solidBg, { backgroundColor: isDark ? '#1e1e30' : '#fff' }]}>\n {content}\n </View>\n )}\n </Animated.View>\n );\n});\n\nToast.displayName = 'Toast';\n\nconst styles = StyleSheet.create({\n wrapper: {\n marginHorizontal: 16,\n marginVertical: 5,\n },\n content: {\n flexDirection: 'row',\n alignItems: 'center',\n minHeight: 52,\n },\n accentBar: {\n width: 3, alignSelf: 'stretch', borderRadius: 2,\n marginRight: 10, marginLeft: 4, marginVertical: 10,\n },\n iconWrap: {\n width: 28, height: 28, borderRadius: 14,\n alignItems: 'center', justifyContent: 'center', marginRight: 10,\n },\n icon: { fontSize: 13, fontWeight: '700' },\n message: {\n flex: 1, fontSize: 14, fontWeight: '500', lineHeight: 20,\n paddingVertical: 10, paddingRight: 6,\n },\n actionBtn: { paddingHorizontal: 10, paddingVertical: 6, marginLeft: 4 },\n actionText: { fontSize: 13, fontWeight: '700' },\n closeBtn: { padding: 10, alignItems: 'center', justifyContent: 'center' },\n solidBg: {\n borderRadius: 14,\n shadowColor: '#000', shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.12, shadowRadius: 12, elevation: 4,\n },\n});\n","// Imperative Toast API — zero external dependencies.\n// Uses a minimal pub-sub pattern. ToastProvider subscribes to these events.\n// Call toast.success('Done!') from anywhere in the app.\n\nimport type { ToastOptions, ToastItem } from './Toast.types';\n\ntype ShowListener = (item: ToastItem) => void;\ntype DismissListener = (id: string) => void;\n\nconst showListeners: Set<ShowListener> = new Set();\nconst dismissListeners: Set<DismissListener> = new Set();\n\nlet counter = 0;\nfunction uid(): string {\n return `toast_${Date.now()}_${++counter}`;\n}\n\nfunction show(options: ToastOptions): string {\n const id = options.id ?? uid();\n const item: ToastItem = {\n id,\n message: options.message,\n type: options.type ?? 'default',\n duration: options.duration ?? 4000,\n position: options.position ?? 'bottom',\n glass: options.glass ?? true,\n action: options.action,\n icon: options.icon,\n };\n showListeners.forEach((fn) => fn(item));\n return id;\n}\n\nexport const toast = {\n show,\n success(message: string, options?: Partial<ToastOptions>): string {\n return show({ type: 'success', duration: 4000, ...options, message });\n },\n error(message: string, options?: Partial<ToastOptions>): string {\n return show({ type: 'error', duration: 5000, ...options, message });\n },\n warning(message: string, options?: Partial<ToastOptions>): string {\n return show({ type: 'warning', duration: 4500, ...options, message });\n },\n info(message: string, options?: Partial<ToastOptions>): string {\n return show({ type: 'info', duration: 4000, ...options, message });\n },\n dismiss(id: string): void {\n dismissListeners.forEach((fn) => fn(id));\n },\n // Internal — used by ToastProvider to subscribe\n _onShow(fn: ShowListener): () => void {\n showListeners.add(fn);\n return () => showListeners.delete(fn);\n },\n _onDismiss(fn: DismissListener): () => void {\n dismissListeners.add(fn);\n return () => dismissListeners.delete(fn);\n },\n};\n","import React, { useState, useCallback, useEffect, useMemo } from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport { toast } from './toast-api';\nimport { Toast } from './Toast';\nimport type { ToastItem } from './Toast.types';\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n maxToasts?: number;\n // Safe area top/bottom offsets — pass values from useSafeAreaInsets() if available\n safeAreaTop?: number;\n safeAreaBottom?: number;\n}\n\nexport function ToastProvider({\n children,\n maxToasts = 3,\n safeAreaTop = Platform.OS === 'ios' ? 44 : 24,\n safeAreaBottom = Platform.OS === 'ios' ? 34 : 16,\n}: ToastProviderProps) {\n const [items, setItems] = useState<ToastItem[]>([]);\n\n const addToast = useCallback((item: ToastItem) => {\n setItems((prev) => [item, ...prev].slice(0, maxToasts));\n }, [maxToasts]);\n\n const removeToast = useCallback((id: string) => {\n setItems((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n useEffect(() => {\n const unsubShow = toast._onShow(addToast);\n const unsubDismiss = toast._onDismiss(removeToast);\n return () => {\n unsubShow();\n unsubDismiss();\n };\n }, [addToast, removeToast]);\n\n const topItems = useMemo(() => items.filter((i) => i.position === 'top'), [items]);\n const bottomItems = useMemo(() => items.filter((i) => i.position === 'bottom'), [items]);\n\n return (\n <>\n {children}\n\n {topItems.length > 0 && (\n <View\n style={[styles.container, styles.top, { top: safeAreaTop + 8 }]}\n pointerEvents=\"box-none\"\n >\n {topItems.map((item) => (\n <Toast key={item.id} item={item} onDismiss={removeToast} />\n ))}\n </View>\n )}\n\n {bottomItems.length > 0 && (\n <View\n style={[styles.container, styles.bottom, { bottom: safeAreaBottom + 8 }]}\n pointerEvents=\"box-none\"\n >\n {bottomItems.map((item) => (\n <Toast key={item.id} item={item} onDismiss={removeToast} />\n ))}\n </View>\n )}\n </>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n left: 0,\n right: 0,\n zIndex: 9999,\n },\n top: { top: 0 },\n bottom: { bottom: 0 },\n});\n","import React, { useEffect } from 'react';\nimport { View, StyleSheet, type StyleProp, type ViewStyle } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withRepeat,\n withTiming,\n interpolate,\n Extrapolation,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { useReducedMotion } from 'reactnatively-animations';\n\nlet LinearGradientImpl:\n | typeof import('react-native-linear-gradient').default\n | null = null;\nlet gradientLoaded = false;\n\nfunction loadLinearGradient(): typeof import('react-native-linear-gradient').default | null {\n if (gradientLoaded) return LinearGradientImpl;\n try {\n // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires\n const gradientModule = require('react-native-linear-gradient');\n LinearGradientImpl = gradientModule?.default ?? gradientModule;\n } catch {\n LinearGradientImpl = null;\n }\n gradientLoaded = true;\n return LinearGradientImpl;\n}\n\nexport type SkeletonVariant = 'text' | 'circle' | 'rect' | 'card';\n\nexport interface SkeletonProps {\n variant?: SkeletonVariant;\n width?: number | string;\n height?: number;\n borderRadius?: number;\n lines?: number;\n lineSpacing?: number;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\nexport const Skeleton = React.memo<SkeletonProps>(\n ({\n variant = 'rect',\n width = '100%',\n height = 20,\n borderRadius,\n lines = 1,\n lineSpacing = 8,\n style,\n testID,\n }) => {\n const isDark = useIsDark();\n const isReduced = useReducedMotion();\n const shimmer = useSharedValue(0);\n\n useEffect(() => {\n if (isReduced) return;\n shimmer.value = withRepeat(withTiming(1, { duration: 1400 }), -1, false);\n }, [isReduced]);\n\n const baseBg = isDark ? 'rgba(255,255,255,0.06)' : 'rgba(0,0,0,0.06)';\n const shimmerLight = isDark ? 'rgba(255,255,255,0.12)' : 'rgba(255,255,255,0.65)';\n const shimmerColors = [baseBg, shimmerLight, baseBg];\n\n const resolvedRadius = (() => {\n if (borderRadius !== undefined) return borderRadius;\n if (variant === 'circle') return 9999;\n if (variant === 'text') return 4;\n if (variant === 'card') return 16;\n return 8;\n })();\n\n const resolvedHeight = (() => {\n if (variant === 'circle') return typeof width === 'number' ? width : height;\n if (variant === 'text') return 14;\n if (variant === 'card') return height || 180;\n return height;\n })();\n\n const animatedStyle = useAnimatedStyle(() => {\n 'worklet';\n return {\n transform: [{\n translateX: interpolate(shimmer.value, [0, 1], [-300, 300], Extrapolation.CLAMP),\n }],\n };\n });\n\n const renderSingle = (key?: number, widthOverride?: string) => (\n <View\n key={key}\n testID={key === undefined ? testID : undefined}\n style={[\n {\n width: (widthOverride ?? width) as ViewStyle['width'],\n height: resolvedHeight,\n borderRadius: resolvedRadius,\n backgroundColor: baseBg,\n overflow: 'hidden' as const,\n marginBottom: key !== undefined && key < lines - 1 ? lineSpacing : 0,\n },\n key === undefined ? style : undefined,\n ]}\n >\n {!isReduced && (\n <Animated.View style={[StyleSheet.absoluteFill, animatedStyle]}>\n {(() => {\n const LG = loadLinearGradient();\n return LG ? (\n <LG\n colors={shimmerColors}\n start={{ x: 0, y: 0 }}\n end={{ x: 1, y: 0 }}\n style={{ flex: 1, width: 300 }}\n />\n ) : (\n <View\n style={[\n StyleSheet.absoluteFill,\n { backgroundColor: shimmerLight, width: 300 },\n ]}\n />\n );\n })()}\n </Animated.View>\n )}\n </View>\n );\n\n if (variant === 'text' && lines > 1) {\n return (\n <View testID={testID} style={style}>\n {Array.from({ length: lines }).map((_, i) =>\n renderSingle(i, i === lines - 1 ? '65%' : String(width)),\n )}\n </View>\n );\n }\n\n return renderSingle();\n },\n);\n\nSkeleton.displayName = 'Skeleton';\n","import React, { useEffect, useRef } from 'react';\nimport {\n View,\n Text,\n Animated as RNAnimated,\n StyleSheet,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport type { ProgressBarProps } from './ProgressBar.types';\n\nexport const ProgressBar = React.memo<ProgressBarProps>(\n ({\n value = 0,\n max = 100,\n variant = 'solid',\n color,\n trackColor,\n height = 8,\n borderRadius,\n showLabel = false,\n label,\n animated = true,\n indeterminate = false,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const fillColor = color ?? theme.colors.primary;\n const trackBg = trackColor ?? (isDark ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.08)');\n const br = borderRadius ?? height / 2;\n\n // Clamp value\n const clampedValue = Math.min(Math.max(value, 0), max);\n const pct = (clampedValue / max) * 100;\n\n // Animated width for determinate bar\n const widthAnim = useRef(new RNAnimated.Value(animated ? 0 : pct)).current;\n\n useEffect(() => {\n if (indeterminate) return;\n if (animated) {\n RNAnimated.timing(widthAnim, {\n toValue: pct,\n duration: 350,\n useNativeDriver: false,\n }).start();\n } else {\n widthAnim.setValue(pct);\n }\n }, [pct, animated, indeterminate]);\n\n // Indeterminate shimmer\n const shimmerAnim = useRef(new RNAnimated.Value(-100)).current;\n useEffect(() => {\n if (!indeterminate) return;\n shimmerAnim.setValue(-100);\n const loop = RNAnimated.loop(\n RNAnimated.timing(shimmerAnim, {\n toValue: 100,\n duration: 1200,\n useNativeDriver: false,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [indeterminate]);\n\n // Striped overlay opacity pulse\n const stripeAnim = useRef(new RNAnimated.Value(0.5)).current;\n useEffect(() => {\n if (variant !== 'striped') return;\n const loop = RNAnimated.loop(\n RNAnimated.sequence([\n RNAnimated.timing(stripeAnim, { toValue: 0.8, duration: 800, useNativeDriver: false }),\n RNAnimated.timing(stripeAnim, { toValue: 0.5, duration: 800, useNativeDriver: false }),\n ]),\n );\n loop.start();\n return () => loop.stop();\n }, [variant]);\n\n const displayLabel = label ?? `${Math.round(pct)}%`;\n\n const trackStyle: ViewStyle = {\n height: height,\n borderRadius: br,\n overflow: 'hidden',\n backgroundColor: glass ? 'transparent' : trackBg,\n };\n\n const indeterminateFill = indeterminate ? (\n <RNAnimated.View\n style={[\n styles.fill,\n {\n backgroundColor: fillColor,\n borderRadius: br,\n width: '40%',\n transform: [\n {\n translateX: shimmerAnim.interpolate({\n inputRange: [-100, 100],\n outputRange: ['-100%' as unknown as number, '250%' as unknown as number],\n }),\n },\n ],\n },\n ]}\n />\n ) : null;\n\n const determinateFill = !indeterminate ? (\n <RNAnimated.View\n style={[\n styles.fill,\n {\n backgroundColor: variant === 'gradient' ? undefined : fillColor,\n borderRadius: br,\n width: widthAnim.interpolate({\n inputRange: [0, 100],\n outputRange: ['0%', '100%'],\n }),\n },\n variant === 'gradient' && {\n // simple two-stop gradient simulation using a wider view clipped by overflow hidden\n backgroundColor: fillColor,\n opacity: 0.9,\n },\n ]}\n >\n {variant === 'striped' && (\n <RNAnimated.View\n style={[\n StyleSheet.absoluteFill,\n styles.stripes,\n { opacity: stripeAnim },\n ]}\n />\n )}\n </RNAnimated.View>\n ) : null;\n\n const trackContent = (\n <>\n {indeterminate ? indeterminateFill : determinateFill}\n </>\n );\n\n return (\n <View style={[styles.wrapper, style]}>\n {glass ? (\n <GlassView elevation={1} borderRadius={br} style={trackStyle}>\n <View style={[styles.glassFill, { width: `${pct}%`, backgroundColor: `${fillColor}cc`, borderRadius: br }]} />\n {indeterminate && (\n <RNAnimated.View\n style={[\n styles.fill,\n {\n backgroundColor: fillColor,\n borderRadius: br,\n width: '40%',\n position: 'absolute',\n top: 0, bottom: 0,\n transform: [\n {\n translateX: shimmerAnim.interpolate({\n inputRange: [-100, 100],\n outputRange: ['-100%' as unknown as number, '250%' as unknown as number],\n }),\n },\n ],\n },\n ]}\n />\n )}\n </GlassView>\n ) : (\n <View style={[trackStyle, { backgroundColor: trackBg }]}>\n {trackContent}\n </View>\n )}\n\n {showLabel && (\n <Text style={[styles.label, { color: isDark ? '#94a3b8' : '#64748b' }]}>\n {displayLabel}\n </Text>\n )}\n </View>\n );\n },\n);\n\nProgressBar.displayName = 'ProgressBar';\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: '100%',\n },\n fill: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n },\n glassFill: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n },\n stripes: {\n // Diagonal stripe pattern simulated with a semi-transparent lighter overlay\n backgroundColor: 'rgba(255,255,255,0.25)',\n },\n label: {\n fontSize: 12,\n fontWeight: '600',\n marginTop: 4,\n textAlign: 'right',\n },\n});\n","import React, { useEffect, useRef } from 'react';\nimport {\n View,\n Animated as RNAnimated,\n StyleSheet,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { SpinnerProps, SpinnerSize } from './Spinner.types';\n\nconst SIZE_MAP: Record<SpinnerSize, number> = {\n xs: 16,\n sm: 24,\n md: 32,\n lg: 48,\n xl: 64,\n};\n\nconst DEFAULT_THICKNESS_MAP: Record<SpinnerSize, number> = {\n xs: 2,\n sm: 2,\n md: 3,\n lg: 4,\n xl: 5,\n};\n\nexport const Spinner = React.memo<SpinnerProps>(\n ({\n size = 'md',\n color,\n trackColor,\n thickness,\n duration = 800,\n style,\n label,\n }) => {\n const { theme } = useTheme();\n const spinColor = color ?? theme.colors.primary;\n const dim = SIZE_MAP[size];\n const bw = thickness ?? DEFAULT_THICKNESS_MAP[size];\n const radius = dim / 2;\n const spinValue = useRef(new RNAnimated.Value(0)).current;\n\n useEffect(() => {\n const loop = RNAnimated.loop(\n RNAnimated.timing(spinValue, {\n toValue: 1,\n duration,\n useNativeDriver: true,\n }),\n );\n loop.start();\n return () => loop.stop();\n }, [duration]);\n\n const rotate = spinValue.interpolate({\n inputRange: [0, 1],\n outputRange: ['0deg', '360deg'],\n });\n\n return (\n <View\n style={[styles.container, { width: dim, height: dim }, style]}\n accessible\n accessibilityLabel={label ?? 'Loading'}\n accessibilityRole=\"progressbar\"\n >\n {/* Track ring */}\n <View\n style={[\n styles.ring,\n {\n width: dim,\n height: dim,\n borderRadius: radius,\n borderWidth: bw,\n borderColor: trackColor ?? `${spinColor}30`,\n },\n ]}\n />\n {/* Spinning arc */}\n <RNAnimated.View\n style={[\n styles.ring,\n styles.arc,\n {\n width: dim,\n height: dim,\n borderRadius: radius,\n borderWidth: bw,\n borderTopColor: spinColor,\n borderRightColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n transform: [{ rotate }],\n },\n ]}\n />\n </View>\n );\n },\n);\n\nSpinner.displayName = 'Spinner';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n ring: {\n position: 'absolute',\n },\n arc: {\n // Arc is on top of track\n },\n});\n","import React from 'react';\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { useEntranceAnimation } from 'reactnatively-animations';\nimport type { EmptyStateProps } from './EmptyState.types';\n\nexport const EmptyState = React.memo<EmptyStateProps>(\n ({\n illustration,\n icon,\n title,\n description,\n action,\n secondaryAction,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const animStyle = useEntranceAnimation({ variant: 'fade' });\n\n const iconBg = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.06)';\n const titleColor = isDark ? '#f1f5f9' : '#0f172a';\n const descColor = isDark ? '#94a3b8' : '#64748b';\n\n const defaultIcon = (\n <View style={[styles.defaultIconWrap, { backgroundColor: iconBg }]}>\n <Text style={styles.defaultIconText}>📭</Text>\n </View>\n );\n\n const content = (\n <Animated.View style={[styles.inner, animStyle]}>\n {/* Illustration / Icon slot */}\n {illustration != null ? (\n <View style={styles.illustrationSlot}>{illustration}</View>\n ) : (\n <View style={styles.iconSlot}>\n {icon ?? defaultIcon}\n </View>\n )}\n\n {/* Text */}\n {title != null && (\n <Text style={[styles.title, { color: titleColor }]}>{title}</Text>\n )}\n {description != null && (\n <Text style={[styles.description, { color: descColor }]}>{description}</Text>\n )}\n\n {/* Actions */}\n {(action != null || secondaryAction != null) && (\n <View style={styles.actionsRow}>\n {action != null && (\n <Pressable\n onPress={action.onPress}\n style={[\n styles.actionBtn,\n action.variant === 'outline'\n ? [styles.outlineBtn, { borderColor: theme.colors.primary }]\n : [styles.solidBtn, { backgroundColor: theme.colors.primary }],\n ]}\n accessibilityRole=\"button\"\n >\n <Text\n style={[\n styles.actionText,\n { color: action.variant === 'outline' ? theme.colors.primary : '#fff' },\n ]}\n >\n {action.label}\n </Text>\n </Pressable>\n )}\n\n {secondaryAction != null && (\n <Pressable\n onPress={secondaryAction.onPress}\n style={styles.ghostBtn}\n accessibilityRole=\"button\"\n >\n <Text style={[styles.ghostText, { color: descColor }]}>\n {secondaryAction.label}\n </Text>\n </Pressable>\n )}\n </View>\n )}\n </Animated.View>\n );\n\n if (glass) {\n return (\n <GlassView elevation={1} borderRadius={20} style={[styles.glassWrapper, style]}>\n {content}\n </GlassView>\n );\n }\n\n return (\n <View style={[styles.wrapper, style]}>\n {content}\n </View>\n );\n },\n);\n\nEmptyState.displayName = 'EmptyState';\n\nconst styles = StyleSheet.create({\n wrapper: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 32,\n },\n glassWrapper: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n inner: {\n alignItems: 'center',\n width: '100%',\n padding: 32,\n },\n illustrationSlot: {\n maxHeight: 120,\n alignItems: 'center',\n marginBottom: 20,\n overflow: 'hidden',\n },\n iconSlot: {\n marginBottom: 20,\n alignItems: 'center',\n },\n defaultIconWrap: {\n width: 64,\n height: 64,\n borderRadius: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n defaultIconText: {\n fontSize: 28,\n },\n title: {\n fontSize: 18,\n fontWeight: '700',\n lineHeight: 24,\n textAlign: 'center',\n marginBottom: 8,\n },\n description: {\n fontSize: 14,\n lineHeight: 20,\n textAlign: 'center',\n marginBottom: 24,\n maxWidth: 300,\n },\n actionsRow: {\n alignItems: 'center',\n gap: 12,\n },\n actionBtn: {\n paddingVertical: 12,\n paddingHorizontal: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 140,\n },\n solidBtn: {},\n outlineBtn: {\n borderWidth: 1.5,\n backgroundColor: 'transparent',\n },\n actionText: {\n fontSize: 15,\n fontWeight: '600',\n },\n ghostBtn: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n },\n ghostText: {\n fontSize: 14,\n fontWeight: '500',\n },\n});\n","import React, { useEffect, useCallback } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n StyleSheet,\n Dimensions,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport type { DialogProps } from './Dialog.types';\n\nconst { width: SCREEN_WIDTH } = Dimensions.get('window');\n\nconst SIZE_MAX_WIDTH: Record<NonNullable<DialogProps['size']>, number | string> = {\n sm: 300,\n md: 360,\n lg: 480,\n full: SCREEN_WIDTH * 0.9,\n};\n\nexport const Dialog = React.memo<DialogProps>(\n ({\n isOpen,\n onClose,\n title,\n description,\n children,\n actions,\n isDismissible = true,\n glass = false,\n size = 'md',\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.85);\n const [visible, setVisible] = React.useState(isOpen);\n\n const openDialog = useCallback(() => {\n setVisible(true);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n scale.value = withSpring(1, SPRING_SNAPPY);\n }, [opacity, scale]);\n\n const closeDialog = useCallback(() => {\n opacity.value = withTiming(0, TIMING_EXIT, () => {\n runOnJS(setVisible)(false);\n runOnJS(onClose)();\n });\n scale.value = withTiming(0.85, TIMING_EXIT);\n }, [opacity, scale, onClose]);\n\n useEffect(() => {\n if (isOpen) {\n openDialog();\n } else {\n if (visible) {\n closeDialog();\n }\n }\n }, [isOpen]);\n\n const backdropStyle = useAnimatedStyle(() => {\n 'worklet';\n return { opacity: opacity.value * 0.5 };\n });\n\n const cardStyle = useAnimatedStyle(() => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n if (!visible && !isOpen) return null;\n\n const maxWidth = SIZE_MAX_WIDTH[size];\n const cardBg = isDark ? '#1e293b' : '#ffffff';\n\n const actionButtons = actions?.map((action, i) => {\n const isLast = i === actions.length - 1;\n const actionColor = action.color ?? (action.isDestructive ? theme.colors.error : theme.colors.primary);\n const variant = action.variant ?? (i === actions.length - 1 ? 'solid' : 'ghost');\n\n let btnStyle = {};\n let textColor = actionColor;\n\n if (variant === 'solid') {\n btnStyle = { backgroundColor: actionColor, borderRadius: 10 };\n textColor = '#fff';\n } else if (variant === 'outline') {\n btnStyle = { borderWidth: 1.5, borderColor: actionColor, borderRadius: 10, backgroundColor: 'transparent' };\n }\n\n return (\n <Pressable\n key={`action-${i}`}\n onPress={action.onPress}\n style={[styles.actionBtn, btnStyle, !isLast && styles.actionBtnMargin]}\n accessibilityRole=\"button\"\n >\n <Text style={[styles.actionText, { color: textColor }]}>{action.label}</Text>\n </Pressable>\n );\n });\n\n const cardContent = (\n <>\n {title != null && (\n <Text style={[styles.title, { color: isDark ? '#f1f5f9' : '#0f172a' }]}>\n {title}\n </Text>\n )}\n {description != null && (\n <Text style={[styles.description, { color: isDark ? '#94a3b8' : '#64748b' }]}>\n {description}\n </Text>\n )}\n {children != null && <View style={styles.childrenWrap}>{children}</View>}\n {actions != null && actions.length > 0 && (\n <View style={styles.actionsRow}>{actionButtons}</View>\n )}\n </>\n );\n\n return (\n <Modal\n visible={visible}\n transparent\n animationType=\"none\"\n statusBarTranslucent\n onRequestClose={isDismissible ? closeDialog : undefined}\n >\n <View style={styles.overlay}>\n {/* Backdrop */}\n <Animated.View style={[StyleSheet.absoluteFill, styles.backdrop, backdropStyle]} />\n\n {/* Dismiss area */}\n {isDismissible && (\n <Pressable style={StyleSheet.absoluteFill} onPress={closeDialog} />\n )}\n\n {/* Card */}\n <Animated.View\n style={[styles.cardWrapper, { maxWidth } as any, cardStyle]}\n pointerEvents=\"box-none\"\n >\n {glass ? (\n <GlassView elevation={3} borderRadius={20} style={[styles.card, style]}>\n {cardContent}\n </GlassView>\n ) : (\n <View\n style={[\n styles.card,\n styles.solidCard,\n { backgroundColor: cardBg },\n style,\n ]}\n >\n {cardContent}\n </View>\n )}\n </Animated.View>\n </View>\n </Modal>\n );\n },\n);\n\nDialog.displayName = 'Dialog';\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n backdrop: {\n backgroundColor: '#000',\n },\n cardWrapper: {\n width: '100%',\n padding: 16,\n },\n card: {\n padding: 24,\n borderRadius: 20,\n },\n solidCard: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 0.18,\n shadowRadius: 24,\n elevation: 12,\n },\n title: {\n fontSize: 18,\n fontWeight: '700',\n lineHeight: 24,\n marginBottom: 8,\n },\n description: {\n fontSize: 14,\n lineHeight: 20,\n marginBottom: 8,\n },\n childrenWrap: {\n marginVertical: 8,\n },\n actionsRow: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n marginTop: 16,\n flexWrap: 'wrap',\n gap: 8,\n },\n actionBtn: {\n paddingVertical: 10,\n paddingHorizontal: 18,\n alignItems: 'center',\n justifyContent: 'center',\n },\n actionBtnMargin: {\n marginRight: 4,\n },\n actionText: {\n fontSize: 14,\n fontWeight: '600',\n },\n});\n","import React, { useEffect, useRef, useCallback, useState } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n StyleSheet,\n PanResponder,\n Animated as RNAnimated,\n Dimensions,\n Platform,\n} from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport type { BottomSheetProps } from './BottomSheet.types';\n\nconst { height: SCREEN_HEIGHT } = Dimensions.get('window');\n\nconst CLOSE_THRESHOLD = 80;\n\nexport const BottomSheet = React.memo<BottomSheetProps>(\n ({\n isOpen,\n onClose,\n snapPoints = [300],\n initialSnap = 0,\n title,\n children,\n isDismissible = true,\n showHandle = true,\n glass = false,\n style,\n }) => {\n const isDark = useIsDark();\n const [visible, setVisible] = useState(isOpen);\n\n const snapHeight = snapPoints[initialSnap] ?? snapPoints[0] ?? 300;\n // translateY: 0 = fully open at snapHeight, positive = moving down (closing)\n const translateY = useRef(new RNAnimated.Value(snapHeight)).current;\n const backdropOpacity = useRef(new RNAnimated.Value(0)).current;\n\n const openSheet = useCallback(() => {\n setVisible(true);\n RNAnimated.parallel([\n RNAnimated.spring(translateY, {\n toValue: 0,\n tension: 180,\n friction: 20,\n useNativeDriver: true,\n }),\n RNAnimated.timing(backdropOpacity, {\n toValue: 0.5,\n duration: 250,\n useNativeDriver: true,\n }),\n ]).start();\n }, [translateY, backdropOpacity]);\n\n const closeSheet = useCallback(() => {\n RNAnimated.parallel([\n RNAnimated.timing(translateY, {\n toValue: snapHeight + 50,\n duration: 260,\n useNativeDriver: true,\n }),\n RNAnimated.timing(backdropOpacity, {\n toValue: 0,\n duration: 220,\n useNativeDriver: true,\n }),\n ]).start(() => {\n setVisible(false);\n onClose();\n });\n }, [translateY, backdropOpacity, snapHeight, onClose]);\n\n useEffect(() => {\n if (isOpen) {\n openSheet();\n } else if (visible) {\n closeSheet();\n }\n }, [isOpen]);\n\n // Drag offset accumulated during a gesture\n const dragOffset = useRef(0);\n\n const panResponder = useRef(\n PanResponder.create({\n onMoveShouldSetPanResponder: (_, gs) =>\n Math.abs(gs.dy) > 5 && Math.abs(gs.dy) > Math.abs(gs.dx),\n onPanResponderGrant: () => {\n dragOffset.current = 0;\n translateY.stopAnimation((v) => {\n dragOffset.current = v;\n });\n },\n onPanResponderMove: (_, gs) => {\n const next = Math.max(0, dragOffset.current + gs.dy);\n translateY.setValue(next);\n const progress = Math.max(0, 1 - next / snapHeight);\n backdropOpacity.setValue(progress * 0.5);\n },\n onPanResponderRelease: (_, gs) => {\n const currentY = dragOffset.current + gs.dy;\n if (currentY > CLOSE_THRESHOLD || gs.vy > 0.8) {\n // Find nearest snap point\n const targetSnap = findNearestSnap(snapPoints, currentY, gs.vy);\n if (targetSnap === null || gs.dy > CLOSE_THRESHOLD || gs.vy > 1.2) {\n closeSheet();\n } else {\n RNAnimated.spring(translateY, {\n toValue: snapHeight - targetSnap,\n tension: 180,\n friction: 20,\n useNativeDriver: true,\n }).start();\n const progress = targetSnap / snapHeight;\n RNAnimated.timing(backdropOpacity, {\n toValue: Math.min(progress * 0.5, 0.5),\n duration: 200,\n useNativeDriver: true,\n }).start();\n }\n } else {\n // Spring back to nearest snap point\n RNAnimated.spring(translateY, {\n toValue: 0,\n tension: 180,\n friction: 20,\n useNativeDriver: true,\n }).start();\n RNAnimated.timing(backdropOpacity, {\n toValue: 0.5,\n duration: 200,\n useNativeDriver: true,\n }).start();\n }\n },\n }),\n ).current;\n\n if (!visible && !isOpen) return null;\n\n const sheetBg = isDark ? '#1e293b' : '#ffffff';\n\n const sheetContent = (\n <>\n {showHandle && (\n <View style={styles.handleWrap}>\n <View style={styles.handle} />\n </View>\n )}\n {title != null && (\n <Text style={[styles.title, { color: isDark ? '#f1f5f9' : '#0f172a' }]}>\n {title}\n </Text>\n )}\n <View style={styles.content}>{children}</View>\n </>\n );\n\n return (\n <Modal\n visible={visible}\n transparent\n animationType=\"none\"\n statusBarTranslucent\n onRequestClose={isDismissible ? closeSheet : undefined}\n >\n <View style={styles.overlay} pointerEvents=\"box-none\">\n {/* Backdrop */}\n <RNAnimated.View\n style={[StyleSheet.absoluteFill, styles.backdrop, { opacity: backdropOpacity }]}\n />\n {isDismissible && (\n <Pressable style={StyleSheet.absoluteFill} onPress={closeSheet} />\n )}\n\n {/* Sheet */}\n <RNAnimated.View\n style={[\n styles.sheet,\n { height: snapHeight, transform: [{ translateY }] },\n ]}\n {...panResponder.panHandlers}\n >\n {glass ? (\n <GlassView\n elevation={4}\n borderRadius={24}\n style={[styles.sheetInner, style]}\n >\n {sheetContent}\n </GlassView>\n ) : (\n <View\n style={[\n styles.sheetInner,\n styles.solidSheet,\n { backgroundColor: sheetBg },\n style,\n ]}\n >\n {sheetContent}\n </View>\n )}\n </RNAnimated.View>\n </View>\n </Modal>\n );\n },\n);\n\nBottomSheet.displayName = 'BottomSheet';\n\nfunction findNearestSnap(\n snapPoints: number[],\n draggedY: number,\n velocity: number,\n): number | null {\n if (!snapPoints.length) return null;\n // sorted descending (largest = most open)\n const sorted = [...snapPoints].sort((a, b) => b - a);\n // draggedY ~ distance dragged down from open position\n // velocity: positive = dragging down\n const openHeight = sorted[0]!;\n const currentH = openHeight - draggedY;\n // find nearest\n let best = sorted[0]!;\n let bestDiff = Math.abs(best - currentH);\n for (const pt of sorted) {\n const diff = Math.abs(pt - currentH);\n if (diff < bestDiff) {\n bestDiff = diff;\n best = pt;\n }\n }\n return best;\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n justifyContent: 'flex-end',\n },\n backdrop: {\n backgroundColor: '#000',\n },\n sheet: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n },\n sheetInner: {\n flex: 1,\n borderTopLeftRadius: 24,\n borderTopRightRadius: 24,\n overflow: 'hidden',\n },\n solidSheet: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: -4 },\n shadowOpacity: 0.12,\n shadowRadius: 20,\n elevation: 12,\n },\n handleWrap: {\n alignItems: 'center',\n paddingTop: 12,\n paddingBottom: 8,\n },\n handle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n backgroundColor: 'rgba(128,128,128,0.4)',\n },\n title: {\n fontSize: 17,\n fontWeight: '700',\n paddingHorizontal: 20,\n paddingBottom: 12,\n lineHeight: 24,\n },\n content: {\n flex: 1,\n },\n});\n","import React, { useRef, useState, useCallback } from 'react';\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n type LayoutRectangle,\n type StyleProp,\n type ViewStyle,\n\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { SPRING_SNAPPY, TIMING_FAST, TIMING_EXIT } from 'reactnatively-animations';\nimport type { TooltipProps, TooltipPlacement } from './Tooltip.types';\n\nconst TOOLTIP_GAP = 8;\nconst ARROW_SIZE = 8;\n\nexport const Tooltip = React.memo<TooltipProps>(\n ({\n content,\n placement = 'top',\n children,\n delay = 500,\n glass = false,\n style,\n }) => {\n const isDark = useIsDark();\n const [shown, setShown] = useState(false);\n const [layout, setLayout] = useState<LayoutRectangle | null>(null);\n const [tipSize, setTipSize] = useState({ width: 0, height: 0 });\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const show = useCallback(() => {\n timerRef.current = setTimeout(() => {\n setShown(true);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n scale.value = withSpring(1, SPRING_SNAPPY);\n }, delay);\n }, [delay, opacity, scale]);\n\n const hide = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n opacity.value = withTiming(0, TIMING_EXIT, () => {});\n scale.value = withTiming(0.9, TIMING_EXIT);\n // hide after animation\n setTimeout(() => setShown(false), TIMING_EXIT.duration ?? 150);\n }, [opacity, scale]);\n\n const tooltipStyle = useAnimatedStyle(() => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n // Compute tooltip position relative to trigger\n const computePosition = (): ViewStyle => {\n if (!layout || !tipSize.width) return { opacity: 0 };\n const { x, y, width, height } = layout;\n\n switch (placement) {\n case 'top':\n return {\n bottom: height + TOOLTIP_GAP + ARROW_SIZE,\n left: width / 2 - tipSize.width / 2,\n };\n case 'bottom':\n return {\n top: height + TOOLTIP_GAP + ARROW_SIZE,\n left: width / 2 - tipSize.width / 2,\n };\n case 'left':\n return {\n right: width + TOOLTIP_GAP + ARROW_SIZE,\n top: height / 2 - tipSize.height / 2,\n };\n case 'right':\n return {\n left: width + TOOLTIP_GAP + ARROW_SIZE,\n top: height / 2 - tipSize.height / 2,\n };\n default:\n return {};\n }\n };\n\n const arrowStyle = arrowStyles(placement, isDark, glass);\n const tooltipBg = isDark ? '#1e293b' : '#1a1a2e';\n\n const tipContent = (\n <View\n style={styles.tipInner}\n onLayout={(e) => setTipSize({ width: e.nativeEvent.layout.width, height: e.nativeEvent.layout.height })}\n >\n {typeof content === 'string' ? (\n <Text style={styles.tipText}>{content}</Text>\n ) : (\n content\n )}\n </View>\n );\n\n return (\n <View\n style={[styles.triggerWrap, style]}\n onLayout={(e) => setLayout(e.nativeEvent.layout)}\n >\n <Pressable\n onLongPress={show}\n onPressOut={hide}\n onHoverIn={show}\n onHoverOut={hide}\n delayLongPress={0}\n accessibilityHint={typeof content === 'string' ? content : undefined}\n >\n {children}\n </Pressable>\n\n {shown && (\n <Animated.View\n style={[styles.tooltipAbs, computePosition(), tooltipStyle]}\n pointerEvents=\"none\"\n >\n {/* Arrow */}\n <View style={[styles.arrow, arrowStyle]} />\n\n {glass ? (\n <GlassView elevation={2} borderRadius={8}>\n {tipContent}\n </GlassView>\n ) : (\n <View style={[styles.solidTip, { backgroundColor: tooltipBg }]}>\n {tipContent}\n </View>\n )}\n </Animated.View>\n )}\n </View>\n );\n },\n);\n\nTooltip.displayName = 'Tooltip';\n\nfunction arrowStyles(\n placement: TooltipPlacement,\n isDark: boolean,\n glass: boolean,\n): ViewStyle {\n const color = glass\n ? 'rgba(255,255,255,0.15)'\n : isDark ? '#1e293b' : '#1a1a2e';\n\n const base: ViewStyle = {\n width: 0,\n height: 0,\n position: 'absolute',\n borderStyle: 'solid',\n };\n\n switch (placement) {\n case 'top':\n return {\n ...base,\n bottom: -ARROW_SIZE,\n alignSelf: 'center',\n borderTopWidth: ARROW_SIZE,\n borderTopColor: color,\n borderLeftWidth: ARROW_SIZE,\n borderLeftColor: 'transparent',\n borderRightWidth: ARROW_SIZE,\n borderRightColor: 'transparent',\n };\n case 'bottom':\n return {\n ...base,\n top: -ARROW_SIZE,\n alignSelf: 'center',\n borderBottomWidth: ARROW_SIZE,\n borderBottomColor: color,\n borderLeftWidth: ARROW_SIZE,\n borderLeftColor: 'transparent',\n borderRightWidth: ARROW_SIZE,\n borderRightColor: 'transparent',\n };\n case 'left':\n return {\n ...base,\n right: -ARROW_SIZE,\n alignSelf: 'center',\n borderLeftWidth: ARROW_SIZE,\n borderLeftColor: color,\n borderTopWidth: ARROW_SIZE,\n borderTopColor: 'transparent',\n borderBottomWidth: ARROW_SIZE,\n borderBottomColor: 'transparent',\n };\n case 'right':\n return {\n ...base,\n left: -ARROW_SIZE,\n alignSelf: 'center',\n borderRightWidth: ARROW_SIZE,\n borderRightColor: color,\n borderTopWidth: ARROW_SIZE,\n borderTopColor: 'transparent',\n borderBottomWidth: ARROW_SIZE,\n borderBottomColor: 'transparent',\n };\n default:\n return base;\n }\n}\n\nconst styles = StyleSheet.create({\n triggerWrap: {\n position: 'relative',\n },\n tooltipAbs: {\n position: 'absolute',\n zIndex: 9999,\n alignItems: 'center',\n },\n arrow: {},\n solidTip: {\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 6,\n elevation: 4,\n },\n tipInner: {\n paddingHorizontal: 10,\n paddingVertical: 6,\n maxWidth: 200,\n },\n tipText: {\n fontSize: 12,\n fontWeight: '500',\n color: '#fff',\n lineHeight: 16,\n },\n});\n","import React, { useRef, useState, useCallback } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n ScrollView,\n StyleSheet,\n type LayoutRectangle,\n Dimensions,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport type { PopoverProps } from './Popover.types';\nimport type { TooltipPlacement } from '../Tooltip/Tooltip.types';\n\nconst { width: SW, height: SH } = Dimensions.get('window');\nconst POPOVER_GAP = 8;\nconst MAX_POP_WIDTH = 280;\nconst MAX_POP_HEIGHT = 320;\n\nexport const Popover = React.memo<PopoverProps>(\n ({\n trigger,\n content,\n placement = 'bottom',\n isDismissible = true,\n glass = false,\n style,\n }) => {\n const isDark = useIsDark();\n const [isOpen, setIsOpen] = useState(false);\n const [triggerLayout, setTriggerLayout] = useState<LayoutRectangle & { pageX: number; pageY: number } | null>(null);\n const triggerRef = useRef<View>(null);\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const open = useCallback(() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y: y, width, height, pageX: x, pageY: y });\n setIsOpen(true);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n scale.value = withSpring(1, SPRING_SNAPPY);\n });\n }, [opacity, scale]);\n\n const close = useCallback(() => {\n opacity.value = withTiming(0, TIMING_EXIT);\n scale.value = withTiming(0.9, TIMING_EXIT);\n const dur = (TIMING_EXIT.duration ?? 150) as number;\n setTimeout(() => setIsOpen(false), dur);\n }, [opacity, scale]);\n\n const toggle = useCallback(() => {\n if (isOpen) close();\n else open();\n }, [isOpen, open, close]);\n\n const animStyle = useAnimatedStyle(() => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n const popoverPosition = computePosition(triggerLayout, placement);\n const popBg = isDark ? '#1e293b' : '#ffffff';\n\n const triggerEl =\n typeof trigger === 'function'\n ? trigger({ onPress: toggle, isOpen })\n : (\n <Pressable onPress={toggle} accessibilityRole=\"button\">\n {trigger}\n </Pressable>\n );\n\n return (\n <>\n <View ref={triggerRef} collapsable={false}>\n {triggerEl}\n </View>\n\n {isOpen && (\n <Modal\n visible={isOpen}\n transparent\n animationType=\"none\"\n statusBarTranslucent\n onRequestClose={isDismissible ? close : undefined}\n >\n <View style={styles.overlay} pointerEvents=\"box-none\">\n {isDismissible && (\n <Pressable style={StyleSheet.absoluteFill} onPress={close} />\n )}\n\n <Animated.View\n style={[\n styles.popover,\n popoverPosition,\n animStyle,\n style,\n ]}\n pointerEvents=\"box-none\"\n >\n {glass ? (\n <GlassView elevation={3} borderRadius={14} style={styles.popInner}>\n <ScrollView\n style={styles.scroll}\n showsVerticalScrollIndicator={false}\n keyboardShouldPersistTaps=\"handled\"\n >\n {content}\n </ScrollView>\n </GlassView>\n ) : (\n <View style={[styles.popInner, styles.solidPop, { backgroundColor: popBg }]}>\n <ScrollView\n style={styles.scroll}\n showsVerticalScrollIndicator={false}\n keyboardShouldPersistTaps=\"handled\"\n >\n {content}\n </ScrollView>\n </View>\n )}\n </Animated.View>\n </View>\n </Modal>\n )}\n </>\n );\n },\n);\n\nPopover.displayName = 'Popover';\n\nfunction computePosition(\n layout: (LayoutRectangle & { pageX: number; pageY: number }) | null,\n placement: TooltipPlacement,\n): Record<string, number> {\n if (!layout) return { top: 0, left: 0 };\n\n const { pageX, pageY, width, height } = layout;\n\n switch (placement) {\n case 'bottom':\n return {\n top: pageY + height + POPOVER_GAP,\n left: Math.min(pageX + width / 2 - MAX_POP_WIDTH / 2, SW - MAX_POP_WIDTH - 8),\n };\n case 'top':\n return {\n top: Math.max(pageY - MAX_POP_HEIGHT - POPOVER_GAP, 8),\n left: Math.min(pageX + width / 2 - MAX_POP_WIDTH / 2, SW - MAX_POP_WIDTH - 8),\n };\n case 'right':\n return {\n top: pageY + height / 2 - MAX_POP_HEIGHT / 2,\n left: pageX + width + POPOVER_GAP,\n };\n case 'left':\n return {\n top: pageY + height / 2 - MAX_POP_HEIGHT / 2,\n left: Math.max(pageX - MAX_POP_WIDTH - POPOVER_GAP, 8),\n };\n default:\n return { top: pageY + height + POPOVER_GAP, left: pageX };\n }\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n },\n popover: {\n position: 'absolute',\n width: MAX_POP_WIDTH,\n maxHeight: MAX_POP_HEIGHT,\n zIndex: 9999,\n },\n popInner: {\n borderRadius: 14,\n overflow: 'hidden',\n },\n solidPop: {\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.14,\n shadowRadius: 16,\n elevation: 8,\n },\n scroll: {\n maxHeight: MAX_POP_HEIGHT,\n },\n});\n","export interface SnackbarOptions {\n message: string;\n duration?: number;\n action?: { label: string; onPress: () => void };\n position?: 'bottom' | 'top';\n glass?: boolean;\n}\n\ntype ShowCallback = (opts: SnackbarOptions) => void;\ntype HideCallback = () => void;\n\nlet showCb: ShowCallback | null = null;\nlet hideCb: HideCallback | null = null;\n\nexport const snackbar = {\n show(opts: SnackbarOptions): void {\n showCb?.(opts);\n },\n hide(): void {\n hideCb?.();\n },\n\n // Internal — used by SnackbarProvider\n _register(onShow: ShowCallback, onHide: HideCallback): () => void {\n showCb = onShow;\n hideCb = onHide;\n return () => {\n showCb = null;\n hideCb = null;\n };\n },\n};\n","import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport {\n View,\n Text,\n Pressable,\n StyleSheet,\n Platform,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useIsDark } from 'reactnatively-theme';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport { snackbar, type SnackbarOptions } from './snackbar-api';\nimport type { SnackbarProviderProps } from './Snackbar.types';\n\n// ─── Internal Snackbar bar ────────────────────────────────────────────────────\n\ninterface SnackbarBarProps {\n opts: SnackbarOptions;\n onHide: () => void;\n}\n\nconst SnackbarBar = React.memo<SnackbarBarProps>(({ opts, onHide }) => {\n const isDark = useIsDark();\n const opacity = useSharedValue(0);\n const translateY = useSharedValue(opts.position === 'top' ? -60 : 60);\n const isHiding = useRef(false);\n\n const doHide = useCallback(() => {\n if (isHiding.current) return;\n isHiding.current = true;\n opacity.value = withTiming(0, TIMING_EXIT, () => runOnJS(onHide)());\n translateY.value = withTiming(\n opts.position === 'top' ? -60 : 60,\n TIMING_EXIT,\n );\n }, [opacity, translateY, onHide, opts.position]);\n\n useEffect(() => {\n opacity.value = withSpring(1, SPRING_SNAPPY);\n translateY.value = withSpring(0, SPRING_SNAPPY);\n }, []);\n\n useEffect(() => {\n const dur = opts.duration ?? 3000;\n if (dur <= 0) return;\n const t = setTimeout(() => doHide(), dur);\n return () => clearTimeout(t);\n }, [opts.duration, doHide]);\n\n const animStyle = useAnimatedStyle(() => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }],\n };\n });\n\n const bg = isDark ? '#1e293b' : '#1a1a2e';\n const inner = (\n <View style={styles.snackInner}>\n <Text style={styles.message} numberOfLines={2}>{opts.message}</Text>\n {opts.action != null && (\n <Pressable\n onPress={() => { opts.action!.onPress(); doHide(); }}\n style={styles.actionBtn}\n accessibilityRole=\"button\"\n >\n <Text style={styles.actionText}>{opts.action.label}</Text>\n </Pressable>\n )}\n </View>\n );\n\n return (\n <Animated.View style={[styles.snack, animStyle]}>\n {opts.glass ? (\n <GlassView elevation={3} borderRadius={12}>\n {inner}\n </GlassView>\n ) : (\n <View style={[styles.solidSnack, { backgroundColor: bg }]}>\n {inner}\n </View>\n )}\n </Animated.View>\n );\n});\n\nSnackbarBar.displayName = 'SnackbarBar';\n\n// ─── Provider ─────────────────────────────────────────────────────────────────\n\nexport function SnackbarProvider({ children }: SnackbarProviderProps) {\n const [current, setCurrent] = useState<SnackbarOptions | null>(null);\n const keyRef = useRef(0);\n const [key, setKey] = useState(0);\n\n const handleShow = useCallback((opts: SnackbarOptions) => {\n keyRef.current += 1;\n setKey(keyRef.current);\n setCurrent(opts);\n }, []);\n\n const handleHide = useCallback(() => {\n setCurrent(null);\n }, []);\n\n useEffect(() => {\n return snackbar._register(handleShow, handleHide);\n }, [handleShow, handleHide]);\n\n const position = current?.position ?? 'bottom';\n const topOff = Platform.OS === 'ios' ? 52 : 28;\n const botOff = Platform.OS === 'ios' ? 40 : 20;\n\n return (\n <>\n {children}\n {current != null && (\n <View\n style={[\n styles.container,\n position === 'top'\n ? { top: topOff }\n : { bottom: botOff },\n ]}\n pointerEvents=\"box-none\"\n >\n <SnackbarBar\n key={key}\n opts={current}\n onHide={handleHide}\n />\n </View>\n )}\n </>\n );\n}\n\nSnackbarProvider.displayName = 'SnackbarProvider';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n left: 16,\n right: 16,\n zIndex: 9999,\n pointerEvents: 'box-none',\n } as any,\n snack: {\n width: '100%',\n },\n solidSnack: {\n borderRadius: 12,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.18,\n shadowRadius: 12,\n elevation: 6,\n },\n snackInner: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 48,\n },\n message: {\n flex: 1,\n fontSize: 14,\n fontWeight: '500',\n color: '#fff',\n lineHeight: 20,\n marginRight: 8,\n },\n actionBtn: {\n paddingVertical: 4,\n paddingHorizontal: 8,\n marginLeft: 4,\n },\n actionText: {\n fontSize: 13,\n fontWeight: '700',\n color: '#a5b4fc',\n },\n});\n","import React, {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type {\n TabListProps,\n TabPanelProps,\n TabProps,\n TabsContextValue,\n TabsProps,\n} from './Tabs.types';\n\n// ─── Context ─────────────────────────────────────────────────────────────────\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext(): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error('Tabs sub-components must be used inside <Tabs>');\n return ctx;\n}\n\n// ─── TabList ─────────────────────────────────────────────────────────────────\n\nconst TabList = React.memo<TabListProps>(({ children, style }) => {\n const { variant, orientation } = useTabsContext();\n const { theme } = useTheme();\n\n const containerStyle = useMemo((): ViewStyle => {\n const base: ViewStyle = {\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n };\n if (variant === 'enclosed') {\n return {\n ...base,\n backgroundColor: theme.colors.backgroundDeep,\n borderRadius: 12,\n padding: 4,\n };\n }\n if (variant === 'pills') {\n return { ...base };\n }\n if (variant === 'line') {\n return {\n ...base,\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: theme.colors.border,\n };\n }\n if (variant === 'glass') {\n return { ...base };\n }\n return base;\n }, [variant, orientation, theme]);\n\n return (\n <ScrollView\n horizontal={orientation !== 'vertical'}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n contentContainerStyle={[containerStyle, style]}\n >\n {children}\n </ScrollView>\n );\n});\n\nTabList.displayName = 'Tabs.List';\n\n// ─── Tab ─────────────────────────────────────────────────────────────────────\n\nconst Tab = React.memo<TabProps>(({ value, label, icon, isDisabled = false }) => {\n const { activeTab, setActiveTab, variant } = useTabsContext();\n const { theme } = useTheme();\n const isActive = activeTab === value;\n\n // Per-tab indicator animation for 'line' variant\n const indicatorOpacity = useSharedValue(isActive ? 1 : 0);\n const bgScale = useSharedValue(isActive ? 1 : 0);\n\n React.useEffect(() => {\n if (variant === 'line') {\n indicatorOpacity.value = withSpring(isActive ? 1 : 0, SPRING_SNAPPY);\n }\n if (variant === 'pills' || variant === 'enclosed') {\n bgScale.value = withSpring(isActive ? 1 : 0, SPRING_SNAPPY);\n }\n }, [isActive, variant]);\n\n const indicatorStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { opacity: indicatorOpacity.value };\n });\n\n const pillBgStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { opacity: bgScale.value };\n });\n\n const handlePress = useCallback(() => {\n if (!isDisabled) setActiveTab(value);\n }, [isDisabled, setActiveTab, value]);\n\n const labelColor = isActive\n ? theme.colors.primary\n : isDisabled\n ? theme.colors.textDisabled\n : theme.colors.textSecondary;\n\n if (variant === 'glass') {\n return (\n <Pressable\n onPress={handlePress}\n disabled={isDisabled}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected: isActive, disabled: isDisabled }}\n style={[styles.tab, styles.tabGlass]}\n >\n {isActive ? (\n <GlassView elevation={2} borderRadius={10}>\n <View style={styles.tabInner}>\n {icon != null && <View style={styles.tabIcon}>{icon}</View>}\n <Text\n style={[styles.tabLabel, { color: theme.colors.primary, fontWeight: '600' }]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n </View>\n </GlassView>\n ) : (\n <View style={styles.tabInner}>\n {icon != null && <View style={styles.tabIcon}>{icon}</View>}\n <Text\n style={[styles.tabLabel, { color: labelColor }]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n </View>\n )}\n </Pressable>\n );\n }\n\n return (\n <Pressable\n onPress={handlePress}\n disabled={isDisabled}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected: isActive, disabled: isDisabled }}\n style={styles.tab}\n >\n {(variant === 'pills' || variant === 'enclosed') && (\n <Animated.View\n style={[\n StyleSheet.absoluteFill,\n styles.pillBg,\n { backgroundColor: variant === 'enclosed' ? theme.colors.surface : theme.colors.primaryMuted },\n pillBgStyle,\n ]}\n />\n )}\n <View style={styles.tabInner}>\n {icon != null && <View style={styles.tabIcon}>{icon}</View>}\n <Text\n style={[\n styles.tabLabel,\n { color: labelColor, fontWeight: isActive ? '600' : '400' },\n ]}\n allowFontScaling={false}\n >\n {label}\n </Text>\n </View>\n {variant === 'line' && (\n <Animated.View\n style={[\n styles.lineIndicator,\n { backgroundColor: theme.colors.primary },\n indicatorStyle,\n ]}\n />\n )}\n </Pressable>\n );\n});\n\nTab.displayName = 'Tabs.Tab';\n\n// ─── TabPanel ────────────────────────────────────────────────────────────────\n\nconst TabPanel = React.memo<TabPanelProps>(({ value, children, style }) => {\n const { activeTab } = useTabsContext();\n if (activeTab !== value) return null;\n return <View style={[styles.panel, style]}>{children}</View>;\n});\n\nTabPanel.displayName = 'Tabs.Panel';\n\n// ─── TabsRoot ────────────────────────────────────────────────────────────────\n\nconst TabsRoot = React.memo<TabsProps>(\n ({\n value,\n defaultValue = '',\n onChange,\n variant = 'line',\n orientation = 'horizontal',\n glass = false,\n children,\n style,\n }) => {\n const [internalTab, setInternalTab] = useState(defaultValue);\n const activeTab = value !== undefined ? value : internalTab;\n\n const setActiveTab = useCallback(\n (next: string) => {\n if (value === undefined) setInternalTab(next);\n onChange?.(next);\n },\n [value, onChange],\n );\n\n const ctx = useMemo(\n (): TabsContextValue => ({ activeTab, setActiveTab, variant, orientation }),\n [activeTab, setActiveTab, variant, orientation],\n );\n\n const Container = glass ? GlassView : View;\n const containerProps = glass\n ? { elevation: 1 as const, borderRadius: 16 }\n : {};\n\n return (\n <TabsContext.Provider value={ctx}>\n {glass ? (\n <GlassView elevation={1} borderRadius={16} style={style}>\n {children}\n </GlassView>\n ) : (\n <View style={[styles.root, style]}>{children}</View>\n )}\n </TabsContext.Provider>\n );\n },\n);\n\nTabsRoot.displayName = 'Tabs';\n\n// ─── Compound assembly ────────────────────────────────────────────────────────\n\nexport const Tabs = Object.assign(TabsRoot, {\n Tab,\n Panel: TabPanel,\n List: TabList,\n});\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n root: {\n flexShrink: 1,\n },\n tab: {\n paddingHorizontal: 16,\n paddingVertical: 10,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n overflow: 'hidden',\n },\n tabGlass: {\n overflow: 'hidden',\n },\n tabInner: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n tabIcon: {\n marginRight: 6,\n },\n tabLabel: {\n fontSize: 14,\n lineHeight: 20,\n },\n pillBg: {\n borderRadius: 10,\n },\n lineIndicator: {\n position: 'absolute',\n bottom: 0,\n left: 8,\n right: 8,\n height: 2,\n borderRadius: 1,\n },\n panel: {\n flex: 1,\n },\n});\n","import React, { useCallback, useMemo, useState } from 'react';\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type LayoutChangeEvent,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { SegmentedTabsProps, SegmentedTabsSize } from './SegmentedTabs.types';\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\ninterface SizeConfig {\n height: number;\n fontSize: number;\n paddingVertical: number;\n borderRadius: number;\n indicatorInset: number;\n}\n\nconst SIZE_CONFIG: Record<SegmentedTabsSize, SizeConfig> = {\n sm: { height: 32, fontSize: 12, paddingVertical: 4, borderRadius: 8, indicatorInset: 3 },\n md: { height: 40, fontSize: 14, paddingVertical: 6, borderRadius: 10, indicatorInset: 3 },\n lg: { height: 48, fontSize: 16, paddingVertical: 8, borderRadius: 12, indicatorInset: 4 },\n};\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const SegmentedTabs = React.memo<SegmentedTabsProps>(\n ({\n options,\n value,\n defaultValue,\n onChange,\n glass = false,\n size = 'md',\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const resolvedDefault = defaultValue ?? options[0]?.value ?? '';\n const [internalValue, setInternalValue] = useState(resolvedDefault);\n const activeValue = value !== undefined ? value : internalValue;\n const activeIndex = useMemo(\n () => Math.max(0, options.findIndex((o) => o.value === activeValue)),\n [options, activeValue],\n );\n\n const [containerWidth, setContainerWidth] = useState(0);\n const segmentWidth = containerWidth > 0 ? containerWidth / options.length : 0;\n\n const sz = SIZE_CONFIG[size];\n\n // translateX drives the sliding indicator\n const translateX = useSharedValue(0);\n\n // Update translateX when activeIndex or segmentWidth changes\n React.useEffect(() => {\n if (segmentWidth > 0) {\n translateX.value = withSpring(\n activeIndex * segmentWidth + sz.indicatorInset,\n SPRING_SNAPPY,\n );\n }\n }, [activeIndex, segmentWidth, sz.indicatorInset]);\n\n const indicatorAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { transform: [{ translateX: translateX.value }] };\n });\n\n const handleLayout = useCallback((e: LayoutChangeEvent) => {\n setContainerWidth(e.nativeEvent.layout.width);\n }, []);\n\n const handleSelect = useCallback(\n (optValue: string) => {\n if (value === undefined) setInternalValue(optValue);\n onChange?.(optValue);\n },\n [value, onChange],\n );\n\n const indicatorWidth = segmentWidth > 0 ? segmentWidth - sz.indicatorInset * 2 : 0;\n\n const containerBg = glass\n ? undefined\n : isDark\n ? 'rgba(255,255,255,0.08)'\n : 'rgba(0,0,0,0.06)';\n\n const indicatorBg = glass ? 'rgba(255,255,255,0.20)' : isDark ? '#3a3a4a' : '#ffffff';\n\n const inner = (\n <View\n style={[styles.track, { height: sz.height, borderRadius: sz.borderRadius }]}\n onLayout={handleLayout}\n >\n {/* Sliding indicator */}\n {indicatorWidth > 0 && (\n <Animated.View\n style={[\n styles.indicator,\n {\n width: indicatorWidth,\n height: sz.height - sz.indicatorInset * 2,\n top: sz.indicatorInset,\n borderRadius: sz.borderRadius - sz.indicatorInset,\n backgroundColor: indicatorBg,\n },\n indicatorAnimStyle,\n ]}\n />\n )}\n\n {/* Segments */}\n {options.map((option) => {\n const isActive = option.value === activeValue;\n return (\n <Pressable\n key={option.value}\n onPress={() => handleSelect(option.value)}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected: isActive }}\n style={styles.segment}\n >\n {option.icon != null && (\n <View style={styles.segmentIcon}>{option.icon}</View>\n )}\n <Text\n style={[\n styles.segmentLabel,\n {\n fontSize: sz.fontSize,\n color: isActive\n ? isDark ? '#ffffff' : theme.colors.text\n : theme.colors.textSecondary,\n fontWeight: isActive ? '600' : '400',\n },\n ]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n );\n\n if (glass) {\n return (\n <GlassView\n elevation={2}\n borderRadius={sz.borderRadius}\n style={style}\n >\n {inner}\n </GlassView>\n );\n }\n\n return (\n <View\n style={[\n styles.outer,\n { backgroundColor: containerBg, borderRadius: sz.borderRadius },\n style,\n ]}\n >\n {inner}\n </View>\n );\n },\n);\n\nSegmentedTabs.displayName = 'SegmentedTabs';\n\nconst styles = StyleSheet.create({\n outer: {\n overflow: 'hidden',\n },\n track: {\n flexDirection: 'row',\n alignItems: 'center',\n overflow: 'hidden',\n position: 'relative',\n },\n indicator: {\n position: 'absolute',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.08,\n shadowRadius: 3,\n elevation: 2,\n },\n segment: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1,\n },\n segmentIcon: {\n marginRight: 4,\n },\n segmentLabel: {\n lineHeight: 20,\n },\n});\n","import React, { useMemo } from 'react';\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n interpolate,\n useAnimatedStyle,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport type { TopNavigationProps } from './TopNavigation.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst IOS_STATUS_BAR_HEIGHT = 44;\nconst ANDROID_STATUS_BAR_HEIGHT = 24;\nconst NAV_HEIGHT = 56;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const TopNavigation = React.memo<TopNavigationProps>(\n ({\n title,\n subtitle,\n leading,\n trailing,\n glass = false,\n blur = false,\n scrollY,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const safeTop =\n Platform.OS === 'ios' ? IOS_STATUS_BAR_HEIGHT : ANDROID_STATUS_BAR_HEIGHT;\n\n const totalHeight = NAV_HEIGHT + safeTop;\n\n // Animated backdrop opacity when scroll-driven blur is enabled\n const backdropStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n if (!blur || !scrollY) return { opacity: 0 };\n return {\n opacity: interpolate(scrollY.value, [0, 50], [0, 1], 'clamp'),\n };\n });\n\n const backdropColor = isDark ? 'rgba(15,15,25,0.75)' : 'rgba(255,255,255,0.80)';\n\n const titleContent = (\n <View style={styles.titleBlock} pointerEvents=\"none\">\n {title != null && (\n <Text\n style={[styles.title, { color: theme.colors.text }]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {title}\n </Text>\n )}\n {subtitle != null && (\n <Text\n style={[styles.subtitle, { color: theme.colors.textSecondary }]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {subtitle}\n </Text>\n )}\n </View>\n );\n\n const row = (\n <View\n style={[\n styles.row,\n { height: NAV_HEIGHT },\n ]}\n >\n {/* Leading slot */}\n <View style={styles.sideSlot}>\n {leading != null ? leading : null}\n </View>\n\n {/* Center title */}\n {titleContent}\n\n {/* Trailing slot */}\n <View style={[styles.sideSlot, styles.trailingSlot]}>\n {trailing != null ? trailing : null}\n </View>\n </View>\n );\n\n if (glass) {\n return (\n <GlassView\n elevation={2}\n borderRadius={0}\n style={[{ paddingTop: safeTop, minHeight: totalHeight }, style]}\n >\n {/* Scroll-driven blur overlay */}\n {blur && (\n <Animated.View\n style={[\n StyleSheet.absoluteFill,\n { backgroundColor: backdropColor, borderRadius: 0 },\n backdropStyle,\n ]}\n pointerEvents=\"none\"\n />\n )}\n {row}\n </GlassView>\n );\n }\n\n const solidBg = isDark ? theme.colors.surface : theme.colors.surface;\n\n return (\n <View\n style={[\n styles.solidContainer,\n {\n paddingTop: safeTop,\n minHeight: totalHeight,\n backgroundColor: solidBg,\n borderBottomColor: theme.colors.border,\n },\n style,\n ]}\n >\n {blur && (\n <Animated.View\n style={[\n StyleSheet.absoluteFill,\n { backgroundColor: backdropColor },\n backdropStyle,\n ]}\n pointerEvents=\"none\"\n />\n )}\n {row}\n </View>\n );\n },\n);\n\nTopNavigation.displayName = 'TopNavigation';\n\nconst styles = StyleSheet.create({\n solidContainer: {\n width: '100%',\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n },\n sideSlot: {\n width: 52,\n alignItems: 'flex-start',\n justifyContent: 'center',\n },\n trailingSlot: {\n alignItems: 'flex-end',\n },\n titleBlock: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n fontSize: 17,\n fontWeight: '600',\n letterSpacing: -0.2,\n lineHeight: 22,\n },\n subtitle: {\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 16,\n marginTop: 1,\n },\n});\n","import React, { useCallback, useState } from 'react';\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n interpolate,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY, SPRING_BOUNCE, usePressAnimation } from 'reactnatively-animations';\nimport type { BottomNavigationItem, BottomNavigationProps } from './BottomNavigation.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst IOS_SAFE_BOTTOM = 20;\nconst ANDROID_SAFE_BOTTOM = 8;\n\n// ─── NavItem ─────────────────────────────────────────────────────────────────\n\ninterface NavItemProps {\n item: BottomNavigationItem;\n isActive: boolean;\n showLabel: boolean;\n onPress: (value: string) => void;\n}\n\nconst NavItem = React.memo<NavItemProps>(({ item, isActive, showLabel, onPress }) => {\n const { theme } = useTheme();\n const { animatedStyle, handlers } = usePressAnimation({ pressedScale: 0.88 });\n\n // Dot pulse animation for active state\n const dotScale = useSharedValue(isActive ? 1 : 0);\n const iconScale = useSharedValue(isActive ? 1 : 0.85);\n\n React.useEffect(() => {\n dotScale.value = withSpring(isActive ? 1 : 0, SPRING_BOUNCE);\n iconScale.value = withSpring(isActive ? 1 : 0.85, SPRING_SNAPPY);\n }, [isActive]);\n\n const dotStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ scale: dotScale.value }],\n opacity: dotScale.value,\n };\n });\n\n const iconWrapStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ scale: iconScale.value }],\n };\n });\n\n const activeColor = theme.colors.primary;\n const inactiveColor = theme.colors.textMuted;\n const color = isActive ? activeColor : inactiveColor;\n\n const handlePress = useCallback(() => onPress(item.value), [item.value, onPress]);\n\n const badgeCount = typeof item.badge === 'number' ? item.badge : undefined;\n const hasBadge = item.badge === true || (typeof item.badge === 'number' && item.badge > 0);\n\n return (\n <Pressable\n onPress={handlePress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n accessibilityRole=\"tab\"\n accessibilityState={{ selected: isActive }}\n accessibilityLabel={item.label}\n style={styles.navItem}\n >\n <Animated.View style={[styles.navItemInner, animatedStyle]}>\n {/* Icon with badge */}\n <View style={styles.iconWrapper}>\n <Animated.View style={iconWrapStyle}>\n {isActive && item.activeIcon != null ? item.activeIcon : item.icon}\n </Animated.View>\n\n {/* Badge */}\n {hasBadge && (\n <View style={[styles.badge, { backgroundColor: theme.colors.error }]}>\n {badgeCount != null && badgeCount > 0 && (\n <Text style={styles.badgeText} allowFontScaling={false}>\n {badgeCount > 99 ? '99+' : String(badgeCount)}\n </Text>\n )}\n </View>\n )}\n </View>\n\n {/* Label */}\n {showLabel && (\n <Text\n style={[\n styles.navLabel,\n {\n color,\n fontWeight: isActive ? '600' : '400',\n },\n ]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {item.label}\n </Text>\n )}\n\n {/* Active dot indicator */}\n <Animated.View\n style={[\n styles.activeDot,\n { backgroundColor: activeColor },\n dotStyle,\n ]}\n />\n </Animated.View>\n </Pressable>\n );\n});\n\nNavItem.displayName = 'BottomNavigation.Item';\n\n// ─── BottomNavigation ─────────────────────────────────────────────────────────\n\nexport const BottomNavigation = React.memo<BottomNavigationProps>(\n ({\n items,\n value,\n defaultValue,\n onChange,\n glass = false,\n showLabel = true,\n style,\n }) => {\n const { theme } = useTheme();\n const isDark = useIsDark();\n\n const resolvedDefault = defaultValue ?? items[0]?.value ?? '';\n const [internalValue, setInternalValue] = useState(resolvedDefault);\n const activeValue = value !== undefined ? value : internalValue;\n\n const handlePress = useCallback(\n (itemValue: string) => {\n if (value === undefined) setInternalValue(itemValue);\n onChange?.(itemValue);\n },\n [value, onChange],\n );\n\n const safeBottom =\n Platform.OS === 'ios' ? IOS_SAFE_BOTTOM : ANDROID_SAFE_BOTTOM;\n\n const bar = (\n <View style={[styles.bar, { paddingBottom: safeBottom }]}>\n {items.map((item) => (\n <NavItem\n key={item.value}\n item={item}\n isActive={item.value === activeValue}\n showLabel={showLabel}\n onPress={handlePress}\n />\n ))}\n </View>\n );\n\n if (glass) {\n return (\n <GlassView elevation={3} borderRadius={0} style={style}>\n {bar}\n </GlassView>\n );\n }\n\n return (\n <View\n style={[\n styles.solidContainer,\n {\n backgroundColor: theme.colors.surface,\n borderTopColor: theme.colors.border,\n },\n style,\n ]}\n >\n {bar}\n </View>\n );\n },\n);\n\nBottomNavigation.displayName = 'BottomNavigation';\n\nconst styles = StyleSheet.create({\n solidContainer: {\n borderTopWidth: StyleSheet.hairlineWidth,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: -2 },\n shadowOpacity: 0.06,\n shadowRadius: 8,\n elevation: 8,\n },\n bar: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n paddingTop: 8,\n },\n navItem: {\n flex: 1,\n alignItems: 'center',\n },\n navItemInner: {\n alignItems: 'center',\n paddingHorizontal: 4,\n minWidth: 44,\n },\n iconWrapper: {\n position: 'relative',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n },\n badge: {\n position: 'absolute',\n top: -4,\n right: -6,\n minWidth: 16,\n height: 16,\n borderRadius: 8,\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 3,\n },\n badgeText: {\n fontSize: 9,\n fontWeight: '700',\n color: '#fff',\n lineHeight: 12,\n },\n navLabel: {\n fontSize: 10,\n lineHeight: 14,\n marginTop: 3,\n textAlign: 'center',\n },\n activeDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n marginTop: 4,\n },\n});\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport {\n Modal,\n PanResponder,\n Pressable,\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n interpolate,\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { DrawerProps } from './Drawer.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst DEFAULT_WIDTH = 280;\nconst DRAG_CLOSE_THRESHOLD = 80;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const Drawer = React.memo<DrawerProps>(\n ({\n isOpen,\n onClose,\n placement = 'left',\n width = DEFAULT_WIDTH,\n children,\n glass = false,\n backdrop = true,\n style,\n }) => {\n const isDark = useIsDark();\n\n // translateX: 0 = fully open, -width (left) or +width (right) = hidden\n const translateX = useSharedValue(placement === 'left' ? -width : width);\n const backdropOpacity = useSharedValue(0);\n\n // Keep track of whether modal is mounted so we can animate after open\n const [visible, setVisible] = React.useState(isOpen);\n\n useEffect(() => {\n if (isOpen) {\n setVisible(true);\n // Animate in\n translateX.value = withSpring(0, SPRING_SNAPPY);\n backdropOpacity.value = withSpring(1, SPRING_SNAPPY);\n } else {\n // Animate out then unmount\n const target = placement === 'left' ? -width : width;\n translateX.value = withSpring(target, SPRING_SNAPPY, (finished) => {\n 'worklet';\n if (finished) runOnJS(setVisible)(false);\n });\n backdropOpacity.value = withSpring(0, SPRING_SNAPPY);\n }\n }, [isOpen, width, placement]);\n\n // PanResponder for swipe-to-close\n const dragOffset = useRef(0);\n\n const panResponder = useRef(\n PanResponder.create({\n onMoveShouldSetPanResponder: (_, gestureState) => {\n // Capture horizontal drags\n return Math.abs(gestureState.dx) > Math.abs(gestureState.dy) && Math.abs(gestureState.dx) > 8;\n },\n onPanResponderMove: (_, gestureState) => {\n const dx = gestureState.dx;\n if (placement === 'left') {\n // Only allow dragging left (negative direction)\n const clamped = Math.min(0, dx);\n translateX.value = clamped;\n } else {\n // Only allow dragging right (positive direction)\n const clamped = Math.max(0, dx);\n translateX.value = clamped;\n }\n dragOffset.current = Math.abs(dx);\n },\n onPanResponderRelease: (_, gestureState) => {\n const shouldClose = Math.abs(gestureState.dx) > DRAG_CLOSE_THRESHOLD;\n if (shouldClose) {\n runOnJS(onClose)();\n } else {\n // Snap back\n translateX.value = withSpring(0, SPRING_SNAPPY);\n }\n },\n }),\n ).current;\n\n const panelAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { transform: [{ translateX: translateX.value }] };\n });\n\n const backdropAnimStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { opacity: backdropOpacity.value };\n });\n\n if (!visible) return null;\n\n const panelContent = (\n <Animated.View\n style={[\n styles.panel,\n {\n width,\n [placement]: 0,\n },\n panelAnimStyle,\n ]}\n {...panResponder.panHandlers}\n >\n {glass ? (\n <GlassView elevation={3} borderRadius={0} style={[styles.panelInner, style]}>\n {children}\n </GlassView>\n ) : (\n <View\n style={[\n styles.panelInner,\n styles.solidPanel,\n {\n backgroundColor: isDark ? '#1a1a2e' : '#ffffff',\n shadowColor: placement === 'left' ? '#000' : '#000',\n },\n style,\n ]}\n >\n {children}\n </View>\n )}\n </Animated.View>\n );\n\n return (\n <Modal\n visible={visible}\n transparent\n animationType=\"none\"\n onRequestClose={onClose}\n statusBarTranslucent\n >\n <View style={styles.root}>\n {/* Backdrop */}\n {backdrop && (\n <Animated.View\n style={[styles.backdrop, backdropAnimStyle]}\n pointerEvents=\"auto\"\n >\n <Pressable style={StyleSheet.absoluteFill} onPress={onClose} />\n </Animated.View>\n )}\n\n {/* Drawer panel */}\n {panelContent}\n </View>\n </Modal>\n );\n },\n);\n\nDrawer.displayName = 'Drawer';\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'rgba(0,0,0,0.45)',\n },\n panel: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n },\n panelInner: {\n flex: 1,\n },\n solidPanel: {\n shadowOffset: { width: 4, height: 0 },\n shadowOpacity: 0.15,\n shadowRadius: 16,\n elevation: 16,\n },\n});\n","import React, { useState } from 'react';\nimport {\n StyleSheet,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { SidebarProps } from './Sidebar.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_COLLAPSED_WIDTH = 60;\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const Sidebar = React.memo<SidebarProps>(\n ({\n isOpen,\n defaultOpen = true,\n width = DEFAULT_WIDTH,\n collapsedWidth = DEFAULT_COLLAPSED_WIDTH,\n children,\n glass = false,\n style,\n }) => {\n const { theme } = useTheme();\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const resolvedOpen = isOpen !== undefined ? isOpen : internalOpen;\n\n const targetWidth = resolvedOpen ? width : collapsedWidth;\n const animatedWidth = useSharedValue(targetWidth);\n\n React.useEffect(() => {\n animatedWidth.value = withSpring(resolvedOpen ? width : collapsedWidth, SPRING_SNAPPY);\n }, [resolvedOpen, width, collapsedWidth]);\n\n const animStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { width: animatedWidth.value };\n });\n\n if (glass) {\n return (\n <Animated.View style={[styles.root, animStyle]}>\n <GlassView elevation={2} borderRadius={0} style={[styles.inner, style]}>\n {children}\n </GlassView>\n </Animated.View>\n );\n }\n\n return (\n <Animated.View\n style={[\n styles.root,\n animStyle,\n {\n backgroundColor: theme.colors.surface,\n borderRightColor: theme.colors.border,\n },\n style,\n ]}\n >\n <View style={styles.inner}>{children}</View>\n </Animated.View>\n );\n },\n);\n\nSidebar.displayName = 'Sidebar';\n\nconst styles = StyleSheet.create({\n root: {\n borderRightWidth: StyleSheet.hairlineWidth,\n overflow: 'hidden',\n height: '100%',\n shadowColor: '#000',\n shadowOffset: { width: 2, height: 0 },\n shadowOpacity: 0.06,\n shadowRadius: 8,\n elevation: 4,\n },\n inner: {\n flex: 1,\n },\n});\n","import React, { useMemo } from 'react';\nimport {\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n} from 'react-native';\nimport { useTheme } from 'reactnatively-theme';\nimport type { BreadcrumbItem, BreadcrumbProps } from './Breadcrumb.types';\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const Breadcrumb = React.memo<BreadcrumbProps>(\n ({ items, separator = '/', maxItems, style }) => {\n const { theme } = useTheme();\n\n // Build the visible list (applying maxItems truncation if needed)\n const visibleItems = useMemo((): Array<BreadcrumbItem | null> => {\n if (!maxItems || items.length <= maxItems) return items;\n\n // Show first item, ellipsis (null), then last (maxItems - 1) items\n const tail = items.slice(items.length - (maxItems - 1));\n return [items[0]!, null, ...tail];\n }, [items, maxItems]);\n\n const renderSeparator = (key: string) => {\n if (typeof separator === 'string') {\n return (\n <Text\n key={key}\n style={[styles.separator, { color: theme.colors.textMuted }]}\n allowFontScaling={false}\n >\n {separator}\n </Text>\n );\n }\n return <View key={key} style={styles.separatorView}>{separator}</View>;\n };\n\n return (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={[styles.container, style]}\n >\n {visibleItems.map((item, index) => {\n const isLast = index === visibleItems.length - 1;\n const sepKey = `sep-${index}`;\n\n // Ellipsis placeholder\n if (item === null) {\n return (\n <React.Fragment key=\"ellipsis\">\n <Text\n style={[styles.ellipsis, { color: theme.colors.textMuted }]}\n allowFontScaling={false}\n >\n ...\n </Text>\n {renderSeparator(sepKey)}\n </React.Fragment>\n );\n }\n\n const crumb = (\n <React.Fragment key={`crumb-${index}`}>\n {isLast ? (\n // Last item — not pressable, bold\n <View style={styles.crumb}>\n {item.icon != null && <View style={styles.crumbIcon}>{item.icon}</View>}\n <Text\n style={[\n styles.crumbLabel,\n styles.crumbLabelActive,\n { color: theme.colors.text },\n ]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {item.label}\n </Text>\n </View>\n ) : (\n // Earlier items — pressable, subdued\n <Pressable\n onPress={item.onPress}\n accessibilityRole=\"link\"\n style={({ pressed }) => [\n styles.crumb,\n pressed && styles.crumbPressed,\n ]}\n >\n {item.icon != null && (\n <View style={styles.crumbIcon}>{item.icon}</View>\n )}\n <Text\n style={[\n styles.crumbLabel,\n { color: theme.colors.textSecondary },\n ]}\n numberOfLines={1}\n allowFontScaling={false}\n >\n {item.label}\n </Text>\n </Pressable>\n )}\n {!isLast && renderSeparator(sepKey)}\n </React.Fragment>\n );\n\n return crumb;\n })}\n </ScrollView>\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n flexWrap: 'nowrap',\n },\n crumb: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n crumbPressed: {\n opacity: 0.65,\n },\n crumbIcon: {\n marginRight: 4,\n },\n crumbLabel: {\n fontSize: 14,\n fontWeight: '400',\n lineHeight: 20,\n },\n crumbLabelActive: {\n fontWeight: '600',\n },\n separator: {\n fontSize: 14,\n lineHeight: 20,\n marginHorizontal: 6,\n },\n separatorView: {\n marginHorizontal: 6,\n },\n ellipsis: {\n fontSize: 14,\n lineHeight: 20,\n },\n});\n","import React, { useEffect } from 'react';\nimport {\n StyleSheet,\n Text,\n View,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n withTiming,\n interpolate,\n} from 'react-native-reanimated';\nimport { useTheme, useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_BOUNCE, TIMING_FAST } from 'reactnatively-animations';\nimport type { StepItem, StepperProps, StepStatus, StepperVariant } from './Stepper.types';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst CIRCLE_SIZE = 32;\nconst DOT_SIZE = 12;\nconst CONNECTOR_THICKNESS = 2;\n\n// ─── Derived status helper ────────────────────────────────────────────────────\n\nfunction resolveStatus(step: StepItem, index: number, activeStep: number): StepStatus {\n if (step.status) return step.status;\n if (index < activeStep) return 'complete';\n if (index === activeStep) return 'current';\n return 'upcoming';\n}\n\n// ─── StepIndicator ───────────────────────────────────────────────────────────\n\ninterface StepIndicatorProps {\n status: StepStatus;\n stepNumber: number;\n variant: StepperVariant;\n}\n\nconst StepIndicator = React.memo<StepIndicatorProps>(({ status, stepNumber, variant }) => {\n const { theme } = useTheme();\n\n // Pulse animation for current step\n const pulse = useSharedValue(status === 'current' ? 1 : 0);\n\n useEffect(() => {\n if (status === 'current') {\n // Pulse ring\n pulse.value = withSpring(1, SPRING_BOUNCE);\n } else {\n pulse.value = withTiming(0, TIMING_FAST);\n }\n }, [status]);\n\n const pulseStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ scale: interpolate(pulse.value, [0, 1], [0.6, 1]) }],\n opacity: pulse.value,\n };\n });\n\n const primaryColor = theme.colors.primary;\n const grayColor = theme.colors.border;\n const isDone = status === 'complete';\n const isCurrent = status === 'current';\n\n if (variant === 'dots') {\n const dotColor = isDone || isCurrent ? primaryColor : grayColor;\n return (\n <View style={styles.dotWrapper}>\n {isCurrent && (\n <Animated.View\n style={[\n styles.dotRing,\n { borderColor: primaryColor },\n pulseStyle,\n ]}\n />\n )}\n <View\n style={[\n styles.dot,\n { backgroundColor: dotColor },\n ]}\n />\n </View>\n );\n }\n\n // circles / numbers\n const bgColor = isDone ? primaryColor : isCurrent ? 'transparent' : 'transparent';\n const borderColor = isDone || isCurrent ? primaryColor : grayColor;\n\n return (\n <View style={styles.circleWrapper}>\n {isCurrent && (\n <Animated.View\n style={[\n styles.circleRing,\n { borderColor: primaryColor },\n pulseStyle,\n ]}\n />\n )}\n <View\n style={[\n styles.circle,\n {\n backgroundColor: bgColor,\n borderColor,\n borderWidth: isDone ? 0 : 2,\n },\n ]}\n >\n {isDone ? (\n <Text style={styles.checkmark} allowFontScaling={false}>\n ✓\n </Text>\n ) : variant === 'numbers' ? (\n <Text\n style={[\n styles.stepNumber,\n { color: isCurrent ? primaryColor : grayColor },\n ]}\n allowFontScaling={false}\n >\n {stepNumber}\n </Text>\n ) : null}\n </View>\n </View>\n );\n});\n\nStepIndicator.displayName = 'Stepper.Indicator';\n\n// ─── Connector ───────────────────────────────────────────────────────────────\n\ninterface ConnectorProps {\n isComplete: boolean;\n orientation: 'horizontal' | 'vertical';\n}\n\nconst Connector = React.memo<ConnectorProps>(({ isComplete, orientation }) => {\n const { theme } = useTheme();\n const fillProgress = useSharedValue(isComplete ? 1 : 0);\n\n useEffect(() => {\n fillProgress.value = withTiming(isComplete ? 1 : 0, TIMING_FAST);\n }, [isComplete]);\n\n const fillStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n if (orientation === 'horizontal') {\n return { width: `${fillProgress.value * 100}%` as any };\n }\n return { height: `${fillProgress.value * 100}%` as any };\n });\n\n const isHoriz = orientation === 'horizontal';\n\n return (\n <View\n style={[\n styles.connectorTrack,\n isHoriz ? styles.connectorHoriz : styles.connectorVert,\n { backgroundColor: theme.colors.border },\n ]}\n >\n <Animated.View\n style={[\n isHoriz ? styles.connectorFillHoriz : styles.connectorFillVert,\n { backgroundColor: theme.colors.primary },\n fillStyle,\n ]}\n />\n </View>\n );\n});\n\nConnector.displayName = 'Stepper.Connector';\n\n// ─── Single Step ─────────────────────────────────────────────────────────────\n\ninterface StepProps {\n step: StepItem;\n index: number;\n total: number;\n activeStep: number;\n variant: StepperVariant;\n orientation: 'horizontal' | 'vertical';\n}\n\nconst Step = React.memo<StepProps>(({ step, index, total, activeStep, variant, orientation }) => {\n const { theme } = useTheme();\n const status = resolveStatus(step, index, activeStep);\n const isLast = index === total - 1;\n const isHoriz = orientation === 'horizontal';\n\n const labelColor = status === 'upcoming' ? theme.colors.textMuted : theme.colors.text;\n const descColor = theme.colors.textSecondary;\n\n if (isHoriz) {\n return (\n <View style={styles.stepHoriz}>\n {/* Indicator + connector row */}\n <View style={styles.stepHorizTrack}>\n <StepIndicator status={status} stepNumber={index + 1} variant={variant} />\n {!isLast && (\n <View style={styles.connectorHorizWrapper}>\n <Connector isComplete={status === 'complete'} orientation=\"horizontal\" />\n </View>\n )}\n </View>\n {/* Label below indicator */}\n <View style={styles.stepLabelHoriz}>\n <Text\n style={[styles.stepLabel, { color: labelColor }]}\n numberOfLines={2}\n allowFontScaling={false}\n >\n {step.label}\n </Text>\n {step.description != null && (\n <Text\n style={[styles.stepDesc, { color: descColor }]}\n numberOfLines={2}\n allowFontScaling={false}\n >\n {step.description}\n </Text>\n )}\n </View>\n </View>\n );\n }\n\n // Vertical layout\n return (\n <View style={styles.stepVert}>\n <View style={styles.stepVertLeft}>\n <StepIndicator status={status} stepNumber={index + 1} variant={variant} />\n {!isLast && (\n <View style={styles.connectorVertWrapper}>\n <Connector isComplete={status === 'complete'} orientation=\"vertical\" />\n </View>\n )}\n </View>\n <View style={styles.stepVertContent}>\n <Text\n style={[styles.stepLabel, { color: labelColor }]}\n allowFontScaling={false}\n >\n {step.label}\n </Text>\n {step.description != null && (\n <Text\n style={[styles.stepDesc, { color: descColor }]}\n allowFontScaling={false}\n >\n {step.description}\n </Text>\n )}\n </View>\n </View>\n );\n});\n\nStep.displayName = 'Stepper.Step';\n\n// ─── Stepper ─────────────────────────────────────────────────────────────────\n\nexport const Stepper = React.memo<StepperProps>(\n ({\n steps,\n activeStep = 0,\n orientation = 'horizontal',\n variant = 'circles',\n glass = false,\n style,\n }) => {\n const content = (\n <View\n style={[\n orientation === 'horizontal' ? styles.rootHoriz : styles.rootVert,\n ]}\n >\n {steps.map((step, index) => (\n <Step\n key={`step-${index}`}\n step={step}\n index={index}\n total={steps.length}\n activeStep={activeStep}\n variant={variant}\n orientation={orientation}\n />\n ))}\n </View>\n );\n\n if (glass) {\n return (\n <GlassView elevation={1} borderRadius={16} style={style}>\n <View style={styles.glassPadding}>{content}</View>\n </GlassView>\n );\n }\n\n return <View style={style}>{content}</View>;\n },\n);\n\nStepper.displayName = 'Stepper';\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n rootHoriz: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n rootVert: {\n flexDirection: 'column',\n },\n glassPadding: {\n padding: 16,\n },\n\n // Horizontal step\n stepHoriz: {\n flex: 1,\n alignItems: 'center',\n },\n stepHorizTrack: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n },\n connectorHorizWrapper: {\n flex: 1,\n marginHorizontal: 4,\n },\n stepLabelHoriz: {\n alignItems: 'center',\n marginTop: 8,\n paddingHorizontal: 4,\n },\n\n // Vertical step\n stepVert: {\n flexDirection: 'row',\n marginBottom: 4,\n },\n stepVertLeft: {\n alignItems: 'center',\n marginRight: 12,\n },\n stepVertContent: {\n flex: 1,\n paddingTop: 6,\n paddingBottom: 16,\n },\n connectorVertWrapper: {\n flex: 1,\n alignItems: 'center',\n marginTop: 4,\n },\n\n // Circle indicator\n circleWrapper: {\n width: CIRCLE_SIZE,\n height: CIRCLE_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n },\n circle: {\n width: CIRCLE_SIZE,\n height: CIRCLE_SIZE,\n borderRadius: CIRCLE_SIZE / 2,\n alignItems: 'center',\n justifyContent: 'center',\n },\n circleRing: {\n position: 'absolute',\n width: CIRCLE_SIZE + 8,\n height: CIRCLE_SIZE + 8,\n borderRadius: (CIRCLE_SIZE + 8) / 2,\n borderWidth: 2,\n opacity: 0.4,\n },\n checkmark: {\n fontSize: 14,\n fontWeight: '700',\n color: '#ffffff',\n lineHeight: 18,\n },\n stepNumber: {\n fontSize: 13,\n fontWeight: '600',\n lineHeight: 18,\n },\n\n // Dot indicator\n dotWrapper: {\n width: DOT_SIZE + 8,\n height: DOT_SIZE + 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n dot: {\n width: DOT_SIZE,\n height: DOT_SIZE,\n borderRadius: DOT_SIZE / 2,\n },\n dotRing: {\n position: 'absolute',\n width: DOT_SIZE + 8,\n height: DOT_SIZE + 8,\n borderRadius: (DOT_SIZE + 8) / 2,\n borderWidth: 2,\n opacity: 0.4,\n },\n\n // Connector\n connectorTrack: {\n borderRadius: CONNECTOR_THICKNESS / 2,\n overflow: 'hidden',\n },\n connectorHoriz: {\n height: CONNECTOR_THICKNESS,\n width: '100%',\n },\n connectorVert: {\n width: CONNECTOR_THICKNESS,\n flex: 1,\n minHeight: 24,\n },\n connectorFillHoriz: {\n height: '100%',\n },\n connectorFillVert: {\n width: '100%',\n },\n\n // Labels\n stepLabel: {\n fontSize: 13,\n fontWeight: '500',\n lineHeight: 18,\n textAlign: 'left',\n },\n stepDesc: {\n fontSize: 12,\n fontWeight: '400',\n lineHeight: 16,\n marginTop: 2,\n },\n});\n","import React, { useCallback, useEffect } from 'react';\nimport {\n Modal as RNModal,\n View,\n Text,\n Pressable,\n StyleSheet,\n Dimensions,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { useTheme } from 'reactnatively-theme';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport type { ModalProps, ModalSize } from './Modal.types';\n\n// ─── Size map ─────────────────────────────────────────────────────────────────\nconst { width: SCREEN_WIDTH } = Dimensions.get('window');\n\nfunction resolveMaxWidth(size: ModalSize): number | string {\n switch (size) {\n case 'sm': return 320;\n case 'md': return 480;\n case 'lg': return 640;\n case 'xl': return 768;\n case 'full': return '95%';\n default: return 480;\n }\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const Modal = React.memo<ModalProps>(\n ({\n isOpen,\n onClose,\n children,\n title,\n size = 'md',\n glass = false,\n isDismissible = true,\n showCloseButton = true,\n style,\n }) => {\n const isDark = useIsDark();\n const scale = useSharedValue(0.9);\n const opacity = useSharedValue(0);\n\n const runClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n // Entrance animation when isOpen becomes true\n useEffect(() => {\n if (isOpen) {\n scale.value = withSpring(1, SPRING_SNAPPY);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n }\n }, [isOpen]);\n\n const handleClose = useCallback(() => {\n scale.value = withTiming(0.9, TIMING_EXIT, (finished) => {\n if (finished) runOnJS(runClose)();\n });\n opacity.value = withTiming(0, TIMING_EXIT);\n }, [runClose]);\n\n const handleBackdropPress = useCallback(() => {\n if (isDismissible) handleClose();\n }, [isDismissible, handleClose]);\n\n const animatedCardStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n const maxWidth = resolveMaxWidth(size);\n const cardBg = isDark ? '#1e1e30' : '#ffffff';\n\n const headerRow = (showCloseButton || title != null) ? (\n <View style={styles.headerRow}>\n {title != null ? (\n <Text\n style={[styles.title, { color: isDark ? '#f1f5f9' : '#0f172a' }]}\n numberOfLines={2}\n >\n {title}\n </Text>\n ) : (\n <View style={styles.flex} />\n )}\n {showCloseButton && (\n <Pressable\n onPress={handleClose}\n style={styles.closeBtn}\n accessibilityLabel=\"Close modal\"\n accessibilityRole=\"button\"\n >\n <Text style={[styles.closeText, { color: isDark ? '#94a3b8' : '#64748b' }]}>\n ✕\n </Text>\n </Pressable>\n )}\n </View>\n ) : null;\n\n const cardContent = (\n <>\n {headerRow}\n {children}\n </>\n );\n\n return (\n <RNModal\n visible={isOpen}\n transparent\n hardwareAccelerated\n animationType=\"none\"\n onRequestClose={isDismissible ? handleClose : undefined}\n statusBarTranslucent\n >\n <View style={styles.backdrop}>\n {/* Backdrop touch target */}\n <Pressable\n style={StyleSheet.absoluteFill}\n onPress={handleBackdropPress}\n accessibilityLabel=\"Close modal backdrop\"\n />\n\n <Animated.View\n style={[\n styles.card,\n { maxWidth: maxWidth as any, backgroundColor: glass ? 'transparent' : cardBg },\n animatedCardStyle,\n style,\n ]}\n >\n {glass ? (\n <GlassView elevation={3} borderRadius={20} style={styles.glassCard}>\n {cardContent}\n </GlassView>\n ) : (\n cardContent\n )}\n </Animated.View>\n </View>\n </RNModal>\n );\n },\n);\n\nModal.displayName = 'Modal';\n\nconst styles = StyleSheet.create({\n backdrop: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.6)',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 16,\n },\n card: {\n width: '100%',\n borderRadius: 20,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 8 },\n shadowOpacity: 0.2,\n shadowRadius: 24,\n elevation: 10,\n },\n glassCard: {\n borderRadius: 20,\n },\n headerRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingTop: 16,\n paddingLeft: 20,\n paddingRight: 12,\n paddingBottom: 8,\n },\n flex: {\n flex: 1,\n },\n title: {\n flex: 1,\n fontSize: 18,\n fontWeight: '700',\n lineHeight: 24,\n },\n closeBtn: {\n width: 36,\n height: 36,\n borderRadius: 18,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 8,\n },\n closeText: {\n fontSize: 16,\n lineHeight: 20,\n fontWeight: '600',\n },\n});\n","import React, { useCallback, useEffect } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n StyleSheet,\n Dimensions,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport type { ActionSheetProps } from './ActionSheet.types';\n\nconst { height: SCREEN_HEIGHT } = Dimensions.get('window');\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const ActionSheet = React.memo<ActionSheetProps>(\n ({\n isOpen,\n onClose,\n title,\n message,\n actions,\n cancelLabel = 'Cancel',\n glass = false,\n }) => {\n const isDark = useIsDark();\n const translateY = useSharedValue(SCREEN_HEIGHT);\n\n const runClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n useEffect(() => {\n if (isOpen) {\n translateY.value = withSpring(0, SPRING_SNAPPY);\n }\n }, [isOpen]);\n\n const handleClose = useCallback(() => {\n translateY.value = withTiming(SCREEN_HEIGHT, TIMING_EXIT, (finished) => {\n if (finished) runOnJS(runClose)();\n });\n }, [runClose]);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [{ translateY: translateY.value }],\n };\n });\n\n const panelBg = isDark ? '#1e1e30' : '#ffffff';\n const divider = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.08)';\n const textBase = isDark ? '#f1f5f9' : '#0f172a';\n const subText = isDark ? '#94a3b8' : '#64748b';\n\n const actionItems = (\n <>\n {(title != null || message != null) && (\n <View style={[styles.header, { borderBottomColor: divider }]}>\n {title != null && (\n <Text style={[styles.headerTitle, { color: subText }]}>{title}</Text>\n )}\n {message != null && (\n <Text style={[styles.headerMessage, { color: subText }]}>{message}</Text>\n )}\n </View>\n )}\n\n {actions.map((action, idx) => (\n <React.Fragment key={idx}>\n {idx > 0 && <View style={[styles.divider, { backgroundColor: divider }]} />}\n <Pressable\n onPress={() => {\n if (action.isDisabled) return;\n action.onPress();\n handleClose();\n }}\n style={({ pressed }) => [\n styles.actionRow,\n pressed && styles.actionRowPressed,\n ]}\n disabled={action.isDisabled}\n accessibilityRole=\"button\"\n accessibilityLabel={action.label}\n >\n {action.icon != null && (\n <View style={styles.actionIcon}>{action.icon}</View>\n )}\n <Text\n style={[\n styles.actionLabel,\n {\n color: action.isDestructive\n ? '#ef4444'\n : action.isDisabled\n ? subText\n : textBase,\n opacity: action.isDisabled ? 0.45 : 1,\n },\n ]}\n >\n {action.label}\n </Text>\n </Pressable>\n </React.Fragment>\n ))}\n </>\n );\n\n return (\n <Modal\n visible={isOpen}\n transparent\n hardwareAccelerated\n animationType=\"none\"\n onRequestClose={handleClose}\n statusBarTranslucent\n >\n <View style={styles.backdrop}>\n <Pressable\n style={StyleSheet.absoluteFill}\n onPress={handleClose}\n accessibilityLabel=\"Close action sheet\"\n />\n\n <Animated.View style={[styles.container, animatedStyle]}>\n {/* Actions panel */}\n {glass ? (\n <GlassView elevation={3} borderRadius={16} style={styles.panelGlass}>\n {actionItems}\n </GlassView>\n ) : (\n <View\n style={[\n styles.panel,\n { backgroundColor: panelBg },\n ]}\n >\n {actionItems}\n </View>\n )}\n\n {/* Cancel panel (iOS-style separate card) */}\n <View style={styles.cancelSpacing}>\n {glass ? (\n <GlassView elevation={2} borderRadius={16} style={styles.cancelGlass}>\n <Pressable\n onPress={handleClose}\n style={({ pressed }) => [\n styles.cancelRow,\n pressed && styles.actionRowPressed,\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={cancelLabel}\n >\n <Text style={[styles.cancelLabel, { color: textBase }]}>\n {cancelLabel}\n </Text>\n </Pressable>\n </GlassView>\n ) : (\n <View style={[styles.cancelPanel, { backgroundColor: panelBg }]}>\n <Pressable\n onPress={handleClose}\n style={({ pressed }) => [\n styles.cancelRow,\n pressed && styles.actionRowPressed,\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={cancelLabel}\n >\n <Text style={[styles.cancelLabel, { color: textBase }]}>\n {cancelLabel}\n </Text>\n </Pressable>\n </View>\n )}\n </View>\n </Animated.View>\n </View>\n </Modal>\n );\n },\n);\n\nActionSheet.displayName = 'ActionSheet';\n\nconst styles = StyleSheet.create({\n backdrop: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.45)',\n justifyContent: 'flex-end',\n },\n container: {\n paddingHorizontal: 8,\n paddingBottom: 8,\n },\n panel: {\n borderRadius: 16,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: -2 },\n shadowOpacity: 0.1,\n shadowRadius: 12,\n elevation: 6,\n },\n panelGlass: {\n overflow: 'hidden',\n },\n header: {\n paddingVertical: 14,\n paddingHorizontal: 20,\n alignItems: 'center',\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n headerTitle: {\n fontSize: 13,\n fontWeight: '600',\n lineHeight: 18,\n marginBottom: 2,\n textAlign: 'center',\n },\n headerMessage: {\n fontSize: 12,\n lineHeight: 16,\n textAlign: 'center',\n },\n divider: {\n height: StyleSheet.hairlineWidth,\n marginHorizontal: 0,\n },\n actionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 18,\n paddingHorizontal: 20,\n },\n actionRowPressed: {\n opacity: 0.6,\n },\n actionIcon: {\n marginRight: 14,\n },\n actionLabel: {\n fontSize: 17,\n fontWeight: '400',\n lineHeight: 22,\n textAlign: 'center',\n flex: 1,\n },\n cancelSpacing: {\n marginTop: 8,\n },\n cancelPanel: {\n borderRadius: 16,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: -1 },\n shadowOpacity: 0.08,\n shadowRadius: 8,\n elevation: 4,\n },\n cancelGlass: {\n overflow: 'hidden',\n },\n cancelRow: {\n paddingVertical: 18,\n paddingHorizontal: 20,\n alignItems: 'center',\n justifyContent: 'center',\n },\n cancelLabel: {\n fontSize: 17,\n fontWeight: '600',\n lineHeight: 22,\n },\n});\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n ScrollView,\n TextInput,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY, TIMING_EXIT } from 'reactnatively-animations';\nimport type { CommandPaletteProps, CommandItem } from './CommandPalette.types';\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const CommandPalette = React.memo<CommandPaletteProps>(\n ({\n isOpen,\n onClose,\n items,\n placeholder = 'Search commands…',\n glass = false,\n }) => {\n const isDark = useIsDark();\n const [query, setQuery] = useState('');\n\n const scale = useSharedValue(0.94);\n const opacity = useSharedValue(0);\n\n const runClose = useCallback(() => {\n setQuery('');\n onClose();\n }, [onClose]);\n\n useEffect(() => {\n if (isOpen) {\n scale.value = withSpring(1, SPRING_SNAPPY);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n setQuery('');\n }\n }, [isOpen]);\n\n const handleClose = useCallback(() => {\n scale.value = withTiming(0.94, TIMING_EXIT, (finished) => {\n if (finished) runOnJS(runClose)();\n });\n opacity.value = withTiming(0, TIMING_EXIT);\n }, [runClose]);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n // Filter items\n const filtered = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter(\n (item) =>\n item.label.toLowerCase().includes(q) ||\n (item.description?.toLowerCase().includes(q) ?? false),\n );\n }, [query, items]);\n\n // Group items\n const grouped = useMemo(() => {\n const groupMap = new Map<string, CommandItem[]>();\n for (const item of filtered) {\n const key = item.group ?? '';\n const arr = groupMap.get(key) ?? [];\n arr.push(item);\n groupMap.set(key, arr);\n }\n return groupMap;\n }, [filtered]);\n\n const cardBg = isDark ? '#1e1e30' : '#ffffff';\n const textBase = isDark ? '#f1f5f9' : '#0f172a';\n const subText = isDark ? '#94a3b8' : '#64748b';\n const inputBg = isDark ? 'rgba(255,255,255,0.07)' : 'rgba(0,0,0,0.05)';\n const divider = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.07)';\n const groupLabelClr = isDark ? '#64748b' : '#94a3b8';\n const highlightBg = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)';\n\n const renderItems = () => {\n if (filtered.length === 0) {\n return (\n <View style={styles.emptyState}>\n <Text style={[styles.emptyText, { color: subText }]}>\n No commands found\n </Text>\n </View>\n );\n }\n\n const sections: React.ReactNode[] = [];\n let first = true;\n\n grouped.forEach((groupItems, groupKey) => {\n if (!first) {\n sections.push(\n <View key={`divider-${groupKey}`} style={[styles.sectionDivider, { backgroundColor: divider }]} />,\n );\n }\n first = false;\n\n if (groupKey) {\n sections.push(\n <Text key={`header-${groupKey}`} style={[styles.groupLabel, { color: groupLabelClr }]}>\n {groupKey.toUpperCase()}\n </Text>,\n );\n }\n\n sections.push(\n ...groupItems.map((item) => (\n <Pressable\n key={item.id}\n onPress={() => {\n item.onSelect();\n handleClose();\n }}\n style={({ pressed }) => [\n styles.itemRow,\n pressed && { backgroundColor: highlightBg },\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={item.label}\n >\n {item.icon != null && (\n <View style={styles.itemIcon}>{item.icon}</View>\n )}\n <View style={styles.itemText}>\n <Text style={[styles.itemLabel, { color: textBase }]} numberOfLines={1}>\n {item.label}\n </Text>\n {item.description != null && (\n <Text style={[styles.itemDescription, { color: subText }]} numberOfLines={1}>\n {item.description}\n </Text>\n )}\n </View>\n {item.shortcut != null && (\n <View style={[styles.shortcutBadge, { backgroundColor: inputBg }]}>\n <Text style={[styles.shortcutText, { color: subText }]}>\n {item.shortcut}\n </Text>\n </View>\n )}\n </Pressable>\n )),\n );\n });\n\n return sections;\n };\n\n const cardContent = (\n <>\n {/* Search bar */}\n <View style={[styles.searchRow, { borderBottomColor: divider }]}>\n <Text style={[styles.searchIcon, { color: subText }]}>⌕</Text>\n <TextInput\n style={[styles.searchInput, { color: textBase }]}\n value={query}\n onChangeText={setQuery}\n placeholder={placeholder}\n placeholderTextColor={subText}\n autoFocus\n autoCorrect={false}\n autoCapitalize=\"none\"\n returnKeyType=\"search\"\n clearButtonMode=\"while-editing\"\n />\n <Pressable onPress={handleClose} style={styles.closeBtn} accessibilityLabel=\"Close\">\n <Text style={[styles.closeText, { color: subText }]}>✕</Text>\n </Pressable>\n </View>\n\n {/* Results */}\n <ScrollView\n style={[styles.list, { maxHeight: 400 }]}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {renderItems()}\n <View style={styles.listBottom} />\n </ScrollView>\n </>\n );\n\n return (\n <Modal\n visible={isOpen}\n transparent\n hardwareAccelerated\n animationType=\"none\"\n onRequestClose={handleClose}\n statusBarTranslucent\n >\n <View style={styles.backdrop}>\n <Pressable\n style={StyleSheet.absoluteFill}\n onPress={handleClose}\n accessibilityLabel=\"Close command palette\"\n />\n\n <Animated.View style={[styles.card, animatedStyle]}>\n {glass ? (\n <GlassView elevation={3} borderRadius={16} style={styles.glassCard}>\n {cardContent}\n </GlassView>\n ) : (\n <View style={[styles.solidCard, { backgroundColor: cardBg }]}>\n {cardContent}\n </View>\n )}\n </Animated.View>\n </View>\n </Modal>\n );\n },\n);\n\nCommandPalette.displayName = 'CommandPalette';\n\nconst styles = StyleSheet.create({\n backdrop: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.65)',\n alignItems: 'center',\n justifyContent: 'flex-start',\n paddingTop: 80,\n paddingHorizontal: 16,\n },\n card: {\n width: '100%',\n maxWidth: 600,\n },\n solidCard: {\n borderRadius: 16,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 12 },\n shadowOpacity: 0.3,\n shadowRadius: 32,\n elevation: 16,\n },\n glassCard: {\n overflow: 'hidden',\n },\n searchRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n paddingLeft: 14,\n paddingRight: 8,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n searchIcon: {\n fontSize: 20,\n marginRight: 10,\n },\n searchInput: {\n flex: 1,\n fontSize: 16,\n lineHeight: 22,\n height: 36,\n padding: 0,\n },\n closeBtn: {\n padding: 8,\n marginLeft: 4,\n },\n closeText: {\n fontSize: 14,\n },\n list: {},\n listBottom: {\n height: 8,\n },\n sectionDivider: {\n height: StyleSheet.hairlineWidth,\n marginHorizontal: 14,\n marginVertical: 4,\n },\n groupLabel: {\n fontSize: 11,\n fontWeight: '700',\n letterSpacing: 0.8,\n paddingTop: 12,\n paddingBottom: 4,\n paddingHorizontal: 14,\n },\n itemRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 10,\n paddingHorizontal: 14,\n },\n itemIcon: {\n marginRight: 12,\n width: 24,\n alignItems: 'center',\n },\n itemText: {\n flex: 1,\n },\n itemLabel: {\n fontSize: 15,\n fontWeight: '500',\n lineHeight: 20,\n },\n itemDescription: {\n fontSize: 13,\n lineHeight: 18,\n marginTop: 1,\n },\n shortcutBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 5,\n marginLeft: 10,\n },\n shortcutText: {\n fontSize: 11,\n fontWeight: '600',\n fontFamily: 'monospace',\n },\n emptyState: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 40,\n },\n emptyText: {\n fontSize: 15,\n fontWeight: '500',\n },\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Modal,\n View,\n Text,\n Pressable,\n StyleSheet,\n Dimensions,\n type LayoutRectangle,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { ContextMenuProps } from './ContextMenu.types';\n\nconst { width: SCREEN_W, height: SCREEN_H } = Dimensions.get('window');\nconst MENU_WIDTH = 220;\nconst ITEM_HEIGHT = 46;\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const ContextMenu = React.memo<ContextMenuProps>(\n ({ items, children, glass = false }) => {\n const isDark = useIsDark();\n const triggerRef = useRef<View>(null);\n\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const scale = useSharedValue(0.8);\n const opacity = useSharedValue(0);\n\n const openMenu = useCallback(() => {\n triggerRef.current?.measureInWindow((x, y, w, h) => {\n // Position the menu near the trigger, keeping it on screen\n let menuX = x;\n let menuY = y + h + 6;\n\n if (menuX + MENU_WIDTH > SCREEN_W - 8) {\n menuX = SCREEN_W - MENU_WIDTH - 8;\n }\n const menuHeight = items.length * ITEM_HEIGHT + 16;\n if (menuY + menuHeight > SCREEN_H - 8) {\n menuY = y - menuHeight - 6;\n }\n\n setPosition({ x: menuX, y: menuY });\n setVisible(true);\n scale.value = withSpring(1, SPRING_SNAPPY);\n opacity.value = withSpring(1, SPRING_SNAPPY);\n });\n }, [items.length]);\n\n const closeMenu = useCallback(() => {\n scale.value = withSpring(0.8, SPRING_SNAPPY);\n opacity.value = withSpring(0, SPRING_SNAPPY);\n // Slight delay before hiding to let animation play\n setTimeout(() => setVisible(false), 150);\n }, []);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n const cardBg = isDark ? '#1e1e30' : '#ffffff';\n const textBase = isDark ? '#f1f5f9' : '#0f172a';\n const subText = isDark ? '#94a3b8' : '#64748b';\n const divider = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.07)';\n const pressedBg = isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.05)';\n\n const menuItems = (\n <View style={styles.menuInner}>\n {items.map((item, idx) => (\n <React.Fragment key={idx}>\n {idx > 0 && (\n <View style={[styles.itemDivider, { backgroundColor: divider }]} />\n )}\n <Pressable\n onPress={() => {\n if (item.isDisabled) return;\n closeMenu();\n item.onPress();\n }}\n style={({ pressed }) => [\n styles.menuItem,\n pressed && { backgroundColor: pressedBg },\n item.isDisabled && styles.disabledItem,\n ]}\n disabled={item.isDisabled}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={item.label}\n >\n {item.icon != null && (\n <View style={styles.menuItemIcon}>{item.icon}</View>\n )}\n <Text\n style={[\n styles.menuItemLabel,\n {\n color: item.isDestructive\n ? '#ef4444'\n : item.isDisabled\n ? subText\n : textBase,\n },\n ]}\n numberOfLines={1}\n >\n {item.label}\n </Text>\n </Pressable>\n </React.Fragment>\n ))}\n </View>\n );\n\n return (\n <>\n <Pressable\n ref={triggerRef as any}\n onLongPress={openMenu}\n delayLongPress={300}\n accessibilityRole=\"button\"\n accessibilityHint=\"Long press to open context menu\"\n >\n {children}\n </Pressable>\n\n <Modal\n visible={visible}\n transparent\n hardwareAccelerated\n animationType=\"none\"\n onRequestClose={closeMenu}\n statusBarTranslucent\n >\n {/* Backdrop */}\n <Pressable\n style={StyleSheet.absoluteFill}\n onPress={closeMenu}\n accessibilityLabel=\"Close context menu\"\n />\n\n <Animated.View\n style={[\n styles.menuCard,\n {\n left: position.x,\n top: position.y,\n },\n animatedStyle,\n ]}\n >\n {glass ? (\n <GlassView elevation={3} borderRadius={12} style={styles.glassMenu}>\n {menuItems}\n </GlassView>\n ) : (\n <View style={[styles.solidMenu, { backgroundColor: cardBg }]}>\n {menuItems}\n </View>\n )}\n </Animated.View>\n </Modal>\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nconst styles = StyleSheet.create({\n menuCard: {\n position: 'absolute',\n width: MENU_WIDTH,\n },\n solidMenu: {\n borderRadius: 12,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 6 },\n shadowOpacity: 0.18,\n shadowRadius: 16,\n elevation: 8,\n },\n glassMenu: {\n overflow: 'hidden',\n },\n menuInner: {\n paddingVertical: 6,\n },\n menuItem: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n paddingHorizontal: 14,\n minHeight: ITEM_HEIGHT,\n },\n menuItemIcon: {\n marginRight: 10,\n width: 20,\n alignItems: 'center',\n },\n menuItemLabel: {\n fontSize: 15,\n fontWeight: '400',\n lineHeight: 20,\n flex: 1,\n },\n itemDivider: {\n height: StyleSheet.hairlineWidth,\n marginHorizontal: 14,\n },\n disabledItem: {\n opacity: 0.45,\n },\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n Platform,\n Modal,\n View,\n Pressable,\n StyleSheet,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n} from 'react-native-reanimated';\nimport { useIsDark } from 'reactnatively-theme';\nimport { GlassView } from 'reactnatively-glass';\nimport { TIMING_FAST, TIMING_EXIT } from 'reactnatively-animations';\nimport type { HoverCardProps, HoverCardPlacement } from './HoverCard.types';\n\nconst CARD_OFFSET = 8;\n\nfunction resolvePosition(\n placement: HoverCardPlacement,\n trigX: number,\n trigY: number,\n trigW: number,\n trigH: number,\n): { left: number; top: number } {\n switch (placement) {\n case 'top':\n return { left: trigX, top: trigY - CARD_OFFSET };\n case 'bottom':\n return { left: trigX, top: trigY + trigH + CARD_OFFSET };\n case 'left':\n return { left: trigX - CARD_OFFSET, top: trigY };\n case 'right':\n return { left: trigX + trigW + CARD_OFFSET, top: trigY };\n default:\n return { left: trigX, top: trigY + trigH + CARD_OFFSET };\n }\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const HoverCard = React.memo<HoverCardProps>(\n ({ trigger, content, placement = 'bottom', glass = false }) => {\n const isDark = useIsDark();\n const triggerRef = useRef<View>(null);\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState({ left: 0, top: 0 });\n\n const opacity = useSharedValue(0);\n\n const show = useCallback(() => {\n triggerRef.current?.measureInWindow((x, y, w, h) => {\n const pos = resolvePosition(placement, x, y, w, h);\n setPosition(pos);\n setVisible(true);\n opacity.value = withTiming(1, TIMING_FAST);\n });\n }, [placement]);\n\n const hide = useCallback(() => {\n opacity.value = withTiming(0, TIMING_EXIT, (finished) => {\n if (finished) {\n // runOnJS alternative: set state via JS thread callback\n }\n });\n // Hide after animation\n setTimeout(() => setVisible(false), 120);\n }, []);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { opacity: opacity.value };\n });\n\n const cardBg = isDark ? '#1e1e30' : '#ffffff';\n\n // Web: onMouseEnter / onMouseLeave\n const isWeb = Platform.OS === 'web';\n const webProps = isWeb\n ? {\n onMouseEnter: show,\n onMouseLeave: hide,\n }\n : {};\n\n const cardContent = (\n <Animated.View\n style={[\n styles.card,\n { position: 'absolute', left: position.left, top: position.top },\n animatedStyle,\n ]}\n pointerEvents=\"box-none\"\n >\n {glass ? (\n <GlassView elevation={2} borderRadius={12} style={styles.glassCard}>\n {content}\n </GlassView>\n ) : (\n <View style={[styles.solidCard, { backgroundColor: cardBg }]}>\n {content}\n </View>\n )}\n </Animated.View>\n );\n\n if (isWeb) {\n // Web: inline positioning with hover events\n return (\n <View style={styles.triggerWrap}>\n {/* Trigger with mouse events */}\n {React.createElement(\n Pressable as any,\n {\n ref: triggerRef,\n ...webProps,\n style: styles.triggerInner,\n },\n trigger,\n )}\n {visible && cardContent}\n </View>\n );\n }\n\n // Mobile: long press to show, press out to hide\n return (\n <View style={styles.triggerWrap}>\n <Pressable\n ref={triggerRef as any}\n onLongPress={show}\n onPressOut={hide}\n delayLongPress={500}\n style={styles.triggerInner}\n >\n {trigger}\n </Pressable>\n\n <Modal\n visible={visible}\n transparent\n hardwareAccelerated\n animationType=\"none\"\n onRequestClose={hide}\n statusBarTranslucent\n >\n <Pressable\n style={StyleSheet.absoluteFill}\n onPress={hide}\n accessibilityLabel=\"Close hover card\"\n />\n {cardContent}\n </Modal>\n </View>\n );\n },\n);\n\nHoverCard.displayName = 'HoverCard';\n\nconst styles = StyleSheet.create({\n triggerWrap: {\n alignSelf: 'flex-start',\n },\n triggerInner: {\n alignSelf: 'flex-start',\n },\n card: {\n zIndex: 9999,\n minWidth: 160,\n maxWidth: 320,\n },\n solidCard: {\n borderRadius: 12,\n padding: 12,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.14,\n shadowRadius: 12,\n elevation: 6,\n },\n glassCard: {\n borderRadius: 12,\n padding: 12,\n },\n});\n","import React, { useEffect } from 'react';\nimport { StyleSheet, type ViewStyle } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from 'react-native-reanimated';\nimport type { FadeProps } from './Fade.types';\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const Fade = React.memo<FadeProps>(\n ({\n in: visible = true,\n duration = 250,\n delay = 0,\n children,\n style,\n onEntered,\n onExited,\n }) => {\n const opacity = useSharedValue(visible ? 1 : 0);\n\n useEffect(() => {\n const timingConfig = { duration };\n const targetOpacity = visible ? 1 : 0;\n\n const runAnimation = () => {\n opacity.value = withTiming(targetOpacity, timingConfig, (finished) => {\n if (!finished) return;\n if (visible && onEntered) {\n runOnJS(onEntered)();\n } else if (!visible && onExited) {\n runOnJS(onExited)();\n }\n });\n };\n\n if (delay > 0) {\n const timer = setTimeout(runAnimation, delay);\n return () => clearTimeout(timer);\n }\n runAnimation();\n return undefined;\n }, [visible, duration, delay]);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return { opacity: opacity.value };\n });\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n {children}\n </Animated.View>\n );\n },\n);\n\nFade.displayName = 'Fade';\n","import React, { useEffect } from 'react';\nimport { type ViewStyle } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport type { ScaleProps } from './Scale.types';\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const Scale = React.memo<ScaleProps>(\n ({\n in: visible = true,\n from = 0.85,\n to = 1,\n duration, // kept in interface but spring doesn't use numeric duration\n children,\n style,\n }) => {\n const scale = useSharedValue(visible ? to : from);\n const opacity = useSharedValue(visible ? 1 : 0);\n\n useEffect(() => {\n scale.value = withSpring(visible ? to : from, SPRING_BOUNCE);\n opacity.value = withSpring(visible ? 1 : 0, SPRING_BOUNCE);\n }, [visible, from, to]);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n });\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n {children}\n </Animated.View>\n );\n },\n);\n\nScale.displayName = 'Scale';\n","import React, { useEffect } from 'react';\nimport { type ViewStyle } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { SlideProps, SlideDirection } from './Slide.types';\n\n// ─── Helpers ─────────────────────────────────────────────────────────────────\nfunction initialOffset(direction: SlideDirection, distance: number): { x: number; y: number } {\n switch (direction) {\n case 'up': return { x: 0, y: distance };\n case 'down': return { x: 0, y: -distance };\n case 'left': return { x: distance, y: 0 };\n case 'right': return { x: -distance, y: 0 };\n default: return { x: 0, y: distance };\n }\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const Slide = React.memo<SlideProps>(\n ({\n in: visible = true,\n direction = 'up',\n distance = 30,\n duration, // kept for interface parity; spring drives animation\n children,\n style,\n }) => {\n const { x: offX, y: offY } = initialOffset(direction, distance);\n\n const translateX = useSharedValue(visible ? 0 : offX);\n const translateY = useSharedValue(visible ? 0 : offY);\n const opacity = useSharedValue(visible ? 1 : 0);\n\n useEffect(() => {\n translateX.value = withSpring(visible ? 0 : offX, SPRING_SNAPPY);\n translateY.value = withSpring(visible ? 0 : offY, SPRING_SNAPPY);\n opacity.value = withSpring(visible ? 1 : 0, SPRING_SNAPPY);\n }, [visible, offX, offY]);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n opacity: opacity.value,\n transform: [\n { translateX: translateX.value },\n { translateY: translateY.value },\n ],\n };\n });\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n {children}\n </Animated.View>\n );\n },\n);\n\nSlide.displayName = 'Slide';\n","import React, { useEffect } from 'react';\nimport { Platform, type ViewStyle } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n} from 'react-native-reanimated';\nimport { TIMING_FAST } from 'reactnatively-animations';\nimport type { BlurTransitionProps } from './BlurTransition.types';\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const BlurTransition = React.memo<BlurTransitionProps>(\n ({\n in: visible = true,\n blurAmount = 10,\n duration = 300,\n children,\n style,\n }) => {\n const opacity = useSharedValue(visible ? 1 : 0);\n const scale = useSharedValue(visible ? 1 : 1.05);\n\n useEffect(() => {\n const timingConfig = { duration };\n opacity.value = withTiming(visible ? 1 : 0, timingConfig);\n scale.value = withTiming(visible ? 1 : 1.05, timingConfig);\n }, [visible, duration]);\n\n const isWeb = Platform.OS === 'web';\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n const base: ViewStyle = {\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n };\n\n // On web, we can apply CSS blur via style\n if (isWeb) {\n (base as any).filter = `blur(${(1 - opacity.value) * blurAmount}px)`;\n }\n\n return base;\n });\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n {children}\n </Animated.View>\n );\n },\n);\n\nBlurTransition.displayName = 'BlurTransition';\n","import React, { useCallback, useRef, useState } from 'react';\nimport {\n View,\n Pressable,\n StyleSheet,\n type LayoutChangeEvent,\n type GestureResponderEvent,\n type ViewStyle,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport type { MagneticPressableProps } from './MagneticPressable.types';\n\n// ─── Component ────────────────────────────────────────────────────────────────\nexport const MagneticPressable = React.memo<MagneticPressableProps>(\n ({ children, strength = 0.3, onPress, style }) => {\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n\n // Store layout measurements in a ref to avoid re-renders\n const layoutRef = useRef({ width: 0, height: 0, pageX: 0, pageY: 0 });\n const viewRef = useRef<View>(null);\n\n const handleLayout = useCallback((_e: LayoutChangeEvent) => {\n // Measure after layout to get absolute position\n viewRef.current?.measureInWindow((x, y, w, h) => {\n layoutRef.current = { width: w, height: h, pageX: x, pageY: y };\n });\n }, []);\n\n const handleResponderMove = useCallback((e: GestureResponderEvent) => {\n const { pageX, pageY } = e.nativeEvent;\n const { width, height, pageX: elemX, pageY: elemY } = layoutRef.current;\n\n const centerX = elemX + width / 2;\n const centerY = elemY + height / 2;\n\n const offsetX = (pageX - centerX) * strength;\n const offsetY = (pageY - centerY) * strength;\n\n translateX.value = withSpring(offsetX, SPRING_BOUNCE);\n translateY.value = withSpring(offsetY, SPRING_BOUNCE);\n }, [strength]);\n\n const handleRelease = useCallback(() => {\n translateX.value = withSpring(0, SPRING_BOUNCE);\n translateY.value = withSpring(0, SPRING_BOUNCE);\n }, []);\n\n const animatedStyle = useAnimatedStyle((): ViewStyle => {\n 'worklet';\n return {\n transform: [\n { translateX: translateX.value },\n { translateY: translateY.value },\n ],\n };\n });\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n <View\n ref={viewRef}\n onLayout={handleLayout}\n onStartShouldSetResponder={() => true}\n onMoveShouldSetResponder={() => true}\n onResponderMove={handleResponderMove}\n onResponderRelease={handleRelease}\n onResponderTerminate={handleRelease}\n >\n <Pressable\n onPress={onPress}\n accessibilityRole=\"button\"\n style={styles.pressable}\n >\n {children}\n </Pressable>\n </View>\n </Animated.View>\n );\n },\n);\n\nMagneticPressable.displayName = 'MagneticPressable';\n\nconst styles = StyleSheet.create({\n pressable: {\n alignSelf: 'flex-start',\n },\n});\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { GlassView } from 'reactnatively-glass';\nimport type { BlurSurfaceProps } from './BlurSurface.types';\n\n/**\n * BlurSurface — thin wrapper around GlassView exposing a clean API.\n * Used as a standalone decorative blur layer. No children required.\n */\nexport const BlurSurface = React.memo<BlurSurfaceProps>(\n ({\n elevation = 2,\n variant = 'surface',\n borderRadius = 16,\n style,\n children,\n }) => {\n return (\n <GlassView\n elevation={elevation}\n variant={variant}\n borderRadius={borderRadius}\n style={[styles.surface, style]}\n >\n {children}\n </GlassView>\n );\n },\n);\n\nBlurSurface.displayName = 'BlurSurface';\n\nconst styles = StyleSheet.create({\n surface: {\n // Intentionally minimal — this is a decoration primitive\n },\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport type { DynamicIslandProps, DynamicIslandState } from './DynamicIsland.types';\n\n// Sizes for each state\nconst STATE_SIZES: Record<DynamicIslandState, { width: number; height: number }> = {\n minimal: { width: 12, height: 12 },\n compact: { width: 120, height: 36 },\n expanded: { width: 340, height: 160 },\n};\n\nconst STATE_RADIUS: Record<DynamicIslandState, number> = {\n minimal: 6,\n compact: 18,\n expanded: 40,\n};\n\n/**\n * DynamicIsland — morphing pill that cycles between compact, expanded, and minimal states.\n * Animated width/height transitions via withSpring(SPRING_BOUNCE).\n */\nexport const DynamicIsland = React.memo<DynamicIslandProps>(\n ({\n state: controlledState,\n defaultState = 'compact',\n onStateChange,\n compactContent,\n expandedContent,\n minimalContent,\n onPress,\n style,\n }) => {\n const [internalState, setInternalState] = useState<DynamicIslandState>(defaultState);\n const activeState = controlledState !== undefined ? controlledState : internalState;\n\n const animWidth = useSharedValue(STATE_SIZES[activeState].width);\n const animHeight = useSharedValue(STATE_SIZES[activeState].height);\n const animBorderRadius = useSharedValue(STATE_RADIUS[activeState]);\n\n // Sync animated values when state changes\n useEffect(() => {\n const { width, height } = STATE_SIZES[activeState];\n const radius = STATE_RADIUS[activeState];\n animWidth.value = withSpring(width, SPRING_BOUNCE);\n animHeight.value = withSpring(height, SPRING_BOUNCE);\n animBorderRadius.value = withSpring(radius, SPRING_BOUNCE);\n }, [activeState]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n width: animWidth.value,\n height: animHeight.value,\n borderRadius: animBorderRadius.value,\n }));\n\n const handlePress = useCallback(() => {\n if (onPress) {\n onPress();\n return;\n }\n // Default cycle: compact → expanded → compact\n const next: DynamicIslandState =\n activeState === 'compact' ? 'expanded' : 'compact';\n if (controlledState === undefined) {\n setInternalState(next);\n }\n onStateChange?.(next);\n }, [activeState, controlledState, onPress, onStateChange]);\n\n const renderContent = () => {\n if (activeState === 'minimal') return minimalContent ?? null;\n if (activeState === 'expanded') return expandedContent ?? null;\n return compactContent ?? null;\n };\n\n return (\n <Animated.View style={[styles.wrapper, animatedStyle, style]}>\n <Pressable onPress={handlePress} style={styles.pressable}>\n <GlassView\n elevation={4}\n variant=\"frosted\"\n tintOverride=\"rgba(0,0,0,0.85)\"\n borderRadius={0}\n border={false}\n style={StyleSheet.absoluteFill}\n >\n <View style={styles.content}>\n {renderContent()}\n </View>\n </GlassView>\n </Pressable>\n </Animated.View>\n );\n },\n);\n\nDynamicIsland.displayName = 'DynamicIsland';\n\nconst styles = StyleSheet.create({\n wrapper: {\n alignSelf: 'center',\n overflow: 'hidden',\n },\n pressable: {\n flex: 1,\n },\n content: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 12,\n },\n});\n","import React, { useCallback, useRef } from 'react';\nimport {\n PanResponder,\n Pressable,\n StyleSheet,\n Text,\n View,\n type LayoutChangeEvent,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { usePressAnimation, SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { DockItem, FloatingDockProps } from './FloatingDock.types';\n\nconst ITEM_SIZE = 48;\nconst MAGNIFICATION_RANGE = 80;\nconst MAGNIFICATION_STRENGTH = 0.6;\n\n// ─── Individual dock item ─────────────────────────────────────────────────────\n\ninterface DockItemViewProps {\n item: DockItem;\n magnification: boolean;\n touchX: SharedValue<number>;\n itemIndex: number;\n itemCenters: React.MutableRefObject<number[]>;\n}\n\nconst DockItemView = React.memo<DockItemViewProps>(\n ({ item, magnification, touchX, itemIndex, itemCenters }) => {\n const { animatedStyle: pressStyle, handlers } = usePressAnimation({ pressedScale: 0.9 });\n\n const magnifiedStyle = useAnimatedStyle(() => {\n 'worklet';\n if (!magnification) return {};\n const centerX = itemCenters.current[itemIndex] ?? 0;\n const distance = Math.abs(touchX.value - centerX);\n if (touchX.value < 0 || distance >= MAGNIFICATION_RANGE) {\n return { transform: [{ scale: withSpring(1, SPRING_SNAPPY) }] };\n }\n const strength = MAGNIFICATION_STRENGTH * (1 - distance / MAGNIFICATION_RANGE);\n return {\n transform: [{ scale: withSpring(1 + strength, SPRING_SNAPPY) }],\n };\n });\n\n const handleLayout = useCallback(\n (e: LayoutChangeEvent) => {\n const { x, width } = e.nativeEvent.layout;\n itemCenters.current[itemIndex] = x + width / 2;\n },\n [itemIndex, itemCenters],\n );\n\n return (\n <Animated.View style={magnifiedStyle} onLayout={handleLayout}>\n <Pressable\n onPress={item.onPress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n accessibilityLabel={item.label}\n accessibilityRole=\"button\"\n >\n <Animated.View style={[styles.itemContainer, pressStyle]}>\n <View style={styles.iconWrapper}>{item.icon}</View>\n <Text style={styles.itemLabel} numberOfLines={1}>\n {item.label}\n </Text>\n </Animated.View>\n </Pressable>\n </Animated.View>\n );\n },\n);\n\nDockItemView.displayName = 'DockItemView';\n\n// ─── FloatingDock ─────────────────────────────────────────────────────────────\n\n/**\n * FloatingDock — macOS-inspired dock with magnification on touch proximity.\n * GlassView pill container with items in a row.\n */\nexport const FloatingDock = React.memo<FloatingDockProps>(\n ({\n items,\n position = 'bottom',\n glass = true,\n magnification = true,\n style,\n }) => {\n // Shared value for current touch X position; -1 means \"no active touch\"\n const touchX = useSharedValue(-1);\n // Center X position for each item, measured after layout\n const itemCenters = useRef<number[]>([]);\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => magnification,\n onMoveShouldSetPanResponder: () => magnification,\n onPanResponderGrant: (e) => {\n touchX.value = e.nativeEvent.locationX;\n },\n onPanResponderMove: (e) => {\n touchX.value = e.nativeEvent.locationX;\n },\n onPanResponderRelease: () => {\n touchX.value = withSpring(-1, SPRING_SNAPPY);\n },\n onPanResponderTerminate: () => {\n touchX.value = withSpring(-1, SPRING_SNAPPY);\n },\n }),\n ).current;\n\n const positionStyle = position === 'top' ? styles.positionTop : styles.positionBottom;\n\n const container = (\n <View\n style={[styles.row, positionStyle, style]}\n {...(magnification ? panResponder.panHandlers : {})}\n >\n {items.map((item, index) => (\n <DockItemView\n key={item.label}\n item={item}\n magnification={magnification}\n touchX={touchX}\n itemIndex={index}\n itemCenters={itemCenters}\n />\n ))}\n </View>\n );\n\n if (!glass) {\n return (\n <View style={[styles.pillFallback, positionStyle, style]}>\n {container}\n </View>\n );\n }\n\n return (\n <GlassView\n elevation={3}\n variant=\"surface\"\n borderRadius={36}\n style={[positionStyle, style]}\n >\n <View\n style={styles.row}\n {...(magnification ? panResponder.panHandlers : {})}\n >\n {items.map((item, index) => (\n <DockItemView\n key={item.label}\n item={item}\n magnification={magnification}\n touchX={touchX}\n itemIndex={index}\n itemCenters={itemCenters}\n />\n ))}\n </View>\n </GlassView>\n );\n },\n);\n\nFloatingDock.displayName = 'FloatingDock';\n\nconst styles = StyleSheet.create({\n positionBottom: {\n alignSelf: 'center',\n marginBottom: 16,\n },\n positionTop: {\n alignSelf: 'center',\n marginTop: 16,\n },\n pillFallback: {\n borderRadius: 36,\n backgroundColor: 'rgba(0,0,0,0.08)',\n },\n row: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n itemContainer: {\n width: ITEM_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n },\n iconWrapper: {\n width: ITEM_SIZE,\n height: ITEM_SIZE,\n alignItems: 'center',\n justifyContent: 'center',\n },\n itemLabel: {\n fontSize: 10,\n marginTop: 2,\n textAlign: 'center',\n color: 'rgba(0,0,0,0.7)',\n },\n});\n","import React, { useEffect } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_BOUNCE } from 'reactnatively-animations';\nimport type { MorphingContainerProps, MorphingContainerShape } from './MorphingContainer.types';\n\nconst DEFAULT_SHAPE: MorphingContainerShape = {\n width: 200,\n height: 200,\n borderRadius: 16,\n};\n\n/**\n * MorphingContainer — GlassView that spring-animates between different shape prop values.\n * All three dimensions (width, height, borderRadius) animate in unison via withSpring.\n */\nexport const MorphingContainer = React.memo<MorphingContainerProps>(\n ({\n shape = DEFAULT_SHAPE,\n glass = true,\n children,\n style,\n }) => {\n const animWidth = useSharedValue(shape.width);\n const animHeight = useSharedValue(shape.height);\n const animBorderRadius = useSharedValue(shape.borderRadius);\n\n useEffect(() => {\n animWidth.value = withSpring(shape.width, SPRING_BOUNCE);\n animHeight.value = withSpring(shape.height, SPRING_BOUNCE);\n animBorderRadius.value = withSpring(shape.borderRadius, SPRING_BOUNCE);\n }, [shape.width, shape.height, shape.borderRadius]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n width: animWidth.value,\n height: animHeight.value,\n borderRadius: animBorderRadius.value,\n overflow: 'hidden' as const,\n }));\n\n if (!glass) {\n return (\n <Animated.View style={[styles.fallback, animatedStyle, style]}>\n {children}\n </Animated.View>\n );\n }\n\n return (\n <Animated.View style={[animatedStyle, style]}>\n <GlassView\n elevation={2}\n variant=\"surface\"\n borderRadius={0}\n style={StyleSheet.absoluteFill}\n />\n <View style={styles.content}>{children}</View>\n </Animated.View>\n );\n },\n);\n\nMorphingContainer.displayName = 'MorphingContainer';\n\nconst styles = StyleSheet.create({\n fallback: {\n backgroundColor: 'rgba(0,0,0,0.06)',\n },\n content: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","import React from 'react';\nimport { Platform, StyleSheet, Text, View } from 'react-native';\nimport Animated, {\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme } from 'reactnatively-theme';\nimport type { GlassNavbarProps } from './GlassNavbar.types';\n\nconst NAVBAR_HEIGHT = Platform.OS === 'ios' ? 44 : 56;\nconst SCROLL_THRESHOLD = 50;\n\n/**\n * GlassNavbar — top navigation bar whose glass intensity scales with scroll position.\n * At scrollY=0: transparent (elevation 0). At scrollY>50: frosted (elevation 2).\n */\nexport const GlassNavbar = React.memo<GlassNavbarProps>(\n ({ title, leading, trailing, scrollY, style }) => {\n const { theme } = useTheme();\n\n // Animated border opacity driven by scrollY\n const borderAnimStyle = useAnimatedStyle(() => {\n 'worklet';\n if (!scrollY) return { opacity: 0 };\n const opacity = interpolate(\n scrollY.value,\n [0, SCROLL_THRESHOLD],\n [0, 1],\n Extrapolation.CLAMP,\n );\n return { opacity };\n });\n\n // Animated glass tint opacity driven by scrollY\n const glassOpacityStyle = useAnimatedStyle(() => {\n 'worklet';\n if (!scrollY) return { opacity: 1 };\n const opacity = interpolate(\n scrollY.value,\n [0, SCROLL_THRESHOLD],\n [0, 1],\n Extrapolation.CLAMP,\n );\n return { opacity };\n });\n\n const elevation = scrollY ? (2 as const) : (0 as const);\n\n return (\n <View style={[styles.wrapper, style]}>\n {/* Glass layer — fades in as user scrolls */}\n <Animated.View style={[StyleSheet.absoluteFill, glassOpacityStyle]}>\n <GlassView\n elevation={elevation}\n variant=\"frosted\"\n borderRadius={0}\n border={false}\n style={StyleSheet.absoluteFill}\n />\n </Animated.View>\n\n {/* Bottom border — fades in at scroll threshold */}\n <Animated.View\n style={[\n styles.border,\n { borderBottomColor: theme.colors.border },\n borderAnimStyle,\n ]}\n pointerEvents=\"none\"\n />\n\n {/* Navbar row */}\n <View style={styles.row}>\n <View style={styles.side}>{leading}</View>\n <View style={styles.titleContainer}>\n {title != null && (\n <Text\n style={[styles.title, { color: theme.colors.text }]}\n numberOfLines={1}\n >\n {title}\n </Text>\n )}\n </View>\n <View style={[styles.side, styles.trailingSide]}>{trailing}</View>\n </View>\n </View>\n );\n },\n);\n\nGlassNavbar.displayName = 'GlassNavbar';\n\nconst styles = StyleSheet.create({\n wrapper: {\n height: NAVBAR_HEIGHT,\n zIndex: 10,\n },\n row: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 16,\n },\n side: {\n width: 60,\n alignItems: 'flex-start',\n justifyContent: 'center',\n },\n trailingSide: {\n alignItems: 'flex-end',\n },\n titleContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n fontSize: 17,\n fontWeight: '600',\n letterSpacing: -0.4,\n },\n border: {\n ...StyleSheet.absoluteFillObject,\n top: undefined,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n});\n","import React, { useCallback, useEffect } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n Extrapolation,\n} from 'react-native-reanimated';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme } from 'reactnatively-theme';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { GlassSidebarItem, GlassSidebarProps } from './GlassSidebar.types';\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_COLLAPSED_WIDTH = 64;\n\n// ─── Sidebar Item ─────────────────────────────────────────────────────────────\n\ninterface SidebarItemViewProps {\n item: GlassSidebarItem;\n isActive: boolean;\n isCollapsed: boolean;\n labelOpacity: SharedValue<number>;\n onPress: (value: string) => void;\n}\n\nconst SidebarItemView = React.memo<SidebarItemViewProps>(\n ({ item, isActive, labelOpacity, onPress }) => {\n const { theme } = useTheme();\n\n const labelStyle = useAnimatedStyle(() => ({\n opacity: labelOpacity.value,\n // Prevent label from taking space when collapsed\n width: interpolate(labelOpacity.value, [0, 1], [0, 1000], Extrapolation.CLAMP) === 0\n ? 0\n : undefined,\n }));\n\n const handlePress = useCallback(() => {\n onPress(item.value);\n }, [item.value, onPress]);\n\n const activeBackground = isActive ? theme.colors.primaryMuted : 'transparent';\n const iconColor = isActive ? theme.colors.primary : theme.colors.textSecondary;\n\n return (\n <Pressable\n onPress={handlePress}\n accessibilityRole=\"button\"\n accessibilityLabel={item.label}\n accessibilityState={{ selected: isActive }}\n >\n <View\n style={[\n styles.itemRow,\n { backgroundColor: activeBackground },\n ]}\n >\n {/* Icon */}\n <View style={[styles.itemIcon, { tintColor: iconColor } as any]}>\n {item.icon}\n </View>\n\n {/* Label — hidden when collapsed */}\n <Animated.View style={[styles.labelWrapper, labelStyle]}>\n <Text\n style={[\n styles.itemLabel,\n {\n color: isActive ? theme.colors.primary : theme.colors.text,\n fontWeight: isActive ? '600' : '400',\n },\n ]}\n numberOfLines={1}\n >\n {item.label}\n </Text>\n </Animated.View>\n\n {/* Badge */}\n {item.badge != null && item.badge > 0 && (\n <View style={[styles.badge, { backgroundColor: theme.colors.primary }]}>\n <Text style={styles.badgeText}>\n {item.badge > 99 ? '99+' : item.badge}\n </Text>\n </View>\n )}\n </View>\n </Pressable>\n );\n },\n);\n\nSidebarItemView.displayName = 'GlassSidebar.Item';\n\n// ─── GlassSidebar ─────────────────────────────────────────────────────────────\n\n/**\n * GlassSidebar — persistent (non-modal) sidebar with collapsible animation.\n * Width springs between expanded/collapsed; labels fade out when collapsed.\n */\nexport const GlassSidebar = React.memo<GlassSidebarProps>(\n ({\n items,\n activeItem,\n onItemPress,\n isCollapsed = false,\n width = DEFAULT_WIDTH,\n collapsedWidth = DEFAULT_COLLAPSED_WIDTH,\n style,\n }) => {\n const animWidth = useSharedValue(isCollapsed ? collapsedWidth : width);\n const labelOpacity = useSharedValue(isCollapsed ? 0 : 1);\n\n useEffect(() => {\n animWidth.value = withSpring(isCollapsed ? collapsedWidth : width, SPRING_SNAPPY);\n labelOpacity.value = withSpring(isCollapsed ? 0 : 1, SPRING_SNAPPY);\n }, [isCollapsed, width, collapsedWidth]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n width: animWidth.value,\n }));\n\n const handleItemPress = useCallback(\n (value: string) => {\n onItemPress?.(value);\n },\n [onItemPress],\n );\n\n return (\n <Animated.View style={[styles.wrapper, animatedStyle, style]}>\n <GlassView\n elevation={2}\n variant=\"surface\"\n borderRadius={0}\n style={StyleSheet.absoluteFill}\n />\n <View style={styles.itemList}>\n {items.map((item) => (\n <SidebarItemView\n key={item.value}\n item={item}\n isActive={activeItem === item.value}\n isCollapsed={isCollapsed}\n labelOpacity={labelOpacity}\n onPress={handleItemPress}\n />\n ))}\n </View>\n </Animated.View>\n );\n },\n);\n\nGlassSidebar.displayName = 'GlassSidebar';\n\nconst styles = StyleSheet.create({\n wrapper: {\n overflow: 'hidden',\n alignSelf: 'stretch',\n },\n itemList: {\n flex: 1,\n paddingVertical: 8,\n gap: 2,\n },\n itemRow: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 10,\n paddingHorizontal: 12,\n borderRadius: 10,\n marginHorizontal: 6,\n overflow: 'hidden',\n },\n itemIcon: {\n width: 28,\n height: 28,\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n labelWrapper: {\n flex: 1,\n marginLeft: 10,\n overflow: 'hidden',\n },\n itemLabel: {\n fontSize: 14,\n lineHeight: 20,\n },\n badge: {\n minWidth: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 4,\n marginLeft: 6,\n },\n badgeText: {\n color: '#fff',\n fontSize: 11,\n fontWeight: '600',\n },\n});\n","import React, { useCallback, useRef } from 'react';\nimport { StyleSheet, View, type LayoutChangeEvent } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { SPRING_SNAPPY } from 'reactnatively-animations';\nimport type { InteractiveGlassSurfaceProps } from './InteractiveGlassSurface.types';\n\nconst MAX_TILT_DEG = 12;\n\n/**\n * InteractiveGlassSurface — GlassView that simulates a gyroscope tilt effect\n * by tracking touch position relative to the component center.\n * Springs back to 0,0 on touch end.\n */\nexport const InteractiveGlassSurface = React.memo<InteractiveGlassSurfaceProps>(\n ({\n children,\n parallaxStrength = 0.05,\n elevation = 2,\n style,\n }) => {\n const rotateX = useSharedValue(0);\n const rotateY = useSharedValue(0);\n\n // Store layout dimensions for center calculation\n const layoutRef = useRef({ width: 0, height: 0 });\n\n const handleLayout = useCallback((e: LayoutChangeEvent) => {\n layoutRef.current = {\n width: e.nativeEvent.layout.width,\n height: e.nativeEvent.layout.height,\n };\n }, []);\n\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [\n { perspective: 800 },\n { rotateX: `${rotateX.value}deg` },\n { rotateY: `${rotateY.value}deg` },\n ],\n }));\n\n const responderHandlers = {\n onStartShouldSetResponder: () => true,\n onMoveShouldSetResponder: () => true,\n onResponderGrant: (e: any) => {\n const { locationX, locationY } = e.nativeEvent;\n updateTilt(locationX, locationY);\n },\n onResponderMove: (e: any) => {\n const { locationX, locationY } = e.nativeEvent;\n updateTilt(locationX, locationY);\n },\n onResponderRelease: () => {\n resetTilt();\n },\n onResponderTerminate: () => {\n resetTilt();\n },\n };\n\n function updateTilt(touchX: number, touchY: number) {\n const { width, height } = layoutRef.current;\n if (width === 0 || height === 0) return;\n\n // Normalise to -1..1 relative to center\n const normX = (touchX - width / 2) / (width / 2);\n const normY = (touchY - height / 2) / (height / 2);\n\n // Clamp to [-1,1]\n const clampedX = Math.max(-1, Math.min(1, normX));\n const clampedY = Math.max(-1, Math.min(1, normY));\n\n // rotateX tilts on vertical axis (pitch), rotateY on horizontal (yaw)\n const tiltScalar = parallaxStrength * MAX_TILT_DEG * 20;\n rotateX.value = withSpring(-clampedY * tiltScalar, SPRING_SNAPPY);\n rotateY.value = withSpring( clampedX * tiltScalar, SPRING_SNAPPY);\n }\n\n function resetTilt() {\n rotateX.value = withSpring(0, SPRING_SNAPPY);\n rotateY.value = withSpring(0, SPRING_SNAPPY);\n }\n\n return (\n <Animated.View style={[styles.wrapper, animatedStyle, style]}>\n <View style={StyleSheet.absoluteFill} onLayout={handleLayout} {...responderHandlers} />\n <GlassView\n elevation={elevation}\n variant=\"surface\"\n borderRadius={20}\n style={styles.glass}\n >\n {children}\n </GlassView>\n </Animated.View>\n );\n },\n);\n\nInteractiveGlassSurface.displayName = 'InteractiveGlassSurface';\n\nconst styles = StyleSheet.create({\n wrapper: {\n // perspective is set via transform in animatedStyle\n },\n glass: {\n overflow: 'hidden',\n },\n});\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n PanResponder,\n Pressable,\n StyleSheet,\n Text,\n View,\n} from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n} from 'react-native-reanimated';\nimport { GlassView } from 'reactnatively-glass';\nimport { useTheme } from 'reactnatively-theme';\nimport { SPRING_BOUNCE, usePressAnimation } from 'reactnatively-animations';\nimport type { FloatingMediaPanelProps, MediaPanelState } from './FloatingMediaPanel.types';\n\nconst MINI_HEIGHT = 56;\nconst EXPANDED_HEIGHT = 420;\nconst DRAG_THRESHOLD = 40;\n\n// ─── Control button ───────────────────────────────────────────────────────────\n\ninterface ControlButtonProps {\n label: string;\n onPress?: () => void;\n size?: number;\n}\n\nconst ControlButton = React.memo<ControlButtonProps>(({ label, onPress, size = 24 }) => {\n const { animatedStyle, handlers } = usePressAnimation({ pressedScale: 0.88 });\n return (\n <Pressable\n onPress={onPress}\n onPressIn={handlers.onPressIn}\n onPressOut={handlers.onPressOut}\n accessibilityRole=\"button\"\n accessibilityLabel={label}\n hitSlop={12}\n >\n <Animated.View style={animatedStyle}>\n <Text style={{ fontSize: size, lineHeight: size + 4 }}>{label}</Text>\n </Animated.View>\n </Pressable>\n );\n});\n\nControlButton.displayName = 'FloatingMediaPanel.ControlButton';\n\n// ─── FloatingMediaPanel ───────────────────────────────────────────────────────\n\n/**\n * FloatingMediaPanel — glass panel that morphs between a slim mini bar and a\n * full expanded player. Drag up to expand, drag down to minimise.\n */\nexport const FloatingMediaPanel = React.memo<FloatingMediaPanelProps>(\n ({\n state: controlledState,\n defaultState = 'mini',\n onStateChange,\n artwork,\n title,\n subtitle,\n isPlaying = false,\n onPlayPause,\n onNext,\n onPrevious,\n progress = 0,\n style,\n }) => {\n const { theme } = useTheme();\n const [internalState, setInternalState] = useState<MediaPanelState>(defaultState);\n const activeState = controlledState !== undefined ? controlledState : internalState;\n\n const animHeight = useSharedValue(activeState === 'mini' ? MINI_HEIGHT : EXPANDED_HEIGHT);\n const dragStartY = useRef(0);\n\n const setActiveState = useCallback(\n (next: MediaPanelState) => {\n if (controlledState === undefined) setInternalState(next);\n onStateChange?.(next);\n },\n [controlledState, onStateChange],\n );\n\n useEffect(() => {\n animHeight.value = withSpring(\n activeState === 'mini' ? MINI_HEIGHT : EXPANDED_HEIGHT,\n SPRING_BOUNCE,\n );\n }, [activeState]);\n\n const panResponder = useRef(\n PanResponder.create({\n onStartShouldSetPanResponder: () => true,\n onPanResponderGrant: (e) => {\n dragStartY.current = e.nativeEvent.pageY;\n },\n onPanResponderRelease: (e) => {\n const dy = dragStartY.current - e.nativeEvent.pageY; // positive = dragged up\n if (dy > DRAG_THRESHOLD) {\n setActiveState('expanded');\n } else if (dy < -DRAG_THRESHOLD) {\n setActiveState('mini');\n }\n },\n }),\n ).current;\n\n const animatedStyle = useAnimatedStyle(() => ({\n height: animHeight.value,\n overflow: 'hidden' as const,\n }));\n\n const clampedProgress = Math.max(0, Math.min(1, progress));\n\n return (\n <Animated.View style={[styles.wrapper, animatedStyle, style]}>\n <GlassView\n elevation={3}\n variant=\"surface\"\n borderRadius={20}\n style={StyleSheet.absoluteFill}\n />\n\n {/* Drag handle */}\n <View style={styles.dragArea} {...panResponder.panHandlers}>\n <View style={[styles.dragHandle, { backgroundColor: theme.colors.border }]} />\n </View>\n\n {/* ── Mini bar ──────────────────────────────────────────── */}\n {activeState === 'mini' && (\n <Pressable\n style={styles.miniBar}\n onPress={() => setActiveState('expanded')}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open media player\"\n >\n {/* Artwork thumbnail */}\n {artwork != null && (\n <View style={styles.miniArtwork}>{artwork}</View>\n )}\n\n {/* Title */}\n <View style={styles.miniText}>\n <Text style={[styles.miniTitle, { color: theme.colors.text }]} numberOfLines={1}>\n {title ?? 'Not playing'}\n </Text>\n {subtitle != null && (\n <Text\n style={[styles.miniSubtitle, { color: theme.colors.textSecondary }]}\n numberOfLines={1}\n >\n {subtitle}\n </Text>\n )}\n </View>\n\n {/* Play/pause */}\n <ControlButton\n label={isPlaying ? '⏸' : '▶'}\n onPress={onPlayPause}\n size={20}\n />\n </Pressable>\n )}\n\n {/* ── Expanded panel ─────────────────────────────────────── */}\n {activeState === 'expanded' && (\n <View style={styles.expanded}>\n {/* Large artwork */}\n {artwork != null && (\n <View style={styles.expandedArtwork}>{artwork}</View>\n )}\n\n {/* Title + subtitle */}\n <View style={styles.expandedText}>\n <Text\n style={[styles.expandedTitle, { color: theme.colors.text }]}\n numberOfLines={1}\n >\n {title ?? 'Not playing'}\n </Text>\n {subtitle != null && (\n <Text\n style={[styles.expandedSubtitle, { color: theme.colors.textSecondary }]}\n numberOfLines={1}\n >\n {subtitle}\n </Text>\n )}\n </View>\n\n {/* Progress bar */}\n <View style={[styles.progressTrack, { backgroundColor: theme.colors.border }]}>\n <View\n style={[\n styles.progressFill,\n {\n backgroundColor: theme.colors.primary,\n width: `${clampedProgress * 100}%`,\n },\n ]}\n />\n </View>\n\n {/* Controls row */}\n <View style={styles.controls}>\n <ControlButton label=\"⏮\" onPress={onPrevious} size={28} />\n <ControlButton label={isPlaying ? '⏸' : '▶'} onPress={onPlayPause} size={36} />\n <ControlButton label=\"⏭\" onPress={onNext} size={28} />\n </View>\n\n {/* Collapse button */}\n <Pressable\n onPress={() => setActiveState('mini')}\n style={styles.collapseBtn}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Collapse media player\"\n >\n <Text style={[styles.collapseLabel, { color: theme.colors.textSecondary }]}>\n ∨\n </Text>\n </Pressable>\n </View>\n )}\n </Animated.View>\n );\n },\n);\n\nFloatingMediaPanel.displayName = 'FloatingMediaPanel';\n\nconst styles = StyleSheet.create({\n wrapper: {\n borderRadius: 20,\n overflow: 'hidden',\n },\n dragArea: {\n alignItems: 'center',\n paddingTop: 8,\n paddingBottom: 4,\n },\n dragHandle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n },\n // ── Mini ──────────────────────────────────────────────────────────────────\n miniBar: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 16,\n gap: 12,\n },\n miniArtwork: {\n width: 36,\n height: 36,\n borderRadius: 8,\n overflow: 'hidden',\n },\n miniText: {\n flex: 1,\n },\n miniTitle: {\n fontSize: 14,\n fontWeight: '600',\n },\n miniSubtitle: {\n fontSize: 12,\n marginTop: 1,\n },\n // ── Expanded ──────────────────────────────────────────────────────────────\n expanded: {\n flex: 1,\n paddingHorizontal: 24,\n paddingBottom: 24,\n alignItems: 'center',\n gap: 16,\n },\n expandedArtwork: {\n width: 220,\n height: 220,\n borderRadius: 16,\n overflow: 'hidden',\n alignSelf: 'center',\n },\n expandedText: {\n alignSelf: 'stretch',\n alignItems: 'center',\n },\n expandedTitle: {\n fontSize: 20,\n fontWeight: '700',\n textAlign: 'center',\n },\n expandedSubtitle: {\n fontSize: 15,\n marginTop: 4,\n textAlign: 'center',\n },\n progressTrack: {\n alignSelf: 'stretch',\n height: 4,\n borderRadius: 2,\n overflow: 'hidden',\n },\n progressFill: {\n height: 4,\n borderRadius: 2,\n },\n controls: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 36,\n },\n collapseBtn: {\n marginTop: 4,\n paddingHorizontal: 24,\n paddingVertical: 8,\n },\n collapseLabel: {\n fontSize: 20,\n fontWeight: '300',\n },\n});\n"]}