diff --git a/bun.lock b/bun.lock index c9120b67..3e405b1a 100644 --- a/bun.lock +++ b/bun.lock @@ -1,6 +1,5 @@ { "lockfileVersion": 1, - "configVersion": 1, "workspaces": { "": { "name": "rnui", @@ -15,6 +14,7 @@ "@babel/preset-typescript": "^7.28.5", "@babel/runtime": "^7.29.2", "@changesets/cli": "^2.27.1", + "@shopify/flash-list": "^2.3.1", "babel-jest": "^29.7.0", "metro-react-native-babel-preset": "^0.77.0", "react-test-renderer": "19.2.0", @@ -118,7 +118,7 @@ "react": "19.2.0", "react-native": "0.83.2", "react-test-renderer": "19.2.0", - "tsup": "^8.4.0", + "tsup": "^8.5.1", "typescript": "^5.8.3", }, "peerDependencies": { @@ -149,7 +149,7 @@ "devDependencies": { "jest": "^29.7.0", "ts-jest": "^29.3.2", - "tsup": "^8.4.0", + "tsup": "^8.5.1", "typescript": "^5.8.3", }, }, @@ -174,7 +174,7 @@ "react": "19.2.0", "react-native": "0.83.2", "react-test-renderer": "19.2.0", - "tsup": "^8.4.0", + "tsup": "^8.5.1", "typescript": "^5.8.3", }, "peerDependencies": { @@ -1158,6 +1158,8 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ=="], + "@shopify/flash-list": ["@shopify/flash-list@2.3.1", "", { "peerDependencies": { "@babel/runtime": "*", "react": "*", "react-native": "*" } }, "sha512-7oktg2NQR7KAODjFoDaWe8/OBzyYbdTE3zQTrUBMxjIbxHTHN7UXRX1hX3DHk8KvtkgQdRfZOV8Gjj2l4fGrXw=="], + "@sideway/address": ["@sideway/address@4.1.5", "", { "dependencies": { "@hapi/hoek": "^9.0.0" } }, "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q=="], "@sideway/formula": ["@sideway/formula@3.0.1", "", {}, "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="], @@ -3984,7 +3986,7 @@ "@truongdq01/headless/@testing-library/react-native": ["@testing-library/react-native@12.9.0", "", { "dependencies": { "jest-matcher-utils": "^29.7.0", "pretty-format": "^29.7.0", "redent": "^3.0.0" }, "peerDependencies": { "jest": ">=28.0.0", "react": ">=16.8.0", "react-native": ">=0.59", "react-test-renderer": ">=16.8.0" }, "optionalPeers": ["jest"] }, "sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw=="], - "@truongdq01/headless/react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="], + "@truongdq01/headless/react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "@truongdq01/storybook/@react-native-async-storage/async-storage": ["@react-native-async-storage/async-storage@3.0.2", "", { "dependencies": { "idb": "8.0.3" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-XP0zDIl+1XoeuQ7f878qXKdl77zLwzLALPpxvNRc7ZtDh9ew36WSvOdQOhFkexMySapFAWxEbZxS8K8J2DU4eg=="], @@ -3992,7 +3994,7 @@ "@truongdq01/ui/@testing-library/react-native": ["@testing-library/react-native@12.9.0", "", { "dependencies": { "jest-matcher-utils": "^29.7.0", "pretty-format": "^29.7.0", "redent": "^3.0.0" }, "peerDependencies": { "jest": ">=28.0.0", "react": ">=16.8.0", "react-native": ">=0.59", "react-test-renderer": ">=16.8.0" }, "optionalPeers": ["jest"] }, "sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw=="], - "@truongdq01/ui/react": ["react@19.2.0", "", {}, "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ=="], + "@truongdq01/ui/react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "@types/react-native/react-native": ["react-native@0.84.1", "", { "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.84.1", "@react-native/codegen": "0.84.1", "@react-native/community-cli-plugin": "0.84.1", "@react-native/gradle-plugin": "0.84.1", "@react-native/js-polyfills": "0.84.1", "@react-native/normalize-colors": "0.84.1", "@react-native/virtualized-lists": "0.84.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", "babel-plugin-syntax-hermes-parser": "0.32.0", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "hermes-compiler": "250829098.0.9", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", "metro-runtime": "^0.83.3", "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" }, "peerDependencies": { "@types/react": "^19.1.1", "react": "^19.2.3" }, "optionalPeers": ["@types/react"], "bin": { "react-native": "cli.js" } }, "sha512-0PjxOyXRu3tZ8EobabxSukvhKje2HJbsZikR0U+pvS0pYZza2hXKjcSBiBdFN4h9D0S3v6a8kkrDK6WTRKMwzg=="], diff --git a/package.json b/package.json index 13ffb9cd..90d55804 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@babel/preset-typescript": "^7.28.5", "@babel/runtime": "^7.29.2", "@changesets/cli": "^2.27.1", + "@shopify/flash-list": "^2.3.1", "babel-jest": "^29.7.0", "metro-react-native-babel-preset": "^0.77.0", "react-test-renderer": "19.2.0", diff --git a/packages/ui/dist/index.js b/packages/ui/dist/index.js index 17f2fd3c..c271bcab 100644 --- a/packages/ui/dist/index.js +++ b/packages/ui/dist/index.js @@ -461,6 +461,7 @@ function AnimatedListInner({ ref, data, renderItem: (info) => /* @__PURE__ */ import_react4.default.createElement(AnimatedCell, { ...info }), + keyExtractor: (item, index) => item?.id || item?.key || String(index), ...flashListProps, contentContainerStyle: (0, import_react4.useMemo)(() => [ animatedList.container, @@ -3763,6 +3764,8 @@ function Marquee({ const translateX = (0, import_react_native_reanimated15.useSharedValue)(0); const translateY = (0, import_react_native_reanimated15.useSharedValue)(0); const isPaused = (0, import_react_native_reanimated15.useSharedValue)(false); + const [containerSize, setContainerSize] = import_react43.default.useState(0); + const [contentSize, setContentSize] = import_react43.default.useState(0); const animatedStyle = (0, import_react_native_reanimated15.useAnimatedStyle)(() => { if (direction === "left" || direction === "right") { return { @@ -3822,27 +3825,19 @@ function Marquee({ }; const resumeAnimation = () => { isPaused.value = false; - measureAndStart(); - }; - const measureAndStart = () => { - containerRef.current?.measure((x, y, width, height) => { - contentRef.current?.measure((cx, cy, cWidth, cHeight) => { - if (direction === "left" || direction === "right") { - startAnimation(width, cWidth); - } else { - startAnimation(height, cHeight); - } - }); - }); + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } }; (0, import_react43.useEffect)(() => { - const timeout = setTimeout(measureAndStart, 100); + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } return () => { - clearTimeout(timeout); (0, import_react_native_reanimated15.cancelAnimation)(translateX); (0, import_react_native_reanimated15.cancelAnimation)(translateY); }; - }, [children, speed, direction, loop]); + }, [containerSize, contentSize, speed, direction, loop]); const handlePressIn = () => { if (pauseOnPress) { pauseAnimation(); @@ -3861,7 +3856,15 @@ function Marquee({ style: styles11.container, accessibilityLabel, accessibilityRole: "text", - testID + testID, + onLayout: (e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContainerSize(width); + } else { + setContainerSize(height); + } + } }, fadeEdges && /* @__PURE__ */ import_react43.default.createElement(import_react43.default.Fragment, null, /* @__PURE__ */ import_react43.default.createElement( import_react_native43.View, @@ -3892,6 +3895,14 @@ function Marquee({ ], onTouchStart: handlePressIn, onTouchEnd: handlePressOut, + onLayout: (e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContentSize(width); + } else { + setContentSize(height); + } + }, accessible: false }, children @@ -4956,7 +4967,7 @@ function SegmentedControl({ transform: [{ translateX: translateX.value }], width: indicatorWidth.value })); - const showIndicator = layoutReady && segmentWidth > 0; + const showIndicator = layoutReady && segmentWidth > 0 && containerWidth > 0; return /* @__PURE__ */ import_react54.default.createElement( import_react_native53.View, { diff --git a/packages/ui/dist/index.js.map b/packages/ui/dist/index.js.map index 42b9f311..0b8c5208 100644 --- a/packages/ui/dist/index.js.map +++ b/packages/ui/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/components/Accordion/Accordion.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/Alert.tsx","../src/components/AnimatedList/AnimatedList.tsx","../src/components/AppBar/AppBar.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Input/Input.tsx","../src/components/FormField/FormGroupContext.tsx","../src/components/Input/AnimatedHelperText.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/Box/Box.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/CircularProgress/CircularProgress.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/CalendarGrid.tsx","../src/components/DatePicker/TimePickerWheels.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Divider/Divider.tsx","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Fab/Fab.tsx","../src/components/Form/Form.tsx","../src/components/FormControl/FormControl.tsx","../src/components/FormField/FormField.tsx","../src/components/Input/PasswordInput.tsx","../src/components/GlassCard/GlassCard.tsx","../src/components/Gradient/Gradient.tsx","../src/components/Grid/Grid.tsx","../src/components/Image/Image.tsx","../src/components/ImageList/ImageList.tsx","../src/components/LinearProgress/LinearProgress.tsx","../src/components/Link/Link.tsx","../src/components/List/List.tsx","../src/components/Marquee/Marquee.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/OTPInput/OTPInput.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Paper/Paper.tsx","../src/components/Popover/Popover.tsx","../src/components/Popper/Popper.tsx","../src/components/Pressable/Pressable.tsx","../src/components/Radio/Radio.tsx","../src/components/Rating/Rating.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Select/Select.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Slider/Slider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/SpeedDial/SpeedDial.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastItem.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Typography/Typography.tsx","../src/components/TelegramTabBar/TelegramTabBar.tsx","../src/components/ChatListItem/ChatListItem.tsx","../src/components/MessageInput/MessageInput.tsx","../src/components/TelegramPopup/TelegramPopup.tsx","../src/components/TelegramContextMenu/TelegramContextMenu.tsx","../src/components/TelegramSettingsMenu/TelegramSettingsMenu.tsx"],"sourcesContent":["export { ThemeProvider, useTheme, useTokens, useComponentTokens, useIsDark, useActiveBrand, useBrandSwitch, createTheme } from \"@truongdq01/headless\";\nexport type { Theme, ThemeOverride, ThemeProviderProps, Brand } from \"@truongdq01/headless\";\n\nexport * from \"./components/Accordion\";\nexport * from \"./components/Alert\";\nexport * from \"./components/AnimatedList\";\nexport * from \"./components/AppBar\";\nexport * from \"./components/Autocomplete\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Badge\";\nexport * from \"./components/BottomNavigation\";\nexport * from \"./components/BottomSheet\";\nexport * from \"./components/Box\";\nexport * from \"./components/Breadcrumbs\";\nexport * from \"./components/Button\";\nexport * from \"./components/ButtonGroup\";\nexport * from \"./components/Card\";\nexport * from \"./components/Carousel\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Chip\";\nexport * from \"./components/CircularProgress\";\nexport * from \"./components/DatePicker\";\nexport * from \"./components/Dialog\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/EmptyState\";\nexport * from \"./components/Fab\";\nexport * from \"./components/Form\";\nexport * from \"./components/FormControl\";\nexport * from \"./components/FormField\";\nexport * from \"./components/GlassCard\";\nexport * from \"./components/Gradient\";\nexport * from \"./components/Grid\";\nexport * from \"./components/Icon\";\nexport * from \"./components/Image\";\nexport * from \"./components/ImageList\";\nexport * from \"./components/Input\";\nexport * from \"./components/LinearProgress\";\nexport * from \"./components/Link\";\nexport * from \"./components/List\";\nexport * from \"./components/Marquee\";\nexport * from \"./components/Menu\";\nexport * from \"./components/Modal\";\nexport * from \"./components/OTPInput\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Paper\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Popper\";\nexport * from \"./components/Pressable\";\nexport * from \"./components/Radio\";\nexport * from \"./components/Rating\";\nexport * from \"./components/SegmentedControl\";\nexport * from \"./components/Select\";\nexport * from \"./components/Skeleton\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Snackbar\";\nexport * from \"./components/SpeedDial\";\nexport * from \"./components/Stack\";\nexport * from \"./components/Stepper\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Table\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/TextArea\";\nexport * from \"./components/TextField\";\nexport * from \"./components/Timeline\";\nexport * from \"./components/Toast\";\nexport * from \"./components/ToggleButton\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Typography\";\nexport * from \"./components/TelegramTabBar\";\nexport * from \"./components/ChatListItem\";\nexport * from \"./components/MessageInput\";\nexport * from \"./components/TelegramPopup\";\nexport * from \"./components/TelegramContextMenu\";\nexport * from \"./components/TelegramSettingsMenu\";\n\n// Styles\nexport { StyleSheet } from \"react-native\";\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated, {\n useSharedValue,\n withTiming,\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n} from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useDisclosure, useTokens, useComponentTokens, usePressable, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface AccordionProps {\n expanded?: boolean;\n defaultExpanded?: boolean;\n disabled?: boolean;\n onChange?: (expanded: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport interface AccordionSummaryProps {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n}\n\nexport interface AccordionDetailsProps {\n children?: React.ReactNode;\n}\n\nexport interface AccordionActionsProps {\n children?: React.ReactNode;\n}\n\ninterface AccordionContextValue {\n expanded: boolean;\n toggle: () => void;\n disabled: boolean;\n}\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n expanded: controlledExpanded,\n defaultExpanded = false,\n disabled = false,\n onChange,\n children,\n}: AccordionProps) {\n const disclosure = useDisclosure({\n isOpen: controlledExpanded,\n defaultOpen: defaultExpanded,\n onOpen: () => onChange?.(true),\n onClose: () => onChange?.(false),\n });\n\n const { accordion } = useComponentTokens();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function AccordionSummary({ children, expandIcon }: AccordionSummaryProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx) return null;\n\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress: ctx.toggle,\n disabled: ctx.disabled,\n feedbackMode: \"opacity\",\n });\n\n const reduceMotion = useReduceMotionEnabled();\n const rotation = useSharedValue(ctx.expanded ? 1 : 0);\n React.useEffect(() => {\n const target = ctx.expanded ? 1 : 0;\n rotation.value = reduceMotion ? target : withTiming(target, { duration: 200 });\n }, [ctx.expanded, reduceMotion]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${interpolate(rotation.value, [0, 1], [0, 180], Extrapolation.CLAMP)}deg` }],\n }));\n\n const containerStyle = useMemo(() => [\n accordion.summary,\n animatedStyle,\n ], [accordion.summary, animatedStyle]);\n\n return (\n \n \n \n {children}\n \n \n {expandIcon ?? (\n \n )}\n \n \n \n );\n}\n\nexport function AccordionDetails({ children }: AccordionDetailsProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n const reduceMotion = useReduceMotionEnabled();\n const [contentHeight, setContentHeight] = React.useState(0);\n const animHeight = useSharedValue(0);\n\n React.useEffect(() => {\n if (!ctx) return;\n const target = ctx.expanded ? contentHeight : 0;\n animHeight.value = reduceMotion ? target : withTiming(target, { duration: 250 });\n }, [ctx?.expanded, contentHeight, reduceMotion]);\n\n const animStyle = useAnimatedStyle(() => ({\n height: animHeight.value,\n overflow: \"hidden\",\n }));\n\n return (\n \n setContentHeight(e.nativeEvent.layout.height)}\n style={[accordion.details, { position: \"absolute\", left: 0, right: 0 }]}\n >\n {children}\n \n \n );\n}\n\nexport function AccordionActions({ children }: AccordionActionsProps) {\n const tokens = useTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx?.expanded) return null;\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport {\n // Navigation & Actions\n Star,\n Heart,\n Check,\n Info,\n AlertTriangle,\n AlertCircle,\n CheckCircle,\n X,\n XCircle,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Search,\n Settings,\n Bell,\n Home,\n User,\n Plus,\n Minus,\n Edit,\n Trash,\n Share,\n Download,\n Upload,\n RefreshCw,\n ExternalLink,\n ChevronUp,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n Calendar,\n Clock,\n MapPin,\n Camera,\n Image,\n Video,\n FileText,\n Copy,\n Layout,\n Grid,\n List,\n Layers,\n Box,\n Package,\n ShoppingCart,\n CreditCard,\n Mail,\n Phone,\n MessageSquare,\n Send,\n Zap,\n Flame,\n StarHalf,\n ThumbsUp,\n ThumbsDown,\n} from \"lucide-react-native\";\n\nexport const ICON_MAP = {\n star: Star,\n heart: Heart,\n check: Check,\n info: Info,\n warning: AlertTriangle,\n error: AlertCircle,\n checkCircle: CheckCircle,\n close: X,\n closeCircle: XCircle,\n menu: Menu,\n moreVertical: MoreVertical,\n moreHorizontal: MoreHorizontal,\n search: Search,\n settings: Settings,\n bell: Bell,\n home: Home,\n user: User,\n plus: Plus,\n minus: Minus,\n edit: Edit,\n trash: Trash,\n share: Share,\n download: Download,\n upload: Upload,\n refresh: RefreshCw,\n externalLink: ExternalLink,\n chevronUp: ChevronUp,\n chevronDown: ChevronDown,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n eye: Eye,\n eyeOff: EyeOff,\n lock: Lock,\n unlock: Unlock,\n calendar: Calendar,\n clock: Clock,\n mapPin: MapPin,\n camera: Camera,\n image: Image,\n video: Video,\n file: FileText,\n copy: Copy,\n layout: Layout,\n grid: Grid,\n list: List,\n layers: Layers,\n box: Box,\n package: Package,\n cart: ShoppingCart,\n card: CreditCard,\n mail: Mail,\n phone: Phone,\n message: MessageSquare,\n send: Send,\n zap: Zap,\n flame: Flame,\n starHalf: StarHalf,\n thumbsUp: ThumbsUp,\n thumbsDown: ThumbsDown,\n} as const;\n\nexport type IconName = keyof typeof ICON_MAP;\n\nexport interface IconProps {\n /** The name of the icon. Can also be passed as children. */\n name?: IconName | string;\n /** The name of the icon as text children. */\n children?: IconName | string | React.ReactNode;\n /** Size of the icon. Can be a number or a theme preset. */\n size?: number | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"small\" | \"medium\" | \"large\";\n /** Color of the icon. Can be a raw hex or a theme preset. */\n color?: string;\n style?: any;\n}\n\n/**\n * A standardized Icon component that wraps lucide-react-native icons.\n * Provides theme-aware sizing and colors.\n */\nexport function Icon({ name, children, size, color, style }: IconProps) {\n const { icon: iconTokens } = useComponentTokens();\n const tokens = useTokens();\n \n // Resolve the icon name from either prop or children\n const iconNameString = (name ?? (typeof children === \"string\" ? children : undefined)) as IconName;\n \n const resolvedSize = typeof size === \"number\" \n ? size \n : iconTokens.size[(size ?? \"md\") as keyof typeof iconTokens.size] ?? 20;\n \n const resolvedColor = color && color in iconTokens.color\n ? iconTokens.color[color as keyof typeof iconTokens.color]\n : color ?? tokens.color.text.primary;\n\n const IconComp = ICON_MAP[iconNameString as keyof typeof ICON_MAP] || Info;\n\n return (\n \n \n \n );\n}\n\n/**\n * A helper to wrap any icon with standard sizing and colors.\n */\nexport function IconWrapper({ children, size, color }: { children: React.ReactNode; size?: number; color?: string }) {\n const tokens = useTokens();\n if (!React.isValidElement>(children)) return null;\n return React.cloneElement(children, {\n color: children.props.color ?? color ?? tokens.color.text.primary,\n size: children.props.size ?? size,\n });\n}\n","import React, { useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useAlert } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport type AlertSeverity = \"error\" | \"warning\" | \"info\" | \"success\";\nexport type AlertVariant = \"standard\" | \"filled\" | \"outlined\";\n\nexport interface AlertProps {\n /** Severity of the alert */\n severity?: AlertSeverity;\n /** Visual variant */\n variant?: AlertVariant;\n /** Custom icon or false to hide */\n icon?: React.ReactNode | false;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Callback on close button press */\n onClose?: () => void;\n /** Content of the alert */\n children?: React.ReactNode;\n}\n\nexport interface AlertTitleProps {\n children?: React.ReactNode;\n}\n\nconst SEVERITY_ICONS: Record = {\n info: \"info\",\n success: \"checkCircle\",\n warning: \"warning\",\n error: \"error\",\n};\n\nexport function Alert({\n severity = \"info\",\n variant = \"standard\",\n icon,\n action,\n onClose,\n children,\n}: AlertProps) {\n const { alert } = useComponentTokens();\n const tokens = useTokens();\n const { isOpen, getAlertProps, getCloseButtonProps } = useAlert({ onClose });\n const severityTokens = alert.variant[severity];\n\n if (!isOpen) return null;\n\n const containerStyle = useMemo(() => {\n const base = [alert.container];\n if (variant === \"filled\") {\n base.push({\n backgroundColor: severityTokens.icon,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n } else if (variant === \"outlined\") {\n base.push({\n backgroundColor: \"transparent\",\n borderColor: severityTokens.border,\n borderWidth: 1,\n } as any);\n } else {\n base.push({\n backgroundColor: severityTokens.bg,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n }\n return base;\n }, [alert, severityTokens, variant]);\n\n const textColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.text;\n const iconColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.icon;\n\n return (\n \n {icon !== false && (\n \n {icon ?? (\n \n {SEVERITY_ICONS[severity]}\n \n )}\n \n )}\n \n {children}\n \n {action}\n {onClose && (\n \n \n \n )}\n \n );\n}\n\nexport function AlertTitle({ children }: AlertTitleProps) {\n const { alert } = useComponentTokens();\n // We can't easily get the parent Alert's severity here without context,\n // but we can use a generic color or inherit from View style.\n // For now, let's use a standard bold style.\n return (\n \n {children}\n \n );\n}\n","import React, { forwardRef, useMemo } from \"react\";\nimport { View, StyleProp, ViewStyle, StyleSheet, ListRenderItemInfo } from \"react-native\";\nimport { FlatList } from \"react-native\";\nimport Animated, { FadeInDown, Layout, ReduceMotion } from \"react-native-reanimated\";\nimport { useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\ntype FlashListProps = {\n data: T[] | null | undefined;\n renderItem: (info: any) => React.ReactElement | null;\n estimatedItemSize?: number;\n contentContainerStyle?: any;\n [key: string]: any;\n};\n\nconst ReanimatedListImpl = Animated.createAnimatedComponent(FlatList as any) as any;\n\nexport interface AnimatedListProps extends Omit, \"renderItem\"> {\n /** The items to render */\n data: T[] | null | undefined;\n /** Function to render each item. Use `index` to stagger entering animations if desired. */\n renderItem: (info: ListRenderItemInfo) => React.ReactElement | null;\n /**\n * Average main-axis size of one item (usually **height** in a vertical list), in dp.\n * FlashList uses this to size the scroll window and recycle views; **pick a value close to the real\n * rendered row height** (± a few px). If this is far off, you may see scroll jumps or degraded\n * performance with little warning.\n * @see https://shopify.github.io/flash-list/docs/estimated-item-size\n */\n estimatedItemSize: number;\n /** Apply entering animation to items as they appear. Recommended: FadeInDown */\n itemEntering?: any;\n /** Apply exiting animation to items as they disappear */\n itemExiting?: any;\n /** Apply layout animation when items are reordered. Recommended: Layout.springify() */\n itemLayout?: any;\n /**\n * Automatically stagger item entry animations.\n * Note: This wraps items in an Animated.View.\n */\n staggerEntering?: boolean;\n /** Delay between staggered items in ms. Default 50 */\n staggerDelay?: number;\n /** Container style for the wrapper Animated.View */\n itemContainerStyle?: StyleProp;\n}\n\n/**\n * AnimatedList wraps @shopify/flash-list with Reanimated to provide\n * ultra-fast performance combined with smooth layout and entry animations.\n *\n * Prefer a **stable** `renderItem` (`useCallback`) and `keyExtractor` so FlashList does not recycle unnecessarily.\n */\nfunction AnimatedListInner(\n {\n data,\n renderItem,\n itemEntering = FadeInDown,\n itemExiting,\n itemLayout = Layout.springify().damping(16).stiffness(150),\n staggerEntering = false,\n staggerDelay = 50,\n itemContainerStyle,\n ...flashListProps\n }: AnimatedListProps,\n ref: any\n) {\n const { animatedList } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const effectiveEntering = reduceMotion ? undefined : itemEntering;\n const effectiveExiting = reduceMotion ? undefined : itemExiting;\n const effectiveLayout = reduceMotion ? undefined : itemLayout;\n\n const ListImpl: any = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: any };\n const Impl = mod?.FlashList ?? FlatList;\n return Animated.createAnimatedComponent(Impl as any);\n } catch {\n return ReanimatedListImpl;\n }\n }, []);\n\n const AnimatedCell = (info: any) => {\n const { index } = info;\n const enteringAnim = staggerEntering && effectiveEntering?.delay\n ? effectiveEntering.delay(Math.min(index * staggerDelay, 500))\n : effectiveEntering;\n\n return (\n \n {renderItem(info as unknown as ListRenderItemInfo)}\n \n );\n };\n\n return (\n }\n {...flashListProps}\n contentContainerStyle={useMemo(() => [\n animatedList.container,\n flashListProps.contentContainerStyle\n ], [animatedList.container, flashListProps.contentContainerStyle])}\n />\n );\n}\n\n// eslint-disable-next-line react/display-name\nexport const AnimatedList = forwardRef(AnimatedListInner as any) as (\n props: AnimatedListProps & { ref?: React.Ref }\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n itemWrapper: {\n overflow: \"hidden\",\n },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface AppBarProps {\n children?: React.ReactNode;\n color?: \"default\" | \"inherit\" | \"primary\" | \"secondary\" | \"transparent\";\n variant?: \"elevation\" | \"outlined\";\n position?: \"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\";\n elevation?: 0 | 1 | 2 | 3 | 4;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function AppBar({\n children,\n color = \"primary\",\n variant = \"elevation\",\n position = \"relative\",\n elevation = 2,\n style,\n}: AppBarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n const shadows = [tokens.shadow.none, tokens.shadow.sm, tokens.shadow.md, tokens.shadow.lg, tokens.shadow.xl];\n\n const bgMap: Record = {\n default: appBar.container.backgroundColor,\n inherit: \"transparent\",\n primary: tokens.color.brand.default,\n secondary: tokens.color.brand.muted,\n transparent: \"transparent\",\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ToolbarProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Toolbar({ children, style }: ToolbarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n","import React, { useState, useRef } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n Easing,\n} from \"react-native-reanimated\";\nimport { useAutocomplete, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\n\nexport interface AutocompleteProps {\n options: T[];\n value?: T | T[];\n defaultValue?: T | T[];\n multiple?: boolean;\n getOptionLabel?: (option: T) => string;\n renderOption?: (option: T, selected: boolean) => React.ReactNode;\n onChange?: (value: T | T[] | undefined) => void;\n inputValue?: string;\n onInputChange?: (value: string) => void;\n placeholder?: string;\n label?: string;\n disabled?: boolean;\n}\n\nexport function Autocomplete({\n options,\n value,\n defaultValue,\n multiple = false,\n getOptionLabel,\n renderOption,\n onChange,\n inputValue,\n onInputChange,\n placeholder = \"Select...\",\n label,\n disabled = false,\n}: AutocompleteProps) {\n const tokens = useTokens();\n const { autocomplete } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const inputRef = useRef(null);\n const [inputRect, setInputRect] = useState({ pageX: 0, pageY: 0, width: 0, height: 0 });\n const [dropdownMounted, setDropdownMounted] = useState(false);\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const {\n inputValue: query,\n setInputValue,\n isOpen,\n open,\n close,\n isSelected,\n selectOption,\n filteredOptions,\n } = useAutocomplete({\n options, value, defaultValue, multiple, getOptionLabel,\n onChange, inputValue, onInputChange,\n });\n\n const labelOf = getOptionLabel ?? ((o: T) => String(o));\n const DROPDOWN_MAX_HEIGHT = autocomplete.menu.maxHeight;\n const GAP = (autocomplete.menu as any).marginTop ?? 4;\n\n const measureAndOpen = () => {\n if (!isOpen) {\n inputRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setInputRect({ pageX, pageY, width: w, height: h });\n open();\n opacity.value = 0;\n scale.value = 0.95;\n setDropdownMounted(true);\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 160, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 300 });\n });\n });\n }\n };\n\n const handleClose = () => {\n opacity.value = withTiming(0, { duration: 120 });\n scale.value = withTiming(0.96, { duration: 120 });\n setTimeout(() => {\n close();\n setDropdownMounted(false);\n }, 130);\n };\n\n const spaceBelow = windowHeight - (inputRect.pageY + inputRect.height);\n const showAbove = spaceBelow < DROPDOWN_MAX_HEIGHT + 40;\n\n const dropdownTop = showAbove\n ? inputRect.pageY - DROPDOWN_MAX_HEIGHT - GAP\n : inputRect.pageY + inputRect.height + GAP;\n\n const dropdownAnimStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n return (\n \n {\n setInputValue(val);\n measureAndOpen();\n }}\n onFocus={measureAndOpen}\n onBlur={() => setTimeout(handleClose, 150)}\n disabled={disabled}\n />\n\n {dropdownMounted && filteredOptions.length > 0 && (\n \n \n \n {filteredOptions.map((option, idx) => {\n const selected = isSelected(option);\n return (\n {\n if (selected && !multiple) {\n // Deselect if already selected in single mode\n selectOption(undefined as any);\n } else {\n selectOption(option);\n }\n if (!multiple) handleClose();\n }}\n style={({ pressed }) => ({\n padding: autocomplete.item.padding,\n backgroundColor: pressed\n ? autocomplete.item.hover.backgroundColor\n : selected\n ? autocomplete.item.active.backgroundColor\n : \"transparent\",\n })}\n >\n {renderOption ? renderOption(option, selected) : (\n \n {labelOf(option)}\n \n )}\n \n );\n })}\n \n \n )}\n \n );\n}\n","import React, { useMemo, useState, useEffect } from \"react\";\nimport {\n TextInput as RNTextInput,\n View,\n Text,\n type TextInputProps as RNTextInputProps,\n type NativeSyntheticEvent,\n type TextInputChangeEventData,\n} from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useIconStyle } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"./AnimatedHelperText\";\n\nconst FOCUS_MS = 150;\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(RNTextInput);\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps extends Omit {\n /** Callback for when the text changes */\n onChange?: (text: string) => void;\n /** Field label shown above input (or floating inside when `floatingLabel`) */\n label?: string;\n /** Error message shown below input */\n error?: string;\n /** Helper text shown below input (overridden by error) */\n helperText?: string;\n /** Animate label inside the field (Material / Telegram-style) */\n floatingLabel?: boolean;\n /** Size preset */\n size?: InputSize;\n /** Slot for leading icon/element inside input */\n leadingElement?: React.ReactNode;\n /** Slot for trailing icon/element inside input */\n trailingElement?: React.ReactNode;\n /** Disable input */\n disabled?: boolean;\n /** Callback when error should be cleared (called on first keystroke) */\n onClearError?: () => void;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Input({\n label,\n error,\n helperText,\n floatingLabel = false,\n size = \"md\",\n leadingElement,\n trailingElement,\n disabled = false,\n onClearError,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n placeholder,\n accessibilityLabel: accessibilityLabelProp,\n ...rest\n}: InputProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n\n const [isFocused, setIsFocused] = useState(false);\n const [hasTyped, setHasTyped] = useState(false);\n const [uncontrolledText, setUncontrolledText] = useState(() =>\n defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : \"\"\n );\n\n const hasValue =\n value !== undefined && value !== null\n ? String(value).length > 0\n : uncontrolledText.length > 0;\n\n const focusProgress = useSharedValue(0);\n const floatProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n useEffect(() => {\n if (!floatingLabel || !label) return;\n floatProgress.value = withTiming(isFocused || hasValue ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, hasValue, floatingLabel, label, floatProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const fl = input.floatingLabel;\n\n const animatedContainerStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const floatingLabelStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label || !fl) {\n return {};\n }\n const inactiveFs = fl.fontSize.inactive;\n const activeFs = fl.fontSize.active;\n const inactiveC = fl.color.inactive;\n const activeC = fl.color.active;\n const ty0 = fl.translateY.inactive;\n const ty1 = fl.translateY.active;\n return {\n position: \"absolute\" as const,\n left: 0,\n right: 0,\n top: interpolate(floatProgress.value, [0, 1], [16, 6]),\n transform: [{ translateY: interpolate(floatProgress.value, [0, 1], [ty0, ty1]) }],\n fontSize: interpolate(floatProgress.value, [0, 1], [inactiveFs, activeFs]),\n color: interpolateColor(floatProgress.value, [0, 1], [inactiveC, activeC]),\n pointerEvents: \"none\" as const,\n };\n }, [floatingLabel, label, fl]);\n\n const animatedInputPadStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label) {\n return {};\n }\n return {\n paddingTop: interpolate(floatProgress.value, [0, 1], [0, 12]),\n };\n }, [floatingLabel, label]);\n\n const staticContainerStyle = useMemo(() => {\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n return [\n input.container,\n input.size[size],\n !isGrouped && error && input.state.error,\n !isGrouped && disabled && input.state.disabled,\n groupedChrome,\n ];\n }, [input, size, error, disabled, isGrouped]);\n\n const handleChange = (e: NativeSyntheticEvent) => {\n const text = e.nativeEvent.text;\n if (value === undefined) {\n setUncontrolledText(text);\n }\n if (!hasTyped && text.length > 0) {\n setHasTyped(true);\n onClearError?.();\n }\n onChange?.(text);\n };\n\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? (size === \"sm\" ? tokens.fontSize.md : iconSize),\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n const placeholderResolved =\n floatingLabel && label ? (isFocused || hasValue ? placeholder ?? \"\" : \"\") : placeholder;\n\n const inner = (\n <>\n {renderIcon(leadingElement)}\n \n {floatingLabel && label ? (\n {label}\n ) : null}\n {\n setIsFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n onBlur?.(e);\n }}\n onChange={handleChange}\n placeholder={placeholderResolved}\n {...rest}\n />\n \n {renderIcon(trailingElement)}\n \n );\n\n return (\n \n {label && !floatingLabel ? {label} : null}\n\n {inner}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport type FormGroupVariant = \"standard\" | \"grouped\";\n\nexport const FormGroupContext = React.createContext(\"standard\");\n\nexport function useFormGroupVariant(): FormGroupVariant {\n return React.useContext(FormGroupContext);\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\nimport Animated, { FadeIn, FadeOut } from \"react-native-reanimated\";\n\nexport interface AnimatedHelperTextProps {\n text: string | undefined;\n isError: boolean;\n style: TextStyle | TextStyle[];\n}\n\n/**\n * Subtle enter/exit for helper and error copy under fields (Reanimated layout animations).\n * Uses RN `Text` inside an `Animated.View` so test queries and a11y stay straightforward.\n */\nexport function AnimatedHelperText({ text, isError, style }: AnimatedHelperTextProps) {\n if (!text) return null;\n\n return (\n \n \n {text}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Image, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nexport interface AvatarProps {\n /** Image URI */\n src?: string;\n /** Fallback initials if no src */\n initials?: string;\n /** Fallback when no src and no initials */\n fallbackIcon?: React.ReactNode;\n size?: AvatarSize;\n status?: AvatarStatus;\n shape?: \"circle\" | \"rounded\";\n /** Accessible label */\n accessibilityLabel?: string;\n style?: ViewStyle | ViewStyle[];\n}\n\nconst STATUS_COLORS = {\n online: \"#22C55E\",\n offline: \"#9CA3AF\",\n busy: \"#EF4444\",\n away: \"#F59E0B\",\n};\n\nconst STATUS_DOT_SIZE: Record = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n};\n\nconst STATUS_DOT_COLORS = {\n online: \"#22C55E\", // success\n away: \"#F59E0B\", // warning\n offline: \"#9CA3AF\", // muted\n busy: \"#EF4444\", // error\n} as const;\n\n// Deterministic color from initials string\nconst BG_PALETTE = [\n \"#EEEDFE\", // purple-50\n \"#E1F5EE\", // teal-50\n \"#FAECE7\", // coral-50\n \"#FBEAF0\", // pink-50\n \"#EAF3DE\", // green-50\n \"#FAEEDA\", // amber-50\n \"#E6F1FB\", // blue-50\n];\nconst TEXT_PALETTE = [\n \"#3C3489\",\n \"#085041\",\n \"#712B13\",\n \"#72243E\",\n \"#27500A\",\n \"#633806\",\n \"#0C447C\",\n];\n\nconst colorIndexCache = new Map();\n\nfunction getColorIndex(str: string): number {\n const cached = colorIndexCache.get(str);\n if (cached !== undefined) return cached;\n let hash = 0;\n for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);\n const result = Math.abs(hash) % BG_PALETTE.length;\n colorIndexCache.set(str, result);\n return result;\n}\n\n// ─── Avatar ───────────────────────────────────────────────────────\n\nexport function Avatar({\n src,\n initials,\n fallbackIcon,\n size = \"md\",\n status,\n shape = \"circle\",\n accessibilityLabel,\n style,\n}: AvatarProps) {\n const { avatar } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatar.size[size];\n const radius = shape === \"circle\" ? sizeConfig.borderRadius : tokens.radius.md;\n const colorIdx = initials ? getColorIndex(initials) : 0;\n\n const dotSize = status ? STATUS_DOT_SIZE[size] : 0;\n\n return (\n \n {src ? (\n \n ) : initials ? (\n \n \n {initials.slice(0, 2).toUpperCase()}\n \n \n ) : (\n // Generic fallback\n \n {fallbackIcon ?? (\n \n ?\n \n )}\n \n )}\n\n {/* Status dot */}\n {status && (\n \n )}\n \n );\n}\n\n// ─── AvatarGroup ──────────────────────────────────────────────────\n\nexport interface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n overlap?: number;\n}\n\nexport function AvatarGroup({\n avatars,\n max = 4,\n size = \"md\",\n overlap,\n}: AvatarGroupProps) {\n const { avatar: avatarTokens } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatarTokens.size[size];\n const dim = sizeConfig.width;\n const gap = overlap ?? Math.round(dim * 0.3);\n\n const visible = avatars.slice(0, max);\n const overflow = avatars.length - max;\n\n return (\n 0 ? dim - gap : 0),\n height: dim,\n }}\n >\n {visible.map((avatar, i) => (\n \n \n \n ))}\n\n {overflow > 0 && (\n \n \n +{overflow}\n \n \n )}\n \n );\n}","import React, { useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type BadgeVariant = \"default\" | \"brand\" | \"success\" | \"warning\" | \"error\" | \"info\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps {\n label?: string;\n count?: number | string;\n variant?: BadgeVariant;\n size?: BadgeSize;\n icon?: React.ReactNode;\n dot?: boolean;\n style?: any;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nconst BADGE_ROW_GAP: Record = { sm: 3, md: 4, lg: 6 };\n\nexport const Badge = React.memo(({ label, count, variant = \"default\", size = \"md\", icon, dot = false }: BadgeProps) => {\n const { badge } = useComponentTokens();\n\n const { fontSize, sizeBox } = useMemo(() => {\n const { fontSize: fs, ...rest } = badge.size[size];\n return { fontSize: fs, sizeBox: rest };\n }, [badge.size, size]);\n\n const iconPx = Math.round(fontSize * 0.85);\n\n const containerStyle = useMemo(\n () => [\n badge.base,\n sizeBox,\n {\n backgroundColor: badge.variant[variant].bg,\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n gap: BADGE_ROW_GAP[size],\n },\n ],\n [badge.base, badge.variant, sizeBox, variant, size]\n );\n\n const textStyle = useMemo(\n () => [badge.text, { color: badge.variant[variant].text, fontSize }],\n [badge.text, badge.variant, variant, fontSize]\n );\n\n const iconColor = String(badge.variant[variant].text);\n\n // Helper to clone icon with standardized props\n const renderIcon = (el: React.ReactNode) => {\n if (!el) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(el)) {\n return React.cloneElement(el, {\n size: el.props.size ?? iconPx,\n color: el.props.color ?? iconColor,\n });\n }\n return el;\n };\n\n const textPart =\n label !== undefined ? label : count !== undefined ? String(count) : null;\n\n const dotDim =\n size === \"sm\"\n ? Math.max(6, Math.round(badge.dot.size * 0.875))\n : size === \"lg\"\n ? Math.round(badge.dot.size * 1.25)\n : badge.dot.size;\n\n return (\n \n {!dot && renderIcon(icon)}\n {!dot && textPart !== null && {textPart}}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useComponentTokens, useBottomNavigation } from \"@truongdq01/headless\";\n\nexport interface BottomNavigationProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n showLabels?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface BottomNavigationActionProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n}\n\ninterface BottomNavContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T) => any;\n showLabels: boolean;\n}\n\nconst BottomNavContext = createContext | null>(null);\n\nexport function BottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n showLabels = false,\n children,\n}: BottomNavigationProps) {\n const { bottomNavigation } = useComponentTokens();\n const { value, isSelected, getItemProps } = useBottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n });\n\n const ctx = useMemo(() => ({ value, isSelected, getItemProps, showLabels }), [value, isSelected, getItemProps, showLabels]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function BottomNavigationAction({ value, label, icon }: BottomNavigationActionProps) {\n const { bottomNavigation } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(BottomNavContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n\n return (\n \n {icon}\n {(ctx.showLabels || selected) && label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { View, StyleSheet, Dimensions, Modal } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBottomSheet, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UseBottomSheetOptions, SnapPoint } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface BottomSheetProps extends UseBottomSheetOptions {\n children: React.ReactNode;\n /** Show the pill-shaped drag handle at top */\n showHandle?: boolean;\n /** Horizontal border radius on the sheet. If not provided, uses theme token. */\n borderRadius?: number;\n /** Accessibility label for the sheet container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport interface BottomSheetRef {\n open: (snapIndex?: number) => void;\n close: () => void;\n snapTo: (index: number) => void;\n}\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport const BottomSheet = forwardRef(\n function BottomSheet(\n {\n children,\n snapPoints = [\"50%\"] as SnapPoint[],\n initialSnapIndex,\n onClose,\n onSnapChange,\n enableDismissOnSwipe = true,\n enableBackdrop = true,\n showHandle = true,\n borderRadius,\n accessibilityLabel = \"Bottom sheet\",\n backdropAccessibilityLabel = \"Dismiss bottom sheet\",\n },\n ref\n ) {\n const { bottomSheet } = useComponentTokens();\n const insets = useSafeAreaInsets();\n const [mounted, setMounted] = useState(false);\n\n const handleClose = React.useCallback(() => {\n setMounted(false);\n onClose?.();\n }, [onClose]);\n\n const {\n open: baseOpen,\n close: baseClose,\n snapTo,\n sheetAnimatedStyle,\n backdropAnimatedStyle,\n panGesture,\n backdropTapGesture,\n } = useBottomSheet({\n snapPoints,\n initialSnapIndex,\n onClose: handleClose,\n onSnapChange,\n enableDismissOnSwipe,\n enableBackdrop,\n });\n\n const open = React.useCallback((idx?: number) => {\n setMounted(true);\n requestAnimationFrame(() => {\n baseOpen(idx);\n });\n }, [baseOpen]);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({ open, close: baseClose, snapTo }), [open, baseClose, snapTo]);\n\n return (\n \n \n {/* Backdrop */}\n {enableBackdrop && (\n \n \n \n )}\n\n {/* Sheet */}\n \n {/* Drag handle area — full-width tap target */}\n \n \n {showHandle && (\n \n )}\n \n \n\n {/* Content */}\n {children}\n \n \n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n sheet: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: SCREEN_HEIGHT,\n },\n handleArea: {\n width: \"100%\",\n height: 28,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n handle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n },\n});","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n sx?: ViewStyle | ViewStyle[];\n flex?: number;\n}\n\nexport function Box({ children, style, sx, flex }: BoxProps) {\n const { box } = useComponentTokens();\n const merged = [\n box.defaults,\n flex !== undefined ? { flex } : null,\n sx,\n style\n ];\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BreadcrumbsProps {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n}\n\nexport function Breadcrumbs({\n children,\n separator = \"/\",\n maxItems = 8,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n}: BreadcrumbsProps) {\n const { breadcrumbs } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n let displayItems = items;\n if (items.length > maxItems) {\n displayItems = [\n ...items.slice(0, itemsBeforeCollapse),\n ...,\n ...items.slice(items.length - itemsAfterCollapse),\n ];\n }\n\n return (\n \n {displayItems.map((child, idx) => (\n \n {child}\n {idx < displayItems.length - 1 && (\n {separator}\n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { ActivityIndicator, Text, View, StyleSheet, Linking, type StyleProp, type ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens, useIconStyle, useTokens } from \"@truongdq01/headless\";\nimport type { PressFeedbackMode } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\n/**\n * Available button visual style variants\n */\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"text\"\n | \"contained\"\n | \"outlined\";\n\n/**\n * Available button size presets\n */\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Available button color themes\n */\nexport type ButtonColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"accent\"; // Amber CTA — stands out from brand violet\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Color theme */\n color?: ButtonColor;\n /** Size preset */\n size?: ButtonSize;\n /** Button label (optional for icon-only buttons) */\n label?: string;\n /** Optional children (preferred over label) */\n children?: React.ReactNode;\n /** Called on press */\n onPress?: () => void;\n /** Called on long press */\n onLongPress?: () => void;\n /** Disable all interaction and apply disabled styles */\n disabled?: boolean;\n /** Show loading spinner, disable interaction */\n loading?: boolean;\n /** Custom loading indicator */\n loadingIndicator?: React.ReactNode;\n /** Loading indicator placement */\n loadingPosition?: \"start\" | \"end\" | \"center\";\n /** Slot for leading icon */\n leadingIcon?: React.ReactNode;\n /** Slot for trailing icon */\n trailingIcon?: React.ReactNode;\n /** Alias for leadingIcon */\n startIcon?: React.ReactNode;\n /** Alias for trailingIcon */\n endIcon?: React.ReactNode;\n /** Override press feedback mode */\n feedbackMode?: PressFeedbackMode;\n /** Fill container width */\n fullWidth?: boolean;\n /** Render as link */\n href?: string;\n /** Remove drop shadow */\n disableElevation?: boolean;\n /** Additional style override */\n style?: object;\n /** Accessibility label override (defaults to label) */\n accessibilityLabel?: string;\n /** Accessibility hint */\n accessibilityHint?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Button component with multiple variants, sizes, and interaction states.\n * Supports icons, loading states, accessibility, and gesture feedback.\n *\n * @param props - Button configuration props\n * @returns Memoized React button component\n *\n * @example\n * ```tsx\n * console.log('Pressed')}\n * >\n * Click me\n * \n * ```\n *\n * @example With loading state\n * ```tsx\n * \n * ```\n */\nexport const Button = React.memo(({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n label,\n children,\n onPress,\n onLongPress,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n leadingIcon,\n trailingIcon,\n startIcon,\n endIcon,\n feedbackMode = \"scale\",\n fullWidth = false,\n href,\n disableElevation = false,\n style,\n accessibilityLabel,\n accessibilityHint,\n}: ButtonProps) => {\n const { button } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize } = useIconStyle(\"button\");\n const isDisabled = disabled || loading;\n\n const resolvedVariant: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" = useMemo(() => {\n if (variant === \"contained\") return \"solid\";\n if (variant === \"outlined\") return \"outline\";\n if (variant === \"text\") return \"ghost\";\n return variant as \"solid\" | \"outline\" | \"ghost\" | \"destructive\";\n }, [variant]);\n\n const resolvedColor = useMemo(() => {\n if (color === \"inherit\") {\n return {\n main: tokens.color.text.primary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"secondary\") {\n return {\n main: tokens.color.text.secondary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"success\") {\n return {\n main: tokens.color.success.icon,\n subtle: tokens.color.success.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"warning\") {\n return {\n main: tokens.color.warning.icon,\n subtle: tokens.color.warning.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"error\") {\n return {\n main: tokens.color.error.icon,\n subtle: tokens.color.error.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"info\") {\n return {\n main: tokens.color.info.icon,\n subtle: tokens.color.info.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"accent\") {\n return {\n main: tokens.color.accent.default,\n subtle: tokens.color.accent.subtle,\n textOn: tokens.color.accent.onAccent,\n };\n }\n return {\n main: tokens.color.brand.default,\n subtle: tokens.color.brand.subtle,\n textOn: tokens.color.text.inverse,\n };\n }, [color, tokens]);\n\n const handlePress = useCallback(() => {\n if (!href) {\n onPress?.();\n return;\n }\n onPress?.();\n void Linking.openURL(href).catch(() => {});\n }, [href, onPress]);\n\n const hitSlop = useMemo(() => {\n const height = button.size[size].container.height;\n const padding = Math.max(0, (44 - height) / 2);\n // If it's an icon-only button, width might also be small\n const isIconOnly = !label && !children;\n const horizontalPadding = isIconOnly ? padding : 0;\n return { top: padding, bottom: padding, left: horizontalPadding, right: horizontalPadding };\n }, [button, size, label, children]);\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: handlePress,\n onLongPress,\n disabled: isDisabled,\n feedbackMode,\n accessibilityLabel: accessibilityLabel ?? (typeof children === \"string\" ? children : label),\n accessibilityHint,\n accessibilityRole: \"button\",\n hitSlop,\n });\n\n // Resolve styles from component tokens — only recomputes on theme change\n const containerStyle = useMemo(() => [\n button.variant[resolvedVariant].container,\n button.size[size].container,\n fullWidth && { alignSelf: \"stretch\" as const },\n isDisabled && button.disabled.container,\n !label && !children && { paddingHorizontal: button.size[size].container.paddingHorizontal / 2, width: button.size[size].container.height },\n disableElevation && tokens.shadow.none,\n resolvedVariant === \"solid\" && { backgroundColor: resolvedColor.main },\n resolvedVariant === \"outline\" && { borderColor: resolvedColor.main },\n resolvedVariant === \"ghost\" && { backgroundColor: resolvedColor.subtle },\n resolvedVariant === \"destructive\" && { backgroundColor: tokens.color.error.bg, borderColor: tokens.color.error.border },\n style,\n ], [button, resolvedVariant, size, fullWidth, isDisabled, label, children, disableElevation, tokens, resolvedColor, style]);\n\n const textStyle = useMemo(() => [\n button.variant[resolvedVariant].text,\n button.size[size].text,\n resolvedVariant === \"solid\" && { color: resolvedColor.textOn || tokens.color.text.inverse },\n resolvedVariant === \"outline\" && { color: resolvedColor.main },\n resolvedVariant === \"ghost\" && { color: resolvedColor.main },\n resolvedVariant === \"destructive\" && { color: tokens.color.error.text },\n ], [button, resolvedVariant, size, resolvedColor, tokens]);\n\n const resolvedLabelColor = useMemo(() => {\n switch (resolvedVariant) {\n case \"solid\":\n return String(resolvedColor.textOn ?? tokens.color.text.inverse);\n case \"outline\":\n case \"ghost\":\n return String(resolvedColor.main);\n case \"destructive\":\n return String(tokens.color.error.text);\n default: {\n const _never: never = resolvedVariant;\n throw new Error(`Unexpected button variant: ${_never}`);\n }\n }\n }, [resolvedVariant, resolvedColor, tokens]);\n\n const iconColor = resolvedLabelColor;\n const content = children ?? label;\n const isTextContent = typeof content === \"string\" || typeof content === \"number\";\n const leading = startIcon ?? leadingIcon;\n const trailing = endIcon ?? trailingIcon;\n\n // Helper to clone icon with standardized props\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? iconSize,\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n return (\n \n }\n {...accessibilityProps}\n >\n \n {loading && loadingPosition === \"start\" && (loadingIndicator ?? )}\n {renderIcon(leading)}\n {isTextContent ? {content} : content}\n {renderIcon(trailing)}\n {loading && loadingPosition === \"end\" && (loadingIndicator ?? )}\n \n\n {loading && loadingPosition === \"center\" && (\n \n {loadingIndicator ?? }\n \n )}\n \n \n );\n});\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n loadingWrapper: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ButtonGroupProps {\n children?: React.ReactNode;\n variant?: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" | \"text\" | \"contained\" | \"outlined\";\n size?: \"sm\" | \"md\" | \"lg\";\n orientation?: \"horizontal\" | \"vertical\";\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\nexport function ButtonGroup({\n children,\n variant = \"outlined\",\n size = \"md\",\n orientation = \"horizontal\",\n disabled = false,\n fullWidth = false,\n}: ButtonGroupProps) {\n const tokens = useTokens();\n const { buttonGroup } = useComponentTokens();\n const isRow = orientation === \"horizontal\";\n\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child, i) => {\n if (!React.isValidElement<{\n variant?: string;\n size?: string;\n disabled?: boolean;\n fullWidth?: boolean;\n style?: any;\n }>(child)) return child;\n const isFirst = i === 0;\n const isLast = i === items.length - 1;\n\n const borderStyle = isRow\n ? {\n borderRightWidth: isLast ? 0 : buttonGroup.divider.width,\n borderRightColor: buttonGroup.divider.backgroundColor,\n }\n : {\n borderBottomWidth: isLast ? 0 : buttonGroup.divider.width,\n borderBottomColor: buttonGroup.divider.backgroundColor,\n };\n\n const radiusStyle = isFirst\n ? isRow\n ? { borderTopLeftRadius: buttonGroup.container.borderRadius, borderBottomLeftRadius: buttonGroup.container.borderRadius }\n : { borderTopLeftRadius: buttonGroup.container.borderRadius, borderTopRightRadius: buttonGroup.container.borderRadius }\n : isLast\n ? isRow\n ? { borderTopRightRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderBottomLeftRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderRadius: 0 };\n\n return React.cloneElement(child, {\n variant,\n size,\n disabled: disabled || child.props.disabled,\n fullWidth: fullWidth || child.props.fullWidth,\n style: [\n { borderRadius: 0, borderWidth: 0 },\n borderStyle,\n radiusStyle,\n child.props.style,\n ].filter(Boolean),\n });\n })}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { View, StyleProp, ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type CardPadding = \"sm\" | \"md\" | \"lg\" | \"none\";\n\nexport interface CardProps {\n children: React.ReactNode;\n /** If provided, card becomes pressable */\n onPress?: () => void;\n /** Inner padding preset */\n padding?: CardPadding;\n /** Accessibility label (required if pressable) */\n accessibilityLabel?: string;\n /** Additional style override */\n style?: StyleProp;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Card({\n children,\n onPress,\n padding = \"md\",\n accessibilityLabel,\n style,\n}: CardProps) {\n const { card } = useComponentTokens();\n\n const containerStyle = useMemo(() => [\n card.container,\n padding !== \"none\" && { padding: card.padding[padding] },\n style,\n ], [card, padding, style]);\n\n if (onPress) {\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress,\n feedbackMode: \"scaleSubtle\",\n accessibilityLabel,\n accessibilityRole: \"button\",\n });\n\n return (\n \n {/* Reanimated style prop is stricter than RN StyleProp when project uses web types; cast merged styles */}\n \n {children}\n \n \n );\n }\n\n return (\n \n {children}\n \n );\n}","import React from \"react\";\nimport { View, ScrollView, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n SharedValue,\n} from \"react-native-reanimated\";\nimport { useCarousel, useComponentTokens } from \"@truongdq01/headless\";\n\nfunction defaultKeyExtractor(_item: T, index: number): string {\n return `carousel-${index}`;\n}\n\n/** Stable React keys for slides; loop clones get `-loop-prev` / `-loop-next` suffixes. */\nfunction getSlideKey(\n item: T,\n indexInDisplay: number,\n loop: boolean,\n n: number,\n keyExtractor: (item: T, index: number) => string\n): string {\n if (!loop || n < 2) {\n return keyExtractor(item, indexInDisplay);\n }\n if (indexInDisplay === 0) {\n return `${keyExtractor(item, n - 1)}-loop-prev`;\n }\n if (indexInDisplay === n + 1) {\n return `${keyExtractor(item, 0)}-loop-next`;\n }\n return keyExtractor(item, indexInDisplay - 1);\n}\n\nexport interface CarouselProps {\n data: T[];\n renderItem: (item: T, index: number) => React.ReactNode;\n itemWidth?: number;\n gap?: number;\n height?: number;\n showPagination?: boolean;\n loop?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n /** Stable key per data item; loop mode appends `-loop-prev` / `-loop-next` for edge clones. */\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function Carousel({\n data,\n renderItem,\n itemWidth,\n gap = 0,\n height = 200,\n showPagination = true,\n loop = false,\n autoPlay = false,\n autoPlayInterval = 3000,\n keyExtractor = defaultKeyExtractor,\n}: CarouselProps) {\n const { width: windowWidthPx } = useWindowDimensions();\n const windowWidth = Math.max(1, windowWidthPx > 0 ? windowWidthPx : 375);\n const resolvedItemWidth = itemWidth ?? windowWidth;\n const contentPaddingStart = (windowWidth - resolvedItemWidth) / 2;\n\n const { carousel } = useComponentTokens();\n const {\n scrollViewRef,\n scrollX,\n displayData,\n snapToOffsets,\n onScroll,\n onMomentumScrollEnd,\n itemStep,\n n,\n contentPaddingStart: snapPad,\n } = useCarousel({\n data,\n itemWidth: resolvedItemWidth,\n gap,\n contentPaddingStart,\n loop,\n autoPlay,\n autoPlayInterval,\n });\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n \n \n {displayData.map((item: T, index: number) => {\n return (\n \n {renderItem(item, loop ? (index - 1 + n) % n : index)}\n \n );\n })}\n \n\n {showPagination && (\n \n {data.map((_, i) => {\n return (\n \n );\n })}\n \n )}\n \n );\n}\n\nfunction PaginationDot({\n index,\n scrollX,\n itemStep,\n contentPaddingStart,\n isLoop,\n n,\n dot,\n}: {\n index: number;\n scrollX: SharedValue;\n itemStep: number;\n contentPaddingStart: number;\n isLoop: boolean;\n n: number;\n dot: ReturnType[\"carousel\"][\"dot\"];\n}) {\n const dotStyle = useAnimatedStyle(() => {\n let activeIndex = (scrollX.value - contentPaddingStart) / itemStep;\n if (isLoop) {\n activeIndex = activeIndex - 1;\n if (activeIndex < 0) activeIndex = n - 1;\n if (activeIndex >= n) activeIndex = 0;\n }\n\n const opacity = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.opacity, 1, dot.inactive.opacity],\n Extrapolation.CLAMP\n );\n\n const width = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.width, dot.active.width, dot.inactive.width],\n Extrapolation.CLAMP\n );\n\n return {\n width,\n opacity,\n backgroundColor: dot.active.bg,\n height: dot.height,\n borderRadius: dot.borderRadius,\n };\n });\n\n return ;\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useCheckbox, useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseCheckboxOptions } from \"@truongdq01/headless\";\n\nexport interface CheckboxProps extends UseCheckboxOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Checkbox({\n label,\n description,\n size = \"md\",\n ...hookOptions\n}: CheckboxProps) {\n const { checkbox } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isChecked, isIndeterminate, isDisabled, toggle, accessibilityProps } =\n useCheckbox(hookOptions);\n\n const sizeConfig = checkbox.size[size];\n\n // Animated values\n const scale = useSharedValue(1);\n const fillProgress = useSharedValue(isChecked || isIndeterminate ? 1 : 0);\n\n React.useEffect(() => {\n const target = isChecked || isIndeterminate ? 1 : 0;\n fillProgress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isChecked, isIndeterminate, reduceMotion]);\n\n const boxStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.backgroundColor, checkbox.state.checked.backgroundColor]\n ),\n borderColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.borderColor, checkbox.state.checked.borderColor]\n ),\n transform: [{ scale: scale.value }],\n }));\n\n const checkStyle = useAnimatedStyle(() => ({\n opacity: fillProgress.value,\n transform: [{ scale: fillProgress.value }],\n }));\n\n const handlePress = () => {\n if (!reduceMotion) {\n scale.value = withSpring(0.88, spring.snappy, () => {\n scale.value = withSpring(1, spring.snappy);\n });\n }\n toggle();\n };\n\n return (\n \n \n \n {isIndeterminate ? (\n \n ) : (\n \n ✓\n \n )}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useIconStyle, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ChipProps {\n label: React.ReactNode;\n variant?: \"solid\" | \"outlined\" | \"subtle\";\n color?: \"default\" | \"primary\" | \"secondary\" | \"error\" | \"info\" | \"success\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n onDelete?: () => void;\n onClick?: () => void;\n disabled?: boolean;\n clickable?: boolean;\n}\n\nexport function Chip({\n label,\n variant = \"solid\",\n color = \"default\",\n size = \"md\",\n avatar,\n icon,\n deleteIcon,\n onDelete,\n onClick,\n disabled = false,\n clickable = false,\n}: ChipProps) {\n const tokens = useTokens();\n const { chip } = useComponentTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"list\");\n\n const palette = {\n default: { bg: tokens.color.bg.muted, text: tokens.color.text.primary, border: tokens.color.border.default },\n primary: { bg: tokens.color.brand.subtle, text: tokens.color.brand.text, border: tokens.color.brand.default },\n secondary: { bg: tokens.color.brand.muted, text: tokens.color.brand.text, border: tokens.color.brand.default },\n success: { bg: tokens.color.success.bg, text: tokens.color.success.text, border: tokens.color.success.border },\n error: { bg: tokens.color.error.bg, text: tokens.color.error.text, border: tokens.color.error.border },\n info: { bg: tokens.color.info.bg, text: tokens.color.info.text, border: tokens.color.info.border },\n warning: { bg: tokens.color.warning.bg, text: tokens.color.warning.text, border: tokens.color.warning.border },\n } as const;\n\n const colors = palette[color];\n const vStyle = chip.variant[variant];\n\n // Map specific color overrides matching the palette to variant styling\n const customBg = variant === \"solid\" && color !== \"default\" ? colors.bg : vStyle.bg;\n const customBorder = variant === \"outlined\" && color !== \"default\" ? colors.border : vStyle.border;\n const customText = color !== \"default\" ? colors.text : vStyle.text;\n\n const sizeStyle = chip.size[size] || chip.size.md;\n \n const container = {\n flexDirection: chip.container.flexDirection,\n alignItems: chip.container.alignItems,\n justifyContent: chip.container.justifyContent,\n gap: tokens.spacing[2],\n paddingHorizontal: sizeStyle.paddingHorizontal,\n paddingVertical: tokens.spacing[1],\n height: sizeStyle.height,\n borderRadius: chip.container.borderRadius,\n backgroundColor: customBg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: customBorder,\n opacity: disabled ? tokens.opacity[60] : 1,\n minHeight: size === \"sm\" ? 24 : size === \"lg\" ? 40 : 32,\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? (size === \"sm\" ? 14 : 16),\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const avatarStyle = {\n width: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n height: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n borderRadius: 12,\n marginRight: tokens.spacing[1],\n };\n\n const deleteButtonStyle = {\n padding: tokens.spacing[1],\n marginLeft: tokens.spacing[1],\n borderRadius: tokens.radius.full,\n minWidth: 28,\n minHeight: 28,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n };\n\n const content = (\n \n {avatar && {avatar}}\n {renderIcon(icon)}\n \n {label}\n \n {onDelete && (\n \n {deleteIcon ?? (\n ×\n )}\n \n )}\n \n );\n\n if (onClick || clickable) {\n return (\n \n {content}\n \n );\n }\n\n return content;\n}\n","import React from \"react\";\nimport { ActivityIndicator, View, Text, StyleSheet } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n/**\n * Available progress indicator variants\n */\nexport type CircularProgressVariant = \"indeterminate\" | \"determinate\";\n\n/**\n * Available progress indicator colors\n */\nexport type CircularProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"inherit\";\n\n/**\n * Props for the CircularProgress component\n */\nexport interface CircularProgressProps {\n size?: number | \"sm\" | \"md\" | \"lg\" | \"small\" | \"medium\" | \"large\";\n color?: CircularProgressColor;\n thickness?: number;\n value?: number;\n variant?: CircularProgressVariant;\n showLabel?: boolean;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Circular progress indicator component using native ActivityIndicator.\n * Supports both indeterminate and determinate progress with accessibility.\n *\n * @param props - Progress indicator configuration\n * @returns React progress component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function CircularProgress({\n size = \"md\",\n color = \"primary\",\n thickness,\n value = 0,\n variant = \"indeterminate\",\n showLabel = false,\n style,\n}: CircularProgressProps) {\n const tokens = useTokens();\n const { circularProgress } = useComponentTokens();\n\n const sizeMap: Record = {\n sm: circularProgress.size.sm,\n md: circularProgress.size.md,\n lg: circularProgress.size.lg,\n small: circularProgress.size.sm,\n medium: circularProgress.size.md,\n large: circularProgress.size.lg,\n };\n\n const resolvedSize = typeof size === \"number\" ? size : sizeMap[size] || circularProgress.size.md;\n const resolvedColor = {\n primary: circularProgress.color,\n secondary: tokens.color.text.secondary,\n success: tokens.color.success.icon,\n error: tokens.color.error.icon,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color];\n\n const progressValue = clamp(value);\n\n return (\n \n \n {variant === \"determinate\" && showLabel && (\n \n \n \n {Math.round(progressValue)}%\n \n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n labelContainer: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React, { useState, useMemo } from \"react\";\nimport { View, Text, Pressable, Platform, Modal, StyleSheet } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\nimport DateTimePicker from \"@react-native-community/datetimepicker\";\nimport { Icon } from \"../Icon\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { TimePickerWheels } from \"./TimePickerWheels\";\n\nexport type DatePickerPreset = \"today\" | \"yesterday\" | \"last7\" | \"last30\" | \"last90\" | null;\n\nexport type DatePickerStyle = \"calendar\" | \"spinner\" | \"native\";\n\nexport interface DatePickerProps {\n label?: string;\n date: Date | null;\n onChange: (date: Date) => void;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n icon?: React.ReactNode;\n minimumDate?: Date;\n maximumDate?: Date;\n mode?: \"date\" | \"time\" | \"datetime\";\n presets?: DatePickerPreset[];\n onPresetChange?: (preset: DatePickerPreset) => void;\n clearable?: boolean;\n /**\n * `\"calendar\"` — custom CalendarGrid in a bottom-sheet-style modal (default for date mode).\n * `\"spinner\"` — iOS drum-roll / Android native.\n * `\"native\"` — platform-default DateTimePicker.\n */\n pickerStyle?: DatePickerStyle;\n /** Forwarded to `@react-native-community/datetimepicker` — behavior is platform-specific. */\n locale?: string;\n /** Forwarded to `@react-native-community/datetimepicker`. */\n timeZoneOffsetInMinutes?: number;\n /** Forwarded to `@react-native-community/datetimepicker` (Android / newer iOS). */\n timeZoneOffsetInSeconds?: number;\n /** IANA tz name; forwarded to `@react-native-community/datetimepicker`. */\n timeZoneName?: string;\n}\n\nexport function DatePicker({\n label,\n date,\n onChange,\n placeholder = \"Select date\",\n disabled = false,\n error,\n icon,\n minimumDate,\n maximumDate,\n mode = \"date\",\n presets = [\"today\", \"last7\", \"last30\"],\n onPresetChange,\n clearable = true,\n pickerStyle: pickerStyleProp,\n locale,\n timeZoneOffsetInMinutes,\n timeZoneOffsetInSeconds,\n timeZoneName,\n}: DatePickerProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const insets = useSafeAreaInsets();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const [showPicker, setShowPicker] = useState(false);\n const [selectedPreset, setSelectedPreset] = useState(null);\n const [pickerDraft, setPickerDraft] = useState(() => date ?? new Date());\n const [yearPick, setYearPick] = useState(false);\n\n const initDate = date ?? new Date();\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n\n const effectivePickerStyle: DatePickerStyle = pickerStyleProp ?? \"calendar\";\n\n const yearOptions = useMemo(() => Array.from({ length: 12 }, (_, i) => calYear - 5 + i), [calYear]);\n\n const modalTitle =\n mode === \"time\" ? \"Select time\" : mode === \"datetime\" ? \"Select date & time\" : \"Select date\";\n\n const handleCalendarMonthChange = (m: number, y: number) => {\n setCalMonth(m);\n setCalYear(y);\n };\n\n const formattedDate = date\n ? mode === \"time\"\n ? date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n : mode === \"datetime\"\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`\n : date.toLocaleDateString()\n : \"\";\n\n const displayValue = date ? formattedDate : placeholder;\n\n const getPresetDate = (preset: DatePickerPreset): Date => {\n const now = new Date();\n switch (preset) {\n case \"today\": return now;\n case \"yesterday\": return new Date(now.setDate(now.getDate() - 1));\n case \"last7\": return new Date(now.setDate(now.getDate() - 7));\n case \"last30\": return new Date(now.setDate(now.getDate() - 30));\n case \"last90\": return new Date(now.setDate(now.getDate() - 90));\n default: return now;\n }\n };\n\n const handlePresetPress = (preset: DatePickerPreset) => {\n if (!preset || disabled) return;\n const presetDate = getPresetDate(preset);\n onChange(presetDate);\n setSelectedPreset(preset);\n onPresetChange?.(preset);\n };\n\n const handleClear = () => {\n setSelectedPreset(null);\n onPresetChange?.(null);\n };\n\n const handlePressTrigger = () => {\n if (disabled) return;\n const ref = date ?? new Date();\n setPickerDraft(ref);\n setCalMonth(ref.getMonth());\n setCalYear(ref.getFullYear());\n setYearPick(false);\n setShowPicker(true);\n };\n\n const handleChange = (_event: any, selectedDate?: Date) => {\n if (Platform.OS === \"android\") {\n setShowPicker(false);\n }\n if (selectedDate) {\n setSelectedPreset(null);\n onChange(selectedDate);\n }\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? iconSize,\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const pickerComponent = showPicker ? (\n \n ) : null;\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n {/* Quick presets */}\n {presets && presets.length > 0 && (\n \n {presets.map((preset) => (\n handlePresetPress(preset)}\n disabled={disabled}\n style={({ pressed }) => [\n {\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n backgroundColor: selectedPreset === preset\n ? tokens.color.brand.default\n : tokens.color.bg.muted,\n borderRadius: tokens.radius.full,\n },\n { opacity: (disabled || pressed) ? 0.6 : 1 }\n ]}\n >\n \n {preset?.replace(\"last\", \"Last \").replace(\"today\", \"Today\").replace(\"yesterday\", \"Yesterday\")}\n \n \n ))}\n \n )}\n\n {/* Date input field */}\n \n {icon && renderIcon(icon)}\n \n {displayValue}\n \n {/* Clear button */}\n {clearable && date && (\n \n \n \n )}\n {/* Calendar icon indicator */}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n {/* Calendar mode — custom grid in bottom-sheet-style modal */}\n {effectivePickerStyle === \"calendar\" && showPicker && (\n { setShowPicker(false); setYearPick(false); }}>\n \n { setShowPicker(false); setYearPick(false); }}\n accessibilityLabel=\"Dismiss\"\n />\n \n {/* Handle bar */}\n \n \n \n\n {/* Header */}\n \n \n {modalTitle}\n \n { setShowPicker(false); setYearPick(false); }} hitSlop={12} accessibilityRole=\"button\" accessibilityLabel=\"Close\">\n \n \n \n\n {yearPick && mode !== \"time\" ? (\n \n {yearOptions.map((y) => (\n {\n setCalYear(y);\n setYearPick(false);\n }}\n style={{\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n borderRadius: tokens.radius.md,\n backgroundColor: y === calYear ? tokens.color.brand.subtle : tokens.color.bg.muted,\n }}\n >\n \n {y}\n \n \n ))}\n \n ) : (\n <>\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n setPickerDraft((prev) => {\n const next = new Date(prev);\n next.setFullYear(d.getFullYear(), d.getMonth(), d.getDate());\n return next;\n });\n setSelectedPreset(null);\n }}\n onMonthChange={handleCalendarMonthChange}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n locale={locale}\n onHeaderPress={() => setYearPick(true)}\n />\n \n )}\n\n {(mode === \"time\" || mode === \"datetime\") && (\n \n )}\n\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n const now = new Date();\n setPickerDraft(now);\n setCalMonth(now.getMonth());\n setCalYear(now.getFullYear());\n setSelectedPreset(null);\n }}\n style={{\n alignItems: \"center\",\n paddingVertical: tokens.spacing[3],\n borderRadius: tokens.radius.lg,\n backgroundColor: tokens.color.brand.subtle,\n }}\n >\n \n Today\n \n \n \n )}\n \n )}\n\n \n { setShowPicker(false); setYearPick(false); }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Cancel\"\n >\n \n Cancel\n \n \n {\n onChange(pickerDraft);\n setSelectedPreset(null);\n setShowPicker(false);\n setYearPick(false);\n }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Confirm\"\n >\n \n Confirm\n \n \n \n \n \n \n )}\n\n {/* Spinner / native mode — iOS: Modal overlay */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"ios\" && showPicker && (\n \n \n \n \n setShowPicker(false)} hitSlop={12}>\n \n Done\n \n \n \n {pickerComponent}\n \n \n \n )}\n\n {/* Spinner / native mode — Android: native dialog */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"android\" && pickerComponent}\n \n );\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarGridProps {\n month: number;\n year: number;\n selectedDate: Date | null;\n onSelectDate: (date: Date) => void;\n onMonthChange: (month: number, year: number) => void;\n minimumDate?: Date;\n maximumDate?: Date;\n /** BCP 47 locale for month title and weekday labels (default `undefined` = runtime default). */\n locale?: string;\n /** e.g. open year picker */\n onHeaderPress?: () => void;\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction isToday(d: Date): boolean {\n return isSameDay(d, new Date());\n}\n\nfunction isDateDisabled(d: Date, min?: Date, max?: Date): boolean {\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (d < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (d > maxDay) return true;\n }\n return false;\n}\n\nexport function CalendarGrid({\n month,\n year,\n selectedDate,\n onSelectDate,\n onMonthChange,\n minimumDate,\n maximumDate,\n locale,\n onHeaderPress,\n}: CalendarGridProps) {\n const t = useTokens();\n\n const weekdayLabels = useMemo(() => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const baseMonday = new Date(2024, 0, 8);\n return Array.from({ length: 7 }, (_, i) =>\n formatter.format(new Date(baseMonday.getFullYear(), baseMonday.getMonth(), baseMonday.getDate() + i))\n );\n }, [locale]);\n\n const monthYearTitle = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(new Date(year, month, 1)),\n [locale, year, month]\n );\n\n const goPrev = useCallback(() => {\n if (month === 0) onMonthChange(11, year - 1);\n else onMonthChange(month - 1, year);\n }, [month, year, onMonthChange]);\n\n const goNext = useCallback(() => {\n if (month === 11) onMonthChange(0, year + 1);\n else onMonthChange(month + 1, year);\n }, [month, year, onMonthChange]);\n\n const cells = useMemo(() => {\n const firstDay = new Date(year, month, 1);\n let startWeekday = firstDay.getDay() - 1;\n if (startWeekday < 0) startWeekday = 6;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const rows: { date: Date; inMonth: boolean }[][] = [];\n let row: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = 0; i < startWeekday; i++) {\n const day = daysInPrevMonth - startWeekday + 1 + i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n row.push({ date: new Date(prevYear, prevMonth, day), inMonth: false });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n row.push({ date: new Date(year, month, d), inMonth: true });\n if (row.length === 7) {\n rows.push(row);\n row = [];\n }\n }\n\n if (row.length > 0) {\n let nextDay = 1;\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n while (row.length < 7) {\n row.push({ date: new Date(nextYear, nextMonth, nextDay++), inMonth: false });\n }\n rows.push(row);\n }\n\n return rows;\n }, [month, year]);\n\n const cellSize = 40;\n\n return (\n \n {/* Month navigation */}\n \n \n \n \n onHeaderPress?.()} disabled={!onHeaderPress} accessibilityRole={onHeaderPress ? \"button\" : undefined}>\n \n {monthYearTitle}\n \n \n \n \n \n \n\n {/* Weekday headers */}\n \n {weekdayLabels.map((wd) => (\n \n \n {wd}\n \n \n ))}\n \n\n {/* Day grid */}\n {cells.map((row, ri) => (\n \n {row.map((cell, ci) => {\n const selected = selectedDate ? isSameDay(cell.date, selectedDate) : false;\n const today = isToday(cell.date);\n const disabled = !cell.inMonth || isDateDisabled(cell.date, minimumDate, maximumDate);\n\n return (\n { if (!disabled) onSelectDate(cell.date); }}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={cell.date.toDateString()}\n accessibilityState={{ selected, disabled }}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n height: cellSize,\n }}\n >\n \n \n {cell.date.getDate()}\n \n \n \n );\n })}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { View, Text, ScrollView, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nconst ROW = 40;\nconst VISIBLE = 5;\n\nfunction pad2(n: number): string {\n return n.toString().padStart(2, \"0\");\n}\n\nexport interface TimePickerWheelsProps {\n value: Date;\n onChange: (next: Date) => void;\n}\n\n/**\n * Simple scrollable hour / minute columns (bottom-sheet style).\n */\nexport function TimePickerWheels({ value, onChange }: TimePickerWheelsProps) {\n const t = useTokens();\n const h = value.getHours();\n const m = value.getMinutes();\n const hours = useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);\n const minutes = useMemo(() => Array.from({ length: 60 }, (_, i) => i), []);\n\n const setHM = useCallback(\n (nh: number, nm: number) => {\n const d = new Date(value);\n d.setHours(nh, nm, 0, 0);\n onChange(d);\n },\n [value, onChange]\n );\n\n const col = (label: string, child: React.ReactNode) => (\n \n \n {label}\n \n \n {child}\n \n \n );\n\n return (\n \n {col(\n \"Hour\",\n hours.map((hour) => (\n setHM(hour, m)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: hour === h ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(hour)}\n \n \n ))\n )}\n {col(\n \"Min\",\n minutes.map((minute) => (\n setHM(h, minute)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: minute === m ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(minute)}\n \n \n ))\n )}\n \n );\n}\n","import React from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n/**\n * Props for the Dialog component\n */\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n fullWidth?: boolean;\n /** Accessibility label for the dialog container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\n/**\n * Dialog component that displays modal content with backdrop and accessibility support.\n *\n * @param props - Dialog configuration props\n * @returns React element or null if not open\n *\n * @example\n * ```tsx\n * setIsOpen(false)}\n * title=\"Confirm Action\"\n * >\n * Are you sure?\n * \n * ```\n */\nexport function Dialog({\n open,\n onClose,\n title,\n children,\n actions,\n fullWidth = false,\n accessibilityLabel = \"Dialog\",\n backdropAccessibilityLabel = \"Dismiss dialog\",\n}: DialogProps) {\n const { dialog, modal } = useComponentTokens();\n const tokens = useTokens();\n\n if (!open) return null;\n\n return (\n \n \n \n \n {title && (\n \n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n )}\n \n {children}\n \n {actions && (\n \n {actions}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface DividerProps {\n /** Label shown centered in the divider */\n label?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Use a stronger border color */\n emphasis?: boolean;\n /** Extra vertical margin around horizontal dividers */\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Divider({\n label,\n orientation = \"horizontal\",\n emphasis = false,\n spacing = \"md\",\n}: DividerProps) {\n const { divider } = useComponentTokens();\n const tokens = useTokens();\n\n const lineColor = emphasis\n ? tokens.color.border.strong\n : divider.color;\n\n const verticalMargin = {\n none: 0,\n sm: tokens.spacing[2],\n md: divider.margin,\n lg: tokens.spacing[6],\n }[spacing];\n\n if (orientation === \"vertical\") {\n return (\n \n );\n }\n\n if (label) {\n return (\n \n \n \n {label}\n \n \n \n );\n }\n\n return (\n \n );\n}","import React, { useEffect } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type ViewStyle } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\n\nexport type DrawerAnchor = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n anchor?: DrawerAnchor;\n children?: React.ReactNode;\n /** Accessibility label for the drawer container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport function Drawer({\n open,\n onClose,\n anchor = \"left\",\n children,\n accessibilityLabel = \"Drawer\",\n backdropAccessibilityLabel = \"Dismiss drawer\",\n}: DrawerProps) {\n const { drawer } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { width: windowWidth, height: windowHeight } = Dimensions.get(\"window\");\n\n const isVertical = anchor === \"top\" || anchor === \"bottom\";\n const size = isVertical ? windowHeight * 0.4 : 280;\n \n const progress = useSharedValue(0);\n const [mounted, setMounted] = React.useState(open);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n if (reduceMotion) {\n progress.value = 1;\n } else {\n progress.value = withSpring(1, spring.snappy);\n }\n } else {\n if (reduceMotion) {\n progress.value = 0;\n setMounted(false);\n } else {\n progress.value = withSpring(0, spring.snappy, (finished) => {\n if (finished) runOnJS(setMounted)(false);\n });\n }\n }\n }, [open, reduceMotion]);\n\n const animatedStyle = useAnimatedStyle(() => {\n const translate = (1 - progress.value) * size;\n let transform: any[] = [];\n\n if (anchor === \"left\") transform = [{ translateX: -translate }];\n else if (anchor === \"right\") transform = [{ translateX: translate }];\n else if (anchor === \"top\") transform = [{ translateY: -translate }];\n else if (anchor === \"bottom\") transform = [{ translateY: translate }];\n\n return {\n transform,\n };\n });\n\n const backdropStyle = useAnimatedStyle(() => ({\n opacity: progress.value,\n }));\n\n if (!mounted) return null;\n\n const containerStyle: ViewStyle = {\n position: \"absolute\",\n ...(anchor === \"left\" ? { left: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"right\" ? { right: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"top\" ? { top: 0, left: 0, right: 0, height: size } : {}),\n ...(anchor === \"bottom\" ? { bottom: 0, left: 0, right: 0, height: size } : {}),\n };\n\n return (\n \n \n \n \n \n \n {children}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport type { SemanticTokens } from \"@truongdq01/tokens\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nexport type EmptyStateSize = \"sm\" | \"md\" | \"lg\";\n\nexport type EmptyStateVariant =\n | \"default\"\n | \"search\"\n | \"error\"\n | \"offline\"\n | \"permission\"\n | \"empty\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: EmptyStateSize;\n variant?: EmptyStateVariant;\n illustration?: React.ReactNode;\n}\n\nfunction variantSemantics(variant: EmptyStateVariant, tokens: SemanticTokens): { iconColor: string; wrapBg: string } {\n switch (variant) {\n case \"error\":\n case \"permission\":\n return { iconColor: tokens.color.error.icon, wrapBg: tokens.color.error.bg };\n case \"offline\":\n return { iconColor: tokens.color.warning.icon, wrapBg: tokens.color.warning.bg };\n case \"search\":\n return { iconColor: tokens.color.text.tertiary, wrapBg: tokens.color.bg.muted };\n case \"empty\":\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n default:\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n }\n}\n\nconst VARIANT_DEFAULTS: Record<\n Exclude,\n { title: string; description: string; iconName: IconName }\n> = {\n search: {\n title: \"No results found\",\n description: \"Try different keywords or filters.\",\n iconName: \"search\",\n },\n error: {\n title: \"Something went wrong\",\n description: \"We couldn't load this content. Try again.\",\n iconName: \"error\",\n },\n offline: {\n title: \"You're offline\",\n description: \"Check your connection and try again.\",\n iconName: \"warning\",\n },\n permission: {\n title: \"Access denied\",\n description: \"You don't have permission to view this.\",\n iconName: \"lock\",\n },\n empty: {\n title: \"Nothing here yet\",\n description: \"When there is content, it will show up here.\",\n iconName: \"package\",\n },\n};\n\nexport function EmptyState({\n title,\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n illustration,\n}: EmptyStateProps) {\n const { emptyState } = useComponentTokens();\n const tokens = useTokens();\n\n const meta = variant !== \"default\" ? VARIANT_DEFAULTS[variant] : null;\n const resolvedTitle = title ?? meta?.title;\n const resolvedDescription = description ?? meta?.description;\n\n const { iconColor, wrapBg } = variantSemantics(variant, tokens);\n\n const iconSize = Math.round(emptyState.icon.size / 2);\n const resolvedIcon =\n icon ??\n (meta ? (\n \n ) : null);\n\n const sizePad = emptyState.containerSize[size];\n const titleSize = emptyState.titleSize[size];\n const descSize = emptyState.descriptionSize[size];\n\n return (\n \n {illustration && {illustration}}\n\n {resolvedIcon && (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(resolvedIcon)\n ? React.cloneElement(resolvedIcon, {\n size: resolvedIcon.props.size ?? iconSize,\n color: resolvedIcon.props.color ?? iconColor,\n })\n : resolvedIcon}\n \n )}\n\n {resolvedTitle && (\n \n {resolvedTitle}\n \n )}\n\n {resolvedDescription && (\n \n {resolvedDescription}\n \n )}\n\n {action && (\n \n {action}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface FabProps {\n icon?: React.ReactNode;\n label?: string;\n onPress?: () => void;\n disabled?: boolean;\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"circular\" | \"extended\";\n accessibilityLabel?: string;\n}\n\nexport function Fab({\n icon,\n label,\n onPress,\n disabled = false,\n color = \"primary\",\n size = \"md\",\n variant = \"circular\",\n accessibilityLabel,\n}: FabProps) {\n const { fab } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress,\n disabled,\n feedbackMode: \"scale\",\n accessibilityLabel: accessibilityLabel ?? label ?? (typeof icon === \"string\" ? icon : \"FAB\"),\n accessibilityRole: \"button\",\n });\n\n const isExtended = variant === \"extended\" && !!label;\n \n // Base color from component tokens - Fab only has primary/secondary in tokens\n const baseColor = color === \"primary\" ? fab.color.primary.bg : fab.color.secondary.bg;\n const textColor = \"#FFFFFF\";\n\n const sizeMap = {\n sm: { size: 40, iconSize: 20 },\n md: { size: 56, iconSize: 24 },\n lg: { size: 72, iconSize: 28 },\n };\n\n const s = sizeMap[size];\n\n const containerStyle = [\n fab.container,\n {\n backgroundColor: baseColor,\n height: s.size,\n minWidth: s.size,\n borderRadius: s.size / 2,\n paddingHorizontal: isExtended ? 20 : 0,\n },\n disabled && { opacity: 0.5 },\n animatedStyle,\n ];\n\n return (\n \n \n \n {icon && (\n \n {icon}\n \n )}\n {isExtended && (\n \n {label}\n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontWeight: \"600\",\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n});\n","import React, { createContext, useContext, useCallback } from \"react\";\nimport { View, ScrollView, StyleSheet, Platform } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface FormContextValue {\n values: Record;\n errors: Record;\n touched: Record;\n isSubmitting: boolean;\n isValid: boolean;\n setValue: (name: string, value: any) => void;\n setError: (name: string, error: string) => void;\n setTouched: (name: string, touched: boolean) => void;\n handleSubmit: (callback: (values: Record) => void | Promise) => () => void;\n resetForm: () => void;\n}\n\nconst FormContext = createContext(null);\n\nexport function useForm() {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error(\"useForm must be used within a Form component\");\n }\n return context;\n}\n\nexport interface FormProps {\n /** Initial form values */\n initialValues?: Record;\n /** Validation function */\n validate?: (values: Record) => Record;\n /** Submit handler */\n onSubmit?: (values: Record) => void | Promise;\n /** Children components */\n children: React.ReactNode;\n /** Whether to show validation on change */\n validateOnChange?: boolean;\n /** Whether to show validation on blur */\n validateOnBlur?: boolean;\n /** Enable keyboard avoiding view */\n enableKeyboardAvoidingView?: boolean;\n /** Scrollable form */\n scrollable?: boolean;\n /** Custom style */\n style?: object;\n /** Test ID */\n testID?: string;\n}\n\n/**\n * Form component that provides form state management and validation.\n * Supports controlled inputs, validation, and submission handling.\n */\nexport function Form({\n initialValues = {},\n validate,\n onSubmit,\n children,\n validateOnChange = true,\n validateOnBlur = true,\n enableKeyboardAvoidingView = true,\n scrollable = true,\n style,\n testID = \"form\",\n}: FormProps) {\n const tokens = useTokens();\n\n const [values, setValues] = React.useState>(initialValues);\n const [errors, setErrors] = React.useState>({});\n const [touched, setTouched] = React.useState>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const runValidation = useCallback((currentValues: Record) => {\n if (!validate) return {};\n\n try {\n return validate(currentValues);\n } catch (error) {\n console.error(\"Form validation error:\", error);\n return {};\n }\n }, [validate]);\n\n const isValid = React.useMemo(() => {\n return Object.keys(errors).length === 0;\n }, [errors]);\n\n const setValue = useCallback((name: string, value: any) => {\n setValues(prev => ({ ...prev, [name]: value }));\n\n if (validateOnChange) {\n setValues(current => {\n const newErrors = runValidation({ ...current, [name]: value });\n setErrors(newErrors);\n return current;\n });\n }\n }, [validateOnChange, runValidation]);\n\n const setError = useCallback((name: string, error: string) => {\n setErrors(prev => ({ ...prev, [name]: error }));\n }, []);\n\n const setTouchedField = useCallback((name: string, fieldTouched: boolean) => {\n setTouched(prev => ({ ...prev, [name]: fieldTouched }));\n\n if (validateOnBlur && fieldTouched) {\n const newErrors = runValidation(values);\n setErrors(newErrors);\n }\n }, [validateOnBlur, runValidation, values]);\n\n const handleSubmit = useCallback((callback: (values: Record) => void | Promise) => {\n return async () => {\n if (isSubmitting) return;\n\n // Mark all fields as touched\n const allTouched = Object.keys(values).reduce((acc, key) => {\n acc[key] = true;\n return acc;\n }, {} as Record);\n setTouched(allTouched);\n\n // Run final validation\n const finalErrors = runValidation(values);\n setErrors(finalErrors);\n\n if (Object.keys(finalErrors).length > 0) {\n return; // Don't submit if there are errors\n }\n\n setIsSubmitting(true);\n try {\n await callback(values);\n } catch (error) {\n console.error(\"Form submission error:\", error);\n } finally {\n setIsSubmitting(false);\n }\n };\n }, [values, runValidation, isSubmitting]);\n\n const resetForm = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setIsSubmitting(false);\n }, [initialValues]);\n\n const contextValue: FormContextValue = {\n values,\n errors,\n touched,\n isSubmitting,\n isValid,\n setValue,\n setError,\n setTouched: setTouchedField,\n handleSubmit,\n resetForm,\n };\n\n const formContent = (\n \n \n {children}\n \n \n );\n\n if (scrollable) {\n return (\n \n {formContent}\n \n );\n }\n\n return formContent;\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n paddingVertical: 16,\n },\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type FormControlVariant = \"filled\" | \"outlined\" | \"standard\";\nexport type FormControlMargin = \"dense\" | \"none\" | \"normal\";\n\ninterface FormControlContextValue {\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n}\n\nconst FormControlContext = createContext(null);\n\nexport function useFormControl() {\n return useContext(FormControlContext);\n}\n\nexport interface FormControlProps {\n children?: React.ReactNode;\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n margin?: FormControlMargin;\n style?: object;\n}\n\nexport function FormControl({\n children,\n error,\n required,\n disabled,\n focused,\n fullWidth,\n variant = \"outlined\",\n margin = \"none\",\n style,\n}: FormControlProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n \n const marginSize = useMemo(() => {\n if (margin === \"dense\") return tokens.spacing[2];\n if (margin === \"normal\") return tokens.spacing[4];\n return 0;\n }, [margin, tokens]);\n\n const ctxValue = useMemo(() => ({ error, required, disabled, focused, fullWidth, variant }), [error, required, disabled, focused, fullWidth, variant]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface FormLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormLabel({ children, style }: FormLabelProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : ctx?.disabled \n ? formControl.label.color + \"80\" \n : formControl.label.color;\n\n return (\n \n {children}{ctx?.required ? \" *\" : \"\"}\n \n );\n}\n\nexport interface FormHelperTextProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormHelperText({ children, style }: FormHelperTextProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : formControl.helperText.color;\n\n return (\n \n {children}\n \n );\n}\n\nexport interface FormControlLabelProps {\n control: React.ReactElement;\n label?: React.ReactNode;\n labelPlacement?: \"end\" | \"start\" | \"top\" | \"bottom\";\n disabled?: boolean;\n onPress?: () => void;\n style?: object;\n}\n\nexport function FormControlLabel({\n control,\n label,\n labelPlacement = \"end\",\n disabled,\n onPress,\n style,\n}: FormControlLabelProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.disabled ?? false;\n\n const controlElement = React.cloneElement(control, {\n disabled: isDisabled,\n });\n\n const isRow = labelPlacement === \"start\" || labelPlacement === \"end\";\n const rowReverse = labelPlacement === \"start\";\n const colReverse = labelPlacement === \"top\";\n\n return (\n \n {controlElement}\n {label ? (\n \n {label}\n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\nimport { PasswordInput } from \"../Input/PasswordInput\";\nimport { FormGroupContext, useFormGroupVariant } from \"./FormGroupContext\";\n\nfunction isInputLikeElement(el: React.ReactElement): boolean {\n const C = el.type;\n return C === Input || C === PasswordInput;\n}\n\nfunction enhanceChildForGroupedField(\n child: React.ReactNode,\n label: string | undefined,\n): React.ReactNode {\n if (!label || !React.isValidElement(child)) return child;\n if (!isInputLikeElement(child)) return child;\n const props = child.props as { placeholder?: string };\n return React.cloneElement(child as React.ReactElement>, {\n floatingLabel: true,\n label,\n placeholder: props.placeholder ?? label,\n });\n}\n\nexport interface FormFieldProps {\n label?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n labelTrailing?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function FormField({\n label,\n required = false,\n error,\n helperText,\n labelTrailing,\n children,\n}: FormFieldProps) {\n const { formField, formControl, formGroup } = useComponentTokens();\n const tokens = useTokens();\n const groupVariant = useFormGroupVariant();\n const isGrouped = groupVariant === \"grouped\";\n\n const childEl = React.isValidElement(children) ? children : null;\n const showFloatingClone = Boolean(isGrouped && label && childEl && isInputLikeElement(childEl));\n const showLabelRow = Boolean((label || labelTrailing) && !showFloatingClone);\n\n const renderedChild = showFloatingClone ? enhanceChildForGroupedField(children, label) : children;\n\n const showMessagesBelowField = !isGrouped;\n\n return (\n \n {showLabelRow && (label || labelTrailing) ? (\n \n {label ? (\n \n {label}\n {required ? (\n \n *\n \n ) : null}\n \n ) : null}\n {labelTrailing}\n \n ) : null}\n\n {renderedChild}\n\n {showMessagesBelowField ? (\n error ? (\n \n {error}\n \n ) : helperText ? (\n {helperText}\n ) : null\n ) : null}\n \n );\n}\n\nexport interface FormGroupProps {\n children: React.ReactNode;\n gap?: \"sm\" | \"md\" | \"lg\";\n variant?: \"standard\" | \"grouped\";\n /** Shown under the grouped card (tertiary). */\n footer?: string;\n /** Validation or alert copy under the grouped card (e.g. from `useField`). */\n error?: string;\n}\n\nexport function FormGroup({\n children,\n gap = \"md\",\n variant = \"standard\",\n footer,\n error,\n}: FormGroupProps) {\n const tokens = useTokens();\n const { formGroup } = useComponentTokens();\n const gapSize = { sm: tokens.spacing[3], md: tokens.spacing[5], lg: tokens.spacing[7] }[gap];\n\n if (variant === \"standard\") {\n return (\n \n {children}\n \n );\n }\n\n const items = React.Children.toArray(children).filter(Boolean);\n\n return (\n \n \n \n {items.map((child, i) => (\n \n {child}\n {i < items.length - 1 ? (\n \n ) : null}\n \n ))}\n \n {error ? {error} : null}\n {footer ? {footer} : null}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Pressable } from \"react-native\";\nimport { useIconStyle } from \"@truongdq01/headless\";\nimport { Input, type InputProps } from \"./Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface PasswordInputProps extends InputProps { }\n\n/**\n * A specialized Input component for passwords with a built-in visibility toggle.\n */\nexport function PasswordInput(props: PasswordInputProps) {\n const [show, setShow] = useState(false);\n const { size, color } = useIconStyle(\"input\");\n\n const toggleShow = () => setShow((prev) => !prev);\n\n return (\n \n \n \n }\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nlet BlurView: React.ComponentType | null = null;\ntry {\n BlurView = require(\"expo-blur\").BlurView;\n} catch {\n // expo-blur not installed — fall back to translucent View\n}\n\nexport interface GlassCardProps extends ViewProps {\n /** Blur intensity (0–100). Only effective when expo-blur is installed. Default 40. */\n intensity?: number;\n /** expo-blur tint: \"light\" | \"dark\" | \"default\". Auto-selects from theme when omitted. */\n tint?: \"light\" | \"dark\" | \"default\";\n /** Border radius override. Uses `radius.xl` by default. */\n borderRadius?: number;\n /** Extra styles for the outer container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\nexport function GlassCard({\n intensity = 40,\n tint,\n borderRadius,\n style,\n children,\n ...rest\n}: GlassCardProps) {\n const t = useTokens();\n const isDark = t.color.bg.default !== \"#F8FAFC\";\n\n const resolvedTint = tint ?? (isDark ? \"dark\" : \"light\");\n const resolvedRadius = borderRadius ?? t.radius.xl;\n\n const containerStyle = useMemo(\n () => ({\n borderRadius: resolvedRadius,\n overflow: \"hidden\" as const,\n borderWidth: 1,\n borderColor: t.color.surface.glassBorder ?? (isDark ? \"rgba(255,255,255,0.08)\" : \"rgba(255,255,255,0.3)\"),\n }),\n [resolvedRadius, t.color.surface.glassBorder, isDark],\n );\n\n const fallbackStyle = useMemo(\n () => ({\n ...StyleSheet.absoluteFillObject,\n backgroundColor: t.color.surface.glass ?? (isDark ? \"rgba(15,23,42,0.72)\" : \"rgba(255,255,255,0.72)\"),\n }),\n [t.color.surface.glass, isDark],\n );\n\n return (\n \n {BlurView ? (\n \n ) : (\n \n )}\n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n position: \"relative\",\n zIndex: 1,\n },\n});\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { primitive } from \"@truongdq01/tokens\";\n\nlet ExpoLinearGradient: React.ComponentType | null = null;\ntry {\n ExpoLinearGradient = require(\"expo-linear-gradient\").LinearGradient;\n} catch {\n // expo-linear-gradient not installed — render solid fallback\n}\n\n/**\n * Available gradient preset names from primitive tokens\n */\ntype GradientPreset = keyof typeof primitive.gradient;\n\n/**\n * Props for the Gradient component\n */\nexport interface GradientProps extends ViewProps {\n /** Named gradient preset from primitive tokens. */\n preset?: GradientPreset;\n /** Custom color stops (overrides preset). */\n colors?: readonly string[];\n /** Start point {x, y} — 0‒1 range. Default {x:0, y:0}. */\n start?: { x: number; y: number };\n /** End point {x, y} — 0‒1 range. Default {x:1, y:1}. */\n end?: { x: number; y: number };\n /** Extra styles for the container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\n/**\n * Gradient component that renders linear gradients with fallback support.\n * Requires expo-linear-gradient for full functionality, falls back to solid color.\n *\n * @param props - Gradient configuration props\n * @returns React gradient component\n *\n * @example\n * ```tsx\n * \n * Content\n * \n * ```\n */\nexport function Gradient({\n preset,\n colors: colorsProp,\n start = { x: 0, y: 0 },\n end = { x: 1, y: 1 },\n style,\n children,\n ...rest\n}: GradientProps) {\n const resolvedColors = useMemo(() => {\n if (colorsProp && colorsProp.length >= 2) return colorsProp;\n if (preset && primitive.gradient[preset]) return primitive.gradient[preset];\n return primitive.gradient.brand;\n }, [colorsProp, preset]);\n\n if (ExpoLinearGradient) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface GridProps {\n children?: React.ReactNode;\n container?: boolean;\n size?: number | \"auto\" | \"grow\";\n columns?: number;\n spacing?: \"sm\" | \"md\" | \"lg\" | number;\n rowSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n columnSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n direction?: ViewStyle[\"flexDirection\"];\n wrap?: ViewStyle[\"flexWrap\"];\n offset?: number;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Grid({\n children,\n container = false,\n size,\n columns = 12,\n spacing = 0,\n rowSpacing,\n columnSpacing,\n direction = \"row\",\n wrap = \"wrap\",\n offset,\n style,\n}: GridProps) {\n const { grid } = useComponentTokens();\n\n const resolveGap = (s: \"sm\" | \"md\" | \"lg\" | number | undefined) => {\n if (s === undefined) return undefined;\n return typeof s === \"number\" ? s : grid.gap[s];\n };\n\n const gap = resolveGap(spacing) ?? 0;\n const rowGap = resolveGap(rowSpacing) ?? gap;\n const colGap = resolveGap(columnSpacing) ?? gap;\n\n if (container) {\n return (\n \n {children}\n \n );\n }\n\n const widthPct = typeof size === \"number\" ? `${(size / columns) * 100}%` : undefined;\n const widthValue = widthPct as unknown as ViewStyle[\"width\"];\n const itemStyle: ViewStyle = {\n flexGrow: size === \"grow\" ? 1 : 0,\n flexBasis: size === \"grow\" ? 0 : size === \"auto\" ? undefined : (widthValue as any),\n maxWidth: size === \"grow\" ? undefined : size === \"auto\" ? undefined : (widthValue as any),\n marginLeft: offset ? (`${(offset / columns) * 100}%` as unknown as ViewStyle[\"marginLeft\"]) : undefined,\n };\n\n return {children};\n}\n","import React, { useState } from \"react\";\nimport { Image as RNImage, ImageProps as RNImageProps, View, StyleSheet } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nconst AnimatedImage = Animated.createAnimatedComponent(RNImage);\n\nexport interface RnImageProps extends RNImageProps {\n /**\n * If true, shows a skeleton loading effect while the image is fetching.\n * Defaults to true.\n */\n showPlaceholder?: boolean;\n}\n\nexport function RnImage({ showPlaceholder = true, style, onLoad, ...props }: RnImageProps) {\n const { image } = useComponentTokens();\n const [isLoaded, setIsLoaded] = useState(false);\n const opacity = useSharedValue(0);\n\n const handleLoad = (e: any) => {\n setIsLoaded(true);\n opacity.value = withTiming(1, { duration: 300 });\n onLoad?.(e);\n };\n\n const imageStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n});\n","import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { View, Text, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nconst { width: SCREEN_WIDTH } = Dimensions.get(\"window\");\n\nexport type ImageListVariant = \"standard\" | \"woven\" | \"masonry\" | \"quilted\";\n\ninterface ImageListContextValue {\n cols: number;\n gap: number;\n rowHeight: number | \"auto\";\n variant: ImageListVariant;\n width: number;\n}\n\nconst ImageListContext = createContext(null);\n\nfunction useImageListContext() {\n return useContext(ImageListContext);\n}\n\nexport interface ImageListProps {\n children?: React.ReactNode;\n cols?: number;\n gap?: number;\n rowHeight?: number | \"auto\";\n variant?: ImageListVariant;\n style?: object;\n}\n\nexport function ImageList({\n children,\n cols = 2,\n gap = 8,\n rowHeight = 120,\n variant = \"standard\",\n style,\n}: ImageListProps) {\n const [width, setWidth] = useState(SCREEN_WIDTH);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const nextWidth = event.nativeEvent.layout.width;\n if (nextWidth !== width) setWidth(nextWidth);\n };\n\n const ctx = useMemo(() => ({ cols, gap, rowHeight, variant, width }), [cols, gap, rowHeight, variant, width]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface ImageListItemProps {\n children?: React.ReactNode;\n cols?: number;\n rows?: number;\n style?: object;\n}\n\nexport function ImageListItem({ children, cols = 1, rows = 1, style }: ImageListItemProps) {\n const ctx = useImageListContext();\n const gap = ctx?.gap ?? 8;\n const columns = ctx?.cols ?? 2;\n const variant = ctx?.variant ?? \"standard\";\n const rowHeight = ctx?.rowHeight ?? 120;\n const listWidth = ctx?.width ?? 0;\n\n const totalGap = gap * (columns - 1);\n const baseWidth = columns > 0 ? (listWidth - totalGap) / columns : listWidth;\n const itemWidth = cols * baseWidth + gap * (cols - 1);\n\n const height = variant === \"masonry\" || rowHeight === \"auto\" ? undefined : rowHeight * rows + gap * (rows - 1);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ImageListItemBarProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n actionIcon?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n style?: object;\n}\n\nexport function ImageListItemBar({\n title,\n subtitle,\n actionIcon,\n position = \"bottom\",\n style,\n}: ImageListItemBarProps) {\n const { imageList } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {title ? {title} : null}\n {subtitle ? {subtitle} : null}\n \n {actionIcon}\n \n );\n}\n","import React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport Animated, { useAnimatedStyle } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type LinearProgressVariant = \"indeterminate\" | \"determinate\" | \"buffer\" | \"query\";\nexport type LinearProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"brand\"\n | \"accent\"\n | \"inherit\";\n\nexport interface LinearProgressProps {\n value?: number;\n variant?: LinearProgressVariant;\n valueBuffer?: number;\n color?: LinearProgressColor;\n trackColor?: string;\n thickness?: number;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function LinearProgress({\n value = 0,\n variant = \"indeterminate\",\n valueBuffer = 0,\n color = \"primary\",\n trackColor,\n thickness,\n style,\n}: LinearProgressProps) {\n const tokens = useTokens();\n const { linearProgress } = useComponentTokens();\n const progressValue = clamp(value);\n\n const barColor = {\n primary: linearProgress.indicator.backgroundColor,\n brand: linearProgress.variant.brand.indicator.backgroundColor,\n accent: linearProgress.variant.accent.indicator.backgroundColor,\n success: linearProgress.variant.success.indicator.backgroundColor,\n error: linearProgress.variant.error.indicator.backgroundColor,\n secondary: tokens.color.text.secondary,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color] || linearProgress.indicator.backgroundColor;\n\n const containerStyle = [\n styles.container,\n linearProgress.track,\n { height: thickness ?? linearProgress.track.height, backgroundColor: trackColor ?? linearProgress.track.backgroundColor },\n style,\n ];\n\n const determinateStyle = useAnimatedStyle(() => {\n return {\n width: `${progressValue}%`,\n };\n }, [progressValue]);\n\n const bufferValue = clamp(valueBuffer);\n\n return (\n \n {variant === \"indeterminate\" || variant === \"query\" ? (\n \n ) : (\n <>\n {variant === \"buffer\" && (\n \n )}\n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n borderRadius: 999,\n overflow: \"hidden\",\n },\n determinateBar: {\n height: \"100%\",\n },\n indeterminateBar: {\n height: \"100%\",\n width: \"40%\",\n },\n bufferBar: {\n position: \"absolute\",\n height: \"100%\",\n left: 0,\n top: 0,\n },\n});\n","import React from \"react\";\nimport { Text, type TextStyle, Linking } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface LinkProps {\n children?: React.ReactNode;\n href?: string;\n onPress?: () => void;\n color?: string;\n underline?: \"always\" | \"hover\" | \"none\";\n style?: TextStyle | TextStyle[];\n}\n\nexport function Link({\n children,\n href,\n onPress,\n color,\n underline = \"always\",\n style,\n}: LinkProps) {\n const { link } = useComponentTokens();\n const decoration = underline === \"none\" ? \"none\" : \"underline\";\n\n return (\n {\n if (onPress) onPress();\n if (href) {\n try {\n await Linking.openURL(href);\n } catch {\n // ignore\n }\n }\n }}\n style={[\n link.text,\n { color: color ?? link.text.color, textDecorationLine: decoration },\n style,\n ]}\n >\n {children}\n \n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable, FlatList, type ListRenderItem, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── List Context ────────────────────────────────────────────────\n\ninterface ListContextValue {\n dense?: boolean;\n disablePadding?: boolean;\n}\n\nconst ListContext = createContext(null);\n\nfunction useListContext() {\n return useContext(ListContext);\n}\n\n// ─── List Component ──────────────────────────────────────────────\n\nexport interface ListProps {\n children?: React.ReactNode;\n dense?: boolean;\n disablePadding?: boolean;\n subheader?: React.ReactNode;\n style?: StyleProp;\n}\n\nexport function List({ children, dense = false, disablePadding = false, subheader, style }: ListProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {subheader && (\n \n {typeof subheader === \"string\" ? (\n \n {subheader}\n \n ) : subheader}\n \n )}\n {children}\n \n \n );\n}\n\n// ─── ListItem ────────────────────────────────────────────────────\n\nexport interface ListItemProps {\n children?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n divider?: boolean;\n style?: StyleProp;\n}\n\nfunction ListItemInner({\n children,\n secondaryAction,\n onPress,\n disabled = false,\n selected = false,\n divider = false,\n style,\n}: ListItemProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n const isDense = ctx?.dense;\n\n return (\n [\n list.item,\n {\n paddingVertical: isDense ? tokens.spacing[2] : tokens.spacing[3],\n backgroundColor: selected ? tokens.color.brand.subtle : \"transparent\",\n borderBottomWidth: divider ? 1 : 0,\n borderBottomColor: tokens.color.border.subtle,\n opacity: disabled ? 0.5 : 1,\n },\n pressed && list.item.pressed,\n style,\n ] as any}\n >\n \n {children}\n \n {secondaryAction && (\n \n {secondaryAction}\n \n )}\n \n );\n}\n\nexport const ListItem = React.memo(ListItemInner);\n\n// ─── ListItemText ────────────────────────────────────────────────\n\nexport interface ListItemTextProps {\n primary: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport function ListItemText({ primary, secondary }: ListItemTextProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n return (\n \n {typeof primary === \"string\" ? (\n \n {primary}\n \n ) : primary}\n {secondary && (\n typeof secondary === \"string\" ? (\n \n {secondary}\n \n ) : secondary\n )}\n \n );\n}\n\n// ─── ListItemIcon ────────────────────────────────────────────────\n\nexport function ListItemIcon({ children }: { children: React.ReactNode }) {\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\n// ─── FlatList Wrapper ────────────────────────────────────────────\n\nexport interface ListDataProps extends Omit {\n data: T[];\n renderItem: ListRenderItem;\n estimatedItemSize: number;\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function ListData({\n data,\n renderItem,\n estimatedItemSize,\n keyExtractor,\n ...listProps\n}: ListDataProps) {\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { View, Text, StyleSheet, AccessibilityInfo } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n withRepeat,\n withSequence,\n cancelAnimation,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nexport interface MarqueeProps {\n /** Content to scroll */\n children: React.ReactNode;\n /** Speed of animation (pixels per second) */\n speed?: number;\n /** Direction of scroll */\n direction?: \"left\" | \"right\" | \"up\" | \"down\";\n /** Whether to pause on hover/press (for web compatibility) */\n pauseOnHover?: boolean;\n /** Whether to pause on press */\n pauseOnPress?: boolean;\n /** Whether to repeat infinitely */\n loop?: boolean;\n /** Delay before starting animation */\n delay?: number;\n /** Gradient fade edges */\n fadeEdges?: boolean;\n /** Custom gradient colors for fade */\n fadeColor?: string;\n /** Accessibility label */\n accessibilityLabel?: string;\n /** Test ID for testing */\n testID?: string;\n}\n\n/**\n * Marquee component for scrolling text or content horizontally/vertically.\n * Uses React Native Reanimated for smooth GPU-accelerated animations.\n */\nexport function Marquee({\n children,\n speed = 50,\n direction = \"left\",\n pauseOnHover = false,\n pauseOnPress = false,\n loop = true,\n delay = 0,\n fadeEdges = true,\n fadeColor,\n accessibilityLabel = \"Scrolling content\",\n testID = \"marquee\",\n}: MarqueeProps) {\n const tokens = useTokens();\n const containerRef = useRef(null);\n const contentRef = useRef(null);\n\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const isPaused = useSharedValue(false);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (direction === \"left\" || direction === \"right\") {\n return {\n transform: [{ translateX: translateX.value }],\n };\n } else {\n return {\n transform: [{ translateY: translateY.value }],\n };\n }\n });\n\n const startAnimation = (containerWidth: number, contentWidth: number) => {\n if (contentWidth <= containerWidth) return; // No need to scroll\n\n const distance = contentWidth - containerWidth;\n const duration = (distance / speed) * 1000; // Convert to milliseconds\n\n const startValue = direction === \"left\" ? 0 : -distance;\n const endValue = direction === \"left\" ? -distance : 0;\n\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = startValue;\n } else {\n translateY.value = startValue;\n }\n\n const animation = withTiming(endValue, {\n duration,\n easing: Easing.linear,\n });\n\n const repeatedAnimation = loop\n ? withRepeat(\n withSequence(\n withTiming(endValue, { duration, easing: Easing.linear }),\n withTiming(startValue, { duration: 0 }), // Reset instantly\n ),\n -1, // Infinite\n false,\n )\n : animation;\n\n if (delay > 0) {\n setTimeout(() => {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }, delay);\n } else {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }\n };\n\n const pauseAnimation = () => {\n isPaused.value = true;\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n\n const resumeAnimation = () => {\n isPaused.value = false;\n // Re-measure and restart animation\n measureAndStart();\n };\n\n const measureAndStart = () => {\n containerRef.current?.measure((x, y, width, height) => {\n contentRef.current?.measure((cx, cy, cWidth, cHeight) => {\n if (direction === \"left\" || direction === \"right\") {\n startAnimation(width, cWidth);\n } else {\n startAnimation(height, cHeight);\n }\n });\n });\n };\n\n useEffect(() => {\n // Start animation after layout\n const timeout = setTimeout(measureAndStart, 100);\n return () => {\n clearTimeout(timeout);\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n }, [children, speed, direction, loop]);\n\n const handlePressIn = () => {\n if (pauseOnPress) {\n pauseAnimation();\n }\n };\n\n const handlePressOut = () => {\n if (pauseOnPress) {\n resumeAnimation();\n }\n };\n\n const fadeGradient = fadeColor || tokens.color.surface.default;\n\n return (\n \n {fadeEdges && (\n <>\n \n \n \n )}\n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n horizontal: {\n flexDirection: \"row\",\n },\n vertical: {\n flexDirection: \"column\",\n },\n fadeLeft: {\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeRight: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeTop: {\n left: 0,\n right: 0,\n top: 0,\n height: 20,\n width: undefined,\n },\n fadeBottom: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 20,\n width: undefined,\n },\n});","import React, { useCallback, useMemo } from \"react\";\nimport { Modal, View, Pressable, Text, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useMenu } from \"@truongdq01/headless\";\n\nexport interface MenuProps {\n open: boolean;\n onClose?: () => void;\n anchorEl?: { pageX: number; pageY: number; width: number; height: number } | null;\n children?: React.ReactNode;\n}\n\nexport interface MenuItemProps {\n children?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n}\n\nconst MenuContext = React.createContext<{ getItemProps: (o: any) => any } | null>(null);\n\nexport function Menu({ open, onClose, anchorEl, children }: MenuProps) {\n const { menu } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [menuSize, setMenuSize] = React.useState({ width: 0, height: 0 });\n const [mounted, setMounted] = React.useState(false);\n\n const { close, getItemProps } = useMenu({ onClose });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n // Animate in when open changes to true\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 180, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n });\n } else if (mounted) {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(setMounted)(false);\n });\n }\n }, [open]);\n\n const MENU_MIN_WIDTH = 180;\n const GAP = 4;\n\n let top: number = 48;\n let left: number = windowWidth - MENU_MIN_WIDTH - 16;\n\n if (anchorEl) {\n const { pageX, pageY, width, height } = anchorEl;\n top = pageY + height + GAP;\n left = pageX;\n\n if (left + menuSize.width > windowWidth - 8) {\n left = windowWidth - menuSize.width - 8;\n }\n if (top + menuSize.height > windowHeight - 8) {\n top = pageY - menuSize.height - GAP;\n }\n top = Math.max(8, top);\n left = Math.max(8, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setMenuSize({ width, height });\n }}\n style={[\n menu.container,\n {\n position: \"absolute\",\n top,\n left,\n minWidth: MENU_MIN_WIDTH,\n },\n animStyle,\n ]}\n >\n \n {children}\n \n \n \n );\n}\n\nexport function MenuItem({ children, onPress, disabled = false, selected = false }: MenuItemProps) {\n const { menu } = useComponentTokens();\n const tokens = useTokens();\n const ctx = React.useContext(MenuContext);\n\n const itemProps = ctx?.getItemProps({ onClick: onPress, disabled }) ?? { onPress, disabled };\n\n return (\n [\n menu.item,\n pressed && { backgroundColor: tokens.color.bg.subtle },\n selected && { backgroundColor: tokens.color.brand.subtle },\n disabled && { opacity: 0.5 },\n ]}\n >\n \n {children}\n \n \n );\n}\n","import React from \"react\";\nimport { Modal as RNModal, View, Pressable, StyleSheet, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n keepMounted?: boolean;\n hideBackdrop?: boolean;\n disableAutoFocus?: boolean;\n disableEscapeKeyDown?: boolean;\n /** Accessibility label for the modal content container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n BackdropComponent?: React.ComponentType;\n BackdropProps?: object;\n contentStyle?: StyleProp;\n}\n\nexport function Modal({\n open,\n onClose,\n children,\n keepMounted = false,\n hideBackdrop = false,\n disableEscapeKeyDown = false,\n accessibilityLabel = \"Modal\",\n backdropAccessibilityLabel = \"Dismiss modal\",\n BackdropComponent,\n BackdropProps,\n contentStyle,\n}: ModalProps) {\n const { modal } = useComponentTokens();\n\n if (!open && !keepMounted) return null;\n\n const handleRequestClose = () => {\n if (!disableEscapeKeyDown) {\n onClose?.();\n }\n };\n\n return (\n \n \n {!hideBackdrop && (\n BackdropComponent ? (\n (() => {\n const el = ;\n return React.isValidElement(el) ? React.cloneElement(el as any, { collapsable: false }) : el;\n })()\n ) : (\n \n )\n )}\n \n {children}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n content: {\n minWidth: 280,\n maxWidth: \"90%\",\n },\n});\n","import React, { useEffect } from \"react\";\nimport { View, TextInput, Pressable, Text } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n withTiming,\n withSequence,\n withRepeat,\n cancelAnimation,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useOTPInput, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\nexport interface OTPInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n onComplete?: (value: string) => void;\n disabled?: boolean;\n /** Show dots instead of digits (PIN entry). */\n mask?: boolean;\n}\n\nexport function OTPInput({\n length = 6,\n value,\n onChange,\n onComplete,\n disabled = false,\n mask = false,\n}: OTPInputProps) {\n const { otpInput } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { inputRef, isFocused, handlePress, getOtpProps } = useOTPInput({\n length,\n value,\n onChange,\n onComplete,\n disabled,\n });\n\n return (\n \n \n\n \n {Array.from({ length }).map((_, index) => {\n const char = value[index] || \"\";\n const isCurrentFocus = isFocused && value.length === index;\n const isFilled = char.length > 0;\n const isLastCellWhenFull = isFocused && value.length === length && index === length - 1;\n const hasFocusBorder = isCurrentFocus || isLastCellWhenFull;\n\n return (\n \n );\n })}\n \n \n );\n}\n\nfunction OTPCell({\n char,\n isFocused,\n isFilled,\n showCursor,\n mask,\n reduceMotion,\n}: {\n char: string;\n isFocused: boolean;\n isFilled: boolean;\n showCursor: boolean;\n mask: boolean;\n reduceMotion: boolean;\n}) {\n const { otpInput } = useComponentTokens();\n const scale = useSharedValue(1);\n const cursorOpacity = useSharedValue(1);\n\n useEffect(() => {\n if (showCursor && !reduceMotion) {\n cursorOpacity.value = withRepeat(\n withSequence(withTiming(0, { duration: 500 }), withTiming(1, { duration: 500 })),\n -1,\n false,\n );\n } else {\n cancelAnimation(cursorOpacity);\n cursorOpacity.value = 1;\n }\n return () => cancelAnimation(cursorOpacity);\n }, [showCursor, reduceMotion]);\n\n useEffect(() => {\n if (isFocused) {\n scale.value = withSequence(\n withTiming(1.1, { duration: 150 }),\n withTiming(1, { duration: 150 })\n );\n } else if (isFilled) {\n scale.value = withSpring(1, { damping: 10, stiffness: 200 });\n } else {\n scale.value = withTiming(1, { duration: 150 });\n }\n }, [isFocused, isFilled]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const cursorStyle = useAnimatedStyle(() => ({\n opacity: cursorOpacity.value,\n }));\n\n const borderColor = isFocused\n ? otpInput.cell.focused.borderColor\n : isFilled\n ? otpInput.cell.filled.borderColor\n : otpInput.cell.borderColor;\n\n const backgroundColor = isFilled ? otpInput.cell.filled.backgroundColor : otpInput.cell.backgroundColor;\n\n const borderWidth = isFocused ? Math.max(otpInput.cell.borderWidth * 1.5, 2) : otpInput.cell.borderWidth;\n\n const displayChar = isFilled && mask ? \"\\u2022\" : char;\n\n return (\n \n {showCursor ? (\n \n ) : (\n \n {displayChar}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { usePagination, type PaginationItem, useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface PaginationProps {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n variant?: \"text\" | \"outlined\";\n shape?: \"circular\" | \"rounded\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Pagination({\n count,\n page,\n defaultPage,\n onChange,\n variant = \"text\",\n shape = \"rounded\",\n size = \"md\",\n}: PaginationProps) {\n const tokens = useTokens();\n const { pagination } = useComponentTokens();\n const { page: current, setPage, items } = usePagination({ count, page, defaultPage, onChange });\n\n const s = pagination.size[size];\n\n const renderItem = (item: PaginationItem, idx: number) => {\n if (typeof item !== \"number\") {\n return (\n \n ...\n \n );\n }\n\n const selected = item === current;\n const itemTokens = selected ? pagination.item.active : pagination.item.default;\n\n return (\n setPage(item)}\n accessibilityRole=\"button\"\n accessibilityLabel={`Page ${item}`}\n accessibilityState={{ selected }}\n style={{\n height: s,\n minWidth: s,\n paddingHorizontal: 8,\n borderRadius: shape === \"circular\" ? s / 2 : tokens.radius.md,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: itemTokens.bg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: itemTokens.borderColor,\n }}\n >\n \n {item}\n \n \n );\n };\n\n return (\n \n {items.map(renderItem)}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface PaperProps {\n children?: React.ReactNode;\n variant?: \"elevation\" | \"outlined\" | \"flat\";\n elevation?: \"none\" | \"sm\" | \"md\" | \"lg\";\n square?: boolean;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Paper({\n children,\n variant = \"elevation\",\n elevation = \"sm\",\n square = false,\n style,\n}: PaperProps) {\n const { paper } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n {children}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopoverOriginVertical = \"top\" | \"center\" | \"bottom\" | number;\nexport type PopoverOriginHorizontal = \"left\" | \"center\" | \"right\" | number;\n\nexport interface PopoverOrigin {\n vertical: PopoverOriginVertical;\n horizontal: PopoverOriginHorizontal;\n}\n\nexport interface PopoverProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n anchorPosition?: { top: number; left: number };\n onClose?: () => void;\n anchorOrigin?: PopoverOrigin;\n transformOrigin?: PopoverOrigin;\n elevation?: number;\n PaperProps?: { style?: object };\n marginThreshold?: number;\n children?: React.ReactNode;\n}\n\nconst defaultOrigin: PopoverOrigin = { vertical: \"bottom\", horizontal: \"left\" };\nconst defaultTransform: PopoverOrigin = { vertical: \"top\", horizontal: \"left\" };\n\nfunction resolveOrigin(value: PopoverOriginVertical | PopoverOriginHorizontal, size: number) {\n if (typeof value === \"number\") return value;\n if (value === \"center\") return size / 2;\n if (value === \"bottom\" || value === \"right\") return size;\n return 0;\n}\n\nexport function Popover({\n open,\n anchorEl,\n anchorPosition,\n onClose,\n anchorOrigin = defaultOrigin,\n transformOrigin = defaultTransform,\n PaperProps,\n marginThreshold = 12,\n children,\n}: PopoverProps) {\n const { popover } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const anchorX = anchorPosition?.left ?? anchorRect.x;\n const anchorY = anchorPosition?.top ?? anchorRect.y;\n const anchorWidth = anchorRect.width ?? 0;\n const anchorHeight = anchorRect.height ?? 0;\n\n const anchorOffsetX = resolveOrigin(anchorOrigin.horizontal, anchorWidth);\n const anchorOffsetY = resolveOrigin(anchorOrigin.vertical, anchorHeight);\n const transformOffsetX = resolveOrigin(transformOrigin.horizontal, contentSize.width);\n const transformOffsetY = resolveOrigin(transformOrigin.vertical, contentSize.height);\n\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n let left = anchorX + anchorOffsetX - transformOffsetX;\n let top = anchorY + anchorOffsetY - transformOffsetY;\n\n left = Math.max(marginThreshold, Math.min(left, screenWidth - contentSize.width - marginThreshold));\n top = Math.max(marginThreshold, Math.min(top, screenHeight - contentSize.height - marginThreshold));\n\n return { left, top };\n }, [anchorX, anchorY, anchorOffsetX, anchorOffsetY, transformOffsetX, transformOffsetY, contentSize, screenWidth, screenHeight, marginThreshold]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n paper: {\n position: \"absolute\",\n borderRadius: 12,\n borderWidth: 1,\n padding: 12,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopperPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport interface PopperProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n placement?: PopperPlacement;\n disablePortal?: boolean;\n transition?: boolean;\n keepMounted?: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\nfunction resolvePlacement(\n placement: PopperPlacement,\n anchor: { x: number; y: number; width: number; height: number },\n content: { width: number; height: number }\n) {\n const baseX = anchor.x;\n const baseY = anchor.y;\n\n const centerX = baseX + anchor.width / 2 - content.width / 2;\n const centerY = baseY + anchor.height / 2 - content.height / 2;\n const leftX = baseX;\n const rightX = baseX + anchor.width - content.width;\n const topY = baseY - content.height;\n const bottomY = baseY + anchor.height;\n\n switch (placement) {\n case \"top\":\n return { left: centerX, top: topY };\n case \"top-start\":\n return { left: leftX, top: topY };\n case \"top-end\":\n return { left: rightX, top: topY };\n case \"bottom\":\n return { left: centerX, top: bottomY };\n case \"bottom-start\":\n return { left: leftX, top: bottomY };\n case \"bottom-end\":\n return { left: rightX, top: bottomY };\n case \"left\":\n return { left: baseX - content.width, top: centerY };\n case \"left-start\":\n return { left: baseX - content.width, top: baseY };\n case \"left-end\":\n return { left: baseX - content.width, top: baseY + anchor.height - content.height };\n case \"right\":\n return { left: baseX + anchor.width, top: centerY };\n case \"right-start\":\n return { left: baseX + anchor.width, top: baseY };\n case \"right-end\":\n return { left: baseX + anchor.width, top: baseY + anchor.height - content.height };\n default:\n return { left: centerX, top: bottomY };\n }\n}\n\nexport function Popper({\n open,\n anchorEl,\n placement = \"bottom\",\n keepMounted = false,\n onClose,\n children,\n}: PopperProps) {\n const { popper } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open && !keepMounted) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n const pos = resolvePlacement(placement, {\n x: anchorRect.x,\n y: anchorRect.y,\n width: anchorRect.width ?? 0,\n height: anchorRect.height ?? 0,\n }, contentSize);\n\n const left = Math.max(8, Math.min(pos.left, screenWidth - contentSize.width - 8));\n const top = Math.max(8, Math.min(pos.top, screenHeight - contentSize.height - 8));\n return { left, top };\n }, [placement, anchorRect, contentSize, screenWidth, screenHeight]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n }\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n popper: {\n position: \"absolute\",\n borderRadius: 10,\n borderWidth: 1,\n padding: 10,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UsePressableOptions } from \"@truongdq01/headless\";\n\nexport interface PressableProps extends UsePressableOptions {\n children: React.ReactNode | ((state: { isPressed: boolean }) => React.ReactNode);\n style?: object | object[];\n}\n\nexport function Pressable({ children, style, testID, ...hookOptions }: PressableProps) {\n const { pressable } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps, isPressed } = usePressable({\n ...hookOptions,\n testID,\n });\n\n return (\n \n \n {typeof children === \"function\" ? children({ isPressed }) : children}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useRadioGroup, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseRadioGroupOptions } from \"@truongdq01/headless\";\n\n// ─── RadioItem ────────────────────────────────────────────────────\n\nexport interface RadioItemProps {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n isSelected: boolean;\n onPress: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioItem({\n label,\n description,\n disabled = false,\n isSelected,\n onPress,\n size = \"md\",\n}: RadioItemProps) {\n const tokens = useTokens();\n const { radio } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const outerSize = radio.container[size];\n const innerSize = radio.dot[size];\n const snappySpring = spring.snappy;\n\n const scale = useSharedValue(isSelected ? 1 : 0);\n const ringFill = useSharedValue(isSelected ? 1 : 0);\n\n React.useEffect(() => {\n const target = isSelected ? 1 : 0;\n scale.value = reduceMotion ? target : withSpring(target, snappySpring);\n ringFill.value = reduceMotion ? target : withSpring(target, snappySpring);\n }, [isSelected, snappySpring, reduceMotion, scale, ringFill]);\n\n const dotStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n opacity: scale.value,\n }));\n\n const outerRingStyle = useAnimatedStyle(() => ({\n borderWidth: interpolate(ringFill.value, [0, 1], [outerSize.borderWidth, 0]),\n borderColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.borderOff, \"transparent\"]),\n backgroundColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.bgOff, radio.colors.borderOn]),\n }));\n\n const handlePress = () => {\n if (!isSelected && !reduceMotion) {\n scale.value = withSpring(0.6, { damping: 12, stiffness: 200 }, () => {\n \"worklet\";\n scale.value = withSpring(1, snappySpring);\n });\n }\n onPress();\n };\n\n return (\n \n {/* Outer ring */}\n \n {/* Inner dot */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}\n\n// ─── RadioGroup ───────────────────────────────────────────────────\n\nexport interface RadioOption {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends UseRadioGroupOptions {\n options: RadioOption[];\n label?: string;\n direction?: \"vertical\" | \"horizontal\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioGroup({\n options,\n label,\n direction = \"vertical\",\n size = \"md\",\n ...hookOptions\n}: RadioGroupProps) {\n const tokens = useTokens();\n const { isSelected, getItemProps } = useRadioGroup(hookOptions);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n {options.map((option) => {\n const itemProps = getItemProps(option.value, option.disabled);\n return (\n \n );\n })}\n \n \n );\n}","import React, { memo, useCallback } from \"react\";\nimport {\n View,\n Pressable,\n Text,\n AccessibilityInfo,\n type AccessibilityActionEvent,\n} from \"react-native\";\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring } from \"react-native-reanimated\";\nimport { spring } from \"@truongdq01/tokens\";\nimport { useRating, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nconst DEFAULT_ICON_NAMES = {\n filled: \"star\" as const,\n empty: \"star\" as const,\n half: \"starHalf\" as const,\n};\n\nfunction clamp(n: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, n));\n}\n\n/** State of a single star slot */\nexport type RatingStarState = \"filled\" | \"half\" | \"empty\";\n\n/**\n * Star row item: press feedback uses Reanimated; stars are not separate a11y nodes.\n * Consumers should pass a stable `onChange` (e.g. `useCallback`) so `Rating` memo stays effective.\n */\nexport interface RatingProps {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n readOnly?: boolean;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n onChange?: (value: number) => void;\n /** When true, show numeric value next to stars (e.g. `3/5`). */\n showValue?: boolean;\n /** Where `showValue` sits relative to the star row. Default `end`. */\n valuePosition?: \"start\" | \"end\";\n /** Tighter gap between stars (uses `rating.containerCompact`). */\n compact?: boolean;\n /**\n * Icons for filled / empty / half. Empty uses the same glyph as `filled` with empty token color\n * when both default to `star`.\n */\n iconNames?: { filled: IconName; empty: IconName; half: IconName };\n /**\n * Fully custom icon renderer. Overrides `iconNames` when provided.\n * Receives the star state, dp size, and theme color — return any React node (emoji, SVG, etc.).\n */\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n /** Number of ratings/reviews — shown as `★ 4.3 (128)` when combined with `showValue`. */\n ratingCount?: number;\n /**\n * Format function for the value label. Receives `(value, max, ratingCount?)`.\n * Default: `\"3/5\"` or `\"4.3 (128)\"` when `ratingCount` is provided.\n */\n formatLabel?: (value: number, max: number, ratingCount?: number) => string;\n}\n\ntype RatingStarButtonProps = {\n index: number;\n iconSize: number;\n iconName: IconName;\n iconColor: string;\n starState: RatingStarState;\n disabled: boolean;\n readOnly: boolean;\n reduceMotion: boolean;\n onPress: (index: number) => void;\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n};\n\nfunction RatingStarButton({\n index,\n iconSize,\n iconName,\n iconColor,\n starState,\n disabled,\n readOnly,\n reduceMotion,\n onPress,\n renderIcon,\n}: RatingStarButtonProps) {\n const scale = useSharedValue(1);\n const animStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const handlePressIn = () => {\n if (disabled || readOnly || reduceMotion) return;\n scale.value = withSpring(1.12, spring.snappy);\n };\n\n const handlePressOut = () => {\n if (disabled || readOnly) return;\n if (reduceMotion) {\n scale.value = 1;\n return;\n }\n scale.value = withSpring(1, spring.snappy);\n };\n\n const iconContent = renderIcon\n ? renderIcon(starState, iconSize, iconColor)\n : {iconName};\n\n return (\n onPress(index)}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n style={{ opacity: disabled ? 0.5 : 1 }}\n >\n \n {iconContent}\n \n \n );\n}\n\nfunction RatingInner({\n value,\n defaultValue,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = \"md\",\n onChange,\n showValue = false,\n valuePosition = \"end\",\n compact = false,\n iconNames: iconNamesProp,\n renderIcon,\n ratingCount,\n formatLabel,\n}: RatingProps) {\n const { rating } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const icons = { ...DEFAULT_ICON_NAMES, ...iconNamesProp };\n\n const { value: ratingValue, setValue, precision: effectivePrecision } = useRating({\n value,\n defaultValue,\n max,\n precision,\n readOnly,\n disabled,\n onChange,\n });\n\n const iconSize = rating.size[size];\n const activeColor = rating.star.filled.color;\n const inactiveColor = rating.star.empty.color;\n const halfColor = rating.star.half.color;\n\n const announceValue = useCallback(\n (next: number) => {\n // TODO i18n — fixed English for library default\n const announce = AccessibilityInfo.announceForAccessibility;\n if (typeof announce === \"function\") {\n announce(`${next} out of ${max} stars`);\n }\n },\n [max]\n );\n\n const handlePress = (index: number) => {\n if (disabled || readOnly) return;\n const tapTarget = index + 1;\n const snapped = Math.round(tapTarget / effectivePrecision) * effectivePrecision;\n const newVal = ratingValue === snapped ? 0 : snapped;\n setValue(newVal);\n announceValue(newVal);\n };\n\n const applyAccessibilityStep = (delta: 1 | -1) => {\n if (disabled || readOnly) return;\n const raw = ratingValue + delta * effectivePrecision;\n const snapped = Math.round(raw / effectivePrecision) * effectivePrecision;\n const next = clamp(snapped, 0, max);\n if (next !== ratingValue) {\n setValue(next);\n announceValue(next);\n }\n };\n\n const onAccessibilityAction = (event: AccessibilityActionEvent) => {\n const name = event.nativeEvent.actionName;\n if (name === \"increment\") {\n applyAccessibilityStep(1);\n } else if (name === \"decrement\") {\n applyAccessibilityStep(-1);\n }\n };\n\n const interactive = !readOnly && !disabled;\n const rowStyle = compact ? rating.containerCompact : rating.container;\n\n const defaultFormatLabel = (v: number, m: number, count?: number) => {\n if (count != null) return `${v} (${count})`;\n return `${v}/${m}`;\n };\n const labelFormatter = formatLabel ?? defaultFormatLabel;\n const labelText = labelFormatter(ratingValue, max, ratingCount);\n\n const valueLabel = (\n \n {labelText}\n \n );\n\n const starsRow = (\n \n {Array.from({ length: max }).map((_, i) => {\n const starNumber = i + 1;\n const filled = ratingValue >= starNumber;\n const halfFilled =\n !filled && ratingValue >= starNumber - 0.5 && effectivePrecision <= 0.5;\n\n const starState: RatingStarState = halfFilled ? \"half\" : filled ? \"filled\" : \"empty\";\n let iconName: IconName = icons.empty;\n if (halfFilled) iconName = icons.half;\n else if (filled) iconName = icons.filled;\n const iconColor = halfFilled ? halfColor : filled ? activeColor : inactiveColor;\n\n return (\n \n );\n })}\n \n );\n\n if (!showValue) {\n return {starsRow};\n }\n\n return (\n \n {valuePosition === \"start\" ? valueLabel : null}\n {starsRow}\n {valuePosition === \"end\" ? valueLabel : null}\n \n );\n}\n\nexport const Rating = memo(RatingInner);\nRating.displayName = \"Rating\";\n","import React, { useState, useRef } from \"react\";\nimport { View, Pressable, Text, type LayoutChangeEvent } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useSegmentedControl } from \"@truongdq01/headless\";\nconst TRACK_PADDING = 2;\n\n/** Critically damped — fast, no overshoot (replaces snappy spring for segment indicator). */\nconst INDICATOR_SPRING = { damping: 28, stiffness: 300, mass: 0.8 };\n\nexport type SegmentedControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption = string | { label: string; icon?: React.ReactNode };\n\nexport interface SegmentedControlProps {\n options: SegmentedOption[];\n selectedIndex: number;\n onChange: (index: number) => void;\n /** sm = 32, md = 36, lg = 44. Overridden by explicit `height`. */\n size?: SegmentedControlSize;\n /** Explicit height (overrides size). */\n height?: number;\n disabled?: boolean;\n}\n\nconst SIZE_HEIGHT: Record = { sm: 32, md: 36, lg: 44 };\nconst SIZE_FONT: Record = { sm: \"xs\", md: \"sm\", lg: \"md\" };\n\nfunction getLabel(opt: SegmentedOption): string {\n return typeof opt === \"string\" ? opt : opt.label;\n}\n\nfunction getIcon(opt: SegmentedOption): React.ReactNode | undefined {\n return typeof opt === \"string\" ? undefined : opt.icon;\n}\n\nexport function SegmentedControl({\n options,\n selectedIndex,\n onChange,\n size = \"md\",\n height: heightProp,\n disabled = false,\n}: SegmentedControlProps) {\n const tokens = useTokens();\n const { segmentedControl } = useComponentTokens();\n const { isSelected, setSelectedIndex, getTabProps } = useSegmentedControl({\n value: selectedIndex,\n onChange: (val) => onChange(val as number),\n disabled,\n });\n\n const resolvedHeight = heightProp ?? SIZE_HEIGHT[size];\n const fontKey = SIZE_FONT[size];\n\n const [containerWidth, setContainerWidth] = useState(0);\n const [layoutReady, setLayoutReady] = useState(false);\n\n const innerWidth = Math.max(0, containerWidth - TRACK_PADDING * 2);\n const segmentWidth = options.length > 0 ? innerWidth / options.length : 0;\n const translateX = useSharedValue(0);\n const indicatorWidth = useSharedValue(0);\n const didInitialLayout = useRef(false);\n\n React.useEffect(() => {\n if (segmentWidth <= 0) return;\n const target = selectedIndex * segmentWidth;\n if (!didInitialLayout.current) {\n didInitialLayout.current = true;\n translateX.value = target;\n indicatorWidth.value = segmentWidth;\n return;\n }\n translateX.value = withSpring(target, INDICATOR_SPRING);\n indicatorWidth.value = withSpring(segmentWidth, INDICATOR_SPRING);\n }, [selectedIndex, segmentWidth, translateX, indicatorWidth]);\n\n const onLayout = (e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n setContainerWidth(w);\n if (w > 0) setLayoutReady(true);\n };\n\n const indicatorStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n width: indicatorWidth.value,\n }));\n\n const showIndicator = layoutReady && segmentWidth > 0;\n\n return (\n \n {showIndicator && (\n \n )}\n\n {options.map((option, index) => {\n const selected = isSelected(index as any);\n const label = getLabel(option);\n const icon = getIcon(option);\n return (\n \n {icon}\n \n {label}\n \n \n );\n })}\n \n );\n}\n","import React, { useRef, useState, useMemo, useCallback } from \"react\";\nimport { View, Text, TextInput, Pressable, ActivityIndicator, FlatList } from \"react-native\";\nimport { useSelect, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { BottomSheet } from \"../BottomSheet/BottomSheet\";\nimport type { BottomSheetRef } from \"../BottomSheet/BottomSheet\";\nimport type { UseSelectOptions, SelectOption } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport { SkeletonListItem } from \"../Skeleton\";\n\nexport interface SelectProps extends UseSelectOptions {\n label?: string;\n placeholder?: string;\n searchable?: boolean;\n error?: string;\n onClearError?: () => void;\n loading?: boolean;\n onLoadMore?: () => void;\n hasMore?: boolean;\n loadingMore?: boolean;\n renderOption?: (\n option: SelectOption,\n ctx: { selected: boolean }\n ) => React.ReactNode;\n}\n\nexport function Select({\n label,\n placeholder = \"Select…\",\n searchable = false,\n error,\n onClearError,\n loading = false,\n onLoadMore,\n hasMore = false,\n loadingMore = false,\n renderOption,\n options,\n ...hookOptions\n}: SelectProps) {\n const { select } = useComponentTokens();\n const tokens = useTokens();\n const sheetRef = useRef(null);\n const [query, setQuery] = useState(\"\");\n const endReachBusy = useRef(false);\n const a11yLabel = label ?? \"Select\";\n // FlashList is an optional native dependency. Fall back to FlatList when it's not installed.\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n const {\n isOpen,\n open,\n close,\n selectOption,\n isSelected,\n displayLabel,\n } = useSelect({ options, ...hookOptions, placeholder });\n\n const hasSelection = displayLabel !== placeholder;\n\n const filtered = useMemo(() => {\n if (!query) return options;\n const lowerQuery = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(lowerQuery));\n }, [options, query]);\n\n const handleClose = useCallback(() => {\n sheetRef.current?.close();\n close();\n }, [close]);\n\n const handleOpen = useCallback(() => {\n setQuery(\"\");\n sheetRef.current?.open();\n open();\n }, [open]);\n\n const handleSelect = useCallback(\n (val: T) => {\n selectOption(val);\n onClearError?.();\n if (!hookOptions.multiple) handleClose();\n },\n [selectOption, onClearError, hookOptions.multiple, handleClose]\n );\n\n const onEndReached = useCallback(() => {\n if (!onLoadMore || !hasMore || loading || loadingMore || endReachBusy.current) return;\n endReachBusy.current = true;\n onLoadMore();\n }, [onLoadMore, hasMore, loading, loadingMore]);\n\n React.useEffect(() => {\n if (!loadingMore) endReachBusy.current = false;\n }, [loadingMore]);\n\n const renderItem = useCallback(\n ({ item: option }: { item: SelectOption }) => {\n const selected = isSelected(option.value);\n if (renderOption) {\n return (\n !option.disabled && handleSelect(option.value)}\n style={{ opacity: option.disabled ? 0.4 : 1 }}\n >\n {renderOption(option, { selected })}\n \n );\n }\n return (\n !option.disabled && handleSelect(option.value)}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderRadius: tokens.radius.md,\n backgroundColor: selected ? select.option.selected.bg : tokens.color.surface.default,\n opacity: option.disabled ? 0.4 : 1,\n }}\n >\n \n {option.label}\n \n {selected && }\n \n );\n },\n [isSelected, renderOption, select.option, tokens, handleSelect]\n );\n\n const listEmpty = useMemo(() => {\n if (loading && options.length === 0) {\n return (\n \n \n \n \n \n );\n }\n if (filtered.length === 0) {\n const emptyMsg = loading\n ? \"Loading…\"\n : query\n ? `No results for \"${query}\"`\n : \"No options\";\n return (\n \n {emptyMsg}\n \n );\n }\n return null;\n }, [loading, options.length, filtered.length, query, tokens]);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n \n {displayLabel}\n \n \n {isOpen ? \"chevronUp\" : \"chevronDown\"}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n 6 ? [\"70%\"] : [\"40%\"]}\n onClose={close}\n enableBackdrop\n enableDismissOnSwipe\n >\n \n {searchable && isOpen && (\n \n \n \n \n \n {query.length > 0 && (\n setQuery(\"\")} hitSlop={8}>\n \n \n )}\n \n )}\n\n {filtered.length === 0 ? (\n {listEmpty}\n ) : (\n ) => String(item.value)}\n onEndReached={onEndReached}\n onEndReachedThreshold={0.35}\n ItemSeparatorComponent={() => (\n \n )}\n ListFooterComponent={\n loadingMore ? (\n \n \n \n ) : (\n \n )\n }\n // FlashList-only optimization; harmless for FlatList (ignored)\n estimatedItemSize={48}\n />\n )}\n \n \n \n );\n}\n","import React, { createContext, useContext, useEffect, useState, Children, isValidElement, cloneElement } from \"react\";\nimport { View } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withRepeat,\n withTiming,\n interpolate,\n cancelAnimation,\n type SharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIsDark } from \"@truongdq01/headless\";\n\n/**\n * Available shimmer animation directions\n */\nexport type SkeletonShimmerDirection = \"pulse\" | \"left-to-right\" | \"right-to-left\";\n\n// ─── Shared shimmer context ───────────────────────────────────────\nconst ShimmerCtx = createContext | null>(null);\n\n/**\n * Props for the ShimmerProvider component\n */\nexport interface ShimmerProviderProps {\n children: React.ReactNode;\n /** Animation duration per cycle (ms) */\n duration?: number;\n}\n\n/**\n * Provider component that shares shimmer animation across child skeletons.\n * Improves performance by using a single shared animation value.\n *\n * @param props - Shimmer provider configuration\n * @returns Context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * \n * ```\n */\nexport function ShimmerProvider({ children, duration = 1200 }: ShimmerProviderProps) {\n const shimmer = useSharedValue(0);\n useEffect(() => {\n shimmer.value = withRepeat(withTiming(1, { duration }), -1, true);\n return () => cancelAnimation(shimmer);\n }, [duration]);\n return {children};\n}\n\nfunction useShimmerValue(animate: boolean, delayMs: number): SharedValue {\n const shared = useContext(ShimmerCtx);\n const local = useSharedValue(0);\n\n useEffect(() => {\n if (shared || !animate) {\n cancelAnimation(local);\n local.value = 0;\n return;\n }\n const start = () => {\n local.value = withRepeat(withTiming(1, { duration: 1200 }), -1, true);\n };\n if (delayMs > 0) {\n const t = setTimeout(start, delayMs);\n return () => { clearTimeout(t); cancelAnimation(local); };\n }\n start();\n return () => cancelAnimation(local);\n }, [animate, delayMs, !!shared]);\n\n return shared ?? local;\n}\n\n// ─── Base Skeleton ────────────────────────────────────────────────\n\nexport interface SkeletonProps {\n width?: number | `${number}%`;\n height?: number;\n borderRadius?: number;\n /** Disable shimmer animation */\n animate?: boolean;\n /** Stagger start — used by `SkeletonGroup` */\n delayMs?: number;\n /** Shimmer style — default `pulse` (opacity); LTR/RTL sweep uses translateX */\n shimmerDirection?: SkeletonShimmerDirection;\n}\n\nexport function Skeleton({\n width = \"100%\",\n height = 16,\n borderRadius,\n animate = true,\n delayMs = 0,\n shimmerDirection = \"pulse\",\n}: SkeletonProps) {\n const { skeleton } = useComponentTokens();\n const isDark = useIsDark();\n const shimmer = useShimmerValue(animate, delayMs);\n const [layoutW, setLayoutW] = useState(0);\n\n const sweepHighlight = isDark ? \"rgba(255,255,255,0.12)\" : \"rgba(255,255,255,0.45)\";\n\n const pulseStyle = useAnimatedStyle(() => ({\n opacity: interpolate(shimmer.value, [0, 1], [skeleton.opacity.start, skeleton.opacity.end]),\n }));\n\n const sweepStyle = useAnimatedStyle(() => {\n const w = Math.max(layoutW, 1);\n const sweep = w * 0.35;\n const t = shimmerDirection === \"right-to-left\" ? 1 - shimmer.value : shimmer.value;\n return {\n transform: [{ translateX: interpolate(t, [0, 1], [-sweep, w]) }],\n opacity: 0.45,\n };\n });\n\n const isSweep = shimmerDirection === \"left-to-right\" || shimmerDirection === \"right-to-left\";\n\n return (\n setLayoutW(e.nativeEvent.layout.width)}\n >\n {animate && isSweep && (\n \n )}\n \n );\n}\n\n// ─── SkeletonGroup — stagger children that accept `delayMs` ───────\n\nexport interface SkeletonGroupProps {\n children: React.ReactNode;\n /** Delay between each child (ms) */\n stagger?: number;\n}\n\nexport function SkeletonGroup({ stagger = 80, children }: SkeletonGroupProps) {\n return (\n <>\n {Children.map(children, (child, i) => {\n if (!isValidElement(child)) return child;\n return cloneElement(child as React.ReactElement<{ delayMs?: number }>, {\n delayMs: i * stagger,\n });\n })}\n \n );\n}\n\n// ─── Presets ──────────────────────────────────────────────────────\n\nexport const SkeletonText = React.memo(function SkeletonText({\n lines = 3,\n lastLineWidth = \"60%\",\n shimmerDirection = \"pulse\",\n}: {\n lines?: number;\n lastLineWidth?: `${number}%`;\n shimmerDirection?: SkeletonShimmerDirection;\n}) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: lines }).map((_, i) => (\n \n ))}\n \n );\n});\n\nexport const SkeletonCard = React.memo(function SkeletonCard() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n});\n\nexport const SkeletonListItem = React.memo(function SkeletonListItem() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n );\n});\n\n/** Avatar + two text lines — profile card placeholder */\nexport const SkeletonProfile = React.memo(function SkeletonProfile() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** 16:9 block + title lines */\nexport const SkeletonMedia = React.memo(function SkeletonMedia() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** Repeated label + field rows */\nexport const SkeletonForm = React.memo(function SkeletonForm({ rows = 4 }: { rows?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: rows }).map((_, i) => (\n \n \n \n \n ))}\n \n );\n});\n\n/** N×M grid of squares */\nexport const SkeletonGrid = React.memo(function SkeletonGrid({ columns = 3, rows = 2, cell = 48 }: { columns?: number; rows?: number; cell?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: columns * rows }).map((_, i) => (\n \n ))}\n \n );\n});\n\n/** Header row + data rows */\nexport const SkeletonTable = React.memo(function SkeletonTable({ columns = 4, dataRows = 3 }: { columns?: number; dataRows?: number }) {\n const tokens = useTokens();\n return (\n \n \n {Array.from({ length: columns }).map((_, i) => (\n \n ))}\n \n {Array.from({ length: dataRows }).map((_, r) => (\n \n {Array.from({ length: columns }).map((_, c) => (\n \n ))}\n \n ))}\n \n );\n});\n","import React, { useMemo } from \"react\";\nimport { View, Text, TextInput, type TextStyle } from \"react-native\";\nimport Animated, { useAnimatedProps } from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSlider, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type {\n UseSliderOptions,\n UseSliderOptionsRange,\n UseSliderOptionsSingle,\n UseSliderReturnRange,\n UseSliderReturnSingle,\n} from \"@truongdq01/headless\";\n\ntype SliderUiProps = {\n label?: string;\n /** Show current value (single) or \"lo – hi\" (range) */\n showValue?: boolean;\n formatValue?: (v: number) => string;\n /** Min / max labels under the track */\n showMinMaxLabels?: boolean;\n showMarks?: boolean;\n /** Vertical track height when `orientation=\"vertical\"` */\n sliderHeight?: number;\n /** Replace default thumb circle */\n thumbRenderer?: (args: {\n kind: \"single\" | \"low\" | \"high\";\n value: number;\n }) => React.ReactNode;\n};\n\nexport type SliderProps =\n | (SliderUiProps & UseSliderOptionsSingle)\n | (SliderUiProps & UseSliderOptionsRange);\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\n/** Worklet snap (mirrors headless `snapRatioWorklet` for live labels). */\nfunction snapSliderValueWorklet(raw: number, minV: number, maxV: number, stepV: number): number {\n \"worklet\";\n if (stepV === 0 || maxV === minV) return Math.max(minV, Math.min(maxV, raw));\n const snapped = Math.round((raw - minV) / stepV) * stepV + minV;\n return Math.max(minV, Math.min(maxV, snapped));\n}\n\ntype LiveValueStyle = Pick;\n\nfunction SliderLiveSingleValue(props: {\n show: boolean;\n thumbRatioShared: UseSliderReturnSingle[\"thumbRatioShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const raw = thumbRatioShared.value * (max - min) + min;\n const s = snapSliderValueWorklet(raw, min, max, step);\n return { text: String(s) };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nfunction SliderLiveRangeValue(props: {\n show: boolean;\n thumbRatioLowShared: UseSliderReturnRange[\"thumbRatioLowShared\"];\n thumbRatioHighShared: UseSliderReturnRange[\"thumbRatioHighShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioLowShared, thumbRatioHighShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const rawLo = thumbRatioLowShared.value * (max - min) + min;\n const rawHi = thumbRatioHighShared.value * (max - min) + min;\n const lo = snapSliderValueWorklet(rawLo, min, max, step);\n const hi = snapSliderValueWorklet(rawHi, min, max, step);\n return { text: `${lo} – ${hi}` };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nexport function Slider({\n label,\n showValue = false,\n formatValue = (v: number) => String(v),\n showMinMaxLabels = false,\n showMarks = false,\n sliderHeight = 150,\n thumbRenderer,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n range = false,\n ...rest\n}: SliderProps) {\n const tokens = useTokens();\n const { slider } = useComponentTokens();\n const isVertical = orientation === \"vertical\";\n\n const sliderState = useSlider({\n min,\n max,\n step,\n orientation,\n range,\n ...rest,\n } as UseSliderOptions);\n\n const showRangeLabels = showMinMaxLabels;\n\n const marks =\n showMarks && step > 0\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => i * step + min)\n : [];\n\n const liveValueStyle = useMemo(\n (): LiveValueStyle => ({\n fontSize: tokens.fontSize.sm,\n fontWeight: tokens.fontWeight.semibold,\n color: tokens.color.brand.default,\n }),\n [tokens.color.brand.default, tokens.fontSize.sm, tokens.fontWeight.semibold]\n );\n\n const trackThickness = slider.track.height;\n const thumbW = slider.thumb.width;\n const thumbH = slider.thumb.height;\n\n // Match Meta's minimum comfortable hit target (48dp) while keeping the visual thumb smaller.\n const minHitSize = 48;\n const trackPad = Math.max(12, (minHitSize - thumbH) / 2);\n\n const thumbShellStyle = useMemo(() => {\n const chrome = thumbRenderer\n ? {\n backgroundColor: \"transparent\" as const,\n borderWidth: 0,\n borderColor: \"transparent\" as const,\n elevation: 0,\n shadowOpacity: 0,\n shadowRadius: 0,\n shadowOffset: { width: 0, height: 0 } as const,\n shadowColor: \"transparent\" as const,\n }\n : {\n backgroundColor: slider.thumb.bg,\n borderWidth: slider.thumb.borderWidth,\n borderColor: slider.thumb.borderColor,\n shadowColor: slider.thumb.shadowColor,\n shadowOffset: slider.thumb.shadowOffset,\n shadowOpacity: slider.thumb.shadowOpacity,\n shadowRadius: slider.thumb.shadowRadius,\n elevation: slider.thumb.elevation,\n };\n return {\n position: \"absolute\" as const,\n width: thumbW,\n height: thumbH,\n borderRadius: slider.thumb.borderRadius,\n ...chrome,\n ...(isVertical\n ? { left: \"50%\" as const, marginLeft: -thumbW / 2, top: (-thumbH / 2) as number }\n : { left: (-thumbW / 2) as number, top: undefined as undefined }),\n };\n }, [\n thumbRenderer,\n isVertical,\n thumbW,\n thumbH,\n slider.thumb,\n ]);\n\n function renderThumb(\n animatedStyle: object,\n kind: \"single\" | \"low\" | \"high\",\n value: number\n ) {\n const custom = thumbRenderer?.({ kind, value });\n return (\n \n {custom ?? null}\n \n );\n }\n\n if (sliderState.mode === \"range\") {\n const {\n currentValue,\n thumbRatioLowShared,\n thumbRatioHighShared,\n thumbLowAnimatedStyle,\n thumbHighAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGestureLow,\n panGestureHigh,\n onTrackLayout,\n } = sliderState;\n const [lo, hi] = currentValue;\n const d = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= hi && mark >= lo;\n return (\n \n );\n })}\n\n \n {renderThumb(thumbLowAnimatedStyle, \"low\", lo)}\n \n \n {renderThumb(thumbHighAnimatedStyle, \"high\", hi)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n }\n\n const {\n currentValue,\n thumbRatioShared,\n thumbAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGesture,\n onTrackLayout,\n } = sliderState as UseSliderReturnSingle;\n const disabled = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= currentValue;\n return (\n \n );\n })}\n\n {renderThumb(thumbAnimatedStyle, \"single\", currentValue)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n}\n","import React, { useEffect, useMemo } from \"react\";\nimport { View, Text, Pressable, Modal, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface SnackbarProps {\n /** If true, the snackbar is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Duration in ms before auto-hiding. Use null to disable. */\n autoHideDuration?: number | null;\n /** Callback on close */\n onClose?: () => void;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Position on screen */\n anchorOrigin?: { vertical: \"top\" | \"bottom\"; horizontal: \"left\" | \"center\" | \"right\" };\n}\n\nexport function Snackbar({\n open,\n message,\n autoHideDuration = 4000,\n onClose,\n action,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n}: SnackbarProps) {\n const { snackbar } = useComponentTokens();\n const tokens = useTokens();\n const [mounted, setMounted] = React.useState(open);\n\n const isBottom = anchorOrigin.vertical === \"bottom\";\n const translateY = useSharedValue(isBottom ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = () => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300, mass: 1 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n };\n\n const animateOut = (onDone: () => void) => {\n translateY.value = withTiming(isBottom ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n };\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = isBottom ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const verticalStyle = isBottom ? { bottom: 32 } : { top: 48 };\n const horizontalStyle = useMemo(() => {\n if (anchorOrigin.horizontal === \"center\") return { alignSelf: \"center\" as const };\n if (anchorOrigin.horizontal === \"left\") return { left: 16 };\n return { right: 16 };\n }, [anchorOrigin.horizontal]);\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as any,\n }));\n\n if (!mounted && !open) return null;\n\n return (\n \n \n \n {message}\n {action}\n {onClose && (\n \n \n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n },\n});\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useDisclosure, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Fab } from \"../Fab/Fab\";\n\nexport interface SpeedDialProps {\n ariaLabel: string;\n icon?: React.ReactNode;\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n hidden?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SpeedDialActionProps {\n icon?: React.ReactNode;\n tooltipTitle?: string;\n onPress?: () => void;\n}\n\ninterface SpeedDialContextValue {\n isOpen: boolean;\n close: () => void;\n}\n\nconst SpeedDialContext = createContext(null);\n\nexport function SpeedDial({\n ariaLabel,\n icon,\n direction = \"up\",\n open: controlledOpen,\n onOpen,\n onClose,\n hidden = false,\n children,\n}: SpeedDialProps) {\n const { speedDial } = useComponentTokens();\n const disclosure = useDisclosure({ isOpen: controlledOpen, onOpen, onClose });\n const tokens = useTokens();\n\n if (hidden) return null;\n\n const stackStyle = {\n flexDirection: (direction === \"left\" || direction === \"right\" ? \"row\" : \"column\") as \"row\" | \"column\",\n alignItems: \"center\" as const,\n gap: tokens.spacing[3],\n };\n\n const ctxValue = useMemo(() => ({ isOpen: disclosure.isOpen, close: disclosure.close }), [disclosure.isOpen, disclosure.close]);\n\n return (\n \n \n {disclosure.isOpen && children}\n \n \n \n );\n}\n\nexport function SpeedDialAction({ icon, tooltipTitle, onPress }: SpeedDialActionProps) {\n const { speedDial } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(SpeedDialContext);\n if (!ctx?.isOpen) return null;\n\n return (\n {\n onPress?.();\n ctx.close();\n }}\n style={speedDial.action as any}\n >\n \n {icon}\n \n {tooltipTitle && (\n \n {tooltipTitle}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface StackProps {\n children?: React.ReactNode;\n direction?: \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n spacing?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n divider?: React.ReactNode;\n alignItems?: ViewStyle[\"alignItems\"];\n justifyContent?: ViewStyle[\"justifyContent\"];\n flexWrap?: ViewStyle[\"flexWrap\"];\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Stack({\n children,\n direction = \"column\",\n spacing = \"sm\",\n divider,\n alignItems,\n justifyContent,\n flexWrap,\n style,\n}: StackProps) {\n const { stack } = useComponentTokens();\n const gap = typeof spacing === \"number\" ? spacing : stack.gap[spacing];\n\n const items = React.Children.toArray(children);\n const content = divider\n ? items.flatMap((child, idx) => (idx === 0 ? [child] : [divider, child]))\n : items;\n\n return (\n \n {content}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface StepperProps {\n activeStep?: number;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface StepProps {\n index: number;\n label?: string;\n children?: React.ReactNode;\n}\n\nexport interface StepLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function Stepper({ activeStep = 0, orientation = \"horizontal\", children }: StepperProps) {\n const { stepper } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child) => {\n if (!React.isValidElement<{ activeStep?: number; orientation?: \"horizontal\" | \"vertical\" }>(child)) return child;\n return React.cloneElement(child, { activeStep, orientation });\n })}\n \n );\n}\n\ninterface StepInternalProps extends StepProps {\n activeStep: number;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nexport function Step({ index, label, children, activeStep = 0, orientation = \"horizontal\" }: Partial & StepProps) {\n const { stepper } = useComponentTokens();\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n\n const color = isCompleted\n ? stepper.step.completed.color\n : isActive\n ? stepper.step.active.color\n : stepper.step.pending.color;\n\n return (\n \n \n {isCompleted ? (\n \n ) : (\n \n {index + 1}\n \n )}\n \n {label && (\n \n {label}\n \n )}\n {children}\n \n );\n}\n\nexport function StepLabel({ children, style }: StepLabelProps) {\n const { stepper } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useSwitch, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseSwitchOptions } from \"@truongdq01/headless\";\n\nexport interface SwitchProps extends UseSwitchOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Switch = React.memo(({ label, description, size = \"md\", ...hookOptions }: SwitchProps) => {\n const tokens = useTokens();\n const { switch: switchT } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isOn, isDisabled, toggle, accessibilityProps } = useSwitch(hookOptions);\n\n const tTrack = switchT.track[size];\n const tThumb = switchT.thumb[size];\n const thumbTravel = Math.max(0, tTrack.width - tThumb.width - tTrack.padding * 2);\n\n // Shared value 0 = off, 1 = on\n const progress = useSharedValue(isOn ? 1 : 0);\n\n React.useEffect(() => {\n const target = isOn ? 1 : 0;\n progress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isOn, reduceMotion]);\n\n const trackStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n progress.value,\n [0, 1],\n [switchT.colors.trackOff, switchT.colors.trackOn]\n ),\n }));\n\n const thumbStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: progress.value * thumbTravel }],\n }));\n\n return (\n \n {/* Track */}\n \n {/* Thumb */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, ScrollView, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Button } from \"../Button/Button\";\nimport { Icon } from \"../Icon\";\n\n/**\n * Available table size variants\n */\nexport type TableSize = \"small\" | \"medium\";\n\n/**\n * Available table cell padding options\n */\nexport type TablePadding = \"normal\" | \"checkbox\" | \"none\";\n\n/**\n * Internal table context value\n */\ninterface TableContextValue {\n size: TableSize;\n padding: TablePadding;\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext(null);\n\nfunction useTableContext() {\n return useContext(TableContext);\n}\n\n/**\n * Props for the Table component\n */\nexport interface TableProps {\n children?: React.ReactNode;\n size?: TableSize;\n padding?: TablePadding;\n stickyHeader?: boolean;\n style?: object;\n}\n\n/**\n * Root table component that provides context for child table elements.\n * Implements Material Design table patterns with accessibility support.\n *\n * @param props - Table configuration props\n * @returns Table context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * Name\n * Email\n * \n * \n * \n * {data.map(row => (\n * \n * {row.name}\n * {row.email}\n * \n * ))}\n * \n *
\n * ```\n */\nexport function Table({\n children,\n size = \"medium\",\n padding = \"normal\",\n stickyHeader = false,\n style,\n}: TableProps) {\n const ctx = useMemo(() => ({ size, padding, stickyHeader }), [size, padding, stickyHeader]);\n return (\n \n {children}\n \n );\n}\n\nexport interface TableContainerProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function TableContainer({ children, style }: TableContainerProps) {\n const { table } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n\nexport function TableHead({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport function TableBody({ children }: { children?: React.ReactNode }) {\n return {children};\n}\n\nexport function TableFooter({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport interface TableRowProps {\n children?: React.ReactNode;\n selected?: boolean;\n style?: object;\n}\n\nexport function TableRow({ children, selected = false, style }: TableRowProps) {\n const { table } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\nexport interface TableCellProps {\n children?: React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n padding?: TablePadding;\n size?: TableSize;\n variant?: \"head\" | \"body\" | \"footer\";\n style?: object;\n}\n\nexport function TableCell({\n children,\n align = \"left\",\n padding,\n size,\n variant = \"body\",\n style,\n}: TableCellProps) {\n const { table } = useComponentTokens();\n const ctx = useTableContext();\n const tokens = useTokens();\n const resolvedPadding = padding ?? ctx?.padding ?? \"normal\";\n const resolvedSize = size ?? ctx?.size ?? \"medium\";\n\n const paddingX = {\n normal: tokens.spacing[4],\n checkbox: tokens.spacing[2],\n none: 0,\n }[resolvedPadding];\n\n const paddingY = resolvedSize === \"small\" ? tokens.spacing[2] : tokens.spacing[3];\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface TablePaginationProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange?: (page: number) => void;\n onRowsPerPageChange?: (rows: number) => void;\n labelRowsPerPage?: string;\n}\n\nexport function TablePagination({\n count,\n page,\n rowsPerPage,\n onPageChange,\n labelRowsPerPage = \"Rows per page\",\n}: TablePaginationProps) {\n const tokens = useTokens();\n const totalPages = Math.max(1, Math.ceil(count / rowsPerPage));\n\n return (\n \n \n {labelRowsPerPage}: {rowsPerPage}\n \n \n \n Page {page + 1} of {totalPages}\n \n onPageChange?.(Math.max(0, page - 1))}\n startIcon={}\n >\n Prev\n \n = totalPages - 1}\n onPress={() => onPageChange?.(Math.min(totalPages - 1, page + 1))}\n endIcon={}\n >\n Next\n \n \n \n );\n}\n\nexport interface TableSortLabelProps {\n active?: boolean;\n direction?: \"asc\" | \"desc\";\n onClick?: () => void;\n children?: React.ReactNode;\n}\n\nexport function TableSortLabel({\n active = false,\n direction = \"asc\",\n onClick,\n children,\n}: TableSortLabelProps) {\n const tokens = useTokens();\n return (\n \n \n {children}\n \n {active ? (\n \n {direction === \"asc\" ? \"arrowUp\" : \"arrowDown\"}\n \n ) : (\n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTabs, useTokens } from \"@truongdq01/headless\";\n\nexport interface TabsProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n variant?: \"standard\" | \"scrollable\" | \"fullWidth\";\n centered?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface TabProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface TabsContextValue {\n getTabProps: (value: T, disabled?: boolean) => {\n onPress: () => void;\n accessibilityRole: \"tab\";\n accessibilityState: { selected: boolean; disabled: boolean };\n };\n isSelected: (value: T) => boolean;\n orientation: \"horizontal\" | \"vertical\";\n variant: \"standard\" | \"scrollable\" | \"fullWidth\";\n}\n\nconst TabsContext = createContext | null>(null);\n\nexport function Tabs({\n value,\n defaultValue,\n onChange,\n variant = \"standard\",\n centered = false,\n orientation = \"horizontal\",\n children,\n}: TabsProps) {\n const { tabs } = useComponentTokens();\n const { getTabProps, isSelected } = useTabs({ value, defaultValue, onChange });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function Tab({ value, label, icon, disabled = false }: TabProps) {\n const { tabs } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(TabsContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const { onPress, accessibilityState } = ctx.getTabProps(value, disabled);\n\n return (\n [\n {\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderBottomWidth: ctx.orientation === \"horizontal\" ? tabs.indicator.height : 0,\n borderLeftWidth: ctx.orientation === \"vertical\" ? tabs.indicator.height : 0,\n borderColor: selected ? tabs.indicator.bg : \"transparent\",\n opacity: disabled ? 0.5 : pressed ? 0.92 : 1,\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: tokens.spacing[2],\n },\n ctx.variant === \"fullWidth\" ? { flex: 1, justifyContent: \"center\" } : null,\n ]}\n >\n {icon}\n {label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { View, Text, TextInput } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"../Input/AnimatedHelperText\";\n\n/** IMPROVEMENT_PLAN Issue #1 — `inside` | `above` (label row) | `below` (between field and helper) */\nexport type TextAreaCounterPosition = \"inside\" | \"above\" | \"below\";\n\nconst FOCUS_MS = 150;\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n value?: string;\n onChangeText?: (text: string) => void;\n onBlur?: () => void;\n onFocus?: () => void;\n error?: string;\n helperText?: string;\n /**\n * Kept for API compatibility (e.g. TextField `rows`); layout height uses `maxLines` only.\n */\n minLines?: number;\n /** Visible height is fixed to this many lines; extra text scrolls inside. */\n maxLines?: number;\n /** Show character counter when `maxLength` is set */\n showCounter?: boolean;\n /**\n * `inside` = bottom-right inside the field (default);\n * `above` = same row as label (top);\n * `below` = between the field and helper/error.\n */\n counterPosition?: TextAreaCounterPosition;\n /** Maximum length (enables counter when `showCounter` is true) */\n maxLength?: number;\n disabled?: boolean;\n autoFocus?: boolean;\n accessibilityLabel?: string;\n}\n\nexport function TextArea({\n label,\n placeholder,\n value = \"\",\n onChangeText,\n onBlur,\n onFocus,\n error,\n helperText,\n minLines: _minLines = 3,\n maxLines = 8,\n maxLength,\n showCounter = true,\n counterPosition = \"inside\",\n disabled = false,\n autoFocus = false,\n accessibilityLabel,\n}: TextAreaProps) {\n const { textArea } = useComponentTokens();\n const tokens = useTokens();\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n const [isFocused, setIsFocused] = useState(false);\n\n const focusProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const animatedBorderStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const LINE_HEIGHT = tokens.fontSize.md * tokens.lineHeight.normal;\n /** Fixed outer height from `maxLines` — no content measurement (avoids layout loops). */\n const maxHeight = maxLines * LINE_HEIGHT + tokens.spacing[3] * 2;\n\n /** Vertical padding inside bordered container (must match `textArea.container`). */\n const containerPadV = tokens.spacing[2];\n\n const showCounterAbove = Boolean(maxLength && showCounter && counterPosition === \"above\");\n const showCounterInside = Boolean(maxLength && showCounter && counterPosition === \"inside\");\n const showCounterBelow = Boolean(maxLength && showCounter && counterPosition === \"below\");\n const counterPaddingBottom = showCounterInside ? tokens.spacing[5] : 0;\n\n const innerMaxH = Math.max(1, maxHeight - 2 * containerPadV);\n\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n const containerStyle = [\n textArea.container,\n { height: maxHeight },\n !isGrouped && error && textArea.state.error,\n !isGrouped && disabled && textArea.state.disabled,\n groupedChrome,\n ];\n\n const charCount = value.length;\n const nearLimit = maxLength && charCount >= maxLength * 0.9;\n const atLimit = maxLength && charCount >= maxLength;\n\n const counterColor = atLimit\n ? tokens.color.error.text\n : nearLimit\n ? tokens.color.warning.text\n : tokens.color.text.tertiary;\n\n const counterWeight = atLimit ? tokens.fontWeight.semibold : tokens.fontWeight.regular;\n\n const counterEl = maxLength && showCounter ? (\n \n {charCount}/{maxLength}\n \n ) : null;\n\n return (\n \n {/* Label row — counter when `above` */}\n {(label || showCounterAbove) && (\n \n {label ? {label} : null}\n {showCounterAbove ? counterEl : null}\n \n )}\n\n {/* Text area */}\n \n {\n setIsFocused(true);\n onFocus?.();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n />\n {showCounterInside && counterEl ? (\n \n {counterEl}\n \n ) : null}\n \n\n {/* Counter between field and helper — `below` */}\n {showCounterBelow && counterEl ? (\n \n {counterEl}\n \n ) : null}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Input, type InputProps } from \"../Input/Input\";\nimport { TextArea } from \"../TextArea/TextArea\";\nimport { Select, type SelectProps } from \"../Select/Select\";\nimport { Pressable } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface TextFieldProps extends Omit {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n multiline?: boolean;\n rows?: number;\n maxRows?: number;\n minRows?: number;\n helperText?: string;\n error?: boolean | string;\n required?: boolean;\n select?: boolean;\n selectProps?: SelectProps;\n type?: \"text\" | \"password\" | \"email\" | \"number\";\n}\n\nexport function TextField({\n variant = \"outlined\",\n multiline = false,\n rows,\n maxRows,\n minRows,\n helperText,\n error,\n required = false,\n select = false,\n selectProps,\n type = \"text\",\n label,\n ...rest\n}: TextFieldProps) {\n const { textField } = useComponentTokens();\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n \n const labelText = required && label ? `${label} *` : label;\n const errorText = typeof error === \"string\" ? error : error ? helperText : undefined;\n\n const trailingElement = isPassword ? (\n setShowPassword(!showPassword)}\n style={{ padding: 4 }}\n hitSlop={8}\n >\n \n {showPassword ? \"eyeOff\" : \"eye\"}\n \n \n ) : rest.trailingElement;\n\n if (select) {\n return (\n \n );\n }\n\n if (multiline) {\n return (\n \n );\n }\n\n return (\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TimelinePosition = \"left\" | \"right\" | \"alternate\" | \"alternate-reverse\";\n\ninterface TimelineContextValue {\n position: TimelinePosition;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nconst TimelineContext = createContext(null);\n\nfunction useTimelineContext() {\n return useContext(TimelineContext);\n}\n\nexport interface TimelineProps {\n position?: TimelinePosition;\n children?: React.ReactNode;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nexport function Timeline({ position = \"right\", itemVariant = \"filled\", children }: TimelineProps) {\n const { timeline } = useComponentTokens();\n return (\n \n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<{ position?: TimelinePosition | \"left\" | \"right\"; variant?: \"filled\" | \"outlined\" }>(child)) return child;\n if (position === \"alternate\" || position === \"alternate-reverse\") {\n const isEven = index % 2 === 0;\n const derived = position === \"alternate\" ? (isEven ? \"right\" : \"left\") : (isEven ? \"left\" : \"right\");\n return React.cloneElement(child, { position: child.props.position ?? derived, variant: itemVariant });\n }\n return React.cloneElement(child, { variant: itemVariant });\n })}\n \n );\n}\n\nexport interface TimelineItemProps {\n position?: \"left\" | \"right\";\n variant?: \"filled\" | \"outlined\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n children?: React.ReactNode;\n}\n\nexport function TimelineItem({ position, variant = \"filled\", status = \"pending\", children }: TimelineItemProps) {\n const ctx = useTimelineContext();\n const resolved = position ?? (ctx?.position === \"left\" || ctx?.position === \"right\" ? ctx.position : \"right\");\n\n return (\n \n \n {resolved === \"right\" ? extractOpposite(children) : extractContent(children)}\n \n \n \n {resolved === \"right\" ? extractContent(children) : extractOpposite(children)}\n \n \n );\n}\n\nfunction extractChildrenByType(children: React.ReactNode, type: any) {\n const items: React.ReactNode[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === type) {\n const element = child as React.ReactElement;\n items.push(element.props.children);\n }\n });\n return items.length > 0 ? items : null;\n}\n\nfunction extractSeparator(children: React.ReactNode) {\n return extractChildrenByType(children, TimelineSeparator);\n}\n\nfunction extractContent(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nfunction extractOpposite(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineOppositeContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nexport interface TimelineSeparatorProps {\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n variant?: \"filled\" | \"outlined\";\n children?: React.ReactNode;\n}\n\nexport function TimelineSeparator({ status = \"pending\", variant = \"filled\", children }: TimelineSeparatorProps) {\n const { timeline } = useComponentTokens();\n \n const connectorColor = status === \"completed\" ? timeline.dot.completed.borderColor : timeline.connector.color;\n\n return (\n \n {children || (\n <>\n \n \n \n )}\n \n );\n}\n\nexport interface TimelineDotProps {\n variant?: \"filled\" | \"outlined\";\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\" | \"inherit\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n size?: number;\n}\n\nexport function TimelineDot({ variant = \"filled\", color = \"primary\", status, size }: TimelineDotProps) {\n const { timeline } = useComponentTokens();\n const tokens = useTokens();\n \n const resolvedStatus = status || (color === \"success\" ? \"completed\" : color === \"error\" ? \"error\" : color === \"primary\" ? \"active\" : \"pending\");\n const statusTokens = (timeline.dot as any)[resolvedStatus] || timeline.dot.pending;\n \n const dotSize = size || timeline.dot.size || 16;\n\n return (\n \n );\n}\n\nexport interface TimelineConnectorProps {\n color?: string;\n width?: number;\n}\n\nexport function TimelineConnector({ color, width }: TimelineConnectorProps) {\n const { timeline } = useComponentTokens();\n const resolvedWidth = width || timeline.connector.width;\n return ;\n}\n\nexport interface TimelineContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineContent({ children, align = \"left\" }: TimelineContentProps) {\n return (\n \n {children}\n \n );\n}\n\nexport interface TimelineOppositeContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineOppositeContent({ children, align = \"right\" }: TimelineOppositeContentProps) {\n return (\n \n {typeof children === \"string\" ? {children} : children}\n \n );\n}\n","import React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, { LinearTransition as RawLinearTransition } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useToast, dismissToast } from \"@truongdq01/headless\";\nimport type { ToastPosition } from \"@truongdq01/headless\";\nimport { ToastItem } from \"./ToastItem\";\n\n// ─── Props ────────────────────────────────────────────────────────\n\nexport interface ToastContainerProps {\n position?: ToastPosition;\n /** Horizontal offset from screen edges */\n horizontalPadding?: number;\n}\n\nconst layoutTransition =\n typeof RawLinearTransition?.duration === \"function\"\n ? RawLinearTransition.duration(280)\n : undefined;\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Container component for displaying toast notifications.\n * Manages positioning and animations for multiple toasts.\n *\n * @param props - Toast container configuration\n * @returns Animated toast container component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function ToastContainer({\n position = \"bottom\",\n horizontalPadding = 16,\n}: ToastContainerProps) {\n const { toasts } = useToast();\n const insets = useSafeAreaInsets();\n\n const positionStyle =\n position === \"top\"\n ? { top: insets.top + 8, left: horizontalPadding, right: horizontalPadding }\n : { bottom: insets.bottom + 8, left: horizontalPadding, right: horizontalPadding };\n\n if (toasts.length === 0) return null;\n\n return (\n \n {toasts.map((item) => (\n \n ))}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n zIndex: 9999,\n gap: 8,\n },\n});","import React, { useEffect } from \"react\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n FadeOutUp,\n FadeInDown,\n FadeOutDown,\n SlideInUp,\n SlideInDown,\n Easing,\n} from \"react-native-reanimated\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { ToastItem as ToastItemType, ToastPosition } from \"@truongdq01/headless\";\n\nconst VARIANT_ICONS: Record = {\n success: \"checkCircle\",\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n};\n\nexport interface ToastItemProps {\n item: ToastItemType;\n position: ToastPosition;\n onDismiss: (id: string) => void;\n}\n\nexport function ToastItem({ item, position, onDismiss }: ToastItemProps) {\n const { toast } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n // Progress bar for auto-dismiss\n const progress = useSharedValue(1);\n\n useEffect(() => {\n if (item.persistent) return;\n progress.value = withTiming(0, { duration: item.duration }, (finished) => {\n if (finished) runOnJS(onDismiss)(item.id);\n });\n return () => {\n progress.value = 1;\n };\n }, [item.id, item.duration, item.persistent]);\n\n const progressStyle = useAnimatedStyle(() => ({\n width: `${progress.value * 100}%`,\n }));\n\n // Pick variant colors\n const variantMap = {\n default: { iconColor: tokens.color.text.tertiary, progressColor: tokens.color.border.strong },\n success: { iconColor: tokens.color.success.icon, progressColor: tokens.color.success.icon },\n warning: { iconColor: tokens.color.warning.icon, progressColor: tokens.color.warning.icon },\n error: { iconColor: tokens.color.error.icon, progressColor: tokens.color.error.icon },\n info: { iconColor: tokens.color.info.icon, progressColor: tokens.color.info.icon },\n } as const;\n\n const v = variantMap[item.variant] || variantMap.default;\n\n const entering = reduceMotion\n ? undefined\n : position === \"top\" ? SlideInDown.duration(280).easing(Easing.out(Easing.cubic)) : SlideInUp.duration(280).easing(Easing.out(Easing.cubic));\n const exiting = reduceMotion\n ? undefined\n : position === \"top\" ? FadeOutUp.duration(200) : FadeOutDown.duration(200);\n\n return (\n \n {/* Icon */}\n {item.icon ? (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(item.icon)\n ? React.cloneElement(item.icon, {\n size: item.icon.props.size ?? 20,\n color: item.icon.props.color ?? \"#FFFFFF\",\n })\n : item.icon}\n \n ) : item.variant !== \"default\" && (\n \n )}\n\n {/* Message */}\n \n {item.message}\n \n\n {/* Action button */}\n {item.action && (\n {\n item.action!.onPress();\n onDismiss(item.id);\n }}\n style={{ paddingLeft: 4 }}\n >\n \n {item.action.label}\n \n \n )}\n\n {/* Dismiss button */}\n onDismiss(item.id)}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n >\n \n \n\n {/* Progress bar */}\n {!item.persistent && (\n \n \n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useComponentTokens, usePressable, useTokens, useToggleGroup } from \"@truongdq01/headless\";\n\nexport interface ToggleButtonGroupProps {\n value?: T | T[];\n defaultValue?: T | T[];\n exclusive?: boolean;\n onChange?: (value: T | T[] | undefined) => void;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface ToggleButtonProps {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\ninterface ToggleContextValue {\n isSelected: (value: T) => boolean;\n toggle: (value: T) => void;\n size: \"sm\" | \"md\" | \"lg\";\n disabled: boolean;\n}\n\nconst ToggleContext = createContext | null>(null);\n\nexport function ToggleButtonGroup({\n value,\n defaultValue,\n exclusive = false,\n onChange,\n orientation = \"horizontal\",\n size = \"md\",\n disabled = false,\n children,\n}: ToggleButtonGroupProps) {\n const { isSelected, toggle } = useToggleGroup({\n value,\n defaultValue,\n exclusive,\n disabled,\n onChange,\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function ToggleButton({ value, disabled = false, children }: ToggleButtonProps) {\n const { toggleButton } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(ToggleContext as React.Context | null>);\n\n const selected = ctx?.isSelected(value) ?? false;\n const isDisabled = disabled || ctx?.disabled;\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: () => ctx?.toggle(value),\n disabled: isDisabled,\n feedbackMode: \"scaleSubtle\",\n accessibilityRole: \"button\",\n });\n\n const size = ctx?.size ?? \"md\";\n const sizeMap = {\n sm: { height: 32, paddingHorizontal: 12, fontSize: tokens.fontSize.sm },\n md: { height: 40, paddingHorizontal: 16, fontSize: tokens.fontSize.md },\n lg: { height: 48, paddingHorizontal: 20, fontSize: tokens.fontSize.lg },\n };\n\n const s = sizeMap[size];\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type TooltipPlacement =\n | \"top\" | \"top-start\" | \"top-end\"\n | \"bottom\" | \"bottom-start\" | \"bottom-end\"\n | \"left\" | \"left-start\" | \"left-end\"\n | \"right\" | \"right-start\" | \"right-end\";\n\nexport interface TooltipProps {\n title: React.ReactNode;\n children: React.ReactElement;\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n placement?: TooltipPlacement;\n}\n\ninterface TriggerRect {\n pageX: number;\n pageY: number;\n width: number;\n height: number;\n}\n\nexport function Tooltip({\n title,\n children,\n open: controlledOpen,\n onOpen,\n onClose,\n placement = \"top\",\n}: TooltipProps) {\n const { tooltip } = useComponentTokens();\n const tokens = useTokens();\n const [internalOpen, setInternalOpen] = useState(false);\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [triggerRect, setTriggerRect] = useState(null);\n const [tooltipSize, setTooltipSize] = useState({ width: 0, height: 0 });\n const triggerRef = React.useRef(null);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n // Simple fade animation\n const opacity = useSharedValue(0);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 150 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 100 }, () => {\n runOnJS(onDone)();\n });\n }, []);\n\n const handleOpen = () => {\n triggerRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setTriggerRect({ pageX, pageY, width: w, height: h });\n setInternalOpen(true);\n onOpen?.();\n requestAnimationFrame(() => animateIn());\n });\n };\n\n const handleClose = () => {\n animateOut(() => {\n setInternalOpen(false);\n setTriggerRect(null);\n onClose?.();\n });\n };\n\n // Compute position\n const GAP = 8;\n const PADDING = 12;\n const tx = triggerRect?.pageX ?? 0;\n const ty = triggerRect?.pageY ?? 0;\n const tw = triggerRect?.width ?? 0;\n const th = triggerRect?.height ?? 0;\n const tlw = tooltipSize.width || 200;\n const tlh = tooltipSize.height || 40;\n \n let top = ty - tlh - GAP;\n let left = tx + tw / 2 - tlw / 2;\n\n // Simple placement logic\n if (placement.includes(\"bottom\")) {\n top = ty + th + GAP;\n }\n if (placement.includes(\"left\")) {\n left = tx - tlw - GAP;\n }\n if (placement.includes(\"right\")) {\n left = tx + tw + GAP;\n }\n if (placement.includes(\"top-left\") || placement.includes(\"bottom-left\")) {\n left = tx;\n }\n if (placement.includes(\"top-right\") || placement.includes(\"bottom-right\")) {\n left = tx + tw - tlw;\n }\n\n // Clamp to screen bounds\n const safeTop = Math.max(PADDING, Math.min(top, windowHeight - tlh - PADDING));\n const safeLeft = Math.max(PADDING, Math.min(left, windowWidth - tlw - PADDING));\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n <>\n \n {children}\n \n\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setTooltipSize({ width, height });\n }}\n onStartShouldSetResponder={() => true}\n style={[\n tooltip.container,\n {\n position: \"absolute\",\n top: safeTop,\n left: safeLeft,\n },\n animStyle,\n ] as any}\n >\n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle, type AccessibilityRole } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TypographyVariant =\n | \"display\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\"\n | \"label\"\n | \"code\"\n | \"inherit\";\n\n/** Semantic role hint — RN maps to `accessibilityRole` / `accessibilityLevel` (IMPROVEMENT_PLAN Issue #2) */\nexport type TypographyAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport interface TypographyProps {\n children?: React.ReactNode;\n variant?: TypographyVariant;\n /** Maps to accessibility props (RN has no DOM elements) */\n as?: TypographyAs;\n align?: \"left\" | \"right\" | \"center\" | \"justify\" | \"inherit\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"disabled\" | \"brand\" | \"error\" | string;\n gutterBottom?: boolean;\n noWrap?: boolean;\n paragraph?: boolean;\n display?: \"none\" | \"flex\" | \"contents\" | \"block\" | \"inline\" | \"inline-flex\";\n style?: TextStyle | TextStyle[];\n}\n\nfunction accessibilityForAs(as: TypographyAs | undefined): { accessibilityRole?: AccessibilityRole } {\n if (!as || as === \"span\") return {};\n if (as === \"p\" || as === \"label\") {\n return { accessibilityRole: \"text\" };\n }\n if (as === \"h1\" || as === \"h2\" || as === \"h3\" || as === \"h4\" || as === \"h5\" || as === \"h6\") {\n return { accessibilityRole: \"header\" };\n }\n return {};\n}\n\nfunction TypographyInner({\n children,\n variant = \"body1\",\n as,\n align = \"left\",\n color,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n display,\n style,\n}: TypographyProps) {\n const { typography } = useComponentTokens();\n const tokens = useTokens();\n\n const variantStyle =\n variant === \"inherit\" ? {} : typography.variants[variant as keyof typeof typography.variants] || {};\n\n const presetColors = typography.colors;\n const resolvedColor =\n color != null &&\n color !== \"\" &&\n typeof color === \"string\" &&\n Object.prototype.hasOwnProperty.call(presetColors, color)\n ? presetColors[color as keyof typeof presetColors]\n : color || presetColors.primary;\n\n const resolvedDisplay =\n display === \"block\" || display === \"inline\" || display === \"inline-flex\"\n ? \"flex\"\n : display;\n\n const sans = tokens.fontFamily?.sans;\n const sansFont =\n sans != null && sans !== \"\" ? { fontFamily: sans } : null;\n\n const skipSans = variant === \"code\";\n\n const a11y = accessibilityForAs(as);\n\n return (\n \n {children}\n \n );\n}\n\nexport const Typography = React.memo(TypographyInner);\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramTabBarProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n children?: React.ReactNode;\n glassEffect?: boolean;\n}\n\nexport interface TelegramTabProps {\n value: T;\n label: string;\n icon: React.ReactNode;\n activeIcon?: React.ReactNode;\n badge?: number | string | boolean;\n disabled?: boolean;\n}\n\ninterface TabBarContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T, disabled?: boolean) => { onPress?: () => void };\n}\n\nconst TabBarContext = createContext | null>(null);\n\n// ─── Telegram Tab Bar ─────────────────────────────────────────────\n\nexport function TelegramTabBar({\n value: controlledValue,\n defaultValue,\n onChange,\n children,\n glassEffect = true,\n}: TelegramTabBarProps) {\n const tokens = useTokens();\n const { bottomNavigation } = useComponentTokens();\n\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const isSelected = (itemValue: T) => value === itemValue;\n\n const getItemProps = (itemValue: T, disabled?: boolean) => ({\n onPress: disabled\n ? undefined\n : () => {\n if (controlledValue === undefined) setInternalValue(itemValue);\n onChange?.(itemValue);\n },\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\n// ─── Telegram Tab Item ────────────────────────────────────────────\n\nexport function TelegramTab({\n value,\n label,\n icon,\n activeIcon,\n badge,\n disabled = false,\n}: TelegramTabProps) {\n const tokens = useTokens();\n const ctx = useContext(TabBarContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const progress = useSharedValue(selected ? 1 : 0);\n\n React.useEffect(() => {\n progress.value = withSpring(selected ? 1 : 0, {\n damping: 22,\n stiffness: 300,\n });\n }, [selected]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ scale: interpolate(progress.value, [0, 1], [1, 1.15]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const labelStyle = useAnimatedStyle(() => ({\n color: interpolateColor(\n progress.value,\n [0, 1],\n [tokens.color.text.secondary, tokens.color.brand.default]\n ),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0.95, 1]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const dotStyle = useAnimatedStyle(() => ({\n opacity: interpolate(progress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0, 1]) }],\n }));\n\n const itemProps = ctx.getItemProps(value, disabled);\n\n return (\n [\n styles.tabItem,\n pressed && { opacity: 0.85 },\n disabled && { opacity: 0.3 },\n ]}\n >\n \n \n {selected && activeIcon ? activeIcon : icon}\n \n\n {badge !== undefined && badge !== false && (\n \n )}\n \n\n \n {label}\n \n\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n paddingHorizontal: 8,\n paddingVertical: 6,\n paddingBottom: 6,\n minHeight: 56,\n },\n tabItem: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 4,\n paddingHorizontal: 8,\n minHeight: 48,\n },\n iconContainer: {\n position: \"relative\",\n marginBottom: 2,\n },\n badge: {\n position: \"absolute\",\n top: -4,\n right: -12,\n },\n tabLabel: {\n fontSize: 11,\n fontWeight: \"500\",\n lineHeight: 14,\n marginTop: 2,\n },\n activeDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n marginTop: 4,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Avatar } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface ChatListItemProps {\n /** Optional unique id */\n id?: string;\n /** Avatar source or initials */\n avatar?: {\n src?: string;\n initials?: string;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n };\n /** Chat name / contact name */\n name: string;\n /** Message preview text */\n preview?: string;\n /** Message timestamp */\n time?: string;\n /** Unread count */\n unread?: number;\n /** Is message read */\n read?: boolean;\n /** Is message sent by current user */\n outgoing?: boolean;\n /** Is chat muted */\n muted?: boolean;\n /** Is chat pinned */\n pinned?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Disable interaction */\n disabled?: boolean;\n /** Press callback */\n onPress?: () => void;\n /** Long press callback */\n onLongPress?: () => void;\n /** Trailing custom element */\n trailingElement?: React.ReactNode;\n}\n\n// ─── Chat List Item ───────────────────────────────────────────────\n\nexport function ChatListItem({\n avatar,\n name,\n preview,\n time,\n unread,\n read = true,\n outgoing = true,\n muted = false,\n pinned = false,\n selected = false,\n disabled = false,\n onPress,\n onLongPress,\n trailingElement,\n}: ChatListItemProps) {\n const tokens = useTokens();\n const { list } = useComponentTokens();\n\n const pressed = useSharedValue(0);\n\n const containerStyle = useAnimatedStyle(() => ({\n backgroundColor: pressed.value === 1\n ? tokens.color.surface.hover\n : selected\n ? tokens.color.brand.subtle\n : \"transparent\",\n }));\n\n return (\n { pressed.value = withSpring(1, { damping: 20 }); }}\n onPressOut={() => { pressed.value = withSpring(0, { damping: 20 }); }}\n >\n \n {/* Avatar */}\n {avatar && (\n \n )}\n\n {/* Content */}\n \n \n \n {pinned && (\n 📌\n )}\n \n {name}\n \n {muted && (\n 🔕\n )}\n \n\n {time && (\n 0 ? { color: tokens.color.brand.default, fontWeight: \"600\" as const } : undefined,\n ]}\n >\n {time}\n \n )}\n \n\n \n \n {outgoing && (\n \n {read ? \"✓✓\" : \"✓\"}\n \n )}\n {preview && (\n \n {preview}\n \n )}\n \n\n \n {unread && unread > 0 && (\n \n )}\n {trailingElement}\n \n \n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 10,\n minHeight: 72,\n },\n avatar: {\n marginRight: 12,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n headerRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 4,\n },\n nameContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n name: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 20,\n flex: 1,\n },\n iconPin: {\n marginRight: 4,\n fontSize: 14,\n },\n iconMute: {\n marginLeft: 4,\n fontSize: 14,\n },\n time: {\n fontSize: 13,\n lineHeight: 16,\n textAlign: \"right\",\n },\n previewRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n previewContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n checkmark: {\n fontSize: 12,\n marginRight: 4,\n },\n preview: {\n fontSize: 14,\n lineHeight: 18,\n flex: 1,\n },\n rightContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n});\n\n\n","import React, { useRef, useState } from \"react\";\nimport { View, TextInput as RNTextInput, Pressable, StyleSheet, type TextInputProps, Text } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withTiming, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface MessageInputProps extends Omit {\n /** Left action buttons (attach, sticker, etc.) */\n leftActions?: React.ReactNode;\n /** Right action buttons (send, voice, etc.) */\n rightActions?: React.ReactNode;\n /** Show attachment button */\n showAttach?: boolean;\n /** Show sticker button */\n showSticker?: boolean;\n /** Show send button */\n showSend?: boolean;\n /** Callback when send button pressed */\n onSend?: (text: string) => void;\n /** Callback when attachment button pressed */\n onAttach?: () => void;\n /** Callback when sticker button pressed */\n onSticker?: () => void;\n /** Custom send button */\n sendButton?: React.ReactNode;\n /** Glass effect background */\n glassEffect?: boolean;\n /** Disable input */\n disabled?: boolean;\n}\n\n// ─── Message Input ────────────────────────────────────────────────\n\nexport function MessageInput({\n leftActions,\n rightActions,\n showAttach = true,\n showSticker = true,\n showSend = true,\n onSend,\n onAttach,\n onSticker,\n sendButton,\n glassEffect = true,\n disabled = false,\n value,\n onChangeText,\n placeholder = \"Type a message...\",\n ...rest\n}: MessageInputProps) {\n const tokens = useTokens();\n const { input } = useComponentTokens();\n const { size: iconSize } = useIconStyle(\"input\");\n const inputRef = useRef(null);\n const [focused, setFocused] = useState(false);\n const [text, setText] = useState(value ?? \"\");\n\n const height = useSharedValue(48);\n const attachVisible = useSharedValue(1);\n\n const hasText = text.length > 0;\n\n React.useEffect(() => {\n attachVisible.value = withTiming(hasText ? 0 : 1, { duration: 180 });\n }, [hasText]);\n\n const inputStyle = useAnimatedStyle(() => ({\n minHeight: height.value,\n }));\n\n const attachStyle = useAnimatedStyle(() => ({\n opacity: attachVisible.value,\n transform: [{ scale: attachVisible.value }],\n width: attachVisible.value > 0.5 ? 40 : 0,\n }));\n\n const handleSend = () => {\n if (text.trim() && onSend) {\n onSend(text.trim());\n setText(\"\");\n }\n };\n\n const handleChangeText = (newText: string) => {\n setText(newText);\n onChangeText?.(newText);\n };\n\n return (\n \n {showAttach && (\n \n \n \n 📎\n \n \n \n )}\n\n {leftActions}\n\n \n setFocused(true)}\n onBlur={() => setFocused(false)}\n multiline\n textAlignVertical=\"center\"\n {...rest}\n />\n\n {showSticker && (\n \n 😊\n \n )}\n \n\n {rightActions}\n\n {showSend && (\n sendButton ?? (\n \n \n {hasText ? \"➤\" : \"🎤\"}\n \n \n )\n )}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n paddingHorizontal: 8,\n paddingVertical: 8,\n minHeight: 56,\n },\n actionButton: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n iconButton: {\n width: 40,\n height: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputWrapper: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n marginHorizontal: 4,\n borderRadius: 20,\n borderWidth: 1,\n borderColor: \"rgba(0,0,0,0.1)\",\n backgroundColor: \"rgba(0,0,0,0.03)\",\n overflow: \"hidden\",\n minHeight: 40,\n },\n input: {\n flex: 1,\n fontSize: 16,\n paddingHorizontal: 12,\n paddingVertical: 10,\n paddingRight: 40,\n maxHeight: 120,\n },\n stickerButton: {\n position: \"absolute\",\n right: 4,\n bottom: 4,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sendButton: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: 4,\n },\n icon: {\n fontSize: 20,\n },\n sendIcon: {\n fontSize: 18,\n fontWeight: \"600\",\n color: \"rgba(0,0,0,0.3)\",\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n// @ts-ignore expo-blur is optional peer dependency\nimport { BlurView } from \"expo-blur\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramPopupProps {\n /** If true, the popup is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Title for popup */\n title?: string;\n /** Action buttons */\n actions?: React.ReactNode;\n /** Callback on close */\n onClose?: () => void;\n /** Duration in ms before auto-hiding */\n autoHideDuration?: number | null;\n /** Position on screen */\n position?: \"top\" | \"bottom\" | \"center\";\n /** Blur background */\n blur?: boolean;\n /** Icon */\n icon?: React.ReactNode;\n /** Variant for different types */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n}\n\n// ─── Telegram Popup ───────────────────────────────────────────────\n\nexport function TelegramPopup({\n open,\n message,\n title,\n actions,\n onClose,\n autoHideDuration = 3000,\n position = \"top\",\n blur = true,\n icon,\n variant = \"default\",\n}: TelegramPopupProps) {\n const tokens = useTokens();\n const { height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n\n const translateY = useSharedValue(position === \"bottom\" ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = useCallback(() => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n translateY.value = withTiming(position === \"bottom\" ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, [position]);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = position === \"bottom\" ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const positionStyle =\n position === \"top\"\n ? { top: 48, alignSelf: \"center\" as const }\n : position === \"bottom\"\n ? { bottom: 96, alignSelf: \"center\" as const }\n : { alignSelf: \"center\" as const, top: windowHeight / 2 - 50 };\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as const,\n }));\n\n const variantColors = {\n default: tokens.color.bg.default,\n success: tokens.color.success.bg,\n error: tokens.color.error.bg,\n warning: tokens.color.warning.bg,\n info: tokens.color.info.bg,\n };\n\n if (!mounted && !open) return null;\n\n return (\n \n \n {blur && (\n \n )}\n \n \n {icon && {icon}}\n \n {title && (\n {title}\n )}\n {typeof message === \"string\" ? (\n \n {message}\n \n ) : (\n message\n )}\n \n \n {actions && {actions}}\n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.05)\",\n },\n popup: {\n position: \"absolute\",\n marginHorizontal: 16,\n minWidth: 280,\n maxWidth: 340,\n padding: 16,\n elevation: 6,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n iconContainer: {\n marginRight: 12,\n },\n textContent: {\n flex: 1,\n },\n title: {\n fontSize: 15,\n fontWeight: \"600\",\n lineHeight: 20,\n marginBottom: 2,\n },\n message: {\n fontSize: 14,\n lineHeight: 18,\n },\n actions: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginTop: 12,\n gap: 8,\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramContextMenuItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramContextMenuProps {\n open: boolean;\n onClose: () => void;\n items: TelegramContextMenuItem[];\n anchor?: { x: number; y: number; width: number; height: number } | null;\n}\n\n// ─── Telegram Context Menu ────────────────────────────────────────\n\nexport function TelegramContextMenu({\n open,\n onClose,\n items,\n anchor,\n}: TelegramContextMenuProps) {\n const tokens = useTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n const [menuSize, setMenuSize] = React.useState({ width: 200, height: 0 });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 180 });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, []);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n // Position calculation\n const GAP = 8;\n let top = 100;\n let left = windowWidth - 220;\n\n if (anchor) {\n top = anchor.y + anchor.height + GAP;\n left = anchor.x;\n\n if (left + menuSize.width > windowWidth - 16) {\n left = windowWidth - menuSize.width - 16;\n }\n if (top + menuSize.height > windowHeight - 16) {\n top = anchor.y - menuSize.height - GAP;\n }\n top = Math.max(16, top);\n left = Math.max(16, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n setMenuSize({\n width: e.nativeEvent.layout.width,\n height: e.nativeEvent.layout.height,\n });\n }}\n style={[\n styles.menu,\n animStyle,\n {\n position: \"absolute\",\n top,\n left,\n backgroundColor: tokens.color.surface.default,\n borderRadius: 14,\n shadowColor: tokens.color.bg.inverse,\n shadowOffset: { width: 0, height: 6 },\n shadowOpacity: 0.2,\n shadowRadius: 18,\n elevation: 8,\n },\n ]}\n >\n {items.map((item, index) => (\n {\n item.onPress?.();\n onClose();\n }}\n disabled={item.disabled}\n style={({ pressed }) => [\n styles.item,\n index === 0 && { borderTopLeftRadius: 14, borderTopRightRadius: 14 },\n index === items.length - 1 && { borderBottomLeftRadius: 14, borderBottomRightRadius: 14 },\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n ]}\n >\n {item.icon && {item.icon}}\n \n {item.label}\n \n \n ))}\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.1)\",\n },\n menu: {\n minWidth: 180,\n overflow: \"hidden\",\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 48,\n },\n itemIcon: {\n marginRight: 12,\n width: 20,\n alignItems: \"center\",\n },\n itemLabel: {\n fontSize: 15,\n fontWeight: \"500\",\n lineHeight: 20,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { List, ListItem, ListItemText, ListItemIcon } from \"../List\";\nimport { Divider } from \"../Divider\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramSettingsItem {\n id: string;\n label: string;\n subtitle?: string;\n icon?: React.ReactNode;\n value?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramSettingsSection {\n title?: string;\n items: TelegramSettingsItem[];\n}\n\nexport interface TelegramSettingsMenuProps {\n sections: TelegramSettingsSection[];\n variant?: \"default\" | \"grouped\";\n}\n\n// ─── Telegram Settings Menu ───────────────────────────────────────\n\nexport function TelegramSettingsMenu({ sections, variant = \"grouped\" }: TelegramSettingsMenuProps) {\n const tokens = useTokens();\n\n return (\n \n {sections.map((section, sectionIndex) => (\n \n {section.title && (\n \n \n {section.title}\n \n \n )}\n \n {section.items.map((item, itemIndex) => (\n [\n styles.item,\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n itemIndex !== section.items.length - 1 && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: tokens.color.border.subtle,\n marginLeft: 56,\n },\n ]}\n >\n {item.icon && (\n \n {item.icon}\n \n )}\n \n \n {item.label}\n \n {item.subtitle && (\n \n {item.subtitle}\n \n )}\n \n \n {item.value}\n \n \n \n ))}\n \n \n ))}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 16,\n },\n sectionHeader: {\n paddingHorizontal: 32,\n paddingVertical: 8,\n },\n sectionTitle: {\n fontSize: 13,\n fontWeight: \"600\",\n lineHeight: 16,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n section: {\n marginBottom: 24,\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 52,\n },\n itemIcon: {\n width: 28,\n marginRight: 12,\n alignItems: \"center\",\n },\n itemContent: {\n flex: 1,\n },\n itemLabel: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 22,\n },\n itemSubtitle: {\n fontSize: 13,\n lineHeight: 16,\n marginTop: 2,\n },\n itemRight: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n chevron: {\n fontSize: 20,\n fontWeight: \"400\",\n },\n});\n\n\n"],"mappings":"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","names":["Box","Grid","List","Menu","Modal","Pressable","import_headless","import_react","import_react_native","import_headless","React","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","Animated","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_react","import_react_native","import_react_native_reanimated","import_headless","import_react","React","import_react","import_react_native","import_react_native_reanimated","React","Animated","Animated","RNTextInput","React","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","BottomSheet","React","Animated","styles","import_react","import_react_native","import_headless","Box","React","import_react","import_react_native","import_headless","React","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_react_native","import_headless","React","Animated","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_react_native","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_react_native_safe_area_context","import_headless","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","React","DateTimePicker","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","React","Animated","styles","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","import_react","import_react_native","import_headless","React","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_tokens","React","styles","import_react","import_react_native","import_headless","Grid","React","import_react","import_react_native","import_react_native_reanimated","import_headless","Animated","RNImage","React","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","clamp","styles","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","List","React","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Menu","Animated","import_react","import_react_native","import_headless","Modal","React","RNModal","styles","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","Pressable","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_tokens","import_headless","clamp","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","SkeletonText","SkeletonCard","SkeletonListItem","SkeletonProfile","SkeletonMedia","SkeletonForm","SkeletonGrid","SkeletonTable","_","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","AnimatedTextInput","Animated","React","currentValue","fillAnimatedStyle","trackAnimatedStyle","onTrackLayout","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","FOCUS_MS","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_safe_area_context","import_headless","import_react","import_react_native_reanimated","import_react_native","import_headless","React","Animated","RawLinearTransition","React","Animated","styles","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","styles","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","RNTextInput","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_headless","React","styles","import_react_native"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/components/Accordion/Accordion.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/Alert.tsx","../src/components/AnimatedList/AnimatedList.tsx","../src/components/AppBar/AppBar.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Input/Input.tsx","../src/components/FormField/FormGroupContext.tsx","../src/components/Input/AnimatedHelperText.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/Box/Box.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/CircularProgress/CircularProgress.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/CalendarGrid.tsx","../src/components/DatePicker/TimePickerWheels.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Divider/Divider.tsx","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Fab/Fab.tsx","../src/components/Form/Form.tsx","../src/components/FormControl/FormControl.tsx","../src/components/FormField/FormField.tsx","../src/components/Input/PasswordInput.tsx","../src/components/GlassCard/GlassCard.tsx","../src/components/Gradient/Gradient.tsx","../src/components/Grid/Grid.tsx","../src/components/Image/Image.tsx","../src/components/ImageList/ImageList.tsx","../src/components/LinearProgress/LinearProgress.tsx","../src/components/Link/Link.tsx","../src/components/List/List.tsx","../src/components/Marquee/Marquee.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/OTPInput/OTPInput.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Paper/Paper.tsx","../src/components/Popover/Popover.tsx","../src/components/Popper/Popper.tsx","../src/components/Pressable/Pressable.tsx","../src/components/Radio/Radio.tsx","../src/components/Rating/Rating.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Select/Select.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Slider/Slider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/SpeedDial/SpeedDial.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastItem.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Typography/Typography.tsx","../src/components/TelegramTabBar/TelegramTabBar.tsx","../src/components/ChatListItem/ChatListItem.tsx","../src/components/MessageInput/MessageInput.tsx","../src/components/TelegramPopup/TelegramPopup.tsx","../src/components/TelegramContextMenu/TelegramContextMenu.tsx","../src/components/TelegramSettingsMenu/TelegramSettingsMenu.tsx"],"sourcesContent":["export { ThemeProvider, useTheme, useTokens, useComponentTokens, useIsDark, useActiveBrand, useBrandSwitch, createTheme } from \"@truongdq01/headless\";\nexport type { Theme, ThemeOverride, ThemeProviderProps, Brand } from \"@truongdq01/headless\";\n\nexport * from \"./components/Accordion\";\nexport * from \"./components/Alert\";\nexport * from \"./components/AnimatedList\";\nexport * from \"./components/AppBar\";\nexport * from \"./components/Autocomplete\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Badge\";\nexport * from \"./components/BottomNavigation\";\nexport * from \"./components/BottomSheet\";\nexport * from \"./components/Box\";\nexport * from \"./components/Breadcrumbs\";\nexport * from \"./components/Button\";\nexport * from \"./components/ButtonGroup\";\nexport * from \"./components/Card\";\nexport * from \"./components/Carousel\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Chip\";\nexport * from \"./components/CircularProgress\";\nexport * from \"./components/DatePicker\";\nexport * from \"./components/Dialog\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/EmptyState\";\nexport * from \"./components/Fab\";\nexport * from \"./components/Form\";\nexport * from \"./components/FormControl\";\nexport * from \"./components/FormField\";\nexport * from \"./components/GlassCard\";\nexport * from \"./components/Gradient\";\nexport * from \"./components/Grid\";\nexport * from \"./components/Icon\";\nexport * from \"./components/Image\";\nexport * from \"./components/ImageList\";\nexport * from \"./components/Input\";\nexport * from \"./components/LinearProgress\";\nexport * from \"./components/Link\";\nexport * from \"./components/List\";\nexport * from \"./components/Marquee\";\nexport * from \"./components/Menu\";\nexport * from \"./components/Modal\";\nexport * from \"./components/OTPInput\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Paper\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Popper\";\nexport * from \"./components/Pressable\";\nexport * from \"./components/Radio\";\nexport * from \"./components/Rating\";\nexport * from \"./components/SegmentedControl\";\nexport * from \"./components/Select\";\nexport * from \"./components/Skeleton\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Snackbar\";\nexport * from \"./components/SpeedDial\";\nexport * from \"./components/Stack\";\nexport * from \"./components/Stepper\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Table\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/TextArea\";\nexport * from \"./components/TextField\";\nexport * from \"./components/Timeline\";\nexport * from \"./components/Toast\";\nexport * from \"./components/ToggleButton\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Typography\";\nexport * from \"./components/TelegramTabBar\";\nexport * from \"./components/ChatListItem\";\nexport * from \"./components/MessageInput\";\nexport * from \"./components/TelegramPopup\";\nexport * from \"./components/TelegramContextMenu\";\nexport * from \"./components/TelegramSettingsMenu\";\n\n// Styles\nexport { StyleSheet } from \"react-native\";\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated, {\n useSharedValue,\n withTiming,\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n} from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useDisclosure, useTokens, useComponentTokens, usePressable, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface AccordionProps {\n expanded?: boolean;\n defaultExpanded?: boolean;\n disabled?: boolean;\n onChange?: (expanded: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport interface AccordionSummaryProps {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n}\n\nexport interface AccordionDetailsProps {\n children?: React.ReactNode;\n}\n\nexport interface AccordionActionsProps {\n children?: React.ReactNode;\n}\n\ninterface AccordionContextValue {\n expanded: boolean;\n toggle: () => void;\n disabled: boolean;\n}\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n expanded: controlledExpanded,\n defaultExpanded = false,\n disabled = false,\n onChange,\n children,\n}: AccordionProps) {\n const disclosure = useDisclosure({\n isOpen: controlledExpanded,\n defaultOpen: defaultExpanded,\n onOpen: () => onChange?.(true),\n onClose: () => onChange?.(false),\n });\n\n const { accordion } = useComponentTokens();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function AccordionSummary({ children, expandIcon }: AccordionSummaryProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx) return null;\n\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress: ctx.toggle,\n disabled: ctx.disabled,\n feedbackMode: \"opacity\",\n });\n\n const reduceMotion = useReduceMotionEnabled();\n const rotation = useSharedValue(ctx.expanded ? 1 : 0);\n React.useEffect(() => {\n const target = ctx.expanded ? 1 : 0;\n rotation.value = reduceMotion ? target : withTiming(target, { duration: 200 });\n }, [ctx.expanded, reduceMotion]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${interpolate(rotation.value, [0, 1], [0, 180], Extrapolation.CLAMP)}deg` }],\n }));\n\n const containerStyle = useMemo(() => [\n accordion.summary,\n animatedStyle,\n ], [accordion.summary, animatedStyle]);\n\n return (\n \n \n \n {children}\n \n \n {expandIcon ?? (\n \n )}\n \n \n \n );\n}\n\nexport function AccordionDetails({ children }: AccordionDetailsProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n const reduceMotion = useReduceMotionEnabled();\n const [contentHeight, setContentHeight] = React.useState(0);\n const animHeight = useSharedValue(0);\n\n React.useEffect(() => {\n if (!ctx) return;\n const target = ctx.expanded ? contentHeight : 0;\n animHeight.value = reduceMotion ? target : withTiming(target, { duration: 250 });\n }, [ctx?.expanded, contentHeight, reduceMotion]);\n\n const animStyle = useAnimatedStyle(() => ({\n height: animHeight.value,\n overflow: \"hidden\",\n }));\n\n return (\n \n setContentHeight(e.nativeEvent.layout.height)}\n style={[accordion.details, { position: \"absolute\", left: 0, right: 0 }]}\n >\n {children}\n \n \n );\n}\n\nexport function AccordionActions({ children }: AccordionActionsProps) {\n const tokens = useTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx?.expanded) return null;\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport {\n // Navigation & Actions\n Star,\n Heart,\n Check,\n Info,\n AlertTriangle,\n AlertCircle,\n CheckCircle,\n X,\n XCircle,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Search,\n Settings,\n Bell,\n Home,\n User,\n Plus,\n Minus,\n Edit,\n Trash,\n Share,\n Download,\n Upload,\n RefreshCw,\n ExternalLink,\n ChevronUp,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n Calendar,\n Clock,\n MapPin,\n Camera,\n Image,\n Video,\n FileText,\n Copy,\n Layout,\n Grid,\n List,\n Layers,\n Box,\n Package,\n ShoppingCart,\n CreditCard,\n Mail,\n Phone,\n MessageSquare,\n Send,\n Zap,\n Flame,\n StarHalf,\n ThumbsUp,\n ThumbsDown,\n} from \"lucide-react-native\";\n\nexport const ICON_MAP = {\n star: Star,\n heart: Heart,\n check: Check,\n info: Info,\n warning: AlertTriangle,\n error: AlertCircle,\n checkCircle: CheckCircle,\n close: X,\n closeCircle: XCircle,\n menu: Menu,\n moreVertical: MoreVertical,\n moreHorizontal: MoreHorizontal,\n search: Search,\n settings: Settings,\n bell: Bell,\n home: Home,\n user: User,\n plus: Plus,\n minus: Minus,\n edit: Edit,\n trash: Trash,\n share: Share,\n download: Download,\n upload: Upload,\n refresh: RefreshCw,\n externalLink: ExternalLink,\n chevronUp: ChevronUp,\n chevronDown: ChevronDown,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n eye: Eye,\n eyeOff: EyeOff,\n lock: Lock,\n unlock: Unlock,\n calendar: Calendar,\n clock: Clock,\n mapPin: MapPin,\n camera: Camera,\n image: Image,\n video: Video,\n file: FileText,\n copy: Copy,\n layout: Layout,\n grid: Grid,\n list: List,\n layers: Layers,\n box: Box,\n package: Package,\n cart: ShoppingCart,\n card: CreditCard,\n mail: Mail,\n phone: Phone,\n message: MessageSquare,\n send: Send,\n zap: Zap,\n flame: Flame,\n starHalf: StarHalf,\n thumbsUp: ThumbsUp,\n thumbsDown: ThumbsDown,\n} as const;\n\nexport type IconName = keyof typeof ICON_MAP;\n\nexport interface IconProps {\n /** The name of the icon. Can also be passed as children. */\n name?: IconName | string;\n /** The name of the icon as text children. */\n children?: IconName | string | React.ReactNode;\n /** Size of the icon. Can be a number or a theme preset. */\n size?: number | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"small\" | \"medium\" | \"large\";\n /** Color of the icon. Can be a raw hex or a theme preset. */\n color?: string;\n style?: any;\n}\n\n/**\n * A standardized Icon component that wraps lucide-react-native icons.\n * Provides theme-aware sizing and colors.\n */\nexport function Icon({ name, children, size, color, style }: IconProps) {\n const { icon: iconTokens } = useComponentTokens();\n const tokens = useTokens();\n \n // Resolve the icon name from either prop or children\n const iconNameString = (name ?? (typeof children === \"string\" ? children : undefined)) as IconName;\n \n const resolvedSize = typeof size === \"number\" \n ? size \n : iconTokens.size[(size ?? \"md\") as keyof typeof iconTokens.size] ?? 20;\n \n const resolvedColor = color && color in iconTokens.color\n ? iconTokens.color[color as keyof typeof iconTokens.color]\n : color ?? tokens.color.text.primary;\n\n const IconComp = ICON_MAP[iconNameString as keyof typeof ICON_MAP] || Info;\n\n return (\n \n \n \n );\n}\n\n/**\n * A helper to wrap any icon with standard sizing and colors.\n */\nexport function IconWrapper({ children, size, color }: { children: React.ReactNode; size?: number; color?: string }) {\n const tokens = useTokens();\n if (!React.isValidElement>(children)) return null;\n return React.cloneElement(children, {\n color: children.props.color ?? color ?? tokens.color.text.primary,\n size: children.props.size ?? size,\n });\n}\n","import React, { useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useAlert } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport type AlertSeverity = \"error\" | \"warning\" | \"info\" | \"success\";\nexport type AlertVariant = \"standard\" | \"filled\" | \"outlined\";\n\nexport interface AlertProps {\n /** Severity of the alert */\n severity?: AlertSeverity;\n /** Visual variant */\n variant?: AlertVariant;\n /** Custom icon or false to hide */\n icon?: React.ReactNode | false;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Callback on close button press */\n onClose?: () => void;\n /** Content of the alert */\n children?: React.ReactNode;\n}\n\nexport interface AlertTitleProps {\n children?: React.ReactNode;\n}\n\nconst SEVERITY_ICONS: Record = {\n info: \"info\",\n success: \"checkCircle\",\n warning: \"warning\",\n error: \"error\",\n};\n\nexport function Alert({\n severity = \"info\",\n variant = \"standard\",\n icon,\n action,\n onClose,\n children,\n}: AlertProps) {\n const { alert } = useComponentTokens();\n const tokens = useTokens();\n const { isOpen, getAlertProps, getCloseButtonProps } = useAlert({ onClose });\n const severityTokens = alert.variant[severity];\n\n if (!isOpen) return null;\n\n const containerStyle = useMemo(() => {\n const base = [alert.container];\n if (variant === \"filled\") {\n base.push({\n backgroundColor: severityTokens.icon,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n } else if (variant === \"outlined\") {\n base.push({\n backgroundColor: \"transparent\",\n borderColor: severityTokens.border,\n borderWidth: 1,\n } as any);\n } else {\n base.push({\n backgroundColor: severityTokens.bg,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n }\n return base;\n }, [alert, severityTokens, variant]);\n\n const textColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.text;\n const iconColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.icon;\n\n return (\n \n {icon !== false && (\n \n {icon ?? (\n \n {SEVERITY_ICONS[severity]}\n \n )}\n \n )}\n \n {children}\n \n {action}\n {onClose && (\n \n \n \n )}\n \n );\n}\n\nexport function AlertTitle({ children }: AlertTitleProps) {\n const { alert } = useComponentTokens();\n // We can't easily get the parent Alert's severity here without context,\n // but we can use a generic color or inherit from View style.\n // For now, let's use a standard bold style.\n return (\n \n {children}\n \n );\n}\n","import React, { forwardRef, useMemo } from \"react\";\nimport { View, StyleProp, ViewStyle, StyleSheet, ListRenderItemInfo } from \"react-native\";\nimport { FlatList } from \"react-native\";\nimport Animated, { FadeInDown, Layout, ReduceMotion } from \"react-native-reanimated\";\nimport { useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\ntype FlashListProps = {\n data: T[] | null | undefined;\n renderItem: (info: any) => React.ReactElement | null;\n estimatedItemSize?: number;\n contentContainerStyle?: any;\n [key: string]: any;\n};\n\nconst ReanimatedListImpl = Animated.createAnimatedComponent(FlatList as any) as any;\n\nexport interface AnimatedListProps extends Omit, \"renderItem\"> {\n /** The items to render */\n data: T[] | null | undefined;\n /** Function to render each item. Use `index` to stagger entering animations if desired. */\n renderItem: (info: ListRenderItemInfo) => React.ReactElement | null;\n /**\n * Average main-axis size of one item (usually **height** in a vertical list), in dp.\n * FlashList uses this to size the scroll window and recycle views; **pick a value close to the real\n * rendered row height** (± a few px). If this is far off, you may see scroll jumps or degraded\n * performance with little warning.\n * @see https://shopify.github.io/flash-list/docs/estimated-item-size\n */\n estimatedItemSize: number;\n /** Apply entering animation to items as they appear. Recommended: FadeInDown */\n itemEntering?: any;\n /** Apply exiting animation to items as they disappear */\n itemExiting?: any;\n /** Apply layout animation when items are reordered. Recommended: Layout.springify() */\n itemLayout?: any;\n /**\n * Automatically stagger item entry animations.\n * Note: This wraps items in an Animated.View.\n */\n staggerEntering?: boolean;\n /** Delay between staggered items in ms. Default 50 */\n staggerDelay?: number;\n /** Container style for the wrapper Animated.View */\n itemContainerStyle?: StyleProp;\n}\n\n/**\n * AnimatedList wraps @shopify/flash-list with Reanimated to provide\n * ultra-fast performance combined with smooth layout and entry animations.\n *\n * Prefer a **stable** `renderItem` (`useCallback`) and `keyExtractor` so FlashList does not recycle unnecessarily.\n */\nfunction AnimatedListInner(\n {\n data,\n renderItem,\n itemEntering = FadeInDown,\n itemExiting,\n itemLayout = Layout.springify().damping(16).stiffness(150),\n staggerEntering = false,\n staggerDelay = 50,\n itemContainerStyle,\n ...flashListProps\n }: AnimatedListProps,\n ref: any\n) {\n const { animatedList } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const effectiveEntering = reduceMotion ? undefined : itemEntering;\n const effectiveExiting = reduceMotion ? undefined : itemExiting;\n const effectiveLayout = reduceMotion ? undefined : itemLayout;\n\n const ListImpl: any = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: any };\n const Impl = mod?.FlashList ?? FlatList;\n return Animated.createAnimatedComponent(Impl as any);\n } catch {\n return ReanimatedListImpl;\n }\n }, []);\n\n const AnimatedCell = (info: any) => {\n const { index } = info;\n const enteringAnim = staggerEntering && effectiveEntering?.delay\n ? effectiveEntering.delay(Math.min(index * staggerDelay, 500))\n : effectiveEntering;\n\n return (\n \n {renderItem(info as unknown as ListRenderItemInfo)}\n \n );\n };\n\n return (\n }\n keyExtractor={(item: any, index: number) => item?.id || item?.key || String(index)}\n {...flashListProps}\n contentContainerStyle={useMemo(() => [\n animatedList.container,\n flashListProps.contentContainerStyle\n ], [animatedList.container, flashListProps.contentContainerStyle])}\n />\n );\n}\n\n// eslint-disable-next-line react/display-name\nexport const AnimatedList = forwardRef(AnimatedListInner as any) as (\n props: AnimatedListProps & { ref?: React.Ref }\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n itemWrapper: {\n overflow: \"hidden\",\n },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface AppBarProps {\n children?: React.ReactNode;\n color?: \"default\" | \"inherit\" | \"primary\" | \"secondary\" | \"transparent\";\n variant?: \"elevation\" | \"outlined\";\n position?: \"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\";\n elevation?: 0 | 1 | 2 | 3 | 4;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function AppBar({\n children,\n color = \"primary\",\n variant = \"elevation\",\n position = \"relative\",\n elevation = 2,\n style,\n}: AppBarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n const shadows = [tokens.shadow.none, tokens.shadow.sm, tokens.shadow.md, tokens.shadow.lg, tokens.shadow.xl];\n\n const bgMap: Record = {\n default: appBar.container.backgroundColor,\n inherit: \"transparent\",\n primary: tokens.color.brand.default,\n secondary: tokens.color.brand.muted,\n transparent: \"transparent\",\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ToolbarProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Toolbar({ children, style }: ToolbarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n","import React, { useState, useRef } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n Easing,\n} from \"react-native-reanimated\";\nimport { useAutocomplete, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\n\nexport interface AutocompleteProps {\n options: T[];\n value?: T | T[];\n defaultValue?: T | T[];\n multiple?: boolean;\n getOptionLabel?: (option: T) => string;\n renderOption?: (option: T, selected: boolean) => React.ReactNode;\n onChange?: (value: T | T[] | undefined) => void;\n inputValue?: string;\n onInputChange?: (value: string) => void;\n placeholder?: string;\n label?: string;\n disabled?: boolean;\n}\n\nexport function Autocomplete({\n options,\n value,\n defaultValue,\n multiple = false,\n getOptionLabel,\n renderOption,\n onChange,\n inputValue,\n onInputChange,\n placeholder = \"Select...\",\n label,\n disabled = false,\n}: AutocompleteProps) {\n const tokens = useTokens();\n const { autocomplete } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const inputRef = useRef(null);\n const [inputRect, setInputRect] = useState({ pageX: 0, pageY: 0, width: 0, height: 0 });\n const [dropdownMounted, setDropdownMounted] = useState(false);\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const {\n inputValue: query,\n setInputValue,\n isOpen,\n open,\n close,\n isSelected,\n selectOption,\n filteredOptions,\n } = useAutocomplete({\n options, value, defaultValue, multiple, getOptionLabel,\n onChange, inputValue, onInputChange,\n });\n\n const labelOf = getOptionLabel ?? ((o: T) => String(o));\n const DROPDOWN_MAX_HEIGHT = autocomplete.menu.maxHeight;\n const GAP = (autocomplete.menu as any).marginTop ?? 4;\n\n const measureAndOpen = () => {\n if (!isOpen) {\n inputRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setInputRect({ pageX, pageY, width: w, height: h });\n open();\n opacity.value = 0;\n scale.value = 0.95;\n setDropdownMounted(true);\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 160, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 300 });\n });\n });\n }\n };\n\n const handleClose = () => {\n opacity.value = withTiming(0, { duration: 120 });\n scale.value = withTiming(0.96, { duration: 120 });\n setTimeout(() => {\n close();\n setDropdownMounted(false);\n }, 130);\n };\n\n const spaceBelow = windowHeight - (inputRect.pageY + inputRect.height);\n const showAbove = spaceBelow < DROPDOWN_MAX_HEIGHT + 40;\n\n const dropdownTop = showAbove\n ? inputRect.pageY - DROPDOWN_MAX_HEIGHT - GAP\n : inputRect.pageY + inputRect.height + GAP;\n\n const dropdownAnimStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n return (\n \n {\n setInputValue(val);\n measureAndOpen();\n }}\n onFocus={measureAndOpen}\n onBlur={() => setTimeout(handleClose, 150)}\n disabled={disabled}\n />\n\n {dropdownMounted && filteredOptions.length > 0 && (\n \n \n \n {filteredOptions.map((option, idx) => {\n const selected = isSelected(option);\n return (\n {\n if (selected && !multiple) {\n // Deselect if already selected in single mode\n selectOption(undefined as any);\n } else {\n selectOption(option);\n }\n if (!multiple) handleClose();\n }}\n style={({ pressed }) => ({\n padding: autocomplete.item.padding,\n backgroundColor: pressed\n ? autocomplete.item.hover.backgroundColor\n : selected\n ? autocomplete.item.active.backgroundColor\n : \"transparent\",\n })}\n >\n {renderOption ? renderOption(option, selected) : (\n \n {labelOf(option)}\n \n )}\n \n );\n })}\n \n \n )}\n \n );\n}\n","import React, { useMemo, useState, useEffect } from \"react\";\nimport {\n TextInput as RNTextInput,\n View,\n Text,\n type TextInputProps as RNTextInputProps,\n type NativeSyntheticEvent,\n type TextInputChangeEventData,\n} from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useIconStyle } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"./AnimatedHelperText\";\n\nconst FOCUS_MS = 150;\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(RNTextInput);\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps extends Omit {\n /** Callback for when the text changes */\n onChange?: (text: string) => void;\n /** Field label shown above input (or floating inside when `floatingLabel`) */\n label?: string;\n /** Error message shown below input */\n error?: string;\n /** Helper text shown below input (overridden by error) */\n helperText?: string;\n /** Animate label inside the field (Material / Telegram-style) */\n floatingLabel?: boolean;\n /** Size preset */\n size?: InputSize;\n /** Slot for leading icon/element inside input */\n leadingElement?: React.ReactNode;\n /** Slot for trailing icon/element inside input */\n trailingElement?: React.ReactNode;\n /** Disable input */\n disabled?: boolean;\n /** Callback when error should be cleared (called on first keystroke) */\n onClearError?: () => void;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Input({\n label,\n error,\n helperText,\n floatingLabel = false,\n size = \"md\",\n leadingElement,\n trailingElement,\n disabled = false,\n onClearError,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n placeholder,\n accessibilityLabel: accessibilityLabelProp,\n ...rest\n}: InputProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n\n const [isFocused, setIsFocused] = useState(false);\n const [hasTyped, setHasTyped] = useState(false);\n const [uncontrolledText, setUncontrolledText] = useState(() =>\n defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : \"\"\n );\n\n const hasValue =\n value !== undefined && value !== null\n ? String(value).length > 0\n : uncontrolledText.length > 0;\n\n const focusProgress = useSharedValue(0);\n const floatProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n useEffect(() => {\n if (!floatingLabel || !label) return;\n floatProgress.value = withTiming(isFocused || hasValue ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, hasValue, floatingLabel, label, floatProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const fl = input.floatingLabel;\n\n const animatedContainerStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const floatingLabelStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label || !fl) {\n return {};\n }\n const inactiveFs = fl.fontSize.inactive;\n const activeFs = fl.fontSize.active;\n const inactiveC = fl.color.inactive;\n const activeC = fl.color.active;\n const ty0 = fl.translateY.inactive;\n const ty1 = fl.translateY.active;\n return {\n position: \"absolute\" as const,\n left: 0,\n right: 0,\n top: interpolate(floatProgress.value, [0, 1], [16, 6]),\n transform: [{ translateY: interpolate(floatProgress.value, [0, 1], [ty0, ty1]) }],\n fontSize: interpolate(floatProgress.value, [0, 1], [inactiveFs, activeFs]),\n color: interpolateColor(floatProgress.value, [0, 1], [inactiveC, activeC]),\n pointerEvents: \"none\" as const,\n };\n }, [floatingLabel, label, fl]);\n\n const animatedInputPadStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label) {\n return {};\n }\n return {\n paddingTop: interpolate(floatProgress.value, [0, 1], [0, 12]),\n };\n }, [floatingLabel, label]);\n\n const staticContainerStyle = useMemo(() => {\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n return [\n input.container,\n input.size[size],\n !isGrouped && error && input.state.error,\n !isGrouped && disabled && input.state.disabled,\n groupedChrome,\n ];\n }, [input, size, error, disabled, isGrouped]);\n\n const handleChange = (e: NativeSyntheticEvent) => {\n const text = e.nativeEvent.text;\n if (value === undefined) {\n setUncontrolledText(text);\n }\n if (!hasTyped && text.length > 0) {\n setHasTyped(true);\n onClearError?.();\n }\n onChange?.(text);\n };\n\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? (size === \"sm\" ? tokens.fontSize.md : iconSize),\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n const placeholderResolved =\n floatingLabel && label ? (isFocused || hasValue ? placeholder ?? \"\" : \"\") : placeholder;\n\n const inner = (\n <>\n {renderIcon(leadingElement)}\n \n {floatingLabel && label ? (\n {label}\n ) : null}\n {\n setIsFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n onBlur?.(e);\n }}\n onChange={handleChange}\n placeholder={placeholderResolved}\n {...rest}\n />\n \n {renderIcon(trailingElement)}\n \n );\n\n return (\n \n {label && !floatingLabel ? {label} : null}\n\n {inner}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport type FormGroupVariant = \"standard\" | \"grouped\";\n\nexport const FormGroupContext = React.createContext(\"standard\");\n\nexport function useFormGroupVariant(): FormGroupVariant {\n return React.useContext(FormGroupContext);\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\nimport Animated, { FadeIn, FadeOut } from \"react-native-reanimated\";\n\nexport interface AnimatedHelperTextProps {\n text: string | undefined;\n isError: boolean;\n style: TextStyle | TextStyle[];\n}\n\n/**\n * Subtle enter/exit for helper and error copy under fields (Reanimated layout animations).\n * Uses RN `Text` inside an `Animated.View` so test queries and a11y stay straightforward.\n */\nexport function AnimatedHelperText({ text, isError, style }: AnimatedHelperTextProps) {\n if (!text) return null;\n\n return (\n \n \n {text}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Image, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nexport interface AvatarProps {\n /** Image URI */\n src?: string;\n /** Fallback initials if no src */\n initials?: string;\n /** Fallback when no src and no initials */\n fallbackIcon?: React.ReactNode;\n size?: AvatarSize;\n status?: AvatarStatus;\n shape?: \"circle\" | \"rounded\";\n /** Accessible label */\n accessibilityLabel?: string;\n style?: ViewStyle | ViewStyle[];\n}\n\nconst STATUS_COLORS = {\n online: \"#22C55E\",\n offline: \"#9CA3AF\",\n busy: \"#EF4444\",\n away: \"#F59E0B\",\n};\n\nconst STATUS_DOT_SIZE: Record = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n};\n\nconst STATUS_DOT_COLORS = {\n online: \"#22C55E\", // success\n away: \"#F59E0B\", // warning\n offline: \"#9CA3AF\", // muted\n busy: \"#EF4444\", // error\n} as const;\n\n// Deterministic color from initials string\nconst BG_PALETTE = [\n \"#EEEDFE\", // purple-50\n \"#E1F5EE\", // teal-50\n \"#FAECE7\", // coral-50\n \"#FBEAF0\", // pink-50\n \"#EAF3DE\", // green-50\n \"#FAEEDA\", // amber-50\n \"#E6F1FB\", // blue-50\n];\nconst TEXT_PALETTE = [\n \"#3C3489\",\n \"#085041\",\n \"#712B13\",\n \"#72243E\",\n \"#27500A\",\n \"#633806\",\n \"#0C447C\",\n];\n\nconst colorIndexCache = new Map();\n\nfunction getColorIndex(str: string): number {\n const cached = colorIndexCache.get(str);\n if (cached !== undefined) return cached;\n let hash = 0;\n for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);\n const result = Math.abs(hash) % BG_PALETTE.length;\n colorIndexCache.set(str, result);\n return result;\n}\n\n// ─── Avatar ───────────────────────────────────────────────────────\n\nexport function Avatar({\n src,\n initials,\n fallbackIcon,\n size = \"md\",\n status,\n shape = \"circle\",\n accessibilityLabel,\n style,\n}: AvatarProps) {\n const { avatar } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatar.size[size];\n const radius = shape === \"circle\" ? sizeConfig.borderRadius : tokens.radius.md;\n const colorIdx = initials ? getColorIndex(initials) : 0;\n\n const dotSize = status ? STATUS_DOT_SIZE[size] : 0;\n\n return (\n \n {src ? (\n \n ) : initials ? (\n \n \n {initials.slice(0, 2).toUpperCase()}\n \n \n ) : (\n // Generic fallback\n \n {fallbackIcon ?? (\n \n ?\n \n )}\n \n )}\n\n {/* Status dot */}\n {status && (\n \n )}\n \n );\n}\n\n// ─── AvatarGroup ──────────────────────────────────────────────────\n\nexport interface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n overlap?: number;\n}\n\nexport function AvatarGroup({\n avatars,\n max = 4,\n size = \"md\",\n overlap,\n}: AvatarGroupProps) {\n const { avatar: avatarTokens } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatarTokens.size[size];\n const dim = sizeConfig.width;\n const gap = overlap ?? Math.round(dim * 0.3);\n\n const visible = avatars.slice(0, max);\n const overflow = avatars.length - max;\n\n return (\n 0 ? dim - gap : 0),\n height: dim,\n }}\n >\n {visible.map((avatar, i) => (\n \n \n \n ))}\n\n {overflow > 0 && (\n \n \n +{overflow}\n \n \n )}\n \n );\n}","import React, { useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type BadgeVariant = \"default\" | \"brand\" | \"success\" | \"warning\" | \"error\" | \"info\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps {\n label?: string;\n count?: number | string;\n variant?: BadgeVariant;\n size?: BadgeSize;\n icon?: React.ReactNode;\n dot?: boolean;\n style?: any;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nconst BADGE_ROW_GAP: Record = { sm: 3, md: 4, lg: 6 };\n\nexport const Badge = React.memo(({ label, count, variant = \"default\", size = \"md\", icon, dot = false }: BadgeProps) => {\n const { badge } = useComponentTokens();\n\n const { fontSize, sizeBox } = useMemo(() => {\n const { fontSize: fs, ...rest } = badge.size[size];\n return { fontSize: fs, sizeBox: rest };\n }, [badge.size, size]);\n\n const iconPx = Math.round(fontSize * 0.85);\n\n const containerStyle = useMemo(\n () => [\n badge.base,\n sizeBox,\n {\n backgroundColor: badge.variant[variant].bg,\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n gap: BADGE_ROW_GAP[size],\n },\n ],\n [badge.base, badge.variant, sizeBox, variant, size]\n );\n\n const textStyle = useMemo(\n () => [badge.text, { color: badge.variant[variant].text, fontSize }],\n [badge.text, badge.variant, variant, fontSize]\n );\n\n const iconColor = String(badge.variant[variant].text);\n\n // Helper to clone icon with standardized props\n const renderIcon = (el: React.ReactNode) => {\n if (!el) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(el)) {\n return React.cloneElement(el, {\n size: el.props.size ?? iconPx,\n color: el.props.color ?? iconColor,\n });\n }\n return el;\n };\n\n const textPart =\n label !== undefined ? label : count !== undefined ? String(count) : null;\n\n const dotDim =\n size === \"sm\"\n ? Math.max(6, Math.round(badge.dot.size * 0.875))\n : size === \"lg\"\n ? Math.round(badge.dot.size * 1.25)\n : badge.dot.size;\n\n return (\n \n {!dot && renderIcon(icon)}\n {!dot && textPart !== null && {textPart}}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useComponentTokens, useBottomNavigation } from \"@truongdq01/headless\";\n\nexport interface BottomNavigationProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n showLabels?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface BottomNavigationActionProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n}\n\ninterface BottomNavContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T) => any;\n showLabels: boolean;\n}\n\nconst BottomNavContext = createContext | null>(null);\n\nexport function BottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n showLabels = false,\n children,\n}: BottomNavigationProps) {\n const { bottomNavigation } = useComponentTokens();\n const { value, isSelected, getItemProps } = useBottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n });\n\n const ctx = useMemo(() => ({ value, isSelected, getItemProps, showLabels }), [value, isSelected, getItemProps, showLabels]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function BottomNavigationAction({ value, label, icon }: BottomNavigationActionProps) {\n const { bottomNavigation } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(BottomNavContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n\n return (\n \n {icon}\n {(ctx.showLabels || selected) && label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { View, StyleSheet, Dimensions, Modal } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBottomSheet, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UseBottomSheetOptions, SnapPoint } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface BottomSheetProps extends UseBottomSheetOptions {\n children: React.ReactNode;\n /** Show the pill-shaped drag handle at top */\n showHandle?: boolean;\n /** Horizontal border radius on the sheet. If not provided, uses theme token. */\n borderRadius?: number;\n /** Accessibility label for the sheet container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport interface BottomSheetRef {\n open: (snapIndex?: number) => void;\n close: () => void;\n snapTo: (index: number) => void;\n}\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport const BottomSheet = forwardRef(\n function BottomSheet(\n {\n children,\n snapPoints = [\"50%\"] as SnapPoint[],\n initialSnapIndex,\n onClose,\n onSnapChange,\n enableDismissOnSwipe = true,\n enableBackdrop = true,\n showHandle = true,\n borderRadius,\n accessibilityLabel = \"Bottom sheet\",\n backdropAccessibilityLabel = \"Dismiss bottom sheet\",\n },\n ref\n ) {\n const { bottomSheet } = useComponentTokens();\n const insets = useSafeAreaInsets();\n const [mounted, setMounted] = useState(false);\n\n const handleClose = React.useCallback(() => {\n setMounted(false);\n onClose?.();\n }, [onClose]);\n\n const {\n open: baseOpen,\n close: baseClose,\n snapTo,\n sheetAnimatedStyle,\n backdropAnimatedStyle,\n panGesture,\n backdropTapGesture,\n } = useBottomSheet({\n snapPoints,\n initialSnapIndex,\n onClose: handleClose,\n onSnapChange,\n enableDismissOnSwipe,\n enableBackdrop,\n });\n\n const open = React.useCallback((idx?: number) => {\n setMounted(true);\n requestAnimationFrame(() => {\n baseOpen(idx);\n });\n }, [baseOpen]);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({ open, close: baseClose, snapTo }), [open, baseClose, snapTo]);\n\n return (\n \n \n {/* Backdrop */}\n {enableBackdrop && (\n \n \n \n )}\n\n {/* Sheet */}\n \n {/* Drag handle area — full-width tap target */}\n \n \n {showHandle && (\n \n )}\n \n \n\n {/* Content */}\n {children}\n \n \n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n sheet: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: SCREEN_HEIGHT,\n },\n handleArea: {\n width: \"100%\",\n height: 28,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n handle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n },\n});","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n sx?: ViewStyle | ViewStyle[];\n flex?: number;\n}\n\nexport function Box({ children, style, sx, flex }: BoxProps) {\n const { box } = useComponentTokens();\n const merged = [\n box.defaults,\n flex !== undefined ? { flex } : null,\n sx,\n style\n ];\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BreadcrumbsProps {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n}\n\nexport function Breadcrumbs({\n children,\n separator = \"/\",\n maxItems = 8,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n}: BreadcrumbsProps) {\n const { breadcrumbs } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n let displayItems = items;\n if (items.length > maxItems) {\n displayItems = [\n ...items.slice(0, itemsBeforeCollapse),\n ...,\n ...items.slice(items.length - itemsAfterCollapse),\n ];\n }\n\n return (\n \n {displayItems.map((child, idx) => (\n \n {child}\n {idx < displayItems.length - 1 && (\n {separator}\n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { ActivityIndicator, Text, View, StyleSheet, Linking, type StyleProp, type ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens, useIconStyle, useTokens } from \"@truongdq01/headless\";\nimport type { PressFeedbackMode } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\n/**\n * Available button visual style variants\n */\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"text\"\n | \"contained\"\n | \"outlined\";\n\n/**\n * Available button size presets\n */\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Available button color themes\n */\nexport type ButtonColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"accent\"; // Amber CTA — stands out from brand violet\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Color theme */\n color?: ButtonColor;\n /** Size preset */\n size?: ButtonSize;\n /** Button label (optional for icon-only buttons) */\n label?: string;\n /** Optional children (preferred over label) */\n children?: React.ReactNode;\n /** Called on press */\n onPress?: () => void;\n /** Called on long press */\n onLongPress?: () => void;\n /** Disable all interaction and apply disabled styles */\n disabled?: boolean;\n /** Show loading spinner, disable interaction */\n loading?: boolean;\n /** Custom loading indicator */\n loadingIndicator?: React.ReactNode;\n /** Loading indicator placement */\n loadingPosition?: \"start\" | \"end\" | \"center\";\n /** Slot for leading icon */\n leadingIcon?: React.ReactNode;\n /** Slot for trailing icon */\n trailingIcon?: React.ReactNode;\n /** Alias for leadingIcon */\n startIcon?: React.ReactNode;\n /** Alias for trailingIcon */\n endIcon?: React.ReactNode;\n /** Override press feedback mode */\n feedbackMode?: PressFeedbackMode;\n /** Fill container width */\n fullWidth?: boolean;\n /** Render as link */\n href?: string;\n /** Remove drop shadow */\n disableElevation?: boolean;\n /** Additional style override */\n style?: object;\n /** Accessibility label override (defaults to label) */\n accessibilityLabel?: string;\n /** Accessibility hint */\n accessibilityHint?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Button component with multiple variants, sizes, and interaction states.\n * Supports icons, loading states, accessibility, and gesture feedback.\n *\n * @param props - Button configuration props\n * @returns Memoized React button component\n *\n * @example\n * ```tsx\n * console.log('Pressed')}\n * >\n * Click me\n * \n * ```\n *\n * @example With loading state\n * ```tsx\n * \n * ```\n */\nexport const Button = React.memo(({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n label,\n children,\n onPress,\n onLongPress,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n leadingIcon,\n trailingIcon,\n startIcon,\n endIcon,\n feedbackMode = \"scale\",\n fullWidth = false,\n href,\n disableElevation = false,\n style,\n accessibilityLabel,\n accessibilityHint,\n}: ButtonProps) => {\n const { button } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize } = useIconStyle(\"button\");\n const isDisabled = disabled || loading;\n\n const resolvedVariant: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" = useMemo(() => {\n if (variant === \"contained\") return \"solid\";\n if (variant === \"outlined\") return \"outline\";\n if (variant === \"text\") return \"ghost\";\n return variant as \"solid\" | \"outline\" | \"ghost\" | \"destructive\";\n }, [variant]);\n\n const resolvedColor = useMemo(() => {\n if (color === \"inherit\") {\n return {\n main: tokens.color.text.primary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"secondary\") {\n return {\n main: tokens.color.text.secondary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"success\") {\n return {\n main: tokens.color.success.icon,\n subtle: tokens.color.success.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"warning\") {\n return {\n main: tokens.color.warning.icon,\n subtle: tokens.color.warning.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"error\") {\n return {\n main: tokens.color.error.icon,\n subtle: tokens.color.error.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"info\") {\n return {\n main: tokens.color.info.icon,\n subtle: tokens.color.info.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"accent\") {\n return {\n main: tokens.color.accent.default,\n subtle: tokens.color.accent.subtle,\n textOn: tokens.color.accent.onAccent,\n };\n }\n return {\n main: tokens.color.brand.default,\n subtle: tokens.color.brand.subtle,\n textOn: tokens.color.text.inverse,\n };\n }, [color, tokens]);\n\n const handlePress = useCallback(() => {\n if (!href) {\n onPress?.();\n return;\n }\n onPress?.();\n void Linking.openURL(href).catch(() => {});\n }, [href, onPress]);\n\n const hitSlop = useMemo(() => {\n const height = button.size[size].container.height;\n const padding = Math.max(0, (44 - height) / 2);\n // If it's an icon-only button, width might also be small\n const isIconOnly = !label && !children;\n const horizontalPadding = isIconOnly ? padding : 0;\n return { top: padding, bottom: padding, left: horizontalPadding, right: horizontalPadding };\n }, [button, size, label, children]);\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: handlePress,\n onLongPress,\n disabled: isDisabled,\n feedbackMode,\n accessibilityLabel: accessibilityLabel ?? (typeof children === \"string\" ? children : label),\n accessibilityHint,\n accessibilityRole: \"button\",\n hitSlop,\n });\n\n // Resolve styles from component tokens — only recomputes on theme change\n const containerStyle = useMemo(() => [\n button.variant[resolvedVariant].container,\n button.size[size].container,\n fullWidth && { alignSelf: \"stretch\" as const },\n isDisabled && button.disabled.container,\n !label && !children && { paddingHorizontal: button.size[size].container.paddingHorizontal / 2, width: button.size[size].container.height },\n disableElevation && tokens.shadow.none,\n resolvedVariant === \"solid\" && { backgroundColor: resolvedColor.main },\n resolvedVariant === \"outline\" && { borderColor: resolvedColor.main },\n resolvedVariant === \"ghost\" && { backgroundColor: resolvedColor.subtle },\n resolvedVariant === \"destructive\" && { backgroundColor: tokens.color.error.bg, borderColor: tokens.color.error.border },\n style,\n ], [button, resolvedVariant, size, fullWidth, isDisabled, label, children, disableElevation, tokens, resolvedColor, style]);\n\n const textStyle = useMemo(() => [\n button.variant[resolvedVariant].text,\n button.size[size].text,\n resolvedVariant === \"solid\" && { color: resolvedColor.textOn || tokens.color.text.inverse },\n resolvedVariant === \"outline\" && { color: resolvedColor.main },\n resolvedVariant === \"ghost\" && { color: resolvedColor.main },\n resolvedVariant === \"destructive\" && { color: tokens.color.error.text },\n ], [button, resolvedVariant, size, resolvedColor, tokens]);\n\n const resolvedLabelColor = useMemo(() => {\n switch (resolvedVariant) {\n case \"solid\":\n return String(resolvedColor.textOn ?? tokens.color.text.inverse);\n case \"outline\":\n case \"ghost\":\n return String(resolvedColor.main);\n case \"destructive\":\n return String(tokens.color.error.text);\n default: {\n const _never: never = resolvedVariant;\n throw new Error(`Unexpected button variant: ${_never}`);\n }\n }\n }, [resolvedVariant, resolvedColor, tokens]);\n\n const iconColor = resolvedLabelColor;\n const content = children ?? label;\n const isTextContent = typeof content === \"string\" || typeof content === \"number\";\n const leading = startIcon ?? leadingIcon;\n const trailing = endIcon ?? trailingIcon;\n\n // Helper to clone icon with standardized props\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? iconSize,\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n return (\n \n }\n {...accessibilityProps}\n >\n \n {loading && loadingPosition === \"start\" && (loadingIndicator ?? )}\n {renderIcon(leading)}\n {isTextContent ? {content} : content}\n {renderIcon(trailing)}\n {loading && loadingPosition === \"end\" && (loadingIndicator ?? )}\n \n\n {loading && loadingPosition === \"center\" && (\n \n {loadingIndicator ?? }\n \n )}\n \n \n );\n});\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n loadingWrapper: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ButtonGroupProps {\n children?: React.ReactNode;\n variant?: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" | \"text\" | \"contained\" | \"outlined\";\n size?: \"sm\" | \"md\" | \"lg\";\n orientation?: \"horizontal\" | \"vertical\";\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\nexport function ButtonGroup({\n children,\n variant = \"outlined\",\n size = \"md\",\n orientation = \"horizontal\",\n disabled = false,\n fullWidth = false,\n}: ButtonGroupProps) {\n const tokens = useTokens();\n const { buttonGroup } = useComponentTokens();\n const isRow = orientation === \"horizontal\";\n\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child, i) => {\n if (!React.isValidElement<{\n variant?: string;\n size?: string;\n disabled?: boolean;\n fullWidth?: boolean;\n style?: any;\n }>(child)) return child;\n const isFirst = i === 0;\n const isLast = i === items.length - 1;\n\n const borderStyle = isRow\n ? {\n borderRightWidth: isLast ? 0 : buttonGroup.divider.width,\n borderRightColor: buttonGroup.divider.backgroundColor,\n }\n : {\n borderBottomWidth: isLast ? 0 : buttonGroup.divider.width,\n borderBottomColor: buttonGroup.divider.backgroundColor,\n };\n\n const radiusStyle = isFirst\n ? isRow\n ? { borderTopLeftRadius: buttonGroup.container.borderRadius, borderBottomLeftRadius: buttonGroup.container.borderRadius }\n : { borderTopLeftRadius: buttonGroup.container.borderRadius, borderTopRightRadius: buttonGroup.container.borderRadius }\n : isLast\n ? isRow\n ? { borderTopRightRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderBottomLeftRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderRadius: 0 };\n\n return React.cloneElement(child, {\n variant,\n size,\n disabled: disabled || child.props.disabled,\n fullWidth: fullWidth || child.props.fullWidth,\n style: [\n { borderRadius: 0, borderWidth: 0 },\n borderStyle,\n radiusStyle,\n child.props.style,\n ].filter(Boolean),\n });\n })}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { View, StyleProp, ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type CardPadding = \"sm\" | \"md\" | \"lg\" | \"none\";\n\nexport interface CardProps {\n children: React.ReactNode;\n /** If provided, card becomes pressable */\n onPress?: () => void;\n /** Inner padding preset */\n padding?: CardPadding;\n /** Accessibility label (required if pressable) */\n accessibilityLabel?: string;\n /** Additional style override */\n style?: StyleProp;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Card({\n children,\n onPress,\n padding = \"md\",\n accessibilityLabel,\n style,\n}: CardProps) {\n const { card } = useComponentTokens();\n\n const containerStyle = useMemo(() => [\n card.container,\n padding !== \"none\" && { padding: card.padding[padding] },\n style,\n ], [card, padding, style]);\n\n if (onPress) {\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress,\n feedbackMode: \"scaleSubtle\",\n accessibilityLabel,\n accessibilityRole: \"button\",\n });\n\n return (\n \n {/* Reanimated style prop is stricter than RN StyleProp when project uses web types; cast merged styles */}\n \n {children}\n \n \n );\n }\n\n return (\n \n {children}\n \n );\n}","import React from \"react\";\nimport { View, ScrollView, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n SharedValue,\n} from \"react-native-reanimated\";\nimport { useCarousel, useComponentTokens } from \"@truongdq01/headless\";\n\nfunction defaultKeyExtractor(_item: T, index: number): string {\n return `carousel-${index}`;\n}\n\n/** Stable React keys for slides; loop clones get `-loop-prev` / `-loop-next` suffixes. */\nfunction getSlideKey(\n item: T,\n indexInDisplay: number,\n loop: boolean,\n n: number,\n keyExtractor: (item: T, index: number) => string\n): string {\n if (!loop || n < 2) {\n return keyExtractor(item, indexInDisplay);\n }\n if (indexInDisplay === 0) {\n return `${keyExtractor(item, n - 1)}-loop-prev`;\n }\n if (indexInDisplay === n + 1) {\n return `${keyExtractor(item, 0)}-loop-next`;\n }\n return keyExtractor(item, indexInDisplay - 1);\n}\n\nexport interface CarouselProps {\n data: T[];\n renderItem: (item: T, index: number) => React.ReactNode;\n itemWidth?: number;\n gap?: number;\n height?: number;\n showPagination?: boolean;\n loop?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n /** Stable key per data item; loop mode appends `-loop-prev` / `-loop-next` for edge clones. */\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function Carousel({\n data,\n renderItem,\n itemWidth,\n gap = 0,\n height = 200,\n showPagination = true,\n loop = false,\n autoPlay = false,\n autoPlayInterval = 3000,\n keyExtractor = defaultKeyExtractor,\n}: CarouselProps) {\n const { width: windowWidthPx } = useWindowDimensions();\n const windowWidth = Math.max(1, windowWidthPx > 0 ? windowWidthPx : 375);\n const resolvedItemWidth = itemWidth ?? windowWidth;\n const contentPaddingStart = (windowWidth - resolvedItemWidth) / 2;\n\n const { carousel } = useComponentTokens();\n const {\n scrollViewRef,\n scrollX,\n displayData,\n snapToOffsets,\n onScroll,\n onMomentumScrollEnd,\n itemStep,\n n,\n contentPaddingStart: snapPad,\n } = useCarousel({\n data,\n itemWidth: resolvedItemWidth,\n gap,\n contentPaddingStart,\n loop,\n autoPlay,\n autoPlayInterval,\n });\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n \n \n {displayData.map((item: T, index: number) => {\n return (\n \n {renderItem(item, loop ? (index - 1 + n) % n : index)}\n \n );\n })}\n \n\n {showPagination && (\n \n {data.map((_, i) => {\n return (\n \n );\n })}\n \n )}\n \n );\n}\n\nfunction PaginationDot({\n index,\n scrollX,\n itemStep,\n contentPaddingStart,\n isLoop,\n n,\n dot,\n}: {\n index: number;\n scrollX: SharedValue;\n itemStep: number;\n contentPaddingStart: number;\n isLoop: boolean;\n n: number;\n dot: ReturnType[\"carousel\"][\"dot\"];\n}) {\n const dotStyle = useAnimatedStyle(() => {\n let activeIndex = (scrollX.value - contentPaddingStart) / itemStep;\n if (isLoop) {\n activeIndex = activeIndex - 1;\n if (activeIndex < 0) activeIndex = n - 1;\n if (activeIndex >= n) activeIndex = 0;\n }\n\n const opacity = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.opacity, 1, dot.inactive.opacity],\n Extrapolation.CLAMP\n );\n\n const width = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.width, dot.active.width, dot.inactive.width],\n Extrapolation.CLAMP\n );\n\n return {\n width,\n opacity,\n backgroundColor: dot.active.bg,\n height: dot.height,\n borderRadius: dot.borderRadius,\n };\n });\n\n return ;\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useCheckbox, useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseCheckboxOptions } from \"@truongdq01/headless\";\n\nexport interface CheckboxProps extends UseCheckboxOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Checkbox({\n label,\n description,\n size = \"md\",\n ...hookOptions\n}: CheckboxProps) {\n const { checkbox } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isChecked, isIndeterminate, isDisabled, toggle, accessibilityProps } =\n useCheckbox(hookOptions);\n\n const sizeConfig = checkbox.size[size];\n\n // Animated values\n const scale = useSharedValue(1);\n const fillProgress = useSharedValue(isChecked || isIndeterminate ? 1 : 0);\n\n React.useEffect(() => {\n const target = isChecked || isIndeterminate ? 1 : 0;\n fillProgress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isChecked, isIndeterminate, reduceMotion]);\n\n const boxStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.backgroundColor, checkbox.state.checked.backgroundColor]\n ),\n borderColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.borderColor, checkbox.state.checked.borderColor]\n ),\n transform: [{ scale: scale.value }],\n }));\n\n const checkStyle = useAnimatedStyle(() => ({\n opacity: fillProgress.value,\n transform: [{ scale: fillProgress.value }],\n }));\n\n const handlePress = () => {\n if (!reduceMotion) {\n scale.value = withSpring(0.88, spring.snappy, () => {\n scale.value = withSpring(1, spring.snappy);\n });\n }\n toggle();\n };\n\n return (\n \n \n \n {isIndeterminate ? (\n \n ) : (\n \n ✓\n \n )}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useIconStyle, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ChipProps {\n label: React.ReactNode;\n variant?: \"solid\" | \"outlined\" | \"subtle\";\n color?: \"default\" | \"primary\" | \"secondary\" | \"error\" | \"info\" | \"success\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n onDelete?: () => void;\n onClick?: () => void;\n disabled?: boolean;\n clickable?: boolean;\n}\n\nexport function Chip({\n label,\n variant = \"solid\",\n color = \"default\",\n size = \"md\",\n avatar,\n icon,\n deleteIcon,\n onDelete,\n onClick,\n disabled = false,\n clickable = false,\n}: ChipProps) {\n const tokens = useTokens();\n const { chip } = useComponentTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"list\");\n\n const palette = {\n default: { bg: tokens.color.bg.muted, text: tokens.color.text.primary, border: tokens.color.border.default },\n primary: { bg: tokens.color.brand.subtle, text: tokens.color.brand.text, border: tokens.color.brand.default },\n secondary: { bg: tokens.color.brand.muted, text: tokens.color.brand.text, border: tokens.color.brand.default },\n success: { bg: tokens.color.success.bg, text: tokens.color.success.text, border: tokens.color.success.border },\n error: { bg: tokens.color.error.bg, text: tokens.color.error.text, border: tokens.color.error.border },\n info: { bg: tokens.color.info.bg, text: tokens.color.info.text, border: tokens.color.info.border },\n warning: { bg: tokens.color.warning.bg, text: tokens.color.warning.text, border: tokens.color.warning.border },\n } as const;\n\n const colors = palette[color];\n const vStyle = chip.variant[variant];\n\n // Map specific color overrides matching the palette to variant styling\n const customBg = variant === \"solid\" && color !== \"default\" ? colors.bg : vStyle.bg;\n const customBorder = variant === \"outlined\" && color !== \"default\" ? colors.border : vStyle.border;\n const customText = color !== \"default\" ? colors.text : vStyle.text;\n\n const sizeStyle = chip.size[size] || chip.size.md;\n \n const container = {\n flexDirection: chip.container.flexDirection,\n alignItems: chip.container.alignItems,\n justifyContent: chip.container.justifyContent,\n gap: tokens.spacing[2],\n paddingHorizontal: sizeStyle.paddingHorizontal,\n paddingVertical: tokens.spacing[1],\n height: sizeStyle.height,\n borderRadius: chip.container.borderRadius,\n backgroundColor: customBg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: customBorder,\n opacity: disabled ? tokens.opacity[60] : 1,\n minHeight: size === \"sm\" ? 24 : size === \"lg\" ? 40 : 32,\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? (size === \"sm\" ? 14 : 16),\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const avatarStyle = {\n width: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n height: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n borderRadius: 12,\n marginRight: tokens.spacing[1],\n };\n\n const deleteButtonStyle = {\n padding: tokens.spacing[1],\n marginLeft: tokens.spacing[1],\n borderRadius: tokens.radius.full,\n minWidth: 28,\n minHeight: 28,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n };\n\n const content = (\n \n {avatar && {avatar}}\n {renderIcon(icon)}\n \n {label}\n \n {onDelete && (\n \n {deleteIcon ?? (\n ×\n )}\n \n )}\n \n );\n\n if (onClick || clickable) {\n return (\n \n {content}\n \n );\n }\n\n return content;\n}\n","import React from \"react\";\nimport { ActivityIndicator, View, Text, StyleSheet } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n/**\n * Available progress indicator variants\n */\nexport type CircularProgressVariant = \"indeterminate\" | \"determinate\";\n\n/**\n * Available progress indicator colors\n */\nexport type CircularProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"inherit\";\n\n/**\n * Props for the CircularProgress component\n */\nexport interface CircularProgressProps {\n size?: number | \"sm\" | \"md\" | \"lg\" | \"small\" | \"medium\" | \"large\";\n color?: CircularProgressColor;\n thickness?: number;\n value?: number;\n variant?: CircularProgressVariant;\n showLabel?: boolean;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Circular progress indicator component using native ActivityIndicator.\n * Supports both indeterminate and determinate progress with accessibility.\n *\n * @param props - Progress indicator configuration\n * @returns React progress component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function CircularProgress({\n size = \"md\",\n color = \"primary\",\n thickness,\n value = 0,\n variant = \"indeterminate\",\n showLabel = false,\n style,\n}: CircularProgressProps) {\n const tokens = useTokens();\n const { circularProgress } = useComponentTokens();\n\n const sizeMap: Record = {\n sm: circularProgress.size.sm,\n md: circularProgress.size.md,\n lg: circularProgress.size.lg,\n small: circularProgress.size.sm,\n medium: circularProgress.size.md,\n large: circularProgress.size.lg,\n };\n\n const resolvedSize = typeof size === \"number\" ? size : sizeMap[size] || circularProgress.size.md;\n const resolvedColor = {\n primary: circularProgress.color,\n secondary: tokens.color.text.secondary,\n success: tokens.color.success.icon,\n error: tokens.color.error.icon,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color];\n\n const progressValue = clamp(value);\n\n return (\n \n \n {variant === \"determinate\" && showLabel && (\n \n \n \n {Math.round(progressValue)}%\n \n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n labelContainer: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React, { useState, useMemo } from \"react\";\nimport { View, Text, Pressable, Platform, Modal, StyleSheet } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\nimport DateTimePicker from \"@react-native-community/datetimepicker\";\nimport { Icon } from \"../Icon\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { TimePickerWheels } from \"./TimePickerWheels\";\n\nexport type DatePickerPreset = \"today\" | \"yesterday\" | \"last7\" | \"last30\" | \"last90\" | null;\n\nexport type DatePickerStyle = \"calendar\" | \"spinner\" | \"native\";\n\nexport interface DatePickerProps {\n label?: string;\n date: Date | null;\n onChange: (date: Date) => void;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n icon?: React.ReactNode;\n minimumDate?: Date;\n maximumDate?: Date;\n mode?: \"date\" | \"time\" | \"datetime\";\n presets?: DatePickerPreset[];\n onPresetChange?: (preset: DatePickerPreset) => void;\n clearable?: boolean;\n /**\n * `\"calendar\"` — custom CalendarGrid in a bottom-sheet-style modal (default for date mode).\n * `\"spinner\"` — iOS drum-roll / Android native.\n * `\"native\"` — platform-default DateTimePicker.\n */\n pickerStyle?: DatePickerStyle;\n /** Forwarded to `@react-native-community/datetimepicker` — behavior is platform-specific. */\n locale?: string;\n /** Forwarded to `@react-native-community/datetimepicker`. */\n timeZoneOffsetInMinutes?: number;\n /** Forwarded to `@react-native-community/datetimepicker` (Android / newer iOS). */\n timeZoneOffsetInSeconds?: number;\n /** IANA tz name; forwarded to `@react-native-community/datetimepicker`. */\n timeZoneName?: string;\n}\n\nexport function DatePicker({\n label,\n date,\n onChange,\n placeholder = \"Select date\",\n disabled = false,\n error,\n icon,\n minimumDate,\n maximumDate,\n mode = \"date\",\n presets = [\"today\", \"last7\", \"last30\"],\n onPresetChange,\n clearable = true,\n pickerStyle: pickerStyleProp,\n locale,\n timeZoneOffsetInMinutes,\n timeZoneOffsetInSeconds,\n timeZoneName,\n}: DatePickerProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const insets = useSafeAreaInsets();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const [showPicker, setShowPicker] = useState(false);\n const [selectedPreset, setSelectedPreset] = useState(null);\n const [pickerDraft, setPickerDraft] = useState(() => date ?? new Date());\n const [yearPick, setYearPick] = useState(false);\n\n const initDate = date ?? new Date();\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n\n const effectivePickerStyle: DatePickerStyle = pickerStyleProp ?? \"calendar\";\n\n const yearOptions = useMemo(() => Array.from({ length: 12 }, (_, i) => calYear - 5 + i), [calYear]);\n\n const modalTitle =\n mode === \"time\" ? \"Select time\" : mode === \"datetime\" ? \"Select date & time\" : \"Select date\";\n\n const handleCalendarMonthChange = (m: number, y: number) => {\n setCalMonth(m);\n setCalYear(y);\n };\n\n const formattedDate = date\n ? mode === \"time\"\n ? date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n : mode === \"datetime\"\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`\n : date.toLocaleDateString()\n : \"\";\n\n const displayValue = date ? formattedDate : placeholder;\n\n const getPresetDate = (preset: DatePickerPreset): Date => {\n const now = new Date();\n switch (preset) {\n case \"today\": return now;\n case \"yesterday\": return new Date(now.setDate(now.getDate() - 1));\n case \"last7\": return new Date(now.setDate(now.getDate() - 7));\n case \"last30\": return new Date(now.setDate(now.getDate() - 30));\n case \"last90\": return new Date(now.setDate(now.getDate() - 90));\n default: return now;\n }\n };\n\n const handlePresetPress = (preset: DatePickerPreset) => {\n if (!preset || disabled) return;\n const presetDate = getPresetDate(preset);\n onChange(presetDate);\n setSelectedPreset(preset);\n onPresetChange?.(preset);\n };\n\n const handleClear = () => {\n setSelectedPreset(null);\n onPresetChange?.(null);\n };\n\n const handlePressTrigger = () => {\n if (disabled) return;\n const ref = date ?? new Date();\n setPickerDraft(ref);\n setCalMonth(ref.getMonth());\n setCalYear(ref.getFullYear());\n setYearPick(false);\n setShowPicker(true);\n };\n\n const handleChange = (_event: any, selectedDate?: Date) => {\n if (Platform.OS === \"android\") {\n setShowPicker(false);\n }\n if (selectedDate) {\n setSelectedPreset(null);\n onChange(selectedDate);\n }\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? iconSize,\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const pickerComponent = showPicker ? (\n \n ) : null;\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n {/* Quick presets */}\n {presets && presets.length > 0 && (\n \n {presets.map((preset) => (\n handlePresetPress(preset)}\n disabled={disabled}\n style={({ pressed }) => [\n {\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n backgroundColor: selectedPreset === preset\n ? tokens.color.brand.default\n : tokens.color.bg.muted,\n borderRadius: tokens.radius.full,\n },\n { opacity: (disabled || pressed) ? 0.6 : 1 }\n ]}\n >\n \n {preset?.replace(\"last\", \"Last \").replace(\"today\", \"Today\").replace(\"yesterday\", \"Yesterday\")}\n \n \n ))}\n \n )}\n\n {/* Date input field */}\n \n {icon && renderIcon(icon)}\n \n {displayValue}\n \n {/* Clear button */}\n {clearable && date && (\n \n \n \n )}\n {/* Calendar icon indicator */}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n {/* Calendar mode — custom grid in bottom-sheet-style modal */}\n {effectivePickerStyle === \"calendar\" && showPicker && (\n { setShowPicker(false); setYearPick(false); }}>\n \n { setShowPicker(false); setYearPick(false); }}\n accessibilityLabel=\"Dismiss\"\n />\n \n {/* Handle bar */}\n \n \n \n\n {/* Header */}\n \n \n {modalTitle}\n \n { setShowPicker(false); setYearPick(false); }} hitSlop={12} accessibilityRole=\"button\" accessibilityLabel=\"Close\">\n \n \n \n\n {yearPick && mode !== \"time\" ? (\n \n {yearOptions.map((y) => (\n {\n setCalYear(y);\n setYearPick(false);\n }}\n style={{\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n borderRadius: tokens.radius.md,\n backgroundColor: y === calYear ? tokens.color.brand.subtle : tokens.color.bg.muted,\n }}\n >\n \n {y}\n \n \n ))}\n \n ) : (\n <>\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n setPickerDraft((prev) => {\n const next = new Date(prev);\n next.setFullYear(d.getFullYear(), d.getMonth(), d.getDate());\n return next;\n });\n setSelectedPreset(null);\n }}\n onMonthChange={handleCalendarMonthChange}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n locale={locale}\n onHeaderPress={() => setYearPick(true)}\n />\n \n )}\n\n {(mode === \"time\" || mode === \"datetime\") && (\n \n )}\n\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n const now = new Date();\n setPickerDraft(now);\n setCalMonth(now.getMonth());\n setCalYear(now.getFullYear());\n setSelectedPreset(null);\n }}\n style={{\n alignItems: \"center\",\n paddingVertical: tokens.spacing[3],\n borderRadius: tokens.radius.lg,\n backgroundColor: tokens.color.brand.subtle,\n }}\n >\n \n Today\n \n \n \n )}\n \n )}\n\n \n { setShowPicker(false); setYearPick(false); }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Cancel\"\n >\n \n Cancel\n \n \n {\n onChange(pickerDraft);\n setSelectedPreset(null);\n setShowPicker(false);\n setYearPick(false);\n }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Confirm\"\n >\n \n Confirm\n \n \n \n \n \n \n )}\n\n {/* Spinner / native mode — iOS: Modal overlay */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"ios\" && showPicker && (\n \n \n \n \n setShowPicker(false)} hitSlop={12}>\n \n Done\n \n \n \n {pickerComponent}\n \n \n \n )}\n\n {/* Spinner / native mode — Android: native dialog */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"android\" && pickerComponent}\n \n );\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarGridProps {\n month: number;\n year: number;\n selectedDate: Date | null;\n onSelectDate: (date: Date) => void;\n onMonthChange: (month: number, year: number) => void;\n minimumDate?: Date;\n maximumDate?: Date;\n /** BCP 47 locale for month title and weekday labels (default `undefined` = runtime default). */\n locale?: string;\n /** e.g. open year picker */\n onHeaderPress?: () => void;\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction isToday(d: Date): boolean {\n return isSameDay(d, new Date());\n}\n\nfunction isDateDisabled(d: Date, min?: Date, max?: Date): boolean {\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (d < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (d > maxDay) return true;\n }\n return false;\n}\n\nexport function CalendarGrid({\n month,\n year,\n selectedDate,\n onSelectDate,\n onMonthChange,\n minimumDate,\n maximumDate,\n locale,\n onHeaderPress,\n}: CalendarGridProps) {\n const t = useTokens();\n\n const weekdayLabels = useMemo(() => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const baseMonday = new Date(2024, 0, 8);\n return Array.from({ length: 7 }, (_, i) =>\n formatter.format(new Date(baseMonday.getFullYear(), baseMonday.getMonth(), baseMonday.getDate() + i))\n );\n }, [locale]);\n\n const monthYearTitle = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(new Date(year, month, 1)),\n [locale, year, month]\n );\n\n const goPrev = useCallback(() => {\n if (month === 0) onMonthChange(11, year - 1);\n else onMonthChange(month - 1, year);\n }, [month, year, onMonthChange]);\n\n const goNext = useCallback(() => {\n if (month === 11) onMonthChange(0, year + 1);\n else onMonthChange(month + 1, year);\n }, [month, year, onMonthChange]);\n\n const cells = useMemo(() => {\n const firstDay = new Date(year, month, 1);\n let startWeekday = firstDay.getDay() - 1;\n if (startWeekday < 0) startWeekday = 6;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const rows: { date: Date; inMonth: boolean }[][] = [];\n let row: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = 0; i < startWeekday; i++) {\n const day = daysInPrevMonth - startWeekday + 1 + i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n row.push({ date: new Date(prevYear, prevMonth, day), inMonth: false });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n row.push({ date: new Date(year, month, d), inMonth: true });\n if (row.length === 7) {\n rows.push(row);\n row = [];\n }\n }\n\n if (row.length > 0) {\n let nextDay = 1;\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n while (row.length < 7) {\n row.push({ date: new Date(nextYear, nextMonth, nextDay++), inMonth: false });\n }\n rows.push(row);\n }\n\n return rows;\n }, [month, year]);\n\n const cellSize = 40;\n\n return (\n \n {/* Month navigation */}\n \n \n \n \n onHeaderPress?.()} disabled={!onHeaderPress} accessibilityRole={onHeaderPress ? \"button\" : undefined}>\n \n {monthYearTitle}\n \n \n \n \n \n \n\n {/* Weekday headers */}\n \n {weekdayLabels.map((wd) => (\n \n \n {wd}\n \n \n ))}\n \n\n {/* Day grid */}\n {cells.map((row, ri) => (\n \n {row.map((cell, ci) => {\n const selected = selectedDate ? isSameDay(cell.date, selectedDate) : false;\n const today = isToday(cell.date);\n const disabled = !cell.inMonth || isDateDisabled(cell.date, minimumDate, maximumDate);\n\n return (\n { if (!disabled) onSelectDate(cell.date); }}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={cell.date.toDateString()}\n accessibilityState={{ selected, disabled }}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n height: cellSize,\n }}\n >\n \n \n {cell.date.getDate()}\n \n \n \n );\n })}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { View, Text, ScrollView, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nconst ROW = 40;\nconst VISIBLE = 5;\n\nfunction pad2(n: number): string {\n return n.toString().padStart(2, \"0\");\n}\n\nexport interface TimePickerWheelsProps {\n value: Date;\n onChange: (next: Date) => void;\n}\n\n/**\n * Simple scrollable hour / minute columns (bottom-sheet style).\n */\nexport function TimePickerWheels({ value, onChange }: TimePickerWheelsProps) {\n const t = useTokens();\n const h = value.getHours();\n const m = value.getMinutes();\n const hours = useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);\n const minutes = useMemo(() => Array.from({ length: 60 }, (_, i) => i), []);\n\n const setHM = useCallback(\n (nh: number, nm: number) => {\n const d = new Date(value);\n d.setHours(nh, nm, 0, 0);\n onChange(d);\n },\n [value, onChange]\n );\n\n const col = (label: string, child: React.ReactNode) => (\n \n \n {label}\n \n \n {child}\n \n \n );\n\n return (\n \n {col(\n \"Hour\",\n hours.map((hour) => (\n setHM(hour, m)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: hour === h ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(hour)}\n \n \n ))\n )}\n {col(\n \"Min\",\n minutes.map((minute) => (\n setHM(h, minute)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: minute === m ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(minute)}\n \n \n ))\n )}\n \n );\n}\n","import React from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n/**\n * Props for the Dialog component\n */\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n fullWidth?: boolean;\n /** Accessibility label for the dialog container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\n/**\n * Dialog component that displays modal content with backdrop and accessibility support.\n *\n * @param props - Dialog configuration props\n * @returns React element or null if not open\n *\n * @example\n * ```tsx\n * setIsOpen(false)}\n * title=\"Confirm Action\"\n * >\n * Are you sure?\n * \n * ```\n */\nexport function Dialog({\n open,\n onClose,\n title,\n children,\n actions,\n fullWidth = false,\n accessibilityLabel = \"Dialog\",\n backdropAccessibilityLabel = \"Dismiss dialog\",\n}: DialogProps) {\n const { dialog, modal } = useComponentTokens();\n const tokens = useTokens();\n\n if (!open) return null;\n\n return (\n \n \n \n \n {title && (\n \n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n )}\n \n {children}\n \n {actions && (\n \n {actions}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface DividerProps {\n /** Label shown centered in the divider */\n label?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Use a stronger border color */\n emphasis?: boolean;\n /** Extra vertical margin around horizontal dividers */\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Divider({\n label,\n orientation = \"horizontal\",\n emphasis = false,\n spacing = \"md\",\n}: DividerProps) {\n const { divider } = useComponentTokens();\n const tokens = useTokens();\n\n const lineColor = emphasis\n ? tokens.color.border.strong\n : divider.color;\n\n const verticalMargin = {\n none: 0,\n sm: tokens.spacing[2],\n md: divider.margin,\n lg: tokens.spacing[6],\n }[spacing];\n\n if (orientation === \"vertical\") {\n return (\n \n );\n }\n\n if (label) {\n return (\n \n \n \n {label}\n \n \n \n );\n }\n\n return (\n \n );\n}","import React, { useEffect } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type ViewStyle } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\n\nexport type DrawerAnchor = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n anchor?: DrawerAnchor;\n children?: React.ReactNode;\n /** Accessibility label for the drawer container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport function Drawer({\n open,\n onClose,\n anchor = \"left\",\n children,\n accessibilityLabel = \"Drawer\",\n backdropAccessibilityLabel = \"Dismiss drawer\",\n}: DrawerProps) {\n const { drawer } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { width: windowWidth, height: windowHeight } = Dimensions.get(\"window\");\n\n const isVertical = anchor === \"top\" || anchor === \"bottom\";\n const size = isVertical ? windowHeight * 0.4 : 280;\n \n const progress = useSharedValue(0);\n const [mounted, setMounted] = React.useState(open);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n if (reduceMotion) {\n progress.value = 1;\n } else {\n progress.value = withSpring(1, spring.snappy);\n }\n } else {\n if (reduceMotion) {\n progress.value = 0;\n setMounted(false);\n } else {\n progress.value = withSpring(0, spring.snappy, (finished) => {\n if (finished) runOnJS(setMounted)(false);\n });\n }\n }\n }, [open, reduceMotion]);\n\n const animatedStyle = useAnimatedStyle(() => {\n const translate = (1 - progress.value) * size;\n let transform: any[] = [];\n\n if (anchor === \"left\") transform = [{ translateX: -translate }];\n else if (anchor === \"right\") transform = [{ translateX: translate }];\n else if (anchor === \"top\") transform = [{ translateY: -translate }];\n else if (anchor === \"bottom\") transform = [{ translateY: translate }];\n\n return {\n transform,\n };\n });\n\n const backdropStyle = useAnimatedStyle(() => ({\n opacity: progress.value,\n }));\n\n if (!mounted) return null;\n\n const containerStyle: ViewStyle = {\n position: \"absolute\",\n ...(anchor === \"left\" ? { left: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"right\" ? { right: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"top\" ? { top: 0, left: 0, right: 0, height: size } : {}),\n ...(anchor === \"bottom\" ? { bottom: 0, left: 0, right: 0, height: size } : {}),\n };\n\n return (\n \n \n \n \n \n \n {children}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport type { SemanticTokens } from \"@truongdq01/tokens\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nexport type EmptyStateSize = \"sm\" | \"md\" | \"lg\";\n\nexport type EmptyStateVariant =\n | \"default\"\n | \"search\"\n | \"error\"\n | \"offline\"\n | \"permission\"\n | \"empty\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: EmptyStateSize;\n variant?: EmptyStateVariant;\n illustration?: React.ReactNode;\n}\n\nfunction variantSemantics(variant: EmptyStateVariant, tokens: SemanticTokens): { iconColor: string; wrapBg: string } {\n switch (variant) {\n case \"error\":\n case \"permission\":\n return { iconColor: tokens.color.error.icon, wrapBg: tokens.color.error.bg };\n case \"offline\":\n return { iconColor: tokens.color.warning.icon, wrapBg: tokens.color.warning.bg };\n case \"search\":\n return { iconColor: tokens.color.text.tertiary, wrapBg: tokens.color.bg.muted };\n case \"empty\":\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n default:\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n }\n}\n\nconst VARIANT_DEFAULTS: Record<\n Exclude,\n { title: string; description: string; iconName: IconName }\n> = {\n search: {\n title: \"No results found\",\n description: \"Try different keywords or filters.\",\n iconName: \"search\",\n },\n error: {\n title: \"Something went wrong\",\n description: \"We couldn't load this content. Try again.\",\n iconName: \"error\",\n },\n offline: {\n title: \"You're offline\",\n description: \"Check your connection and try again.\",\n iconName: \"warning\",\n },\n permission: {\n title: \"Access denied\",\n description: \"You don't have permission to view this.\",\n iconName: \"lock\",\n },\n empty: {\n title: \"Nothing here yet\",\n description: \"When there is content, it will show up here.\",\n iconName: \"package\",\n },\n};\n\nexport function EmptyState({\n title,\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n illustration,\n}: EmptyStateProps) {\n const { emptyState } = useComponentTokens();\n const tokens = useTokens();\n\n const meta = variant !== \"default\" ? VARIANT_DEFAULTS[variant] : null;\n const resolvedTitle = title ?? meta?.title;\n const resolvedDescription = description ?? meta?.description;\n\n const { iconColor, wrapBg } = variantSemantics(variant, tokens);\n\n const iconSize = Math.round(emptyState.icon.size / 2);\n const resolvedIcon =\n icon ??\n (meta ? (\n \n ) : null);\n\n const sizePad = emptyState.containerSize[size];\n const titleSize = emptyState.titleSize[size];\n const descSize = emptyState.descriptionSize[size];\n\n return (\n \n {illustration && {illustration}}\n\n {resolvedIcon && (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(resolvedIcon)\n ? React.cloneElement(resolvedIcon, {\n size: resolvedIcon.props.size ?? iconSize,\n color: resolvedIcon.props.color ?? iconColor,\n })\n : resolvedIcon}\n \n )}\n\n {resolvedTitle && (\n \n {resolvedTitle}\n \n )}\n\n {resolvedDescription && (\n \n {resolvedDescription}\n \n )}\n\n {action && (\n \n {action}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface FabProps {\n icon?: React.ReactNode;\n label?: string;\n onPress?: () => void;\n disabled?: boolean;\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"circular\" | \"extended\";\n accessibilityLabel?: string;\n}\n\nexport function Fab({\n icon,\n label,\n onPress,\n disabled = false,\n color = \"primary\",\n size = \"md\",\n variant = \"circular\",\n accessibilityLabel,\n}: FabProps) {\n const { fab } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress,\n disabled,\n feedbackMode: \"scale\",\n accessibilityLabel: accessibilityLabel ?? label ?? (typeof icon === \"string\" ? icon : \"FAB\"),\n accessibilityRole: \"button\",\n });\n\n const isExtended = variant === \"extended\" && !!label;\n \n // Base color from component tokens - Fab only has primary/secondary in tokens\n const baseColor = color === \"primary\" ? fab.color.primary.bg : fab.color.secondary.bg;\n const textColor = \"#FFFFFF\";\n\n const sizeMap = {\n sm: { size: 40, iconSize: 20 },\n md: { size: 56, iconSize: 24 },\n lg: { size: 72, iconSize: 28 },\n };\n\n const s = sizeMap[size];\n\n const containerStyle = [\n fab.container,\n {\n backgroundColor: baseColor,\n height: s.size,\n minWidth: s.size,\n borderRadius: s.size / 2,\n paddingHorizontal: isExtended ? 20 : 0,\n },\n disabled && { opacity: 0.5 },\n animatedStyle,\n ];\n\n return (\n \n \n \n {icon && (\n \n {icon}\n \n )}\n {isExtended && (\n \n {label}\n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontWeight: \"600\",\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n});\n","import React, { createContext, useContext, useCallback } from \"react\";\nimport { View, ScrollView, StyleSheet, Platform } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface FormContextValue {\n values: Record;\n errors: Record;\n touched: Record;\n isSubmitting: boolean;\n isValid: boolean;\n setValue: (name: string, value: any) => void;\n setError: (name: string, error: string) => void;\n setTouched: (name: string, touched: boolean) => void;\n handleSubmit: (callback: (values: Record) => void | Promise) => () => void;\n resetForm: () => void;\n}\n\nconst FormContext = createContext(null);\n\nexport function useForm() {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error(\"useForm must be used within a Form component\");\n }\n return context;\n}\n\nexport interface FormProps {\n /** Initial form values */\n initialValues?: Record;\n /** Validation function */\n validate?: (values: Record) => Record;\n /** Submit handler */\n onSubmit?: (values: Record) => void | Promise;\n /** Children components */\n children: React.ReactNode;\n /** Whether to show validation on change */\n validateOnChange?: boolean;\n /** Whether to show validation on blur */\n validateOnBlur?: boolean;\n /** Enable keyboard avoiding view */\n enableKeyboardAvoidingView?: boolean;\n /** Scrollable form */\n scrollable?: boolean;\n /** Custom style */\n style?: object;\n /** Test ID */\n testID?: string;\n}\n\n/**\n * Form component that provides form state management and validation.\n * Supports controlled inputs, validation, and submission handling.\n */\nexport function Form({\n initialValues = {},\n validate,\n onSubmit,\n children,\n validateOnChange = true,\n validateOnBlur = true,\n enableKeyboardAvoidingView = true,\n scrollable = true,\n style,\n testID = \"form\",\n}: FormProps) {\n const tokens = useTokens();\n\n const [values, setValues] = React.useState>(initialValues);\n const [errors, setErrors] = React.useState>({});\n const [touched, setTouched] = React.useState>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const runValidation = useCallback((currentValues: Record) => {\n if (!validate) return {};\n\n try {\n return validate(currentValues);\n } catch (error) {\n console.error(\"Form validation error:\", error);\n return {};\n }\n }, [validate]);\n\n const isValid = React.useMemo(() => {\n return Object.keys(errors).length === 0;\n }, [errors]);\n\n const setValue = useCallback((name: string, value: any) => {\n setValues(prev => ({ ...prev, [name]: value }));\n\n if (validateOnChange) {\n setValues(current => {\n const newErrors = runValidation({ ...current, [name]: value });\n setErrors(newErrors);\n return current;\n });\n }\n }, [validateOnChange, runValidation]);\n\n const setError = useCallback((name: string, error: string) => {\n setErrors(prev => ({ ...prev, [name]: error }));\n }, []);\n\n const setTouchedField = useCallback((name: string, fieldTouched: boolean) => {\n setTouched(prev => ({ ...prev, [name]: fieldTouched }));\n\n if (validateOnBlur && fieldTouched) {\n const newErrors = runValidation(values);\n setErrors(newErrors);\n }\n }, [validateOnBlur, runValidation, values]);\n\n const handleSubmit = useCallback((callback: (values: Record) => void | Promise) => {\n return async () => {\n if (isSubmitting) return;\n\n // Mark all fields as touched\n const allTouched = Object.keys(values).reduce((acc, key) => {\n acc[key] = true;\n return acc;\n }, {} as Record);\n setTouched(allTouched);\n\n // Run final validation\n const finalErrors = runValidation(values);\n setErrors(finalErrors);\n\n if (Object.keys(finalErrors).length > 0) {\n return; // Don't submit if there are errors\n }\n\n setIsSubmitting(true);\n try {\n await callback(values);\n } catch (error) {\n console.error(\"Form submission error:\", error);\n } finally {\n setIsSubmitting(false);\n }\n };\n }, [values, runValidation, isSubmitting]);\n\n const resetForm = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setIsSubmitting(false);\n }, [initialValues]);\n\n const contextValue: FormContextValue = {\n values,\n errors,\n touched,\n isSubmitting,\n isValid,\n setValue,\n setError,\n setTouched: setTouchedField,\n handleSubmit,\n resetForm,\n };\n\n const formContent = (\n \n \n {children}\n \n \n );\n\n if (scrollable) {\n return (\n \n {formContent}\n \n );\n }\n\n return formContent;\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n paddingVertical: 16,\n },\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type FormControlVariant = \"filled\" | \"outlined\" | \"standard\";\nexport type FormControlMargin = \"dense\" | \"none\" | \"normal\";\n\ninterface FormControlContextValue {\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n}\n\nconst FormControlContext = createContext(null);\n\nexport function useFormControl() {\n return useContext(FormControlContext);\n}\n\nexport interface FormControlProps {\n children?: React.ReactNode;\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n margin?: FormControlMargin;\n style?: object;\n}\n\nexport function FormControl({\n children,\n error,\n required,\n disabled,\n focused,\n fullWidth,\n variant = \"outlined\",\n margin = \"none\",\n style,\n}: FormControlProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n \n const marginSize = useMemo(() => {\n if (margin === \"dense\") return tokens.spacing[2];\n if (margin === \"normal\") return tokens.spacing[4];\n return 0;\n }, [margin, tokens]);\n\n const ctxValue = useMemo(() => ({ error, required, disabled, focused, fullWidth, variant }), [error, required, disabled, focused, fullWidth, variant]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface FormLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormLabel({ children, style }: FormLabelProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : ctx?.disabled \n ? formControl.label.color + \"80\" \n : formControl.label.color;\n\n return (\n \n {children}{ctx?.required ? \" *\" : \"\"}\n \n );\n}\n\nexport interface FormHelperTextProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormHelperText({ children, style }: FormHelperTextProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : formControl.helperText.color;\n\n return (\n \n {children}\n \n );\n}\n\nexport interface FormControlLabelProps {\n control: React.ReactElement;\n label?: React.ReactNode;\n labelPlacement?: \"end\" | \"start\" | \"top\" | \"bottom\";\n disabled?: boolean;\n onPress?: () => void;\n style?: object;\n}\n\nexport function FormControlLabel({\n control,\n label,\n labelPlacement = \"end\",\n disabled,\n onPress,\n style,\n}: FormControlLabelProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.disabled ?? false;\n\n const controlElement = React.cloneElement(control, {\n disabled: isDisabled,\n });\n\n const isRow = labelPlacement === \"start\" || labelPlacement === \"end\";\n const rowReverse = labelPlacement === \"start\";\n const colReverse = labelPlacement === \"top\";\n\n return (\n \n {controlElement}\n {label ? (\n \n {label}\n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\nimport { PasswordInput } from \"../Input/PasswordInput\";\nimport { FormGroupContext, useFormGroupVariant } from \"./FormGroupContext\";\n\nfunction isInputLikeElement(el: React.ReactElement): boolean {\n const C = el.type;\n return C === Input || C === PasswordInput;\n}\n\nfunction enhanceChildForGroupedField(\n child: React.ReactNode,\n label: string | undefined,\n): React.ReactNode {\n if (!label || !React.isValidElement(child)) return child;\n if (!isInputLikeElement(child)) return child;\n const props = child.props as { placeholder?: string };\n return React.cloneElement(child as React.ReactElement>, {\n floatingLabel: true,\n label,\n placeholder: props.placeholder ?? label,\n });\n}\n\nexport interface FormFieldProps {\n label?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n labelTrailing?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function FormField({\n label,\n required = false,\n error,\n helperText,\n labelTrailing,\n children,\n}: FormFieldProps) {\n const { formField, formControl, formGroup } = useComponentTokens();\n const tokens = useTokens();\n const groupVariant = useFormGroupVariant();\n const isGrouped = groupVariant === \"grouped\";\n\n const childEl = React.isValidElement(children) ? children : null;\n const showFloatingClone = Boolean(isGrouped && label && childEl && isInputLikeElement(childEl));\n const showLabelRow = Boolean((label || labelTrailing) && !showFloatingClone);\n\n const renderedChild = showFloatingClone ? enhanceChildForGroupedField(children, label) : children;\n\n const showMessagesBelowField = !isGrouped;\n\n return (\n \n {showLabelRow && (label || labelTrailing) ? (\n \n {label ? (\n \n {label}\n {required ? (\n \n *\n \n ) : null}\n \n ) : null}\n {labelTrailing}\n \n ) : null}\n\n {renderedChild}\n\n {showMessagesBelowField ? (\n error ? (\n \n {error}\n \n ) : helperText ? (\n {helperText}\n ) : null\n ) : null}\n \n );\n}\n\nexport interface FormGroupProps {\n children: React.ReactNode;\n gap?: \"sm\" | \"md\" | \"lg\";\n variant?: \"standard\" | \"grouped\";\n /** Shown under the grouped card (tertiary). */\n footer?: string;\n /** Validation or alert copy under the grouped card (e.g. from `useField`). */\n error?: string;\n}\n\nexport function FormGroup({\n children,\n gap = \"md\",\n variant = \"standard\",\n footer,\n error,\n}: FormGroupProps) {\n const tokens = useTokens();\n const { formGroup } = useComponentTokens();\n const gapSize = { sm: tokens.spacing[3], md: tokens.spacing[5], lg: tokens.spacing[7] }[gap];\n\n if (variant === \"standard\") {\n return (\n \n {children}\n \n );\n }\n\n const items = React.Children.toArray(children).filter(Boolean);\n\n return (\n \n \n \n {items.map((child, i) => (\n \n {child}\n {i < items.length - 1 ? (\n \n ) : null}\n \n ))}\n \n {error ? {error} : null}\n {footer ? {footer} : null}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Pressable } from \"react-native\";\nimport { useIconStyle } from \"@truongdq01/headless\";\nimport { Input, type InputProps } from \"./Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface PasswordInputProps extends InputProps { }\n\n/**\n * A specialized Input component for passwords with a built-in visibility toggle.\n */\nexport function PasswordInput(props: PasswordInputProps) {\n const [show, setShow] = useState(false);\n const { size, color } = useIconStyle(\"input\");\n\n const toggleShow = () => setShow((prev) => !prev);\n\n return (\n \n \n \n }\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nlet BlurView: React.ComponentType | null = null;\ntry {\n BlurView = require(\"expo-blur\").BlurView;\n} catch {\n // expo-blur not installed — fall back to translucent View\n}\n\nexport interface GlassCardProps extends ViewProps {\n /** Blur intensity (0–100). Only effective when expo-blur is installed. Default 40. */\n intensity?: number;\n /** expo-blur tint: \"light\" | \"dark\" | \"default\". Auto-selects from theme when omitted. */\n tint?: \"light\" | \"dark\" | \"default\";\n /** Border radius override. Uses `radius.xl` by default. */\n borderRadius?: number;\n /** Extra styles for the outer container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\nexport function GlassCard({\n intensity = 40,\n tint,\n borderRadius,\n style,\n children,\n ...rest\n}: GlassCardProps) {\n const t = useTokens();\n const isDark = t.color.bg.default !== \"#F8FAFC\";\n\n const resolvedTint = tint ?? (isDark ? \"dark\" : \"light\");\n const resolvedRadius = borderRadius ?? t.radius.xl;\n\n const containerStyle = useMemo(\n () => ({\n borderRadius: resolvedRadius,\n overflow: \"hidden\" as const,\n borderWidth: 1,\n borderColor: t.color.surface.glassBorder ?? (isDark ? \"rgba(255,255,255,0.08)\" : \"rgba(255,255,255,0.3)\"),\n }),\n [resolvedRadius, t.color.surface.glassBorder, isDark],\n );\n\n const fallbackStyle = useMemo(\n () => ({\n ...StyleSheet.absoluteFillObject,\n backgroundColor: t.color.surface.glass ?? (isDark ? \"rgba(15,23,42,0.72)\" : \"rgba(255,255,255,0.72)\"),\n }),\n [t.color.surface.glass, isDark],\n );\n\n return (\n \n {BlurView ? (\n \n ) : (\n \n )}\n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n position: \"relative\",\n zIndex: 1,\n },\n});\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { primitive } from \"@truongdq01/tokens\";\n\nlet ExpoLinearGradient: React.ComponentType | null = null;\ntry {\n ExpoLinearGradient = require(\"expo-linear-gradient\").LinearGradient;\n} catch {\n // expo-linear-gradient not installed — render solid fallback\n}\n\n/**\n * Available gradient preset names from primitive tokens\n */\ntype GradientPreset = keyof typeof primitive.gradient;\n\n/**\n * Props for the Gradient component\n */\nexport interface GradientProps extends ViewProps {\n /** Named gradient preset from primitive tokens. */\n preset?: GradientPreset;\n /** Custom color stops (overrides preset). */\n colors?: readonly string[];\n /** Start point {x, y} — 0‒1 range. Default {x:0, y:0}. */\n start?: { x: number; y: number };\n /** End point {x, y} — 0‒1 range. Default {x:1, y:1}. */\n end?: { x: number; y: number };\n /** Extra styles for the container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\n/**\n * Gradient component that renders linear gradients with fallback support.\n * Requires expo-linear-gradient for full functionality, falls back to solid color.\n *\n * @param props - Gradient configuration props\n * @returns React gradient component\n *\n * @example\n * ```tsx\n * \n * Content\n * \n * ```\n */\nexport function Gradient({\n preset,\n colors: colorsProp,\n start = { x: 0, y: 0 },\n end = { x: 1, y: 1 },\n style,\n children,\n ...rest\n}: GradientProps) {\n const resolvedColors = useMemo(() => {\n if (colorsProp && colorsProp.length >= 2) return colorsProp;\n if (preset && primitive.gradient[preset]) return primitive.gradient[preset];\n return primitive.gradient.brand;\n }, [colorsProp, preset]);\n\n if (ExpoLinearGradient) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface GridProps {\n children?: React.ReactNode;\n container?: boolean;\n size?: number | \"auto\" | \"grow\";\n columns?: number;\n spacing?: \"sm\" | \"md\" | \"lg\" | number;\n rowSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n columnSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n direction?: ViewStyle[\"flexDirection\"];\n wrap?: ViewStyle[\"flexWrap\"];\n offset?: number;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Grid({\n children,\n container = false,\n size,\n columns = 12,\n spacing = 0,\n rowSpacing,\n columnSpacing,\n direction = \"row\",\n wrap = \"wrap\",\n offset,\n style,\n}: GridProps) {\n const { grid } = useComponentTokens();\n\n const resolveGap = (s: \"sm\" | \"md\" | \"lg\" | number | undefined) => {\n if (s === undefined) return undefined;\n return typeof s === \"number\" ? s : grid.gap[s];\n };\n\n const gap = resolveGap(spacing) ?? 0;\n const rowGap = resolveGap(rowSpacing) ?? gap;\n const colGap = resolveGap(columnSpacing) ?? gap;\n\n if (container) {\n return (\n \n {children}\n \n );\n }\n\n const widthPct = typeof size === \"number\" ? `${(size / columns) * 100}%` : undefined;\n const widthValue = widthPct as unknown as ViewStyle[\"width\"];\n const itemStyle: ViewStyle = {\n flexGrow: size === \"grow\" ? 1 : 0,\n flexBasis: size === \"grow\" ? 0 : size === \"auto\" ? undefined : (widthValue as any),\n maxWidth: size === \"grow\" ? undefined : size === \"auto\" ? undefined : (widthValue as any),\n marginLeft: offset ? (`${(offset / columns) * 100}%` as unknown as ViewStyle[\"marginLeft\"]) : undefined,\n };\n\n return {children};\n}\n","import React, { useState } from \"react\";\nimport { Image as RNImage, ImageProps as RNImageProps, View, StyleSheet } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nconst AnimatedImage = Animated.createAnimatedComponent(RNImage);\n\nexport interface RnImageProps extends RNImageProps {\n /**\n * If true, shows a skeleton loading effect while the image is fetching.\n * Defaults to true.\n */\n showPlaceholder?: boolean;\n}\n\nexport function RnImage({ showPlaceholder = true, style, onLoad, ...props }: RnImageProps) {\n const { image } = useComponentTokens();\n const [isLoaded, setIsLoaded] = useState(false);\n const opacity = useSharedValue(0);\n\n const handleLoad = (e: any) => {\n setIsLoaded(true);\n opacity.value = withTiming(1, { duration: 300 });\n onLoad?.(e);\n };\n\n const imageStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n});\n","import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { View, Text, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nconst { width: SCREEN_WIDTH } = Dimensions.get(\"window\");\n\nexport type ImageListVariant = \"standard\" | \"woven\" | \"masonry\" | \"quilted\";\n\ninterface ImageListContextValue {\n cols: number;\n gap: number;\n rowHeight: number | \"auto\";\n variant: ImageListVariant;\n width: number;\n}\n\nconst ImageListContext = createContext(null);\n\nfunction useImageListContext() {\n return useContext(ImageListContext);\n}\n\nexport interface ImageListProps {\n children?: React.ReactNode;\n cols?: number;\n gap?: number;\n rowHeight?: number | \"auto\";\n variant?: ImageListVariant;\n style?: object;\n}\n\nexport function ImageList({\n children,\n cols = 2,\n gap = 8,\n rowHeight = 120,\n variant = \"standard\",\n style,\n}: ImageListProps) {\n const [width, setWidth] = useState(SCREEN_WIDTH);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const nextWidth = event.nativeEvent.layout.width;\n if (nextWidth !== width) setWidth(nextWidth);\n };\n\n const ctx = useMemo(() => ({ cols, gap, rowHeight, variant, width }), [cols, gap, rowHeight, variant, width]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface ImageListItemProps {\n children?: React.ReactNode;\n cols?: number;\n rows?: number;\n style?: object;\n}\n\nexport function ImageListItem({ children, cols = 1, rows = 1, style }: ImageListItemProps) {\n const ctx = useImageListContext();\n const gap = ctx?.gap ?? 8;\n const columns = ctx?.cols ?? 2;\n const variant = ctx?.variant ?? \"standard\";\n const rowHeight = ctx?.rowHeight ?? 120;\n const listWidth = ctx?.width ?? 0;\n\n const totalGap = gap * (columns - 1);\n const baseWidth = columns > 0 ? (listWidth - totalGap) / columns : listWidth;\n const itemWidth = cols * baseWidth + gap * (cols - 1);\n\n const height = variant === \"masonry\" || rowHeight === \"auto\" ? undefined : rowHeight * rows + gap * (rows - 1);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ImageListItemBarProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n actionIcon?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n style?: object;\n}\n\nexport function ImageListItemBar({\n title,\n subtitle,\n actionIcon,\n position = \"bottom\",\n style,\n}: ImageListItemBarProps) {\n const { imageList } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {title ? {title} : null}\n {subtitle ? {subtitle} : null}\n \n {actionIcon}\n \n );\n}\n","import React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport Animated, { useAnimatedStyle } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type LinearProgressVariant = \"indeterminate\" | \"determinate\" | \"buffer\" | \"query\";\nexport type LinearProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"brand\"\n | \"accent\"\n | \"inherit\";\n\nexport interface LinearProgressProps {\n value?: number;\n variant?: LinearProgressVariant;\n valueBuffer?: number;\n color?: LinearProgressColor;\n trackColor?: string;\n thickness?: number;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function LinearProgress({\n value = 0,\n variant = \"indeterminate\",\n valueBuffer = 0,\n color = \"primary\",\n trackColor,\n thickness,\n style,\n}: LinearProgressProps) {\n const tokens = useTokens();\n const { linearProgress } = useComponentTokens();\n const progressValue = clamp(value);\n\n const barColor = {\n primary: linearProgress.indicator.backgroundColor,\n brand: linearProgress.variant.brand.indicator.backgroundColor,\n accent: linearProgress.variant.accent.indicator.backgroundColor,\n success: linearProgress.variant.success.indicator.backgroundColor,\n error: linearProgress.variant.error.indicator.backgroundColor,\n secondary: tokens.color.text.secondary,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color] || linearProgress.indicator.backgroundColor;\n\n const containerStyle = [\n styles.container,\n linearProgress.track,\n { height: thickness ?? linearProgress.track.height, backgroundColor: trackColor ?? linearProgress.track.backgroundColor },\n style,\n ];\n\n const determinateStyle = useAnimatedStyle(() => {\n return {\n width: `${progressValue}%`,\n };\n }, [progressValue]);\n\n const bufferValue = clamp(valueBuffer);\n\n return (\n \n {variant === \"indeterminate\" || variant === \"query\" ? (\n \n ) : (\n <>\n {variant === \"buffer\" && (\n \n )}\n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n borderRadius: 999,\n overflow: \"hidden\",\n },\n determinateBar: {\n height: \"100%\",\n },\n indeterminateBar: {\n height: \"100%\",\n width: \"40%\",\n },\n bufferBar: {\n position: \"absolute\",\n height: \"100%\",\n left: 0,\n top: 0,\n },\n});\n","import React from \"react\";\nimport { Text, type TextStyle, Linking } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface LinkProps {\n children?: React.ReactNode;\n href?: string;\n onPress?: () => void;\n color?: string;\n underline?: \"always\" | \"hover\" | \"none\";\n style?: TextStyle | TextStyle[];\n}\n\nexport function Link({\n children,\n href,\n onPress,\n color,\n underline = \"always\",\n style,\n}: LinkProps) {\n const { link } = useComponentTokens();\n const decoration = underline === \"none\" ? \"none\" : \"underline\";\n\n return (\n {\n if (onPress) onPress();\n if (href) {\n try {\n await Linking.openURL(href);\n } catch {\n // ignore\n }\n }\n }}\n style={[\n link.text,\n { color: color ?? link.text.color, textDecorationLine: decoration },\n style,\n ]}\n >\n {children}\n \n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable, FlatList, type ListRenderItem, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── List Context ────────────────────────────────────────────────\n\ninterface ListContextValue {\n dense?: boolean;\n disablePadding?: boolean;\n}\n\nconst ListContext = createContext(null);\n\nfunction useListContext() {\n return useContext(ListContext);\n}\n\n// ─── List Component ──────────────────────────────────────────────\n\nexport interface ListProps {\n children?: React.ReactNode;\n dense?: boolean;\n disablePadding?: boolean;\n subheader?: React.ReactNode;\n style?: StyleProp;\n}\n\nexport function List({ children, dense = false, disablePadding = false, subheader, style }: ListProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {subheader && (\n \n {typeof subheader === \"string\" ? (\n \n {subheader}\n \n ) : subheader}\n \n )}\n {children}\n \n \n );\n}\n\n// ─── ListItem ────────────────────────────────────────────────────\n\nexport interface ListItemProps {\n children?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n divider?: boolean;\n style?: StyleProp;\n}\n\nfunction ListItemInner({\n children,\n secondaryAction,\n onPress,\n disabled = false,\n selected = false,\n divider = false,\n style,\n}: ListItemProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n const isDense = ctx?.dense;\n\n return (\n [\n list.item,\n {\n paddingVertical: isDense ? tokens.spacing[2] : tokens.spacing[3],\n backgroundColor: selected ? tokens.color.brand.subtle : \"transparent\",\n borderBottomWidth: divider ? 1 : 0,\n borderBottomColor: tokens.color.border.subtle,\n opacity: disabled ? 0.5 : 1,\n },\n pressed && list.item.pressed,\n style,\n ] as any}\n >\n \n {children}\n \n {secondaryAction && (\n \n {secondaryAction}\n \n )}\n \n );\n}\n\nexport const ListItem = React.memo(ListItemInner);\n\n// ─── ListItemText ────────────────────────────────────────────────\n\nexport interface ListItemTextProps {\n primary: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport function ListItemText({ primary, secondary }: ListItemTextProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n return (\n \n {typeof primary === \"string\" ? (\n \n {primary}\n \n ) : primary}\n {secondary && (\n typeof secondary === \"string\" ? (\n \n {secondary}\n \n ) : secondary\n )}\n \n );\n}\n\n// ─── ListItemIcon ────────────────────────────────────────────────\n\nexport function ListItemIcon({ children }: { children: React.ReactNode }) {\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\n// ─── FlatList Wrapper ────────────────────────────────────────────\n\nexport interface ListDataProps extends Omit {\n data: T[];\n renderItem: ListRenderItem;\n estimatedItemSize: number;\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function ListData({\n data,\n renderItem,\n estimatedItemSize,\n keyExtractor,\n ...listProps\n}: ListDataProps) {\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { View, Text, StyleSheet, AccessibilityInfo } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n withRepeat,\n withSequence,\n cancelAnimation,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nexport interface MarqueeProps {\n /** Content to scroll */\n children: React.ReactNode;\n /** Speed of animation (pixels per second) */\n speed?: number;\n /** Direction of scroll */\n direction?: \"left\" | \"right\" | \"up\" | \"down\";\n /** Whether to pause on hover/press (for web compatibility) */\n pauseOnHover?: boolean;\n /** Whether to pause on press */\n pauseOnPress?: boolean;\n /** Whether to repeat infinitely */\n loop?: boolean;\n /** Delay before starting animation */\n delay?: number;\n /** Gradient fade edges */\n fadeEdges?: boolean;\n /** Custom gradient colors for fade */\n fadeColor?: string;\n /** Accessibility label */\n accessibilityLabel?: string;\n /** Test ID for testing */\n testID?: string;\n}\n\n/**\n * Marquee component for scrolling text or content horizontally/vertically.\n * Uses React Native Reanimated for smooth GPU-accelerated animations.\n */\nexport function Marquee({\n children,\n speed = 50,\n direction = \"left\",\n pauseOnHover = false,\n pauseOnPress = false,\n loop = true,\n delay = 0,\n fadeEdges = true,\n fadeColor,\n accessibilityLabel = \"Scrolling content\",\n testID = \"marquee\",\n}: MarqueeProps) {\n const tokens = useTokens();\n const containerRef = useRef(null);\n const contentRef = useRef(null);\n\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const isPaused = useSharedValue(false);\n\n const [containerSize, setContainerSize] = React.useState(0);\n const [contentSize, setContentSize] = React.useState(0);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (direction === \"left\" || direction === \"right\") {\n return {\n transform: [{ translateX: translateX.value }],\n };\n } else {\n return {\n transform: [{ translateY: translateY.value }],\n };\n }\n });\n\n const startAnimation = (containerWidth: number, contentWidth: number) => {\n if (contentWidth <= containerWidth) return; // No need to scroll\n\n const distance = contentWidth - containerWidth;\n const duration = (distance / speed) * 1000; // Convert to milliseconds\n\n const startValue = direction === \"left\" ? 0 : -distance;\n const endValue = direction === \"left\" ? -distance : 0;\n\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = startValue;\n } else {\n translateY.value = startValue;\n }\n\n const animation = withTiming(endValue, {\n duration,\n easing: Easing.linear,\n });\n\n const repeatedAnimation = loop\n ? withRepeat(\n withSequence(\n withTiming(endValue, { duration, easing: Easing.linear }),\n withTiming(startValue, { duration: 0 }), // Reset instantly\n ),\n -1, // Infinite\n false,\n )\n : animation;\n\n if (delay > 0) {\n setTimeout(() => {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }, delay);\n } else {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }\n };\n\n const pauseAnimation = () => {\n isPaused.value = true;\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n\n const resumeAnimation = () => {\n isPaused.value = false;\n // Restart animation using existing dimensions\n if (containerSize > 0 && contentSize > 0) {\n startAnimation(containerSize, contentSize);\n }\n };\n\n useEffect(() => {\n if (containerSize > 0 && contentSize > 0) {\n startAnimation(containerSize, contentSize);\n }\n return () => {\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n }, [containerSize, contentSize, speed, direction, loop]);\n\n const handlePressIn = () => {\n if (pauseOnPress) {\n pauseAnimation();\n }\n };\n\n const handlePressOut = () => {\n if (pauseOnPress) {\n resumeAnimation();\n }\n };\n\n const fadeGradient = fadeColor || tokens.color.surface.default;\n\n return (\n {\n const { width, height } = e.nativeEvent.layout;\n if (direction === \"left\" || direction === \"right\") {\n setContainerSize(width);\n } else {\n setContainerSize(height);\n }\n }}\n >\n {fadeEdges && (\n <>\n \n \n \n )}\n {\n const { width, height } = e.nativeEvent.layout;\n if (direction === \"left\" || direction === \"right\") {\n setContentSize(width);\n } else {\n setContentSize(height);\n }\n }}\n accessible={false} // Let parent handle accessibility\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n horizontal: {\n flexDirection: \"row\",\n },\n vertical: {\n flexDirection: \"column\",\n },\n fadeLeft: {\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeRight: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeTop: {\n left: 0,\n right: 0,\n top: 0,\n height: 20,\n width: undefined,\n },\n fadeBottom: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 20,\n width: undefined,\n },\n});","import React, { useCallback, useMemo } from \"react\";\nimport { Modal, View, Pressable, Text, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useMenu } from \"@truongdq01/headless\";\n\nexport interface MenuProps {\n open: boolean;\n onClose?: () => void;\n anchorEl?: { pageX: number; pageY: number; width: number; height: number } | null;\n children?: React.ReactNode;\n}\n\nexport interface MenuItemProps {\n children?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n}\n\nconst MenuContext = React.createContext<{ getItemProps: (o: any) => any } | null>(null);\n\nexport function Menu({ open, onClose, anchorEl, children }: MenuProps) {\n const { menu } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [menuSize, setMenuSize] = React.useState({ width: 0, height: 0 });\n const [mounted, setMounted] = React.useState(false);\n\n const { close, getItemProps } = useMenu({ onClose });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n // Animate in when open changes to true\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 180, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n });\n } else if (mounted) {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(setMounted)(false);\n });\n }\n }, [open]);\n\n const MENU_MIN_WIDTH = 180;\n const GAP = 4;\n\n let top: number = 48;\n let left: number = windowWidth - MENU_MIN_WIDTH - 16;\n\n if (anchorEl) {\n const { pageX, pageY, width, height } = anchorEl;\n top = pageY + height + GAP;\n left = pageX;\n\n if (left + menuSize.width > windowWidth - 8) {\n left = windowWidth - menuSize.width - 8;\n }\n if (top + menuSize.height > windowHeight - 8) {\n top = pageY - menuSize.height - GAP;\n }\n top = Math.max(8, top);\n left = Math.max(8, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setMenuSize({ width, height });\n }}\n style={[\n menu.container,\n {\n position: \"absolute\",\n top,\n left,\n minWidth: MENU_MIN_WIDTH,\n },\n animStyle,\n ]}\n >\n \n {children}\n \n \n \n );\n}\n\nexport function MenuItem({ children, onPress, disabled = false, selected = false }: MenuItemProps) {\n const { menu } = useComponentTokens();\n const tokens = useTokens();\n const ctx = React.useContext(MenuContext);\n\n const itemProps = ctx?.getItemProps({ onClick: onPress, disabled }) ?? { onPress, disabled };\n\n return (\n [\n menu.item,\n pressed && { backgroundColor: tokens.color.bg.subtle },\n selected && { backgroundColor: tokens.color.brand.subtle },\n disabled && { opacity: 0.5 },\n ]}\n >\n \n {children}\n \n \n );\n}\n","import React from \"react\";\nimport { Modal as RNModal, View, Pressable, StyleSheet, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n keepMounted?: boolean;\n hideBackdrop?: boolean;\n disableAutoFocus?: boolean;\n disableEscapeKeyDown?: boolean;\n /** Accessibility label for the modal content container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n BackdropComponent?: React.ComponentType;\n BackdropProps?: object;\n contentStyle?: StyleProp;\n}\n\nexport function Modal({\n open,\n onClose,\n children,\n keepMounted = false,\n hideBackdrop = false,\n disableEscapeKeyDown = false,\n accessibilityLabel = \"Modal\",\n backdropAccessibilityLabel = \"Dismiss modal\",\n BackdropComponent,\n BackdropProps,\n contentStyle,\n}: ModalProps) {\n const { modal } = useComponentTokens();\n\n if (!open && !keepMounted) return null;\n\n const handleRequestClose = () => {\n if (!disableEscapeKeyDown) {\n onClose?.();\n }\n };\n\n return (\n \n \n {!hideBackdrop && (\n BackdropComponent ? (\n (() => {\n const el = ;\n return React.isValidElement(el) ? React.cloneElement(el as any, { collapsable: false }) : el;\n })()\n ) : (\n \n )\n )}\n \n {children}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n content: {\n minWidth: 280,\n maxWidth: \"90%\",\n },\n});\n","import React, { useEffect } from \"react\";\nimport { View, TextInput, Pressable, Text } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n withTiming,\n withSequence,\n withRepeat,\n cancelAnimation,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useOTPInput, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\nexport interface OTPInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n onComplete?: (value: string) => void;\n disabled?: boolean;\n /** Show dots instead of digits (PIN entry). */\n mask?: boolean;\n}\n\nexport function OTPInput({\n length = 6,\n value,\n onChange,\n onComplete,\n disabled = false,\n mask = false,\n}: OTPInputProps) {\n const { otpInput } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { inputRef, isFocused, handlePress, getOtpProps } = useOTPInput({\n length,\n value,\n onChange,\n onComplete,\n disabled,\n });\n\n return (\n \n \n\n \n {Array.from({ length }).map((_, index) => {\n const char = value[index] || \"\";\n const isCurrentFocus = isFocused && value.length === index;\n const isFilled = char.length > 0;\n const isLastCellWhenFull = isFocused && value.length === length && index === length - 1;\n const hasFocusBorder = isCurrentFocus || isLastCellWhenFull;\n\n return (\n \n );\n })}\n \n \n );\n}\n\nfunction OTPCell({\n char,\n isFocused,\n isFilled,\n showCursor,\n mask,\n reduceMotion,\n}: {\n char: string;\n isFocused: boolean;\n isFilled: boolean;\n showCursor: boolean;\n mask: boolean;\n reduceMotion: boolean;\n}) {\n const { otpInput } = useComponentTokens();\n const scale = useSharedValue(1);\n const cursorOpacity = useSharedValue(1);\n\n useEffect(() => {\n if (showCursor && !reduceMotion) {\n cursorOpacity.value = withRepeat(\n withSequence(withTiming(0, { duration: 500 }), withTiming(1, { duration: 500 })),\n -1,\n false,\n );\n } else {\n cancelAnimation(cursorOpacity);\n cursorOpacity.value = 1;\n }\n return () => cancelAnimation(cursorOpacity);\n }, [showCursor, reduceMotion]);\n\n useEffect(() => {\n if (isFocused) {\n scale.value = withSequence(\n withTiming(1.1, { duration: 150 }),\n withTiming(1, { duration: 150 })\n );\n } else if (isFilled) {\n scale.value = withSpring(1, { damping: 10, stiffness: 200 });\n } else {\n scale.value = withTiming(1, { duration: 150 });\n }\n }, [isFocused, isFilled]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const cursorStyle = useAnimatedStyle(() => ({\n opacity: cursorOpacity.value,\n }));\n\n const borderColor = isFocused\n ? otpInput.cell.focused.borderColor\n : isFilled\n ? otpInput.cell.filled.borderColor\n : otpInput.cell.borderColor;\n\n const backgroundColor = isFilled ? otpInput.cell.filled.backgroundColor : otpInput.cell.backgroundColor;\n\n const borderWidth = isFocused ? Math.max(otpInput.cell.borderWidth * 1.5, 2) : otpInput.cell.borderWidth;\n\n const displayChar = isFilled && mask ? \"\\u2022\" : char;\n\n return (\n \n {showCursor ? (\n \n ) : (\n \n {displayChar}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { usePagination, type PaginationItem, useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface PaginationProps {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n variant?: \"text\" | \"outlined\";\n shape?: \"circular\" | \"rounded\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Pagination({\n count,\n page,\n defaultPage,\n onChange,\n variant = \"text\",\n shape = \"rounded\",\n size = \"md\",\n}: PaginationProps) {\n const tokens = useTokens();\n const { pagination } = useComponentTokens();\n const { page: current, setPage, items } = usePagination({ count, page, defaultPage, onChange });\n\n const s = pagination.size[size];\n\n const renderItem = (item: PaginationItem, idx: number) => {\n if (typeof item !== \"number\") {\n return (\n \n ...\n \n );\n }\n\n const selected = item === current;\n const itemTokens = selected ? pagination.item.active : pagination.item.default;\n\n return (\n setPage(item)}\n accessibilityRole=\"button\"\n accessibilityLabel={`Page ${item}`}\n accessibilityState={{ selected }}\n style={{\n height: s,\n minWidth: s,\n paddingHorizontal: 8,\n borderRadius: shape === \"circular\" ? s / 2 : tokens.radius.md,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: itemTokens.bg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: itemTokens.borderColor,\n }}\n >\n \n {item}\n \n \n );\n };\n\n return (\n \n {items.map(renderItem)}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface PaperProps {\n children?: React.ReactNode;\n variant?: \"elevation\" | \"outlined\" | \"flat\";\n elevation?: \"none\" | \"sm\" | \"md\" | \"lg\";\n square?: boolean;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Paper({\n children,\n variant = \"elevation\",\n elevation = \"sm\",\n square = false,\n style,\n}: PaperProps) {\n const { paper } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n {children}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopoverOriginVertical = \"top\" | \"center\" | \"bottom\" | number;\nexport type PopoverOriginHorizontal = \"left\" | \"center\" | \"right\" | number;\n\nexport interface PopoverOrigin {\n vertical: PopoverOriginVertical;\n horizontal: PopoverOriginHorizontal;\n}\n\nexport interface PopoverProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n anchorPosition?: { top: number; left: number };\n onClose?: () => void;\n anchorOrigin?: PopoverOrigin;\n transformOrigin?: PopoverOrigin;\n elevation?: number;\n PaperProps?: { style?: object };\n marginThreshold?: number;\n children?: React.ReactNode;\n}\n\nconst defaultOrigin: PopoverOrigin = { vertical: \"bottom\", horizontal: \"left\" };\nconst defaultTransform: PopoverOrigin = { vertical: \"top\", horizontal: \"left\" };\n\nfunction resolveOrigin(value: PopoverOriginVertical | PopoverOriginHorizontal, size: number) {\n if (typeof value === \"number\") return value;\n if (value === \"center\") return size / 2;\n if (value === \"bottom\" || value === \"right\") return size;\n return 0;\n}\n\nexport function Popover({\n open,\n anchorEl,\n anchorPosition,\n onClose,\n anchorOrigin = defaultOrigin,\n transformOrigin = defaultTransform,\n PaperProps,\n marginThreshold = 12,\n children,\n}: PopoverProps) {\n const { popover } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const anchorX = anchorPosition?.left ?? anchorRect.x;\n const anchorY = anchorPosition?.top ?? anchorRect.y;\n const anchorWidth = anchorRect.width ?? 0;\n const anchorHeight = anchorRect.height ?? 0;\n\n const anchorOffsetX = resolveOrigin(anchorOrigin.horizontal, anchorWidth);\n const anchorOffsetY = resolveOrigin(anchorOrigin.vertical, anchorHeight);\n const transformOffsetX = resolveOrigin(transformOrigin.horizontal, contentSize.width);\n const transformOffsetY = resolveOrigin(transformOrigin.vertical, contentSize.height);\n\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n let left = anchorX + anchorOffsetX - transformOffsetX;\n let top = anchorY + anchorOffsetY - transformOffsetY;\n\n left = Math.max(marginThreshold, Math.min(left, screenWidth - contentSize.width - marginThreshold));\n top = Math.max(marginThreshold, Math.min(top, screenHeight - contentSize.height - marginThreshold));\n\n return { left, top };\n }, [anchorX, anchorY, anchorOffsetX, anchorOffsetY, transformOffsetX, transformOffsetY, contentSize, screenWidth, screenHeight, marginThreshold]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n paper: {\n position: \"absolute\",\n borderRadius: 12,\n borderWidth: 1,\n padding: 12,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopperPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport interface PopperProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n placement?: PopperPlacement;\n disablePortal?: boolean;\n transition?: boolean;\n keepMounted?: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\nfunction resolvePlacement(\n placement: PopperPlacement,\n anchor: { x: number; y: number; width: number; height: number },\n content: { width: number; height: number }\n) {\n const baseX = anchor.x;\n const baseY = anchor.y;\n\n const centerX = baseX + anchor.width / 2 - content.width / 2;\n const centerY = baseY + anchor.height / 2 - content.height / 2;\n const leftX = baseX;\n const rightX = baseX + anchor.width - content.width;\n const topY = baseY - content.height;\n const bottomY = baseY + anchor.height;\n\n switch (placement) {\n case \"top\":\n return { left: centerX, top: topY };\n case \"top-start\":\n return { left: leftX, top: topY };\n case \"top-end\":\n return { left: rightX, top: topY };\n case \"bottom\":\n return { left: centerX, top: bottomY };\n case \"bottom-start\":\n return { left: leftX, top: bottomY };\n case \"bottom-end\":\n return { left: rightX, top: bottomY };\n case \"left\":\n return { left: baseX - content.width, top: centerY };\n case \"left-start\":\n return { left: baseX - content.width, top: baseY };\n case \"left-end\":\n return { left: baseX - content.width, top: baseY + anchor.height - content.height };\n case \"right\":\n return { left: baseX + anchor.width, top: centerY };\n case \"right-start\":\n return { left: baseX + anchor.width, top: baseY };\n case \"right-end\":\n return { left: baseX + anchor.width, top: baseY + anchor.height - content.height };\n default:\n return { left: centerX, top: bottomY };\n }\n}\n\nexport function Popper({\n open,\n anchorEl,\n placement = \"bottom\",\n keepMounted = false,\n onClose,\n children,\n}: PopperProps) {\n const { popper } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open && !keepMounted) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n const pos = resolvePlacement(placement, {\n x: anchorRect.x,\n y: anchorRect.y,\n width: anchorRect.width ?? 0,\n height: anchorRect.height ?? 0,\n }, contentSize);\n\n const left = Math.max(8, Math.min(pos.left, screenWidth - contentSize.width - 8));\n const top = Math.max(8, Math.min(pos.top, screenHeight - contentSize.height - 8));\n return { left, top };\n }, [placement, anchorRect, contentSize, screenWidth, screenHeight]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n }\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n popper: {\n position: \"absolute\",\n borderRadius: 10,\n borderWidth: 1,\n padding: 10,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UsePressableOptions } from \"@truongdq01/headless\";\n\nexport interface PressableProps extends UsePressableOptions {\n children: React.ReactNode | ((state: { isPressed: boolean }) => React.ReactNode);\n style?: object | object[];\n}\n\nexport function Pressable({ children, style, testID, ...hookOptions }: PressableProps) {\n const { pressable } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps, isPressed } = usePressable({\n ...hookOptions,\n testID,\n });\n\n return (\n \n \n {typeof children === \"function\" ? children({ isPressed }) : children}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useRadioGroup, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseRadioGroupOptions } from \"@truongdq01/headless\";\n\n// ─── RadioItem ────────────────────────────────────────────────────\n\nexport interface RadioItemProps {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n isSelected: boolean;\n onPress: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioItem({\n label,\n description,\n disabled = false,\n isSelected,\n onPress,\n size = \"md\",\n}: RadioItemProps) {\n const tokens = useTokens();\n const { radio } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const outerSize = radio.container[size];\n const innerSize = radio.dot[size];\n const snappySpring = spring.snappy;\n\n const scale = useSharedValue(isSelected ? 1 : 0);\n const ringFill = useSharedValue(isSelected ? 1 : 0);\n\n React.useEffect(() => {\n const target = isSelected ? 1 : 0;\n scale.value = reduceMotion ? target : withSpring(target, snappySpring);\n ringFill.value = reduceMotion ? target : withSpring(target, snappySpring);\n }, [isSelected, snappySpring, reduceMotion, scale, ringFill]);\n\n const dotStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n opacity: scale.value,\n }));\n\n const outerRingStyle = useAnimatedStyle(() => ({\n borderWidth: interpolate(ringFill.value, [0, 1], [outerSize.borderWidth, 0]),\n borderColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.borderOff, \"transparent\"]),\n backgroundColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.bgOff, radio.colors.borderOn]),\n }));\n\n const handlePress = () => {\n if (!isSelected && !reduceMotion) {\n scale.value = withSpring(0.6, { damping: 12, stiffness: 200 }, () => {\n \"worklet\";\n scale.value = withSpring(1, snappySpring);\n });\n }\n onPress();\n };\n\n return (\n \n {/* Outer ring */}\n \n {/* Inner dot */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}\n\n// ─── RadioGroup ───────────────────────────────────────────────────\n\nexport interface RadioOption {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends UseRadioGroupOptions {\n options: RadioOption[];\n label?: string;\n direction?: \"vertical\" | \"horizontal\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioGroup({\n options,\n label,\n direction = \"vertical\",\n size = \"md\",\n ...hookOptions\n}: RadioGroupProps) {\n const tokens = useTokens();\n const { isSelected, getItemProps } = useRadioGroup(hookOptions);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n {options.map((option) => {\n const itemProps = getItemProps(option.value, option.disabled);\n return (\n \n );\n })}\n \n \n );\n}","import React, { memo, useCallback } from \"react\";\nimport {\n View,\n Pressable,\n Text,\n AccessibilityInfo,\n type AccessibilityActionEvent,\n} from \"react-native\";\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring } from \"react-native-reanimated\";\nimport { spring } from \"@truongdq01/tokens\";\nimport { useRating, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nconst DEFAULT_ICON_NAMES = {\n filled: \"star\" as const,\n empty: \"star\" as const,\n half: \"starHalf\" as const,\n};\n\nfunction clamp(n: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, n));\n}\n\n/** State of a single star slot */\nexport type RatingStarState = \"filled\" | \"half\" | \"empty\";\n\n/**\n * Star row item: press feedback uses Reanimated; stars are not separate a11y nodes.\n * Consumers should pass a stable `onChange` (e.g. `useCallback`) so `Rating` memo stays effective.\n */\nexport interface RatingProps {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n readOnly?: boolean;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n onChange?: (value: number) => void;\n /** When true, show numeric value next to stars (e.g. `3/5`). */\n showValue?: boolean;\n /** Where `showValue` sits relative to the star row. Default `end`. */\n valuePosition?: \"start\" | \"end\";\n /** Tighter gap between stars (uses `rating.containerCompact`). */\n compact?: boolean;\n /**\n * Icons for filled / empty / half. Empty uses the same glyph as `filled` with empty token color\n * when both default to `star`.\n */\n iconNames?: { filled: IconName; empty: IconName; half: IconName };\n /**\n * Fully custom icon renderer. Overrides `iconNames` when provided.\n * Receives the star state, dp size, and theme color — return any React node (emoji, SVG, etc.).\n */\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n /** Number of ratings/reviews — shown as `★ 4.3 (128)` when combined with `showValue`. */\n ratingCount?: number;\n /**\n * Format function for the value label. Receives `(value, max, ratingCount?)`.\n * Default: `\"3/5\"` or `\"4.3 (128)\"` when `ratingCount` is provided.\n */\n formatLabel?: (value: number, max: number, ratingCount?: number) => string;\n}\n\ntype RatingStarButtonProps = {\n index: number;\n iconSize: number;\n iconName: IconName;\n iconColor: string;\n starState: RatingStarState;\n disabled: boolean;\n readOnly: boolean;\n reduceMotion: boolean;\n onPress: (index: number) => void;\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n};\n\nfunction RatingStarButton({\n index,\n iconSize,\n iconName,\n iconColor,\n starState,\n disabled,\n readOnly,\n reduceMotion,\n onPress,\n renderIcon,\n}: RatingStarButtonProps) {\n const scale = useSharedValue(1);\n const animStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const handlePressIn = () => {\n if (disabled || readOnly || reduceMotion) return;\n scale.value = withSpring(1.12, spring.snappy);\n };\n\n const handlePressOut = () => {\n if (disabled || readOnly) return;\n if (reduceMotion) {\n scale.value = 1;\n return;\n }\n scale.value = withSpring(1, spring.snappy);\n };\n\n const iconContent = renderIcon\n ? renderIcon(starState, iconSize, iconColor)\n : {iconName};\n\n return (\n onPress(index)}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n style={{ opacity: disabled ? 0.5 : 1 }}\n >\n \n {iconContent}\n \n \n );\n}\n\nfunction RatingInner({\n value,\n defaultValue,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = \"md\",\n onChange,\n showValue = false,\n valuePosition = \"end\",\n compact = false,\n iconNames: iconNamesProp,\n renderIcon,\n ratingCount,\n formatLabel,\n}: RatingProps) {\n const { rating } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const icons = { ...DEFAULT_ICON_NAMES, ...iconNamesProp };\n\n const { value: ratingValue, setValue, precision: effectivePrecision } = useRating({\n value,\n defaultValue,\n max,\n precision,\n readOnly,\n disabled,\n onChange,\n });\n\n const iconSize = rating.size[size];\n const activeColor = rating.star.filled.color;\n const inactiveColor = rating.star.empty.color;\n const halfColor = rating.star.half.color;\n\n const announceValue = useCallback(\n (next: number) => {\n // TODO i18n — fixed English for library default\n const announce = AccessibilityInfo.announceForAccessibility;\n if (typeof announce === \"function\") {\n announce(`${next} out of ${max} stars`);\n }\n },\n [max]\n );\n\n const handlePress = (index: number) => {\n if (disabled || readOnly) return;\n const tapTarget = index + 1;\n const snapped = Math.round(tapTarget / effectivePrecision) * effectivePrecision;\n const newVal = ratingValue === snapped ? 0 : snapped;\n setValue(newVal);\n announceValue(newVal);\n };\n\n const applyAccessibilityStep = (delta: 1 | -1) => {\n if (disabled || readOnly) return;\n const raw = ratingValue + delta * effectivePrecision;\n const snapped = Math.round(raw / effectivePrecision) * effectivePrecision;\n const next = clamp(snapped, 0, max);\n if (next !== ratingValue) {\n setValue(next);\n announceValue(next);\n }\n };\n\n const onAccessibilityAction = (event: AccessibilityActionEvent) => {\n const name = event.nativeEvent.actionName;\n if (name === \"increment\") {\n applyAccessibilityStep(1);\n } else if (name === \"decrement\") {\n applyAccessibilityStep(-1);\n }\n };\n\n const interactive = !readOnly && !disabled;\n const rowStyle = compact ? rating.containerCompact : rating.container;\n\n const defaultFormatLabel = (v: number, m: number, count?: number) => {\n if (count != null) return `${v} (${count})`;\n return `${v}/${m}`;\n };\n const labelFormatter = formatLabel ?? defaultFormatLabel;\n const labelText = labelFormatter(ratingValue, max, ratingCount);\n\n const valueLabel = (\n \n {labelText}\n \n );\n\n const starsRow = (\n \n {Array.from({ length: max }).map((_, i) => {\n const starNumber = i + 1;\n const filled = ratingValue >= starNumber;\n const halfFilled =\n !filled && ratingValue >= starNumber - 0.5 && effectivePrecision <= 0.5;\n\n const starState: RatingStarState = halfFilled ? \"half\" : filled ? \"filled\" : \"empty\";\n let iconName: IconName = icons.empty;\n if (halfFilled) iconName = icons.half;\n else if (filled) iconName = icons.filled;\n const iconColor = halfFilled ? halfColor : filled ? activeColor : inactiveColor;\n\n return (\n \n );\n })}\n \n );\n\n if (!showValue) {\n return {starsRow};\n }\n\n return (\n \n {valuePosition === \"start\" ? valueLabel : null}\n {starsRow}\n {valuePosition === \"end\" ? valueLabel : null}\n \n );\n}\n\nexport const Rating = memo(RatingInner);\nRating.displayName = \"Rating\";\n","import React, { useState, useRef } from \"react\";\nimport { View, Pressable, Text, type LayoutChangeEvent } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useSegmentedControl } from \"@truongdq01/headless\";\nconst TRACK_PADDING = 2;\n\n/** Critically damped — fast, no overshoot (replaces snappy spring for segment indicator). */\nconst INDICATOR_SPRING = { damping: 28, stiffness: 300, mass: 0.8 };\n\nexport type SegmentedControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption = string | { label: string; icon?: React.ReactNode };\n\nexport interface SegmentedControlProps {\n options: SegmentedOption[];\n selectedIndex: number;\n onChange: (index: number) => void;\n /** sm = 32, md = 36, lg = 44. Overridden by explicit `height`. */\n size?: SegmentedControlSize;\n /** Explicit height (overrides size). */\n height?: number;\n disabled?: boolean;\n}\n\nconst SIZE_HEIGHT: Record = { sm: 32, md: 36, lg: 44 };\nconst SIZE_FONT: Record = { sm: \"xs\", md: \"sm\", lg: \"md\" };\n\nfunction getLabel(opt: SegmentedOption): string {\n return typeof opt === \"string\" ? opt : opt.label;\n}\n\nfunction getIcon(opt: SegmentedOption): React.ReactNode | undefined {\n return typeof opt === \"string\" ? undefined : opt.icon;\n}\n\nexport function SegmentedControl({\n options,\n selectedIndex,\n onChange,\n size = \"md\",\n height: heightProp,\n disabled = false,\n}: SegmentedControlProps) {\n const tokens = useTokens();\n const { segmentedControl } = useComponentTokens();\n const { isSelected, setSelectedIndex, getTabProps } = useSegmentedControl({\n value: selectedIndex,\n onChange: (val) => onChange(val as number),\n disabled,\n });\n\n const resolvedHeight = heightProp ?? SIZE_HEIGHT[size];\n const fontKey = SIZE_FONT[size];\n\n const [containerWidth, setContainerWidth] = useState(0);\n const [layoutReady, setLayoutReady] = useState(false);\n\n const innerWidth = Math.max(0, containerWidth - TRACK_PADDING * 2);\n const segmentWidth = options.length > 0 ? innerWidth / options.length : 0;\n const translateX = useSharedValue(0);\n const indicatorWidth = useSharedValue(0);\n const didInitialLayout = useRef(false);\n\n React.useEffect(() => {\n if (segmentWidth <= 0) return;\n const target = selectedIndex * segmentWidth;\n if (!didInitialLayout.current) {\n didInitialLayout.current = true;\n translateX.value = target;\n indicatorWidth.value = segmentWidth;\n return;\n }\n translateX.value = withSpring(target, INDICATOR_SPRING);\n indicatorWidth.value = withSpring(segmentWidth, INDICATOR_SPRING);\n }, [selectedIndex, segmentWidth, translateX, indicatorWidth]);\n\n const onLayout = (e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n setContainerWidth(w);\n if (w > 0) setLayoutReady(true);\n };\n\n const indicatorStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n width: indicatorWidth.value,\n }));\n\n const showIndicator = layoutReady && segmentWidth > 0 && containerWidth > 0;\n\n return (\n \n {showIndicator && (\n \n )}\n\n {options.map((option, index) => {\n const selected = isSelected(index as any);\n const label = getLabel(option);\n const icon = getIcon(option);\n return (\n \n {icon}\n \n {label}\n \n \n );\n })}\n \n );\n}\n","import React, { useRef, useState, useMemo, useCallback } from \"react\";\nimport { View, Text, TextInput, Pressable, ActivityIndicator, FlatList } from \"react-native\";\nimport { useSelect, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { BottomSheet } from \"../BottomSheet/BottomSheet\";\nimport type { BottomSheetRef } from \"../BottomSheet/BottomSheet\";\nimport type { UseSelectOptions, SelectOption } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport { SkeletonListItem } from \"../Skeleton\";\n\nexport interface SelectProps extends UseSelectOptions {\n label?: string;\n placeholder?: string;\n searchable?: boolean;\n error?: string;\n onClearError?: () => void;\n loading?: boolean;\n onLoadMore?: () => void;\n hasMore?: boolean;\n loadingMore?: boolean;\n renderOption?: (\n option: SelectOption,\n ctx: { selected: boolean }\n ) => React.ReactNode;\n}\n\nexport function Select({\n label,\n placeholder = \"Select…\",\n searchable = false,\n error,\n onClearError,\n loading = false,\n onLoadMore,\n hasMore = false,\n loadingMore = false,\n renderOption,\n options,\n ...hookOptions\n}: SelectProps) {\n const { select } = useComponentTokens();\n const tokens = useTokens();\n const sheetRef = useRef(null);\n const [query, setQuery] = useState(\"\");\n const endReachBusy = useRef(false);\n const a11yLabel = label ?? \"Select\";\n // FlashList is an optional native dependency. Fall back to FlatList when it's not installed.\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n const {\n isOpen,\n open,\n close,\n selectOption,\n isSelected,\n displayLabel,\n } = useSelect({ options, ...hookOptions, placeholder });\n\n const hasSelection = displayLabel !== placeholder;\n\n const filtered = useMemo(() => {\n if (!query) return options;\n const lowerQuery = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(lowerQuery));\n }, [options, query]);\n\n const handleClose = useCallback(() => {\n sheetRef.current?.close();\n close();\n }, [close]);\n\n const handleOpen = useCallback(() => {\n setQuery(\"\");\n sheetRef.current?.open();\n open();\n }, [open]);\n\n const handleSelect = useCallback(\n (val: T) => {\n selectOption(val);\n onClearError?.();\n if (!hookOptions.multiple) handleClose();\n },\n [selectOption, onClearError, hookOptions.multiple, handleClose]\n );\n\n const onEndReached = useCallback(() => {\n if (!onLoadMore || !hasMore || loading || loadingMore || endReachBusy.current) return;\n endReachBusy.current = true;\n onLoadMore();\n }, [onLoadMore, hasMore, loading, loadingMore]);\n\n React.useEffect(() => {\n if (!loadingMore) endReachBusy.current = false;\n }, [loadingMore]);\n\n const renderItem = useCallback(\n ({ item: option }: { item: SelectOption }) => {\n const selected = isSelected(option.value);\n if (renderOption) {\n return (\n !option.disabled && handleSelect(option.value)}\n style={{ opacity: option.disabled ? 0.4 : 1 }}\n >\n {renderOption(option, { selected })}\n \n );\n }\n return (\n !option.disabled && handleSelect(option.value)}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderRadius: tokens.radius.md,\n backgroundColor: selected ? select.option.selected.bg : tokens.color.surface.default,\n opacity: option.disabled ? 0.4 : 1,\n }}\n >\n \n {option.label}\n \n {selected && }\n \n );\n },\n [isSelected, renderOption, select.option, tokens, handleSelect]\n );\n\n const listEmpty = useMemo(() => {\n if (loading && options.length === 0) {\n return (\n \n \n \n \n \n );\n }\n if (filtered.length === 0) {\n const emptyMsg = loading\n ? \"Loading…\"\n : query\n ? `No results for \"${query}\"`\n : \"No options\";\n return (\n \n {emptyMsg}\n \n );\n }\n return null;\n }, [loading, options.length, filtered.length, query, tokens]);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n \n {displayLabel}\n \n \n {isOpen ? \"chevronUp\" : \"chevronDown\"}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n 6 ? [\"70%\"] : [\"40%\"]}\n onClose={close}\n enableBackdrop\n enableDismissOnSwipe\n >\n \n {searchable && isOpen && (\n \n \n \n \n \n {query.length > 0 && (\n setQuery(\"\")} hitSlop={8}>\n \n \n )}\n \n )}\n\n {filtered.length === 0 ? (\n {listEmpty}\n ) : (\n ) => String(item.value)}\n onEndReached={onEndReached}\n onEndReachedThreshold={0.35}\n ItemSeparatorComponent={() => (\n \n )}\n ListFooterComponent={\n loadingMore ? (\n \n \n \n ) : (\n \n )\n }\n // FlashList-only optimization; harmless for FlatList (ignored)\n estimatedItemSize={48}\n />\n )}\n \n \n \n );\n}\n","import React, { createContext, useContext, useEffect, useState, Children, isValidElement, cloneElement } from \"react\";\nimport { View } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withRepeat,\n withTiming,\n interpolate,\n cancelAnimation,\n type SharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIsDark } from \"@truongdq01/headless\";\n\n/**\n * Available shimmer animation directions\n */\nexport type SkeletonShimmerDirection = \"pulse\" | \"left-to-right\" | \"right-to-left\";\n\n// ─── Shared shimmer context ───────────────────────────────────────\nconst ShimmerCtx = createContext | null>(null);\n\n/**\n * Props for the ShimmerProvider component\n */\nexport interface ShimmerProviderProps {\n children: React.ReactNode;\n /** Animation duration per cycle (ms) */\n duration?: number;\n}\n\n/**\n * Provider component that shares shimmer animation across child skeletons.\n * Improves performance by using a single shared animation value.\n *\n * @param props - Shimmer provider configuration\n * @returns Context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * \n * ```\n */\nexport function ShimmerProvider({ children, duration = 1200 }: ShimmerProviderProps) {\n const shimmer = useSharedValue(0);\n useEffect(() => {\n shimmer.value = withRepeat(withTiming(1, { duration }), -1, true);\n return () => cancelAnimation(shimmer);\n }, [duration]);\n return {children};\n}\n\nfunction useShimmerValue(animate: boolean, delayMs: number): SharedValue {\n const shared = useContext(ShimmerCtx);\n const local = useSharedValue(0);\n\n useEffect(() => {\n if (shared || !animate) {\n cancelAnimation(local);\n local.value = 0;\n return;\n }\n const start = () => {\n local.value = withRepeat(withTiming(1, { duration: 1200 }), -1, true);\n };\n if (delayMs > 0) {\n const t = setTimeout(start, delayMs);\n return () => { clearTimeout(t); cancelAnimation(local); };\n }\n start();\n return () => cancelAnimation(local);\n }, [animate, delayMs, !!shared]);\n\n return shared ?? local;\n}\n\n// ─── Base Skeleton ────────────────────────────────────────────────\n\nexport interface SkeletonProps {\n width?: number | `${number}%`;\n height?: number;\n borderRadius?: number;\n /** Disable shimmer animation */\n animate?: boolean;\n /** Stagger start — used by `SkeletonGroup` */\n delayMs?: number;\n /** Shimmer style — default `pulse` (opacity); LTR/RTL sweep uses translateX */\n shimmerDirection?: SkeletonShimmerDirection;\n}\n\nexport function Skeleton({\n width = \"100%\",\n height = 16,\n borderRadius,\n animate = true,\n delayMs = 0,\n shimmerDirection = \"pulse\",\n}: SkeletonProps) {\n const { skeleton } = useComponentTokens();\n const isDark = useIsDark();\n const shimmer = useShimmerValue(animate, delayMs);\n const [layoutW, setLayoutW] = useState(0);\n\n const sweepHighlight = isDark ? \"rgba(255,255,255,0.12)\" : \"rgba(255,255,255,0.45)\";\n\n const pulseStyle = useAnimatedStyle(() => ({\n opacity: interpolate(shimmer.value, [0, 1], [skeleton.opacity.start, skeleton.opacity.end]),\n }));\n\n const sweepStyle = useAnimatedStyle(() => {\n const w = Math.max(layoutW, 1);\n const sweep = w * 0.35;\n const t = shimmerDirection === \"right-to-left\" ? 1 - shimmer.value : shimmer.value;\n return {\n transform: [{ translateX: interpolate(t, [0, 1], [-sweep, w]) }],\n opacity: 0.45,\n };\n });\n\n const isSweep = shimmerDirection === \"left-to-right\" || shimmerDirection === \"right-to-left\";\n\n return (\n setLayoutW(e.nativeEvent.layout.width)}\n >\n {animate && isSweep && (\n \n )}\n \n );\n}\n\n// ─── SkeletonGroup — stagger children that accept `delayMs` ───────\n\nexport interface SkeletonGroupProps {\n children: React.ReactNode;\n /** Delay between each child (ms) */\n stagger?: number;\n}\n\nexport function SkeletonGroup({ stagger = 80, children }: SkeletonGroupProps) {\n return (\n <>\n {Children.map(children, (child, i) => {\n if (!isValidElement(child)) return child;\n return cloneElement(child as React.ReactElement<{ delayMs?: number }>, {\n delayMs: i * stagger,\n });\n })}\n \n );\n}\n\n// ─── Presets ──────────────────────────────────────────────────────\n\nexport const SkeletonText = React.memo(function SkeletonText({\n lines = 3,\n lastLineWidth = \"60%\",\n shimmerDirection = \"pulse\",\n}: {\n lines?: number;\n lastLineWidth?: `${number}%`;\n shimmerDirection?: SkeletonShimmerDirection;\n}) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: lines }).map((_, i) => (\n \n ))}\n \n );\n});\n\nexport const SkeletonCard = React.memo(function SkeletonCard() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n});\n\nexport const SkeletonListItem = React.memo(function SkeletonListItem() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n );\n});\n\n/** Avatar + two text lines — profile card placeholder */\nexport const SkeletonProfile = React.memo(function SkeletonProfile() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** 16:9 block + title lines */\nexport const SkeletonMedia = React.memo(function SkeletonMedia() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** Repeated label + field rows */\nexport const SkeletonForm = React.memo(function SkeletonForm({ rows = 4 }: { rows?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: rows }).map((_, i) => (\n \n \n \n \n ))}\n \n );\n});\n\n/** N×M grid of squares */\nexport const SkeletonGrid = React.memo(function SkeletonGrid({ columns = 3, rows = 2, cell = 48 }: { columns?: number; rows?: number; cell?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: columns * rows }).map((_, i) => (\n \n ))}\n \n );\n});\n\n/** Header row + data rows */\nexport const SkeletonTable = React.memo(function SkeletonTable({ columns = 4, dataRows = 3 }: { columns?: number; dataRows?: number }) {\n const tokens = useTokens();\n return (\n \n \n {Array.from({ length: columns }).map((_, i) => (\n \n ))}\n \n {Array.from({ length: dataRows }).map((_, r) => (\n \n {Array.from({ length: columns }).map((_, c) => (\n \n ))}\n \n ))}\n \n );\n});\n","import React, { useMemo } from \"react\";\nimport { View, Text, TextInput, type TextStyle } from \"react-native\";\nimport Animated, { useAnimatedProps } from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSlider, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type {\n UseSliderOptions,\n UseSliderOptionsRange,\n UseSliderOptionsSingle,\n UseSliderReturnRange,\n UseSliderReturnSingle,\n} from \"@truongdq01/headless\";\n\ntype SliderUiProps = {\n label?: string;\n /** Show current value (single) or \"lo – hi\" (range) */\n showValue?: boolean;\n formatValue?: (v: number) => string;\n /** Min / max labels under the track */\n showMinMaxLabels?: boolean;\n showMarks?: boolean;\n /** Vertical track height when `orientation=\"vertical\"` */\n sliderHeight?: number;\n /** Replace default thumb circle */\n thumbRenderer?: (args: {\n kind: \"single\" | \"low\" | \"high\";\n value: number;\n }) => React.ReactNode;\n};\n\nexport type SliderProps =\n | (SliderUiProps & UseSliderOptionsSingle)\n | (SliderUiProps & UseSliderOptionsRange);\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\n/** Worklet snap (mirrors headless `snapRatioWorklet` for live labels). */\nfunction snapSliderValueWorklet(raw: number, minV: number, maxV: number, stepV: number): number {\n \"worklet\";\n if (stepV === 0 || maxV === minV) return Math.max(minV, Math.min(maxV, raw));\n const snapped = Math.round((raw - minV) / stepV) * stepV + minV;\n return Math.max(minV, Math.min(maxV, snapped));\n}\n\ntype LiveValueStyle = Pick;\n\nfunction SliderLiveSingleValue(props: {\n show: boolean;\n thumbRatioShared: UseSliderReturnSingle[\"thumbRatioShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const raw = thumbRatioShared.value * (max - min) + min;\n const s = snapSliderValueWorklet(raw, min, max, step);\n return { text: String(s) };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nfunction SliderLiveRangeValue(props: {\n show: boolean;\n thumbRatioLowShared: UseSliderReturnRange[\"thumbRatioLowShared\"];\n thumbRatioHighShared: UseSliderReturnRange[\"thumbRatioHighShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioLowShared, thumbRatioHighShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const rawLo = thumbRatioLowShared.value * (max - min) + min;\n const rawHi = thumbRatioHighShared.value * (max - min) + min;\n const lo = snapSliderValueWorklet(rawLo, min, max, step);\n const hi = snapSliderValueWorklet(rawHi, min, max, step);\n return { text: `${lo} – ${hi}` };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nexport function Slider({\n label,\n showValue = false,\n formatValue = (v: number) => String(v),\n showMinMaxLabels = false,\n showMarks = false,\n sliderHeight = 150,\n thumbRenderer,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n range = false,\n ...rest\n}: SliderProps) {\n const tokens = useTokens();\n const { slider } = useComponentTokens();\n const isVertical = orientation === \"vertical\";\n\n const sliderState = useSlider({\n min,\n max,\n step,\n orientation,\n range,\n ...rest,\n } as UseSliderOptions);\n\n const showRangeLabels = showMinMaxLabels;\n\n const marks =\n showMarks && step > 0\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => i * step + min)\n : [];\n\n const liveValueStyle = useMemo(\n (): LiveValueStyle => ({\n fontSize: tokens.fontSize.sm,\n fontWeight: tokens.fontWeight.semibold,\n color: tokens.color.brand.default,\n }),\n [tokens.color.brand.default, tokens.fontSize.sm, tokens.fontWeight.semibold]\n );\n\n const trackThickness = slider.track.height;\n const thumbW = slider.thumb.width;\n const thumbH = slider.thumb.height;\n\n // Match Meta's minimum comfortable hit target (48dp) while keeping the visual thumb smaller.\n const minHitSize = 48;\n const trackPad = Math.max(12, (minHitSize - thumbH) / 2);\n\n const thumbShellStyle = useMemo(() => {\n const chrome = thumbRenderer\n ? {\n backgroundColor: \"transparent\" as const,\n borderWidth: 0,\n borderColor: \"transparent\" as const,\n elevation: 0,\n shadowOpacity: 0,\n shadowRadius: 0,\n shadowOffset: { width: 0, height: 0 } as const,\n shadowColor: \"transparent\" as const,\n }\n : {\n backgroundColor: slider.thumb.bg,\n borderWidth: slider.thumb.borderWidth,\n borderColor: slider.thumb.borderColor,\n shadowColor: slider.thumb.shadowColor,\n shadowOffset: slider.thumb.shadowOffset,\n shadowOpacity: slider.thumb.shadowOpacity,\n shadowRadius: slider.thumb.shadowRadius,\n elevation: slider.thumb.elevation,\n };\n return {\n position: \"absolute\" as const,\n width: thumbW,\n height: thumbH,\n borderRadius: slider.thumb.borderRadius,\n ...chrome,\n ...(isVertical\n ? { left: \"50%\" as const, marginLeft: -thumbW / 2, top: (-thumbH / 2) as number }\n : { left: (-thumbW / 2) as number, top: undefined as undefined }),\n };\n }, [\n thumbRenderer,\n isVertical,\n thumbW,\n thumbH,\n slider.thumb,\n ]);\n\n function renderThumb(\n animatedStyle: object,\n kind: \"single\" | \"low\" | \"high\",\n value: number\n ) {\n const custom = thumbRenderer?.({ kind, value });\n return (\n \n {custom ?? null}\n \n );\n }\n\n if (sliderState.mode === \"range\") {\n const {\n currentValue,\n thumbRatioLowShared,\n thumbRatioHighShared,\n thumbLowAnimatedStyle,\n thumbHighAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGestureLow,\n panGestureHigh,\n onTrackLayout,\n } = sliderState;\n const [lo, hi] = currentValue;\n const d = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= hi && mark >= lo;\n return (\n \n );\n })}\n\n \n {renderThumb(thumbLowAnimatedStyle, \"low\", lo)}\n \n \n {renderThumb(thumbHighAnimatedStyle, \"high\", hi)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n }\n\n const {\n currentValue,\n thumbRatioShared,\n thumbAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGesture,\n onTrackLayout,\n } = sliderState as UseSliderReturnSingle;\n const disabled = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= currentValue;\n return (\n \n );\n })}\n\n {renderThumb(thumbAnimatedStyle, \"single\", currentValue)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n}\n","import React, { useEffect, useMemo } from \"react\";\nimport { View, Text, Pressable, Modal, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface SnackbarProps {\n /** If true, the snackbar is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Duration in ms before auto-hiding. Use null to disable. */\n autoHideDuration?: number | null;\n /** Callback on close */\n onClose?: () => void;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Position on screen */\n anchorOrigin?: { vertical: \"top\" | \"bottom\"; horizontal: \"left\" | \"center\" | \"right\" };\n}\n\nexport function Snackbar({\n open,\n message,\n autoHideDuration = 4000,\n onClose,\n action,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n}: SnackbarProps) {\n const { snackbar } = useComponentTokens();\n const tokens = useTokens();\n const [mounted, setMounted] = React.useState(open);\n\n const isBottom = anchorOrigin.vertical === \"bottom\";\n const translateY = useSharedValue(isBottom ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = () => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300, mass: 1 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n };\n\n const animateOut = (onDone: () => void) => {\n translateY.value = withTiming(isBottom ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n };\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = isBottom ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const verticalStyle = isBottom ? { bottom: 32 } : { top: 48 };\n const horizontalStyle = useMemo(() => {\n if (anchorOrigin.horizontal === \"center\") return { alignSelf: \"center\" as const };\n if (anchorOrigin.horizontal === \"left\") return { left: 16 };\n return { right: 16 };\n }, [anchorOrigin.horizontal]);\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as any,\n }));\n\n if (!mounted && !open) return null;\n\n return (\n \n \n \n {message}\n {action}\n {onClose && (\n \n \n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n },\n});\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useDisclosure, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Fab } from \"../Fab/Fab\";\n\nexport interface SpeedDialProps {\n ariaLabel: string;\n icon?: React.ReactNode;\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n hidden?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SpeedDialActionProps {\n icon?: React.ReactNode;\n tooltipTitle?: string;\n onPress?: () => void;\n}\n\ninterface SpeedDialContextValue {\n isOpen: boolean;\n close: () => void;\n}\n\nconst SpeedDialContext = createContext(null);\n\nexport function SpeedDial({\n ariaLabel,\n icon,\n direction = \"up\",\n open: controlledOpen,\n onOpen,\n onClose,\n hidden = false,\n children,\n}: SpeedDialProps) {\n const { speedDial } = useComponentTokens();\n const disclosure = useDisclosure({ isOpen: controlledOpen, onOpen, onClose });\n const tokens = useTokens();\n\n if (hidden) return null;\n\n const stackStyle = {\n flexDirection: (direction === \"left\" || direction === \"right\" ? \"row\" : \"column\") as \"row\" | \"column\",\n alignItems: \"center\" as const,\n gap: tokens.spacing[3],\n };\n\n const ctxValue = useMemo(() => ({ isOpen: disclosure.isOpen, close: disclosure.close }), [disclosure.isOpen, disclosure.close]);\n\n return (\n \n \n {disclosure.isOpen && children}\n \n \n \n );\n}\n\nexport function SpeedDialAction({ icon, tooltipTitle, onPress }: SpeedDialActionProps) {\n const { speedDial } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(SpeedDialContext);\n if (!ctx?.isOpen) return null;\n\n return (\n {\n onPress?.();\n ctx.close();\n }}\n style={speedDial.action as any}\n >\n \n {icon}\n \n {tooltipTitle && (\n \n {tooltipTitle}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface StackProps {\n children?: React.ReactNode;\n direction?: \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n spacing?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n divider?: React.ReactNode;\n alignItems?: ViewStyle[\"alignItems\"];\n justifyContent?: ViewStyle[\"justifyContent\"];\n flexWrap?: ViewStyle[\"flexWrap\"];\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Stack({\n children,\n direction = \"column\",\n spacing = \"sm\",\n divider,\n alignItems,\n justifyContent,\n flexWrap,\n style,\n}: StackProps) {\n const { stack } = useComponentTokens();\n const gap = typeof spacing === \"number\" ? spacing : stack.gap[spacing];\n\n const items = React.Children.toArray(children);\n const content = divider\n ? items.flatMap((child, idx) => (idx === 0 ? [child] : [divider, child]))\n : items;\n\n return (\n \n {content}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface StepperProps {\n activeStep?: number;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface StepProps {\n index: number;\n label?: string;\n children?: React.ReactNode;\n}\n\nexport interface StepLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function Stepper({ activeStep = 0, orientation = \"horizontal\", children }: StepperProps) {\n const { stepper } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child) => {\n if (!React.isValidElement<{ activeStep?: number; orientation?: \"horizontal\" | \"vertical\" }>(child)) return child;\n return React.cloneElement(child, { activeStep, orientation });\n })}\n \n );\n}\n\ninterface StepInternalProps extends StepProps {\n activeStep: number;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nexport function Step({ index, label, children, activeStep = 0, orientation = \"horizontal\" }: Partial & StepProps) {\n const { stepper } = useComponentTokens();\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n\n const color = isCompleted\n ? stepper.step.completed.color\n : isActive\n ? stepper.step.active.color\n : stepper.step.pending.color;\n\n return (\n \n \n {isCompleted ? (\n \n ) : (\n \n {index + 1}\n \n )}\n \n {label && (\n \n {label}\n \n )}\n {children}\n \n );\n}\n\nexport function StepLabel({ children, style }: StepLabelProps) {\n const { stepper } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useSwitch, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseSwitchOptions } from \"@truongdq01/headless\";\n\nexport interface SwitchProps extends UseSwitchOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Switch = React.memo(({ label, description, size = \"md\", ...hookOptions }: SwitchProps) => {\n const tokens = useTokens();\n const { switch: switchT } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isOn, isDisabled, toggle, accessibilityProps } = useSwitch(hookOptions);\n\n const tTrack = switchT.track[size];\n const tThumb = switchT.thumb[size];\n const thumbTravel = Math.max(0, tTrack.width - tThumb.width - tTrack.padding * 2);\n\n // Shared value 0 = off, 1 = on\n const progress = useSharedValue(isOn ? 1 : 0);\n\n React.useEffect(() => {\n const target = isOn ? 1 : 0;\n progress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isOn, reduceMotion]);\n\n const trackStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n progress.value,\n [0, 1],\n [switchT.colors.trackOff, switchT.colors.trackOn]\n ),\n }));\n\n const thumbStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: progress.value * thumbTravel }],\n }));\n\n return (\n \n {/* Track */}\n \n {/* Thumb */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, ScrollView, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Button } from \"../Button/Button\";\nimport { Icon } from \"../Icon\";\n\n/**\n * Available table size variants\n */\nexport type TableSize = \"small\" | \"medium\";\n\n/**\n * Available table cell padding options\n */\nexport type TablePadding = \"normal\" | \"checkbox\" | \"none\";\n\n/**\n * Internal table context value\n */\ninterface TableContextValue {\n size: TableSize;\n padding: TablePadding;\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext(null);\n\nfunction useTableContext() {\n return useContext(TableContext);\n}\n\n/**\n * Props for the Table component\n */\nexport interface TableProps {\n children?: React.ReactNode;\n size?: TableSize;\n padding?: TablePadding;\n stickyHeader?: boolean;\n style?: object;\n}\n\n/**\n * Root table component that provides context for child table elements.\n * Implements Material Design table patterns with accessibility support.\n *\n * @param props - Table configuration props\n * @returns Table context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * Name\n * Email\n * \n * \n * \n * {data.map(row => (\n * \n * {row.name}\n * {row.email}\n * \n * ))}\n * \n *
\n * ```\n */\nexport function Table({\n children,\n size = \"medium\",\n padding = \"normal\",\n stickyHeader = false,\n style,\n}: TableProps) {\n const ctx = useMemo(() => ({ size, padding, stickyHeader }), [size, padding, stickyHeader]);\n return (\n \n {children}\n \n );\n}\n\nexport interface TableContainerProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function TableContainer({ children, style }: TableContainerProps) {\n const { table } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n\nexport function TableHead({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport function TableBody({ children }: { children?: React.ReactNode }) {\n return {children};\n}\n\nexport function TableFooter({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport interface TableRowProps {\n children?: React.ReactNode;\n selected?: boolean;\n style?: object;\n}\n\nexport function TableRow({ children, selected = false, style }: TableRowProps) {\n const { table } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\nexport interface TableCellProps {\n children?: React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n padding?: TablePadding;\n size?: TableSize;\n variant?: \"head\" | \"body\" | \"footer\";\n style?: object;\n}\n\nexport function TableCell({\n children,\n align = \"left\",\n padding,\n size,\n variant = \"body\",\n style,\n}: TableCellProps) {\n const { table } = useComponentTokens();\n const ctx = useTableContext();\n const tokens = useTokens();\n const resolvedPadding = padding ?? ctx?.padding ?? \"normal\";\n const resolvedSize = size ?? ctx?.size ?? \"medium\";\n\n const paddingX = {\n normal: tokens.spacing[4],\n checkbox: tokens.spacing[2],\n none: 0,\n }[resolvedPadding];\n\n const paddingY = resolvedSize === \"small\" ? tokens.spacing[2] : tokens.spacing[3];\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface TablePaginationProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange?: (page: number) => void;\n onRowsPerPageChange?: (rows: number) => void;\n labelRowsPerPage?: string;\n}\n\nexport function TablePagination({\n count,\n page,\n rowsPerPage,\n onPageChange,\n labelRowsPerPage = \"Rows per page\",\n}: TablePaginationProps) {\n const tokens = useTokens();\n const totalPages = Math.max(1, Math.ceil(count / rowsPerPage));\n\n return (\n \n \n {labelRowsPerPage}: {rowsPerPage}\n \n \n \n Page {page + 1} of {totalPages}\n \n onPageChange?.(Math.max(0, page - 1))}\n startIcon={}\n >\n Prev\n \n = totalPages - 1}\n onPress={() => onPageChange?.(Math.min(totalPages - 1, page + 1))}\n endIcon={}\n >\n Next\n \n \n \n );\n}\n\nexport interface TableSortLabelProps {\n active?: boolean;\n direction?: \"asc\" | \"desc\";\n onClick?: () => void;\n children?: React.ReactNode;\n}\n\nexport function TableSortLabel({\n active = false,\n direction = \"asc\",\n onClick,\n children,\n}: TableSortLabelProps) {\n const tokens = useTokens();\n return (\n \n \n {children}\n \n {active ? (\n \n {direction === \"asc\" ? \"arrowUp\" : \"arrowDown\"}\n \n ) : (\n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTabs, useTokens } from \"@truongdq01/headless\";\n\nexport interface TabsProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n variant?: \"standard\" | \"scrollable\" | \"fullWidth\";\n centered?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface TabProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface TabsContextValue {\n getTabProps: (value: T, disabled?: boolean) => {\n onPress: () => void;\n accessibilityRole: \"tab\";\n accessibilityState: { selected: boolean; disabled: boolean };\n };\n isSelected: (value: T) => boolean;\n orientation: \"horizontal\" | \"vertical\";\n variant: \"standard\" | \"scrollable\" | \"fullWidth\";\n}\n\nconst TabsContext = createContext | null>(null);\n\nexport function Tabs({\n value,\n defaultValue,\n onChange,\n variant = \"standard\",\n centered = false,\n orientation = \"horizontal\",\n children,\n}: TabsProps) {\n const { tabs } = useComponentTokens();\n const { getTabProps, isSelected } = useTabs({ value, defaultValue, onChange });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function Tab({ value, label, icon, disabled = false }: TabProps) {\n const { tabs } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(TabsContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const { onPress, accessibilityState } = ctx.getTabProps(value, disabled);\n\n return (\n [\n {\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderBottomWidth: ctx.orientation === \"horizontal\" ? tabs.indicator.height : 0,\n borderLeftWidth: ctx.orientation === \"vertical\" ? tabs.indicator.height : 0,\n borderColor: selected ? tabs.indicator.bg : \"transparent\",\n opacity: disabled ? 0.5 : pressed ? 0.92 : 1,\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: tokens.spacing[2],\n },\n ctx.variant === \"fullWidth\" ? { flex: 1, justifyContent: \"center\" } : null,\n ]}\n >\n {icon}\n {label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { View, Text, TextInput } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"../Input/AnimatedHelperText\";\n\n/** IMPROVEMENT_PLAN Issue #1 — `inside` | `above` (label row) | `below` (between field and helper) */\nexport type TextAreaCounterPosition = \"inside\" | \"above\" | \"below\";\n\nconst FOCUS_MS = 150;\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n value?: string;\n onChangeText?: (text: string) => void;\n onBlur?: () => void;\n onFocus?: () => void;\n error?: string;\n helperText?: string;\n /**\n * Kept for API compatibility (e.g. TextField `rows`); layout height uses `maxLines` only.\n */\n minLines?: number;\n /** Visible height is fixed to this many lines; extra text scrolls inside. */\n maxLines?: number;\n /** Show character counter when `maxLength` is set */\n showCounter?: boolean;\n /**\n * `inside` = bottom-right inside the field (default);\n * `above` = same row as label (top);\n * `below` = between the field and helper/error.\n */\n counterPosition?: TextAreaCounterPosition;\n /** Maximum length (enables counter when `showCounter` is true) */\n maxLength?: number;\n disabled?: boolean;\n autoFocus?: boolean;\n accessibilityLabel?: string;\n}\n\nexport function TextArea({\n label,\n placeholder,\n value = \"\",\n onChangeText,\n onBlur,\n onFocus,\n error,\n helperText,\n minLines: _minLines = 3,\n maxLines = 8,\n maxLength,\n showCounter = true,\n counterPosition = \"inside\",\n disabled = false,\n autoFocus = false,\n accessibilityLabel,\n}: TextAreaProps) {\n const { textArea } = useComponentTokens();\n const tokens = useTokens();\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n const [isFocused, setIsFocused] = useState(false);\n\n const focusProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const animatedBorderStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const LINE_HEIGHT = tokens.fontSize.md * tokens.lineHeight.normal;\n /** Fixed outer height from `maxLines` — no content measurement (avoids layout loops). */\n const maxHeight = maxLines * LINE_HEIGHT + tokens.spacing[3] * 2;\n\n /** Vertical padding inside bordered container (must match `textArea.container`). */\n const containerPadV = tokens.spacing[2];\n\n const showCounterAbove = Boolean(maxLength && showCounter && counterPosition === \"above\");\n const showCounterInside = Boolean(maxLength && showCounter && counterPosition === \"inside\");\n const showCounterBelow = Boolean(maxLength && showCounter && counterPosition === \"below\");\n const counterPaddingBottom = showCounterInside ? tokens.spacing[5] : 0;\n\n const innerMaxH = Math.max(1, maxHeight - 2 * containerPadV);\n\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n const containerStyle = [\n textArea.container,\n { height: maxHeight },\n !isGrouped && error && textArea.state.error,\n !isGrouped && disabled && textArea.state.disabled,\n groupedChrome,\n ];\n\n const charCount = value.length;\n const nearLimit = maxLength && charCount >= maxLength * 0.9;\n const atLimit = maxLength && charCount >= maxLength;\n\n const counterColor = atLimit\n ? tokens.color.error.text\n : nearLimit\n ? tokens.color.warning.text\n : tokens.color.text.tertiary;\n\n const counterWeight = atLimit ? tokens.fontWeight.semibold : tokens.fontWeight.regular;\n\n const counterEl = maxLength && showCounter ? (\n \n {charCount}/{maxLength}\n \n ) : null;\n\n return (\n \n {/* Label row — counter when `above` */}\n {(label || showCounterAbove) && (\n \n {label ? {label} : null}\n {showCounterAbove ? counterEl : null}\n \n )}\n\n {/* Text area */}\n \n {\n setIsFocused(true);\n onFocus?.();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n />\n {showCounterInside && counterEl ? (\n \n {counterEl}\n \n ) : null}\n \n\n {/* Counter between field and helper — `below` */}\n {showCounterBelow && counterEl ? (\n \n {counterEl}\n \n ) : null}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Input, type InputProps } from \"../Input/Input\";\nimport { TextArea } from \"../TextArea/TextArea\";\nimport { Select, type SelectProps } from \"../Select/Select\";\nimport { Pressable } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface TextFieldProps extends Omit {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n multiline?: boolean;\n rows?: number;\n maxRows?: number;\n minRows?: number;\n helperText?: string;\n error?: boolean | string;\n required?: boolean;\n select?: boolean;\n selectProps?: SelectProps;\n type?: \"text\" | \"password\" | \"email\" | \"number\";\n}\n\nexport function TextField({\n variant = \"outlined\",\n multiline = false,\n rows,\n maxRows,\n minRows,\n helperText,\n error,\n required = false,\n select = false,\n selectProps,\n type = \"text\",\n label,\n ...rest\n}: TextFieldProps) {\n const { textField } = useComponentTokens();\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n \n const labelText = required && label ? `${label} *` : label;\n const errorText = typeof error === \"string\" ? error : error ? helperText : undefined;\n\n const trailingElement = isPassword ? (\n setShowPassword(!showPassword)}\n style={{ padding: 4 }}\n hitSlop={8}\n >\n \n {showPassword ? \"eyeOff\" : \"eye\"}\n \n \n ) : rest.trailingElement;\n\n if (select) {\n return (\n \n );\n }\n\n if (multiline) {\n return (\n \n );\n }\n\n return (\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TimelinePosition = \"left\" | \"right\" | \"alternate\" | \"alternate-reverse\";\n\ninterface TimelineContextValue {\n position: TimelinePosition;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nconst TimelineContext = createContext(null);\n\nfunction useTimelineContext() {\n return useContext(TimelineContext);\n}\n\nexport interface TimelineProps {\n position?: TimelinePosition;\n children?: React.ReactNode;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nexport function Timeline({ position = \"right\", itemVariant = \"filled\", children }: TimelineProps) {\n const { timeline } = useComponentTokens();\n return (\n \n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<{ position?: TimelinePosition | \"left\" | \"right\"; variant?: \"filled\" | \"outlined\" }>(child)) return child;\n if (position === \"alternate\" || position === \"alternate-reverse\") {\n const isEven = index % 2 === 0;\n const derived = position === \"alternate\" ? (isEven ? \"right\" : \"left\") : (isEven ? \"left\" : \"right\");\n return React.cloneElement(child, { position: child.props.position ?? derived, variant: itemVariant });\n }\n return React.cloneElement(child, { variant: itemVariant });\n })}\n \n );\n}\n\nexport interface TimelineItemProps {\n position?: \"left\" | \"right\";\n variant?: \"filled\" | \"outlined\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n children?: React.ReactNode;\n}\n\nexport function TimelineItem({ position, variant = \"filled\", status = \"pending\", children }: TimelineItemProps) {\n const ctx = useTimelineContext();\n const resolved = position ?? (ctx?.position === \"left\" || ctx?.position === \"right\" ? ctx.position : \"right\");\n\n return (\n \n \n {resolved === \"right\" ? extractOpposite(children) : extractContent(children)}\n \n \n \n {resolved === \"right\" ? extractContent(children) : extractOpposite(children)}\n \n \n );\n}\n\nfunction extractChildrenByType(children: React.ReactNode, type: any) {\n const items: React.ReactNode[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === type) {\n const element = child as React.ReactElement;\n items.push(element.props.children);\n }\n });\n return items.length > 0 ? items : null;\n}\n\nfunction extractSeparator(children: React.ReactNode) {\n return extractChildrenByType(children, TimelineSeparator);\n}\n\nfunction extractContent(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nfunction extractOpposite(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineOppositeContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nexport interface TimelineSeparatorProps {\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n variant?: \"filled\" | \"outlined\";\n children?: React.ReactNode;\n}\n\nexport function TimelineSeparator({ status = \"pending\", variant = \"filled\", children }: TimelineSeparatorProps) {\n const { timeline } = useComponentTokens();\n \n const connectorColor = status === \"completed\" ? timeline.dot.completed.borderColor : timeline.connector.color;\n\n return (\n \n {children || (\n <>\n \n \n \n )}\n \n );\n}\n\nexport interface TimelineDotProps {\n variant?: \"filled\" | \"outlined\";\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\" | \"inherit\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n size?: number;\n}\n\nexport function TimelineDot({ variant = \"filled\", color = \"primary\", status, size }: TimelineDotProps) {\n const { timeline } = useComponentTokens();\n const tokens = useTokens();\n \n const resolvedStatus = status || (color === \"success\" ? \"completed\" : color === \"error\" ? \"error\" : color === \"primary\" ? \"active\" : \"pending\");\n const statusTokens = (timeline.dot as any)[resolvedStatus] || timeline.dot.pending;\n \n const dotSize = size || timeline.dot.size || 16;\n\n return (\n \n );\n}\n\nexport interface TimelineConnectorProps {\n color?: string;\n width?: number;\n}\n\nexport function TimelineConnector({ color, width }: TimelineConnectorProps) {\n const { timeline } = useComponentTokens();\n const resolvedWidth = width || timeline.connector.width;\n return ;\n}\n\nexport interface TimelineContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineContent({ children, align = \"left\" }: TimelineContentProps) {\n return (\n \n {children}\n \n );\n}\n\nexport interface TimelineOppositeContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineOppositeContent({ children, align = \"right\" }: TimelineOppositeContentProps) {\n return (\n \n {typeof children === \"string\" ? {children} : children}\n \n );\n}\n","import React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, { LinearTransition as RawLinearTransition } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useToast, dismissToast } from \"@truongdq01/headless\";\nimport type { ToastPosition } from \"@truongdq01/headless\";\nimport { ToastItem } from \"./ToastItem\";\n\n// ─── Props ────────────────────────────────────────────────────────\n\nexport interface ToastContainerProps {\n position?: ToastPosition;\n /** Horizontal offset from screen edges */\n horizontalPadding?: number;\n}\n\nconst layoutTransition =\n typeof RawLinearTransition?.duration === \"function\"\n ? RawLinearTransition.duration(280)\n : undefined;\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Container component for displaying toast notifications.\n * Manages positioning and animations for multiple toasts.\n *\n * @param props - Toast container configuration\n * @returns Animated toast container component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function ToastContainer({\n position = \"bottom\",\n horizontalPadding = 16,\n}: ToastContainerProps) {\n const { toasts } = useToast();\n const insets = useSafeAreaInsets();\n\n const positionStyle =\n position === \"top\"\n ? { top: insets.top + 8, left: horizontalPadding, right: horizontalPadding }\n : { bottom: insets.bottom + 8, left: horizontalPadding, right: horizontalPadding };\n\n if (toasts.length === 0) return null;\n\n return (\n \n {toasts.map((item) => (\n \n ))}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n zIndex: 9999,\n gap: 8,\n },\n});","import React, { useEffect } from \"react\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n FadeOutUp,\n FadeInDown,\n FadeOutDown,\n SlideInUp,\n SlideInDown,\n Easing,\n} from \"react-native-reanimated\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { ToastItem as ToastItemType, ToastPosition } from \"@truongdq01/headless\";\n\nconst VARIANT_ICONS: Record = {\n success: \"checkCircle\",\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n};\n\nexport interface ToastItemProps {\n item: ToastItemType;\n position: ToastPosition;\n onDismiss: (id: string) => void;\n}\n\nexport function ToastItem({ item, position, onDismiss }: ToastItemProps) {\n const { toast } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n // Progress bar for auto-dismiss\n const progress = useSharedValue(1);\n\n useEffect(() => {\n if (item.persistent) return;\n progress.value = withTiming(0, { duration: item.duration }, (finished) => {\n if (finished) runOnJS(onDismiss)(item.id);\n });\n return () => {\n progress.value = 1;\n };\n }, [item.id, item.duration, item.persistent]);\n\n const progressStyle = useAnimatedStyle(() => ({\n width: `${progress.value * 100}%`,\n }));\n\n // Pick variant colors\n const variantMap = {\n default: { iconColor: tokens.color.text.tertiary, progressColor: tokens.color.border.strong },\n success: { iconColor: tokens.color.success.icon, progressColor: tokens.color.success.icon },\n warning: { iconColor: tokens.color.warning.icon, progressColor: tokens.color.warning.icon },\n error: { iconColor: tokens.color.error.icon, progressColor: tokens.color.error.icon },\n info: { iconColor: tokens.color.info.icon, progressColor: tokens.color.info.icon },\n } as const;\n\n const v = variantMap[item.variant] || variantMap.default;\n\n const entering = reduceMotion\n ? undefined\n : position === \"top\" ? SlideInDown.duration(280).easing(Easing.out(Easing.cubic)) : SlideInUp.duration(280).easing(Easing.out(Easing.cubic));\n const exiting = reduceMotion\n ? undefined\n : position === \"top\" ? FadeOutUp.duration(200) : FadeOutDown.duration(200);\n\n return (\n \n {/* Icon */}\n {item.icon ? (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(item.icon)\n ? React.cloneElement(item.icon, {\n size: item.icon.props.size ?? 20,\n color: item.icon.props.color ?? \"#FFFFFF\",\n })\n : item.icon}\n \n ) : item.variant !== \"default\" && (\n \n )}\n\n {/* Message */}\n \n {item.message}\n \n\n {/* Action button */}\n {item.action && (\n {\n item.action!.onPress();\n onDismiss(item.id);\n }}\n style={{ paddingLeft: 4 }}\n >\n \n {item.action.label}\n \n \n )}\n\n {/* Dismiss button */}\n onDismiss(item.id)}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n >\n \n \n\n {/* Progress bar */}\n {!item.persistent && (\n \n \n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useComponentTokens, usePressable, useTokens, useToggleGroup } from \"@truongdq01/headless\";\n\nexport interface ToggleButtonGroupProps {\n value?: T | T[];\n defaultValue?: T | T[];\n exclusive?: boolean;\n onChange?: (value: T | T[] | undefined) => void;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface ToggleButtonProps {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\ninterface ToggleContextValue {\n isSelected: (value: T) => boolean;\n toggle: (value: T) => void;\n size: \"sm\" | \"md\" | \"lg\";\n disabled: boolean;\n}\n\nconst ToggleContext = createContext | null>(null);\n\nexport function ToggleButtonGroup({\n value,\n defaultValue,\n exclusive = false,\n onChange,\n orientation = \"horizontal\",\n size = \"md\",\n disabled = false,\n children,\n}: ToggleButtonGroupProps) {\n const { isSelected, toggle } = useToggleGroup({\n value,\n defaultValue,\n exclusive,\n disabled,\n onChange,\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function ToggleButton({ value, disabled = false, children }: ToggleButtonProps) {\n const { toggleButton } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(ToggleContext as React.Context | null>);\n\n const selected = ctx?.isSelected(value) ?? false;\n const isDisabled = disabled || ctx?.disabled;\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: () => ctx?.toggle(value),\n disabled: isDisabled,\n feedbackMode: \"scaleSubtle\",\n accessibilityRole: \"button\",\n });\n\n const size = ctx?.size ?? \"md\";\n const sizeMap = {\n sm: { height: 32, paddingHorizontal: 12, fontSize: tokens.fontSize.sm },\n md: { height: 40, paddingHorizontal: 16, fontSize: tokens.fontSize.md },\n lg: { height: 48, paddingHorizontal: 20, fontSize: tokens.fontSize.lg },\n };\n\n const s = sizeMap[size];\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type TooltipPlacement =\n | \"top\" | \"top-start\" | \"top-end\"\n | \"bottom\" | \"bottom-start\" | \"bottom-end\"\n | \"left\" | \"left-start\" | \"left-end\"\n | \"right\" | \"right-start\" | \"right-end\";\n\nexport interface TooltipProps {\n title: React.ReactNode;\n children: React.ReactElement;\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n placement?: TooltipPlacement;\n}\n\ninterface TriggerRect {\n pageX: number;\n pageY: number;\n width: number;\n height: number;\n}\n\nexport function Tooltip({\n title,\n children,\n open: controlledOpen,\n onOpen,\n onClose,\n placement = \"top\",\n}: TooltipProps) {\n const { tooltip } = useComponentTokens();\n const tokens = useTokens();\n const [internalOpen, setInternalOpen] = useState(false);\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [triggerRect, setTriggerRect] = useState(null);\n const [tooltipSize, setTooltipSize] = useState({ width: 0, height: 0 });\n const triggerRef = React.useRef(null);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n // Simple fade animation\n const opacity = useSharedValue(0);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 150 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 100 }, () => {\n runOnJS(onDone)();\n });\n }, []);\n\n const handleOpen = () => {\n triggerRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setTriggerRect({ pageX, pageY, width: w, height: h });\n setInternalOpen(true);\n onOpen?.();\n requestAnimationFrame(() => animateIn());\n });\n };\n\n const handleClose = () => {\n animateOut(() => {\n setInternalOpen(false);\n setTriggerRect(null);\n onClose?.();\n });\n };\n\n // Compute position\n const GAP = 8;\n const PADDING = 12;\n const tx = triggerRect?.pageX ?? 0;\n const ty = triggerRect?.pageY ?? 0;\n const tw = triggerRect?.width ?? 0;\n const th = triggerRect?.height ?? 0;\n const tlw = tooltipSize.width || 200;\n const tlh = tooltipSize.height || 40;\n \n let top = ty - tlh - GAP;\n let left = tx + tw / 2 - tlw / 2;\n\n // Simple placement logic\n if (placement.includes(\"bottom\")) {\n top = ty + th + GAP;\n }\n if (placement.includes(\"left\")) {\n left = tx - tlw - GAP;\n }\n if (placement.includes(\"right\")) {\n left = tx + tw + GAP;\n }\n if (placement.includes(\"top-left\") || placement.includes(\"bottom-left\")) {\n left = tx;\n }\n if (placement.includes(\"top-right\") || placement.includes(\"bottom-right\")) {\n left = tx + tw - tlw;\n }\n\n // Clamp to screen bounds\n const safeTop = Math.max(PADDING, Math.min(top, windowHeight - tlh - PADDING));\n const safeLeft = Math.max(PADDING, Math.min(left, windowWidth - tlw - PADDING));\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n <>\n \n {children}\n \n\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setTooltipSize({ width, height });\n }}\n onStartShouldSetResponder={() => true}\n style={[\n tooltip.container,\n {\n position: \"absolute\",\n top: safeTop,\n left: safeLeft,\n },\n animStyle,\n ] as any}\n >\n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle, type AccessibilityRole } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TypographyVariant =\n | \"display\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\"\n | \"label\"\n | \"code\"\n | \"inherit\";\n\n/** Semantic role hint — RN maps to `accessibilityRole` / `accessibilityLevel` (IMPROVEMENT_PLAN Issue #2) */\nexport type TypographyAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport interface TypographyProps {\n children?: React.ReactNode;\n variant?: TypographyVariant;\n /** Maps to accessibility props (RN has no DOM elements) */\n as?: TypographyAs;\n align?: \"left\" | \"right\" | \"center\" | \"justify\" | \"inherit\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"disabled\" | \"brand\" | \"error\" | string;\n gutterBottom?: boolean;\n noWrap?: boolean;\n paragraph?: boolean;\n display?: \"none\" | \"flex\" | \"contents\" | \"block\" | \"inline\" | \"inline-flex\";\n style?: TextStyle | TextStyle[];\n}\n\nfunction accessibilityForAs(as: TypographyAs | undefined): { accessibilityRole?: AccessibilityRole } {\n if (!as || as === \"span\") return {};\n if (as === \"p\" || as === \"label\") {\n return { accessibilityRole: \"text\" };\n }\n if (as === \"h1\" || as === \"h2\" || as === \"h3\" || as === \"h4\" || as === \"h5\" || as === \"h6\") {\n return { accessibilityRole: \"header\" };\n }\n return {};\n}\n\nfunction TypographyInner({\n children,\n variant = \"body1\",\n as,\n align = \"left\",\n color,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n display,\n style,\n}: TypographyProps) {\n const { typography } = useComponentTokens();\n const tokens = useTokens();\n\n const variantStyle =\n variant === \"inherit\" ? {} : typography.variants[variant as keyof typeof typography.variants] || {};\n\n const presetColors = typography.colors;\n const resolvedColor =\n color != null &&\n color !== \"\" &&\n typeof color === \"string\" &&\n Object.prototype.hasOwnProperty.call(presetColors, color)\n ? presetColors[color as keyof typeof presetColors]\n : color || presetColors.primary;\n\n const resolvedDisplay =\n display === \"block\" || display === \"inline\" || display === \"inline-flex\"\n ? \"flex\"\n : display;\n\n const sans = tokens.fontFamily?.sans;\n const sansFont =\n sans != null && sans !== \"\" ? { fontFamily: sans } : null;\n\n const skipSans = variant === \"code\";\n\n const a11y = accessibilityForAs(as);\n\n return (\n \n {children}\n \n );\n}\n\nexport const Typography = React.memo(TypographyInner);\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramTabBarProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n children?: React.ReactNode;\n glassEffect?: boolean;\n}\n\nexport interface TelegramTabProps {\n value: T;\n label: string;\n icon: React.ReactNode;\n activeIcon?: React.ReactNode;\n badge?: number | string | boolean;\n disabled?: boolean;\n}\n\ninterface TabBarContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T, disabled?: boolean) => { onPress?: () => void };\n}\n\nconst TabBarContext = createContext | null>(null);\n\n// ─── Telegram Tab Bar ─────────────────────────────────────────────\n\nexport function TelegramTabBar({\n value: controlledValue,\n defaultValue,\n onChange,\n children,\n glassEffect = true,\n}: TelegramTabBarProps) {\n const tokens = useTokens();\n const { bottomNavigation } = useComponentTokens();\n\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const isSelected = (itemValue: T) => value === itemValue;\n\n const getItemProps = (itemValue: T, disabled?: boolean) => ({\n onPress: disabled\n ? undefined\n : () => {\n if (controlledValue === undefined) setInternalValue(itemValue);\n onChange?.(itemValue);\n },\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\n// ─── Telegram Tab Item ────────────────────────────────────────────\n\nexport function TelegramTab({\n value,\n label,\n icon,\n activeIcon,\n badge,\n disabled = false,\n}: TelegramTabProps) {\n const tokens = useTokens();\n const ctx = useContext(TabBarContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const progress = useSharedValue(selected ? 1 : 0);\n\n React.useEffect(() => {\n progress.value = withSpring(selected ? 1 : 0, {\n damping: 22,\n stiffness: 300,\n });\n }, [selected]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ scale: interpolate(progress.value, [0, 1], [1, 1.15]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const labelStyle = useAnimatedStyle(() => ({\n color: interpolateColor(\n progress.value,\n [0, 1],\n [tokens.color.text.secondary, tokens.color.brand.default]\n ),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0.95, 1]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const dotStyle = useAnimatedStyle(() => ({\n opacity: interpolate(progress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0, 1]) }],\n }));\n\n const itemProps = ctx.getItemProps(value, disabled);\n\n return (\n [\n styles.tabItem,\n pressed && { opacity: 0.85 },\n disabled && { opacity: 0.3 },\n ]}\n >\n \n \n {selected && activeIcon ? activeIcon : icon}\n \n\n {badge !== undefined && badge !== false && (\n \n )}\n \n\n \n {label}\n \n\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n paddingHorizontal: 8,\n paddingVertical: 6,\n paddingBottom: 6,\n minHeight: 56,\n },\n tabItem: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 4,\n paddingHorizontal: 8,\n minHeight: 48,\n },\n iconContainer: {\n position: \"relative\",\n marginBottom: 2,\n },\n badge: {\n position: \"absolute\",\n top: -4,\n right: -12,\n },\n tabLabel: {\n fontSize: 11,\n fontWeight: \"500\",\n lineHeight: 14,\n marginTop: 2,\n },\n activeDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n marginTop: 4,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Avatar } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface ChatListItemProps {\n /** Optional unique id */\n id?: string;\n /** Avatar source or initials */\n avatar?: {\n src?: string;\n initials?: string;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n };\n /** Chat name / contact name */\n name: string;\n /** Message preview text */\n preview?: string;\n /** Message timestamp */\n time?: string;\n /** Unread count */\n unread?: number;\n /** Is message read */\n read?: boolean;\n /** Is message sent by current user */\n outgoing?: boolean;\n /** Is chat muted */\n muted?: boolean;\n /** Is chat pinned */\n pinned?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Disable interaction */\n disabled?: boolean;\n /** Press callback */\n onPress?: () => void;\n /** Long press callback */\n onLongPress?: () => void;\n /** Trailing custom element */\n trailingElement?: React.ReactNode;\n}\n\n// ─── Chat List Item ───────────────────────────────────────────────\n\nexport function ChatListItem({\n avatar,\n name,\n preview,\n time,\n unread,\n read = true,\n outgoing = true,\n muted = false,\n pinned = false,\n selected = false,\n disabled = false,\n onPress,\n onLongPress,\n trailingElement,\n}: ChatListItemProps) {\n const tokens = useTokens();\n const { list } = useComponentTokens();\n\n const pressed = useSharedValue(0);\n\n const containerStyle = useAnimatedStyle(() => ({\n backgroundColor: pressed.value === 1\n ? tokens.color.surface.hover\n : selected\n ? tokens.color.brand.subtle\n : \"transparent\",\n }));\n\n return (\n { pressed.value = withSpring(1, { damping: 20 }); }}\n onPressOut={() => { pressed.value = withSpring(0, { damping: 20 }); }}\n >\n \n {/* Avatar */}\n {avatar && (\n \n )}\n\n {/* Content */}\n \n \n \n {pinned && (\n 📌\n )}\n \n {name}\n \n {muted && (\n 🔕\n )}\n \n\n {time && (\n 0 ? { color: tokens.color.brand.default, fontWeight: \"600\" as const } : undefined,\n ]}\n >\n {time}\n \n )}\n \n\n \n \n {outgoing && (\n \n {read ? \"✓✓\" : \"✓\"}\n \n )}\n {preview && (\n \n {preview}\n \n )}\n \n\n \n {unread && unread > 0 && (\n \n )}\n {trailingElement}\n \n \n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 10,\n minHeight: 72,\n },\n avatar: {\n marginRight: 12,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n headerRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 4,\n },\n nameContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n name: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 20,\n flex: 1,\n },\n iconPin: {\n marginRight: 4,\n fontSize: 14,\n },\n iconMute: {\n marginLeft: 4,\n fontSize: 14,\n },\n time: {\n fontSize: 13,\n lineHeight: 16,\n textAlign: \"right\",\n },\n previewRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n previewContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n checkmark: {\n fontSize: 12,\n marginRight: 4,\n },\n preview: {\n fontSize: 14,\n lineHeight: 18,\n flex: 1,\n },\n rightContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n});\n\n\n","import React, { useRef, useState } from \"react\";\nimport { View, TextInput as RNTextInput, Pressable, StyleSheet, type TextInputProps, Text } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withTiming, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface MessageInputProps extends Omit {\n /** Left action buttons (attach, sticker, etc.) */\n leftActions?: React.ReactNode;\n /** Right action buttons (send, voice, etc.) */\n rightActions?: React.ReactNode;\n /** Show attachment button */\n showAttach?: boolean;\n /** Show sticker button */\n showSticker?: boolean;\n /** Show send button */\n showSend?: boolean;\n /** Callback when send button pressed */\n onSend?: (text: string) => void;\n /** Callback when attachment button pressed */\n onAttach?: () => void;\n /** Callback when sticker button pressed */\n onSticker?: () => void;\n /** Custom send button */\n sendButton?: React.ReactNode;\n /** Glass effect background */\n glassEffect?: boolean;\n /** Disable input */\n disabled?: boolean;\n}\n\n// ─── Message Input ────────────────────────────────────────────────\n\nexport function MessageInput({\n leftActions,\n rightActions,\n showAttach = true,\n showSticker = true,\n showSend = true,\n onSend,\n onAttach,\n onSticker,\n sendButton,\n glassEffect = true,\n disabled = false,\n value,\n onChangeText,\n placeholder = \"Type a message...\",\n ...rest\n}: MessageInputProps) {\n const tokens = useTokens();\n const { input } = useComponentTokens();\n const { size: iconSize } = useIconStyle(\"input\");\n const inputRef = useRef(null);\n const [focused, setFocused] = useState(false);\n const [text, setText] = useState(value ?? \"\");\n\n const height = useSharedValue(48);\n const attachVisible = useSharedValue(1);\n\n const hasText = text.length > 0;\n\n React.useEffect(() => {\n attachVisible.value = withTiming(hasText ? 0 : 1, { duration: 180 });\n }, [hasText]);\n\n const inputStyle = useAnimatedStyle(() => ({\n minHeight: height.value,\n }));\n\n const attachStyle = useAnimatedStyle(() => ({\n opacity: attachVisible.value,\n transform: [{ scale: attachVisible.value }],\n width: attachVisible.value > 0.5 ? 40 : 0,\n }));\n\n const handleSend = () => {\n if (text.trim() && onSend) {\n onSend(text.trim());\n setText(\"\");\n }\n };\n\n const handleChangeText = (newText: string) => {\n setText(newText);\n onChangeText?.(newText);\n };\n\n return (\n \n {showAttach && (\n \n \n \n 📎\n \n \n \n )}\n\n {leftActions}\n\n \n setFocused(true)}\n onBlur={() => setFocused(false)}\n multiline\n textAlignVertical=\"center\"\n {...rest}\n />\n\n {showSticker && (\n \n 😊\n \n )}\n \n\n {rightActions}\n\n {showSend && (\n sendButton ?? (\n \n \n {hasText ? \"➤\" : \"🎤\"}\n \n \n )\n )}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n paddingHorizontal: 8,\n paddingVertical: 8,\n minHeight: 56,\n },\n actionButton: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n iconButton: {\n width: 40,\n height: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputWrapper: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n marginHorizontal: 4,\n borderRadius: 20,\n borderWidth: 1,\n borderColor: \"rgba(0,0,0,0.1)\",\n backgroundColor: \"rgba(0,0,0,0.03)\",\n overflow: \"hidden\",\n minHeight: 40,\n },\n input: {\n flex: 1,\n fontSize: 16,\n paddingHorizontal: 12,\n paddingVertical: 10,\n paddingRight: 40,\n maxHeight: 120,\n },\n stickerButton: {\n position: \"absolute\",\n right: 4,\n bottom: 4,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sendButton: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: 4,\n },\n icon: {\n fontSize: 20,\n },\n sendIcon: {\n fontSize: 18,\n fontWeight: \"600\",\n color: \"rgba(0,0,0,0.3)\",\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n// @ts-ignore expo-blur is optional peer dependency\nimport { BlurView } from \"expo-blur\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramPopupProps {\n /** If true, the popup is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Title for popup */\n title?: string;\n /** Action buttons */\n actions?: React.ReactNode;\n /** Callback on close */\n onClose?: () => void;\n /** Duration in ms before auto-hiding */\n autoHideDuration?: number | null;\n /** Position on screen */\n position?: \"top\" | \"bottom\" | \"center\";\n /** Blur background */\n blur?: boolean;\n /** Icon */\n icon?: React.ReactNode;\n /** Variant for different types */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n}\n\n// ─── Telegram Popup ───────────────────────────────────────────────\n\nexport function TelegramPopup({\n open,\n message,\n title,\n actions,\n onClose,\n autoHideDuration = 3000,\n position = \"top\",\n blur = true,\n icon,\n variant = \"default\",\n}: TelegramPopupProps) {\n const tokens = useTokens();\n const { height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n\n const translateY = useSharedValue(position === \"bottom\" ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = useCallback(() => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n translateY.value = withTiming(position === \"bottom\" ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, [position]);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = position === \"bottom\" ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const positionStyle =\n position === \"top\"\n ? { top: 48, alignSelf: \"center\" as const }\n : position === \"bottom\"\n ? { bottom: 96, alignSelf: \"center\" as const }\n : { alignSelf: \"center\" as const, top: windowHeight / 2 - 50 };\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as const,\n }));\n\n const variantColors = {\n default: tokens.color.bg.default,\n success: tokens.color.success.bg,\n error: tokens.color.error.bg,\n warning: tokens.color.warning.bg,\n info: tokens.color.info.bg,\n };\n\n if (!mounted && !open) return null;\n\n return (\n \n \n {blur && (\n \n )}\n \n \n {icon && {icon}}\n \n {title && (\n {title}\n )}\n {typeof message === \"string\" ? (\n \n {message}\n \n ) : (\n message\n )}\n \n \n {actions && {actions}}\n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.05)\",\n },\n popup: {\n position: \"absolute\",\n marginHorizontal: 16,\n minWidth: 280,\n maxWidth: 340,\n padding: 16,\n elevation: 6,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n iconContainer: {\n marginRight: 12,\n },\n textContent: {\n flex: 1,\n },\n title: {\n fontSize: 15,\n fontWeight: \"600\",\n lineHeight: 20,\n marginBottom: 2,\n },\n message: {\n fontSize: 14,\n lineHeight: 18,\n },\n actions: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginTop: 12,\n gap: 8,\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramContextMenuItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramContextMenuProps {\n open: boolean;\n onClose: () => void;\n items: TelegramContextMenuItem[];\n anchor?: { x: number; y: number; width: number; height: number } | null;\n}\n\n// ─── Telegram Context Menu ────────────────────────────────────────\n\nexport function TelegramContextMenu({\n open,\n onClose,\n items,\n anchor,\n}: TelegramContextMenuProps) {\n const tokens = useTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n const [menuSize, setMenuSize] = React.useState({ width: 200, height: 0 });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 180 });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, []);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n // Position calculation\n const GAP = 8;\n let top = 100;\n let left = windowWidth - 220;\n\n if (anchor) {\n top = anchor.y + anchor.height + GAP;\n left = anchor.x;\n\n if (left + menuSize.width > windowWidth - 16) {\n left = windowWidth - menuSize.width - 16;\n }\n if (top + menuSize.height > windowHeight - 16) {\n top = anchor.y - menuSize.height - GAP;\n }\n top = Math.max(16, top);\n left = Math.max(16, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n setMenuSize({\n width: e.nativeEvent.layout.width,\n height: e.nativeEvent.layout.height,\n });\n }}\n style={[\n styles.menu,\n animStyle,\n {\n position: \"absolute\",\n top,\n left,\n backgroundColor: tokens.color.surface.default,\n borderRadius: 14,\n shadowColor: tokens.color.bg.inverse,\n shadowOffset: { width: 0, height: 6 },\n shadowOpacity: 0.2,\n shadowRadius: 18,\n elevation: 8,\n },\n ]}\n >\n {items.map((item, index) => (\n {\n item.onPress?.();\n onClose();\n }}\n disabled={item.disabled}\n style={({ pressed }) => [\n styles.item,\n index === 0 && { borderTopLeftRadius: 14, borderTopRightRadius: 14 },\n index === items.length - 1 && { borderBottomLeftRadius: 14, borderBottomRightRadius: 14 },\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n ]}\n >\n {item.icon && {item.icon}}\n \n {item.label}\n \n \n ))}\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.1)\",\n },\n menu: {\n minWidth: 180,\n overflow: \"hidden\",\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 48,\n },\n itemIcon: {\n marginRight: 12,\n width: 20,\n alignItems: \"center\",\n },\n itemLabel: {\n fontSize: 15,\n fontWeight: \"500\",\n lineHeight: 20,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { List, ListItem, ListItemText, ListItemIcon } from \"../List\";\nimport { Divider } from \"../Divider\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramSettingsItem {\n id: string;\n label: string;\n subtitle?: string;\n icon?: React.ReactNode;\n value?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramSettingsSection {\n title?: string;\n items: TelegramSettingsItem[];\n}\n\nexport interface TelegramSettingsMenuProps {\n sections: TelegramSettingsSection[];\n variant?: \"default\" | \"grouped\";\n}\n\n// ─── Telegram Settings Menu ───────────────────────────────────────\n\nexport function TelegramSettingsMenu({ sections, variant = \"grouped\" }: TelegramSettingsMenuProps) {\n const tokens = useTokens();\n\n return (\n \n {sections.map((section, sectionIndex) => (\n \n {section.title && (\n \n \n {section.title}\n \n \n )}\n \n {section.items.map((item, itemIndex) => (\n [\n styles.item,\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n itemIndex !== section.items.length - 1 && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: tokens.color.border.subtle,\n marginLeft: 56,\n },\n ]}\n >\n {item.icon && (\n \n {item.icon}\n \n )}\n \n \n {item.label}\n \n {item.subtitle && (\n \n {item.subtitle}\n \n )}\n \n \n {item.value}\n \n \n \n ))}\n \n \n ))}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 16,\n },\n sectionHeader: {\n paddingHorizontal: 32,\n paddingVertical: 8,\n },\n sectionTitle: {\n fontSize: 13,\n fontWeight: \"600\",\n lineHeight: 16,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n section: {\n marginBottom: 24,\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 52,\n },\n itemIcon: {\n width: 28,\n marginRight: 12,\n alignItems: \"center\",\n },\n itemContent: {\n flex: 1,\n },\n itemLabel: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 22,\n },\n itemSubtitle: {\n fontSize: 13,\n lineHeight: 16,\n marginTop: 2,\n },\n itemRight: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n chevron: {\n fontSize: 20,\n fontWeight: \"400\",\n },\n});\n\n\n"],"mappings":"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","names":["Box","Grid","List","Menu","Modal","Pressable","import_headless","import_react","import_react_native","import_headless","React","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","Animated","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_react","import_react_native","import_react_native_reanimated","import_headless","import_react","React","import_react","import_react_native","import_react_native_reanimated","React","Animated","Animated","RNTextInput","React","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","BottomSheet","React","Animated","styles","import_react","import_react_native","import_headless","Box","React","import_react","import_react_native","import_headless","React","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_react_native","import_headless","React","Animated","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_react_native","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_react_native_safe_area_context","import_headless","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","React","DateTimePicker","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","React","Animated","styles","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","import_react","import_react_native","import_headless","React","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_tokens","React","styles","import_react","import_react_native","import_headless","Grid","React","import_react","import_react_native","import_react_native_reanimated","import_headless","Animated","RNImage","React","styles","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","clamp","styles","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","List","React","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Menu","Animated","import_react","import_react_native","import_headless","Modal","React","RNModal","styles","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native","import_headless","React","styles","import_react","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","Pressable","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_tokens","import_headless","clamp","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","SkeletonText","SkeletonCard","SkeletonListItem","SkeletonProfile","SkeletonMedia","SkeletonForm","SkeletonGrid","SkeletonTable","_","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","AnimatedTextInput","Animated","React","currentValue","fillAnimatedStyle","trackAnimatedStyle","onTrackLayout","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","import_tokens","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","FOCUS_MS","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_headless","React","React","import_react","import_react_native","import_react_native_reanimated","import_react_native_safe_area_context","import_headless","import_react","import_react_native_reanimated","import_react_native","import_headless","React","Animated","RawLinearTransition","React","Animated","styles","import_react","import_react_native","import_react_native_reanimated","import_react_native_gesture_handler","import_headless","React","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","import_react","import_react_native","import_headless","React","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","Animated","styles","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","RNTextInput","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_react_native_reanimated","import_headless","React","styles","Animated","import_react","import_react_native","import_headless","React","styles","import_react_native"]} \ No newline at end of file diff --git a/packages/ui/dist/index.mjs b/packages/ui/dist/index.mjs index b1446447..6ccf03e0 100644 --- a/packages/ui/dist/index.mjs +++ b/packages/ui/dist/index.mjs @@ -368,6 +368,7 @@ function AnimatedListInner({ ref, data, renderItem: (info) => /* @__PURE__ */ React4.createElement(AnimatedCell, { ...info }), + keyExtractor: (item, index) => item?.id || item?.key || String(index), ...flashListProps, contentContainerStyle: useMemo3(() => [ animatedList.container, @@ -3712,6 +3713,8 @@ function Marquee({ const translateX = useSharedValue7(0); const translateY = useSharedValue7(0); const isPaused = useSharedValue7(false); + const [containerSize, setContainerSize] = React43.useState(0); + const [contentSize, setContentSize] = React43.useState(0); const animatedStyle = useAnimatedStyle9(() => { if (direction === "left" || direction === "right") { return { @@ -3771,27 +3774,19 @@ function Marquee({ }; const resumeAnimation = () => { isPaused.value = false; - measureAndStart(); - }; - const measureAndStart = () => { - containerRef.current?.measure((x, y, width, height) => { - contentRef.current?.measure((cx, cy, cWidth, cHeight) => { - if (direction === "left" || direction === "right") { - startAnimation(width, cWidth); - } else { - startAnimation(height, cHeight); - } - }); - }); + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } }; useEffect3(() => { - const timeout = setTimeout(measureAndStart, 100); + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } return () => { - clearTimeout(timeout); cancelAnimation(translateX); cancelAnimation(translateY); }; - }, [children, speed, direction, loop]); + }, [containerSize, contentSize, speed, direction, loop]); const handlePressIn = () => { if (pauseOnPress) { pauseAnimation(); @@ -3810,7 +3805,15 @@ function Marquee({ style: styles11.container, accessibilityLabel, accessibilityRole: "text", - testID + testID, + onLayout: (e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContainerSize(width); + } else { + setContainerSize(height); + } + } }, fadeEdges && /* @__PURE__ */ React43.createElement(React43.Fragment, null, /* @__PURE__ */ React43.createElement( View39, @@ -3841,6 +3844,14 @@ function Marquee({ ], onTouchStart: handlePressIn, onTouchEnd: handlePressOut, + onLayout: (e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContentSize(width); + } else { + setContentSize(height); + } + }, accessible: false }, children @@ -4935,7 +4946,7 @@ function SegmentedControl({ transform: [{ translateX: translateX.value }], width: indicatorWidth.value })); - const showIndicator = layoutReady && segmentWidth > 0; + const showIndicator = layoutReady && segmentWidth > 0 && containerWidth > 0; return /* @__PURE__ */ React54.createElement( View49, { diff --git a/packages/ui/dist/index.mjs.map b/packages/ui/dist/index.mjs.map index bfdf53aa..e4be9967 100644 --- a/packages/ui/dist/index.mjs.map +++ b/packages/ui/dist/index.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/components/Accordion/Accordion.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/Alert.tsx","../src/components/AnimatedList/AnimatedList.tsx","../src/components/AppBar/AppBar.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Input/Input.tsx","../src/components/FormField/FormGroupContext.tsx","../src/components/Input/AnimatedHelperText.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/Box/Box.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/CircularProgress/CircularProgress.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/CalendarGrid.tsx","../src/components/DatePicker/TimePickerWheels.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Divider/Divider.tsx","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Fab/Fab.tsx","../src/components/Form/Form.tsx","../src/components/FormControl/FormControl.tsx","../src/components/FormField/FormField.tsx","../src/components/Input/PasswordInput.tsx","../src/components/GlassCard/GlassCard.tsx","../src/components/Gradient/Gradient.tsx","../src/components/Grid/Grid.tsx","../src/components/Image/Image.tsx","../src/components/ImageList/ImageList.tsx","../src/components/LinearProgress/LinearProgress.tsx","../src/components/Link/Link.tsx","../src/components/List/List.tsx","../src/components/Marquee/Marquee.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/OTPInput/OTPInput.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Paper/Paper.tsx","../src/components/Popover/Popover.tsx","../src/components/Popper/Popper.tsx","../src/components/Pressable/Pressable.tsx","../src/components/Radio/Radio.tsx","../src/components/Rating/Rating.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Select/Select.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Slider/Slider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/SpeedDial/SpeedDial.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastItem.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Typography/Typography.tsx","../src/components/TelegramTabBar/TelegramTabBar.tsx","../src/components/ChatListItem/ChatListItem.tsx","../src/components/MessageInput/MessageInput.tsx","../src/components/TelegramPopup/TelegramPopup.tsx","../src/components/TelegramContextMenu/TelegramContextMenu.tsx","../src/components/TelegramSettingsMenu/TelegramSettingsMenu.tsx"],"sourcesContent":["export { ThemeProvider, useTheme, useTokens, useComponentTokens, useIsDark, useActiveBrand, useBrandSwitch, createTheme } from \"@truongdq01/headless\";\nexport type { Theme, ThemeOverride, ThemeProviderProps, Brand } from \"@truongdq01/headless\";\n\nexport * from \"./components/Accordion\";\nexport * from \"./components/Alert\";\nexport * from \"./components/AnimatedList\";\nexport * from \"./components/AppBar\";\nexport * from \"./components/Autocomplete\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Badge\";\nexport * from \"./components/BottomNavigation\";\nexport * from \"./components/BottomSheet\";\nexport * from \"./components/Box\";\nexport * from \"./components/Breadcrumbs\";\nexport * from \"./components/Button\";\nexport * from \"./components/ButtonGroup\";\nexport * from \"./components/Card\";\nexport * from \"./components/Carousel\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Chip\";\nexport * from \"./components/CircularProgress\";\nexport * from \"./components/DatePicker\";\nexport * from \"./components/Dialog\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/EmptyState\";\nexport * from \"./components/Fab\";\nexport * from \"./components/Form\";\nexport * from \"./components/FormControl\";\nexport * from \"./components/FormField\";\nexport * from \"./components/GlassCard\";\nexport * from \"./components/Gradient\";\nexport * from \"./components/Grid\";\nexport * from \"./components/Icon\";\nexport * from \"./components/Image\";\nexport * from \"./components/ImageList\";\nexport * from \"./components/Input\";\nexport * from \"./components/LinearProgress\";\nexport * from \"./components/Link\";\nexport * from \"./components/List\";\nexport * from \"./components/Marquee\";\nexport * from \"./components/Menu\";\nexport * from \"./components/Modal\";\nexport * from \"./components/OTPInput\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Paper\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Popper\";\nexport * from \"./components/Pressable\";\nexport * from \"./components/Radio\";\nexport * from \"./components/Rating\";\nexport * from \"./components/SegmentedControl\";\nexport * from \"./components/Select\";\nexport * from \"./components/Skeleton\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Snackbar\";\nexport * from \"./components/SpeedDial\";\nexport * from \"./components/Stack\";\nexport * from \"./components/Stepper\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Table\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/TextArea\";\nexport * from \"./components/TextField\";\nexport * from \"./components/Timeline\";\nexport * from \"./components/Toast\";\nexport * from \"./components/ToggleButton\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Typography\";\nexport * from \"./components/TelegramTabBar\";\nexport * from \"./components/ChatListItem\";\nexport * from \"./components/MessageInput\";\nexport * from \"./components/TelegramPopup\";\nexport * from \"./components/TelegramContextMenu\";\nexport * from \"./components/TelegramSettingsMenu\";\n\n// Styles\nexport { StyleSheet } from \"react-native\";\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated, {\n useSharedValue,\n withTiming,\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n} from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useDisclosure, useTokens, useComponentTokens, usePressable, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface AccordionProps {\n expanded?: boolean;\n defaultExpanded?: boolean;\n disabled?: boolean;\n onChange?: (expanded: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport interface AccordionSummaryProps {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n}\n\nexport interface AccordionDetailsProps {\n children?: React.ReactNode;\n}\n\nexport interface AccordionActionsProps {\n children?: React.ReactNode;\n}\n\ninterface AccordionContextValue {\n expanded: boolean;\n toggle: () => void;\n disabled: boolean;\n}\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n expanded: controlledExpanded,\n defaultExpanded = false,\n disabled = false,\n onChange,\n children,\n}: AccordionProps) {\n const disclosure = useDisclosure({\n isOpen: controlledExpanded,\n defaultOpen: defaultExpanded,\n onOpen: () => onChange?.(true),\n onClose: () => onChange?.(false),\n });\n\n const { accordion } = useComponentTokens();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function AccordionSummary({ children, expandIcon }: AccordionSummaryProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx) return null;\n\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress: ctx.toggle,\n disabled: ctx.disabled,\n feedbackMode: \"opacity\",\n });\n\n const reduceMotion = useReduceMotionEnabled();\n const rotation = useSharedValue(ctx.expanded ? 1 : 0);\n React.useEffect(() => {\n const target = ctx.expanded ? 1 : 0;\n rotation.value = reduceMotion ? target : withTiming(target, { duration: 200 });\n }, [ctx.expanded, reduceMotion]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${interpolate(rotation.value, [0, 1], [0, 180], Extrapolation.CLAMP)}deg` }],\n }));\n\n const containerStyle = useMemo(() => [\n accordion.summary,\n animatedStyle,\n ], [accordion.summary, animatedStyle]);\n\n return (\n \n \n \n {children}\n \n \n {expandIcon ?? (\n \n )}\n \n \n \n );\n}\n\nexport function AccordionDetails({ children }: AccordionDetailsProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n const reduceMotion = useReduceMotionEnabled();\n const [contentHeight, setContentHeight] = React.useState(0);\n const animHeight = useSharedValue(0);\n\n React.useEffect(() => {\n if (!ctx) return;\n const target = ctx.expanded ? contentHeight : 0;\n animHeight.value = reduceMotion ? target : withTiming(target, { duration: 250 });\n }, [ctx?.expanded, contentHeight, reduceMotion]);\n\n const animStyle = useAnimatedStyle(() => ({\n height: animHeight.value,\n overflow: \"hidden\",\n }));\n\n return (\n \n setContentHeight(e.nativeEvent.layout.height)}\n style={[accordion.details, { position: \"absolute\", left: 0, right: 0 }]}\n >\n {children}\n \n \n );\n}\n\nexport function AccordionActions({ children }: AccordionActionsProps) {\n const tokens = useTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx?.expanded) return null;\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport {\n // Navigation & Actions\n Star,\n Heart,\n Check,\n Info,\n AlertTriangle,\n AlertCircle,\n CheckCircle,\n X,\n XCircle,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Search,\n Settings,\n Bell,\n Home,\n User,\n Plus,\n Minus,\n Edit,\n Trash,\n Share,\n Download,\n Upload,\n RefreshCw,\n ExternalLink,\n ChevronUp,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n Calendar,\n Clock,\n MapPin,\n Camera,\n Image,\n Video,\n FileText,\n Copy,\n Layout,\n Grid,\n List,\n Layers,\n Box,\n Package,\n ShoppingCart,\n CreditCard,\n Mail,\n Phone,\n MessageSquare,\n Send,\n Zap,\n Flame,\n StarHalf,\n ThumbsUp,\n ThumbsDown,\n} from \"lucide-react-native\";\n\nexport const ICON_MAP = {\n star: Star,\n heart: Heart,\n check: Check,\n info: Info,\n warning: AlertTriangle,\n error: AlertCircle,\n checkCircle: CheckCircle,\n close: X,\n closeCircle: XCircle,\n menu: Menu,\n moreVertical: MoreVertical,\n moreHorizontal: MoreHorizontal,\n search: Search,\n settings: Settings,\n bell: Bell,\n home: Home,\n user: User,\n plus: Plus,\n minus: Minus,\n edit: Edit,\n trash: Trash,\n share: Share,\n download: Download,\n upload: Upload,\n refresh: RefreshCw,\n externalLink: ExternalLink,\n chevronUp: ChevronUp,\n chevronDown: ChevronDown,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n eye: Eye,\n eyeOff: EyeOff,\n lock: Lock,\n unlock: Unlock,\n calendar: Calendar,\n clock: Clock,\n mapPin: MapPin,\n camera: Camera,\n image: Image,\n video: Video,\n file: FileText,\n copy: Copy,\n layout: Layout,\n grid: Grid,\n list: List,\n layers: Layers,\n box: Box,\n package: Package,\n cart: ShoppingCart,\n card: CreditCard,\n mail: Mail,\n phone: Phone,\n message: MessageSquare,\n send: Send,\n zap: Zap,\n flame: Flame,\n starHalf: StarHalf,\n thumbsUp: ThumbsUp,\n thumbsDown: ThumbsDown,\n} as const;\n\nexport type IconName = keyof typeof ICON_MAP;\n\nexport interface IconProps {\n /** The name of the icon. Can also be passed as children. */\n name?: IconName | string;\n /** The name of the icon as text children. */\n children?: IconName | string | React.ReactNode;\n /** Size of the icon. Can be a number or a theme preset. */\n size?: number | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"small\" | \"medium\" | \"large\";\n /** Color of the icon. Can be a raw hex or a theme preset. */\n color?: string;\n style?: any;\n}\n\n/**\n * A standardized Icon component that wraps lucide-react-native icons.\n * Provides theme-aware sizing and colors.\n */\nexport function Icon({ name, children, size, color, style }: IconProps) {\n const { icon: iconTokens } = useComponentTokens();\n const tokens = useTokens();\n \n // Resolve the icon name from either prop or children\n const iconNameString = (name ?? (typeof children === \"string\" ? children : undefined)) as IconName;\n \n const resolvedSize = typeof size === \"number\" \n ? size \n : iconTokens.size[(size ?? \"md\") as keyof typeof iconTokens.size] ?? 20;\n \n const resolvedColor = color && color in iconTokens.color\n ? iconTokens.color[color as keyof typeof iconTokens.color]\n : color ?? tokens.color.text.primary;\n\n const IconComp = ICON_MAP[iconNameString as keyof typeof ICON_MAP] || Info;\n\n return (\n \n \n \n );\n}\n\n/**\n * A helper to wrap any icon with standard sizing and colors.\n */\nexport function IconWrapper({ children, size, color }: { children: React.ReactNode; size?: number; color?: string }) {\n const tokens = useTokens();\n if (!React.isValidElement>(children)) return null;\n return React.cloneElement(children, {\n color: children.props.color ?? color ?? tokens.color.text.primary,\n size: children.props.size ?? size,\n });\n}\n","import React, { useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useAlert } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport type AlertSeverity = \"error\" | \"warning\" | \"info\" | \"success\";\nexport type AlertVariant = \"standard\" | \"filled\" | \"outlined\";\n\nexport interface AlertProps {\n /** Severity of the alert */\n severity?: AlertSeverity;\n /** Visual variant */\n variant?: AlertVariant;\n /** Custom icon or false to hide */\n icon?: React.ReactNode | false;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Callback on close button press */\n onClose?: () => void;\n /** Content of the alert */\n children?: React.ReactNode;\n}\n\nexport interface AlertTitleProps {\n children?: React.ReactNode;\n}\n\nconst SEVERITY_ICONS: Record = {\n info: \"info\",\n success: \"checkCircle\",\n warning: \"warning\",\n error: \"error\",\n};\n\nexport function Alert({\n severity = \"info\",\n variant = \"standard\",\n icon,\n action,\n onClose,\n children,\n}: AlertProps) {\n const { alert } = useComponentTokens();\n const tokens = useTokens();\n const { isOpen, getAlertProps, getCloseButtonProps } = useAlert({ onClose });\n const severityTokens = alert.variant[severity];\n\n if (!isOpen) return null;\n\n const containerStyle = useMemo(() => {\n const base = [alert.container];\n if (variant === \"filled\") {\n base.push({\n backgroundColor: severityTokens.icon,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n } else if (variant === \"outlined\") {\n base.push({\n backgroundColor: \"transparent\",\n borderColor: severityTokens.border,\n borderWidth: 1,\n } as any);\n } else {\n base.push({\n backgroundColor: severityTokens.bg,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n }\n return base;\n }, [alert, severityTokens, variant]);\n\n const textColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.text;\n const iconColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.icon;\n\n return (\n \n {icon !== false && (\n \n {icon ?? (\n \n {SEVERITY_ICONS[severity]}\n \n )}\n \n )}\n \n {children}\n \n {action}\n {onClose && (\n \n \n \n )}\n \n );\n}\n\nexport function AlertTitle({ children }: AlertTitleProps) {\n const { alert } = useComponentTokens();\n // We can't easily get the parent Alert's severity here without context,\n // but we can use a generic color or inherit from View style.\n // For now, let's use a standard bold style.\n return (\n \n {children}\n \n );\n}\n","import React, { forwardRef, useMemo } from \"react\";\nimport { View, StyleProp, ViewStyle, StyleSheet, ListRenderItemInfo } from \"react-native\";\nimport { FlatList } from \"react-native\";\nimport Animated, { FadeInDown, Layout, ReduceMotion } from \"react-native-reanimated\";\nimport { useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\ntype FlashListProps = {\n data: T[] | null | undefined;\n renderItem: (info: any) => React.ReactElement | null;\n estimatedItemSize?: number;\n contentContainerStyle?: any;\n [key: string]: any;\n};\n\nconst ReanimatedListImpl = Animated.createAnimatedComponent(FlatList as any) as any;\n\nexport interface AnimatedListProps extends Omit, \"renderItem\"> {\n /** The items to render */\n data: T[] | null | undefined;\n /** Function to render each item. Use `index` to stagger entering animations if desired. */\n renderItem: (info: ListRenderItemInfo) => React.ReactElement | null;\n /**\n * Average main-axis size of one item (usually **height** in a vertical list), in dp.\n * FlashList uses this to size the scroll window and recycle views; **pick a value close to the real\n * rendered row height** (± a few px). If this is far off, you may see scroll jumps or degraded\n * performance with little warning.\n * @see https://shopify.github.io/flash-list/docs/estimated-item-size\n */\n estimatedItemSize: number;\n /** Apply entering animation to items as they appear. Recommended: FadeInDown */\n itemEntering?: any;\n /** Apply exiting animation to items as they disappear */\n itemExiting?: any;\n /** Apply layout animation when items are reordered. Recommended: Layout.springify() */\n itemLayout?: any;\n /**\n * Automatically stagger item entry animations.\n * Note: This wraps items in an Animated.View.\n */\n staggerEntering?: boolean;\n /** Delay between staggered items in ms. Default 50 */\n staggerDelay?: number;\n /** Container style for the wrapper Animated.View */\n itemContainerStyle?: StyleProp;\n}\n\n/**\n * AnimatedList wraps @shopify/flash-list with Reanimated to provide\n * ultra-fast performance combined with smooth layout and entry animations.\n *\n * Prefer a **stable** `renderItem` (`useCallback`) and `keyExtractor` so FlashList does not recycle unnecessarily.\n */\nfunction AnimatedListInner(\n {\n data,\n renderItem,\n itemEntering = FadeInDown,\n itemExiting,\n itemLayout = Layout.springify().damping(16).stiffness(150),\n staggerEntering = false,\n staggerDelay = 50,\n itemContainerStyle,\n ...flashListProps\n }: AnimatedListProps,\n ref: any\n) {\n const { animatedList } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const effectiveEntering = reduceMotion ? undefined : itemEntering;\n const effectiveExiting = reduceMotion ? undefined : itemExiting;\n const effectiveLayout = reduceMotion ? undefined : itemLayout;\n\n const ListImpl: any = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: any };\n const Impl = mod?.FlashList ?? FlatList;\n return Animated.createAnimatedComponent(Impl as any);\n } catch {\n return ReanimatedListImpl;\n }\n }, []);\n\n const AnimatedCell = (info: any) => {\n const { index } = info;\n const enteringAnim = staggerEntering && effectiveEntering?.delay\n ? effectiveEntering.delay(Math.min(index * staggerDelay, 500))\n : effectiveEntering;\n\n return (\n \n {renderItem(info as unknown as ListRenderItemInfo)}\n \n );\n };\n\n return (\n }\n {...flashListProps}\n contentContainerStyle={useMemo(() => [\n animatedList.container,\n flashListProps.contentContainerStyle\n ], [animatedList.container, flashListProps.contentContainerStyle])}\n />\n );\n}\n\n// eslint-disable-next-line react/display-name\nexport const AnimatedList = forwardRef(AnimatedListInner as any) as (\n props: AnimatedListProps & { ref?: React.Ref }\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n itemWrapper: {\n overflow: \"hidden\",\n },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface AppBarProps {\n children?: React.ReactNode;\n color?: \"default\" | \"inherit\" | \"primary\" | \"secondary\" | \"transparent\";\n variant?: \"elevation\" | \"outlined\";\n position?: \"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\";\n elevation?: 0 | 1 | 2 | 3 | 4;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function AppBar({\n children,\n color = \"primary\",\n variant = \"elevation\",\n position = \"relative\",\n elevation = 2,\n style,\n}: AppBarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n const shadows = [tokens.shadow.none, tokens.shadow.sm, tokens.shadow.md, tokens.shadow.lg, tokens.shadow.xl];\n\n const bgMap: Record = {\n default: appBar.container.backgroundColor,\n inherit: \"transparent\",\n primary: tokens.color.brand.default,\n secondary: tokens.color.brand.muted,\n transparent: \"transparent\",\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ToolbarProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Toolbar({ children, style }: ToolbarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n","import React, { useState, useRef } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n Easing,\n} from \"react-native-reanimated\";\nimport { useAutocomplete, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\n\nexport interface AutocompleteProps {\n options: T[];\n value?: T | T[];\n defaultValue?: T | T[];\n multiple?: boolean;\n getOptionLabel?: (option: T) => string;\n renderOption?: (option: T, selected: boolean) => React.ReactNode;\n onChange?: (value: T | T[] | undefined) => void;\n inputValue?: string;\n onInputChange?: (value: string) => void;\n placeholder?: string;\n label?: string;\n disabled?: boolean;\n}\n\nexport function Autocomplete({\n options,\n value,\n defaultValue,\n multiple = false,\n getOptionLabel,\n renderOption,\n onChange,\n inputValue,\n onInputChange,\n placeholder = \"Select...\",\n label,\n disabled = false,\n}: AutocompleteProps) {\n const tokens = useTokens();\n const { autocomplete } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const inputRef = useRef(null);\n const [inputRect, setInputRect] = useState({ pageX: 0, pageY: 0, width: 0, height: 0 });\n const [dropdownMounted, setDropdownMounted] = useState(false);\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const {\n inputValue: query,\n setInputValue,\n isOpen,\n open,\n close,\n isSelected,\n selectOption,\n filteredOptions,\n } = useAutocomplete({\n options, value, defaultValue, multiple, getOptionLabel,\n onChange, inputValue, onInputChange,\n });\n\n const labelOf = getOptionLabel ?? ((o: T) => String(o));\n const DROPDOWN_MAX_HEIGHT = autocomplete.menu.maxHeight;\n const GAP = (autocomplete.menu as any).marginTop ?? 4;\n\n const measureAndOpen = () => {\n if (!isOpen) {\n inputRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setInputRect({ pageX, pageY, width: w, height: h });\n open();\n opacity.value = 0;\n scale.value = 0.95;\n setDropdownMounted(true);\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 160, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 300 });\n });\n });\n }\n };\n\n const handleClose = () => {\n opacity.value = withTiming(0, { duration: 120 });\n scale.value = withTiming(0.96, { duration: 120 });\n setTimeout(() => {\n close();\n setDropdownMounted(false);\n }, 130);\n };\n\n const spaceBelow = windowHeight - (inputRect.pageY + inputRect.height);\n const showAbove = spaceBelow < DROPDOWN_MAX_HEIGHT + 40;\n\n const dropdownTop = showAbove\n ? inputRect.pageY - DROPDOWN_MAX_HEIGHT - GAP\n : inputRect.pageY + inputRect.height + GAP;\n\n const dropdownAnimStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n return (\n \n {\n setInputValue(val);\n measureAndOpen();\n }}\n onFocus={measureAndOpen}\n onBlur={() => setTimeout(handleClose, 150)}\n disabled={disabled}\n />\n\n {dropdownMounted && filteredOptions.length > 0 && (\n \n \n \n {filteredOptions.map((option, idx) => {\n const selected = isSelected(option);\n return (\n {\n if (selected && !multiple) {\n // Deselect if already selected in single mode\n selectOption(undefined as any);\n } else {\n selectOption(option);\n }\n if (!multiple) handleClose();\n }}\n style={({ pressed }) => ({\n padding: autocomplete.item.padding,\n backgroundColor: pressed\n ? autocomplete.item.hover.backgroundColor\n : selected\n ? autocomplete.item.active.backgroundColor\n : \"transparent\",\n })}\n >\n {renderOption ? renderOption(option, selected) : (\n \n {labelOf(option)}\n \n )}\n \n );\n })}\n \n \n )}\n \n );\n}\n","import React, { useMemo, useState, useEffect } from \"react\";\nimport {\n TextInput as RNTextInput,\n View,\n Text,\n type TextInputProps as RNTextInputProps,\n type NativeSyntheticEvent,\n type TextInputChangeEventData,\n} from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useIconStyle } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"./AnimatedHelperText\";\n\nconst FOCUS_MS = 150;\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(RNTextInput);\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps extends Omit {\n /** Callback for when the text changes */\n onChange?: (text: string) => void;\n /** Field label shown above input (or floating inside when `floatingLabel`) */\n label?: string;\n /** Error message shown below input */\n error?: string;\n /** Helper text shown below input (overridden by error) */\n helperText?: string;\n /** Animate label inside the field (Material / Telegram-style) */\n floatingLabel?: boolean;\n /** Size preset */\n size?: InputSize;\n /** Slot for leading icon/element inside input */\n leadingElement?: React.ReactNode;\n /** Slot for trailing icon/element inside input */\n trailingElement?: React.ReactNode;\n /** Disable input */\n disabled?: boolean;\n /** Callback when error should be cleared (called on first keystroke) */\n onClearError?: () => void;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Input({\n label,\n error,\n helperText,\n floatingLabel = false,\n size = \"md\",\n leadingElement,\n trailingElement,\n disabled = false,\n onClearError,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n placeholder,\n accessibilityLabel: accessibilityLabelProp,\n ...rest\n}: InputProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n\n const [isFocused, setIsFocused] = useState(false);\n const [hasTyped, setHasTyped] = useState(false);\n const [uncontrolledText, setUncontrolledText] = useState(() =>\n defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : \"\"\n );\n\n const hasValue =\n value !== undefined && value !== null\n ? String(value).length > 0\n : uncontrolledText.length > 0;\n\n const focusProgress = useSharedValue(0);\n const floatProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n useEffect(() => {\n if (!floatingLabel || !label) return;\n floatProgress.value = withTiming(isFocused || hasValue ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, hasValue, floatingLabel, label, floatProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const fl = input.floatingLabel;\n\n const animatedContainerStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const floatingLabelStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label || !fl) {\n return {};\n }\n const inactiveFs = fl.fontSize.inactive;\n const activeFs = fl.fontSize.active;\n const inactiveC = fl.color.inactive;\n const activeC = fl.color.active;\n const ty0 = fl.translateY.inactive;\n const ty1 = fl.translateY.active;\n return {\n position: \"absolute\" as const,\n left: 0,\n right: 0,\n top: interpolate(floatProgress.value, [0, 1], [16, 6]),\n transform: [{ translateY: interpolate(floatProgress.value, [0, 1], [ty0, ty1]) }],\n fontSize: interpolate(floatProgress.value, [0, 1], [inactiveFs, activeFs]),\n color: interpolateColor(floatProgress.value, [0, 1], [inactiveC, activeC]),\n pointerEvents: \"none\" as const,\n };\n }, [floatingLabel, label, fl]);\n\n const animatedInputPadStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label) {\n return {};\n }\n return {\n paddingTop: interpolate(floatProgress.value, [0, 1], [0, 12]),\n };\n }, [floatingLabel, label]);\n\n const staticContainerStyle = useMemo(() => {\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n return [\n input.container,\n input.size[size],\n !isGrouped && error && input.state.error,\n !isGrouped && disabled && input.state.disabled,\n groupedChrome,\n ];\n }, [input, size, error, disabled, isGrouped]);\n\n const handleChange = (e: NativeSyntheticEvent) => {\n const text = e.nativeEvent.text;\n if (value === undefined) {\n setUncontrolledText(text);\n }\n if (!hasTyped && text.length > 0) {\n setHasTyped(true);\n onClearError?.();\n }\n onChange?.(text);\n };\n\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? (size === \"sm\" ? tokens.fontSize.md : iconSize),\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n const placeholderResolved =\n floatingLabel && label ? (isFocused || hasValue ? placeholder ?? \"\" : \"\") : placeholder;\n\n const inner = (\n <>\n {renderIcon(leadingElement)}\n \n {floatingLabel && label ? (\n {label}\n ) : null}\n {\n setIsFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n onBlur?.(e);\n }}\n onChange={handleChange}\n placeholder={placeholderResolved}\n {...rest}\n />\n \n {renderIcon(trailingElement)}\n \n );\n\n return (\n \n {label && !floatingLabel ? {label} : null}\n\n {inner}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport type FormGroupVariant = \"standard\" | \"grouped\";\n\nexport const FormGroupContext = React.createContext(\"standard\");\n\nexport function useFormGroupVariant(): FormGroupVariant {\n return React.useContext(FormGroupContext);\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\nimport Animated, { FadeIn, FadeOut } from \"react-native-reanimated\";\n\nexport interface AnimatedHelperTextProps {\n text: string | undefined;\n isError: boolean;\n style: TextStyle | TextStyle[];\n}\n\n/**\n * Subtle enter/exit for helper and error copy under fields (Reanimated layout animations).\n * Uses RN `Text` inside an `Animated.View` so test queries and a11y stay straightforward.\n */\nexport function AnimatedHelperText({ text, isError, style }: AnimatedHelperTextProps) {\n if (!text) return null;\n\n return (\n \n \n {text}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Image, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nexport interface AvatarProps {\n /** Image URI */\n src?: string;\n /** Fallback initials if no src */\n initials?: string;\n /** Fallback when no src and no initials */\n fallbackIcon?: React.ReactNode;\n size?: AvatarSize;\n status?: AvatarStatus;\n shape?: \"circle\" | \"rounded\";\n /** Accessible label */\n accessibilityLabel?: string;\n style?: ViewStyle | ViewStyle[];\n}\n\nconst STATUS_COLORS = {\n online: \"#22C55E\",\n offline: \"#9CA3AF\",\n busy: \"#EF4444\",\n away: \"#F59E0B\",\n};\n\nconst STATUS_DOT_SIZE: Record = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n};\n\nconst STATUS_DOT_COLORS = {\n online: \"#22C55E\", // success\n away: \"#F59E0B\", // warning\n offline: \"#9CA3AF\", // muted\n busy: \"#EF4444\", // error\n} as const;\n\n// Deterministic color from initials string\nconst BG_PALETTE = [\n \"#EEEDFE\", // purple-50\n \"#E1F5EE\", // teal-50\n \"#FAECE7\", // coral-50\n \"#FBEAF0\", // pink-50\n \"#EAF3DE\", // green-50\n \"#FAEEDA\", // amber-50\n \"#E6F1FB\", // blue-50\n];\nconst TEXT_PALETTE = [\n \"#3C3489\",\n \"#085041\",\n \"#712B13\",\n \"#72243E\",\n \"#27500A\",\n \"#633806\",\n \"#0C447C\",\n];\n\nconst colorIndexCache = new Map();\n\nfunction getColorIndex(str: string): number {\n const cached = colorIndexCache.get(str);\n if (cached !== undefined) return cached;\n let hash = 0;\n for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);\n const result = Math.abs(hash) % BG_PALETTE.length;\n colorIndexCache.set(str, result);\n return result;\n}\n\n// ─── Avatar ───────────────────────────────────────────────────────\n\nexport function Avatar({\n src,\n initials,\n fallbackIcon,\n size = \"md\",\n status,\n shape = \"circle\",\n accessibilityLabel,\n style,\n}: AvatarProps) {\n const { avatar } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatar.size[size];\n const radius = shape === \"circle\" ? sizeConfig.borderRadius : tokens.radius.md;\n const colorIdx = initials ? getColorIndex(initials) : 0;\n\n const dotSize = status ? STATUS_DOT_SIZE[size] : 0;\n\n return (\n \n {src ? (\n \n ) : initials ? (\n \n \n {initials.slice(0, 2).toUpperCase()}\n \n \n ) : (\n // Generic fallback\n \n {fallbackIcon ?? (\n \n ?\n \n )}\n \n )}\n\n {/* Status dot */}\n {status && (\n \n )}\n \n );\n}\n\n// ─── AvatarGroup ──────────────────────────────────────────────────\n\nexport interface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n overlap?: number;\n}\n\nexport function AvatarGroup({\n avatars,\n max = 4,\n size = \"md\",\n overlap,\n}: AvatarGroupProps) {\n const { avatar: avatarTokens } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatarTokens.size[size];\n const dim = sizeConfig.width;\n const gap = overlap ?? Math.round(dim * 0.3);\n\n const visible = avatars.slice(0, max);\n const overflow = avatars.length - max;\n\n return (\n 0 ? dim - gap : 0),\n height: dim,\n }}\n >\n {visible.map((avatar, i) => (\n \n \n \n ))}\n\n {overflow > 0 && (\n \n \n +{overflow}\n \n \n )}\n \n );\n}","import React, { useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type BadgeVariant = \"default\" | \"brand\" | \"success\" | \"warning\" | \"error\" | \"info\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps {\n label?: string;\n count?: number | string;\n variant?: BadgeVariant;\n size?: BadgeSize;\n icon?: React.ReactNode;\n dot?: boolean;\n style?: any;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nconst BADGE_ROW_GAP: Record = { sm: 3, md: 4, lg: 6 };\n\nexport const Badge = React.memo(({ label, count, variant = \"default\", size = \"md\", icon, dot = false }: BadgeProps) => {\n const { badge } = useComponentTokens();\n\n const { fontSize, sizeBox } = useMemo(() => {\n const { fontSize: fs, ...rest } = badge.size[size];\n return { fontSize: fs, sizeBox: rest };\n }, [badge.size, size]);\n\n const iconPx = Math.round(fontSize * 0.85);\n\n const containerStyle = useMemo(\n () => [\n badge.base,\n sizeBox,\n {\n backgroundColor: badge.variant[variant].bg,\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n gap: BADGE_ROW_GAP[size],\n },\n ],\n [badge.base, badge.variant, sizeBox, variant, size]\n );\n\n const textStyle = useMemo(\n () => [badge.text, { color: badge.variant[variant].text, fontSize }],\n [badge.text, badge.variant, variant, fontSize]\n );\n\n const iconColor = String(badge.variant[variant].text);\n\n // Helper to clone icon with standardized props\n const renderIcon = (el: React.ReactNode) => {\n if (!el) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(el)) {\n return React.cloneElement(el, {\n size: el.props.size ?? iconPx,\n color: el.props.color ?? iconColor,\n });\n }\n return el;\n };\n\n const textPart =\n label !== undefined ? label : count !== undefined ? String(count) : null;\n\n const dotDim =\n size === \"sm\"\n ? Math.max(6, Math.round(badge.dot.size * 0.875))\n : size === \"lg\"\n ? Math.round(badge.dot.size * 1.25)\n : badge.dot.size;\n\n return (\n \n {!dot && renderIcon(icon)}\n {!dot && textPart !== null && {textPart}}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useComponentTokens, useBottomNavigation } from \"@truongdq01/headless\";\n\nexport interface BottomNavigationProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n showLabels?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface BottomNavigationActionProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n}\n\ninterface BottomNavContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T) => any;\n showLabels: boolean;\n}\n\nconst BottomNavContext = createContext | null>(null);\n\nexport function BottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n showLabels = false,\n children,\n}: BottomNavigationProps) {\n const { bottomNavigation } = useComponentTokens();\n const { value, isSelected, getItemProps } = useBottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n });\n\n const ctx = useMemo(() => ({ value, isSelected, getItemProps, showLabels }), [value, isSelected, getItemProps, showLabels]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function BottomNavigationAction({ value, label, icon }: BottomNavigationActionProps) {\n const { bottomNavigation } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(BottomNavContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n\n return (\n \n {icon}\n {(ctx.showLabels || selected) && label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { View, StyleSheet, Dimensions, Modal } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBottomSheet, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UseBottomSheetOptions, SnapPoint } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface BottomSheetProps extends UseBottomSheetOptions {\n children: React.ReactNode;\n /** Show the pill-shaped drag handle at top */\n showHandle?: boolean;\n /** Horizontal border radius on the sheet. If not provided, uses theme token. */\n borderRadius?: number;\n /** Accessibility label for the sheet container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport interface BottomSheetRef {\n open: (snapIndex?: number) => void;\n close: () => void;\n snapTo: (index: number) => void;\n}\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport const BottomSheet = forwardRef(\n function BottomSheet(\n {\n children,\n snapPoints = [\"50%\"] as SnapPoint[],\n initialSnapIndex,\n onClose,\n onSnapChange,\n enableDismissOnSwipe = true,\n enableBackdrop = true,\n showHandle = true,\n borderRadius,\n accessibilityLabel = \"Bottom sheet\",\n backdropAccessibilityLabel = \"Dismiss bottom sheet\",\n },\n ref\n ) {\n const { bottomSheet } = useComponentTokens();\n const insets = useSafeAreaInsets();\n const [mounted, setMounted] = useState(false);\n\n const handleClose = React.useCallback(() => {\n setMounted(false);\n onClose?.();\n }, [onClose]);\n\n const {\n open: baseOpen,\n close: baseClose,\n snapTo,\n sheetAnimatedStyle,\n backdropAnimatedStyle,\n panGesture,\n backdropTapGesture,\n } = useBottomSheet({\n snapPoints,\n initialSnapIndex,\n onClose: handleClose,\n onSnapChange,\n enableDismissOnSwipe,\n enableBackdrop,\n });\n\n const open = React.useCallback((idx?: number) => {\n setMounted(true);\n requestAnimationFrame(() => {\n baseOpen(idx);\n });\n }, [baseOpen]);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({ open, close: baseClose, snapTo }), [open, baseClose, snapTo]);\n\n return (\n \n \n {/* Backdrop */}\n {enableBackdrop && (\n \n \n \n )}\n\n {/* Sheet */}\n \n {/* Drag handle area — full-width tap target */}\n \n \n {showHandle && (\n \n )}\n \n \n\n {/* Content */}\n {children}\n \n \n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n sheet: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: SCREEN_HEIGHT,\n },\n handleArea: {\n width: \"100%\",\n height: 28,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n handle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n },\n});","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n sx?: ViewStyle | ViewStyle[];\n flex?: number;\n}\n\nexport function Box({ children, style, sx, flex }: BoxProps) {\n const { box } = useComponentTokens();\n const merged = [\n box.defaults,\n flex !== undefined ? { flex } : null,\n sx,\n style\n ];\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BreadcrumbsProps {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n}\n\nexport function Breadcrumbs({\n children,\n separator = \"/\",\n maxItems = 8,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n}: BreadcrumbsProps) {\n const { breadcrumbs } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n let displayItems = items;\n if (items.length > maxItems) {\n displayItems = [\n ...items.slice(0, itemsBeforeCollapse),\n ...,\n ...items.slice(items.length - itemsAfterCollapse),\n ];\n }\n\n return (\n \n {displayItems.map((child, idx) => (\n \n {child}\n {idx < displayItems.length - 1 && (\n {separator}\n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { ActivityIndicator, Text, View, StyleSheet, Linking, type StyleProp, type ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens, useIconStyle, useTokens } from \"@truongdq01/headless\";\nimport type { PressFeedbackMode } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\n/**\n * Available button visual style variants\n */\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"text\"\n | \"contained\"\n | \"outlined\";\n\n/**\n * Available button size presets\n */\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Available button color themes\n */\nexport type ButtonColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"accent\"; // Amber CTA — stands out from brand violet\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Color theme */\n color?: ButtonColor;\n /** Size preset */\n size?: ButtonSize;\n /** Button label (optional for icon-only buttons) */\n label?: string;\n /** Optional children (preferred over label) */\n children?: React.ReactNode;\n /** Called on press */\n onPress?: () => void;\n /** Called on long press */\n onLongPress?: () => void;\n /** Disable all interaction and apply disabled styles */\n disabled?: boolean;\n /** Show loading spinner, disable interaction */\n loading?: boolean;\n /** Custom loading indicator */\n loadingIndicator?: React.ReactNode;\n /** Loading indicator placement */\n loadingPosition?: \"start\" | \"end\" | \"center\";\n /** Slot for leading icon */\n leadingIcon?: React.ReactNode;\n /** Slot for trailing icon */\n trailingIcon?: React.ReactNode;\n /** Alias for leadingIcon */\n startIcon?: React.ReactNode;\n /** Alias for trailingIcon */\n endIcon?: React.ReactNode;\n /** Override press feedback mode */\n feedbackMode?: PressFeedbackMode;\n /** Fill container width */\n fullWidth?: boolean;\n /** Render as link */\n href?: string;\n /** Remove drop shadow */\n disableElevation?: boolean;\n /** Additional style override */\n style?: object;\n /** Accessibility label override (defaults to label) */\n accessibilityLabel?: string;\n /** Accessibility hint */\n accessibilityHint?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Button component with multiple variants, sizes, and interaction states.\n * Supports icons, loading states, accessibility, and gesture feedback.\n *\n * @param props - Button configuration props\n * @returns Memoized React button component\n *\n * @example\n * ```tsx\n * console.log('Pressed')}\n * >\n * Click me\n * \n * ```\n *\n * @example With loading state\n * ```tsx\n * \n * ```\n */\nexport const Button = React.memo(({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n label,\n children,\n onPress,\n onLongPress,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n leadingIcon,\n trailingIcon,\n startIcon,\n endIcon,\n feedbackMode = \"scale\",\n fullWidth = false,\n href,\n disableElevation = false,\n style,\n accessibilityLabel,\n accessibilityHint,\n}: ButtonProps) => {\n const { button } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize } = useIconStyle(\"button\");\n const isDisabled = disabled || loading;\n\n const resolvedVariant: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" = useMemo(() => {\n if (variant === \"contained\") return \"solid\";\n if (variant === \"outlined\") return \"outline\";\n if (variant === \"text\") return \"ghost\";\n return variant as \"solid\" | \"outline\" | \"ghost\" | \"destructive\";\n }, [variant]);\n\n const resolvedColor = useMemo(() => {\n if (color === \"inherit\") {\n return {\n main: tokens.color.text.primary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"secondary\") {\n return {\n main: tokens.color.text.secondary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"success\") {\n return {\n main: tokens.color.success.icon,\n subtle: tokens.color.success.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"warning\") {\n return {\n main: tokens.color.warning.icon,\n subtle: tokens.color.warning.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"error\") {\n return {\n main: tokens.color.error.icon,\n subtle: tokens.color.error.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"info\") {\n return {\n main: tokens.color.info.icon,\n subtle: tokens.color.info.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"accent\") {\n return {\n main: tokens.color.accent.default,\n subtle: tokens.color.accent.subtle,\n textOn: tokens.color.accent.onAccent,\n };\n }\n return {\n main: tokens.color.brand.default,\n subtle: tokens.color.brand.subtle,\n textOn: tokens.color.text.inverse,\n };\n }, [color, tokens]);\n\n const handlePress = useCallback(() => {\n if (!href) {\n onPress?.();\n return;\n }\n onPress?.();\n void Linking.openURL(href).catch(() => {});\n }, [href, onPress]);\n\n const hitSlop = useMemo(() => {\n const height = button.size[size].container.height;\n const padding = Math.max(0, (44 - height) / 2);\n // If it's an icon-only button, width might also be small\n const isIconOnly = !label && !children;\n const horizontalPadding = isIconOnly ? padding : 0;\n return { top: padding, bottom: padding, left: horizontalPadding, right: horizontalPadding };\n }, [button, size, label, children]);\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: handlePress,\n onLongPress,\n disabled: isDisabled,\n feedbackMode,\n accessibilityLabel: accessibilityLabel ?? (typeof children === \"string\" ? children : label),\n accessibilityHint,\n accessibilityRole: \"button\",\n hitSlop,\n });\n\n // Resolve styles from component tokens — only recomputes on theme change\n const containerStyle = useMemo(() => [\n button.variant[resolvedVariant].container,\n button.size[size].container,\n fullWidth && { alignSelf: \"stretch\" as const },\n isDisabled && button.disabled.container,\n !label && !children && { paddingHorizontal: button.size[size].container.paddingHorizontal / 2, width: button.size[size].container.height },\n disableElevation && tokens.shadow.none,\n resolvedVariant === \"solid\" && { backgroundColor: resolvedColor.main },\n resolvedVariant === \"outline\" && { borderColor: resolvedColor.main },\n resolvedVariant === \"ghost\" && { backgroundColor: resolvedColor.subtle },\n resolvedVariant === \"destructive\" && { backgroundColor: tokens.color.error.bg, borderColor: tokens.color.error.border },\n style,\n ], [button, resolvedVariant, size, fullWidth, isDisabled, label, children, disableElevation, tokens, resolvedColor, style]);\n\n const textStyle = useMemo(() => [\n button.variant[resolvedVariant].text,\n button.size[size].text,\n resolvedVariant === \"solid\" && { color: resolvedColor.textOn || tokens.color.text.inverse },\n resolvedVariant === \"outline\" && { color: resolvedColor.main },\n resolvedVariant === \"ghost\" && { color: resolvedColor.main },\n resolvedVariant === \"destructive\" && { color: tokens.color.error.text },\n ], [button, resolvedVariant, size, resolvedColor, tokens]);\n\n const resolvedLabelColor = useMemo(() => {\n switch (resolvedVariant) {\n case \"solid\":\n return String(resolvedColor.textOn ?? tokens.color.text.inverse);\n case \"outline\":\n case \"ghost\":\n return String(resolvedColor.main);\n case \"destructive\":\n return String(tokens.color.error.text);\n default: {\n const _never: never = resolvedVariant;\n throw new Error(`Unexpected button variant: ${_never}`);\n }\n }\n }, [resolvedVariant, resolvedColor, tokens]);\n\n const iconColor = resolvedLabelColor;\n const content = children ?? label;\n const isTextContent = typeof content === \"string\" || typeof content === \"number\";\n const leading = startIcon ?? leadingIcon;\n const trailing = endIcon ?? trailingIcon;\n\n // Helper to clone icon with standardized props\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? iconSize,\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n return (\n \n }\n {...accessibilityProps}\n >\n \n {loading && loadingPosition === \"start\" && (loadingIndicator ?? )}\n {renderIcon(leading)}\n {isTextContent ? {content} : content}\n {renderIcon(trailing)}\n {loading && loadingPosition === \"end\" && (loadingIndicator ?? )}\n \n\n {loading && loadingPosition === \"center\" && (\n \n {loadingIndicator ?? }\n \n )}\n \n \n );\n});\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n loadingWrapper: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ButtonGroupProps {\n children?: React.ReactNode;\n variant?: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" | \"text\" | \"contained\" | \"outlined\";\n size?: \"sm\" | \"md\" | \"lg\";\n orientation?: \"horizontal\" | \"vertical\";\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\nexport function ButtonGroup({\n children,\n variant = \"outlined\",\n size = \"md\",\n orientation = \"horizontal\",\n disabled = false,\n fullWidth = false,\n}: ButtonGroupProps) {\n const tokens = useTokens();\n const { buttonGroup } = useComponentTokens();\n const isRow = orientation === \"horizontal\";\n\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child, i) => {\n if (!React.isValidElement<{\n variant?: string;\n size?: string;\n disabled?: boolean;\n fullWidth?: boolean;\n style?: any;\n }>(child)) return child;\n const isFirst = i === 0;\n const isLast = i === items.length - 1;\n\n const borderStyle = isRow\n ? {\n borderRightWidth: isLast ? 0 : buttonGroup.divider.width,\n borderRightColor: buttonGroup.divider.backgroundColor,\n }\n : {\n borderBottomWidth: isLast ? 0 : buttonGroup.divider.width,\n borderBottomColor: buttonGroup.divider.backgroundColor,\n };\n\n const radiusStyle = isFirst\n ? isRow\n ? { borderTopLeftRadius: buttonGroup.container.borderRadius, borderBottomLeftRadius: buttonGroup.container.borderRadius }\n : { borderTopLeftRadius: buttonGroup.container.borderRadius, borderTopRightRadius: buttonGroup.container.borderRadius }\n : isLast\n ? isRow\n ? { borderTopRightRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderBottomLeftRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderRadius: 0 };\n\n return React.cloneElement(child, {\n variant,\n size,\n disabled: disabled || child.props.disabled,\n fullWidth: fullWidth || child.props.fullWidth,\n style: [\n { borderRadius: 0, borderWidth: 0 },\n borderStyle,\n radiusStyle,\n child.props.style,\n ].filter(Boolean),\n });\n })}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { View, StyleProp, ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type CardPadding = \"sm\" | \"md\" | \"lg\" | \"none\";\n\nexport interface CardProps {\n children: React.ReactNode;\n /** If provided, card becomes pressable */\n onPress?: () => void;\n /** Inner padding preset */\n padding?: CardPadding;\n /** Accessibility label (required if pressable) */\n accessibilityLabel?: string;\n /** Additional style override */\n style?: StyleProp;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Card({\n children,\n onPress,\n padding = \"md\",\n accessibilityLabel,\n style,\n}: CardProps) {\n const { card } = useComponentTokens();\n\n const containerStyle = useMemo(() => [\n card.container,\n padding !== \"none\" && { padding: card.padding[padding] },\n style,\n ], [card, padding, style]);\n\n if (onPress) {\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress,\n feedbackMode: \"scaleSubtle\",\n accessibilityLabel,\n accessibilityRole: \"button\",\n });\n\n return (\n \n {/* Reanimated style prop is stricter than RN StyleProp when project uses web types; cast merged styles */}\n \n {children}\n \n \n );\n }\n\n return (\n \n {children}\n \n );\n}","import React from \"react\";\nimport { View, ScrollView, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n SharedValue,\n} from \"react-native-reanimated\";\nimport { useCarousel, useComponentTokens } from \"@truongdq01/headless\";\n\nfunction defaultKeyExtractor(_item: T, index: number): string {\n return `carousel-${index}`;\n}\n\n/** Stable React keys for slides; loop clones get `-loop-prev` / `-loop-next` suffixes. */\nfunction getSlideKey(\n item: T,\n indexInDisplay: number,\n loop: boolean,\n n: number,\n keyExtractor: (item: T, index: number) => string\n): string {\n if (!loop || n < 2) {\n return keyExtractor(item, indexInDisplay);\n }\n if (indexInDisplay === 0) {\n return `${keyExtractor(item, n - 1)}-loop-prev`;\n }\n if (indexInDisplay === n + 1) {\n return `${keyExtractor(item, 0)}-loop-next`;\n }\n return keyExtractor(item, indexInDisplay - 1);\n}\n\nexport interface CarouselProps {\n data: T[];\n renderItem: (item: T, index: number) => React.ReactNode;\n itemWidth?: number;\n gap?: number;\n height?: number;\n showPagination?: boolean;\n loop?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n /** Stable key per data item; loop mode appends `-loop-prev` / `-loop-next` for edge clones. */\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function Carousel({\n data,\n renderItem,\n itemWidth,\n gap = 0,\n height = 200,\n showPagination = true,\n loop = false,\n autoPlay = false,\n autoPlayInterval = 3000,\n keyExtractor = defaultKeyExtractor,\n}: CarouselProps) {\n const { width: windowWidthPx } = useWindowDimensions();\n const windowWidth = Math.max(1, windowWidthPx > 0 ? windowWidthPx : 375);\n const resolvedItemWidth = itemWidth ?? windowWidth;\n const contentPaddingStart = (windowWidth - resolvedItemWidth) / 2;\n\n const { carousel } = useComponentTokens();\n const {\n scrollViewRef,\n scrollX,\n displayData,\n snapToOffsets,\n onScroll,\n onMomentumScrollEnd,\n itemStep,\n n,\n contentPaddingStart: snapPad,\n } = useCarousel({\n data,\n itemWidth: resolvedItemWidth,\n gap,\n contentPaddingStart,\n loop,\n autoPlay,\n autoPlayInterval,\n });\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n \n \n {displayData.map((item: T, index: number) => {\n return (\n \n {renderItem(item, loop ? (index - 1 + n) % n : index)}\n \n );\n })}\n \n\n {showPagination && (\n \n {data.map((_, i) => {\n return (\n \n );\n })}\n \n )}\n \n );\n}\n\nfunction PaginationDot({\n index,\n scrollX,\n itemStep,\n contentPaddingStart,\n isLoop,\n n,\n dot,\n}: {\n index: number;\n scrollX: SharedValue;\n itemStep: number;\n contentPaddingStart: number;\n isLoop: boolean;\n n: number;\n dot: ReturnType[\"carousel\"][\"dot\"];\n}) {\n const dotStyle = useAnimatedStyle(() => {\n let activeIndex = (scrollX.value - contentPaddingStart) / itemStep;\n if (isLoop) {\n activeIndex = activeIndex - 1;\n if (activeIndex < 0) activeIndex = n - 1;\n if (activeIndex >= n) activeIndex = 0;\n }\n\n const opacity = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.opacity, 1, dot.inactive.opacity],\n Extrapolation.CLAMP\n );\n\n const width = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.width, dot.active.width, dot.inactive.width],\n Extrapolation.CLAMP\n );\n\n return {\n width,\n opacity,\n backgroundColor: dot.active.bg,\n height: dot.height,\n borderRadius: dot.borderRadius,\n };\n });\n\n return ;\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useCheckbox, useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseCheckboxOptions } from \"@truongdq01/headless\";\n\nexport interface CheckboxProps extends UseCheckboxOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Checkbox({\n label,\n description,\n size = \"md\",\n ...hookOptions\n}: CheckboxProps) {\n const { checkbox } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isChecked, isIndeterminate, isDisabled, toggle, accessibilityProps } =\n useCheckbox(hookOptions);\n\n const sizeConfig = checkbox.size[size];\n\n // Animated values\n const scale = useSharedValue(1);\n const fillProgress = useSharedValue(isChecked || isIndeterminate ? 1 : 0);\n\n React.useEffect(() => {\n const target = isChecked || isIndeterminate ? 1 : 0;\n fillProgress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isChecked, isIndeterminate, reduceMotion]);\n\n const boxStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.backgroundColor, checkbox.state.checked.backgroundColor]\n ),\n borderColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.borderColor, checkbox.state.checked.borderColor]\n ),\n transform: [{ scale: scale.value }],\n }));\n\n const checkStyle = useAnimatedStyle(() => ({\n opacity: fillProgress.value,\n transform: [{ scale: fillProgress.value }],\n }));\n\n const handlePress = () => {\n if (!reduceMotion) {\n scale.value = withSpring(0.88, spring.snappy, () => {\n scale.value = withSpring(1, spring.snappy);\n });\n }\n toggle();\n };\n\n return (\n \n \n \n {isIndeterminate ? (\n \n ) : (\n \n ✓\n \n )}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useIconStyle, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ChipProps {\n label: React.ReactNode;\n variant?: \"solid\" | \"outlined\" | \"subtle\";\n color?: \"default\" | \"primary\" | \"secondary\" | \"error\" | \"info\" | \"success\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n onDelete?: () => void;\n onClick?: () => void;\n disabled?: boolean;\n clickable?: boolean;\n}\n\nexport function Chip({\n label,\n variant = \"solid\",\n color = \"default\",\n size = \"md\",\n avatar,\n icon,\n deleteIcon,\n onDelete,\n onClick,\n disabled = false,\n clickable = false,\n}: ChipProps) {\n const tokens = useTokens();\n const { chip } = useComponentTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"list\");\n\n const palette = {\n default: { bg: tokens.color.bg.muted, text: tokens.color.text.primary, border: tokens.color.border.default },\n primary: { bg: tokens.color.brand.subtle, text: tokens.color.brand.text, border: tokens.color.brand.default },\n secondary: { bg: tokens.color.brand.muted, text: tokens.color.brand.text, border: tokens.color.brand.default },\n success: { bg: tokens.color.success.bg, text: tokens.color.success.text, border: tokens.color.success.border },\n error: { bg: tokens.color.error.bg, text: tokens.color.error.text, border: tokens.color.error.border },\n info: { bg: tokens.color.info.bg, text: tokens.color.info.text, border: tokens.color.info.border },\n warning: { bg: tokens.color.warning.bg, text: tokens.color.warning.text, border: tokens.color.warning.border },\n } as const;\n\n const colors = palette[color];\n const vStyle = chip.variant[variant];\n\n // Map specific color overrides matching the palette to variant styling\n const customBg = variant === \"solid\" && color !== \"default\" ? colors.bg : vStyle.bg;\n const customBorder = variant === \"outlined\" && color !== \"default\" ? colors.border : vStyle.border;\n const customText = color !== \"default\" ? colors.text : vStyle.text;\n\n const sizeStyle = chip.size[size] || chip.size.md;\n \n const container = {\n flexDirection: chip.container.flexDirection,\n alignItems: chip.container.alignItems,\n justifyContent: chip.container.justifyContent,\n gap: tokens.spacing[2],\n paddingHorizontal: sizeStyle.paddingHorizontal,\n paddingVertical: tokens.spacing[1],\n height: sizeStyle.height,\n borderRadius: chip.container.borderRadius,\n backgroundColor: customBg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: customBorder,\n opacity: disabled ? tokens.opacity[60] : 1,\n minHeight: size === \"sm\" ? 24 : size === \"lg\" ? 40 : 32,\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? (size === \"sm\" ? 14 : 16),\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const avatarStyle = {\n width: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n height: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n borderRadius: 12,\n marginRight: tokens.spacing[1],\n };\n\n const deleteButtonStyle = {\n padding: tokens.spacing[1],\n marginLeft: tokens.spacing[1],\n borderRadius: tokens.radius.full,\n minWidth: 28,\n minHeight: 28,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n };\n\n const content = (\n \n {avatar && {avatar}}\n {renderIcon(icon)}\n \n {label}\n \n {onDelete && (\n \n {deleteIcon ?? (\n ×\n )}\n \n )}\n \n );\n\n if (onClick || clickable) {\n return (\n \n {content}\n \n );\n }\n\n return content;\n}\n","import React from \"react\";\nimport { ActivityIndicator, View, Text, StyleSheet } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n/**\n * Available progress indicator variants\n */\nexport type CircularProgressVariant = \"indeterminate\" | \"determinate\";\n\n/**\n * Available progress indicator colors\n */\nexport type CircularProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"inherit\";\n\n/**\n * Props for the CircularProgress component\n */\nexport interface CircularProgressProps {\n size?: number | \"sm\" | \"md\" | \"lg\" | \"small\" | \"medium\" | \"large\";\n color?: CircularProgressColor;\n thickness?: number;\n value?: number;\n variant?: CircularProgressVariant;\n showLabel?: boolean;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Circular progress indicator component using native ActivityIndicator.\n * Supports both indeterminate and determinate progress with accessibility.\n *\n * @param props - Progress indicator configuration\n * @returns React progress component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function CircularProgress({\n size = \"md\",\n color = \"primary\",\n thickness,\n value = 0,\n variant = \"indeterminate\",\n showLabel = false,\n style,\n}: CircularProgressProps) {\n const tokens = useTokens();\n const { circularProgress } = useComponentTokens();\n\n const sizeMap: Record = {\n sm: circularProgress.size.sm,\n md: circularProgress.size.md,\n lg: circularProgress.size.lg,\n small: circularProgress.size.sm,\n medium: circularProgress.size.md,\n large: circularProgress.size.lg,\n };\n\n const resolvedSize = typeof size === \"number\" ? size : sizeMap[size] || circularProgress.size.md;\n const resolvedColor = {\n primary: circularProgress.color,\n secondary: tokens.color.text.secondary,\n success: tokens.color.success.icon,\n error: tokens.color.error.icon,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color];\n\n const progressValue = clamp(value);\n\n return (\n \n \n {variant === \"determinate\" && showLabel && (\n \n \n \n {Math.round(progressValue)}%\n \n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n labelContainer: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React, { useState, useMemo } from \"react\";\nimport { View, Text, Pressable, Platform, Modal, StyleSheet } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\nimport DateTimePicker from \"@react-native-community/datetimepicker\";\nimport { Icon } from \"../Icon\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { TimePickerWheels } from \"./TimePickerWheels\";\n\nexport type DatePickerPreset = \"today\" | \"yesterday\" | \"last7\" | \"last30\" | \"last90\" | null;\n\nexport type DatePickerStyle = \"calendar\" | \"spinner\" | \"native\";\n\nexport interface DatePickerProps {\n label?: string;\n date: Date | null;\n onChange: (date: Date) => void;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n icon?: React.ReactNode;\n minimumDate?: Date;\n maximumDate?: Date;\n mode?: \"date\" | \"time\" | \"datetime\";\n presets?: DatePickerPreset[];\n onPresetChange?: (preset: DatePickerPreset) => void;\n clearable?: boolean;\n /**\n * `\"calendar\"` — custom CalendarGrid in a bottom-sheet-style modal (default for date mode).\n * `\"spinner\"` — iOS drum-roll / Android native.\n * `\"native\"` — platform-default DateTimePicker.\n */\n pickerStyle?: DatePickerStyle;\n /** Forwarded to `@react-native-community/datetimepicker` — behavior is platform-specific. */\n locale?: string;\n /** Forwarded to `@react-native-community/datetimepicker`. */\n timeZoneOffsetInMinutes?: number;\n /** Forwarded to `@react-native-community/datetimepicker` (Android / newer iOS). */\n timeZoneOffsetInSeconds?: number;\n /** IANA tz name; forwarded to `@react-native-community/datetimepicker`. */\n timeZoneName?: string;\n}\n\nexport function DatePicker({\n label,\n date,\n onChange,\n placeholder = \"Select date\",\n disabled = false,\n error,\n icon,\n minimumDate,\n maximumDate,\n mode = \"date\",\n presets = [\"today\", \"last7\", \"last30\"],\n onPresetChange,\n clearable = true,\n pickerStyle: pickerStyleProp,\n locale,\n timeZoneOffsetInMinutes,\n timeZoneOffsetInSeconds,\n timeZoneName,\n}: DatePickerProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const insets = useSafeAreaInsets();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const [showPicker, setShowPicker] = useState(false);\n const [selectedPreset, setSelectedPreset] = useState(null);\n const [pickerDraft, setPickerDraft] = useState(() => date ?? new Date());\n const [yearPick, setYearPick] = useState(false);\n\n const initDate = date ?? new Date();\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n\n const effectivePickerStyle: DatePickerStyle = pickerStyleProp ?? \"calendar\";\n\n const yearOptions = useMemo(() => Array.from({ length: 12 }, (_, i) => calYear - 5 + i), [calYear]);\n\n const modalTitle =\n mode === \"time\" ? \"Select time\" : mode === \"datetime\" ? \"Select date & time\" : \"Select date\";\n\n const handleCalendarMonthChange = (m: number, y: number) => {\n setCalMonth(m);\n setCalYear(y);\n };\n\n const formattedDate = date\n ? mode === \"time\"\n ? date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n : mode === \"datetime\"\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`\n : date.toLocaleDateString()\n : \"\";\n\n const displayValue = date ? formattedDate : placeholder;\n\n const getPresetDate = (preset: DatePickerPreset): Date => {\n const now = new Date();\n switch (preset) {\n case \"today\": return now;\n case \"yesterday\": return new Date(now.setDate(now.getDate() - 1));\n case \"last7\": return new Date(now.setDate(now.getDate() - 7));\n case \"last30\": return new Date(now.setDate(now.getDate() - 30));\n case \"last90\": return new Date(now.setDate(now.getDate() - 90));\n default: return now;\n }\n };\n\n const handlePresetPress = (preset: DatePickerPreset) => {\n if (!preset || disabled) return;\n const presetDate = getPresetDate(preset);\n onChange(presetDate);\n setSelectedPreset(preset);\n onPresetChange?.(preset);\n };\n\n const handleClear = () => {\n setSelectedPreset(null);\n onPresetChange?.(null);\n };\n\n const handlePressTrigger = () => {\n if (disabled) return;\n const ref = date ?? new Date();\n setPickerDraft(ref);\n setCalMonth(ref.getMonth());\n setCalYear(ref.getFullYear());\n setYearPick(false);\n setShowPicker(true);\n };\n\n const handleChange = (_event: any, selectedDate?: Date) => {\n if (Platform.OS === \"android\") {\n setShowPicker(false);\n }\n if (selectedDate) {\n setSelectedPreset(null);\n onChange(selectedDate);\n }\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? iconSize,\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const pickerComponent = showPicker ? (\n \n ) : null;\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n {/* Quick presets */}\n {presets && presets.length > 0 && (\n \n {presets.map((preset) => (\n handlePresetPress(preset)}\n disabled={disabled}\n style={({ pressed }) => [\n {\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n backgroundColor: selectedPreset === preset\n ? tokens.color.brand.default\n : tokens.color.bg.muted,\n borderRadius: tokens.radius.full,\n },\n { opacity: (disabled || pressed) ? 0.6 : 1 }\n ]}\n >\n \n {preset?.replace(\"last\", \"Last \").replace(\"today\", \"Today\").replace(\"yesterday\", \"Yesterday\")}\n \n \n ))}\n \n )}\n\n {/* Date input field */}\n \n {icon && renderIcon(icon)}\n \n {displayValue}\n \n {/* Clear button */}\n {clearable && date && (\n \n \n \n )}\n {/* Calendar icon indicator */}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n {/* Calendar mode — custom grid in bottom-sheet-style modal */}\n {effectivePickerStyle === \"calendar\" && showPicker && (\n { setShowPicker(false); setYearPick(false); }}>\n \n { setShowPicker(false); setYearPick(false); }}\n accessibilityLabel=\"Dismiss\"\n />\n \n {/* Handle bar */}\n \n \n \n\n {/* Header */}\n \n \n {modalTitle}\n \n { setShowPicker(false); setYearPick(false); }} hitSlop={12} accessibilityRole=\"button\" accessibilityLabel=\"Close\">\n \n \n \n\n {yearPick && mode !== \"time\" ? (\n \n {yearOptions.map((y) => (\n {\n setCalYear(y);\n setYearPick(false);\n }}\n style={{\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n borderRadius: tokens.radius.md,\n backgroundColor: y === calYear ? tokens.color.brand.subtle : tokens.color.bg.muted,\n }}\n >\n \n {y}\n \n \n ))}\n \n ) : (\n <>\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n setPickerDraft((prev) => {\n const next = new Date(prev);\n next.setFullYear(d.getFullYear(), d.getMonth(), d.getDate());\n return next;\n });\n setSelectedPreset(null);\n }}\n onMonthChange={handleCalendarMonthChange}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n locale={locale}\n onHeaderPress={() => setYearPick(true)}\n />\n \n )}\n\n {(mode === \"time\" || mode === \"datetime\") && (\n \n )}\n\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n const now = new Date();\n setPickerDraft(now);\n setCalMonth(now.getMonth());\n setCalYear(now.getFullYear());\n setSelectedPreset(null);\n }}\n style={{\n alignItems: \"center\",\n paddingVertical: tokens.spacing[3],\n borderRadius: tokens.radius.lg,\n backgroundColor: tokens.color.brand.subtle,\n }}\n >\n \n Today\n \n \n \n )}\n \n )}\n\n \n { setShowPicker(false); setYearPick(false); }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Cancel\"\n >\n \n Cancel\n \n \n {\n onChange(pickerDraft);\n setSelectedPreset(null);\n setShowPicker(false);\n setYearPick(false);\n }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Confirm\"\n >\n \n Confirm\n \n \n \n \n \n \n )}\n\n {/* Spinner / native mode — iOS: Modal overlay */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"ios\" && showPicker && (\n \n \n \n \n setShowPicker(false)} hitSlop={12}>\n \n Done\n \n \n \n {pickerComponent}\n \n \n \n )}\n\n {/* Spinner / native mode — Android: native dialog */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"android\" && pickerComponent}\n \n );\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarGridProps {\n month: number;\n year: number;\n selectedDate: Date | null;\n onSelectDate: (date: Date) => void;\n onMonthChange: (month: number, year: number) => void;\n minimumDate?: Date;\n maximumDate?: Date;\n /** BCP 47 locale for month title and weekday labels (default `undefined` = runtime default). */\n locale?: string;\n /** e.g. open year picker */\n onHeaderPress?: () => void;\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction isToday(d: Date): boolean {\n return isSameDay(d, new Date());\n}\n\nfunction isDateDisabled(d: Date, min?: Date, max?: Date): boolean {\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (d < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (d > maxDay) return true;\n }\n return false;\n}\n\nexport function CalendarGrid({\n month,\n year,\n selectedDate,\n onSelectDate,\n onMonthChange,\n minimumDate,\n maximumDate,\n locale,\n onHeaderPress,\n}: CalendarGridProps) {\n const t = useTokens();\n\n const weekdayLabels = useMemo(() => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const baseMonday = new Date(2024, 0, 8);\n return Array.from({ length: 7 }, (_, i) =>\n formatter.format(new Date(baseMonday.getFullYear(), baseMonday.getMonth(), baseMonday.getDate() + i))\n );\n }, [locale]);\n\n const monthYearTitle = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(new Date(year, month, 1)),\n [locale, year, month]\n );\n\n const goPrev = useCallback(() => {\n if (month === 0) onMonthChange(11, year - 1);\n else onMonthChange(month - 1, year);\n }, [month, year, onMonthChange]);\n\n const goNext = useCallback(() => {\n if (month === 11) onMonthChange(0, year + 1);\n else onMonthChange(month + 1, year);\n }, [month, year, onMonthChange]);\n\n const cells = useMemo(() => {\n const firstDay = new Date(year, month, 1);\n let startWeekday = firstDay.getDay() - 1;\n if (startWeekday < 0) startWeekday = 6;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const rows: { date: Date; inMonth: boolean }[][] = [];\n let row: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = 0; i < startWeekday; i++) {\n const day = daysInPrevMonth - startWeekday + 1 + i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n row.push({ date: new Date(prevYear, prevMonth, day), inMonth: false });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n row.push({ date: new Date(year, month, d), inMonth: true });\n if (row.length === 7) {\n rows.push(row);\n row = [];\n }\n }\n\n if (row.length > 0) {\n let nextDay = 1;\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n while (row.length < 7) {\n row.push({ date: new Date(nextYear, nextMonth, nextDay++), inMonth: false });\n }\n rows.push(row);\n }\n\n return rows;\n }, [month, year]);\n\n const cellSize = 40;\n\n return (\n \n {/* Month navigation */}\n \n \n \n \n onHeaderPress?.()} disabled={!onHeaderPress} accessibilityRole={onHeaderPress ? \"button\" : undefined}>\n \n {monthYearTitle}\n \n \n \n \n \n \n\n {/* Weekday headers */}\n \n {weekdayLabels.map((wd) => (\n \n \n {wd}\n \n \n ))}\n \n\n {/* Day grid */}\n {cells.map((row, ri) => (\n \n {row.map((cell, ci) => {\n const selected = selectedDate ? isSameDay(cell.date, selectedDate) : false;\n const today = isToday(cell.date);\n const disabled = !cell.inMonth || isDateDisabled(cell.date, minimumDate, maximumDate);\n\n return (\n { if (!disabled) onSelectDate(cell.date); }}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={cell.date.toDateString()}\n accessibilityState={{ selected, disabled }}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n height: cellSize,\n }}\n >\n \n \n {cell.date.getDate()}\n \n \n \n );\n })}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { View, Text, ScrollView, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nconst ROW = 40;\nconst VISIBLE = 5;\n\nfunction pad2(n: number): string {\n return n.toString().padStart(2, \"0\");\n}\n\nexport interface TimePickerWheelsProps {\n value: Date;\n onChange: (next: Date) => void;\n}\n\n/**\n * Simple scrollable hour / minute columns (bottom-sheet style).\n */\nexport function TimePickerWheels({ value, onChange }: TimePickerWheelsProps) {\n const t = useTokens();\n const h = value.getHours();\n const m = value.getMinutes();\n const hours = useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);\n const minutes = useMemo(() => Array.from({ length: 60 }, (_, i) => i), []);\n\n const setHM = useCallback(\n (nh: number, nm: number) => {\n const d = new Date(value);\n d.setHours(nh, nm, 0, 0);\n onChange(d);\n },\n [value, onChange]\n );\n\n const col = (label: string, child: React.ReactNode) => (\n \n \n {label}\n \n \n {child}\n \n \n );\n\n return (\n \n {col(\n \"Hour\",\n hours.map((hour) => (\n setHM(hour, m)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: hour === h ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(hour)}\n \n \n ))\n )}\n {col(\n \"Min\",\n minutes.map((minute) => (\n setHM(h, minute)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: minute === m ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(minute)}\n \n \n ))\n )}\n \n );\n}\n","import React from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n/**\n * Props for the Dialog component\n */\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n fullWidth?: boolean;\n /** Accessibility label for the dialog container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\n/**\n * Dialog component that displays modal content with backdrop and accessibility support.\n *\n * @param props - Dialog configuration props\n * @returns React element or null if not open\n *\n * @example\n * ```tsx\n * setIsOpen(false)}\n * title=\"Confirm Action\"\n * >\n * Are you sure?\n * \n * ```\n */\nexport function Dialog({\n open,\n onClose,\n title,\n children,\n actions,\n fullWidth = false,\n accessibilityLabel = \"Dialog\",\n backdropAccessibilityLabel = \"Dismiss dialog\",\n}: DialogProps) {\n const { dialog, modal } = useComponentTokens();\n const tokens = useTokens();\n\n if (!open) return null;\n\n return (\n \n \n \n \n {title && (\n \n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n )}\n \n {children}\n \n {actions && (\n \n {actions}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface DividerProps {\n /** Label shown centered in the divider */\n label?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Use a stronger border color */\n emphasis?: boolean;\n /** Extra vertical margin around horizontal dividers */\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Divider({\n label,\n orientation = \"horizontal\",\n emphasis = false,\n spacing = \"md\",\n}: DividerProps) {\n const { divider } = useComponentTokens();\n const tokens = useTokens();\n\n const lineColor = emphasis\n ? tokens.color.border.strong\n : divider.color;\n\n const verticalMargin = {\n none: 0,\n sm: tokens.spacing[2],\n md: divider.margin,\n lg: tokens.spacing[6],\n }[spacing];\n\n if (orientation === \"vertical\") {\n return (\n \n );\n }\n\n if (label) {\n return (\n \n \n \n {label}\n \n \n \n );\n }\n\n return (\n \n );\n}","import React, { useEffect } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type ViewStyle } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\n\nexport type DrawerAnchor = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n anchor?: DrawerAnchor;\n children?: React.ReactNode;\n /** Accessibility label for the drawer container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport function Drawer({\n open,\n onClose,\n anchor = \"left\",\n children,\n accessibilityLabel = \"Drawer\",\n backdropAccessibilityLabel = \"Dismiss drawer\",\n}: DrawerProps) {\n const { drawer } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { width: windowWidth, height: windowHeight } = Dimensions.get(\"window\");\n\n const isVertical = anchor === \"top\" || anchor === \"bottom\";\n const size = isVertical ? windowHeight * 0.4 : 280;\n \n const progress = useSharedValue(0);\n const [mounted, setMounted] = React.useState(open);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n if (reduceMotion) {\n progress.value = 1;\n } else {\n progress.value = withSpring(1, spring.snappy);\n }\n } else {\n if (reduceMotion) {\n progress.value = 0;\n setMounted(false);\n } else {\n progress.value = withSpring(0, spring.snappy, (finished) => {\n if (finished) runOnJS(setMounted)(false);\n });\n }\n }\n }, [open, reduceMotion]);\n\n const animatedStyle = useAnimatedStyle(() => {\n const translate = (1 - progress.value) * size;\n let transform: any[] = [];\n\n if (anchor === \"left\") transform = [{ translateX: -translate }];\n else if (anchor === \"right\") transform = [{ translateX: translate }];\n else if (anchor === \"top\") transform = [{ translateY: -translate }];\n else if (anchor === \"bottom\") transform = [{ translateY: translate }];\n\n return {\n transform,\n };\n });\n\n const backdropStyle = useAnimatedStyle(() => ({\n opacity: progress.value,\n }));\n\n if (!mounted) return null;\n\n const containerStyle: ViewStyle = {\n position: \"absolute\",\n ...(anchor === \"left\" ? { left: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"right\" ? { right: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"top\" ? { top: 0, left: 0, right: 0, height: size } : {}),\n ...(anchor === \"bottom\" ? { bottom: 0, left: 0, right: 0, height: size } : {}),\n };\n\n return (\n \n \n \n \n \n \n {children}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport type { SemanticTokens } from \"@truongdq01/tokens\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nexport type EmptyStateSize = \"sm\" | \"md\" | \"lg\";\n\nexport type EmptyStateVariant =\n | \"default\"\n | \"search\"\n | \"error\"\n | \"offline\"\n | \"permission\"\n | \"empty\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: EmptyStateSize;\n variant?: EmptyStateVariant;\n illustration?: React.ReactNode;\n}\n\nfunction variantSemantics(variant: EmptyStateVariant, tokens: SemanticTokens): { iconColor: string; wrapBg: string } {\n switch (variant) {\n case \"error\":\n case \"permission\":\n return { iconColor: tokens.color.error.icon, wrapBg: tokens.color.error.bg };\n case \"offline\":\n return { iconColor: tokens.color.warning.icon, wrapBg: tokens.color.warning.bg };\n case \"search\":\n return { iconColor: tokens.color.text.tertiary, wrapBg: tokens.color.bg.muted };\n case \"empty\":\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n default:\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n }\n}\n\nconst VARIANT_DEFAULTS: Record<\n Exclude,\n { title: string; description: string; iconName: IconName }\n> = {\n search: {\n title: \"No results found\",\n description: \"Try different keywords or filters.\",\n iconName: \"search\",\n },\n error: {\n title: \"Something went wrong\",\n description: \"We couldn't load this content. Try again.\",\n iconName: \"error\",\n },\n offline: {\n title: \"You're offline\",\n description: \"Check your connection and try again.\",\n iconName: \"warning\",\n },\n permission: {\n title: \"Access denied\",\n description: \"You don't have permission to view this.\",\n iconName: \"lock\",\n },\n empty: {\n title: \"Nothing here yet\",\n description: \"When there is content, it will show up here.\",\n iconName: \"package\",\n },\n};\n\nexport function EmptyState({\n title,\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n illustration,\n}: EmptyStateProps) {\n const { emptyState } = useComponentTokens();\n const tokens = useTokens();\n\n const meta = variant !== \"default\" ? VARIANT_DEFAULTS[variant] : null;\n const resolvedTitle = title ?? meta?.title;\n const resolvedDescription = description ?? meta?.description;\n\n const { iconColor, wrapBg } = variantSemantics(variant, tokens);\n\n const iconSize = Math.round(emptyState.icon.size / 2);\n const resolvedIcon =\n icon ??\n (meta ? (\n \n ) : null);\n\n const sizePad = emptyState.containerSize[size];\n const titleSize = emptyState.titleSize[size];\n const descSize = emptyState.descriptionSize[size];\n\n return (\n \n {illustration && {illustration}}\n\n {resolvedIcon && (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(resolvedIcon)\n ? React.cloneElement(resolvedIcon, {\n size: resolvedIcon.props.size ?? iconSize,\n color: resolvedIcon.props.color ?? iconColor,\n })\n : resolvedIcon}\n \n )}\n\n {resolvedTitle && (\n \n {resolvedTitle}\n \n )}\n\n {resolvedDescription && (\n \n {resolvedDescription}\n \n )}\n\n {action && (\n \n {action}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface FabProps {\n icon?: React.ReactNode;\n label?: string;\n onPress?: () => void;\n disabled?: boolean;\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"circular\" | \"extended\";\n accessibilityLabel?: string;\n}\n\nexport function Fab({\n icon,\n label,\n onPress,\n disabled = false,\n color = \"primary\",\n size = \"md\",\n variant = \"circular\",\n accessibilityLabel,\n}: FabProps) {\n const { fab } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress,\n disabled,\n feedbackMode: \"scale\",\n accessibilityLabel: accessibilityLabel ?? label ?? (typeof icon === \"string\" ? icon : \"FAB\"),\n accessibilityRole: \"button\",\n });\n\n const isExtended = variant === \"extended\" && !!label;\n \n // Base color from component tokens - Fab only has primary/secondary in tokens\n const baseColor = color === \"primary\" ? fab.color.primary.bg : fab.color.secondary.bg;\n const textColor = \"#FFFFFF\";\n\n const sizeMap = {\n sm: { size: 40, iconSize: 20 },\n md: { size: 56, iconSize: 24 },\n lg: { size: 72, iconSize: 28 },\n };\n\n const s = sizeMap[size];\n\n const containerStyle = [\n fab.container,\n {\n backgroundColor: baseColor,\n height: s.size,\n minWidth: s.size,\n borderRadius: s.size / 2,\n paddingHorizontal: isExtended ? 20 : 0,\n },\n disabled && { opacity: 0.5 },\n animatedStyle,\n ];\n\n return (\n \n \n \n {icon && (\n \n {icon}\n \n )}\n {isExtended && (\n \n {label}\n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontWeight: \"600\",\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n});\n","import React, { createContext, useContext, useCallback } from \"react\";\nimport { View, ScrollView, StyleSheet, Platform } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface FormContextValue {\n values: Record;\n errors: Record;\n touched: Record;\n isSubmitting: boolean;\n isValid: boolean;\n setValue: (name: string, value: any) => void;\n setError: (name: string, error: string) => void;\n setTouched: (name: string, touched: boolean) => void;\n handleSubmit: (callback: (values: Record) => void | Promise) => () => void;\n resetForm: () => void;\n}\n\nconst FormContext = createContext(null);\n\nexport function useForm() {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error(\"useForm must be used within a Form component\");\n }\n return context;\n}\n\nexport interface FormProps {\n /** Initial form values */\n initialValues?: Record;\n /** Validation function */\n validate?: (values: Record) => Record;\n /** Submit handler */\n onSubmit?: (values: Record) => void | Promise;\n /** Children components */\n children: React.ReactNode;\n /** Whether to show validation on change */\n validateOnChange?: boolean;\n /** Whether to show validation on blur */\n validateOnBlur?: boolean;\n /** Enable keyboard avoiding view */\n enableKeyboardAvoidingView?: boolean;\n /** Scrollable form */\n scrollable?: boolean;\n /** Custom style */\n style?: object;\n /** Test ID */\n testID?: string;\n}\n\n/**\n * Form component that provides form state management and validation.\n * Supports controlled inputs, validation, and submission handling.\n */\nexport function Form({\n initialValues = {},\n validate,\n onSubmit,\n children,\n validateOnChange = true,\n validateOnBlur = true,\n enableKeyboardAvoidingView = true,\n scrollable = true,\n style,\n testID = \"form\",\n}: FormProps) {\n const tokens = useTokens();\n\n const [values, setValues] = React.useState>(initialValues);\n const [errors, setErrors] = React.useState>({});\n const [touched, setTouched] = React.useState>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const runValidation = useCallback((currentValues: Record) => {\n if (!validate) return {};\n\n try {\n return validate(currentValues);\n } catch (error) {\n console.error(\"Form validation error:\", error);\n return {};\n }\n }, [validate]);\n\n const isValid = React.useMemo(() => {\n return Object.keys(errors).length === 0;\n }, [errors]);\n\n const setValue = useCallback((name: string, value: any) => {\n setValues(prev => ({ ...prev, [name]: value }));\n\n if (validateOnChange) {\n setValues(current => {\n const newErrors = runValidation({ ...current, [name]: value });\n setErrors(newErrors);\n return current;\n });\n }\n }, [validateOnChange, runValidation]);\n\n const setError = useCallback((name: string, error: string) => {\n setErrors(prev => ({ ...prev, [name]: error }));\n }, []);\n\n const setTouchedField = useCallback((name: string, fieldTouched: boolean) => {\n setTouched(prev => ({ ...prev, [name]: fieldTouched }));\n\n if (validateOnBlur && fieldTouched) {\n const newErrors = runValidation(values);\n setErrors(newErrors);\n }\n }, [validateOnBlur, runValidation, values]);\n\n const handleSubmit = useCallback((callback: (values: Record) => void | Promise) => {\n return async () => {\n if (isSubmitting) return;\n\n // Mark all fields as touched\n const allTouched = Object.keys(values).reduce((acc, key) => {\n acc[key] = true;\n return acc;\n }, {} as Record);\n setTouched(allTouched);\n\n // Run final validation\n const finalErrors = runValidation(values);\n setErrors(finalErrors);\n\n if (Object.keys(finalErrors).length > 0) {\n return; // Don't submit if there are errors\n }\n\n setIsSubmitting(true);\n try {\n await callback(values);\n } catch (error) {\n console.error(\"Form submission error:\", error);\n } finally {\n setIsSubmitting(false);\n }\n };\n }, [values, runValidation, isSubmitting]);\n\n const resetForm = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setIsSubmitting(false);\n }, [initialValues]);\n\n const contextValue: FormContextValue = {\n values,\n errors,\n touched,\n isSubmitting,\n isValid,\n setValue,\n setError,\n setTouched: setTouchedField,\n handleSubmit,\n resetForm,\n };\n\n const formContent = (\n \n \n {children}\n \n \n );\n\n if (scrollable) {\n return (\n \n {formContent}\n \n );\n }\n\n return formContent;\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n paddingVertical: 16,\n },\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type FormControlVariant = \"filled\" | \"outlined\" | \"standard\";\nexport type FormControlMargin = \"dense\" | \"none\" | \"normal\";\n\ninterface FormControlContextValue {\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n}\n\nconst FormControlContext = createContext(null);\n\nexport function useFormControl() {\n return useContext(FormControlContext);\n}\n\nexport interface FormControlProps {\n children?: React.ReactNode;\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n margin?: FormControlMargin;\n style?: object;\n}\n\nexport function FormControl({\n children,\n error,\n required,\n disabled,\n focused,\n fullWidth,\n variant = \"outlined\",\n margin = \"none\",\n style,\n}: FormControlProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n \n const marginSize = useMemo(() => {\n if (margin === \"dense\") return tokens.spacing[2];\n if (margin === \"normal\") return tokens.spacing[4];\n return 0;\n }, [margin, tokens]);\n\n const ctxValue = useMemo(() => ({ error, required, disabled, focused, fullWidth, variant }), [error, required, disabled, focused, fullWidth, variant]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface FormLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormLabel({ children, style }: FormLabelProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : ctx?.disabled \n ? formControl.label.color + \"80\" \n : formControl.label.color;\n\n return (\n \n {children}{ctx?.required ? \" *\" : \"\"}\n \n );\n}\n\nexport interface FormHelperTextProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormHelperText({ children, style }: FormHelperTextProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : formControl.helperText.color;\n\n return (\n \n {children}\n \n );\n}\n\nexport interface FormControlLabelProps {\n control: React.ReactElement;\n label?: React.ReactNode;\n labelPlacement?: \"end\" | \"start\" | \"top\" | \"bottom\";\n disabled?: boolean;\n onPress?: () => void;\n style?: object;\n}\n\nexport function FormControlLabel({\n control,\n label,\n labelPlacement = \"end\",\n disabled,\n onPress,\n style,\n}: FormControlLabelProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.disabled ?? false;\n\n const controlElement = React.cloneElement(control, {\n disabled: isDisabled,\n });\n\n const isRow = labelPlacement === \"start\" || labelPlacement === \"end\";\n const rowReverse = labelPlacement === \"start\";\n const colReverse = labelPlacement === \"top\";\n\n return (\n \n {controlElement}\n {label ? (\n \n {label}\n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\nimport { PasswordInput } from \"../Input/PasswordInput\";\nimport { FormGroupContext, useFormGroupVariant } from \"./FormGroupContext\";\n\nfunction isInputLikeElement(el: React.ReactElement): boolean {\n const C = el.type;\n return C === Input || C === PasswordInput;\n}\n\nfunction enhanceChildForGroupedField(\n child: React.ReactNode,\n label: string | undefined,\n): React.ReactNode {\n if (!label || !React.isValidElement(child)) return child;\n if (!isInputLikeElement(child)) return child;\n const props = child.props as { placeholder?: string };\n return React.cloneElement(child as React.ReactElement>, {\n floatingLabel: true,\n label,\n placeholder: props.placeholder ?? label,\n });\n}\n\nexport interface FormFieldProps {\n label?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n labelTrailing?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function FormField({\n label,\n required = false,\n error,\n helperText,\n labelTrailing,\n children,\n}: FormFieldProps) {\n const { formField, formControl, formGroup } = useComponentTokens();\n const tokens = useTokens();\n const groupVariant = useFormGroupVariant();\n const isGrouped = groupVariant === \"grouped\";\n\n const childEl = React.isValidElement(children) ? children : null;\n const showFloatingClone = Boolean(isGrouped && label && childEl && isInputLikeElement(childEl));\n const showLabelRow = Boolean((label || labelTrailing) && !showFloatingClone);\n\n const renderedChild = showFloatingClone ? enhanceChildForGroupedField(children, label) : children;\n\n const showMessagesBelowField = !isGrouped;\n\n return (\n \n {showLabelRow && (label || labelTrailing) ? (\n \n {label ? (\n \n {label}\n {required ? (\n \n *\n \n ) : null}\n \n ) : null}\n {labelTrailing}\n \n ) : null}\n\n {renderedChild}\n\n {showMessagesBelowField ? (\n error ? (\n \n {error}\n \n ) : helperText ? (\n {helperText}\n ) : null\n ) : null}\n \n );\n}\n\nexport interface FormGroupProps {\n children: React.ReactNode;\n gap?: \"sm\" | \"md\" | \"lg\";\n variant?: \"standard\" | \"grouped\";\n /** Shown under the grouped card (tertiary). */\n footer?: string;\n /** Validation or alert copy under the grouped card (e.g. from `useField`). */\n error?: string;\n}\n\nexport function FormGroup({\n children,\n gap = \"md\",\n variant = \"standard\",\n footer,\n error,\n}: FormGroupProps) {\n const tokens = useTokens();\n const { formGroup } = useComponentTokens();\n const gapSize = { sm: tokens.spacing[3], md: tokens.spacing[5], lg: tokens.spacing[7] }[gap];\n\n if (variant === \"standard\") {\n return (\n \n {children}\n \n );\n }\n\n const items = React.Children.toArray(children).filter(Boolean);\n\n return (\n \n \n \n {items.map((child, i) => (\n \n {child}\n {i < items.length - 1 ? (\n \n ) : null}\n \n ))}\n \n {error ? {error} : null}\n {footer ? {footer} : null}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Pressable } from \"react-native\";\nimport { useIconStyle } from \"@truongdq01/headless\";\nimport { Input, type InputProps } from \"./Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface PasswordInputProps extends InputProps { }\n\n/**\n * A specialized Input component for passwords with a built-in visibility toggle.\n */\nexport function PasswordInput(props: PasswordInputProps) {\n const [show, setShow] = useState(false);\n const { size, color } = useIconStyle(\"input\");\n\n const toggleShow = () => setShow((prev) => !prev);\n\n return (\n \n \n \n }\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nlet BlurView: React.ComponentType | null = null;\ntry {\n BlurView = require(\"expo-blur\").BlurView;\n} catch {\n // expo-blur not installed — fall back to translucent View\n}\n\nexport interface GlassCardProps extends ViewProps {\n /** Blur intensity (0–100). Only effective when expo-blur is installed. Default 40. */\n intensity?: number;\n /** expo-blur tint: \"light\" | \"dark\" | \"default\". Auto-selects from theme when omitted. */\n tint?: \"light\" | \"dark\" | \"default\";\n /** Border radius override. Uses `radius.xl` by default. */\n borderRadius?: number;\n /** Extra styles for the outer container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\nexport function GlassCard({\n intensity = 40,\n tint,\n borderRadius,\n style,\n children,\n ...rest\n}: GlassCardProps) {\n const t = useTokens();\n const isDark = t.color.bg.default !== \"#F8FAFC\";\n\n const resolvedTint = tint ?? (isDark ? \"dark\" : \"light\");\n const resolvedRadius = borderRadius ?? t.radius.xl;\n\n const containerStyle = useMemo(\n () => ({\n borderRadius: resolvedRadius,\n overflow: \"hidden\" as const,\n borderWidth: 1,\n borderColor: t.color.surface.glassBorder ?? (isDark ? \"rgba(255,255,255,0.08)\" : \"rgba(255,255,255,0.3)\"),\n }),\n [resolvedRadius, t.color.surface.glassBorder, isDark],\n );\n\n const fallbackStyle = useMemo(\n () => ({\n ...StyleSheet.absoluteFillObject,\n backgroundColor: t.color.surface.glass ?? (isDark ? \"rgba(15,23,42,0.72)\" : \"rgba(255,255,255,0.72)\"),\n }),\n [t.color.surface.glass, isDark],\n );\n\n return (\n \n {BlurView ? (\n \n ) : (\n \n )}\n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n position: \"relative\",\n zIndex: 1,\n },\n});\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { primitive } from \"@truongdq01/tokens\";\n\nlet ExpoLinearGradient: React.ComponentType | null = null;\ntry {\n ExpoLinearGradient = require(\"expo-linear-gradient\").LinearGradient;\n} catch {\n // expo-linear-gradient not installed — render solid fallback\n}\n\n/**\n * Available gradient preset names from primitive tokens\n */\ntype GradientPreset = keyof typeof primitive.gradient;\n\n/**\n * Props for the Gradient component\n */\nexport interface GradientProps extends ViewProps {\n /** Named gradient preset from primitive tokens. */\n preset?: GradientPreset;\n /** Custom color stops (overrides preset). */\n colors?: readonly string[];\n /** Start point {x, y} — 0‒1 range. Default {x:0, y:0}. */\n start?: { x: number; y: number };\n /** End point {x, y} — 0‒1 range. Default {x:1, y:1}. */\n end?: { x: number; y: number };\n /** Extra styles for the container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\n/**\n * Gradient component that renders linear gradients with fallback support.\n * Requires expo-linear-gradient for full functionality, falls back to solid color.\n *\n * @param props - Gradient configuration props\n * @returns React gradient component\n *\n * @example\n * ```tsx\n * \n * Content\n * \n * ```\n */\nexport function Gradient({\n preset,\n colors: colorsProp,\n start = { x: 0, y: 0 },\n end = { x: 1, y: 1 },\n style,\n children,\n ...rest\n}: GradientProps) {\n const resolvedColors = useMemo(() => {\n if (colorsProp && colorsProp.length >= 2) return colorsProp;\n if (preset && primitive.gradient[preset]) return primitive.gradient[preset];\n return primitive.gradient.brand;\n }, [colorsProp, preset]);\n\n if (ExpoLinearGradient) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface GridProps {\n children?: React.ReactNode;\n container?: boolean;\n size?: number | \"auto\" | \"grow\";\n columns?: number;\n spacing?: \"sm\" | \"md\" | \"lg\" | number;\n rowSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n columnSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n direction?: ViewStyle[\"flexDirection\"];\n wrap?: ViewStyle[\"flexWrap\"];\n offset?: number;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Grid({\n children,\n container = false,\n size,\n columns = 12,\n spacing = 0,\n rowSpacing,\n columnSpacing,\n direction = \"row\",\n wrap = \"wrap\",\n offset,\n style,\n}: GridProps) {\n const { grid } = useComponentTokens();\n\n const resolveGap = (s: \"sm\" | \"md\" | \"lg\" | number | undefined) => {\n if (s === undefined) return undefined;\n return typeof s === \"number\" ? s : grid.gap[s];\n };\n\n const gap = resolveGap(spacing) ?? 0;\n const rowGap = resolveGap(rowSpacing) ?? gap;\n const colGap = resolveGap(columnSpacing) ?? gap;\n\n if (container) {\n return (\n \n {children}\n \n );\n }\n\n const widthPct = typeof size === \"number\" ? `${(size / columns) * 100}%` : undefined;\n const widthValue = widthPct as unknown as ViewStyle[\"width\"];\n const itemStyle: ViewStyle = {\n flexGrow: size === \"grow\" ? 1 : 0,\n flexBasis: size === \"grow\" ? 0 : size === \"auto\" ? undefined : (widthValue as any),\n maxWidth: size === \"grow\" ? undefined : size === \"auto\" ? undefined : (widthValue as any),\n marginLeft: offset ? (`${(offset / columns) * 100}%` as unknown as ViewStyle[\"marginLeft\"]) : undefined,\n };\n\n return {children};\n}\n","import React, { useState } from \"react\";\nimport { Image as RNImage, ImageProps as RNImageProps, View, StyleSheet } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nconst AnimatedImage = Animated.createAnimatedComponent(RNImage);\n\nexport interface RnImageProps extends RNImageProps {\n /**\n * If true, shows a skeleton loading effect while the image is fetching.\n * Defaults to true.\n */\n showPlaceholder?: boolean;\n}\n\nexport function RnImage({ showPlaceholder = true, style, onLoad, ...props }: RnImageProps) {\n const { image } = useComponentTokens();\n const [isLoaded, setIsLoaded] = useState(false);\n const opacity = useSharedValue(0);\n\n const handleLoad = (e: any) => {\n setIsLoaded(true);\n opacity.value = withTiming(1, { duration: 300 });\n onLoad?.(e);\n };\n\n const imageStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n});\n","import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { View, Text, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nconst { width: SCREEN_WIDTH } = Dimensions.get(\"window\");\n\nexport type ImageListVariant = \"standard\" | \"woven\" | \"masonry\" | \"quilted\";\n\ninterface ImageListContextValue {\n cols: number;\n gap: number;\n rowHeight: number | \"auto\";\n variant: ImageListVariant;\n width: number;\n}\n\nconst ImageListContext = createContext(null);\n\nfunction useImageListContext() {\n return useContext(ImageListContext);\n}\n\nexport interface ImageListProps {\n children?: React.ReactNode;\n cols?: number;\n gap?: number;\n rowHeight?: number | \"auto\";\n variant?: ImageListVariant;\n style?: object;\n}\n\nexport function ImageList({\n children,\n cols = 2,\n gap = 8,\n rowHeight = 120,\n variant = \"standard\",\n style,\n}: ImageListProps) {\n const [width, setWidth] = useState(SCREEN_WIDTH);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const nextWidth = event.nativeEvent.layout.width;\n if (nextWidth !== width) setWidth(nextWidth);\n };\n\n const ctx = useMemo(() => ({ cols, gap, rowHeight, variant, width }), [cols, gap, rowHeight, variant, width]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface ImageListItemProps {\n children?: React.ReactNode;\n cols?: number;\n rows?: number;\n style?: object;\n}\n\nexport function ImageListItem({ children, cols = 1, rows = 1, style }: ImageListItemProps) {\n const ctx = useImageListContext();\n const gap = ctx?.gap ?? 8;\n const columns = ctx?.cols ?? 2;\n const variant = ctx?.variant ?? \"standard\";\n const rowHeight = ctx?.rowHeight ?? 120;\n const listWidth = ctx?.width ?? 0;\n\n const totalGap = gap * (columns - 1);\n const baseWidth = columns > 0 ? (listWidth - totalGap) / columns : listWidth;\n const itemWidth = cols * baseWidth + gap * (cols - 1);\n\n const height = variant === \"masonry\" || rowHeight === \"auto\" ? undefined : rowHeight * rows + gap * (rows - 1);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ImageListItemBarProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n actionIcon?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n style?: object;\n}\n\nexport function ImageListItemBar({\n title,\n subtitle,\n actionIcon,\n position = \"bottom\",\n style,\n}: ImageListItemBarProps) {\n const { imageList } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {title ? {title} : null}\n {subtitle ? {subtitle} : null}\n \n {actionIcon}\n \n );\n}\n","import React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport Animated, { useAnimatedStyle } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type LinearProgressVariant = \"indeterminate\" | \"determinate\" | \"buffer\" | \"query\";\nexport type LinearProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"brand\"\n | \"accent\"\n | \"inherit\";\n\nexport interface LinearProgressProps {\n value?: number;\n variant?: LinearProgressVariant;\n valueBuffer?: number;\n color?: LinearProgressColor;\n trackColor?: string;\n thickness?: number;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function LinearProgress({\n value = 0,\n variant = \"indeterminate\",\n valueBuffer = 0,\n color = \"primary\",\n trackColor,\n thickness,\n style,\n}: LinearProgressProps) {\n const tokens = useTokens();\n const { linearProgress } = useComponentTokens();\n const progressValue = clamp(value);\n\n const barColor = {\n primary: linearProgress.indicator.backgroundColor,\n brand: linearProgress.variant.brand.indicator.backgroundColor,\n accent: linearProgress.variant.accent.indicator.backgroundColor,\n success: linearProgress.variant.success.indicator.backgroundColor,\n error: linearProgress.variant.error.indicator.backgroundColor,\n secondary: tokens.color.text.secondary,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color] || linearProgress.indicator.backgroundColor;\n\n const containerStyle = [\n styles.container,\n linearProgress.track,\n { height: thickness ?? linearProgress.track.height, backgroundColor: trackColor ?? linearProgress.track.backgroundColor },\n style,\n ];\n\n const determinateStyle = useAnimatedStyle(() => {\n return {\n width: `${progressValue}%`,\n };\n }, [progressValue]);\n\n const bufferValue = clamp(valueBuffer);\n\n return (\n \n {variant === \"indeterminate\" || variant === \"query\" ? (\n \n ) : (\n <>\n {variant === \"buffer\" && (\n \n )}\n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n borderRadius: 999,\n overflow: \"hidden\",\n },\n determinateBar: {\n height: \"100%\",\n },\n indeterminateBar: {\n height: \"100%\",\n width: \"40%\",\n },\n bufferBar: {\n position: \"absolute\",\n height: \"100%\",\n left: 0,\n top: 0,\n },\n});\n","import React from \"react\";\nimport { Text, type TextStyle, Linking } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface LinkProps {\n children?: React.ReactNode;\n href?: string;\n onPress?: () => void;\n color?: string;\n underline?: \"always\" | \"hover\" | \"none\";\n style?: TextStyle | TextStyle[];\n}\n\nexport function Link({\n children,\n href,\n onPress,\n color,\n underline = \"always\",\n style,\n}: LinkProps) {\n const { link } = useComponentTokens();\n const decoration = underline === \"none\" ? \"none\" : \"underline\";\n\n return (\n {\n if (onPress) onPress();\n if (href) {\n try {\n await Linking.openURL(href);\n } catch {\n // ignore\n }\n }\n }}\n style={[\n link.text,\n { color: color ?? link.text.color, textDecorationLine: decoration },\n style,\n ]}\n >\n {children}\n \n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable, FlatList, type ListRenderItem, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── List Context ────────────────────────────────────────────────\n\ninterface ListContextValue {\n dense?: boolean;\n disablePadding?: boolean;\n}\n\nconst ListContext = createContext(null);\n\nfunction useListContext() {\n return useContext(ListContext);\n}\n\n// ─── List Component ──────────────────────────────────────────────\n\nexport interface ListProps {\n children?: React.ReactNode;\n dense?: boolean;\n disablePadding?: boolean;\n subheader?: React.ReactNode;\n style?: StyleProp;\n}\n\nexport function List({ children, dense = false, disablePadding = false, subheader, style }: ListProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {subheader && (\n \n {typeof subheader === \"string\" ? (\n \n {subheader}\n \n ) : subheader}\n \n )}\n {children}\n \n \n );\n}\n\n// ─── ListItem ────────────────────────────────────────────────────\n\nexport interface ListItemProps {\n children?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n divider?: boolean;\n style?: StyleProp;\n}\n\nfunction ListItemInner({\n children,\n secondaryAction,\n onPress,\n disabled = false,\n selected = false,\n divider = false,\n style,\n}: ListItemProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n const isDense = ctx?.dense;\n\n return (\n [\n list.item,\n {\n paddingVertical: isDense ? tokens.spacing[2] : tokens.spacing[3],\n backgroundColor: selected ? tokens.color.brand.subtle : \"transparent\",\n borderBottomWidth: divider ? 1 : 0,\n borderBottomColor: tokens.color.border.subtle,\n opacity: disabled ? 0.5 : 1,\n },\n pressed && list.item.pressed,\n style,\n ] as any}\n >\n \n {children}\n \n {secondaryAction && (\n \n {secondaryAction}\n \n )}\n \n );\n}\n\nexport const ListItem = React.memo(ListItemInner);\n\n// ─── ListItemText ────────────────────────────────────────────────\n\nexport interface ListItemTextProps {\n primary: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport function ListItemText({ primary, secondary }: ListItemTextProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n return (\n \n {typeof primary === \"string\" ? (\n \n {primary}\n \n ) : primary}\n {secondary && (\n typeof secondary === \"string\" ? (\n \n {secondary}\n \n ) : secondary\n )}\n \n );\n}\n\n// ─── ListItemIcon ────────────────────────────────────────────────\n\nexport function ListItemIcon({ children }: { children: React.ReactNode }) {\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\n// ─── FlatList Wrapper ────────────────────────────────────────────\n\nexport interface ListDataProps extends Omit {\n data: T[];\n renderItem: ListRenderItem;\n estimatedItemSize: number;\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function ListData({\n data,\n renderItem,\n estimatedItemSize,\n keyExtractor,\n ...listProps\n}: ListDataProps) {\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { View, Text, StyleSheet, AccessibilityInfo } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n withRepeat,\n withSequence,\n cancelAnimation,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nexport interface MarqueeProps {\n /** Content to scroll */\n children: React.ReactNode;\n /** Speed of animation (pixels per second) */\n speed?: number;\n /** Direction of scroll */\n direction?: \"left\" | \"right\" | \"up\" | \"down\";\n /** Whether to pause on hover/press (for web compatibility) */\n pauseOnHover?: boolean;\n /** Whether to pause on press */\n pauseOnPress?: boolean;\n /** Whether to repeat infinitely */\n loop?: boolean;\n /** Delay before starting animation */\n delay?: number;\n /** Gradient fade edges */\n fadeEdges?: boolean;\n /** Custom gradient colors for fade */\n fadeColor?: string;\n /** Accessibility label */\n accessibilityLabel?: string;\n /** Test ID for testing */\n testID?: string;\n}\n\n/**\n * Marquee component for scrolling text or content horizontally/vertically.\n * Uses React Native Reanimated for smooth GPU-accelerated animations.\n */\nexport function Marquee({\n children,\n speed = 50,\n direction = \"left\",\n pauseOnHover = false,\n pauseOnPress = false,\n loop = true,\n delay = 0,\n fadeEdges = true,\n fadeColor,\n accessibilityLabel = \"Scrolling content\",\n testID = \"marquee\",\n}: MarqueeProps) {\n const tokens = useTokens();\n const containerRef = useRef(null);\n const contentRef = useRef(null);\n\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const isPaused = useSharedValue(false);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (direction === \"left\" || direction === \"right\") {\n return {\n transform: [{ translateX: translateX.value }],\n };\n } else {\n return {\n transform: [{ translateY: translateY.value }],\n };\n }\n });\n\n const startAnimation = (containerWidth: number, contentWidth: number) => {\n if (contentWidth <= containerWidth) return; // No need to scroll\n\n const distance = contentWidth - containerWidth;\n const duration = (distance / speed) * 1000; // Convert to milliseconds\n\n const startValue = direction === \"left\" ? 0 : -distance;\n const endValue = direction === \"left\" ? -distance : 0;\n\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = startValue;\n } else {\n translateY.value = startValue;\n }\n\n const animation = withTiming(endValue, {\n duration,\n easing: Easing.linear,\n });\n\n const repeatedAnimation = loop\n ? withRepeat(\n withSequence(\n withTiming(endValue, { duration, easing: Easing.linear }),\n withTiming(startValue, { duration: 0 }), // Reset instantly\n ),\n -1, // Infinite\n false,\n )\n : animation;\n\n if (delay > 0) {\n setTimeout(() => {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }, delay);\n } else {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }\n };\n\n const pauseAnimation = () => {\n isPaused.value = true;\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n\n const resumeAnimation = () => {\n isPaused.value = false;\n // Re-measure and restart animation\n measureAndStart();\n };\n\n const measureAndStart = () => {\n containerRef.current?.measure((x, y, width, height) => {\n contentRef.current?.measure((cx, cy, cWidth, cHeight) => {\n if (direction === \"left\" || direction === \"right\") {\n startAnimation(width, cWidth);\n } else {\n startAnimation(height, cHeight);\n }\n });\n });\n };\n\n useEffect(() => {\n // Start animation after layout\n const timeout = setTimeout(measureAndStart, 100);\n return () => {\n clearTimeout(timeout);\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n }, [children, speed, direction, loop]);\n\n const handlePressIn = () => {\n if (pauseOnPress) {\n pauseAnimation();\n }\n };\n\n const handlePressOut = () => {\n if (pauseOnPress) {\n resumeAnimation();\n }\n };\n\n const fadeGradient = fadeColor || tokens.color.surface.default;\n\n return (\n \n {fadeEdges && (\n <>\n \n \n \n )}\n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n horizontal: {\n flexDirection: \"row\",\n },\n vertical: {\n flexDirection: \"column\",\n },\n fadeLeft: {\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeRight: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeTop: {\n left: 0,\n right: 0,\n top: 0,\n height: 20,\n width: undefined,\n },\n fadeBottom: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 20,\n width: undefined,\n },\n});","import React, { useCallback, useMemo } from \"react\";\nimport { Modal, View, Pressable, Text, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useMenu } from \"@truongdq01/headless\";\n\nexport interface MenuProps {\n open: boolean;\n onClose?: () => void;\n anchorEl?: { pageX: number; pageY: number; width: number; height: number } | null;\n children?: React.ReactNode;\n}\n\nexport interface MenuItemProps {\n children?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n}\n\nconst MenuContext = React.createContext<{ getItemProps: (o: any) => any } | null>(null);\n\nexport function Menu({ open, onClose, anchorEl, children }: MenuProps) {\n const { menu } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [menuSize, setMenuSize] = React.useState({ width: 0, height: 0 });\n const [mounted, setMounted] = React.useState(false);\n\n const { close, getItemProps } = useMenu({ onClose });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n // Animate in when open changes to true\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 180, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n });\n } else if (mounted) {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(setMounted)(false);\n });\n }\n }, [open]);\n\n const MENU_MIN_WIDTH = 180;\n const GAP = 4;\n\n let top: number = 48;\n let left: number = windowWidth - MENU_MIN_WIDTH - 16;\n\n if (anchorEl) {\n const { pageX, pageY, width, height } = anchorEl;\n top = pageY + height + GAP;\n left = pageX;\n\n if (left + menuSize.width > windowWidth - 8) {\n left = windowWidth - menuSize.width - 8;\n }\n if (top + menuSize.height > windowHeight - 8) {\n top = pageY - menuSize.height - GAP;\n }\n top = Math.max(8, top);\n left = Math.max(8, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setMenuSize({ width, height });\n }}\n style={[\n menu.container,\n {\n position: \"absolute\",\n top,\n left,\n minWidth: MENU_MIN_WIDTH,\n },\n animStyle,\n ]}\n >\n \n {children}\n \n \n \n );\n}\n\nexport function MenuItem({ children, onPress, disabled = false, selected = false }: MenuItemProps) {\n const { menu } = useComponentTokens();\n const tokens = useTokens();\n const ctx = React.useContext(MenuContext);\n\n const itemProps = ctx?.getItemProps({ onClick: onPress, disabled }) ?? { onPress, disabled };\n\n return (\n [\n menu.item,\n pressed && { backgroundColor: tokens.color.bg.subtle },\n selected && { backgroundColor: tokens.color.brand.subtle },\n disabled && { opacity: 0.5 },\n ]}\n >\n \n {children}\n \n \n );\n}\n","import React from \"react\";\nimport { Modal as RNModal, View, Pressable, StyleSheet, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n keepMounted?: boolean;\n hideBackdrop?: boolean;\n disableAutoFocus?: boolean;\n disableEscapeKeyDown?: boolean;\n /** Accessibility label for the modal content container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n BackdropComponent?: React.ComponentType;\n BackdropProps?: object;\n contentStyle?: StyleProp;\n}\n\nexport function Modal({\n open,\n onClose,\n children,\n keepMounted = false,\n hideBackdrop = false,\n disableEscapeKeyDown = false,\n accessibilityLabel = \"Modal\",\n backdropAccessibilityLabel = \"Dismiss modal\",\n BackdropComponent,\n BackdropProps,\n contentStyle,\n}: ModalProps) {\n const { modal } = useComponentTokens();\n\n if (!open && !keepMounted) return null;\n\n const handleRequestClose = () => {\n if (!disableEscapeKeyDown) {\n onClose?.();\n }\n };\n\n return (\n \n \n {!hideBackdrop && (\n BackdropComponent ? (\n (() => {\n const el = ;\n return React.isValidElement(el) ? React.cloneElement(el as any, { collapsable: false }) : el;\n })()\n ) : (\n \n )\n )}\n \n {children}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n content: {\n minWidth: 280,\n maxWidth: \"90%\",\n },\n});\n","import React, { useEffect } from \"react\";\nimport { View, TextInput, Pressable, Text } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n withTiming,\n withSequence,\n withRepeat,\n cancelAnimation,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useOTPInput, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\nexport interface OTPInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n onComplete?: (value: string) => void;\n disabled?: boolean;\n /** Show dots instead of digits (PIN entry). */\n mask?: boolean;\n}\n\nexport function OTPInput({\n length = 6,\n value,\n onChange,\n onComplete,\n disabled = false,\n mask = false,\n}: OTPInputProps) {\n const { otpInput } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { inputRef, isFocused, handlePress, getOtpProps } = useOTPInput({\n length,\n value,\n onChange,\n onComplete,\n disabled,\n });\n\n return (\n \n \n\n \n {Array.from({ length }).map((_, index) => {\n const char = value[index] || \"\";\n const isCurrentFocus = isFocused && value.length === index;\n const isFilled = char.length > 0;\n const isLastCellWhenFull = isFocused && value.length === length && index === length - 1;\n const hasFocusBorder = isCurrentFocus || isLastCellWhenFull;\n\n return (\n \n );\n })}\n \n \n );\n}\n\nfunction OTPCell({\n char,\n isFocused,\n isFilled,\n showCursor,\n mask,\n reduceMotion,\n}: {\n char: string;\n isFocused: boolean;\n isFilled: boolean;\n showCursor: boolean;\n mask: boolean;\n reduceMotion: boolean;\n}) {\n const { otpInput } = useComponentTokens();\n const scale = useSharedValue(1);\n const cursorOpacity = useSharedValue(1);\n\n useEffect(() => {\n if (showCursor && !reduceMotion) {\n cursorOpacity.value = withRepeat(\n withSequence(withTiming(0, { duration: 500 }), withTiming(1, { duration: 500 })),\n -1,\n false,\n );\n } else {\n cancelAnimation(cursorOpacity);\n cursorOpacity.value = 1;\n }\n return () => cancelAnimation(cursorOpacity);\n }, [showCursor, reduceMotion]);\n\n useEffect(() => {\n if (isFocused) {\n scale.value = withSequence(\n withTiming(1.1, { duration: 150 }),\n withTiming(1, { duration: 150 })\n );\n } else if (isFilled) {\n scale.value = withSpring(1, { damping: 10, stiffness: 200 });\n } else {\n scale.value = withTiming(1, { duration: 150 });\n }\n }, [isFocused, isFilled]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const cursorStyle = useAnimatedStyle(() => ({\n opacity: cursorOpacity.value,\n }));\n\n const borderColor = isFocused\n ? otpInput.cell.focused.borderColor\n : isFilled\n ? otpInput.cell.filled.borderColor\n : otpInput.cell.borderColor;\n\n const backgroundColor = isFilled ? otpInput.cell.filled.backgroundColor : otpInput.cell.backgroundColor;\n\n const borderWidth = isFocused ? Math.max(otpInput.cell.borderWidth * 1.5, 2) : otpInput.cell.borderWidth;\n\n const displayChar = isFilled && mask ? \"\\u2022\" : char;\n\n return (\n \n {showCursor ? (\n \n ) : (\n \n {displayChar}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { usePagination, type PaginationItem, useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface PaginationProps {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n variant?: \"text\" | \"outlined\";\n shape?: \"circular\" | \"rounded\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Pagination({\n count,\n page,\n defaultPage,\n onChange,\n variant = \"text\",\n shape = \"rounded\",\n size = \"md\",\n}: PaginationProps) {\n const tokens = useTokens();\n const { pagination } = useComponentTokens();\n const { page: current, setPage, items } = usePagination({ count, page, defaultPage, onChange });\n\n const s = pagination.size[size];\n\n const renderItem = (item: PaginationItem, idx: number) => {\n if (typeof item !== \"number\") {\n return (\n \n ...\n \n );\n }\n\n const selected = item === current;\n const itemTokens = selected ? pagination.item.active : pagination.item.default;\n\n return (\n setPage(item)}\n accessibilityRole=\"button\"\n accessibilityLabel={`Page ${item}`}\n accessibilityState={{ selected }}\n style={{\n height: s,\n minWidth: s,\n paddingHorizontal: 8,\n borderRadius: shape === \"circular\" ? s / 2 : tokens.radius.md,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: itemTokens.bg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: itemTokens.borderColor,\n }}\n >\n \n {item}\n \n \n );\n };\n\n return (\n \n {items.map(renderItem)}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface PaperProps {\n children?: React.ReactNode;\n variant?: \"elevation\" | \"outlined\" | \"flat\";\n elevation?: \"none\" | \"sm\" | \"md\" | \"lg\";\n square?: boolean;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Paper({\n children,\n variant = \"elevation\",\n elevation = \"sm\",\n square = false,\n style,\n}: PaperProps) {\n const { paper } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n {children}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopoverOriginVertical = \"top\" | \"center\" | \"bottom\" | number;\nexport type PopoverOriginHorizontal = \"left\" | \"center\" | \"right\" | number;\n\nexport interface PopoverOrigin {\n vertical: PopoverOriginVertical;\n horizontal: PopoverOriginHorizontal;\n}\n\nexport interface PopoverProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n anchorPosition?: { top: number; left: number };\n onClose?: () => void;\n anchorOrigin?: PopoverOrigin;\n transformOrigin?: PopoverOrigin;\n elevation?: number;\n PaperProps?: { style?: object };\n marginThreshold?: number;\n children?: React.ReactNode;\n}\n\nconst defaultOrigin: PopoverOrigin = { vertical: \"bottom\", horizontal: \"left\" };\nconst defaultTransform: PopoverOrigin = { vertical: \"top\", horizontal: \"left\" };\n\nfunction resolveOrigin(value: PopoverOriginVertical | PopoverOriginHorizontal, size: number) {\n if (typeof value === \"number\") return value;\n if (value === \"center\") return size / 2;\n if (value === \"bottom\" || value === \"right\") return size;\n return 0;\n}\n\nexport function Popover({\n open,\n anchorEl,\n anchorPosition,\n onClose,\n anchorOrigin = defaultOrigin,\n transformOrigin = defaultTransform,\n PaperProps,\n marginThreshold = 12,\n children,\n}: PopoverProps) {\n const { popover } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const anchorX = anchorPosition?.left ?? anchorRect.x;\n const anchorY = anchorPosition?.top ?? anchorRect.y;\n const anchorWidth = anchorRect.width ?? 0;\n const anchorHeight = anchorRect.height ?? 0;\n\n const anchorOffsetX = resolveOrigin(anchorOrigin.horizontal, anchorWidth);\n const anchorOffsetY = resolveOrigin(anchorOrigin.vertical, anchorHeight);\n const transformOffsetX = resolveOrigin(transformOrigin.horizontal, contentSize.width);\n const transformOffsetY = resolveOrigin(transformOrigin.vertical, contentSize.height);\n\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n let left = anchorX + anchorOffsetX - transformOffsetX;\n let top = anchorY + anchorOffsetY - transformOffsetY;\n\n left = Math.max(marginThreshold, Math.min(left, screenWidth - contentSize.width - marginThreshold));\n top = Math.max(marginThreshold, Math.min(top, screenHeight - contentSize.height - marginThreshold));\n\n return { left, top };\n }, [anchorX, anchorY, anchorOffsetX, anchorOffsetY, transformOffsetX, transformOffsetY, contentSize, screenWidth, screenHeight, marginThreshold]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n paper: {\n position: \"absolute\",\n borderRadius: 12,\n borderWidth: 1,\n padding: 12,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopperPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport interface PopperProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n placement?: PopperPlacement;\n disablePortal?: boolean;\n transition?: boolean;\n keepMounted?: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\nfunction resolvePlacement(\n placement: PopperPlacement,\n anchor: { x: number; y: number; width: number; height: number },\n content: { width: number; height: number }\n) {\n const baseX = anchor.x;\n const baseY = anchor.y;\n\n const centerX = baseX + anchor.width / 2 - content.width / 2;\n const centerY = baseY + anchor.height / 2 - content.height / 2;\n const leftX = baseX;\n const rightX = baseX + anchor.width - content.width;\n const topY = baseY - content.height;\n const bottomY = baseY + anchor.height;\n\n switch (placement) {\n case \"top\":\n return { left: centerX, top: topY };\n case \"top-start\":\n return { left: leftX, top: topY };\n case \"top-end\":\n return { left: rightX, top: topY };\n case \"bottom\":\n return { left: centerX, top: bottomY };\n case \"bottom-start\":\n return { left: leftX, top: bottomY };\n case \"bottom-end\":\n return { left: rightX, top: bottomY };\n case \"left\":\n return { left: baseX - content.width, top: centerY };\n case \"left-start\":\n return { left: baseX - content.width, top: baseY };\n case \"left-end\":\n return { left: baseX - content.width, top: baseY + anchor.height - content.height };\n case \"right\":\n return { left: baseX + anchor.width, top: centerY };\n case \"right-start\":\n return { left: baseX + anchor.width, top: baseY };\n case \"right-end\":\n return { left: baseX + anchor.width, top: baseY + anchor.height - content.height };\n default:\n return { left: centerX, top: bottomY };\n }\n}\n\nexport function Popper({\n open,\n anchorEl,\n placement = \"bottom\",\n keepMounted = false,\n onClose,\n children,\n}: PopperProps) {\n const { popper } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open && !keepMounted) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n const pos = resolvePlacement(placement, {\n x: anchorRect.x,\n y: anchorRect.y,\n width: anchorRect.width ?? 0,\n height: anchorRect.height ?? 0,\n }, contentSize);\n\n const left = Math.max(8, Math.min(pos.left, screenWidth - contentSize.width - 8));\n const top = Math.max(8, Math.min(pos.top, screenHeight - contentSize.height - 8));\n return { left, top };\n }, [placement, anchorRect, contentSize, screenWidth, screenHeight]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n }\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n popper: {\n position: \"absolute\",\n borderRadius: 10,\n borderWidth: 1,\n padding: 10,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UsePressableOptions } from \"@truongdq01/headless\";\n\nexport interface PressableProps extends UsePressableOptions {\n children: React.ReactNode | ((state: { isPressed: boolean }) => React.ReactNode);\n style?: object | object[];\n}\n\nexport function Pressable({ children, style, testID, ...hookOptions }: PressableProps) {\n const { pressable } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps, isPressed } = usePressable({\n ...hookOptions,\n testID,\n });\n\n return (\n \n \n {typeof children === \"function\" ? children({ isPressed }) : children}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useRadioGroup, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseRadioGroupOptions } from \"@truongdq01/headless\";\n\n// ─── RadioItem ────────────────────────────────────────────────────\n\nexport interface RadioItemProps {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n isSelected: boolean;\n onPress: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioItem({\n label,\n description,\n disabled = false,\n isSelected,\n onPress,\n size = \"md\",\n}: RadioItemProps) {\n const tokens = useTokens();\n const { radio } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const outerSize = radio.container[size];\n const innerSize = radio.dot[size];\n const snappySpring = spring.snappy;\n\n const scale = useSharedValue(isSelected ? 1 : 0);\n const ringFill = useSharedValue(isSelected ? 1 : 0);\n\n React.useEffect(() => {\n const target = isSelected ? 1 : 0;\n scale.value = reduceMotion ? target : withSpring(target, snappySpring);\n ringFill.value = reduceMotion ? target : withSpring(target, snappySpring);\n }, [isSelected, snappySpring, reduceMotion, scale, ringFill]);\n\n const dotStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n opacity: scale.value,\n }));\n\n const outerRingStyle = useAnimatedStyle(() => ({\n borderWidth: interpolate(ringFill.value, [0, 1], [outerSize.borderWidth, 0]),\n borderColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.borderOff, \"transparent\"]),\n backgroundColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.bgOff, radio.colors.borderOn]),\n }));\n\n const handlePress = () => {\n if (!isSelected && !reduceMotion) {\n scale.value = withSpring(0.6, { damping: 12, stiffness: 200 }, () => {\n \"worklet\";\n scale.value = withSpring(1, snappySpring);\n });\n }\n onPress();\n };\n\n return (\n \n {/* Outer ring */}\n \n {/* Inner dot */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}\n\n// ─── RadioGroup ───────────────────────────────────────────────────\n\nexport interface RadioOption {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends UseRadioGroupOptions {\n options: RadioOption[];\n label?: string;\n direction?: \"vertical\" | \"horizontal\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioGroup({\n options,\n label,\n direction = \"vertical\",\n size = \"md\",\n ...hookOptions\n}: RadioGroupProps) {\n const tokens = useTokens();\n const { isSelected, getItemProps } = useRadioGroup(hookOptions);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n {options.map((option) => {\n const itemProps = getItemProps(option.value, option.disabled);\n return (\n \n );\n })}\n \n \n );\n}","import React, { memo, useCallback } from \"react\";\nimport {\n View,\n Pressable,\n Text,\n AccessibilityInfo,\n type AccessibilityActionEvent,\n} from \"react-native\";\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring } from \"react-native-reanimated\";\nimport { spring } from \"@truongdq01/tokens\";\nimport { useRating, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nconst DEFAULT_ICON_NAMES = {\n filled: \"star\" as const,\n empty: \"star\" as const,\n half: \"starHalf\" as const,\n};\n\nfunction clamp(n: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, n));\n}\n\n/** State of a single star slot */\nexport type RatingStarState = \"filled\" | \"half\" | \"empty\";\n\n/**\n * Star row item: press feedback uses Reanimated; stars are not separate a11y nodes.\n * Consumers should pass a stable `onChange` (e.g. `useCallback`) so `Rating` memo stays effective.\n */\nexport interface RatingProps {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n readOnly?: boolean;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n onChange?: (value: number) => void;\n /** When true, show numeric value next to stars (e.g. `3/5`). */\n showValue?: boolean;\n /** Where `showValue` sits relative to the star row. Default `end`. */\n valuePosition?: \"start\" | \"end\";\n /** Tighter gap between stars (uses `rating.containerCompact`). */\n compact?: boolean;\n /**\n * Icons for filled / empty / half. Empty uses the same glyph as `filled` with empty token color\n * when both default to `star`.\n */\n iconNames?: { filled: IconName; empty: IconName; half: IconName };\n /**\n * Fully custom icon renderer. Overrides `iconNames` when provided.\n * Receives the star state, dp size, and theme color — return any React node (emoji, SVG, etc.).\n */\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n /** Number of ratings/reviews — shown as `★ 4.3 (128)` when combined with `showValue`. */\n ratingCount?: number;\n /**\n * Format function for the value label. Receives `(value, max, ratingCount?)`.\n * Default: `\"3/5\"` or `\"4.3 (128)\"` when `ratingCount` is provided.\n */\n formatLabel?: (value: number, max: number, ratingCount?: number) => string;\n}\n\ntype RatingStarButtonProps = {\n index: number;\n iconSize: number;\n iconName: IconName;\n iconColor: string;\n starState: RatingStarState;\n disabled: boolean;\n readOnly: boolean;\n reduceMotion: boolean;\n onPress: (index: number) => void;\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n};\n\nfunction RatingStarButton({\n index,\n iconSize,\n iconName,\n iconColor,\n starState,\n disabled,\n readOnly,\n reduceMotion,\n onPress,\n renderIcon,\n}: RatingStarButtonProps) {\n const scale = useSharedValue(1);\n const animStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const handlePressIn = () => {\n if (disabled || readOnly || reduceMotion) return;\n scale.value = withSpring(1.12, spring.snappy);\n };\n\n const handlePressOut = () => {\n if (disabled || readOnly) return;\n if (reduceMotion) {\n scale.value = 1;\n return;\n }\n scale.value = withSpring(1, spring.snappy);\n };\n\n const iconContent = renderIcon\n ? renderIcon(starState, iconSize, iconColor)\n : {iconName};\n\n return (\n onPress(index)}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n style={{ opacity: disabled ? 0.5 : 1 }}\n >\n \n {iconContent}\n \n \n );\n}\n\nfunction RatingInner({\n value,\n defaultValue,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = \"md\",\n onChange,\n showValue = false,\n valuePosition = \"end\",\n compact = false,\n iconNames: iconNamesProp,\n renderIcon,\n ratingCount,\n formatLabel,\n}: RatingProps) {\n const { rating } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const icons = { ...DEFAULT_ICON_NAMES, ...iconNamesProp };\n\n const { value: ratingValue, setValue, precision: effectivePrecision } = useRating({\n value,\n defaultValue,\n max,\n precision,\n readOnly,\n disabled,\n onChange,\n });\n\n const iconSize = rating.size[size];\n const activeColor = rating.star.filled.color;\n const inactiveColor = rating.star.empty.color;\n const halfColor = rating.star.half.color;\n\n const announceValue = useCallback(\n (next: number) => {\n // TODO i18n — fixed English for library default\n const announce = AccessibilityInfo.announceForAccessibility;\n if (typeof announce === \"function\") {\n announce(`${next} out of ${max} stars`);\n }\n },\n [max]\n );\n\n const handlePress = (index: number) => {\n if (disabled || readOnly) return;\n const tapTarget = index + 1;\n const snapped = Math.round(tapTarget / effectivePrecision) * effectivePrecision;\n const newVal = ratingValue === snapped ? 0 : snapped;\n setValue(newVal);\n announceValue(newVal);\n };\n\n const applyAccessibilityStep = (delta: 1 | -1) => {\n if (disabled || readOnly) return;\n const raw = ratingValue + delta * effectivePrecision;\n const snapped = Math.round(raw / effectivePrecision) * effectivePrecision;\n const next = clamp(snapped, 0, max);\n if (next !== ratingValue) {\n setValue(next);\n announceValue(next);\n }\n };\n\n const onAccessibilityAction = (event: AccessibilityActionEvent) => {\n const name = event.nativeEvent.actionName;\n if (name === \"increment\") {\n applyAccessibilityStep(1);\n } else if (name === \"decrement\") {\n applyAccessibilityStep(-1);\n }\n };\n\n const interactive = !readOnly && !disabled;\n const rowStyle = compact ? rating.containerCompact : rating.container;\n\n const defaultFormatLabel = (v: number, m: number, count?: number) => {\n if (count != null) return `${v} (${count})`;\n return `${v}/${m}`;\n };\n const labelFormatter = formatLabel ?? defaultFormatLabel;\n const labelText = labelFormatter(ratingValue, max, ratingCount);\n\n const valueLabel = (\n \n {labelText}\n \n );\n\n const starsRow = (\n \n {Array.from({ length: max }).map((_, i) => {\n const starNumber = i + 1;\n const filled = ratingValue >= starNumber;\n const halfFilled =\n !filled && ratingValue >= starNumber - 0.5 && effectivePrecision <= 0.5;\n\n const starState: RatingStarState = halfFilled ? \"half\" : filled ? \"filled\" : \"empty\";\n let iconName: IconName = icons.empty;\n if (halfFilled) iconName = icons.half;\n else if (filled) iconName = icons.filled;\n const iconColor = halfFilled ? halfColor : filled ? activeColor : inactiveColor;\n\n return (\n \n );\n })}\n \n );\n\n if (!showValue) {\n return {starsRow};\n }\n\n return (\n \n {valuePosition === \"start\" ? valueLabel : null}\n {starsRow}\n {valuePosition === \"end\" ? valueLabel : null}\n \n );\n}\n\nexport const Rating = memo(RatingInner);\nRating.displayName = \"Rating\";\n","import React, { useState, useRef } from \"react\";\nimport { View, Pressable, Text, type LayoutChangeEvent } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useSegmentedControl } from \"@truongdq01/headless\";\nconst TRACK_PADDING = 2;\n\n/** Critically damped — fast, no overshoot (replaces snappy spring for segment indicator). */\nconst INDICATOR_SPRING = { damping: 28, stiffness: 300, mass: 0.8 };\n\nexport type SegmentedControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption = string | { label: string; icon?: React.ReactNode };\n\nexport interface SegmentedControlProps {\n options: SegmentedOption[];\n selectedIndex: number;\n onChange: (index: number) => void;\n /** sm = 32, md = 36, lg = 44. Overridden by explicit `height`. */\n size?: SegmentedControlSize;\n /** Explicit height (overrides size). */\n height?: number;\n disabled?: boolean;\n}\n\nconst SIZE_HEIGHT: Record = { sm: 32, md: 36, lg: 44 };\nconst SIZE_FONT: Record = { sm: \"xs\", md: \"sm\", lg: \"md\" };\n\nfunction getLabel(opt: SegmentedOption): string {\n return typeof opt === \"string\" ? opt : opt.label;\n}\n\nfunction getIcon(opt: SegmentedOption): React.ReactNode | undefined {\n return typeof opt === \"string\" ? undefined : opt.icon;\n}\n\nexport function SegmentedControl({\n options,\n selectedIndex,\n onChange,\n size = \"md\",\n height: heightProp,\n disabled = false,\n}: SegmentedControlProps) {\n const tokens = useTokens();\n const { segmentedControl } = useComponentTokens();\n const { isSelected, setSelectedIndex, getTabProps } = useSegmentedControl({\n value: selectedIndex,\n onChange: (val) => onChange(val as number),\n disabled,\n });\n\n const resolvedHeight = heightProp ?? SIZE_HEIGHT[size];\n const fontKey = SIZE_FONT[size];\n\n const [containerWidth, setContainerWidth] = useState(0);\n const [layoutReady, setLayoutReady] = useState(false);\n\n const innerWidth = Math.max(0, containerWidth - TRACK_PADDING * 2);\n const segmentWidth = options.length > 0 ? innerWidth / options.length : 0;\n const translateX = useSharedValue(0);\n const indicatorWidth = useSharedValue(0);\n const didInitialLayout = useRef(false);\n\n React.useEffect(() => {\n if (segmentWidth <= 0) return;\n const target = selectedIndex * segmentWidth;\n if (!didInitialLayout.current) {\n didInitialLayout.current = true;\n translateX.value = target;\n indicatorWidth.value = segmentWidth;\n return;\n }\n translateX.value = withSpring(target, INDICATOR_SPRING);\n indicatorWidth.value = withSpring(segmentWidth, INDICATOR_SPRING);\n }, [selectedIndex, segmentWidth, translateX, indicatorWidth]);\n\n const onLayout = (e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n setContainerWidth(w);\n if (w > 0) setLayoutReady(true);\n };\n\n const indicatorStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n width: indicatorWidth.value,\n }));\n\n const showIndicator = layoutReady && segmentWidth > 0;\n\n return (\n \n {showIndicator && (\n \n )}\n\n {options.map((option, index) => {\n const selected = isSelected(index as any);\n const label = getLabel(option);\n const icon = getIcon(option);\n return (\n \n {icon}\n \n {label}\n \n \n );\n })}\n \n );\n}\n","import React, { useRef, useState, useMemo, useCallback } from \"react\";\nimport { View, Text, TextInput, Pressable, ActivityIndicator, FlatList } from \"react-native\";\nimport { useSelect, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { BottomSheet } from \"../BottomSheet/BottomSheet\";\nimport type { BottomSheetRef } from \"../BottomSheet/BottomSheet\";\nimport type { UseSelectOptions, SelectOption } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport { SkeletonListItem } from \"../Skeleton\";\n\nexport interface SelectProps extends UseSelectOptions {\n label?: string;\n placeholder?: string;\n searchable?: boolean;\n error?: string;\n onClearError?: () => void;\n loading?: boolean;\n onLoadMore?: () => void;\n hasMore?: boolean;\n loadingMore?: boolean;\n renderOption?: (\n option: SelectOption,\n ctx: { selected: boolean }\n ) => React.ReactNode;\n}\n\nexport function Select({\n label,\n placeholder = \"Select…\",\n searchable = false,\n error,\n onClearError,\n loading = false,\n onLoadMore,\n hasMore = false,\n loadingMore = false,\n renderOption,\n options,\n ...hookOptions\n}: SelectProps) {\n const { select } = useComponentTokens();\n const tokens = useTokens();\n const sheetRef = useRef(null);\n const [query, setQuery] = useState(\"\");\n const endReachBusy = useRef(false);\n const a11yLabel = label ?? \"Select\";\n // FlashList is an optional native dependency. Fall back to FlatList when it's not installed.\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n const {\n isOpen,\n open,\n close,\n selectOption,\n isSelected,\n displayLabel,\n } = useSelect({ options, ...hookOptions, placeholder });\n\n const hasSelection = displayLabel !== placeholder;\n\n const filtered = useMemo(() => {\n if (!query) return options;\n const lowerQuery = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(lowerQuery));\n }, [options, query]);\n\n const handleClose = useCallback(() => {\n sheetRef.current?.close();\n close();\n }, [close]);\n\n const handleOpen = useCallback(() => {\n setQuery(\"\");\n sheetRef.current?.open();\n open();\n }, [open]);\n\n const handleSelect = useCallback(\n (val: T) => {\n selectOption(val);\n onClearError?.();\n if (!hookOptions.multiple) handleClose();\n },\n [selectOption, onClearError, hookOptions.multiple, handleClose]\n );\n\n const onEndReached = useCallback(() => {\n if (!onLoadMore || !hasMore || loading || loadingMore || endReachBusy.current) return;\n endReachBusy.current = true;\n onLoadMore();\n }, [onLoadMore, hasMore, loading, loadingMore]);\n\n React.useEffect(() => {\n if (!loadingMore) endReachBusy.current = false;\n }, [loadingMore]);\n\n const renderItem = useCallback(\n ({ item: option }: { item: SelectOption }) => {\n const selected = isSelected(option.value);\n if (renderOption) {\n return (\n !option.disabled && handleSelect(option.value)}\n style={{ opacity: option.disabled ? 0.4 : 1 }}\n >\n {renderOption(option, { selected })}\n \n );\n }\n return (\n !option.disabled && handleSelect(option.value)}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderRadius: tokens.radius.md,\n backgroundColor: selected ? select.option.selected.bg : tokens.color.surface.default,\n opacity: option.disabled ? 0.4 : 1,\n }}\n >\n \n {option.label}\n \n {selected && }\n \n );\n },\n [isSelected, renderOption, select.option, tokens, handleSelect]\n );\n\n const listEmpty = useMemo(() => {\n if (loading && options.length === 0) {\n return (\n \n \n \n \n \n );\n }\n if (filtered.length === 0) {\n const emptyMsg = loading\n ? \"Loading…\"\n : query\n ? `No results for \"${query}\"`\n : \"No options\";\n return (\n \n {emptyMsg}\n \n );\n }\n return null;\n }, [loading, options.length, filtered.length, query, tokens]);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n \n {displayLabel}\n \n \n {isOpen ? \"chevronUp\" : \"chevronDown\"}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n 6 ? [\"70%\"] : [\"40%\"]}\n onClose={close}\n enableBackdrop\n enableDismissOnSwipe\n >\n \n {searchable && isOpen && (\n \n \n \n \n \n {query.length > 0 && (\n setQuery(\"\")} hitSlop={8}>\n \n \n )}\n \n )}\n\n {filtered.length === 0 ? (\n {listEmpty}\n ) : (\n ) => String(item.value)}\n onEndReached={onEndReached}\n onEndReachedThreshold={0.35}\n ItemSeparatorComponent={() => (\n \n )}\n ListFooterComponent={\n loadingMore ? (\n \n \n \n ) : (\n \n )\n }\n // FlashList-only optimization; harmless for FlatList (ignored)\n estimatedItemSize={48}\n />\n )}\n \n \n \n );\n}\n","import React, { createContext, useContext, useEffect, useState, Children, isValidElement, cloneElement } from \"react\";\nimport { View } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withRepeat,\n withTiming,\n interpolate,\n cancelAnimation,\n type SharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIsDark } from \"@truongdq01/headless\";\n\n/**\n * Available shimmer animation directions\n */\nexport type SkeletonShimmerDirection = \"pulse\" | \"left-to-right\" | \"right-to-left\";\n\n// ─── Shared shimmer context ───────────────────────────────────────\nconst ShimmerCtx = createContext | null>(null);\n\n/**\n * Props for the ShimmerProvider component\n */\nexport interface ShimmerProviderProps {\n children: React.ReactNode;\n /** Animation duration per cycle (ms) */\n duration?: number;\n}\n\n/**\n * Provider component that shares shimmer animation across child skeletons.\n * Improves performance by using a single shared animation value.\n *\n * @param props - Shimmer provider configuration\n * @returns Context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * \n * ```\n */\nexport function ShimmerProvider({ children, duration = 1200 }: ShimmerProviderProps) {\n const shimmer = useSharedValue(0);\n useEffect(() => {\n shimmer.value = withRepeat(withTiming(1, { duration }), -1, true);\n return () => cancelAnimation(shimmer);\n }, [duration]);\n return {children};\n}\n\nfunction useShimmerValue(animate: boolean, delayMs: number): SharedValue {\n const shared = useContext(ShimmerCtx);\n const local = useSharedValue(0);\n\n useEffect(() => {\n if (shared || !animate) {\n cancelAnimation(local);\n local.value = 0;\n return;\n }\n const start = () => {\n local.value = withRepeat(withTiming(1, { duration: 1200 }), -1, true);\n };\n if (delayMs > 0) {\n const t = setTimeout(start, delayMs);\n return () => { clearTimeout(t); cancelAnimation(local); };\n }\n start();\n return () => cancelAnimation(local);\n }, [animate, delayMs, !!shared]);\n\n return shared ?? local;\n}\n\n// ─── Base Skeleton ────────────────────────────────────────────────\n\nexport interface SkeletonProps {\n width?: number | `${number}%`;\n height?: number;\n borderRadius?: number;\n /** Disable shimmer animation */\n animate?: boolean;\n /** Stagger start — used by `SkeletonGroup` */\n delayMs?: number;\n /** Shimmer style — default `pulse` (opacity); LTR/RTL sweep uses translateX */\n shimmerDirection?: SkeletonShimmerDirection;\n}\n\nexport function Skeleton({\n width = \"100%\",\n height = 16,\n borderRadius,\n animate = true,\n delayMs = 0,\n shimmerDirection = \"pulse\",\n}: SkeletonProps) {\n const { skeleton } = useComponentTokens();\n const isDark = useIsDark();\n const shimmer = useShimmerValue(animate, delayMs);\n const [layoutW, setLayoutW] = useState(0);\n\n const sweepHighlight = isDark ? \"rgba(255,255,255,0.12)\" : \"rgba(255,255,255,0.45)\";\n\n const pulseStyle = useAnimatedStyle(() => ({\n opacity: interpolate(shimmer.value, [0, 1], [skeleton.opacity.start, skeleton.opacity.end]),\n }));\n\n const sweepStyle = useAnimatedStyle(() => {\n const w = Math.max(layoutW, 1);\n const sweep = w * 0.35;\n const t = shimmerDirection === \"right-to-left\" ? 1 - shimmer.value : shimmer.value;\n return {\n transform: [{ translateX: interpolate(t, [0, 1], [-sweep, w]) }],\n opacity: 0.45,\n };\n });\n\n const isSweep = shimmerDirection === \"left-to-right\" || shimmerDirection === \"right-to-left\";\n\n return (\n setLayoutW(e.nativeEvent.layout.width)}\n >\n {animate && isSweep && (\n \n )}\n \n );\n}\n\n// ─── SkeletonGroup — stagger children that accept `delayMs` ───────\n\nexport interface SkeletonGroupProps {\n children: React.ReactNode;\n /** Delay between each child (ms) */\n stagger?: number;\n}\n\nexport function SkeletonGroup({ stagger = 80, children }: SkeletonGroupProps) {\n return (\n <>\n {Children.map(children, (child, i) => {\n if (!isValidElement(child)) return child;\n return cloneElement(child as React.ReactElement<{ delayMs?: number }>, {\n delayMs: i * stagger,\n });\n })}\n \n );\n}\n\n// ─── Presets ──────────────────────────────────────────────────────\n\nexport const SkeletonText = React.memo(function SkeletonText({\n lines = 3,\n lastLineWidth = \"60%\",\n shimmerDirection = \"pulse\",\n}: {\n lines?: number;\n lastLineWidth?: `${number}%`;\n shimmerDirection?: SkeletonShimmerDirection;\n}) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: lines }).map((_, i) => (\n \n ))}\n \n );\n});\n\nexport const SkeletonCard = React.memo(function SkeletonCard() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n});\n\nexport const SkeletonListItem = React.memo(function SkeletonListItem() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n );\n});\n\n/** Avatar + two text lines — profile card placeholder */\nexport const SkeletonProfile = React.memo(function SkeletonProfile() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** 16:9 block + title lines */\nexport const SkeletonMedia = React.memo(function SkeletonMedia() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** Repeated label + field rows */\nexport const SkeletonForm = React.memo(function SkeletonForm({ rows = 4 }: { rows?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: rows }).map((_, i) => (\n \n \n \n \n ))}\n \n );\n});\n\n/** N×M grid of squares */\nexport const SkeletonGrid = React.memo(function SkeletonGrid({ columns = 3, rows = 2, cell = 48 }: { columns?: number; rows?: number; cell?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: columns * rows }).map((_, i) => (\n \n ))}\n \n );\n});\n\n/** Header row + data rows */\nexport const SkeletonTable = React.memo(function SkeletonTable({ columns = 4, dataRows = 3 }: { columns?: number; dataRows?: number }) {\n const tokens = useTokens();\n return (\n \n \n {Array.from({ length: columns }).map((_, i) => (\n \n ))}\n \n {Array.from({ length: dataRows }).map((_, r) => (\n \n {Array.from({ length: columns }).map((_, c) => (\n \n ))}\n \n ))}\n \n );\n});\n","import React, { useMemo } from \"react\";\nimport { View, Text, TextInput, type TextStyle } from \"react-native\";\nimport Animated, { useAnimatedProps } from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSlider, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type {\n UseSliderOptions,\n UseSliderOptionsRange,\n UseSliderOptionsSingle,\n UseSliderReturnRange,\n UseSliderReturnSingle,\n} from \"@truongdq01/headless\";\n\ntype SliderUiProps = {\n label?: string;\n /** Show current value (single) or \"lo – hi\" (range) */\n showValue?: boolean;\n formatValue?: (v: number) => string;\n /** Min / max labels under the track */\n showMinMaxLabels?: boolean;\n showMarks?: boolean;\n /** Vertical track height when `orientation=\"vertical\"` */\n sliderHeight?: number;\n /** Replace default thumb circle */\n thumbRenderer?: (args: {\n kind: \"single\" | \"low\" | \"high\";\n value: number;\n }) => React.ReactNode;\n};\n\nexport type SliderProps =\n | (SliderUiProps & UseSliderOptionsSingle)\n | (SliderUiProps & UseSliderOptionsRange);\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\n/** Worklet snap (mirrors headless `snapRatioWorklet` for live labels). */\nfunction snapSliderValueWorklet(raw: number, minV: number, maxV: number, stepV: number): number {\n \"worklet\";\n if (stepV === 0 || maxV === minV) return Math.max(minV, Math.min(maxV, raw));\n const snapped = Math.round((raw - minV) / stepV) * stepV + minV;\n return Math.max(minV, Math.min(maxV, snapped));\n}\n\ntype LiveValueStyle = Pick;\n\nfunction SliderLiveSingleValue(props: {\n show: boolean;\n thumbRatioShared: UseSliderReturnSingle[\"thumbRatioShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const raw = thumbRatioShared.value * (max - min) + min;\n const s = snapSliderValueWorklet(raw, min, max, step);\n return { text: String(s) };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nfunction SliderLiveRangeValue(props: {\n show: boolean;\n thumbRatioLowShared: UseSliderReturnRange[\"thumbRatioLowShared\"];\n thumbRatioHighShared: UseSliderReturnRange[\"thumbRatioHighShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioLowShared, thumbRatioHighShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const rawLo = thumbRatioLowShared.value * (max - min) + min;\n const rawHi = thumbRatioHighShared.value * (max - min) + min;\n const lo = snapSliderValueWorklet(rawLo, min, max, step);\n const hi = snapSliderValueWorklet(rawHi, min, max, step);\n return { text: `${lo} – ${hi}` };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nexport function Slider({\n label,\n showValue = false,\n formatValue = (v: number) => String(v),\n showMinMaxLabels = false,\n showMarks = false,\n sliderHeight = 150,\n thumbRenderer,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n range = false,\n ...rest\n}: SliderProps) {\n const tokens = useTokens();\n const { slider } = useComponentTokens();\n const isVertical = orientation === \"vertical\";\n\n const sliderState = useSlider({\n min,\n max,\n step,\n orientation,\n range,\n ...rest,\n } as UseSliderOptions);\n\n const showRangeLabels = showMinMaxLabels;\n\n const marks =\n showMarks && step > 0\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => i * step + min)\n : [];\n\n const liveValueStyle = useMemo(\n (): LiveValueStyle => ({\n fontSize: tokens.fontSize.sm,\n fontWeight: tokens.fontWeight.semibold,\n color: tokens.color.brand.default,\n }),\n [tokens.color.brand.default, tokens.fontSize.sm, tokens.fontWeight.semibold]\n );\n\n const trackThickness = slider.track.height;\n const thumbW = slider.thumb.width;\n const thumbH = slider.thumb.height;\n\n // Match Meta's minimum comfortable hit target (48dp) while keeping the visual thumb smaller.\n const minHitSize = 48;\n const trackPad = Math.max(12, (minHitSize - thumbH) / 2);\n\n const thumbShellStyle = useMemo(() => {\n const chrome = thumbRenderer\n ? {\n backgroundColor: \"transparent\" as const,\n borderWidth: 0,\n borderColor: \"transparent\" as const,\n elevation: 0,\n shadowOpacity: 0,\n shadowRadius: 0,\n shadowOffset: { width: 0, height: 0 } as const,\n shadowColor: \"transparent\" as const,\n }\n : {\n backgroundColor: slider.thumb.bg,\n borderWidth: slider.thumb.borderWidth,\n borderColor: slider.thumb.borderColor,\n shadowColor: slider.thumb.shadowColor,\n shadowOffset: slider.thumb.shadowOffset,\n shadowOpacity: slider.thumb.shadowOpacity,\n shadowRadius: slider.thumb.shadowRadius,\n elevation: slider.thumb.elevation,\n };\n return {\n position: \"absolute\" as const,\n width: thumbW,\n height: thumbH,\n borderRadius: slider.thumb.borderRadius,\n ...chrome,\n ...(isVertical\n ? { left: \"50%\" as const, marginLeft: -thumbW / 2, top: (-thumbH / 2) as number }\n : { left: (-thumbW / 2) as number, top: undefined as undefined }),\n };\n }, [\n thumbRenderer,\n isVertical,\n thumbW,\n thumbH,\n slider.thumb,\n ]);\n\n function renderThumb(\n animatedStyle: object,\n kind: \"single\" | \"low\" | \"high\",\n value: number\n ) {\n const custom = thumbRenderer?.({ kind, value });\n return (\n \n {custom ?? null}\n \n );\n }\n\n if (sliderState.mode === \"range\") {\n const {\n currentValue,\n thumbRatioLowShared,\n thumbRatioHighShared,\n thumbLowAnimatedStyle,\n thumbHighAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGestureLow,\n panGestureHigh,\n onTrackLayout,\n } = sliderState;\n const [lo, hi] = currentValue;\n const d = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= hi && mark >= lo;\n return (\n \n );\n })}\n\n \n {renderThumb(thumbLowAnimatedStyle, \"low\", lo)}\n \n \n {renderThumb(thumbHighAnimatedStyle, \"high\", hi)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n }\n\n const {\n currentValue,\n thumbRatioShared,\n thumbAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGesture,\n onTrackLayout,\n } = sliderState as UseSliderReturnSingle;\n const disabled = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= currentValue;\n return (\n \n );\n })}\n\n {renderThumb(thumbAnimatedStyle, \"single\", currentValue)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n}\n","import React, { useEffect, useMemo } from \"react\";\nimport { View, Text, Pressable, Modal, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface SnackbarProps {\n /** If true, the snackbar is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Duration in ms before auto-hiding. Use null to disable. */\n autoHideDuration?: number | null;\n /** Callback on close */\n onClose?: () => void;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Position on screen */\n anchorOrigin?: { vertical: \"top\" | \"bottom\"; horizontal: \"left\" | \"center\" | \"right\" };\n}\n\nexport function Snackbar({\n open,\n message,\n autoHideDuration = 4000,\n onClose,\n action,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n}: SnackbarProps) {\n const { snackbar } = useComponentTokens();\n const tokens = useTokens();\n const [mounted, setMounted] = React.useState(open);\n\n const isBottom = anchorOrigin.vertical === \"bottom\";\n const translateY = useSharedValue(isBottom ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = () => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300, mass: 1 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n };\n\n const animateOut = (onDone: () => void) => {\n translateY.value = withTiming(isBottom ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n };\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = isBottom ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const verticalStyle = isBottom ? { bottom: 32 } : { top: 48 };\n const horizontalStyle = useMemo(() => {\n if (anchorOrigin.horizontal === \"center\") return { alignSelf: \"center\" as const };\n if (anchorOrigin.horizontal === \"left\") return { left: 16 };\n return { right: 16 };\n }, [anchorOrigin.horizontal]);\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as any,\n }));\n\n if (!mounted && !open) return null;\n\n return (\n \n \n \n {message}\n {action}\n {onClose && (\n \n \n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n },\n});\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useDisclosure, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Fab } from \"../Fab/Fab\";\n\nexport interface SpeedDialProps {\n ariaLabel: string;\n icon?: React.ReactNode;\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n hidden?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SpeedDialActionProps {\n icon?: React.ReactNode;\n tooltipTitle?: string;\n onPress?: () => void;\n}\n\ninterface SpeedDialContextValue {\n isOpen: boolean;\n close: () => void;\n}\n\nconst SpeedDialContext = createContext(null);\n\nexport function SpeedDial({\n ariaLabel,\n icon,\n direction = \"up\",\n open: controlledOpen,\n onOpen,\n onClose,\n hidden = false,\n children,\n}: SpeedDialProps) {\n const { speedDial } = useComponentTokens();\n const disclosure = useDisclosure({ isOpen: controlledOpen, onOpen, onClose });\n const tokens = useTokens();\n\n if (hidden) return null;\n\n const stackStyle = {\n flexDirection: (direction === \"left\" || direction === \"right\" ? \"row\" : \"column\") as \"row\" | \"column\",\n alignItems: \"center\" as const,\n gap: tokens.spacing[3],\n };\n\n const ctxValue = useMemo(() => ({ isOpen: disclosure.isOpen, close: disclosure.close }), [disclosure.isOpen, disclosure.close]);\n\n return (\n \n \n {disclosure.isOpen && children}\n \n \n \n );\n}\n\nexport function SpeedDialAction({ icon, tooltipTitle, onPress }: SpeedDialActionProps) {\n const { speedDial } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(SpeedDialContext);\n if (!ctx?.isOpen) return null;\n\n return (\n {\n onPress?.();\n ctx.close();\n }}\n style={speedDial.action as any}\n >\n \n {icon}\n \n {tooltipTitle && (\n \n {tooltipTitle}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface StackProps {\n children?: React.ReactNode;\n direction?: \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n spacing?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n divider?: React.ReactNode;\n alignItems?: ViewStyle[\"alignItems\"];\n justifyContent?: ViewStyle[\"justifyContent\"];\n flexWrap?: ViewStyle[\"flexWrap\"];\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Stack({\n children,\n direction = \"column\",\n spacing = \"sm\",\n divider,\n alignItems,\n justifyContent,\n flexWrap,\n style,\n}: StackProps) {\n const { stack } = useComponentTokens();\n const gap = typeof spacing === \"number\" ? spacing : stack.gap[spacing];\n\n const items = React.Children.toArray(children);\n const content = divider\n ? items.flatMap((child, idx) => (idx === 0 ? [child] : [divider, child]))\n : items;\n\n return (\n \n {content}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface StepperProps {\n activeStep?: number;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface StepProps {\n index: number;\n label?: string;\n children?: React.ReactNode;\n}\n\nexport interface StepLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function Stepper({ activeStep = 0, orientation = \"horizontal\", children }: StepperProps) {\n const { stepper } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child) => {\n if (!React.isValidElement<{ activeStep?: number; orientation?: \"horizontal\" | \"vertical\" }>(child)) return child;\n return React.cloneElement(child, { activeStep, orientation });\n })}\n \n );\n}\n\ninterface StepInternalProps extends StepProps {\n activeStep: number;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nexport function Step({ index, label, children, activeStep = 0, orientation = \"horizontal\" }: Partial & StepProps) {\n const { stepper } = useComponentTokens();\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n\n const color = isCompleted\n ? stepper.step.completed.color\n : isActive\n ? stepper.step.active.color\n : stepper.step.pending.color;\n\n return (\n \n \n {isCompleted ? (\n \n ) : (\n \n {index + 1}\n \n )}\n \n {label && (\n \n {label}\n \n )}\n {children}\n \n );\n}\n\nexport function StepLabel({ children, style }: StepLabelProps) {\n const { stepper } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useSwitch, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseSwitchOptions } from \"@truongdq01/headless\";\n\nexport interface SwitchProps extends UseSwitchOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Switch = React.memo(({ label, description, size = \"md\", ...hookOptions }: SwitchProps) => {\n const tokens = useTokens();\n const { switch: switchT } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isOn, isDisabled, toggle, accessibilityProps } = useSwitch(hookOptions);\n\n const tTrack = switchT.track[size];\n const tThumb = switchT.thumb[size];\n const thumbTravel = Math.max(0, tTrack.width - tThumb.width - tTrack.padding * 2);\n\n // Shared value 0 = off, 1 = on\n const progress = useSharedValue(isOn ? 1 : 0);\n\n React.useEffect(() => {\n const target = isOn ? 1 : 0;\n progress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isOn, reduceMotion]);\n\n const trackStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n progress.value,\n [0, 1],\n [switchT.colors.trackOff, switchT.colors.trackOn]\n ),\n }));\n\n const thumbStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: progress.value * thumbTravel }],\n }));\n\n return (\n \n {/* Track */}\n \n {/* Thumb */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, ScrollView, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Button } from \"../Button/Button\";\nimport { Icon } from \"../Icon\";\n\n/**\n * Available table size variants\n */\nexport type TableSize = \"small\" | \"medium\";\n\n/**\n * Available table cell padding options\n */\nexport type TablePadding = \"normal\" | \"checkbox\" | \"none\";\n\n/**\n * Internal table context value\n */\ninterface TableContextValue {\n size: TableSize;\n padding: TablePadding;\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext(null);\n\nfunction useTableContext() {\n return useContext(TableContext);\n}\n\n/**\n * Props for the Table component\n */\nexport interface TableProps {\n children?: React.ReactNode;\n size?: TableSize;\n padding?: TablePadding;\n stickyHeader?: boolean;\n style?: object;\n}\n\n/**\n * Root table component that provides context for child table elements.\n * Implements Material Design table patterns with accessibility support.\n *\n * @param props - Table configuration props\n * @returns Table context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * Name\n * Email\n * \n * \n * \n * {data.map(row => (\n * \n * {row.name}\n * {row.email}\n * \n * ))}\n * \n *
\n * ```\n */\nexport function Table({\n children,\n size = \"medium\",\n padding = \"normal\",\n stickyHeader = false,\n style,\n}: TableProps) {\n const ctx = useMemo(() => ({ size, padding, stickyHeader }), [size, padding, stickyHeader]);\n return (\n \n {children}\n \n );\n}\n\nexport interface TableContainerProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function TableContainer({ children, style }: TableContainerProps) {\n const { table } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n\nexport function TableHead({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport function TableBody({ children }: { children?: React.ReactNode }) {\n return {children};\n}\n\nexport function TableFooter({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport interface TableRowProps {\n children?: React.ReactNode;\n selected?: boolean;\n style?: object;\n}\n\nexport function TableRow({ children, selected = false, style }: TableRowProps) {\n const { table } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\nexport interface TableCellProps {\n children?: React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n padding?: TablePadding;\n size?: TableSize;\n variant?: \"head\" | \"body\" | \"footer\";\n style?: object;\n}\n\nexport function TableCell({\n children,\n align = \"left\",\n padding,\n size,\n variant = \"body\",\n style,\n}: TableCellProps) {\n const { table } = useComponentTokens();\n const ctx = useTableContext();\n const tokens = useTokens();\n const resolvedPadding = padding ?? ctx?.padding ?? \"normal\";\n const resolvedSize = size ?? ctx?.size ?? \"medium\";\n\n const paddingX = {\n normal: tokens.spacing[4],\n checkbox: tokens.spacing[2],\n none: 0,\n }[resolvedPadding];\n\n const paddingY = resolvedSize === \"small\" ? tokens.spacing[2] : tokens.spacing[3];\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface TablePaginationProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange?: (page: number) => void;\n onRowsPerPageChange?: (rows: number) => void;\n labelRowsPerPage?: string;\n}\n\nexport function TablePagination({\n count,\n page,\n rowsPerPage,\n onPageChange,\n labelRowsPerPage = \"Rows per page\",\n}: TablePaginationProps) {\n const tokens = useTokens();\n const totalPages = Math.max(1, Math.ceil(count / rowsPerPage));\n\n return (\n \n \n {labelRowsPerPage}: {rowsPerPage}\n \n \n \n Page {page + 1} of {totalPages}\n \n onPageChange?.(Math.max(0, page - 1))}\n startIcon={}\n >\n Prev\n \n = totalPages - 1}\n onPress={() => onPageChange?.(Math.min(totalPages - 1, page + 1))}\n endIcon={}\n >\n Next\n \n \n \n );\n}\n\nexport interface TableSortLabelProps {\n active?: boolean;\n direction?: \"asc\" | \"desc\";\n onClick?: () => void;\n children?: React.ReactNode;\n}\n\nexport function TableSortLabel({\n active = false,\n direction = \"asc\",\n onClick,\n children,\n}: TableSortLabelProps) {\n const tokens = useTokens();\n return (\n \n \n {children}\n \n {active ? (\n \n {direction === \"asc\" ? \"arrowUp\" : \"arrowDown\"}\n \n ) : (\n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTabs, useTokens } from \"@truongdq01/headless\";\n\nexport interface TabsProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n variant?: \"standard\" | \"scrollable\" | \"fullWidth\";\n centered?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface TabProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface TabsContextValue {\n getTabProps: (value: T, disabled?: boolean) => {\n onPress: () => void;\n accessibilityRole: \"tab\";\n accessibilityState: { selected: boolean; disabled: boolean };\n };\n isSelected: (value: T) => boolean;\n orientation: \"horizontal\" | \"vertical\";\n variant: \"standard\" | \"scrollable\" | \"fullWidth\";\n}\n\nconst TabsContext = createContext | null>(null);\n\nexport function Tabs({\n value,\n defaultValue,\n onChange,\n variant = \"standard\",\n centered = false,\n orientation = \"horizontal\",\n children,\n}: TabsProps) {\n const { tabs } = useComponentTokens();\n const { getTabProps, isSelected } = useTabs({ value, defaultValue, onChange });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function Tab({ value, label, icon, disabled = false }: TabProps) {\n const { tabs } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(TabsContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const { onPress, accessibilityState } = ctx.getTabProps(value, disabled);\n\n return (\n [\n {\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderBottomWidth: ctx.orientation === \"horizontal\" ? tabs.indicator.height : 0,\n borderLeftWidth: ctx.orientation === \"vertical\" ? tabs.indicator.height : 0,\n borderColor: selected ? tabs.indicator.bg : \"transparent\",\n opacity: disabled ? 0.5 : pressed ? 0.92 : 1,\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: tokens.spacing[2],\n },\n ctx.variant === \"fullWidth\" ? { flex: 1, justifyContent: \"center\" } : null,\n ]}\n >\n {icon}\n {label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { View, Text, TextInput } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"../Input/AnimatedHelperText\";\n\n/** IMPROVEMENT_PLAN Issue #1 — `inside` | `above` (label row) | `below` (between field and helper) */\nexport type TextAreaCounterPosition = \"inside\" | \"above\" | \"below\";\n\nconst FOCUS_MS = 150;\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n value?: string;\n onChangeText?: (text: string) => void;\n onBlur?: () => void;\n onFocus?: () => void;\n error?: string;\n helperText?: string;\n /**\n * Kept for API compatibility (e.g. TextField `rows`); layout height uses `maxLines` only.\n */\n minLines?: number;\n /** Visible height is fixed to this many lines; extra text scrolls inside. */\n maxLines?: number;\n /** Show character counter when `maxLength` is set */\n showCounter?: boolean;\n /**\n * `inside` = bottom-right inside the field (default);\n * `above` = same row as label (top);\n * `below` = between the field and helper/error.\n */\n counterPosition?: TextAreaCounterPosition;\n /** Maximum length (enables counter when `showCounter` is true) */\n maxLength?: number;\n disabled?: boolean;\n autoFocus?: boolean;\n accessibilityLabel?: string;\n}\n\nexport function TextArea({\n label,\n placeholder,\n value = \"\",\n onChangeText,\n onBlur,\n onFocus,\n error,\n helperText,\n minLines: _minLines = 3,\n maxLines = 8,\n maxLength,\n showCounter = true,\n counterPosition = \"inside\",\n disabled = false,\n autoFocus = false,\n accessibilityLabel,\n}: TextAreaProps) {\n const { textArea } = useComponentTokens();\n const tokens = useTokens();\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n const [isFocused, setIsFocused] = useState(false);\n\n const focusProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const animatedBorderStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const LINE_HEIGHT = tokens.fontSize.md * tokens.lineHeight.normal;\n /** Fixed outer height from `maxLines` — no content measurement (avoids layout loops). */\n const maxHeight = maxLines * LINE_HEIGHT + tokens.spacing[3] * 2;\n\n /** Vertical padding inside bordered container (must match `textArea.container`). */\n const containerPadV = tokens.spacing[2];\n\n const showCounterAbove = Boolean(maxLength && showCounter && counterPosition === \"above\");\n const showCounterInside = Boolean(maxLength && showCounter && counterPosition === \"inside\");\n const showCounterBelow = Boolean(maxLength && showCounter && counterPosition === \"below\");\n const counterPaddingBottom = showCounterInside ? tokens.spacing[5] : 0;\n\n const innerMaxH = Math.max(1, maxHeight - 2 * containerPadV);\n\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n const containerStyle = [\n textArea.container,\n { height: maxHeight },\n !isGrouped && error && textArea.state.error,\n !isGrouped && disabled && textArea.state.disabled,\n groupedChrome,\n ];\n\n const charCount = value.length;\n const nearLimit = maxLength && charCount >= maxLength * 0.9;\n const atLimit = maxLength && charCount >= maxLength;\n\n const counterColor = atLimit\n ? tokens.color.error.text\n : nearLimit\n ? tokens.color.warning.text\n : tokens.color.text.tertiary;\n\n const counterWeight = atLimit ? tokens.fontWeight.semibold : tokens.fontWeight.regular;\n\n const counterEl = maxLength && showCounter ? (\n \n {charCount}/{maxLength}\n \n ) : null;\n\n return (\n \n {/* Label row — counter when `above` */}\n {(label || showCounterAbove) && (\n \n {label ? {label} : null}\n {showCounterAbove ? counterEl : null}\n \n )}\n\n {/* Text area */}\n \n {\n setIsFocused(true);\n onFocus?.();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n />\n {showCounterInside && counterEl ? (\n \n {counterEl}\n \n ) : null}\n \n\n {/* Counter between field and helper — `below` */}\n {showCounterBelow && counterEl ? (\n \n {counterEl}\n \n ) : null}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Input, type InputProps } from \"../Input/Input\";\nimport { TextArea } from \"../TextArea/TextArea\";\nimport { Select, type SelectProps } from \"../Select/Select\";\nimport { Pressable } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface TextFieldProps extends Omit {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n multiline?: boolean;\n rows?: number;\n maxRows?: number;\n minRows?: number;\n helperText?: string;\n error?: boolean | string;\n required?: boolean;\n select?: boolean;\n selectProps?: SelectProps;\n type?: \"text\" | \"password\" | \"email\" | \"number\";\n}\n\nexport function TextField({\n variant = \"outlined\",\n multiline = false,\n rows,\n maxRows,\n minRows,\n helperText,\n error,\n required = false,\n select = false,\n selectProps,\n type = \"text\",\n label,\n ...rest\n}: TextFieldProps) {\n const { textField } = useComponentTokens();\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n \n const labelText = required && label ? `${label} *` : label;\n const errorText = typeof error === \"string\" ? error : error ? helperText : undefined;\n\n const trailingElement = isPassword ? (\n setShowPassword(!showPassword)}\n style={{ padding: 4 }}\n hitSlop={8}\n >\n \n {showPassword ? \"eyeOff\" : \"eye\"}\n \n \n ) : rest.trailingElement;\n\n if (select) {\n return (\n \n );\n }\n\n if (multiline) {\n return (\n \n );\n }\n\n return (\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TimelinePosition = \"left\" | \"right\" | \"alternate\" | \"alternate-reverse\";\n\ninterface TimelineContextValue {\n position: TimelinePosition;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nconst TimelineContext = createContext(null);\n\nfunction useTimelineContext() {\n return useContext(TimelineContext);\n}\n\nexport interface TimelineProps {\n position?: TimelinePosition;\n children?: React.ReactNode;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nexport function Timeline({ position = \"right\", itemVariant = \"filled\", children }: TimelineProps) {\n const { timeline } = useComponentTokens();\n return (\n \n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<{ position?: TimelinePosition | \"left\" | \"right\"; variant?: \"filled\" | \"outlined\" }>(child)) return child;\n if (position === \"alternate\" || position === \"alternate-reverse\") {\n const isEven = index % 2 === 0;\n const derived = position === \"alternate\" ? (isEven ? \"right\" : \"left\") : (isEven ? \"left\" : \"right\");\n return React.cloneElement(child, { position: child.props.position ?? derived, variant: itemVariant });\n }\n return React.cloneElement(child, { variant: itemVariant });\n })}\n \n );\n}\n\nexport interface TimelineItemProps {\n position?: \"left\" | \"right\";\n variant?: \"filled\" | \"outlined\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n children?: React.ReactNode;\n}\n\nexport function TimelineItem({ position, variant = \"filled\", status = \"pending\", children }: TimelineItemProps) {\n const ctx = useTimelineContext();\n const resolved = position ?? (ctx?.position === \"left\" || ctx?.position === \"right\" ? ctx.position : \"right\");\n\n return (\n \n \n {resolved === \"right\" ? extractOpposite(children) : extractContent(children)}\n \n \n \n {resolved === \"right\" ? extractContent(children) : extractOpposite(children)}\n \n \n );\n}\n\nfunction extractChildrenByType(children: React.ReactNode, type: any) {\n const items: React.ReactNode[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === type) {\n const element = child as React.ReactElement;\n items.push(element.props.children);\n }\n });\n return items.length > 0 ? items : null;\n}\n\nfunction extractSeparator(children: React.ReactNode) {\n return extractChildrenByType(children, TimelineSeparator);\n}\n\nfunction extractContent(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nfunction extractOpposite(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineOppositeContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nexport interface TimelineSeparatorProps {\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n variant?: \"filled\" | \"outlined\";\n children?: React.ReactNode;\n}\n\nexport function TimelineSeparator({ status = \"pending\", variant = \"filled\", children }: TimelineSeparatorProps) {\n const { timeline } = useComponentTokens();\n \n const connectorColor = status === \"completed\" ? timeline.dot.completed.borderColor : timeline.connector.color;\n\n return (\n \n {children || (\n <>\n \n \n \n )}\n \n );\n}\n\nexport interface TimelineDotProps {\n variant?: \"filled\" | \"outlined\";\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\" | \"inherit\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n size?: number;\n}\n\nexport function TimelineDot({ variant = \"filled\", color = \"primary\", status, size }: TimelineDotProps) {\n const { timeline } = useComponentTokens();\n const tokens = useTokens();\n \n const resolvedStatus = status || (color === \"success\" ? \"completed\" : color === \"error\" ? \"error\" : color === \"primary\" ? \"active\" : \"pending\");\n const statusTokens = (timeline.dot as any)[resolvedStatus] || timeline.dot.pending;\n \n const dotSize = size || timeline.dot.size || 16;\n\n return (\n \n );\n}\n\nexport interface TimelineConnectorProps {\n color?: string;\n width?: number;\n}\n\nexport function TimelineConnector({ color, width }: TimelineConnectorProps) {\n const { timeline } = useComponentTokens();\n const resolvedWidth = width || timeline.connector.width;\n return ;\n}\n\nexport interface TimelineContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineContent({ children, align = \"left\" }: TimelineContentProps) {\n return (\n \n {children}\n \n );\n}\n\nexport interface TimelineOppositeContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineOppositeContent({ children, align = \"right\" }: TimelineOppositeContentProps) {\n return (\n \n {typeof children === \"string\" ? {children} : children}\n \n );\n}\n","import React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, { LinearTransition as RawLinearTransition } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useToast, dismissToast } from \"@truongdq01/headless\";\nimport type { ToastPosition } from \"@truongdq01/headless\";\nimport { ToastItem } from \"./ToastItem\";\n\n// ─── Props ────────────────────────────────────────────────────────\n\nexport interface ToastContainerProps {\n position?: ToastPosition;\n /** Horizontal offset from screen edges */\n horizontalPadding?: number;\n}\n\nconst layoutTransition =\n typeof RawLinearTransition?.duration === \"function\"\n ? RawLinearTransition.duration(280)\n : undefined;\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Container component for displaying toast notifications.\n * Manages positioning and animations for multiple toasts.\n *\n * @param props - Toast container configuration\n * @returns Animated toast container component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function ToastContainer({\n position = \"bottom\",\n horizontalPadding = 16,\n}: ToastContainerProps) {\n const { toasts } = useToast();\n const insets = useSafeAreaInsets();\n\n const positionStyle =\n position === \"top\"\n ? { top: insets.top + 8, left: horizontalPadding, right: horizontalPadding }\n : { bottom: insets.bottom + 8, left: horizontalPadding, right: horizontalPadding };\n\n if (toasts.length === 0) return null;\n\n return (\n \n {toasts.map((item) => (\n \n ))}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n zIndex: 9999,\n gap: 8,\n },\n});","import React, { useEffect } from \"react\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n FadeOutUp,\n FadeInDown,\n FadeOutDown,\n SlideInUp,\n SlideInDown,\n Easing,\n} from \"react-native-reanimated\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { ToastItem as ToastItemType, ToastPosition } from \"@truongdq01/headless\";\n\nconst VARIANT_ICONS: Record = {\n success: \"checkCircle\",\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n};\n\nexport interface ToastItemProps {\n item: ToastItemType;\n position: ToastPosition;\n onDismiss: (id: string) => void;\n}\n\nexport function ToastItem({ item, position, onDismiss }: ToastItemProps) {\n const { toast } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n // Progress bar for auto-dismiss\n const progress = useSharedValue(1);\n\n useEffect(() => {\n if (item.persistent) return;\n progress.value = withTiming(0, { duration: item.duration }, (finished) => {\n if (finished) runOnJS(onDismiss)(item.id);\n });\n return () => {\n progress.value = 1;\n };\n }, [item.id, item.duration, item.persistent]);\n\n const progressStyle = useAnimatedStyle(() => ({\n width: `${progress.value * 100}%`,\n }));\n\n // Pick variant colors\n const variantMap = {\n default: { iconColor: tokens.color.text.tertiary, progressColor: tokens.color.border.strong },\n success: { iconColor: tokens.color.success.icon, progressColor: tokens.color.success.icon },\n warning: { iconColor: tokens.color.warning.icon, progressColor: tokens.color.warning.icon },\n error: { iconColor: tokens.color.error.icon, progressColor: tokens.color.error.icon },\n info: { iconColor: tokens.color.info.icon, progressColor: tokens.color.info.icon },\n } as const;\n\n const v = variantMap[item.variant] || variantMap.default;\n\n const entering = reduceMotion\n ? undefined\n : position === \"top\" ? SlideInDown.duration(280).easing(Easing.out(Easing.cubic)) : SlideInUp.duration(280).easing(Easing.out(Easing.cubic));\n const exiting = reduceMotion\n ? undefined\n : position === \"top\" ? FadeOutUp.duration(200) : FadeOutDown.duration(200);\n\n return (\n \n {/* Icon */}\n {item.icon ? (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(item.icon)\n ? React.cloneElement(item.icon, {\n size: item.icon.props.size ?? 20,\n color: item.icon.props.color ?? \"#FFFFFF\",\n })\n : item.icon}\n \n ) : item.variant !== \"default\" && (\n \n )}\n\n {/* Message */}\n \n {item.message}\n \n\n {/* Action button */}\n {item.action && (\n {\n item.action!.onPress();\n onDismiss(item.id);\n }}\n style={{ paddingLeft: 4 }}\n >\n \n {item.action.label}\n \n \n )}\n\n {/* Dismiss button */}\n onDismiss(item.id)}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n >\n \n \n\n {/* Progress bar */}\n {!item.persistent && (\n \n \n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useComponentTokens, usePressable, useTokens, useToggleGroup } from \"@truongdq01/headless\";\n\nexport interface ToggleButtonGroupProps {\n value?: T | T[];\n defaultValue?: T | T[];\n exclusive?: boolean;\n onChange?: (value: T | T[] | undefined) => void;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface ToggleButtonProps {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\ninterface ToggleContextValue {\n isSelected: (value: T) => boolean;\n toggle: (value: T) => void;\n size: \"sm\" | \"md\" | \"lg\";\n disabled: boolean;\n}\n\nconst ToggleContext = createContext | null>(null);\n\nexport function ToggleButtonGroup({\n value,\n defaultValue,\n exclusive = false,\n onChange,\n orientation = \"horizontal\",\n size = \"md\",\n disabled = false,\n children,\n}: ToggleButtonGroupProps) {\n const { isSelected, toggle } = useToggleGroup({\n value,\n defaultValue,\n exclusive,\n disabled,\n onChange,\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function ToggleButton({ value, disabled = false, children }: ToggleButtonProps) {\n const { toggleButton } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(ToggleContext as React.Context | null>);\n\n const selected = ctx?.isSelected(value) ?? false;\n const isDisabled = disabled || ctx?.disabled;\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: () => ctx?.toggle(value),\n disabled: isDisabled,\n feedbackMode: \"scaleSubtle\",\n accessibilityRole: \"button\",\n });\n\n const size = ctx?.size ?? \"md\";\n const sizeMap = {\n sm: { height: 32, paddingHorizontal: 12, fontSize: tokens.fontSize.sm },\n md: { height: 40, paddingHorizontal: 16, fontSize: tokens.fontSize.md },\n lg: { height: 48, paddingHorizontal: 20, fontSize: tokens.fontSize.lg },\n };\n\n const s = sizeMap[size];\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type TooltipPlacement =\n | \"top\" | \"top-start\" | \"top-end\"\n | \"bottom\" | \"bottom-start\" | \"bottom-end\"\n | \"left\" | \"left-start\" | \"left-end\"\n | \"right\" | \"right-start\" | \"right-end\";\n\nexport interface TooltipProps {\n title: React.ReactNode;\n children: React.ReactElement;\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n placement?: TooltipPlacement;\n}\n\ninterface TriggerRect {\n pageX: number;\n pageY: number;\n width: number;\n height: number;\n}\n\nexport function Tooltip({\n title,\n children,\n open: controlledOpen,\n onOpen,\n onClose,\n placement = \"top\",\n}: TooltipProps) {\n const { tooltip } = useComponentTokens();\n const tokens = useTokens();\n const [internalOpen, setInternalOpen] = useState(false);\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [triggerRect, setTriggerRect] = useState(null);\n const [tooltipSize, setTooltipSize] = useState({ width: 0, height: 0 });\n const triggerRef = React.useRef(null);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n // Simple fade animation\n const opacity = useSharedValue(0);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 150 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 100 }, () => {\n runOnJS(onDone)();\n });\n }, []);\n\n const handleOpen = () => {\n triggerRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setTriggerRect({ pageX, pageY, width: w, height: h });\n setInternalOpen(true);\n onOpen?.();\n requestAnimationFrame(() => animateIn());\n });\n };\n\n const handleClose = () => {\n animateOut(() => {\n setInternalOpen(false);\n setTriggerRect(null);\n onClose?.();\n });\n };\n\n // Compute position\n const GAP = 8;\n const PADDING = 12;\n const tx = triggerRect?.pageX ?? 0;\n const ty = triggerRect?.pageY ?? 0;\n const tw = triggerRect?.width ?? 0;\n const th = triggerRect?.height ?? 0;\n const tlw = tooltipSize.width || 200;\n const tlh = tooltipSize.height || 40;\n \n let top = ty - tlh - GAP;\n let left = tx + tw / 2 - tlw / 2;\n\n // Simple placement logic\n if (placement.includes(\"bottom\")) {\n top = ty + th + GAP;\n }\n if (placement.includes(\"left\")) {\n left = tx - tlw - GAP;\n }\n if (placement.includes(\"right\")) {\n left = tx + tw + GAP;\n }\n if (placement.includes(\"top-left\") || placement.includes(\"bottom-left\")) {\n left = tx;\n }\n if (placement.includes(\"top-right\") || placement.includes(\"bottom-right\")) {\n left = tx + tw - tlw;\n }\n\n // Clamp to screen bounds\n const safeTop = Math.max(PADDING, Math.min(top, windowHeight - tlh - PADDING));\n const safeLeft = Math.max(PADDING, Math.min(left, windowWidth - tlw - PADDING));\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n <>\n \n {children}\n \n\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setTooltipSize({ width, height });\n }}\n onStartShouldSetResponder={() => true}\n style={[\n tooltip.container,\n {\n position: \"absolute\",\n top: safeTop,\n left: safeLeft,\n },\n animStyle,\n ] as any}\n >\n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle, type AccessibilityRole } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TypographyVariant =\n | \"display\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\"\n | \"label\"\n | \"code\"\n | \"inherit\";\n\n/** Semantic role hint — RN maps to `accessibilityRole` / `accessibilityLevel` (IMPROVEMENT_PLAN Issue #2) */\nexport type TypographyAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport interface TypographyProps {\n children?: React.ReactNode;\n variant?: TypographyVariant;\n /** Maps to accessibility props (RN has no DOM elements) */\n as?: TypographyAs;\n align?: \"left\" | \"right\" | \"center\" | \"justify\" | \"inherit\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"disabled\" | \"brand\" | \"error\" | string;\n gutterBottom?: boolean;\n noWrap?: boolean;\n paragraph?: boolean;\n display?: \"none\" | \"flex\" | \"contents\" | \"block\" | \"inline\" | \"inline-flex\";\n style?: TextStyle | TextStyle[];\n}\n\nfunction accessibilityForAs(as: TypographyAs | undefined): { accessibilityRole?: AccessibilityRole } {\n if (!as || as === \"span\") return {};\n if (as === \"p\" || as === \"label\") {\n return { accessibilityRole: \"text\" };\n }\n if (as === \"h1\" || as === \"h2\" || as === \"h3\" || as === \"h4\" || as === \"h5\" || as === \"h6\") {\n return { accessibilityRole: \"header\" };\n }\n return {};\n}\n\nfunction TypographyInner({\n children,\n variant = \"body1\",\n as,\n align = \"left\",\n color,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n display,\n style,\n}: TypographyProps) {\n const { typography } = useComponentTokens();\n const tokens = useTokens();\n\n const variantStyle =\n variant === \"inherit\" ? {} : typography.variants[variant as keyof typeof typography.variants] || {};\n\n const presetColors = typography.colors;\n const resolvedColor =\n color != null &&\n color !== \"\" &&\n typeof color === \"string\" &&\n Object.prototype.hasOwnProperty.call(presetColors, color)\n ? presetColors[color as keyof typeof presetColors]\n : color || presetColors.primary;\n\n const resolvedDisplay =\n display === \"block\" || display === \"inline\" || display === \"inline-flex\"\n ? \"flex\"\n : display;\n\n const sans = tokens.fontFamily?.sans;\n const sansFont =\n sans != null && sans !== \"\" ? { fontFamily: sans } : null;\n\n const skipSans = variant === \"code\";\n\n const a11y = accessibilityForAs(as);\n\n return (\n \n {children}\n \n );\n}\n\nexport const Typography = React.memo(TypographyInner);\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramTabBarProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n children?: React.ReactNode;\n glassEffect?: boolean;\n}\n\nexport interface TelegramTabProps {\n value: T;\n label: string;\n icon: React.ReactNode;\n activeIcon?: React.ReactNode;\n badge?: number | string | boolean;\n disabled?: boolean;\n}\n\ninterface TabBarContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T, disabled?: boolean) => { onPress?: () => void };\n}\n\nconst TabBarContext = createContext | null>(null);\n\n// ─── Telegram Tab Bar ─────────────────────────────────────────────\n\nexport function TelegramTabBar({\n value: controlledValue,\n defaultValue,\n onChange,\n children,\n glassEffect = true,\n}: TelegramTabBarProps) {\n const tokens = useTokens();\n const { bottomNavigation } = useComponentTokens();\n\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const isSelected = (itemValue: T) => value === itemValue;\n\n const getItemProps = (itemValue: T, disabled?: boolean) => ({\n onPress: disabled\n ? undefined\n : () => {\n if (controlledValue === undefined) setInternalValue(itemValue);\n onChange?.(itemValue);\n },\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\n// ─── Telegram Tab Item ────────────────────────────────────────────\n\nexport function TelegramTab({\n value,\n label,\n icon,\n activeIcon,\n badge,\n disabled = false,\n}: TelegramTabProps) {\n const tokens = useTokens();\n const ctx = useContext(TabBarContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const progress = useSharedValue(selected ? 1 : 0);\n\n React.useEffect(() => {\n progress.value = withSpring(selected ? 1 : 0, {\n damping: 22,\n stiffness: 300,\n });\n }, [selected]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ scale: interpolate(progress.value, [0, 1], [1, 1.15]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const labelStyle = useAnimatedStyle(() => ({\n color: interpolateColor(\n progress.value,\n [0, 1],\n [tokens.color.text.secondary, tokens.color.brand.default]\n ),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0.95, 1]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const dotStyle = useAnimatedStyle(() => ({\n opacity: interpolate(progress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0, 1]) }],\n }));\n\n const itemProps = ctx.getItemProps(value, disabled);\n\n return (\n [\n styles.tabItem,\n pressed && { opacity: 0.85 },\n disabled && { opacity: 0.3 },\n ]}\n >\n \n \n {selected && activeIcon ? activeIcon : icon}\n \n\n {badge !== undefined && badge !== false && (\n \n )}\n \n\n \n {label}\n \n\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n paddingHorizontal: 8,\n paddingVertical: 6,\n paddingBottom: 6,\n minHeight: 56,\n },\n tabItem: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 4,\n paddingHorizontal: 8,\n minHeight: 48,\n },\n iconContainer: {\n position: \"relative\",\n marginBottom: 2,\n },\n badge: {\n position: \"absolute\",\n top: -4,\n right: -12,\n },\n tabLabel: {\n fontSize: 11,\n fontWeight: \"500\",\n lineHeight: 14,\n marginTop: 2,\n },\n activeDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n marginTop: 4,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Avatar } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface ChatListItemProps {\n /** Optional unique id */\n id?: string;\n /** Avatar source or initials */\n avatar?: {\n src?: string;\n initials?: string;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n };\n /** Chat name / contact name */\n name: string;\n /** Message preview text */\n preview?: string;\n /** Message timestamp */\n time?: string;\n /** Unread count */\n unread?: number;\n /** Is message read */\n read?: boolean;\n /** Is message sent by current user */\n outgoing?: boolean;\n /** Is chat muted */\n muted?: boolean;\n /** Is chat pinned */\n pinned?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Disable interaction */\n disabled?: boolean;\n /** Press callback */\n onPress?: () => void;\n /** Long press callback */\n onLongPress?: () => void;\n /** Trailing custom element */\n trailingElement?: React.ReactNode;\n}\n\n// ─── Chat List Item ───────────────────────────────────────────────\n\nexport function ChatListItem({\n avatar,\n name,\n preview,\n time,\n unread,\n read = true,\n outgoing = true,\n muted = false,\n pinned = false,\n selected = false,\n disabled = false,\n onPress,\n onLongPress,\n trailingElement,\n}: ChatListItemProps) {\n const tokens = useTokens();\n const { list } = useComponentTokens();\n\n const pressed = useSharedValue(0);\n\n const containerStyle = useAnimatedStyle(() => ({\n backgroundColor: pressed.value === 1\n ? tokens.color.surface.hover\n : selected\n ? tokens.color.brand.subtle\n : \"transparent\",\n }));\n\n return (\n { pressed.value = withSpring(1, { damping: 20 }); }}\n onPressOut={() => { pressed.value = withSpring(0, { damping: 20 }); }}\n >\n \n {/* Avatar */}\n {avatar && (\n \n )}\n\n {/* Content */}\n \n \n \n {pinned && (\n 📌\n )}\n \n {name}\n \n {muted && (\n 🔕\n )}\n \n\n {time && (\n 0 ? { color: tokens.color.brand.default, fontWeight: \"600\" as const } : undefined,\n ]}\n >\n {time}\n \n )}\n \n\n \n \n {outgoing && (\n \n {read ? \"✓✓\" : \"✓\"}\n \n )}\n {preview && (\n \n {preview}\n \n )}\n \n\n \n {unread && unread > 0 && (\n \n )}\n {trailingElement}\n \n \n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 10,\n minHeight: 72,\n },\n avatar: {\n marginRight: 12,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n headerRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 4,\n },\n nameContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n name: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 20,\n flex: 1,\n },\n iconPin: {\n marginRight: 4,\n fontSize: 14,\n },\n iconMute: {\n marginLeft: 4,\n fontSize: 14,\n },\n time: {\n fontSize: 13,\n lineHeight: 16,\n textAlign: \"right\",\n },\n previewRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n previewContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n checkmark: {\n fontSize: 12,\n marginRight: 4,\n },\n preview: {\n fontSize: 14,\n lineHeight: 18,\n flex: 1,\n },\n rightContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n});\n\n\n","import React, { useRef, useState } from \"react\";\nimport { View, TextInput as RNTextInput, Pressable, StyleSheet, type TextInputProps, Text } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withTiming, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface MessageInputProps extends Omit {\n /** Left action buttons (attach, sticker, etc.) */\n leftActions?: React.ReactNode;\n /** Right action buttons (send, voice, etc.) */\n rightActions?: React.ReactNode;\n /** Show attachment button */\n showAttach?: boolean;\n /** Show sticker button */\n showSticker?: boolean;\n /** Show send button */\n showSend?: boolean;\n /** Callback when send button pressed */\n onSend?: (text: string) => void;\n /** Callback when attachment button pressed */\n onAttach?: () => void;\n /** Callback when sticker button pressed */\n onSticker?: () => void;\n /** Custom send button */\n sendButton?: React.ReactNode;\n /** Glass effect background */\n glassEffect?: boolean;\n /** Disable input */\n disabled?: boolean;\n}\n\n// ─── Message Input ────────────────────────────────────────────────\n\nexport function MessageInput({\n leftActions,\n rightActions,\n showAttach = true,\n showSticker = true,\n showSend = true,\n onSend,\n onAttach,\n onSticker,\n sendButton,\n glassEffect = true,\n disabled = false,\n value,\n onChangeText,\n placeholder = \"Type a message...\",\n ...rest\n}: MessageInputProps) {\n const tokens = useTokens();\n const { input } = useComponentTokens();\n const { size: iconSize } = useIconStyle(\"input\");\n const inputRef = useRef(null);\n const [focused, setFocused] = useState(false);\n const [text, setText] = useState(value ?? \"\");\n\n const height = useSharedValue(48);\n const attachVisible = useSharedValue(1);\n\n const hasText = text.length > 0;\n\n React.useEffect(() => {\n attachVisible.value = withTiming(hasText ? 0 : 1, { duration: 180 });\n }, [hasText]);\n\n const inputStyle = useAnimatedStyle(() => ({\n minHeight: height.value,\n }));\n\n const attachStyle = useAnimatedStyle(() => ({\n opacity: attachVisible.value,\n transform: [{ scale: attachVisible.value }],\n width: attachVisible.value > 0.5 ? 40 : 0,\n }));\n\n const handleSend = () => {\n if (text.trim() && onSend) {\n onSend(text.trim());\n setText(\"\");\n }\n };\n\n const handleChangeText = (newText: string) => {\n setText(newText);\n onChangeText?.(newText);\n };\n\n return (\n \n {showAttach && (\n \n \n \n 📎\n \n \n \n )}\n\n {leftActions}\n\n \n setFocused(true)}\n onBlur={() => setFocused(false)}\n multiline\n textAlignVertical=\"center\"\n {...rest}\n />\n\n {showSticker && (\n \n 😊\n \n )}\n \n\n {rightActions}\n\n {showSend && (\n sendButton ?? (\n \n \n {hasText ? \"➤\" : \"🎤\"}\n \n \n )\n )}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n paddingHorizontal: 8,\n paddingVertical: 8,\n minHeight: 56,\n },\n actionButton: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n iconButton: {\n width: 40,\n height: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputWrapper: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n marginHorizontal: 4,\n borderRadius: 20,\n borderWidth: 1,\n borderColor: \"rgba(0,0,0,0.1)\",\n backgroundColor: \"rgba(0,0,0,0.03)\",\n overflow: \"hidden\",\n minHeight: 40,\n },\n input: {\n flex: 1,\n fontSize: 16,\n paddingHorizontal: 12,\n paddingVertical: 10,\n paddingRight: 40,\n maxHeight: 120,\n },\n stickerButton: {\n position: \"absolute\",\n right: 4,\n bottom: 4,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sendButton: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: 4,\n },\n icon: {\n fontSize: 20,\n },\n sendIcon: {\n fontSize: 18,\n fontWeight: \"600\",\n color: \"rgba(0,0,0,0.3)\",\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n// @ts-ignore expo-blur is optional peer dependency\nimport { BlurView } from \"expo-blur\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramPopupProps {\n /** If true, the popup is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Title for popup */\n title?: string;\n /** Action buttons */\n actions?: React.ReactNode;\n /** Callback on close */\n onClose?: () => void;\n /** Duration in ms before auto-hiding */\n autoHideDuration?: number | null;\n /** Position on screen */\n position?: \"top\" | \"bottom\" | \"center\";\n /** Blur background */\n blur?: boolean;\n /** Icon */\n icon?: React.ReactNode;\n /** Variant for different types */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n}\n\n// ─── Telegram Popup ───────────────────────────────────────────────\n\nexport function TelegramPopup({\n open,\n message,\n title,\n actions,\n onClose,\n autoHideDuration = 3000,\n position = \"top\",\n blur = true,\n icon,\n variant = \"default\",\n}: TelegramPopupProps) {\n const tokens = useTokens();\n const { height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n\n const translateY = useSharedValue(position === \"bottom\" ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = useCallback(() => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n translateY.value = withTiming(position === \"bottom\" ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, [position]);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = position === \"bottom\" ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const positionStyle =\n position === \"top\"\n ? { top: 48, alignSelf: \"center\" as const }\n : position === \"bottom\"\n ? { bottom: 96, alignSelf: \"center\" as const }\n : { alignSelf: \"center\" as const, top: windowHeight / 2 - 50 };\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as const,\n }));\n\n const variantColors = {\n default: tokens.color.bg.default,\n success: tokens.color.success.bg,\n error: tokens.color.error.bg,\n warning: tokens.color.warning.bg,\n info: tokens.color.info.bg,\n };\n\n if (!mounted && !open) return null;\n\n return (\n \n \n {blur && (\n \n )}\n \n \n {icon && {icon}}\n \n {title && (\n {title}\n )}\n {typeof message === \"string\" ? (\n \n {message}\n \n ) : (\n message\n )}\n \n \n {actions && {actions}}\n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.05)\",\n },\n popup: {\n position: \"absolute\",\n marginHorizontal: 16,\n minWidth: 280,\n maxWidth: 340,\n padding: 16,\n elevation: 6,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n iconContainer: {\n marginRight: 12,\n },\n textContent: {\n flex: 1,\n },\n title: {\n fontSize: 15,\n fontWeight: \"600\",\n lineHeight: 20,\n marginBottom: 2,\n },\n message: {\n fontSize: 14,\n lineHeight: 18,\n },\n actions: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginTop: 12,\n gap: 8,\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramContextMenuItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramContextMenuProps {\n open: boolean;\n onClose: () => void;\n items: TelegramContextMenuItem[];\n anchor?: { x: number; y: number; width: number; height: number } | null;\n}\n\n// ─── Telegram Context Menu ────────────────────────────────────────\n\nexport function TelegramContextMenu({\n open,\n onClose,\n items,\n anchor,\n}: TelegramContextMenuProps) {\n const tokens = useTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n const [menuSize, setMenuSize] = React.useState({ width: 200, height: 0 });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 180 });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, []);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n // Position calculation\n const GAP = 8;\n let top = 100;\n let left = windowWidth - 220;\n\n if (anchor) {\n top = anchor.y + anchor.height + GAP;\n left = anchor.x;\n\n if (left + menuSize.width > windowWidth - 16) {\n left = windowWidth - menuSize.width - 16;\n }\n if (top + menuSize.height > windowHeight - 16) {\n top = anchor.y - menuSize.height - GAP;\n }\n top = Math.max(16, top);\n left = Math.max(16, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n setMenuSize({\n width: e.nativeEvent.layout.width,\n height: e.nativeEvent.layout.height,\n });\n }}\n style={[\n styles.menu,\n animStyle,\n {\n position: \"absolute\",\n top,\n left,\n backgroundColor: tokens.color.surface.default,\n borderRadius: 14,\n shadowColor: tokens.color.bg.inverse,\n shadowOffset: { width: 0, height: 6 },\n shadowOpacity: 0.2,\n shadowRadius: 18,\n elevation: 8,\n },\n ]}\n >\n {items.map((item, index) => (\n {\n item.onPress?.();\n onClose();\n }}\n disabled={item.disabled}\n style={({ pressed }) => [\n styles.item,\n index === 0 && { borderTopLeftRadius: 14, borderTopRightRadius: 14 },\n index === items.length - 1 && { borderBottomLeftRadius: 14, borderBottomRightRadius: 14 },\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n ]}\n >\n {item.icon && {item.icon}}\n \n {item.label}\n \n \n ))}\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.1)\",\n },\n menu: {\n minWidth: 180,\n overflow: \"hidden\",\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 48,\n },\n itemIcon: {\n marginRight: 12,\n width: 20,\n alignItems: \"center\",\n },\n itemLabel: {\n fontSize: 15,\n fontWeight: \"500\",\n lineHeight: 20,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { List, ListItem, ListItemText, ListItemIcon } from \"../List\";\nimport { Divider } from \"../Divider\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramSettingsItem {\n id: string;\n label: string;\n subtitle?: string;\n icon?: React.ReactNode;\n value?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramSettingsSection {\n title?: string;\n items: TelegramSettingsItem[];\n}\n\nexport interface TelegramSettingsMenuProps {\n sections: TelegramSettingsSection[];\n variant?: \"default\" | \"grouped\";\n}\n\n// ─── Telegram Settings Menu ───────────────────────────────────────\n\nexport function TelegramSettingsMenu({ sections, variant = \"grouped\" }: TelegramSettingsMenuProps) {\n const tokens = useTokens();\n\n return (\n \n {sections.map((section, sectionIndex) => (\n \n {section.title && (\n \n \n {section.title}\n \n \n )}\n \n {section.items.map((item, itemIndex) => (\n [\n styles.item,\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n itemIndex !== section.items.length - 1 && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: tokens.color.border.subtle,\n marginLeft: 56,\n },\n ]}\n >\n {item.icon && (\n \n {item.icon}\n \n )}\n \n \n {item.label}\n \n {item.subtitle && (\n \n {item.subtitle}\n \n )}\n \n \n {item.value}\n \n \n \n ))}\n \n \n ))}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 16,\n },\n sectionHeader: {\n paddingHorizontal: 32,\n paddingVertical: 8,\n },\n sectionTitle: {\n fontSize: 13,\n fontWeight: \"600\",\n lineHeight: 16,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n section: {\n marginBottom: 24,\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 52,\n },\n itemIcon: {\n width: 28,\n marginRight: 12,\n alignItems: \"center\",\n },\n itemContent: {\n flex: 1,\n },\n itemLabel: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 22,\n },\n itemSubtitle: {\n fontSize: 13,\n lineHeight: 16,\n marginTop: 2,\n },\n itemRight: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n chevron: {\n fontSize: 20,\n fontWeight: \"400\",\n },\n});\n\n\n"],"mappings":"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","names":["useTokens","useComponentTokens","useIsDark","React","View","Text","useTokens","useComponentTokens","useComponentTokens","React","View","Text","useTokens","React","useMemo","View","Text","useComponentTokens","useTokens","useComponentTokens","useTokens","useMemo","React","View","Text","React","useMemo","Animated","Layout","useComponentTokens","useReduceMotionEnabled","React","View","useComponentTokens","useTokens","React","useState","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withTiming","useTokens","useComponentTokens","React","useMemo","View","Text","Animated","useSharedValue","useAnimatedStyle","withTiming","interpolate","useComponentTokens","useTokens","React","React","Text","Animated","Animated","useComponentTokens","useTokens","useSharedValue","withTiming","useAnimatedStyle","interpolate","useMemo","React","View","Text","useTokens","useComponentTokens","useState","useSharedValue","withTiming","useAnimatedStyle","React","View","Pressable","Animated","Text","React","View","Text","Image","useComponentTokens","useTokens","useComponentTokens","useTokens","React","View","Image","Text","React","useMemo","View","Text","useComponentTokens","React","createContext","useContext","useMemo","View","Text","Pressable","useTokens","useComponentTokens","React","forwardRef","useState","View","StyleSheet","Modal","Animated","GestureDetector","useComponentTokens","BottomSheet","styles","React","View","useComponentTokens","Box","React","View","Text","useComponentTokens","React","useMemo","Animated","GestureDetector","Text","View","StyleSheet","usePressable","useComponentTokens","useIconStyle","useTokens","styles","React","View","useTokens","useComponentTokens","React","useMemo","Animated","GestureDetector","View","usePressable","useComponentTokens","React","View","useWindowDimensions","Animated","useAnimatedStyle","interpolate","Extrapolation","useComponentTokens","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","useComponentTokens","useTokens","useReduceMotionEnabled","React","View","Text","Pressable","useTokens","useIconStyle","useComponentTokens","React","ActivityIndicator","View","Text","StyleSheet","useTokens","useComponentTokens","styles","React","useState","useMemo","View","Text","Pressable","Modal","StyleSheet","useSafeAreaInsets","useTokens","useComponentTokens","useIconStyle","React","useMemo","useCallback","View","Text","Pressable","useTokens","useTokens","useMemo","useCallback","React","View","Pressable","Text","React","useCallback","useMemo","View","Text","ScrollView","Pressable","useTokens","useComponentTokens","useTokens","useSafeAreaInsets","useIconStyle","useState","useMemo","React","View","Text","Pressable","Modal","StyleSheet","React","Modal","View","Pressable","StyleSheet","Text","useComponentTokens","useTokens","React","View","Text","useComponentTokens","useTokens","React","useEffect","Modal","View","Pressable","StyleSheet","Dimensions","Animated","useSharedValue","useAnimatedStyle","withSpring","useComponentTokens","useTokens","useReduceMotionEnabled","spring","React","View","Text","useComponentTokens","useTokens","useComponentTokens","useTokens","React","View","Text","React","View","Text","StyleSheet","Animated","GestureDetector","usePressable","useComponentTokens","useComponentTokens","usePressable","React","GestureDetector","Animated","View","styles","Text","StyleSheet","React","createContext","useContext","useCallback","View","ScrollView","StyleSheet","useTokens","styles","React","createContext","useContext","useMemo","View","Text","Pressable","useComponentTokens","useTokens","React","View","Text","StyleSheet","useComponentTokens","useTokens","React","useState","Pressable","useIconStyle","useState","useIconStyle","React","Pressable","React","useComponentTokens","useTokens","View","Text","StyleSheet","React","useMemo","View","StyleSheet","useTokens","styles","React","useMemo","View","StyleSheet","styles","React","View","useComponentTokens","Grid","React","useState","View","StyleSheet","Animated","useAnimatedStyle","withTiming","useSharedValue","useComponentTokens","styles","React","createContext","useContext","useMemo","useState","View","Text","Dimensions","useTokens","useComponentTokens","React","View","StyleSheet","Animated","useAnimatedStyle","useTokens","useComponentTokens","clamp","styles","React","Text","Linking","useComponentTokens","React","createContext","useContext","useMemo","View","Text","Pressable","FlatList","useTokens","useComponentTokens","List","React","useEffect","useRef","View","StyleSheet","Animated","useAnimatedStyle","useSharedValue","withTiming","Easing","useTokens","styles","React","Modal","Pressable","Text","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","Easing","useTokens","useComponentTokens","Menu","React","View","Pressable","StyleSheet","useComponentTokens","Modal","styles","React","useEffect","View","Pressable","Text","Animated","useAnimatedStyle","withSpring","useSharedValue","withTiming","withSequence","withRepeat","cancelAnimation","useComponentTokens","useReduceMotionEnabled","React","View","Text","Pressable","useTokens","useComponentTokens","React","View","useComponentTokens","useTokens","React","useMemo","useState","Modal","View","Pressable","StyleSheet","Dimensions","useTokens","useComponentTokens","styles","React","useMemo","useState","Modal","View","Pressable","StyleSheet","Dimensions","useTokens","useComponentTokens","styles","React","Animated","GestureDetector","usePressable","useComponentTokens","Pressable","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolate","interpolateColor","useTokens","useComponentTokens","useReduceMotionEnabled","spring","React","useCallback","View","Pressable","Text","AccessibilityInfo","Animated","useAnimatedStyle","useSharedValue","withSpring","spring","useComponentTokens","useReduceMotionEnabled","clamp","useSharedValue","useAnimatedStyle","withSpring","spring","React","Pressable","Animated","useComponentTokens","useReduceMotionEnabled","useCallback","AccessibilityInfo","Text","View","React","useState","useRef","View","Pressable","Text","Animated","useAnimatedStyle","withSpring","useSharedValue","useTokens","useComponentTokens","React","useRef","useState","useMemo","useCallback","View","Text","TextInput","Pressable","ActivityIndicator","FlatList","useTokens","useComponentTokens","React","createContext","useContext","useEffect","useState","View","Animated","useSharedValue","useAnimatedStyle","withRepeat","withTiming","interpolate","cancelAnimation","useTokens","useComponentTokens","useContext","useSharedValue","useEffect","cancelAnimation","withRepeat","withTiming","useComponentTokens","useState","useAnimatedStyle","interpolate","React","Animated","SkeletonText","useTokens","View","SkeletonCard","SkeletonListItem","SkeletonProfile","SkeletonMedia","SkeletonForm","SkeletonGrid","SkeletonTable","_","useComponentTokens","useTokens","useRef","useState","useMemo","FlatList","useCallback","React","Pressable","Text","View","TextInput","ActivityIndicator","React","useMemo","View","Text","TextInput","Animated","GestureDetector","useTokens","useComponentTokens","AnimatedTextInput","currentValue","fillAnimatedStyle","trackAnimatedStyle","onTrackLayout","React","useEffect","useMemo","View","Text","Pressable","Modal","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","useComponentTokens","useComponentTokens","useTokens","React","useSharedValue","withSpring","withTiming","runOnJS","useEffect","useMemo","useAnimatedStyle","Modal","View","styles","Animated","Text","Pressable","StyleSheet","React","createContext","useContext","useMemo","View","Text","Pressable","useDisclosure","useTokens","useComponentTokens","createContext","useComponentTokens","useDisclosure","useTokens","useMemo","React","View","useContext","Pressable","Text","React","View","useComponentTokens","React","View","Text","useComponentTokens","useComponentTokens","React","View","Text","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","useTokens","useComponentTokens","useReduceMotionEnabled","spring","React","createContext","useContext","useMemo","View","ScrollView","Text","Pressable","useComponentTokens","useTokens","createContext","useContext","useMemo","React","View","useComponentTokens","ScrollView","useTokens","Text","Pressable","React","createContext","useContext","View","Text","Pressable","useComponentTokens","useTokens","React","useState","useEffect","View","Text","TextInput","Animated","useSharedValue","useAnimatedStyle","withTiming","interpolateColor","useComponentTokens","useTokens","FOCUS_MS","useComponentTokens","useTokens","useState","useSharedValue","useEffect","withTiming","useAnimatedStyle","interpolateColor","React","Text","View","Animated","TextInput","React","useState","Pressable","useComponentTokens","useComponentTokens","useState","React","Pressable","React","createContext","useContext","View","Text","useComponentTokens","useTokens","React","Text","useComponentTokens","View","useTokens","React","StyleSheet","Animated","useSafeAreaInsets","React","useEffect","Animated","useSharedValue","useAnimatedStyle","withTiming","runOnJS","Easing","View","Text","Pressable","useComponentTokens","useTokens","useReduceMotionEnabled","useComponentTokens","useTokens","useReduceMotionEnabled","useSharedValue","useEffect","withTiming","runOnJS","useAnimatedStyle","Easing","React","Animated","View","Text","Pressable","useSafeAreaInsets","React","Animated","styles","StyleSheet","React","createContext","useContext","View","Text","Animated","GestureDetector","useComponentTokens","usePressable","useTokens","React","useState","useCallback","Text","Pressable","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","runOnJS","useTokens","useComponentTokens","React","Text","useComponentTokens","useTokens","React","createContext","useContext","View","Pressable","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","interpolate","useTokens","useComponentTokens","createContext","useTokens","useComponentTokens","React","View","styles","useContext","useSharedValue","withSpring","useAnimatedStyle","interpolate","interpolateColor","Pressable","Animated","StyleSheet","React","View","Text","Pressable","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","useTokens","useComponentTokens","useTokens","useComponentTokens","useSharedValue","useAnimatedStyle","React","Pressable","withSpring","Animated","styles","View","Text","StyleSheet","React","useRef","useState","View","RNTextInput","Pressable","StyleSheet","Text","Animated","useSharedValue","useAnimatedStyle","withTiming","useTokens","useComponentTokens","useIconStyle","styles","React","useCallback","View","Text","Pressable","StyleSheet","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","BlurView","styles","React","useCallback","View","Text","Pressable","StyleSheet","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","styles","React","View","Text","Pressable","StyleSheet","useTokens","styles","StyleSheet"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/components/Accordion/Accordion.tsx","../src/components/Icon/Icon.tsx","../src/components/Alert/Alert.tsx","../src/components/AnimatedList/AnimatedList.tsx","../src/components/AppBar/AppBar.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Input/Input.tsx","../src/components/FormField/FormGroupContext.tsx","../src/components/Input/AnimatedHelperText.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/Box/Box.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/CircularProgress/CircularProgress.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/CalendarGrid.tsx","../src/components/DatePicker/TimePickerWheels.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Divider/Divider.tsx","../src/components/Drawer/Drawer.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Fab/Fab.tsx","../src/components/Form/Form.tsx","../src/components/FormControl/FormControl.tsx","../src/components/FormField/FormField.tsx","../src/components/Input/PasswordInput.tsx","../src/components/GlassCard/GlassCard.tsx","../src/components/Gradient/Gradient.tsx","../src/components/Grid/Grid.tsx","../src/components/Image/Image.tsx","../src/components/ImageList/ImageList.tsx","../src/components/LinearProgress/LinearProgress.tsx","../src/components/Link/Link.tsx","../src/components/List/List.tsx","../src/components/Marquee/Marquee.tsx","../src/components/Menu/Menu.tsx","../src/components/Modal/Modal.tsx","../src/components/OTPInput/OTPInput.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Paper/Paper.tsx","../src/components/Popover/Popover.tsx","../src/components/Popper/Popper.tsx","../src/components/Pressable/Pressable.tsx","../src/components/Radio/Radio.tsx","../src/components/Rating/Rating.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/Select/Select.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Slider/Slider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/SpeedDial/SpeedDial.tsx","../src/components/Stack/Stack.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/Table.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextField/TextField.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastItem.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Typography/Typography.tsx","../src/components/TelegramTabBar/TelegramTabBar.tsx","../src/components/ChatListItem/ChatListItem.tsx","../src/components/MessageInput/MessageInput.tsx","../src/components/TelegramPopup/TelegramPopup.tsx","../src/components/TelegramContextMenu/TelegramContextMenu.tsx","../src/components/TelegramSettingsMenu/TelegramSettingsMenu.tsx"],"sourcesContent":["export { ThemeProvider, useTheme, useTokens, useComponentTokens, useIsDark, useActiveBrand, useBrandSwitch, createTheme } from \"@truongdq01/headless\";\nexport type { Theme, ThemeOverride, ThemeProviderProps, Brand } from \"@truongdq01/headless\";\n\nexport * from \"./components/Accordion\";\nexport * from \"./components/Alert\";\nexport * from \"./components/AnimatedList\";\nexport * from \"./components/AppBar\";\nexport * from \"./components/Autocomplete\";\nexport * from \"./components/Avatar\";\nexport * from \"./components/Badge\";\nexport * from \"./components/BottomNavigation\";\nexport * from \"./components/BottomSheet\";\nexport * from \"./components/Box\";\nexport * from \"./components/Breadcrumbs\";\nexport * from \"./components/Button\";\nexport * from \"./components/ButtonGroup\";\nexport * from \"./components/Card\";\nexport * from \"./components/Carousel\";\nexport * from \"./components/Checkbox\";\nexport * from \"./components/Chip\";\nexport * from \"./components/CircularProgress\";\nexport * from \"./components/DatePicker\";\nexport * from \"./components/Dialog\";\nexport * from \"./components/Divider\";\nexport * from \"./components/Drawer\";\nexport * from \"./components/EmptyState\";\nexport * from \"./components/Fab\";\nexport * from \"./components/Form\";\nexport * from \"./components/FormControl\";\nexport * from \"./components/FormField\";\nexport * from \"./components/GlassCard\";\nexport * from \"./components/Gradient\";\nexport * from \"./components/Grid\";\nexport * from \"./components/Icon\";\nexport * from \"./components/Image\";\nexport * from \"./components/ImageList\";\nexport * from \"./components/Input\";\nexport * from \"./components/LinearProgress\";\nexport * from \"./components/Link\";\nexport * from \"./components/List\";\nexport * from \"./components/Marquee\";\nexport * from \"./components/Menu\";\nexport * from \"./components/Modal\";\nexport * from \"./components/OTPInput\";\nexport * from \"./components/Pagination\";\nexport * from \"./components/Paper\";\nexport * from \"./components/Popover\";\nexport * from \"./components/Popper\";\nexport * from \"./components/Pressable\";\nexport * from \"./components/Radio\";\nexport * from \"./components/Rating\";\nexport * from \"./components/SegmentedControl\";\nexport * from \"./components/Select\";\nexport * from \"./components/Skeleton\";\nexport * from \"./components/Slider\";\nexport * from \"./components/Snackbar\";\nexport * from \"./components/SpeedDial\";\nexport * from \"./components/Stack\";\nexport * from \"./components/Stepper\";\nexport * from \"./components/Switch\";\nexport * from \"./components/Table\";\nexport * from \"./components/Tabs\";\nexport * from \"./components/TextArea\";\nexport * from \"./components/TextField\";\nexport * from \"./components/Timeline\";\nexport * from \"./components/Toast\";\nexport * from \"./components/ToggleButton\";\nexport * from \"./components/Tooltip\";\nexport * from \"./components/Typography\";\nexport * from \"./components/TelegramTabBar\";\nexport * from \"./components/ChatListItem\";\nexport * from \"./components/MessageInput\";\nexport * from \"./components/TelegramPopup\";\nexport * from \"./components/TelegramContextMenu\";\nexport * from \"./components/TelegramSettingsMenu\";\n\n// Styles\nexport { StyleSheet } from \"react-native\";\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated, {\n useSharedValue,\n withTiming,\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n} from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useDisclosure, useTokens, useComponentTokens, usePressable, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface AccordionProps {\n expanded?: boolean;\n defaultExpanded?: boolean;\n disabled?: boolean;\n onChange?: (expanded: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport interface AccordionSummaryProps {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n}\n\nexport interface AccordionDetailsProps {\n children?: React.ReactNode;\n}\n\nexport interface AccordionActionsProps {\n children?: React.ReactNode;\n}\n\ninterface AccordionContextValue {\n expanded: boolean;\n toggle: () => void;\n disabled: boolean;\n}\n\nconst AccordionContext = createContext(null);\n\nexport function Accordion({\n expanded: controlledExpanded,\n defaultExpanded = false,\n disabled = false,\n onChange,\n children,\n}: AccordionProps) {\n const disclosure = useDisclosure({\n isOpen: controlledExpanded,\n defaultOpen: defaultExpanded,\n onOpen: () => onChange?.(true),\n onClose: () => onChange?.(false),\n });\n\n const { accordion } = useComponentTokens();\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function AccordionSummary({ children, expandIcon }: AccordionSummaryProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx) return null;\n\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress: ctx.toggle,\n disabled: ctx.disabled,\n feedbackMode: \"opacity\",\n });\n\n const reduceMotion = useReduceMotionEnabled();\n const rotation = useSharedValue(ctx.expanded ? 1 : 0);\n React.useEffect(() => {\n const target = ctx.expanded ? 1 : 0;\n rotation.value = reduceMotion ? target : withTiming(target, { duration: 200 });\n }, [ctx.expanded, reduceMotion]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ rotate: `${interpolate(rotation.value, [0, 1], [0, 180], Extrapolation.CLAMP)}deg` }],\n }));\n\n const containerStyle = useMemo(() => [\n accordion.summary,\n animatedStyle,\n ], [accordion.summary, animatedStyle]);\n\n return (\n \n \n \n {children}\n \n \n {expandIcon ?? (\n \n )}\n \n \n \n );\n}\n\nexport function AccordionDetails({ children }: AccordionDetailsProps) {\n const { accordion } = useComponentTokens();\n const ctx = useContext(AccordionContext);\n const reduceMotion = useReduceMotionEnabled();\n const [contentHeight, setContentHeight] = React.useState(0);\n const animHeight = useSharedValue(0);\n\n React.useEffect(() => {\n if (!ctx) return;\n const target = ctx.expanded ? contentHeight : 0;\n animHeight.value = reduceMotion ? target : withTiming(target, { duration: 250 });\n }, [ctx?.expanded, contentHeight, reduceMotion]);\n\n const animStyle = useAnimatedStyle(() => ({\n height: animHeight.value,\n overflow: \"hidden\",\n }));\n\n return (\n \n setContentHeight(e.nativeEvent.layout.height)}\n style={[accordion.details, { position: \"absolute\", left: 0, right: 0 }]}\n >\n {children}\n \n \n );\n}\n\nexport function AccordionActions({ children }: AccordionActionsProps) {\n const tokens = useTokens();\n const ctx = useContext(AccordionContext);\n if (!ctx?.expanded) return null;\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport {\n // Navigation & Actions\n Star,\n Heart,\n Check,\n Info,\n AlertTriangle,\n AlertCircle,\n CheckCircle,\n X,\n XCircle,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Search,\n Settings,\n Bell,\n Home,\n User,\n Plus,\n Minus,\n Edit,\n Trash,\n Share,\n Download,\n Upload,\n RefreshCw,\n ExternalLink,\n ChevronUp,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n Calendar,\n Clock,\n MapPin,\n Camera,\n Image,\n Video,\n FileText,\n Copy,\n Layout,\n Grid,\n List,\n Layers,\n Box,\n Package,\n ShoppingCart,\n CreditCard,\n Mail,\n Phone,\n MessageSquare,\n Send,\n Zap,\n Flame,\n StarHalf,\n ThumbsUp,\n ThumbsDown,\n} from \"lucide-react-native\";\n\nexport const ICON_MAP = {\n star: Star,\n heart: Heart,\n check: Check,\n info: Info,\n warning: AlertTriangle,\n error: AlertCircle,\n checkCircle: CheckCircle,\n close: X,\n closeCircle: XCircle,\n menu: Menu,\n moreVertical: MoreVertical,\n moreHorizontal: MoreHorizontal,\n search: Search,\n settings: Settings,\n bell: Bell,\n home: Home,\n user: User,\n plus: Plus,\n minus: Minus,\n edit: Edit,\n trash: Trash,\n share: Share,\n download: Download,\n upload: Upload,\n refresh: RefreshCw,\n externalLink: ExternalLink,\n chevronUp: ChevronUp,\n chevronDown: ChevronDown,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n eye: Eye,\n eyeOff: EyeOff,\n lock: Lock,\n unlock: Unlock,\n calendar: Calendar,\n clock: Clock,\n mapPin: MapPin,\n camera: Camera,\n image: Image,\n video: Video,\n file: FileText,\n copy: Copy,\n layout: Layout,\n grid: Grid,\n list: List,\n layers: Layers,\n box: Box,\n package: Package,\n cart: ShoppingCart,\n card: CreditCard,\n mail: Mail,\n phone: Phone,\n message: MessageSquare,\n send: Send,\n zap: Zap,\n flame: Flame,\n starHalf: StarHalf,\n thumbsUp: ThumbsUp,\n thumbsDown: ThumbsDown,\n} as const;\n\nexport type IconName = keyof typeof ICON_MAP;\n\nexport interface IconProps {\n /** The name of the icon. Can also be passed as children. */\n name?: IconName | string;\n /** The name of the icon as text children. */\n children?: IconName | string | React.ReactNode;\n /** Size of the icon. Can be a number or a theme preset. */\n size?: number | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"small\" | \"medium\" | \"large\";\n /** Color of the icon. Can be a raw hex or a theme preset. */\n color?: string;\n style?: any;\n}\n\n/**\n * A standardized Icon component that wraps lucide-react-native icons.\n * Provides theme-aware sizing and colors.\n */\nexport function Icon({ name, children, size, color, style }: IconProps) {\n const { icon: iconTokens } = useComponentTokens();\n const tokens = useTokens();\n \n // Resolve the icon name from either prop or children\n const iconNameString = (name ?? (typeof children === \"string\" ? children : undefined)) as IconName;\n \n const resolvedSize = typeof size === \"number\" \n ? size \n : iconTokens.size[(size ?? \"md\") as keyof typeof iconTokens.size] ?? 20;\n \n const resolvedColor = color && color in iconTokens.color\n ? iconTokens.color[color as keyof typeof iconTokens.color]\n : color ?? tokens.color.text.primary;\n\n const IconComp = ICON_MAP[iconNameString as keyof typeof ICON_MAP] || Info;\n\n return (\n \n \n \n );\n}\n\n/**\n * A helper to wrap any icon with standard sizing and colors.\n */\nexport function IconWrapper({ children, size, color }: { children: React.ReactNode; size?: number; color?: string }) {\n const tokens = useTokens();\n if (!React.isValidElement>(children)) return null;\n return React.cloneElement(children, {\n color: children.props.color ?? color ?? tokens.color.text.primary,\n size: children.props.size ?? size,\n });\n}\n","import React, { useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useAlert } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport type AlertSeverity = \"error\" | \"warning\" | \"info\" | \"success\";\nexport type AlertVariant = \"standard\" | \"filled\" | \"outlined\";\n\nexport interface AlertProps {\n /** Severity of the alert */\n severity?: AlertSeverity;\n /** Visual variant */\n variant?: AlertVariant;\n /** Custom icon or false to hide */\n icon?: React.ReactNode | false;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Callback on close button press */\n onClose?: () => void;\n /** Content of the alert */\n children?: React.ReactNode;\n}\n\nexport interface AlertTitleProps {\n children?: React.ReactNode;\n}\n\nconst SEVERITY_ICONS: Record = {\n info: \"info\",\n success: \"checkCircle\",\n warning: \"warning\",\n error: \"error\",\n};\n\nexport function Alert({\n severity = \"info\",\n variant = \"standard\",\n icon,\n action,\n onClose,\n children,\n}: AlertProps) {\n const { alert } = useComponentTokens();\n const tokens = useTokens();\n const { isOpen, getAlertProps, getCloseButtonProps } = useAlert({ onClose });\n const severityTokens = alert.variant[severity];\n\n if (!isOpen) return null;\n\n const containerStyle = useMemo(() => {\n const base = [alert.container];\n if (variant === \"filled\") {\n base.push({\n backgroundColor: severityTokens.icon,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n } else if (variant === \"outlined\") {\n base.push({\n backgroundColor: \"transparent\",\n borderColor: severityTokens.border,\n borderWidth: 1,\n } as any);\n } else {\n base.push({\n backgroundColor: severityTokens.bg,\n borderColor: \"transparent\",\n borderWidth: 0,\n } as any);\n }\n return base;\n }, [alert, severityTokens, variant]);\n\n const textColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.text;\n const iconColor = variant === \"filled\" ? \"#FFFFFF\" : severityTokens.icon;\n\n return (\n \n {icon !== false && (\n \n {icon ?? (\n \n {SEVERITY_ICONS[severity]}\n \n )}\n \n )}\n \n {children}\n \n {action}\n {onClose && (\n \n \n \n )}\n \n );\n}\n\nexport function AlertTitle({ children }: AlertTitleProps) {\n const { alert } = useComponentTokens();\n // We can't easily get the parent Alert's severity here without context,\n // but we can use a generic color or inherit from View style.\n // For now, let's use a standard bold style.\n return (\n \n {children}\n \n );\n}\n","import React, { forwardRef, useMemo } from \"react\";\nimport { View, StyleProp, ViewStyle, StyleSheet, ListRenderItemInfo } from \"react-native\";\nimport { FlatList } from \"react-native\";\nimport Animated, { FadeInDown, Layout, ReduceMotion } from \"react-native-reanimated\";\nimport { useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\ntype FlashListProps = {\n data: T[] | null | undefined;\n renderItem: (info: any) => React.ReactElement | null;\n estimatedItemSize?: number;\n contentContainerStyle?: any;\n [key: string]: any;\n};\n\nconst ReanimatedListImpl = Animated.createAnimatedComponent(FlatList as any) as any;\n\nexport interface AnimatedListProps extends Omit, \"renderItem\"> {\n /** The items to render */\n data: T[] | null | undefined;\n /** Function to render each item. Use `index` to stagger entering animations if desired. */\n renderItem: (info: ListRenderItemInfo) => React.ReactElement | null;\n /**\n * Average main-axis size of one item (usually **height** in a vertical list), in dp.\n * FlashList uses this to size the scroll window and recycle views; **pick a value close to the real\n * rendered row height** (± a few px). If this is far off, you may see scroll jumps or degraded\n * performance with little warning.\n * @see https://shopify.github.io/flash-list/docs/estimated-item-size\n */\n estimatedItemSize: number;\n /** Apply entering animation to items as they appear. Recommended: FadeInDown */\n itemEntering?: any;\n /** Apply exiting animation to items as they disappear */\n itemExiting?: any;\n /** Apply layout animation when items are reordered. Recommended: Layout.springify() */\n itemLayout?: any;\n /**\n * Automatically stagger item entry animations.\n * Note: This wraps items in an Animated.View.\n */\n staggerEntering?: boolean;\n /** Delay between staggered items in ms. Default 50 */\n staggerDelay?: number;\n /** Container style for the wrapper Animated.View */\n itemContainerStyle?: StyleProp;\n}\n\n/**\n * AnimatedList wraps @shopify/flash-list with Reanimated to provide\n * ultra-fast performance combined with smooth layout and entry animations.\n *\n * Prefer a **stable** `renderItem` (`useCallback`) and `keyExtractor` so FlashList does not recycle unnecessarily.\n */\nfunction AnimatedListInner(\n {\n data,\n renderItem,\n itemEntering = FadeInDown,\n itemExiting,\n itemLayout = Layout.springify().damping(16).stiffness(150),\n staggerEntering = false,\n staggerDelay = 50,\n itemContainerStyle,\n ...flashListProps\n }: AnimatedListProps,\n ref: any\n) {\n const { animatedList } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const effectiveEntering = reduceMotion ? undefined : itemEntering;\n const effectiveExiting = reduceMotion ? undefined : itemExiting;\n const effectiveLayout = reduceMotion ? undefined : itemLayout;\n\n const ListImpl: any = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: any };\n const Impl = mod?.FlashList ?? FlatList;\n return Animated.createAnimatedComponent(Impl as any);\n } catch {\n return ReanimatedListImpl;\n }\n }, []);\n\n const AnimatedCell = (info: any) => {\n const { index } = info;\n const enteringAnim = staggerEntering && effectiveEntering?.delay\n ? effectiveEntering.delay(Math.min(index * staggerDelay, 500))\n : effectiveEntering;\n\n return (\n \n {renderItem(info as unknown as ListRenderItemInfo)}\n \n );\n };\n\n return (\n }\n keyExtractor={(item: any, index: number) => item?.id || item?.key || String(index)}\n {...flashListProps}\n contentContainerStyle={useMemo(() => [\n animatedList.container,\n flashListProps.contentContainerStyle\n ], [animatedList.container, flashListProps.contentContainerStyle])}\n />\n );\n}\n\n// eslint-disable-next-line react/display-name\nexport const AnimatedList = forwardRef(AnimatedListInner as any) as (\n props: AnimatedListProps & { ref?: React.Ref }\n) => React.ReactElement;\n\nconst styles = StyleSheet.create({\n itemWrapper: {\n overflow: \"hidden\",\n },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface AppBarProps {\n children?: React.ReactNode;\n color?: \"default\" | \"inherit\" | \"primary\" | \"secondary\" | \"transparent\";\n variant?: \"elevation\" | \"outlined\";\n position?: \"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\";\n elevation?: 0 | 1 | 2 | 3 | 4;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function AppBar({\n children,\n color = \"primary\",\n variant = \"elevation\",\n position = \"relative\",\n elevation = 2,\n style,\n}: AppBarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n const shadows = [tokens.shadow.none, tokens.shadow.sm, tokens.shadow.md, tokens.shadow.lg, tokens.shadow.xl];\n\n const bgMap: Record = {\n default: appBar.container.backgroundColor,\n inherit: \"transparent\",\n primary: tokens.color.brand.default,\n secondary: tokens.color.brand.muted,\n transparent: \"transparent\",\n };\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ToolbarProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Toolbar({ children, style }: ToolbarProps) {\n const { appBar } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n","import React, { useState, useRef } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n Easing,\n} from \"react-native-reanimated\";\nimport { useAutocomplete, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\n\nexport interface AutocompleteProps {\n options: T[];\n value?: T | T[];\n defaultValue?: T | T[];\n multiple?: boolean;\n getOptionLabel?: (option: T) => string;\n renderOption?: (option: T, selected: boolean) => React.ReactNode;\n onChange?: (value: T | T[] | undefined) => void;\n inputValue?: string;\n onInputChange?: (value: string) => void;\n placeholder?: string;\n label?: string;\n disabled?: boolean;\n}\n\nexport function Autocomplete({\n options,\n value,\n defaultValue,\n multiple = false,\n getOptionLabel,\n renderOption,\n onChange,\n inputValue,\n onInputChange,\n placeholder = \"Select...\",\n label,\n disabled = false,\n}: AutocompleteProps) {\n const tokens = useTokens();\n const { autocomplete } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const inputRef = useRef(null);\n const [inputRect, setInputRect] = useState({ pageX: 0, pageY: 0, width: 0, height: 0 });\n const [dropdownMounted, setDropdownMounted] = useState(false);\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const {\n inputValue: query,\n setInputValue,\n isOpen,\n open,\n close,\n isSelected,\n selectOption,\n filteredOptions,\n } = useAutocomplete({\n options, value, defaultValue, multiple, getOptionLabel,\n onChange, inputValue, onInputChange,\n });\n\n const labelOf = getOptionLabel ?? ((o: T) => String(o));\n const DROPDOWN_MAX_HEIGHT = autocomplete.menu.maxHeight;\n const GAP = (autocomplete.menu as any).marginTop ?? 4;\n\n const measureAndOpen = () => {\n if (!isOpen) {\n inputRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setInputRect({ pageX, pageY, width: w, height: h });\n open();\n opacity.value = 0;\n scale.value = 0.95;\n setDropdownMounted(true);\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 160, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 300 });\n });\n });\n }\n };\n\n const handleClose = () => {\n opacity.value = withTiming(0, { duration: 120 });\n scale.value = withTiming(0.96, { duration: 120 });\n setTimeout(() => {\n close();\n setDropdownMounted(false);\n }, 130);\n };\n\n const spaceBelow = windowHeight - (inputRect.pageY + inputRect.height);\n const showAbove = spaceBelow < DROPDOWN_MAX_HEIGHT + 40;\n\n const dropdownTop = showAbove\n ? inputRect.pageY - DROPDOWN_MAX_HEIGHT - GAP\n : inputRect.pageY + inputRect.height + GAP;\n\n const dropdownAnimStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n return (\n \n {\n setInputValue(val);\n measureAndOpen();\n }}\n onFocus={measureAndOpen}\n onBlur={() => setTimeout(handleClose, 150)}\n disabled={disabled}\n />\n\n {dropdownMounted && filteredOptions.length > 0 && (\n \n \n \n {filteredOptions.map((option, idx) => {\n const selected = isSelected(option);\n return (\n {\n if (selected && !multiple) {\n // Deselect if already selected in single mode\n selectOption(undefined as any);\n } else {\n selectOption(option);\n }\n if (!multiple) handleClose();\n }}\n style={({ pressed }) => ({\n padding: autocomplete.item.padding,\n backgroundColor: pressed\n ? autocomplete.item.hover.backgroundColor\n : selected\n ? autocomplete.item.active.backgroundColor\n : \"transparent\",\n })}\n >\n {renderOption ? renderOption(option, selected) : (\n \n {labelOf(option)}\n \n )}\n \n );\n })}\n \n \n )}\n \n );\n}\n","import React, { useMemo, useState, useEffect } from \"react\";\nimport {\n TextInput as RNTextInput,\n View,\n Text,\n type TextInputProps as RNTextInputProps,\n type NativeSyntheticEvent,\n type TextInputChangeEventData,\n} from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useIconStyle } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"./AnimatedHelperText\";\n\nconst FOCUS_MS = 150;\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(RNTextInput);\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps extends Omit {\n /** Callback for when the text changes */\n onChange?: (text: string) => void;\n /** Field label shown above input (or floating inside when `floatingLabel`) */\n label?: string;\n /** Error message shown below input */\n error?: string;\n /** Helper text shown below input (overridden by error) */\n helperText?: string;\n /** Animate label inside the field (Material / Telegram-style) */\n floatingLabel?: boolean;\n /** Size preset */\n size?: InputSize;\n /** Slot for leading icon/element inside input */\n leadingElement?: React.ReactNode;\n /** Slot for trailing icon/element inside input */\n trailingElement?: React.ReactNode;\n /** Disable input */\n disabled?: boolean;\n /** Callback when error should be cleared (called on first keystroke) */\n onClearError?: () => void;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Input({\n label,\n error,\n helperText,\n floatingLabel = false,\n size = \"md\",\n leadingElement,\n trailingElement,\n disabled = false,\n onClearError,\n onFocus,\n onBlur,\n onChange,\n value,\n defaultValue,\n placeholder,\n accessibilityLabel: accessibilityLabelProp,\n ...rest\n}: InputProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n\n const [isFocused, setIsFocused] = useState(false);\n const [hasTyped, setHasTyped] = useState(false);\n const [uncontrolledText, setUncontrolledText] = useState(() =>\n defaultValue !== undefined && defaultValue !== null ? String(defaultValue) : \"\"\n );\n\n const hasValue =\n value !== undefined && value !== null\n ? String(value).length > 0\n : uncontrolledText.length > 0;\n\n const focusProgress = useSharedValue(0);\n const floatProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n useEffect(() => {\n if (!floatingLabel || !label) return;\n floatProgress.value = withTiming(isFocused || hasValue ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, hasValue, floatingLabel, label, floatProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const fl = input.floatingLabel;\n\n const animatedContainerStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const floatingLabelStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label || !fl) {\n return {};\n }\n const inactiveFs = fl.fontSize.inactive;\n const activeFs = fl.fontSize.active;\n const inactiveC = fl.color.inactive;\n const activeC = fl.color.active;\n const ty0 = fl.translateY.inactive;\n const ty1 = fl.translateY.active;\n return {\n position: \"absolute\" as const,\n left: 0,\n right: 0,\n top: interpolate(floatProgress.value, [0, 1], [16, 6]),\n transform: [{ translateY: interpolate(floatProgress.value, [0, 1], [ty0, ty1]) }],\n fontSize: interpolate(floatProgress.value, [0, 1], [inactiveFs, activeFs]),\n color: interpolateColor(floatProgress.value, [0, 1], [inactiveC, activeC]),\n pointerEvents: \"none\" as const,\n };\n }, [floatingLabel, label, fl]);\n\n const animatedInputPadStyle = useAnimatedStyle(() => {\n if (!floatingLabel || !label) {\n return {};\n }\n return {\n paddingTop: interpolate(floatProgress.value, [0, 1], [0, 12]),\n };\n }, [floatingLabel, label]);\n\n const staticContainerStyle = useMemo(() => {\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n return [\n input.container,\n input.size[size],\n !isGrouped && error && input.state.error,\n !isGrouped && disabled && input.state.disabled,\n groupedChrome,\n ];\n }, [input, size, error, disabled, isGrouped]);\n\n const handleChange = (e: NativeSyntheticEvent) => {\n const text = e.nativeEvent.text;\n if (value === undefined) {\n setUncontrolledText(text);\n }\n if (!hasTyped && text.length > 0) {\n setHasTyped(true);\n onClearError?.();\n }\n onChange?.(text);\n };\n\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? (size === \"sm\" ? tokens.fontSize.md : iconSize),\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n const placeholderResolved =\n floatingLabel && label ? (isFocused || hasValue ? placeholder ?? \"\" : \"\") : placeholder;\n\n const inner = (\n <>\n {renderIcon(leadingElement)}\n \n {floatingLabel && label ? (\n {label}\n ) : null}\n {\n setIsFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n onBlur?.(e);\n }}\n onChange={handleChange}\n placeholder={placeholderResolved}\n {...rest}\n />\n \n {renderIcon(trailingElement)}\n \n );\n\n return (\n \n {label && !floatingLabel ? {label} : null}\n\n {inner}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport type FormGroupVariant = \"standard\" | \"grouped\";\n\nexport const FormGroupContext = React.createContext(\"standard\");\n\nexport function useFormGroupVariant(): FormGroupVariant {\n return React.useContext(FormGroupContext);\n}\n","import React from \"react\";\nimport { Text, type TextStyle } from \"react-native\";\nimport Animated, { FadeIn, FadeOut } from \"react-native-reanimated\";\n\nexport interface AnimatedHelperTextProps {\n text: string | undefined;\n isError: boolean;\n style: TextStyle | TextStyle[];\n}\n\n/**\n * Subtle enter/exit for helper and error copy under fields (Reanimated layout animations).\n * Uses RN `Text` inside an `Animated.View` so test queries and a11y stay straightforward.\n */\nexport function AnimatedHelperText({ text, isError, style }: AnimatedHelperTextProps) {\n if (!text) return null;\n\n return (\n \n \n {text}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Image, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\nexport interface AvatarProps {\n /** Image URI */\n src?: string;\n /** Fallback initials if no src */\n initials?: string;\n /** Fallback when no src and no initials */\n fallbackIcon?: React.ReactNode;\n size?: AvatarSize;\n status?: AvatarStatus;\n shape?: \"circle\" | \"rounded\";\n /** Accessible label */\n accessibilityLabel?: string;\n style?: ViewStyle | ViewStyle[];\n}\n\nconst STATUS_COLORS = {\n online: \"#22C55E\",\n offline: \"#9CA3AF\",\n busy: \"#EF4444\",\n away: \"#F59E0B\",\n};\n\nconst STATUS_DOT_SIZE: Record = {\n xs: 6,\n sm: 8,\n md: 10,\n lg: 12,\n xl: 14,\n \"2xl\": 16,\n};\n\nconst STATUS_DOT_COLORS = {\n online: \"#22C55E\", // success\n away: \"#F59E0B\", // warning\n offline: \"#9CA3AF\", // muted\n busy: \"#EF4444\", // error\n} as const;\n\n// Deterministic color from initials string\nconst BG_PALETTE = [\n \"#EEEDFE\", // purple-50\n \"#E1F5EE\", // teal-50\n \"#FAECE7\", // coral-50\n \"#FBEAF0\", // pink-50\n \"#EAF3DE\", // green-50\n \"#FAEEDA\", // amber-50\n \"#E6F1FB\", // blue-50\n];\nconst TEXT_PALETTE = [\n \"#3C3489\",\n \"#085041\",\n \"#712B13\",\n \"#72243E\",\n \"#27500A\",\n \"#633806\",\n \"#0C447C\",\n];\n\nconst colorIndexCache = new Map();\n\nfunction getColorIndex(str: string): number {\n const cached = colorIndexCache.get(str);\n if (cached !== undefined) return cached;\n let hash = 0;\n for (let i = 0; i < str.length; i++) hash = str.charCodeAt(i) + ((hash << 5) - hash);\n const result = Math.abs(hash) % BG_PALETTE.length;\n colorIndexCache.set(str, result);\n return result;\n}\n\n// ─── Avatar ───────────────────────────────────────────────────────\n\nexport function Avatar({\n src,\n initials,\n fallbackIcon,\n size = \"md\",\n status,\n shape = \"circle\",\n accessibilityLabel,\n style,\n}: AvatarProps) {\n const { avatar } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatar.size[size];\n const radius = shape === \"circle\" ? sizeConfig.borderRadius : tokens.radius.md;\n const colorIdx = initials ? getColorIndex(initials) : 0;\n\n const dotSize = status ? STATUS_DOT_SIZE[size] : 0;\n\n return (\n \n {src ? (\n \n ) : initials ? (\n \n \n {initials.slice(0, 2).toUpperCase()}\n \n \n ) : (\n // Generic fallback\n \n {fallbackIcon ?? (\n \n ?\n \n )}\n \n )}\n\n {/* Status dot */}\n {status && (\n \n )}\n \n );\n}\n\n// ─── AvatarGroup ──────────────────────────────────────────────────\n\nexport interface AvatarGroupProps {\n avatars: AvatarProps[];\n max?: number;\n size?: AvatarSize;\n overlap?: number;\n}\n\nexport function AvatarGroup({\n avatars,\n max = 4,\n size = \"md\",\n overlap,\n}: AvatarGroupProps) {\n const { avatar: avatarTokens } = useComponentTokens();\n const tokens = useTokens();\n const sizeConfig = avatarTokens.size[size];\n const dim = sizeConfig.width;\n const gap = overlap ?? Math.round(dim * 0.3);\n\n const visible = avatars.slice(0, max);\n const overflow = avatars.length - max;\n\n return (\n 0 ? dim - gap : 0),\n height: dim,\n }}\n >\n {visible.map((avatar, i) => (\n \n \n \n ))}\n\n {overflow > 0 && (\n \n \n +{overflow}\n \n \n )}\n \n );\n}","import React, { useMemo } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type BadgeVariant = \"default\" | \"brand\" | \"success\" | \"warning\" | \"error\" | \"info\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps {\n label?: string;\n count?: number | string;\n variant?: BadgeVariant;\n size?: BadgeSize;\n icon?: React.ReactNode;\n dot?: boolean;\n style?: any;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nconst BADGE_ROW_GAP: Record = { sm: 3, md: 4, lg: 6 };\n\nexport const Badge = React.memo(({ label, count, variant = \"default\", size = \"md\", icon, dot = false }: BadgeProps) => {\n const { badge } = useComponentTokens();\n\n const { fontSize, sizeBox } = useMemo(() => {\n const { fontSize: fs, ...rest } = badge.size[size];\n return { fontSize: fs, sizeBox: rest };\n }, [badge.size, size]);\n\n const iconPx = Math.round(fontSize * 0.85);\n\n const containerStyle = useMemo(\n () => [\n badge.base,\n sizeBox,\n {\n backgroundColor: badge.variant[variant].bg,\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n gap: BADGE_ROW_GAP[size],\n },\n ],\n [badge.base, badge.variant, sizeBox, variant, size]\n );\n\n const textStyle = useMemo(\n () => [badge.text, { color: badge.variant[variant].text, fontSize }],\n [badge.text, badge.variant, variant, fontSize]\n );\n\n const iconColor = String(badge.variant[variant].text);\n\n // Helper to clone icon with standardized props\n const renderIcon = (el: React.ReactNode) => {\n if (!el) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(el)) {\n return React.cloneElement(el, {\n size: el.props.size ?? iconPx,\n color: el.props.color ?? iconColor,\n });\n }\n return el;\n };\n\n const textPart =\n label !== undefined ? label : count !== undefined ? String(count) : null;\n\n const dotDim =\n size === \"sm\"\n ? Math.max(6, Math.round(badge.dot.size * 0.875))\n : size === \"lg\"\n ? Math.round(badge.dot.size * 1.25)\n : badge.dot.size;\n\n return (\n \n {!dot && renderIcon(icon)}\n {!dot && textPart !== null && {textPart}}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useComponentTokens, useBottomNavigation } from \"@truongdq01/headless\";\n\nexport interface BottomNavigationProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n showLabels?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface BottomNavigationActionProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n}\n\ninterface BottomNavContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T) => any;\n showLabels: boolean;\n}\n\nconst BottomNavContext = createContext | null>(null);\n\nexport function BottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n showLabels = false,\n children,\n}: BottomNavigationProps) {\n const { bottomNavigation } = useComponentTokens();\n const { value, isSelected, getItemProps } = useBottomNavigation({\n value: controlledValue,\n defaultValue,\n onChange,\n });\n\n const ctx = useMemo(() => ({ value, isSelected, getItemProps, showLabels }), [value, isSelected, getItemProps, showLabels]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function BottomNavigationAction({ value, label, icon }: BottomNavigationActionProps) {\n const { bottomNavigation } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(BottomNavContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n\n return (\n \n {icon}\n {(ctx.showLabels || selected) && label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { View, StyleSheet, Dimensions, Modal } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBottomSheet, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UseBottomSheetOptions, SnapPoint } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface BottomSheetProps extends UseBottomSheetOptions {\n children: React.ReactNode;\n /** Show the pill-shaped drag handle at top */\n showHandle?: boolean;\n /** Horizontal border radius on the sheet. If not provided, uses theme token. */\n borderRadius?: number;\n /** Accessibility label for the sheet container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport interface BottomSheetRef {\n open: (snapIndex?: number) => void;\n close: () => void;\n snapTo: (index: number) => void;\n}\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport const BottomSheet = forwardRef(\n function BottomSheet(\n {\n children,\n snapPoints = [\"50%\"] as SnapPoint[],\n initialSnapIndex,\n onClose,\n onSnapChange,\n enableDismissOnSwipe = true,\n enableBackdrop = true,\n showHandle = true,\n borderRadius,\n accessibilityLabel = \"Bottom sheet\",\n backdropAccessibilityLabel = \"Dismiss bottom sheet\",\n },\n ref\n ) {\n const { bottomSheet } = useComponentTokens();\n const insets = useSafeAreaInsets();\n const [mounted, setMounted] = useState(false);\n\n const handleClose = React.useCallback(() => {\n setMounted(false);\n onClose?.();\n }, [onClose]);\n\n const {\n open: baseOpen,\n close: baseClose,\n snapTo,\n sheetAnimatedStyle,\n backdropAnimatedStyle,\n panGesture,\n backdropTapGesture,\n } = useBottomSheet({\n snapPoints,\n initialSnapIndex,\n onClose: handleClose,\n onSnapChange,\n enableDismissOnSwipe,\n enableBackdrop,\n });\n\n const open = React.useCallback((idx?: number) => {\n setMounted(true);\n requestAnimationFrame(() => {\n baseOpen(idx);\n });\n }, [baseOpen]);\n\n // Expose imperative API via ref\n useImperativeHandle(ref, () => ({ open, close: baseClose, snapTo }), [open, baseClose, snapTo]);\n\n return (\n \n \n {/* Backdrop */}\n {enableBackdrop && (\n \n \n \n )}\n\n {/* Sheet */}\n \n {/* Drag handle area — full-width tap target */}\n \n \n {showHandle && (\n \n )}\n \n \n\n {/* Content */}\n {children}\n \n \n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n sheet: {\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: SCREEN_HEIGHT,\n },\n handleArea: {\n width: \"100%\",\n height: 28,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n handle: {\n width: 36,\n height: 4,\n borderRadius: 2,\n },\n});","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[];\n sx?: ViewStyle | ViewStyle[];\n flex?: number;\n}\n\nexport function Box({ children, style, sx, flex }: BoxProps) {\n const { box } = useComponentTokens();\n const merged = [\n box.defaults,\n flex !== undefined ? { flex } : null,\n sx,\n style\n ];\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface BreadcrumbsProps {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n}\n\nexport function Breadcrumbs({\n children,\n separator = \"/\",\n maxItems = 8,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n}: BreadcrumbsProps) {\n const { breadcrumbs } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n let displayItems = items;\n if (items.length > maxItems) {\n displayItems = [\n ...items.slice(0, itemsBeforeCollapse),\n ...,\n ...items.slice(items.length - itemsAfterCollapse),\n ];\n }\n\n return (\n \n {displayItems.map((child, idx) => (\n \n {child}\n {idx < displayItems.length - 1 && (\n {separator}\n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { ActivityIndicator, Text, View, StyleSheet, Linking, type StyleProp, type ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens, useIconStyle, useTokens } from \"@truongdq01/headless\";\nimport type { PressFeedbackMode } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\n/**\n * Available button visual style variants\n */\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"text\"\n | \"contained\"\n | \"outlined\";\n\n/**\n * Available button size presets\n */\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Available button color themes\n */\nexport type ButtonColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"accent\"; // Amber CTA — stands out from brand violet\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Color theme */\n color?: ButtonColor;\n /** Size preset */\n size?: ButtonSize;\n /** Button label (optional for icon-only buttons) */\n label?: string;\n /** Optional children (preferred over label) */\n children?: React.ReactNode;\n /** Called on press */\n onPress?: () => void;\n /** Called on long press */\n onLongPress?: () => void;\n /** Disable all interaction and apply disabled styles */\n disabled?: boolean;\n /** Show loading spinner, disable interaction */\n loading?: boolean;\n /** Custom loading indicator */\n loadingIndicator?: React.ReactNode;\n /** Loading indicator placement */\n loadingPosition?: \"start\" | \"end\" | \"center\";\n /** Slot for leading icon */\n leadingIcon?: React.ReactNode;\n /** Slot for trailing icon */\n trailingIcon?: React.ReactNode;\n /** Alias for leadingIcon */\n startIcon?: React.ReactNode;\n /** Alias for trailingIcon */\n endIcon?: React.ReactNode;\n /** Override press feedback mode */\n feedbackMode?: PressFeedbackMode;\n /** Fill container width */\n fullWidth?: boolean;\n /** Render as link */\n href?: string;\n /** Remove drop shadow */\n disableElevation?: boolean;\n /** Additional style override */\n style?: object;\n /** Accessibility label override (defaults to label) */\n accessibilityLabel?: string;\n /** Accessibility hint */\n accessibilityHint?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Button component with multiple variants, sizes, and interaction states.\n * Supports icons, loading states, accessibility, and gesture feedback.\n *\n * @param props - Button configuration props\n * @returns Memoized React button component\n *\n * @example\n * ```tsx\n * console.log('Pressed')}\n * >\n * Click me\n * \n * ```\n *\n * @example With loading state\n * ```tsx\n * \n * ```\n */\nexport const Button = React.memo(({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n label,\n children,\n onPress,\n onLongPress,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n leadingIcon,\n trailingIcon,\n startIcon,\n endIcon,\n feedbackMode = \"scale\",\n fullWidth = false,\n href,\n disableElevation = false,\n style,\n accessibilityLabel,\n accessibilityHint,\n}: ButtonProps) => {\n const { button } = useComponentTokens();\n const tokens = useTokens();\n const { size: iconSize } = useIconStyle(\"button\");\n const isDisabled = disabled || loading;\n\n const resolvedVariant: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" = useMemo(() => {\n if (variant === \"contained\") return \"solid\";\n if (variant === \"outlined\") return \"outline\";\n if (variant === \"text\") return \"ghost\";\n return variant as \"solid\" | \"outline\" | \"ghost\" | \"destructive\";\n }, [variant]);\n\n const resolvedColor = useMemo(() => {\n if (color === \"inherit\") {\n return {\n main: tokens.color.text.primary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"secondary\") {\n return {\n main: tokens.color.text.secondary,\n subtle: tokens.color.bg.muted,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"success\") {\n return {\n main: tokens.color.success.icon,\n subtle: tokens.color.success.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"warning\") {\n return {\n main: tokens.color.warning.icon,\n subtle: tokens.color.warning.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"error\") {\n return {\n main: tokens.color.error.icon,\n subtle: tokens.color.error.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"info\") {\n return {\n main: tokens.color.info.icon,\n subtle: tokens.color.info.bg,\n textOn: tokens.color.text.inverse,\n };\n }\n if (color === \"accent\") {\n return {\n main: tokens.color.accent.default,\n subtle: tokens.color.accent.subtle,\n textOn: tokens.color.accent.onAccent,\n };\n }\n return {\n main: tokens.color.brand.default,\n subtle: tokens.color.brand.subtle,\n textOn: tokens.color.text.inverse,\n };\n }, [color, tokens]);\n\n const handlePress = useCallback(() => {\n if (!href) {\n onPress?.();\n return;\n }\n onPress?.();\n void Linking.openURL(href).catch(() => {});\n }, [href, onPress]);\n\n const hitSlop = useMemo(() => {\n const height = button.size[size].container.height;\n const padding = Math.max(0, (44 - height) / 2);\n // If it's an icon-only button, width might also be small\n const isIconOnly = !label && !children;\n const horizontalPadding = isIconOnly ? padding : 0;\n return { top: padding, bottom: padding, left: horizontalPadding, right: horizontalPadding };\n }, [button, size, label, children]);\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: handlePress,\n onLongPress,\n disabled: isDisabled,\n feedbackMode,\n accessibilityLabel: accessibilityLabel ?? (typeof children === \"string\" ? children : label),\n accessibilityHint,\n accessibilityRole: \"button\",\n hitSlop,\n });\n\n // Resolve styles from component tokens — only recomputes on theme change\n const containerStyle = useMemo(() => [\n button.variant[resolvedVariant].container,\n button.size[size].container,\n fullWidth && { alignSelf: \"stretch\" as const },\n isDisabled && button.disabled.container,\n !label && !children && { paddingHorizontal: button.size[size].container.paddingHorizontal / 2, width: button.size[size].container.height },\n disableElevation && tokens.shadow.none,\n resolvedVariant === \"solid\" && { backgroundColor: resolvedColor.main },\n resolvedVariant === \"outline\" && { borderColor: resolvedColor.main },\n resolvedVariant === \"ghost\" && { backgroundColor: resolvedColor.subtle },\n resolvedVariant === \"destructive\" && { backgroundColor: tokens.color.error.bg, borderColor: tokens.color.error.border },\n style,\n ], [button, resolvedVariant, size, fullWidth, isDisabled, label, children, disableElevation, tokens, resolvedColor, style]);\n\n const textStyle = useMemo(() => [\n button.variant[resolvedVariant].text,\n button.size[size].text,\n resolvedVariant === \"solid\" && { color: resolvedColor.textOn || tokens.color.text.inverse },\n resolvedVariant === \"outline\" && { color: resolvedColor.main },\n resolvedVariant === \"ghost\" && { color: resolvedColor.main },\n resolvedVariant === \"destructive\" && { color: tokens.color.error.text },\n ], [button, resolvedVariant, size, resolvedColor, tokens]);\n\n const resolvedLabelColor = useMemo(() => {\n switch (resolvedVariant) {\n case \"solid\":\n return String(resolvedColor.textOn ?? tokens.color.text.inverse);\n case \"outline\":\n case \"ghost\":\n return String(resolvedColor.main);\n case \"destructive\":\n return String(tokens.color.error.text);\n default: {\n const _never: never = resolvedVariant;\n throw new Error(`Unexpected button variant: ${_never}`);\n }\n }\n }, [resolvedVariant, resolvedColor, tokens]);\n\n const iconColor = resolvedLabelColor;\n const content = children ?? label;\n const isTextContent = typeof content === \"string\" || typeof content === \"number\";\n const leading = startIcon ?? leadingIcon;\n const trailing = endIcon ?? trailingIcon;\n\n // Helper to clone icon with standardized props\n const renderIcon = (icon: React.ReactNode) => {\n if (!icon) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(icon)) {\n return React.cloneElement(icon, {\n size: icon.props.size ?? iconSize,\n color: icon.props.color ?? iconColor,\n });\n }\n return icon;\n };\n\n return (\n \n }\n {...accessibilityProps}\n >\n \n {loading && loadingPosition === \"start\" && (loadingIndicator ?? )}\n {renderIcon(leading)}\n {isTextContent ? {content} : content}\n {renderIcon(trailing)}\n {loading && loadingPosition === \"end\" && (loadingIndicator ?? )}\n \n\n {loading && loadingPosition === \"center\" && (\n \n {loadingIndicator ?? }\n \n )}\n \n \n );\n});\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n loadingWrapper: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React from \"react\";\nimport { View } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ButtonGroupProps {\n children?: React.ReactNode;\n variant?: \"solid\" | \"outline\" | \"ghost\" | \"destructive\" | \"text\" | \"contained\" | \"outlined\";\n size?: \"sm\" | \"md\" | \"lg\";\n orientation?: \"horizontal\" | \"vertical\";\n disabled?: boolean;\n fullWidth?: boolean;\n}\n\nexport function ButtonGroup({\n children,\n variant = \"outlined\",\n size = \"md\",\n orientation = \"horizontal\",\n disabled = false,\n fullWidth = false,\n}: ButtonGroupProps) {\n const tokens = useTokens();\n const { buttonGroup } = useComponentTokens();\n const isRow = orientation === \"horizontal\";\n\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child, i) => {\n if (!React.isValidElement<{\n variant?: string;\n size?: string;\n disabled?: boolean;\n fullWidth?: boolean;\n style?: any;\n }>(child)) return child;\n const isFirst = i === 0;\n const isLast = i === items.length - 1;\n\n const borderStyle = isRow\n ? {\n borderRightWidth: isLast ? 0 : buttonGroup.divider.width,\n borderRightColor: buttonGroup.divider.backgroundColor,\n }\n : {\n borderBottomWidth: isLast ? 0 : buttonGroup.divider.width,\n borderBottomColor: buttonGroup.divider.backgroundColor,\n };\n\n const radiusStyle = isFirst\n ? isRow\n ? { borderTopLeftRadius: buttonGroup.container.borderRadius, borderBottomLeftRadius: buttonGroup.container.borderRadius }\n : { borderTopLeftRadius: buttonGroup.container.borderRadius, borderTopRightRadius: buttonGroup.container.borderRadius }\n : isLast\n ? isRow\n ? { borderTopRightRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderBottomLeftRadius: buttonGroup.container.borderRadius, borderBottomRightRadius: buttonGroup.container.borderRadius }\n : { borderRadius: 0 };\n\n return React.cloneElement(child, {\n variant,\n size,\n disabled: disabled || child.props.disabled,\n fullWidth: fullWidth || child.props.fullWidth,\n style: [\n { borderRadius: 0, borderWidth: 0 },\n borderStyle,\n radiusStyle,\n child.props.style,\n ].filter(Boolean),\n });\n })}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { View, StyleProp, ViewStyle } from \"react-native\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport type CardPadding = \"sm\" | \"md\" | \"lg\" | \"none\";\n\nexport interface CardProps {\n children: React.ReactNode;\n /** If provided, card becomes pressable */\n onPress?: () => void;\n /** Inner padding preset */\n padding?: CardPadding;\n /** Accessibility label (required if pressable) */\n accessibilityLabel?: string;\n /** Additional style override */\n style?: StyleProp;\n}\n\n// ─── Component ────────────────────────────────────────────────────\n\nexport function Card({\n children,\n onPress,\n padding = \"md\",\n accessibilityLabel,\n style,\n}: CardProps) {\n const { card } = useComponentTokens();\n\n const containerStyle = useMemo(() => [\n card.container,\n padding !== \"none\" && { padding: card.padding[padding] },\n style,\n ], [card, padding, style]);\n\n if (onPress) {\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress,\n feedbackMode: \"scaleSubtle\",\n accessibilityLabel,\n accessibilityRole: \"button\",\n });\n\n return (\n \n {/* Reanimated style prop is stricter than RN StyleProp when project uses web types; cast merged styles */}\n \n {children}\n \n \n );\n }\n\n return (\n \n {children}\n \n );\n}","import React from \"react\";\nimport { View, ScrollView, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n interpolate,\n Extrapolation,\n SharedValue,\n} from \"react-native-reanimated\";\nimport { useCarousel, useComponentTokens } from \"@truongdq01/headless\";\n\nfunction defaultKeyExtractor(_item: T, index: number): string {\n return `carousel-${index}`;\n}\n\n/** Stable React keys for slides; loop clones get `-loop-prev` / `-loop-next` suffixes. */\nfunction getSlideKey(\n item: T,\n indexInDisplay: number,\n loop: boolean,\n n: number,\n keyExtractor: (item: T, index: number) => string\n): string {\n if (!loop || n < 2) {\n return keyExtractor(item, indexInDisplay);\n }\n if (indexInDisplay === 0) {\n return `${keyExtractor(item, n - 1)}-loop-prev`;\n }\n if (indexInDisplay === n + 1) {\n return `${keyExtractor(item, 0)}-loop-next`;\n }\n return keyExtractor(item, indexInDisplay - 1);\n}\n\nexport interface CarouselProps {\n data: T[];\n renderItem: (item: T, index: number) => React.ReactNode;\n itemWidth?: number;\n gap?: number;\n height?: number;\n showPagination?: boolean;\n loop?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n /** Stable key per data item; loop mode appends `-loop-prev` / `-loop-next` for edge clones. */\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function Carousel({\n data,\n renderItem,\n itemWidth,\n gap = 0,\n height = 200,\n showPagination = true,\n loop = false,\n autoPlay = false,\n autoPlayInterval = 3000,\n keyExtractor = defaultKeyExtractor,\n}: CarouselProps) {\n const { width: windowWidthPx } = useWindowDimensions();\n const windowWidth = Math.max(1, windowWidthPx > 0 ? windowWidthPx : 375);\n const resolvedItemWidth = itemWidth ?? windowWidth;\n const contentPaddingStart = (windowWidth - resolvedItemWidth) / 2;\n\n const { carousel } = useComponentTokens();\n const {\n scrollViewRef,\n scrollX,\n displayData,\n snapToOffsets,\n onScroll,\n onMomentumScrollEnd,\n itemStep,\n n,\n contentPaddingStart: snapPad,\n } = useCarousel({\n data,\n itemWidth: resolvedItemWidth,\n gap,\n contentPaddingStart,\n loop,\n autoPlay,\n autoPlayInterval,\n });\n\n if (data.length === 0) {\n return null;\n }\n\n return (\n \n \n {displayData.map((item: T, index: number) => {\n return (\n \n {renderItem(item, loop ? (index - 1 + n) % n : index)}\n \n );\n })}\n \n\n {showPagination && (\n \n {data.map((_, i) => {\n return (\n \n );\n })}\n \n )}\n \n );\n}\n\nfunction PaginationDot({\n index,\n scrollX,\n itemStep,\n contentPaddingStart,\n isLoop,\n n,\n dot,\n}: {\n index: number;\n scrollX: SharedValue;\n itemStep: number;\n contentPaddingStart: number;\n isLoop: boolean;\n n: number;\n dot: ReturnType[\"carousel\"][\"dot\"];\n}) {\n const dotStyle = useAnimatedStyle(() => {\n let activeIndex = (scrollX.value - contentPaddingStart) / itemStep;\n if (isLoop) {\n activeIndex = activeIndex - 1;\n if (activeIndex < 0) activeIndex = n - 1;\n if (activeIndex >= n) activeIndex = 0;\n }\n\n const opacity = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.opacity, 1, dot.inactive.opacity],\n Extrapolation.CLAMP\n );\n\n const width = interpolate(\n activeIndex,\n [index - 1, index, index + 1],\n [dot.inactive.width, dot.active.width, dot.inactive.width],\n Extrapolation.CLAMP\n );\n\n return {\n width,\n opacity,\n backgroundColor: dot.active.bg,\n height: dot.height,\n borderRadius: dot.borderRadius,\n };\n });\n\n return ;\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useCheckbox, useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseCheckboxOptions } from \"@truongdq01/headless\";\n\nexport interface CheckboxProps extends UseCheckboxOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Checkbox({\n label,\n description,\n size = \"md\",\n ...hookOptions\n}: CheckboxProps) {\n const { checkbox } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isChecked, isIndeterminate, isDisabled, toggle, accessibilityProps } =\n useCheckbox(hookOptions);\n\n const sizeConfig = checkbox.size[size];\n\n // Animated values\n const scale = useSharedValue(1);\n const fillProgress = useSharedValue(isChecked || isIndeterminate ? 1 : 0);\n\n React.useEffect(() => {\n const target = isChecked || isIndeterminate ? 1 : 0;\n fillProgress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isChecked, isIndeterminate, reduceMotion]);\n\n const boxStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.backgroundColor, checkbox.state.checked.backgroundColor]\n ),\n borderColor: interpolateColor(\n fillProgress.value,\n [0, 1],\n [checkbox.state.default.borderColor, checkbox.state.checked.borderColor]\n ),\n transform: [{ scale: scale.value }],\n }));\n\n const checkStyle = useAnimatedStyle(() => ({\n opacity: fillProgress.value,\n transform: [{ scale: fillProgress.value }],\n }));\n\n const handlePress = () => {\n if (!reduceMotion) {\n scale.value = withSpring(0.88, spring.snappy, () => {\n scale.value = withSpring(1, spring.snappy);\n });\n }\n toggle();\n };\n\n return (\n \n \n \n {isIndeterminate ? (\n \n ) : (\n \n ✓\n \n )}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens, useIconStyle, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ChipProps {\n label: React.ReactNode;\n variant?: \"solid\" | \"outlined\" | \"subtle\";\n color?: \"default\" | \"primary\" | \"secondary\" | \"error\" | \"info\" | \"success\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n avatar?: React.ReactNode;\n icon?: React.ReactNode;\n deleteIcon?: React.ReactNode;\n onDelete?: () => void;\n onClick?: () => void;\n disabled?: boolean;\n clickable?: boolean;\n}\n\nexport function Chip({\n label,\n variant = \"solid\",\n color = \"default\",\n size = \"md\",\n avatar,\n icon,\n deleteIcon,\n onDelete,\n onClick,\n disabled = false,\n clickable = false,\n}: ChipProps) {\n const tokens = useTokens();\n const { chip } = useComponentTokens();\n const { size: iconSize, color: iconColor } = useIconStyle(\"list\");\n\n const palette = {\n default: { bg: tokens.color.bg.muted, text: tokens.color.text.primary, border: tokens.color.border.default },\n primary: { bg: tokens.color.brand.subtle, text: tokens.color.brand.text, border: tokens.color.brand.default },\n secondary: { bg: tokens.color.brand.muted, text: tokens.color.brand.text, border: tokens.color.brand.default },\n success: { bg: tokens.color.success.bg, text: tokens.color.success.text, border: tokens.color.success.border },\n error: { bg: tokens.color.error.bg, text: tokens.color.error.text, border: tokens.color.error.border },\n info: { bg: tokens.color.info.bg, text: tokens.color.info.text, border: tokens.color.info.border },\n warning: { bg: tokens.color.warning.bg, text: tokens.color.warning.text, border: tokens.color.warning.border },\n } as const;\n\n const colors = palette[color];\n const vStyle = chip.variant[variant];\n\n // Map specific color overrides matching the palette to variant styling\n const customBg = variant === \"solid\" && color !== \"default\" ? colors.bg : vStyle.bg;\n const customBorder = variant === \"outlined\" && color !== \"default\" ? colors.border : vStyle.border;\n const customText = color !== \"default\" ? colors.text : vStyle.text;\n\n const sizeStyle = chip.size[size] || chip.size.md;\n \n const container = {\n flexDirection: chip.container.flexDirection,\n alignItems: chip.container.alignItems,\n justifyContent: chip.container.justifyContent,\n gap: tokens.spacing[2],\n paddingHorizontal: sizeStyle.paddingHorizontal,\n paddingVertical: tokens.spacing[1],\n height: sizeStyle.height,\n borderRadius: chip.container.borderRadius,\n backgroundColor: customBg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: customBorder,\n opacity: disabled ? tokens.opacity[60] : 1,\n minHeight: size === \"sm\" ? 24 : size === \"lg\" ? 40 : 32,\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? (size === \"sm\" ? 14 : 16),\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const avatarStyle = {\n width: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n height: size === \"sm\" ? 20 : size === \"lg\" ? 28 : 24,\n borderRadius: 12,\n marginRight: tokens.spacing[1],\n };\n\n const deleteButtonStyle = {\n padding: tokens.spacing[1],\n marginLeft: tokens.spacing[1],\n borderRadius: tokens.radius.full,\n minWidth: 28,\n minHeight: 28,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n };\n\n const content = (\n \n {avatar && {avatar}}\n {renderIcon(icon)}\n \n {label}\n \n {onDelete && (\n \n {deleteIcon ?? (\n ×\n )}\n \n )}\n \n );\n\n if (onClick || clickable) {\n return (\n \n {content}\n \n );\n }\n\n return content;\n}\n","import React from \"react\";\nimport { ActivityIndicator, View, Text, StyleSheet } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n/**\n * Available progress indicator variants\n */\nexport type CircularProgressVariant = \"indeterminate\" | \"determinate\";\n\n/**\n * Available progress indicator colors\n */\nexport type CircularProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"inherit\";\n\n/**\n * Props for the CircularProgress component\n */\nexport interface CircularProgressProps {\n size?: number | \"sm\" | \"md\" | \"lg\" | \"small\" | \"medium\" | \"large\";\n color?: CircularProgressColor;\n thickness?: number;\n value?: number;\n variant?: CircularProgressVariant;\n showLabel?: boolean;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Circular progress indicator component using native ActivityIndicator.\n * Supports both indeterminate and determinate progress with accessibility.\n *\n * @param props - Progress indicator configuration\n * @returns React progress component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function CircularProgress({\n size = \"md\",\n color = \"primary\",\n thickness,\n value = 0,\n variant = \"indeterminate\",\n showLabel = false,\n style,\n}: CircularProgressProps) {\n const tokens = useTokens();\n const { circularProgress } = useComponentTokens();\n\n const sizeMap: Record = {\n sm: circularProgress.size.sm,\n md: circularProgress.size.md,\n lg: circularProgress.size.lg,\n small: circularProgress.size.sm,\n medium: circularProgress.size.md,\n large: circularProgress.size.lg,\n };\n\n const resolvedSize = typeof size === \"number\" ? size : sizeMap[size] || circularProgress.size.md;\n const resolvedColor = {\n primary: circularProgress.color,\n secondary: tokens.color.text.secondary,\n success: tokens.color.success.icon,\n error: tokens.color.error.icon,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color];\n\n const progressValue = clamp(value);\n\n return (\n \n \n {variant === \"determinate\" && showLabel && (\n \n \n \n {Math.round(progressValue)}%\n \n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n labelContainer: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n});\n","import React, { useState, useMemo } from \"react\";\nimport { View, Text, Pressable, Platform, Modal, StyleSheet } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\nimport DateTimePicker from \"@react-native-community/datetimepicker\";\nimport { Icon } from \"../Icon\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { TimePickerWheels } from \"./TimePickerWheels\";\n\nexport type DatePickerPreset = \"today\" | \"yesterday\" | \"last7\" | \"last30\" | \"last90\" | null;\n\nexport type DatePickerStyle = \"calendar\" | \"spinner\" | \"native\";\n\nexport interface DatePickerProps {\n label?: string;\n date: Date | null;\n onChange: (date: Date) => void;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n icon?: React.ReactNode;\n minimumDate?: Date;\n maximumDate?: Date;\n mode?: \"date\" | \"time\" | \"datetime\";\n presets?: DatePickerPreset[];\n onPresetChange?: (preset: DatePickerPreset) => void;\n clearable?: boolean;\n /**\n * `\"calendar\"` — custom CalendarGrid in a bottom-sheet-style modal (default for date mode).\n * `\"spinner\"` — iOS drum-roll / Android native.\n * `\"native\"` — platform-default DateTimePicker.\n */\n pickerStyle?: DatePickerStyle;\n /** Forwarded to `@react-native-community/datetimepicker` — behavior is platform-specific. */\n locale?: string;\n /** Forwarded to `@react-native-community/datetimepicker`. */\n timeZoneOffsetInMinutes?: number;\n /** Forwarded to `@react-native-community/datetimepicker` (Android / newer iOS). */\n timeZoneOffsetInSeconds?: number;\n /** IANA tz name; forwarded to `@react-native-community/datetimepicker`. */\n timeZoneName?: string;\n}\n\nexport function DatePicker({\n label,\n date,\n onChange,\n placeholder = \"Select date\",\n disabled = false,\n error,\n icon,\n minimumDate,\n maximumDate,\n mode = \"date\",\n presets = [\"today\", \"last7\", \"last30\"],\n onPresetChange,\n clearable = true,\n pickerStyle: pickerStyleProp,\n locale,\n timeZoneOffsetInMinutes,\n timeZoneOffsetInSeconds,\n timeZoneName,\n}: DatePickerProps) {\n const { input } = useComponentTokens();\n const tokens = useTokens();\n const insets = useSafeAreaInsets();\n const { size: iconSize, color: iconColor } = useIconStyle(\"input\");\n const [showPicker, setShowPicker] = useState(false);\n const [selectedPreset, setSelectedPreset] = useState(null);\n const [pickerDraft, setPickerDraft] = useState(() => date ?? new Date());\n const [yearPick, setYearPick] = useState(false);\n\n const initDate = date ?? new Date();\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n\n const effectivePickerStyle: DatePickerStyle = pickerStyleProp ?? \"calendar\";\n\n const yearOptions = useMemo(() => Array.from({ length: 12 }, (_, i) => calYear - 5 + i), [calYear]);\n\n const modalTitle =\n mode === \"time\" ? \"Select time\" : mode === \"datetime\" ? \"Select date & time\" : \"Select date\";\n\n const handleCalendarMonthChange = (m: number, y: number) => {\n setCalMonth(m);\n setCalYear(y);\n };\n\n const formattedDate = date\n ? mode === \"time\"\n ? date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })\n : mode === \"datetime\"\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" })}`\n : date.toLocaleDateString()\n : \"\";\n\n const displayValue = date ? formattedDate : placeholder;\n\n const getPresetDate = (preset: DatePickerPreset): Date => {\n const now = new Date();\n switch (preset) {\n case \"today\": return now;\n case \"yesterday\": return new Date(now.setDate(now.getDate() - 1));\n case \"last7\": return new Date(now.setDate(now.getDate() - 7));\n case \"last30\": return new Date(now.setDate(now.getDate() - 30));\n case \"last90\": return new Date(now.setDate(now.getDate() - 90));\n default: return now;\n }\n };\n\n const handlePresetPress = (preset: DatePickerPreset) => {\n if (!preset || disabled) return;\n const presetDate = getPresetDate(preset);\n onChange(presetDate);\n setSelectedPreset(preset);\n onPresetChange?.(preset);\n };\n\n const handleClear = () => {\n setSelectedPreset(null);\n onPresetChange?.(null);\n };\n\n const handlePressTrigger = () => {\n if (disabled) return;\n const ref = date ?? new Date();\n setPickerDraft(ref);\n setCalMonth(ref.getMonth());\n setCalYear(ref.getFullYear());\n setYearPick(false);\n setShowPicker(true);\n };\n\n const handleChange = (_event: any, selectedDate?: Date) => {\n if (Platform.OS === \"android\") {\n setShowPicker(false);\n }\n if (selectedDate) {\n setSelectedPreset(null);\n onChange(selectedDate);\n }\n };\n\n const renderIcon = (node: React.ReactNode) => {\n if (!node) return null;\n if (React.isValidElement<{ size?: number | string; color?: string }>(node)) {\n return React.cloneElement(node, {\n size: node.props.size ?? iconSize,\n color: node.props.color ?? iconColor,\n });\n }\n return node;\n };\n\n const pickerComponent = showPicker ? (\n \n ) : null;\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n {/* Quick presets */}\n {presets && presets.length > 0 && (\n \n {presets.map((preset) => (\n handlePresetPress(preset)}\n disabled={disabled}\n style={({ pressed }) => [\n {\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n backgroundColor: selectedPreset === preset\n ? tokens.color.brand.default\n : tokens.color.bg.muted,\n borderRadius: tokens.radius.full,\n },\n { opacity: (disabled || pressed) ? 0.6 : 1 }\n ]}\n >\n \n {preset?.replace(\"last\", \"Last \").replace(\"today\", \"Today\").replace(\"yesterday\", \"Yesterday\")}\n \n \n ))}\n \n )}\n\n {/* Date input field */}\n \n {icon && renderIcon(icon)}\n \n {displayValue}\n \n {/* Clear button */}\n {clearable && date && (\n \n \n \n )}\n {/* Calendar icon indicator */}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n {/* Calendar mode — custom grid in bottom-sheet-style modal */}\n {effectivePickerStyle === \"calendar\" && showPicker && (\n { setShowPicker(false); setYearPick(false); }}>\n \n { setShowPicker(false); setYearPick(false); }}\n accessibilityLabel=\"Dismiss\"\n />\n \n {/* Handle bar */}\n \n \n \n\n {/* Header */}\n \n \n {modalTitle}\n \n { setShowPicker(false); setYearPick(false); }} hitSlop={12} accessibilityRole=\"button\" accessibilityLabel=\"Close\">\n \n \n \n\n {yearPick && mode !== \"time\" ? (\n \n {yearOptions.map((y) => (\n {\n setCalYear(y);\n setYearPick(false);\n }}\n style={{\n paddingHorizontal: tokens.spacing[3],\n paddingVertical: tokens.spacing[2],\n borderRadius: tokens.radius.md,\n backgroundColor: y === calYear ? tokens.color.brand.subtle : tokens.color.bg.muted,\n }}\n >\n \n {y}\n \n \n ))}\n \n ) : (\n <>\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n setPickerDraft((prev) => {\n const next = new Date(prev);\n next.setFullYear(d.getFullYear(), d.getMonth(), d.getDate());\n return next;\n });\n setSelectedPreset(null);\n }}\n onMonthChange={handleCalendarMonthChange}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n locale={locale}\n onHeaderPress={() => setYearPick(true)}\n />\n \n )}\n\n {(mode === \"time\" || mode === \"datetime\") && (\n \n )}\n\n {(mode === \"date\" || mode === \"datetime\") && (\n \n {\n const now = new Date();\n setPickerDraft(now);\n setCalMonth(now.getMonth());\n setCalYear(now.getFullYear());\n setSelectedPreset(null);\n }}\n style={{\n alignItems: \"center\",\n paddingVertical: tokens.spacing[3],\n borderRadius: tokens.radius.lg,\n backgroundColor: tokens.color.brand.subtle,\n }}\n >\n \n Today\n \n \n \n )}\n \n )}\n\n \n { setShowPicker(false); setYearPick(false); }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Cancel\"\n >\n \n Cancel\n \n \n {\n onChange(pickerDraft);\n setSelectedPreset(null);\n setShowPicker(false);\n setYearPick(false);\n }}\n hitSlop={12}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Confirm\"\n >\n \n Confirm\n \n \n \n \n \n \n )}\n\n {/* Spinner / native mode — iOS: Modal overlay */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"ios\" && showPicker && (\n \n \n \n \n setShowPicker(false)} hitSlop={12}>\n \n Done\n \n \n \n {pickerComponent}\n \n \n \n )}\n\n {/* Spinner / native mode — Android: native dialog */}\n {effectivePickerStyle !== \"calendar\" && Platform.OS === \"android\" && pickerComponent}\n \n );\n}\n","import React, { useMemo, useCallback } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarGridProps {\n month: number;\n year: number;\n selectedDate: Date | null;\n onSelectDate: (date: Date) => void;\n onMonthChange: (month: number, year: number) => void;\n minimumDate?: Date;\n maximumDate?: Date;\n /** BCP 47 locale for month title and weekday labels (default `undefined` = runtime default). */\n locale?: string;\n /** e.g. open year picker */\n onHeaderPress?: () => void;\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nfunction isToday(d: Date): boolean {\n return isSameDay(d, new Date());\n}\n\nfunction isDateDisabled(d: Date, min?: Date, max?: Date): boolean {\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (d < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (d > maxDay) return true;\n }\n return false;\n}\n\nexport function CalendarGrid({\n month,\n year,\n selectedDate,\n onSelectDate,\n onMonthChange,\n minimumDate,\n maximumDate,\n locale,\n onHeaderPress,\n}: CalendarGridProps) {\n const t = useTokens();\n\n const weekdayLabels = useMemo(() => {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const baseMonday = new Date(2024, 0, 8);\n return Array.from({ length: 7 }, (_, i) =>\n formatter.format(new Date(baseMonday.getFullYear(), baseMonday.getMonth(), baseMonday.getDate() + i))\n );\n }, [locale]);\n\n const monthYearTitle = useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(new Date(year, month, 1)),\n [locale, year, month]\n );\n\n const goPrev = useCallback(() => {\n if (month === 0) onMonthChange(11, year - 1);\n else onMonthChange(month - 1, year);\n }, [month, year, onMonthChange]);\n\n const goNext = useCallback(() => {\n if (month === 11) onMonthChange(0, year + 1);\n else onMonthChange(month + 1, year);\n }, [month, year, onMonthChange]);\n\n const cells = useMemo(() => {\n const firstDay = new Date(year, month, 1);\n let startWeekday = firstDay.getDay() - 1;\n if (startWeekday < 0) startWeekday = 6;\n\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const rows: { date: Date; inMonth: boolean }[][] = [];\n let row: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = 0; i < startWeekday; i++) {\n const day = daysInPrevMonth - startWeekday + 1 + i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n row.push({ date: new Date(prevYear, prevMonth, day), inMonth: false });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n row.push({ date: new Date(year, month, d), inMonth: true });\n if (row.length === 7) {\n rows.push(row);\n row = [];\n }\n }\n\n if (row.length > 0) {\n let nextDay = 1;\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n while (row.length < 7) {\n row.push({ date: new Date(nextYear, nextMonth, nextDay++), inMonth: false });\n }\n rows.push(row);\n }\n\n return rows;\n }, [month, year]);\n\n const cellSize = 40;\n\n return (\n \n {/* Month navigation */}\n \n \n \n \n onHeaderPress?.()} disabled={!onHeaderPress} accessibilityRole={onHeaderPress ? \"button\" : undefined}>\n \n {monthYearTitle}\n \n \n \n \n \n \n\n {/* Weekday headers */}\n \n {weekdayLabels.map((wd) => (\n \n \n {wd}\n \n \n ))}\n \n\n {/* Day grid */}\n {cells.map((row, ri) => (\n \n {row.map((cell, ci) => {\n const selected = selectedDate ? isSameDay(cell.date, selectedDate) : false;\n const today = isToday(cell.date);\n const disabled = !cell.inMonth || isDateDisabled(cell.date, minimumDate, maximumDate);\n\n return (\n { if (!disabled) onSelectDate(cell.date); }}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={cell.date.toDateString()}\n accessibilityState={{ selected, disabled }}\n style={{\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n height: cellSize,\n }}\n >\n \n \n {cell.date.getDate()}\n \n \n \n );\n })}\n \n ))}\n \n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { View, Text, ScrollView, Pressable } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nconst ROW = 40;\nconst VISIBLE = 5;\n\nfunction pad2(n: number): string {\n return n.toString().padStart(2, \"0\");\n}\n\nexport interface TimePickerWheelsProps {\n value: Date;\n onChange: (next: Date) => void;\n}\n\n/**\n * Simple scrollable hour / minute columns (bottom-sheet style).\n */\nexport function TimePickerWheels({ value, onChange }: TimePickerWheelsProps) {\n const t = useTokens();\n const h = value.getHours();\n const m = value.getMinutes();\n const hours = useMemo(() => Array.from({ length: 24 }, (_, i) => i), []);\n const minutes = useMemo(() => Array.from({ length: 60 }, (_, i) => i), []);\n\n const setHM = useCallback(\n (nh: number, nm: number) => {\n const d = new Date(value);\n d.setHours(nh, nm, 0, 0);\n onChange(d);\n },\n [value, onChange]\n );\n\n const col = (label: string, child: React.ReactNode) => (\n \n \n {label}\n \n \n {child}\n \n \n );\n\n return (\n \n {col(\n \"Hour\",\n hours.map((hour) => (\n setHM(hour, m)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: hour === h ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(hour)}\n \n \n ))\n )}\n {col(\n \"Min\",\n minutes.map((minute) => (\n setHM(h, minute)}\n style={{\n height: ROW,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: t.radius.md,\n backgroundColor: minute === m ? t.color.brand.subtle : \"transparent\",\n }}\n >\n \n {pad2(minute)}\n \n \n ))\n )}\n \n );\n}\n","import React from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\n/**\n * Props for the Dialog component\n */\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n actions?: React.ReactNode;\n fullWidth?: boolean;\n /** Accessibility label for the dialog container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\n/**\n * Dialog component that displays modal content with backdrop and accessibility support.\n *\n * @param props - Dialog configuration props\n * @returns React element or null if not open\n *\n * @example\n * ```tsx\n * setIsOpen(false)}\n * title=\"Confirm Action\"\n * >\n * Are you sure?\n * \n * ```\n */\nexport function Dialog({\n open,\n onClose,\n title,\n children,\n actions,\n fullWidth = false,\n accessibilityLabel = \"Dialog\",\n backdropAccessibilityLabel = \"Dismiss dialog\",\n}: DialogProps) {\n const { dialog, modal } = useComponentTokens();\n const tokens = useTokens();\n\n if (!open) return null;\n\n return (\n \n \n \n \n {title && (\n \n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n )}\n \n {children}\n \n {actions && (\n \n {actions}\n \n )}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface DividerProps {\n /** Label shown centered in the divider */\n label?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Use a stronger border color */\n emphasis?: boolean;\n /** Extra vertical margin around horizontal dividers */\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Divider({\n label,\n orientation = \"horizontal\",\n emphasis = false,\n spacing = \"md\",\n}: DividerProps) {\n const { divider } = useComponentTokens();\n const tokens = useTokens();\n\n const lineColor = emphasis\n ? tokens.color.border.strong\n : divider.color;\n\n const verticalMargin = {\n none: 0,\n sm: tokens.spacing[2],\n md: divider.margin,\n lg: tokens.spacing[6],\n }[spacing];\n\n if (orientation === \"vertical\") {\n return (\n \n );\n }\n\n if (label) {\n return (\n \n \n \n {label}\n \n \n \n );\n }\n\n return (\n \n );\n}","import React, { useEffect } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type ViewStyle } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\n\nexport type DrawerAnchor = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps {\n open: boolean;\n onClose?: () => void;\n anchor?: DrawerAnchor;\n children?: React.ReactNode;\n /** Accessibility label for the drawer container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n}\n\nexport function Drawer({\n open,\n onClose,\n anchor = \"left\",\n children,\n accessibilityLabel = \"Drawer\",\n backdropAccessibilityLabel = \"Dismiss drawer\",\n}: DrawerProps) {\n const { drawer } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { width: windowWidth, height: windowHeight } = Dimensions.get(\"window\");\n\n const isVertical = anchor === \"top\" || anchor === \"bottom\";\n const size = isVertical ? windowHeight * 0.4 : 280;\n \n const progress = useSharedValue(0);\n const [mounted, setMounted] = React.useState(open);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n if (reduceMotion) {\n progress.value = 1;\n } else {\n progress.value = withSpring(1, spring.snappy);\n }\n } else {\n if (reduceMotion) {\n progress.value = 0;\n setMounted(false);\n } else {\n progress.value = withSpring(0, spring.snappy, (finished) => {\n if (finished) runOnJS(setMounted)(false);\n });\n }\n }\n }, [open, reduceMotion]);\n\n const animatedStyle = useAnimatedStyle(() => {\n const translate = (1 - progress.value) * size;\n let transform: any[] = [];\n\n if (anchor === \"left\") transform = [{ translateX: -translate }];\n else if (anchor === \"right\") transform = [{ translateX: translate }];\n else if (anchor === \"top\") transform = [{ translateY: -translate }];\n else if (anchor === \"bottom\") transform = [{ translateY: translate }];\n\n return {\n transform,\n };\n });\n\n const backdropStyle = useAnimatedStyle(() => ({\n opacity: progress.value,\n }));\n\n if (!mounted) return null;\n\n const containerStyle: ViewStyle = {\n position: \"absolute\",\n ...(anchor === \"left\" ? { left: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"right\" ? { right: 0, top: 0, bottom: 0, width: size } : {}),\n ...(anchor === \"top\" ? { top: 0, left: 0, right: 0, height: size } : {}),\n ...(anchor === \"bottom\" ? { bottom: 0, left: 0, right: 0, height: size } : {}),\n };\n\n return (\n \n \n \n \n \n \n {children}\n \n \n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport type { SemanticTokens } from \"@truongdq01/tokens\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nexport type EmptyStateSize = \"sm\" | \"md\" | \"lg\";\n\nexport type EmptyStateVariant =\n | \"default\"\n | \"search\"\n | \"error\"\n | \"offline\"\n | \"permission\"\n | \"empty\";\n\nexport interface EmptyStateProps {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n size?: EmptyStateSize;\n variant?: EmptyStateVariant;\n illustration?: React.ReactNode;\n}\n\nfunction variantSemantics(variant: EmptyStateVariant, tokens: SemanticTokens): { iconColor: string; wrapBg: string } {\n switch (variant) {\n case \"error\":\n case \"permission\":\n return { iconColor: tokens.color.error.icon, wrapBg: tokens.color.error.bg };\n case \"offline\":\n return { iconColor: tokens.color.warning.icon, wrapBg: tokens.color.warning.bg };\n case \"search\":\n return { iconColor: tokens.color.text.tertiary, wrapBg: tokens.color.bg.muted };\n case \"empty\":\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n default:\n return { iconColor: tokens.color.brand.text, wrapBg: tokens.color.brand.subtle };\n }\n}\n\nconst VARIANT_DEFAULTS: Record<\n Exclude,\n { title: string; description: string; iconName: IconName }\n> = {\n search: {\n title: \"No results found\",\n description: \"Try different keywords or filters.\",\n iconName: \"search\",\n },\n error: {\n title: \"Something went wrong\",\n description: \"We couldn't load this content. Try again.\",\n iconName: \"error\",\n },\n offline: {\n title: \"You're offline\",\n description: \"Check your connection and try again.\",\n iconName: \"warning\",\n },\n permission: {\n title: \"Access denied\",\n description: \"You don't have permission to view this.\",\n iconName: \"lock\",\n },\n empty: {\n title: \"Nothing here yet\",\n description: \"When there is content, it will show up here.\",\n iconName: \"package\",\n },\n};\n\nexport function EmptyState({\n title,\n description,\n icon,\n action,\n size = \"md\",\n variant = \"default\",\n illustration,\n}: EmptyStateProps) {\n const { emptyState } = useComponentTokens();\n const tokens = useTokens();\n\n const meta = variant !== \"default\" ? VARIANT_DEFAULTS[variant] : null;\n const resolvedTitle = title ?? meta?.title;\n const resolvedDescription = description ?? meta?.description;\n\n const { iconColor, wrapBg } = variantSemantics(variant, tokens);\n\n const iconSize = Math.round(emptyState.icon.size / 2);\n const resolvedIcon =\n icon ??\n (meta ? (\n \n ) : null);\n\n const sizePad = emptyState.containerSize[size];\n const titleSize = emptyState.titleSize[size];\n const descSize = emptyState.descriptionSize[size];\n\n return (\n \n {illustration && {illustration}}\n\n {resolvedIcon && (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(resolvedIcon)\n ? React.cloneElement(resolvedIcon, {\n size: resolvedIcon.props.size ?? iconSize,\n color: resolvedIcon.props.color ?? iconColor,\n })\n : resolvedIcon}\n \n )}\n\n {resolvedTitle && (\n \n {resolvedTitle}\n \n )}\n\n {resolvedDescription && (\n \n {resolvedDescription}\n \n )}\n\n {action && (\n \n {action}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface FabProps {\n icon?: React.ReactNode;\n label?: string;\n onPress?: () => void;\n disabled?: boolean;\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\";\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"circular\" | \"extended\";\n accessibilityLabel?: string;\n}\n\nexport function Fab({\n icon,\n label,\n onPress,\n disabled = false,\n color = \"primary\",\n size = \"md\",\n variant = \"circular\",\n accessibilityLabel,\n}: FabProps) {\n const { fab } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps } = usePressable({\n onPress,\n disabled,\n feedbackMode: \"scale\",\n accessibilityLabel: accessibilityLabel ?? label ?? (typeof icon === \"string\" ? icon : \"FAB\"),\n accessibilityRole: \"button\",\n });\n\n const isExtended = variant === \"extended\" && !!label;\n \n // Base color from component tokens - Fab only has primary/secondary in tokens\n const baseColor = color === \"primary\" ? fab.color.primary.bg : fab.color.secondary.bg;\n const textColor = \"#FFFFFF\";\n\n const sizeMap = {\n sm: { size: 40, iconSize: 20 },\n md: { size: 56, iconSize: 24 },\n lg: { size: 72, iconSize: 28 },\n };\n\n const s = sizeMap[size];\n\n const containerStyle = [\n fab.container,\n {\n backgroundColor: baseColor,\n height: s.size,\n minWidth: s.size,\n borderRadius: s.size / 2,\n paddingHorizontal: isExtended ? 20 : 0,\n },\n disabled && { opacity: 0.5 },\n animatedStyle,\n ];\n\n return (\n \n \n \n {icon && (\n \n {icon}\n \n )}\n {isExtended && (\n \n {label}\n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n label: {\n fontWeight: \"600\",\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n});\n","import React, { createContext, useContext, useCallback } from \"react\";\nimport { View, ScrollView, StyleSheet, Platform } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface FormContextValue {\n values: Record;\n errors: Record;\n touched: Record;\n isSubmitting: boolean;\n isValid: boolean;\n setValue: (name: string, value: any) => void;\n setError: (name: string, error: string) => void;\n setTouched: (name: string, touched: boolean) => void;\n handleSubmit: (callback: (values: Record) => void | Promise) => () => void;\n resetForm: () => void;\n}\n\nconst FormContext = createContext(null);\n\nexport function useForm() {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error(\"useForm must be used within a Form component\");\n }\n return context;\n}\n\nexport interface FormProps {\n /** Initial form values */\n initialValues?: Record;\n /** Validation function */\n validate?: (values: Record) => Record;\n /** Submit handler */\n onSubmit?: (values: Record) => void | Promise;\n /** Children components */\n children: React.ReactNode;\n /** Whether to show validation on change */\n validateOnChange?: boolean;\n /** Whether to show validation on blur */\n validateOnBlur?: boolean;\n /** Enable keyboard avoiding view */\n enableKeyboardAvoidingView?: boolean;\n /** Scrollable form */\n scrollable?: boolean;\n /** Custom style */\n style?: object;\n /** Test ID */\n testID?: string;\n}\n\n/**\n * Form component that provides form state management and validation.\n * Supports controlled inputs, validation, and submission handling.\n */\nexport function Form({\n initialValues = {},\n validate,\n onSubmit,\n children,\n validateOnChange = true,\n validateOnBlur = true,\n enableKeyboardAvoidingView = true,\n scrollable = true,\n style,\n testID = \"form\",\n}: FormProps) {\n const tokens = useTokens();\n\n const [values, setValues] = React.useState>(initialValues);\n const [errors, setErrors] = React.useState>({});\n const [touched, setTouched] = React.useState>({});\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const runValidation = useCallback((currentValues: Record) => {\n if (!validate) return {};\n\n try {\n return validate(currentValues);\n } catch (error) {\n console.error(\"Form validation error:\", error);\n return {};\n }\n }, [validate]);\n\n const isValid = React.useMemo(() => {\n return Object.keys(errors).length === 0;\n }, [errors]);\n\n const setValue = useCallback((name: string, value: any) => {\n setValues(prev => ({ ...prev, [name]: value }));\n\n if (validateOnChange) {\n setValues(current => {\n const newErrors = runValidation({ ...current, [name]: value });\n setErrors(newErrors);\n return current;\n });\n }\n }, [validateOnChange, runValidation]);\n\n const setError = useCallback((name: string, error: string) => {\n setErrors(prev => ({ ...prev, [name]: error }));\n }, []);\n\n const setTouchedField = useCallback((name: string, fieldTouched: boolean) => {\n setTouched(prev => ({ ...prev, [name]: fieldTouched }));\n\n if (validateOnBlur && fieldTouched) {\n const newErrors = runValidation(values);\n setErrors(newErrors);\n }\n }, [validateOnBlur, runValidation, values]);\n\n const handleSubmit = useCallback((callback: (values: Record) => void | Promise) => {\n return async () => {\n if (isSubmitting) return;\n\n // Mark all fields as touched\n const allTouched = Object.keys(values).reduce((acc, key) => {\n acc[key] = true;\n return acc;\n }, {} as Record);\n setTouched(allTouched);\n\n // Run final validation\n const finalErrors = runValidation(values);\n setErrors(finalErrors);\n\n if (Object.keys(finalErrors).length > 0) {\n return; // Don't submit if there are errors\n }\n\n setIsSubmitting(true);\n try {\n await callback(values);\n } catch (error) {\n console.error(\"Form submission error:\", error);\n } finally {\n setIsSubmitting(false);\n }\n };\n }, [values, runValidation, isSubmitting]);\n\n const resetForm = useCallback(() => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setIsSubmitting(false);\n }, [initialValues]);\n\n const contextValue: FormContextValue = {\n values,\n errors,\n touched,\n isSubmitting,\n isValid,\n setValue,\n setError,\n setTouched: setTouchedField,\n handleSubmit,\n resetForm,\n };\n\n const formContent = (\n \n \n {children}\n \n \n );\n\n if (scrollable) {\n return (\n \n {formContent}\n \n );\n }\n\n return formContent;\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollContent: {\n flexGrow: 1,\n paddingVertical: 16,\n },\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type FormControlVariant = \"filled\" | \"outlined\" | \"standard\";\nexport type FormControlMargin = \"dense\" | \"none\" | \"normal\";\n\ninterface FormControlContextValue {\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n}\n\nconst FormControlContext = createContext(null);\n\nexport function useFormControl() {\n return useContext(FormControlContext);\n}\n\nexport interface FormControlProps {\n children?: React.ReactNode;\n error?: boolean;\n required?: boolean;\n disabled?: boolean;\n focused?: boolean;\n fullWidth?: boolean;\n variant?: FormControlVariant;\n margin?: FormControlMargin;\n style?: object;\n}\n\nexport function FormControl({\n children,\n error,\n required,\n disabled,\n focused,\n fullWidth,\n variant = \"outlined\",\n margin = \"none\",\n style,\n}: FormControlProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n \n const marginSize = useMemo(() => {\n if (margin === \"dense\") return tokens.spacing[2];\n if (margin === \"normal\") return tokens.spacing[4];\n return 0;\n }, [margin, tokens]);\n\n const ctxValue = useMemo(() => ({ error, required, disabled, focused, fullWidth, variant }), [error, required, disabled, focused, fullWidth, variant]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface FormLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormLabel({ children, style }: FormLabelProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : ctx?.disabled \n ? formControl.label.color + \"80\" \n : formControl.label.color;\n\n return (\n \n {children}{ctx?.required ? \" *\" : \"\"}\n \n );\n}\n\nexport interface FormHelperTextProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function FormHelperText({ children, style }: FormHelperTextProps) {\n const { formControl } = useComponentTokens();\n const ctx = useFormControl();\n \n const color = ctx?.error \n ? formControl.errorText.color \n : formControl.helperText.color;\n\n return (\n \n {children}\n \n );\n}\n\nexport interface FormControlLabelProps {\n control: React.ReactElement;\n label?: React.ReactNode;\n labelPlacement?: \"end\" | \"start\" | \"top\" | \"bottom\";\n disabled?: boolean;\n onPress?: () => void;\n style?: object;\n}\n\nexport function FormControlLabel({\n control,\n label,\n labelPlacement = \"end\",\n disabled,\n onPress,\n style,\n}: FormControlLabelProps) {\n const { formControl } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.disabled ?? false;\n\n const controlElement = React.cloneElement(control, {\n disabled: isDisabled,\n });\n\n const isRow = labelPlacement === \"start\" || labelPlacement === \"end\";\n const rowReverse = labelPlacement === \"start\";\n const colReverse = labelPlacement === \"top\";\n\n return (\n \n {controlElement}\n {label ? (\n \n {label}\n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Input } from \"../Input/Input\";\nimport { PasswordInput } from \"../Input/PasswordInput\";\nimport { FormGroupContext, useFormGroupVariant } from \"./FormGroupContext\";\n\nfunction isInputLikeElement(el: React.ReactElement): boolean {\n const C = el.type;\n return C === Input || C === PasswordInput;\n}\n\nfunction enhanceChildForGroupedField(\n child: React.ReactNode,\n label: string | undefined,\n): React.ReactNode {\n if (!label || !React.isValidElement(child)) return child;\n if (!isInputLikeElement(child)) return child;\n const props = child.props as { placeholder?: string };\n return React.cloneElement(child as React.ReactElement>, {\n floatingLabel: true,\n label,\n placeholder: props.placeholder ?? label,\n });\n}\n\nexport interface FormFieldProps {\n label?: string;\n required?: boolean;\n error?: string;\n helperText?: string;\n labelTrailing?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function FormField({\n label,\n required = false,\n error,\n helperText,\n labelTrailing,\n children,\n}: FormFieldProps) {\n const { formField, formControl, formGroup } = useComponentTokens();\n const tokens = useTokens();\n const groupVariant = useFormGroupVariant();\n const isGrouped = groupVariant === \"grouped\";\n\n const childEl = React.isValidElement(children) ? children : null;\n const showFloatingClone = Boolean(isGrouped && label && childEl && isInputLikeElement(childEl));\n const showLabelRow = Boolean((label || labelTrailing) && !showFloatingClone);\n\n const renderedChild = showFloatingClone ? enhanceChildForGroupedField(children, label) : children;\n\n const showMessagesBelowField = !isGrouped;\n\n return (\n \n {showLabelRow && (label || labelTrailing) ? (\n \n {label ? (\n \n {label}\n {required ? (\n \n *\n \n ) : null}\n \n ) : null}\n {labelTrailing}\n \n ) : null}\n\n {renderedChild}\n\n {showMessagesBelowField ? (\n error ? (\n \n {error}\n \n ) : helperText ? (\n {helperText}\n ) : null\n ) : null}\n \n );\n}\n\nexport interface FormGroupProps {\n children: React.ReactNode;\n gap?: \"sm\" | \"md\" | \"lg\";\n variant?: \"standard\" | \"grouped\";\n /** Shown under the grouped card (tertiary). */\n footer?: string;\n /** Validation or alert copy under the grouped card (e.g. from `useField`). */\n error?: string;\n}\n\nexport function FormGroup({\n children,\n gap = \"md\",\n variant = \"standard\",\n footer,\n error,\n}: FormGroupProps) {\n const tokens = useTokens();\n const { formGroup } = useComponentTokens();\n const gapSize = { sm: tokens.spacing[3], md: tokens.spacing[5], lg: tokens.spacing[7] }[gap];\n\n if (variant === \"standard\") {\n return (\n \n {children}\n \n );\n }\n\n const items = React.Children.toArray(children).filter(Boolean);\n\n return (\n \n \n \n {items.map((child, i) => (\n \n {child}\n {i < items.length - 1 ? (\n \n ) : null}\n \n ))}\n \n {error ? {error} : null}\n {footer ? {footer} : null}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Pressable } from \"react-native\";\nimport { useIconStyle } from \"@truongdq01/headless\";\nimport { Input, type InputProps } from \"./Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface PasswordInputProps extends InputProps { }\n\n/**\n * A specialized Input component for passwords with a built-in visibility toggle.\n */\nexport function PasswordInput(props: PasswordInputProps) {\n const [show, setShow] = useState(false);\n const { size, color } = useIconStyle(\"input\");\n\n const toggleShow = () => setShow((prev) => !prev);\n\n return (\n \n \n \n }\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nlet BlurView: React.ComponentType | null = null;\ntry {\n BlurView = require(\"expo-blur\").BlurView;\n} catch {\n // expo-blur not installed — fall back to translucent View\n}\n\nexport interface GlassCardProps extends ViewProps {\n /** Blur intensity (0–100). Only effective when expo-blur is installed. Default 40. */\n intensity?: number;\n /** expo-blur tint: \"light\" | \"dark\" | \"default\". Auto-selects from theme when omitted. */\n tint?: \"light\" | \"dark\" | \"default\";\n /** Border radius override. Uses `radius.xl` by default. */\n borderRadius?: number;\n /** Extra styles for the outer container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\nexport function GlassCard({\n intensity = 40,\n tint,\n borderRadius,\n style,\n children,\n ...rest\n}: GlassCardProps) {\n const t = useTokens();\n const isDark = t.color.bg.default !== \"#F8FAFC\";\n\n const resolvedTint = tint ?? (isDark ? \"dark\" : \"light\");\n const resolvedRadius = borderRadius ?? t.radius.xl;\n\n const containerStyle = useMemo(\n () => ({\n borderRadius: resolvedRadius,\n overflow: \"hidden\" as const,\n borderWidth: 1,\n borderColor: t.color.surface.glassBorder ?? (isDark ? \"rgba(255,255,255,0.08)\" : \"rgba(255,255,255,0.3)\"),\n }),\n [resolvedRadius, t.color.surface.glassBorder, isDark],\n );\n\n const fallbackStyle = useMemo(\n () => ({\n ...StyleSheet.absoluteFillObject,\n backgroundColor: t.color.surface.glass ?? (isDark ? \"rgba(15,23,42,0.72)\" : \"rgba(255,255,255,0.72)\"),\n }),\n [t.color.surface.glass, isDark],\n );\n\n return (\n \n {BlurView ? (\n \n ) : (\n \n )}\n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n position: \"relative\",\n zIndex: 1,\n },\n});\n","import React, { useMemo } from \"react\";\nimport { View, StyleSheet, type ViewProps, type StyleProp, type ViewStyle } from \"react-native\";\nimport { primitive } from \"@truongdq01/tokens\";\n\nlet ExpoLinearGradient: React.ComponentType | null = null;\ntry {\n ExpoLinearGradient = require(\"expo-linear-gradient\").LinearGradient;\n} catch {\n // expo-linear-gradient not installed — render solid fallback\n}\n\n/**\n * Available gradient preset names from primitive tokens\n */\ntype GradientPreset = keyof typeof primitive.gradient;\n\n/**\n * Props for the Gradient component\n */\nexport interface GradientProps extends ViewProps {\n /** Named gradient preset from primitive tokens. */\n preset?: GradientPreset;\n /** Custom color stops (overrides preset). */\n colors?: readonly string[];\n /** Start point {x, y} — 0‒1 range. Default {x:0, y:0}. */\n start?: { x: number; y: number };\n /** End point {x, y} — 0‒1 range. Default {x:1, y:1}. */\n end?: { x: number; y: number };\n /** Extra styles for the container. */\n style?: StyleProp;\n children?: React.ReactNode;\n}\n\n/**\n * Gradient component that renders linear gradients with fallback support.\n * Requires expo-linear-gradient for full functionality, falls back to solid color.\n *\n * @param props - Gradient configuration props\n * @returns React gradient component\n *\n * @example\n * ```tsx\n * \n * Content\n * \n * ```\n */\nexport function Gradient({\n preset,\n colors: colorsProp,\n start = { x: 0, y: 0 },\n end = { x: 1, y: 1 },\n style,\n children,\n ...rest\n}: GradientProps) {\n const resolvedColors = useMemo(() => {\n if (colorsProp && colorsProp.length >= 2) return colorsProp;\n if (preset && primitive.gradient[preset]) return primitive.gradient[preset];\n return primitive.gradient.brand;\n }, [colorsProp, preset]);\n\n if (ExpoLinearGradient) {\n return (\n \n {children}\n \n );\n }\n\n return (\n \n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1 },\n});\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface GridProps {\n children?: React.ReactNode;\n container?: boolean;\n size?: number | \"auto\" | \"grow\";\n columns?: number;\n spacing?: \"sm\" | \"md\" | \"lg\" | number;\n rowSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n columnSpacing?: \"sm\" | \"md\" | \"lg\" | number;\n direction?: ViewStyle[\"flexDirection\"];\n wrap?: ViewStyle[\"flexWrap\"];\n offset?: number;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Grid({\n children,\n container = false,\n size,\n columns = 12,\n spacing = 0,\n rowSpacing,\n columnSpacing,\n direction = \"row\",\n wrap = \"wrap\",\n offset,\n style,\n}: GridProps) {\n const { grid } = useComponentTokens();\n\n const resolveGap = (s: \"sm\" | \"md\" | \"lg\" | number | undefined) => {\n if (s === undefined) return undefined;\n return typeof s === \"number\" ? s : grid.gap[s];\n };\n\n const gap = resolveGap(spacing) ?? 0;\n const rowGap = resolveGap(rowSpacing) ?? gap;\n const colGap = resolveGap(columnSpacing) ?? gap;\n\n if (container) {\n return (\n \n {children}\n \n );\n }\n\n const widthPct = typeof size === \"number\" ? `${(size / columns) * 100}%` : undefined;\n const widthValue = widthPct as unknown as ViewStyle[\"width\"];\n const itemStyle: ViewStyle = {\n flexGrow: size === \"grow\" ? 1 : 0,\n flexBasis: size === \"grow\" ? 0 : size === \"auto\" ? undefined : (widthValue as any),\n maxWidth: size === \"grow\" ? undefined : size === \"auto\" ? undefined : (widthValue as any),\n marginLeft: offset ? (`${(offset / columns) * 100}%` as unknown as ViewStyle[\"marginLeft\"]) : undefined,\n };\n\n return {children};\n}\n","import React, { useState } from \"react\";\nimport { Image as RNImage, ImageProps as RNImageProps, View, StyleSheet } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withTiming,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nconst AnimatedImage = Animated.createAnimatedComponent(RNImage);\n\nexport interface RnImageProps extends RNImageProps {\n /**\n * If true, shows a skeleton loading effect while the image is fetching.\n * Defaults to true.\n */\n showPlaceholder?: boolean;\n}\n\nexport function RnImage({ showPlaceholder = true, style, onLoad, ...props }: RnImageProps) {\n const { image } = useComponentTokens();\n const [isLoaded, setIsLoaded] = useState(false);\n const opacity = useSharedValue(0);\n\n const handleLoad = (e: any) => {\n setIsLoaded(true);\n opacity.value = withTiming(1, { duration: 300 });\n onLoad?.(e);\n };\n\n const imageStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n});\n","import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { View, Text, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nconst { width: SCREEN_WIDTH } = Dimensions.get(\"window\");\n\nexport type ImageListVariant = \"standard\" | \"woven\" | \"masonry\" | \"quilted\";\n\ninterface ImageListContextValue {\n cols: number;\n gap: number;\n rowHeight: number | \"auto\";\n variant: ImageListVariant;\n width: number;\n}\n\nconst ImageListContext = createContext(null);\n\nfunction useImageListContext() {\n return useContext(ImageListContext);\n}\n\nexport interface ImageListProps {\n children?: React.ReactNode;\n cols?: number;\n gap?: number;\n rowHeight?: number | \"auto\";\n variant?: ImageListVariant;\n style?: object;\n}\n\nexport function ImageList({\n children,\n cols = 2,\n gap = 8,\n rowHeight = 120,\n variant = \"standard\",\n style,\n}: ImageListProps) {\n const [width, setWidth] = useState(SCREEN_WIDTH);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const nextWidth = event.nativeEvent.layout.width;\n if (nextWidth !== width) setWidth(nextWidth);\n };\n\n const ctx = useMemo(() => ({ cols, gap, rowHeight, variant, width }), [cols, gap, rowHeight, variant, width]);\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface ImageListItemProps {\n children?: React.ReactNode;\n cols?: number;\n rows?: number;\n style?: object;\n}\n\nexport function ImageListItem({ children, cols = 1, rows = 1, style }: ImageListItemProps) {\n const ctx = useImageListContext();\n const gap = ctx?.gap ?? 8;\n const columns = ctx?.cols ?? 2;\n const variant = ctx?.variant ?? \"standard\";\n const rowHeight = ctx?.rowHeight ?? 120;\n const listWidth = ctx?.width ?? 0;\n\n const totalGap = gap * (columns - 1);\n const baseWidth = columns > 0 ? (listWidth - totalGap) / columns : listWidth;\n const itemWidth = cols * baseWidth + gap * (cols - 1);\n\n const height = variant === \"masonry\" || rowHeight === \"auto\" ? undefined : rowHeight * rows + gap * (rows - 1);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ImageListItemBarProps {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n actionIcon?: React.ReactNode;\n position?: \"top\" | \"bottom\";\n style?: object;\n}\n\nexport function ImageListItemBar({\n title,\n subtitle,\n actionIcon,\n position = \"bottom\",\n style,\n}: ImageListItemBarProps) {\n const { imageList } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {title ? {title} : null}\n {subtitle ? {subtitle} : null}\n \n {actionIcon}\n \n );\n}\n","import React from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport Animated, { useAnimatedStyle } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type LinearProgressVariant = \"indeterminate\" | \"determinate\" | \"buffer\" | \"query\";\nexport type LinearProgressColor =\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"info\"\n | \"warning\"\n | \"brand\"\n | \"accent\"\n | \"inherit\";\n\nexport interface LinearProgressProps {\n value?: number;\n variant?: LinearProgressVariant;\n valueBuffer?: number;\n color?: LinearProgressColor;\n trackColor?: string;\n thickness?: number;\n style?: any;\n}\n\nfunction clamp(value: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, value));\n}\n\nexport function LinearProgress({\n value = 0,\n variant = \"indeterminate\",\n valueBuffer = 0,\n color = \"primary\",\n trackColor,\n thickness,\n style,\n}: LinearProgressProps) {\n const tokens = useTokens();\n const { linearProgress } = useComponentTokens();\n const progressValue = clamp(value);\n\n const barColor = {\n primary: linearProgress.indicator.backgroundColor,\n brand: linearProgress.variant.brand.indicator.backgroundColor,\n accent: linearProgress.variant.accent.indicator.backgroundColor,\n success: linearProgress.variant.success.indicator.backgroundColor,\n error: linearProgress.variant.error.indicator.backgroundColor,\n secondary: tokens.color.text.secondary,\n info: tokens.color.info.icon,\n warning: tokens.color.warning.icon,\n inherit: tokens.color.text.primary,\n }[color] || linearProgress.indicator.backgroundColor;\n\n const containerStyle = [\n styles.container,\n linearProgress.track,\n { height: thickness ?? linearProgress.track.height, backgroundColor: trackColor ?? linearProgress.track.backgroundColor },\n style,\n ];\n\n const determinateStyle = useAnimatedStyle(() => {\n return {\n width: `${progressValue}%`,\n };\n }, [progressValue]);\n\n const bufferValue = clamp(valueBuffer);\n\n return (\n \n {variant === \"indeterminate\" || variant === \"query\" ? (\n \n ) : (\n <>\n {variant === \"buffer\" && (\n \n )}\n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n borderRadius: 999,\n overflow: \"hidden\",\n },\n determinateBar: {\n height: \"100%\",\n },\n indeterminateBar: {\n height: \"100%\",\n width: \"40%\",\n },\n bufferBar: {\n position: \"absolute\",\n height: \"100%\",\n left: 0,\n top: 0,\n },\n});\n","import React from \"react\";\nimport { Text, type TextStyle, Linking } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface LinkProps {\n children?: React.ReactNode;\n href?: string;\n onPress?: () => void;\n color?: string;\n underline?: \"always\" | \"hover\" | \"none\";\n style?: TextStyle | TextStyle[];\n}\n\nexport function Link({\n children,\n href,\n onPress,\n color,\n underline = \"always\",\n style,\n}: LinkProps) {\n const { link } = useComponentTokens();\n const decoration = underline === \"none\" ? \"none\" : \"underline\";\n\n return (\n {\n if (onPress) onPress();\n if (href) {\n try {\n await Linking.openURL(href);\n } catch {\n // ignore\n }\n }\n }}\n style={[\n link.text,\n { color: color ?? link.text.color, textDecorationLine: decoration },\n style,\n ]}\n >\n {children}\n \n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable, FlatList, type ListRenderItem, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\n// ─── List Context ────────────────────────────────────────────────\n\ninterface ListContextValue {\n dense?: boolean;\n disablePadding?: boolean;\n}\n\nconst ListContext = createContext(null);\n\nfunction useListContext() {\n return useContext(ListContext);\n}\n\n// ─── List Component ──────────────────────────────────────────────\n\nexport interface ListProps {\n children?: React.ReactNode;\n dense?: boolean;\n disablePadding?: boolean;\n subheader?: React.ReactNode;\n style?: StyleProp;\n}\n\nexport function List({ children, dense = false, disablePadding = false, subheader, style }: ListProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n \n {subheader && (\n \n {typeof subheader === \"string\" ? (\n \n {subheader}\n \n ) : subheader}\n \n )}\n {children}\n \n \n );\n}\n\n// ─── ListItem ────────────────────────────────────────────────────\n\nexport interface ListItemProps {\n children?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n divider?: boolean;\n style?: StyleProp;\n}\n\nfunction ListItemInner({\n children,\n secondaryAction,\n onPress,\n disabled = false,\n selected = false,\n divider = false,\n style,\n}: ListItemProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n const isDense = ctx?.dense;\n\n return (\n [\n list.item,\n {\n paddingVertical: isDense ? tokens.spacing[2] : tokens.spacing[3],\n backgroundColor: selected ? tokens.color.brand.subtle : \"transparent\",\n borderBottomWidth: divider ? 1 : 0,\n borderBottomColor: tokens.color.border.subtle,\n opacity: disabled ? 0.5 : 1,\n },\n pressed && list.item.pressed,\n style,\n ] as any}\n >\n \n {children}\n \n {secondaryAction && (\n \n {secondaryAction}\n \n )}\n \n );\n}\n\nexport const ListItem = React.memo(ListItemInner);\n\n// ─── ListItemText ────────────────────────────────────────────────\n\nexport interface ListItemTextProps {\n primary: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport function ListItemText({ primary, secondary }: ListItemTextProps) {\n const { list } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useListContext();\n\n return (\n \n {typeof primary === \"string\" ? (\n \n {primary}\n \n ) : primary}\n {secondary && (\n typeof secondary === \"string\" ? (\n \n {secondary}\n \n ) : secondary\n )}\n \n );\n}\n\n// ─── ListItemIcon ────────────────────────────────────────────────\n\nexport function ListItemIcon({ children }: { children: React.ReactNode }) {\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\n// ─── FlatList Wrapper ────────────────────────────────────────────\n\nexport interface ListDataProps extends Omit {\n data: T[];\n renderItem: ListRenderItem;\n estimatedItemSize: number;\n keyExtractor?: (item: T, index: number) => string;\n}\n\nexport function ListData({\n data,\n renderItem,\n estimatedItemSize,\n keyExtractor,\n ...listProps\n}: ListDataProps) {\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { View, Text, StyleSheet, AccessibilityInfo } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n withRepeat,\n withSequence,\n cancelAnimation,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\nexport interface MarqueeProps {\n /** Content to scroll */\n children: React.ReactNode;\n /** Speed of animation (pixels per second) */\n speed?: number;\n /** Direction of scroll */\n direction?: \"left\" | \"right\" | \"up\" | \"down\";\n /** Whether to pause on hover/press (for web compatibility) */\n pauseOnHover?: boolean;\n /** Whether to pause on press */\n pauseOnPress?: boolean;\n /** Whether to repeat infinitely */\n loop?: boolean;\n /** Delay before starting animation */\n delay?: number;\n /** Gradient fade edges */\n fadeEdges?: boolean;\n /** Custom gradient colors for fade */\n fadeColor?: string;\n /** Accessibility label */\n accessibilityLabel?: string;\n /** Test ID for testing */\n testID?: string;\n}\n\n/**\n * Marquee component for scrolling text or content horizontally/vertically.\n * Uses React Native Reanimated for smooth GPU-accelerated animations.\n */\nexport function Marquee({\n children,\n speed = 50,\n direction = \"left\",\n pauseOnHover = false,\n pauseOnPress = false,\n loop = true,\n delay = 0,\n fadeEdges = true,\n fadeColor,\n accessibilityLabel = \"Scrolling content\",\n testID = \"marquee\",\n}: MarqueeProps) {\n const tokens = useTokens();\n const containerRef = useRef(null);\n const contentRef = useRef(null);\n\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const isPaused = useSharedValue(false);\n\n const [containerSize, setContainerSize] = React.useState(0);\n const [contentSize, setContentSize] = React.useState(0);\n\n const animatedStyle = useAnimatedStyle(() => {\n if (direction === \"left\" || direction === \"right\") {\n return {\n transform: [{ translateX: translateX.value }],\n };\n } else {\n return {\n transform: [{ translateY: translateY.value }],\n };\n }\n });\n\n const startAnimation = (containerWidth: number, contentWidth: number) => {\n if (contentWidth <= containerWidth) return; // No need to scroll\n\n const distance = contentWidth - containerWidth;\n const duration = (distance / speed) * 1000; // Convert to milliseconds\n\n const startValue = direction === \"left\" ? 0 : -distance;\n const endValue = direction === \"left\" ? -distance : 0;\n\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = startValue;\n } else {\n translateY.value = startValue;\n }\n\n const animation = withTiming(endValue, {\n duration,\n easing: Easing.linear,\n });\n\n const repeatedAnimation = loop\n ? withRepeat(\n withSequence(\n withTiming(endValue, { duration, easing: Easing.linear }),\n withTiming(startValue, { duration: 0 }), // Reset instantly\n ),\n -1, // Infinite\n false,\n )\n : animation;\n\n if (delay > 0) {\n setTimeout(() => {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }, delay);\n } else {\n if (direction === \"left\" || direction === \"right\") {\n translateX.value = repeatedAnimation;\n } else {\n translateY.value = repeatedAnimation;\n }\n }\n };\n\n const pauseAnimation = () => {\n isPaused.value = true;\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n\n const resumeAnimation = () => {\n isPaused.value = false;\n // Restart animation using existing dimensions\n if (containerSize > 0 && contentSize > 0) {\n startAnimation(containerSize, contentSize);\n }\n };\n\n useEffect(() => {\n if (containerSize > 0 && contentSize > 0) {\n startAnimation(containerSize, contentSize);\n }\n return () => {\n cancelAnimation(translateX);\n cancelAnimation(translateY);\n };\n }, [containerSize, contentSize, speed, direction, loop]);\n\n const handlePressIn = () => {\n if (pauseOnPress) {\n pauseAnimation();\n }\n };\n\n const handlePressOut = () => {\n if (pauseOnPress) {\n resumeAnimation();\n }\n };\n\n const fadeGradient = fadeColor || tokens.color.surface.default;\n\n return (\n {\n const { width, height } = e.nativeEvent.layout;\n if (direction === \"left\" || direction === \"right\") {\n setContainerSize(width);\n } else {\n setContainerSize(height);\n }\n }}\n >\n {fadeEdges && (\n <>\n \n \n \n )}\n {\n const { width, height } = e.nativeEvent.layout;\n if (direction === \"left\" || direction === \"right\") {\n setContentSize(width);\n } else {\n setContentSize(height);\n }\n }}\n accessible={false} // Let parent handle accessibility\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: \"hidden\",\n position: \"relative\",\n },\n horizontal: {\n flexDirection: \"row\",\n },\n vertical: {\n flexDirection: \"column\",\n },\n fadeLeft: {\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeRight: {\n position: \"absolute\",\n right: 0,\n top: 0,\n bottom: 0,\n width: 20,\n zIndex: 1,\n },\n fadeTop: {\n left: 0,\n right: 0,\n top: 0,\n height: 20,\n width: undefined,\n },\n fadeBottom: {\n left: 0,\n right: 0,\n bottom: 0,\n height: 20,\n width: undefined,\n },\n});","import React, { useCallback, useMemo } from \"react\";\nimport { Modal, View, Pressable, Text, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n Easing,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useMenu } from \"@truongdq01/headless\";\n\nexport interface MenuProps {\n open: boolean;\n onClose?: () => void;\n anchorEl?: { pageX: number; pageY: number; width: number; height: number } | null;\n children?: React.ReactNode;\n}\n\nexport interface MenuItemProps {\n children?: React.ReactNode;\n onPress?: () => void;\n disabled?: boolean;\n selected?: boolean;\n}\n\nconst MenuContext = React.createContext<{ getItemProps: (o: any) => any } | null>(null);\n\nexport function Menu({ open, onClose, anchorEl, children }: MenuProps) {\n const { menu } = useComponentTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [menuSize, setMenuSize] = React.useState({ width: 0, height: 0 });\n const [mounted, setMounted] = React.useState(false);\n\n const { close, getItemProps } = useMenu({ onClose });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n // Animate in when open changes to true\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(() => {\n opacity.value = withTiming(1, { duration: 180, easing: Easing.out(Easing.cubic) });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n });\n } else if (mounted) {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(setMounted)(false);\n });\n }\n }, [open]);\n\n const MENU_MIN_WIDTH = 180;\n const GAP = 4;\n\n let top: number = 48;\n let left: number = windowWidth - MENU_MIN_WIDTH - 16;\n\n if (anchorEl) {\n const { pageX, pageY, width, height } = anchorEl;\n top = pageY + height + GAP;\n left = pageX;\n\n if (left + menuSize.width > windowWidth - 8) {\n left = windowWidth - menuSize.width - 8;\n }\n if (top + menuSize.height > windowHeight - 8) {\n top = pageY - menuSize.height - GAP;\n }\n top = Math.max(8, top);\n left = Math.max(8, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setMenuSize({ width, height });\n }}\n style={[\n menu.container,\n {\n position: \"absolute\",\n top,\n left,\n minWidth: MENU_MIN_WIDTH,\n },\n animStyle,\n ]}\n >\n \n {children}\n \n \n \n );\n}\n\nexport function MenuItem({ children, onPress, disabled = false, selected = false }: MenuItemProps) {\n const { menu } = useComponentTokens();\n const tokens = useTokens();\n const ctx = React.useContext(MenuContext);\n\n const itemProps = ctx?.getItemProps({ onClick: onPress, disabled }) ?? { onPress, disabled };\n\n return (\n [\n menu.item,\n pressed && { backgroundColor: tokens.color.bg.subtle },\n selected && { backgroundColor: tokens.color.brand.subtle },\n disabled && { opacity: 0.5 },\n ]}\n >\n \n {children}\n \n \n );\n}\n","import React from \"react\";\nimport { Modal as RNModal, View, Pressable, StyleSheet, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface ModalProps {\n open: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n keepMounted?: boolean;\n hideBackdrop?: boolean;\n disableAutoFocus?: boolean;\n disableEscapeKeyDown?: boolean;\n /** Accessibility label for the modal content container */\n accessibilityLabel?: string;\n /** Accessibility label for the backdrop dismiss button */\n backdropAccessibilityLabel?: string;\n BackdropComponent?: React.ComponentType;\n BackdropProps?: object;\n contentStyle?: StyleProp;\n}\n\nexport function Modal({\n open,\n onClose,\n children,\n keepMounted = false,\n hideBackdrop = false,\n disableEscapeKeyDown = false,\n accessibilityLabel = \"Modal\",\n backdropAccessibilityLabel = \"Dismiss modal\",\n BackdropComponent,\n BackdropProps,\n contentStyle,\n}: ModalProps) {\n const { modal } = useComponentTokens();\n\n if (!open && !keepMounted) return null;\n\n const handleRequestClose = () => {\n if (!disableEscapeKeyDown) {\n onClose?.();\n }\n };\n\n return (\n \n \n {!hideBackdrop && (\n BackdropComponent ? (\n (() => {\n const el = ;\n return React.isValidElement(el) ? React.cloneElement(el as any, { collapsable: false }) : el;\n })()\n ) : (\n \n )\n )}\n \n {children}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n content: {\n minWidth: 280,\n maxWidth: \"90%\",\n },\n});\n","import React, { useEffect } from \"react\";\nimport { View, TextInput, Pressable, Text } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n withTiming,\n withSequence,\n withRepeat,\n cancelAnimation,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useOTPInput, useReduceMotionEnabled } from \"@truongdq01/headless\";\n\nexport interface OTPInputProps {\n length?: number;\n value: string;\n onChange: (value: string) => void;\n onComplete?: (value: string) => void;\n disabled?: boolean;\n /** Show dots instead of digits (PIN entry). */\n mask?: boolean;\n}\n\nexport function OTPInput({\n length = 6,\n value,\n onChange,\n onComplete,\n disabled = false,\n mask = false,\n}: OTPInputProps) {\n const { otpInput } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { inputRef, isFocused, handlePress, getOtpProps } = useOTPInput({\n length,\n value,\n onChange,\n onComplete,\n disabled,\n });\n\n return (\n \n \n\n \n {Array.from({ length }).map((_, index) => {\n const char = value[index] || \"\";\n const isCurrentFocus = isFocused && value.length === index;\n const isFilled = char.length > 0;\n const isLastCellWhenFull = isFocused && value.length === length && index === length - 1;\n const hasFocusBorder = isCurrentFocus || isLastCellWhenFull;\n\n return (\n \n );\n })}\n \n \n );\n}\n\nfunction OTPCell({\n char,\n isFocused,\n isFilled,\n showCursor,\n mask,\n reduceMotion,\n}: {\n char: string;\n isFocused: boolean;\n isFilled: boolean;\n showCursor: boolean;\n mask: boolean;\n reduceMotion: boolean;\n}) {\n const { otpInput } = useComponentTokens();\n const scale = useSharedValue(1);\n const cursorOpacity = useSharedValue(1);\n\n useEffect(() => {\n if (showCursor && !reduceMotion) {\n cursorOpacity.value = withRepeat(\n withSequence(withTiming(0, { duration: 500 }), withTiming(1, { duration: 500 })),\n -1,\n false,\n );\n } else {\n cancelAnimation(cursorOpacity);\n cursorOpacity.value = 1;\n }\n return () => cancelAnimation(cursorOpacity);\n }, [showCursor, reduceMotion]);\n\n useEffect(() => {\n if (isFocused) {\n scale.value = withSequence(\n withTiming(1.1, { duration: 150 }),\n withTiming(1, { duration: 150 })\n );\n } else if (isFilled) {\n scale.value = withSpring(1, { damping: 10, stiffness: 200 });\n } else {\n scale.value = withTiming(1, { duration: 150 });\n }\n }, [isFocused, isFilled]);\n\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const cursorStyle = useAnimatedStyle(() => ({\n opacity: cursorOpacity.value,\n }));\n\n const borderColor = isFocused\n ? otpInput.cell.focused.borderColor\n : isFilled\n ? otpInput.cell.filled.borderColor\n : otpInput.cell.borderColor;\n\n const backgroundColor = isFilled ? otpInput.cell.filled.backgroundColor : otpInput.cell.backgroundColor;\n\n const borderWidth = isFocused ? Math.max(otpInput.cell.borderWidth * 1.5, 2) : otpInput.cell.borderWidth;\n\n const displayChar = isFilled && mask ? \"\\u2022\" : char;\n\n return (\n \n {showCursor ? (\n \n ) : (\n \n {displayChar}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { usePagination, type PaginationItem, useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface PaginationProps {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n variant?: \"text\" | \"outlined\";\n shape?: \"circular\" | \"rounded\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function Pagination({\n count,\n page,\n defaultPage,\n onChange,\n variant = \"text\",\n shape = \"rounded\",\n size = \"md\",\n}: PaginationProps) {\n const tokens = useTokens();\n const { pagination } = useComponentTokens();\n const { page: current, setPage, items } = usePagination({ count, page, defaultPage, onChange });\n\n const s = pagination.size[size];\n\n const renderItem = (item: PaginationItem, idx: number) => {\n if (typeof item !== \"number\") {\n return (\n \n ...\n \n );\n }\n\n const selected = item === current;\n const itemTokens = selected ? pagination.item.active : pagination.item.default;\n\n return (\n setPage(item)}\n accessibilityRole=\"button\"\n accessibilityLabel={`Page ${item}`}\n accessibilityState={{ selected }}\n style={{\n height: s,\n minWidth: s,\n paddingHorizontal: 8,\n borderRadius: shape === \"circular\" ? s / 2 : tokens.radius.md,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: itemTokens.bg,\n borderWidth: variant === \"outlined\" ? 1 : 0,\n borderColor: itemTokens.borderColor,\n }}\n >\n \n {item}\n \n \n );\n };\n\n return (\n \n {items.map(renderItem)}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport interface PaperProps {\n children?: React.ReactNode;\n variant?: \"elevation\" | \"outlined\" | \"flat\";\n elevation?: \"none\" | \"sm\" | \"md\" | \"lg\";\n square?: boolean;\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Paper({\n children,\n variant = \"elevation\",\n elevation = \"sm\",\n square = false,\n style,\n}: PaperProps) {\n const { paper } = useComponentTokens();\n const tokens = useTokens();\n\n return (\n \n {children}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopoverOriginVertical = \"top\" | \"center\" | \"bottom\" | number;\nexport type PopoverOriginHorizontal = \"left\" | \"center\" | \"right\" | number;\n\nexport interface PopoverOrigin {\n vertical: PopoverOriginVertical;\n horizontal: PopoverOriginHorizontal;\n}\n\nexport interface PopoverProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n anchorPosition?: { top: number; left: number };\n onClose?: () => void;\n anchorOrigin?: PopoverOrigin;\n transformOrigin?: PopoverOrigin;\n elevation?: number;\n PaperProps?: { style?: object };\n marginThreshold?: number;\n children?: React.ReactNode;\n}\n\nconst defaultOrigin: PopoverOrigin = { vertical: \"bottom\", horizontal: \"left\" };\nconst defaultTransform: PopoverOrigin = { vertical: \"top\", horizontal: \"left\" };\n\nfunction resolveOrigin(value: PopoverOriginVertical | PopoverOriginHorizontal, size: number) {\n if (typeof value === \"number\") return value;\n if (value === \"center\") return size / 2;\n if (value === \"bottom\" || value === \"right\") return size;\n return 0;\n}\n\nexport function Popover({\n open,\n anchorEl,\n anchorPosition,\n onClose,\n anchorOrigin = defaultOrigin,\n transformOrigin = defaultTransform,\n PaperProps,\n marginThreshold = 12,\n children,\n}: PopoverProps) {\n const { popover } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const anchorX = anchorPosition?.left ?? anchorRect.x;\n const anchorY = anchorPosition?.top ?? anchorRect.y;\n const anchorWidth = anchorRect.width ?? 0;\n const anchorHeight = anchorRect.height ?? 0;\n\n const anchorOffsetX = resolveOrigin(anchorOrigin.horizontal, anchorWidth);\n const anchorOffsetY = resolveOrigin(anchorOrigin.vertical, anchorHeight);\n const transformOffsetX = resolveOrigin(transformOrigin.horizontal, contentSize.width);\n const transformOffsetY = resolveOrigin(transformOrigin.vertical, contentSize.height);\n\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n let left = anchorX + anchorOffsetX - transformOffsetX;\n let top = anchorY + anchorOffsetY - transformOffsetY;\n\n left = Math.max(marginThreshold, Math.min(left, screenWidth - contentSize.width - marginThreshold));\n top = Math.max(marginThreshold, Math.min(top, screenHeight - contentSize.height - marginThreshold));\n\n return { left, top };\n }, [anchorX, anchorY, anchorOffsetX, anchorOffsetY, transformOffsetX, transformOffsetY, contentSize, screenWidth, screenHeight, marginThreshold]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n paper: {\n position: \"absolute\",\n borderRadius: 12,\n borderWidth: 1,\n padding: 12,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React, { useMemo, useState } from \"react\";\nimport { Modal, View, Pressable, StyleSheet, Dimensions, type LayoutChangeEvent, type StyleProp, type ViewStyle } from \"react-native\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type PopperPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport interface PopperProps {\n open: boolean;\n anchorEl?: { x: number; y: number; width?: number; height?: number } | null;\n placement?: PopperPlacement;\n disablePortal?: boolean;\n transition?: boolean;\n keepMounted?: boolean;\n onClose?: () => void;\n children?: React.ReactNode;\n}\n\nfunction resolvePlacement(\n placement: PopperPlacement,\n anchor: { x: number; y: number; width: number; height: number },\n content: { width: number; height: number }\n) {\n const baseX = anchor.x;\n const baseY = anchor.y;\n\n const centerX = baseX + anchor.width / 2 - content.width / 2;\n const centerY = baseY + anchor.height / 2 - content.height / 2;\n const leftX = baseX;\n const rightX = baseX + anchor.width - content.width;\n const topY = baseY - content.height;\n const bottomY = baseY + anchor.height;\n\n switch (placement) {\n case \"top\":\n return { left: centerX, top: topY };\n case \"top-start\":\n return { left: leftX, top: topY };\n case \"top-end\":\n return { left: rightX, top: topY };\n case \"bottom\":\n return { left: centerX, top: bottomY };\n case \"bottom-start\":\n return { left: leftX, top: bottomY };\n case \"bottom-end\":\n return { left: rightX, top: bottomY };\n case \"left\":\n return { left: baseX - content.width, top: centerY };\n case \"left-start\":\n return { left: baseX - content.width, top: baseY };\n case \"left-end\":\n return { left: baseX - content.width, top: baseY + anchor.height - content.height };\n case \"right\":\n return { left: baseX + anchor.width, top: centerY };\n case \"right-start\":\n return { left: baseX + anchor.width, top: baseY };\n case \"right-end\":\n return { left: baseX + anchor.width, top: baseY + anchor.height - content.height };\n default:\n return { left: centerX, top: bottomY };\n }\n}\n\nexport function Popper({\n open,\n anchorEl,\n placement = \"bottom\",\n keepMounted = false,\n onClose,\n children,\n}: PopperProps) {\n const { popper } = useComponentTokens();\n const tokens = useTokens();\n const [contentSize, setContentSize] = useState({ width: 0, height: 0 });\n\n if (!open && !keepMounted) return null;\n\n const anchorRect = anchorEl ?? { x: 0, y: 0, width: 0, height: 0 };\n const { width: screenWidth, height: screenHeight } = Dimensions.get(\"window\");\n\n const position = useMemo(() => {\n const pos = resolvePlacement(placement, {\n x: anchorRect.x,\n y: anchorRect.y,\n width: anchorRect.width ?? 0,\n height: anchorRect.height ?? 0,\n }, contentSize);\n\n const left = Math.max(8, Math.min(pos.left, screenWidth - contentSize.width - 8));\n const top = Math.max(8, Math.min(pos.top, screenHeight - contentSize.height - 8));\n return { left, top };\n }, [placement, anchorRect, contentSize, screenWidth, screenHeight]);\n\n const handleLayout = (event: LayoutChangeEvent) => {\n const { width, height } = event.nativeEvent.layout;\n if (width !== contentSize.width || height !== contentSize.height) {\n setContentSize({ width, height });\n }\n };\n\n return (\n \n \n }\n >\n {children}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n },\n popper: {\n position: \"absolute\",\n borderRadius: 10,\n borderWidth: 1,\n padding: 10,\n shadowOpacity: 0.15,\n shadowRadius: 10,\n shadowOffset: { width: 0, height: 6 },\n },\n});\n","import React from \"react\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { usePressable, useComponentTokens } from \"@truongdq01/headless\";\nimport type { UsePressableOptions } from \"@truongdq01/headless\";\n\nexport interface PressableProps extends UsePressableOptions {\n children: React.ReactNode | ((state: { isPressed: boolean }) => React.ReactNode);\n style?: object | object[];\n}\n\nexport function Pressable({ children, style, testID, ...hookOptions }: PressableProps) {\n const { pressable } = useComponentTokens();\n const { gesture, animatedStyle, accessibilityProps, isPressed } = usePressable({\n ...hookOptions,\n testID,\n });\n\n return (\n \n \n {typeof children === \"function\" ? children({ isPressed }) : children}\n \n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolate,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useRadioGroup, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseRadioGroupOptions } from \"@truongdq01/headless\";\n\n// ─── RadioItem ────────────────────────────────────────────────────\n\nexport interface RadioItemProps {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n isSelected: boolean;\n onPress: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioItem({\n label,\n description,\n disabled = false,\n isSelected,\n onPress,\n size = \"md\",\n}: RadioItemProps) {\n const tokens = useTokens();\n const { radio } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n const outerSize = radio.container[size];\n const innerSize = radio.dot[size];\n const snappySpring = spring.snappy;\n\n const scale = useSharedValue(isSelected ? 1 : 0);\n const ringFill = useSharedValue(isSelected ? 1 : 0);\n\n React.useEffect(() => {\n const target = isSelected ? 1 : 0;\n scale.value = reduceMotion ? target : withSpring(target, snappySpring);\n ringFill.value = reduceMotion ? target : withSpring(target, snappySpring);\n }, [isSelected, snappySpring, reduceMotion, scale, ringFill]);\n\n const dotStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n opacity: scale.value,\n }));\n\n const outerRingStyle = useAnimatedStyle(() => ({\n borderWidth: interpolate(ringFill.value, [0, 1], [outerSize.borderWidth, 0]),\n borderColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.borderOff, \"transparent\"]),\n backgroundColor: interpolateColor(ringFill.value, [0, 1], [radio.colors.bgOff, radio.colors.borderOn]),\n }));\n\n const handlePress = () => {\n if (!isSelected && !reduceMotion) {\n scale.value = withSpring(0.6, { damping: 12, stiffness: 200 }, () => {\n \"worklet\";\n scale.value = withSpring(1, snappySpring);\n });\n }\n onPress();\n };\n\n return (\n \n {/* Outer ring */}\n \n {/* Inner dot */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n}\n\n// ─── RadioGroup ───────────────────────────────────────────────────\n\nexport interface RadioOption {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends UseRadioGroupOptions {\n options: RadioOption[];\n label?: string;\n direction?: \"vertical\" | \"horizontal\";\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport function RadioGroup({\n options,\n label,\n direction = \"vertical\",\n size = \"md\",\n ...hookOptions\n}: RadioGroupProps) {\n const tokens = useTokens();\n const { isSelected, getItemProps } = useRadioGroup(hookOptions);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n {options.map((option) => {\n const itemProps = getItemProps(option.value, option.disabled);\n return (\n \n );\n })}\n \n \n );\n}","import React, { memo, useCallback } from \"react\";\nimport {\n View,\n Pressable,\n Text,\n AccessibilityInfo,\n type AccessibilityActionEvent,\n} from \"react-native\";\nimport Animated, { useAnimatedStyle, useSharedValue, withSpring } from \"react-native-reanimated\";\nimport { spring } from \"@truongdq01/tokens\";\nimport { useRating, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon\";\n\nconst DEFAULT_ICON_NAMES = {\n filled: \"star\" as const,\n empty: \"star\" as const,\n half: \"starHalf\" as const,\n};\n\nfunction clamp(n: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, n));\n}\n\n/** State of a single star slot */\nexport type RatingStarState = \"filled\" | \"half\" | \"empty\";\n\n/**\n * Star row item: press feedback uses Reanimated; stars are not separate a11y nodes.\n * Consumers should pass a stable `onChange` (e.g. `useCallback`) so `Rating` memo stays effective.\n */\nexport interface RatingProps {\n value?: number;\n defaultValue?: number;\n max?: number;\n precision?: number;\n readOnly?: boolean;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n onChange?: (value: number) => void;\n /** When true, show numeric value next to stars (e.g. `3/5`). */\n showValue?: boolean;\n /** Where `showValue` sits relative to the star row. Default `end`. */\n valuePosition?: \"start\" | \"end\";\n /** Tighter gap between stars (uses `rating.containerCompact`). */\n compact?: boolean;\n /**\n * Icons for filled / empty / half. Empty uses the same glyph as `filled` with empty token color\n * when both default to `star`.\n */\n iconNames?: { filled: IconName; empty: IconName; half: IconName };\n /**\n * Fully custom icon renderer. Overrides `iconNames` when provided.\n * Receives the star state, dp size, and theme color — return any React node (emoji, SVG, etc.).\n */\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n /** Number of ratings/reviews — shown as `★ 4.3 (128)` when combined with `showValue`. */\n ratingCount?: number;\n /**\n * Format function for the value label. Receives `(value, max, ratingCount?)`.\n * Default: `\"3/5\"` or `\"4.3 (128)\"` when `ratingCount` is provided.\n */\n formatLabel?: (value: number, max: number, ratingCount?: number) => string;\n}\n\ntype RatingStarButtonProps = {\n index: number;\n iconSize: number;\n iconName: IconName;\n iconColor: string;\n starState: RatingStarState;\n disabled: boolean;\n readOnly: boolean;\n reduceMotion: boolean;\n onPress: (index: number) => void;\n renderIcon?: (state: RatingStarState, size: number, color: string) => React.ReactNode;\n};\n\nfunction RatingStarButton({\n index,\n iconSize,\n iconName,\n iconColor,\n starState,\n disabled,\n readOnly,\n reduceMotion,\n onPress,\n renderIcon,\n}: RatingStarButtonProps) {\n const scale = useSharedValue(1);\n const animStyle = useAnimatedStyle(() => ({\n transform: [{ scale: scale.value }],\n }));\n\n const handlePressIn = () => {\n if (disabled || readOnly || reduceMotion) return;\n scale.value = withSpring(1.12, spring.snappy);\n };\n\n const handlePressOut = () => {\n if (disabled || readOnly) return;\n if (reduceMotion) {\n scale.value = 1;\n return;\n }\n scale.value = withSpring(1, spring.snappy);\n };\n\n const iconContent = renderIcon\n ? renderIcon(starState, iconSize, iconColor)\n : {iconName};\n\n return (\n onPress(index)}\n onPressIn={handlePressIn}\n onPressOut={handlePressOut}\n style={{ opacity: disabled ? 0.5 : 1 }}\n >\n \n {iconContent}\n \n \n );\n}\n\nfunction RatingInner({\n value,\n defaultValue,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = \"md\",\n onChange,\n showValue = false,\n valuePosition = \"end\",\n compact = false,\n iconNames: iconNamesProp,\n renderIcon,\n ratingCount,\n formatLabel,\n}: RatingProps) {\n const { rating } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const icons = { ...DEFAULT_ICON_NAMES, ...iconNamesProp };\n\n const { value: ratingValue, setValue, precision: effectivePrecision } = useRating({\n value,\n defaultValue,\n max,\n precision,\n readOnly,\n disabled,\n onChange,\n });\n\n const iconSize = rating.size[size];\n const activeColor = rating.star.filled.color;\n const inactiveColor = rating.star.empty.color;\n const halfColor = rating.star.half.color;\n\n const announceValue = useCallback(\n (next: number) => {\n // TODO i18n — fixed English for library default\n const announce = AccessibilityInfo.announceForAccessibility;\n if (typeof announce === \"function\") {\n announce(`${next} out of ${max} stars`);\n }\n },\n [max]\n );\n\n const handlePress = (index: number) => {\n if (disabled || readOnly) return;\n const tapTarget = index + 1;\n const snapped = Math.round(tapTarget / effectivePrecision) * effectivePrecision;\n const newVal = ratingValue === snapped ? 0 : snapped;\n setValue(newVal);\n announceValue(newVal);\n };\n\n const applyAccessibilityStep = (delta: 1 | -1) => {\n if (disabled || readOnly) return;\n const raw = ratingValue + delta * effectivePrecision;\n const snapped = Math.round(raw / effectivePrecision) * effectivePrecision;\n const next = clamp(snapped, 0, max);\n if (next !== ratingValue) {\n setValue(next);\n announceValue(next);\n }\n };\n\n const onAccessibilityAction = (event: AccessibilityActionEvent) => {\n const name = event.nativeEvent.actionName;\n if (name === \"increment\") {\n applyAccessibilityStep(1);\n } else if (name === \"decrement\") {\n applyAccessibilityStep(-1);\n }\n };\n\n const interactive = !readOnly && !disabled;\n const rowStyle = compact ? rating.containerCompact : rating.container;\n\n const defaultFormatLabel = (v: number, m: number, count?: number) => {\n if (count != null) return `${v} (${count})`;\n return `${v}/${m}`;\n };\n const labelFormatter = formatLabel ?? defaultFormatLabel;\n const labelText = labelFormatter(ratingValue, max, ratingCount);\n\n const valueLabel = (\n \n {labelText}\n \n );\n\n const starsRow = (\n \n {Array.from({ length: max }).map((_, i) => {\n const starNumber = i + 1;\n const filled = ratingValue >= starNumber;\n const halfFilled =\n !filled && ratingValue >= starNumber - 0.5 && effectivePrecision <= 0.5;\n\n const starState: RatingStarState = halfFilled ? \"half\" : filled ? \"filled\" : \"empty\";\n let iconName: IconName = icons.empty;\n if (halfFilled) iconName = icons.half;\n else if (filled) iconName = icons.filled;\n const iconColor = halfFilled ? halfColor : filled ? activeColor : inactiveColor;\n\n return (\n \n );\n })}\n \n );\n\n if (!showValue) {\n return {starsRow};\n }\n\n return (\n \n {valuePosition === \"start\" ? valueLabel : null}\n {starsRow}\n {valuePosition === \"end\" ? valueLabel : null}\n \n );\n}\n\nexport const Rating = memo(RatingInner);\nRating.displayName = \"Rating\";\n","import React, { useState, useRef } from \"react\";\nimport { View, Pressable, Text, type LayoutChangeEvent } from \"react-native\";\nimport Animated, {\n useAnimatedStyle,\n withSpring,\n useSharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useSegmentedControl } from \"@truongdq01/headless\";\nconst TRACK_PADDING = 2;\n\n/** Critically damped — fast, no overshoot (replaces snappy spring for segment indicator). */\nconst INDICATOR_SPRING = { damping: 28, stiffness: 300, mass: 0.8 };\n\nexport type SegmentedControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport type SegmentedOption = string | { label: string; icon?: React.ReactNode };\n\nexport interface SegmentedControlProps {\n options: SegmentedOption[];\n selectedIndex: number;\n onChange: (index: number) => void;\n /** sm = 32, md = 36, lg = 44. Overridden by explicit `height`. */\n size?: SegmentedControlSize;\n /** Explicit height (overrides size). */\n height?: number;\n disabled?: boolean;\n}\n\nconst SIZE_HEIGHT: Record = { sm: 32, md: 36, lg: 44 };\nconst SIZE_FONT: Record = { sm: \"xs\", md: \"sm\", lg: \"md\" };\n\nfunction getLabel(opt: SegmentedOption): string {\n return typeof opt === \"string\" ? opt : opt.label;\n}\n\nfunction getIcon(opt: SegmentedOption): React.ReactNode | undefined {\n return typeof opt === \"string\" ? undefined : opt.icon;\n}\n\nexport function SegmentedControl({\n options,\n selectedIndex,\n onChange,\n size = \"md\",\n height: heightProp,\n disabled = false,\n}: SegmentedControlProps) {\n const tokens = useTokens();\n const { segmentedControl } = useComponentTokens();\n const { isSelected, setSelectedIndex, getTabProps } = useSegmentedControl({\n value: selectedIndex,\n onChange: (val) => onChange(val as number),\n disabled,\n });\n\n const resolvedHeight = heightProp ?? SIZE_HEIGHT[size];\n const fontKey = SIZE_FONT[size];\n\n const [containerWidth, setContainerWidth] = useState(0);\n const [layoutReady, setLayoutReady] = useState(false);\n\n const innerWidth = Math.max(0, containerWidth - TRACK_PADDING * 2);\n const segmentWidth = options.length > 0 ? innerWidth / options.length : 0;\n const translateX = useSharedValue(0);\n const indicatorWidth = useSharedValue(0);\n const didInitialLayout = useRef(false);\n\n React.useEffect(() => {\n if (segmentWidth <= 0) return;\n const target = selectedIndex * segmentWidth;\n if (!didInitialLayout.current) {\n didInitialLayout.current = true;\n translateX.value = target;\n indicatorWidth.value = segmentWidth;\n return;\n }\n translateX.value = withSpring(target, INDICATOR_SPRING);\n indicatorWidth.value = withSpring(segmentWidth, INDICATOR_SPRING);\n }, [selectedIndex, segmentWidth, translateX, indicatorWidth]);\n\n const onLayout = (e: LayoutChangeEvent) => {\n const w = e.nativeEvent.layout.width;\n setContainerWidth(w);\n if (w > 0) setLayoutReady(true);\n };\n\n const indicatorStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: translateX.value }],\n width: indicatorWidth.value,\n }));\n\n const showIndicator = layoutReady && segmentWidth > 0 && containerWidth > 0;\n\n return (\n \n {showIndicator && (\n \n )}\n\n {options.map((option, index) => {\n const selected = isSelected(index as any);\n const label = getLabel(option);\n const icon = getIcon(option);\n return (\n \n {icon}\n \n {label}\n \n \n );\n })}\n \n );\n}\n","import React, { useRef, useState, useMemo, useCallback } from \"react\";\nimport { View, Text, TextInput, Pressable, ActivityIndicator, FlatList } from \"react-native\";\nimport { useSelect, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { BottomSheet } from \"../BottomSheet/BottomSheet\";\nimport type { BottomSheetRef } from \"../BottomSheet/BottomSheet\";\nimport type { UseSelectOptions, SelectOption } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport { SkeletonListItem } from \"../Skeleton\";\n\nexport interface SelectProps extends UseSelectOptions {\n label?: string;\n placeholder?: string;\n searchable?: boolean;\n error?: string;\n onClearError?: () => void;\n loading?: boolean;\n onLoadMore?: () => void;\n hasMore?: boolean;\n loadingMore?: boolean;\n renderOption?: (\n option: SelectOption,\n ctx: { selected: boolean }\n ) => React.ReactNode;\n}\n\nexport function Select({\n label,\n placeholder = \"Select…\",\n searchable = false,\n error,\n onClearError,\n loading = false,\n onLoadMore,\n hasMore = false,\n loadingMore = false,\n renderOption,\n options,\n ...hookOptions\n}: SelectProps) {\n const { select } = useComponentTokens();\n const tokens = useTokens();\n const sheetRef = useRef(null);\n const [query, setQuery] = useState(\"\");\n const endReachBusy = useRef(false);\n const a11yLabel = label ?? \"Select\";\n // FlashList is an optional native dependency. Fall back to FlatList when it's not installed.\n const ListImpl: React.ComponentType = useMemo(() => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const mod = require(\"@shopify/flash-list\") as { FlashList?: React.ComponentType };\n return mod?.FlashList ?? FlatList;\n } catch {\n return FlatList;\n }\n }, []);\n\n const {\n isOpen,\n open,\n close,\n selectOption,\n isSelected,\n displayLabel,\n } = useSelect({ options, ...hookOptions, placeholder });\n\n const hasSelection = displayLabel !== placeholder;\n\n const filtered = useMemo(() => {\n if (!query) return options;\n const lowerQuery = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(lowerQuery));\n }, [options, query]);\n\n const handleClose = useCallback(() => {\n sheetRef.current?.close();\n close();\n }, [close]);\n\n const handleOpen = useCallback(() => {\n setQuery(\"\");\n sheetRef.current?.open();\n open();\n }, [open]);\n\n const handleSelect = useCallback(\n (val: T) => {\n selectOption(val);\n onClearError?.();\n if (!hookOptions.multiple) handleClose();\n },\n [selectOption, onClearError, hookOptions.multiple, handleClose]\n );\n\n const onEndReached = useCallback(() => {\n if (!onLoadMore || !hasMore || loading || loadingMore || endReachBusy.current) return;\n endReachBusy.current = true;\n onLoadMore();\n }, [onLoadMore, hasMore, loading, loadingMore]);\n\n React.useEffect(() => {\n if (!loadingMore) endReachBusy.current = false;\n }, [loadingMore]);\n\n const renderItem = useCallback(\n ({ item: option }: { item: SelectOption }) => {\n const selected = isSelected(option.value);\n if (renderOption) {\n return (\n !option.disabled && handleSelect(option.value)}\n style={{ opacity: option.disabled ? 0.4 : 1 }}\n >\n {renderOption(option, { selected })}\n \n );\n }\n return (\n !option.disabled && handleSelect(option.value)}\n style={{\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderRadius: tokens.radius.md,\n backgroundColor: selected ? select.option.selected.bg : tokens.color.surface.default,\n opacity: option.disabled ? 0.4 : 1,\n }}\n >\n \n {option.label}\n \n {selected && }\n \n );\n },\n [isSelected, renderOption, select.option, tokens, handleSelect]\n );\n\n const listEmpty = useMemo(() => {\n if (loading && options.length === 0) {\n return (\n \n \n \n \n \n );\n }\n if (filtered.length === 0) {\n const emptyMsg = loading\n ? \"Loading…\"\n : query\n ? `No results for \"${query}\"`\n : \"No options\";\n return (\n \n {emptyMsg}\n \n );\n }\n return null;\n }, [loading, options.length, filtered.length, query, tokens]);\n\n return (\n \n {label && (\n \n {label}\n \n )}\n\n \n \n {displayLabel}\n \n \n {isOpen ? \"chevronUp\" : \"chevronDown\"}\n \n \n\n {error && (\n \n {error}\n \n )}\n\n 6 ? [\"70%\"] : [\"40%\"]}\n onClose={close}\n enableBackdrop\n enableDismissOnSwipe\n >\n \n {searchable && isOpen && (\n \n \n \n \n \n {query.length > 0 && (\n setQuery(\"\")} hitSlop={8}>\n \n \n )}\n \n )}\n\n {filtered.length === 0 ? (\n {listEmpty}\n ) : (\n ) => String(item.value)}\n onEndReached={onEndReached}\n onEndReachedThreshold={0.35}\n ItemSeparatorComponent={() => (\n \n )}\n ListFooterComponent={\n loadingMore ? (\n \n \n \n ) : (\n \n )\n }\n // FlashList-only optimization; harmless for FlatList (ignored)\n estimatedItemSize={48}\n />\n )}\n \n \n \n );\n}\n","import React, { createContext, useContext, useEffect, useState, Children, isValidElement, cloneElement } from \"react\";\nimport { View } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withRepeat,\n withTiming,\n interpolate,\n cancelAnimation,\n type SharedValue,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIsDark } from \"@truongdq01/headless\";\n\n/**\n * Available shimmer animation directions\n */\nexport type SkeletonShimmerDirection = \"pulse\" | \"left-to-right\" | \"right-to-left\";\n\n// ─── Shared shimmer context ───────────────────────────────────────\nconst ShimmerCtx = createContext | null>(null);\n\n/**\n * Props for the ShimmerProvider component\n */\nexport interface ShimmerProviderProps {\n children: React.ReactNode;\n /** Animation duration per cycle (ms) */\n duration?: number;\n}\n\n/**\n * Provider component that shares shimmer animation across child skeletons.\n * Improves performance by using a single shared animation value.\n *\n * @param props - Shimmer provider configuration\n * @returns Context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * \n * ```\n */\nexport function ShimmerProvider({ children, duration = 1200 }: ShimmerProviderProps) {\n const shimmer = useSharedValue(0);\n useEffect(() => {\n shimmer.value = withRepeat(withTiming(1, { duration }), -1, true);\n return () => cancelAnimation(shimmer);\n }, [duration]);\n return {children};\n}\n\nfunction useShimmerValue(animate: boolean, delayMs: number): SharedValue {\n const shared = useContext(ShimmerCtx);\n const local = useSharedValue(0);\n\n useEffect(() => {\n if (shared || !animate) {\n cancelAnimation(local);\n local.value = 0;\n return;\n }\n const start = () => {\n local.value = withRepeat(withTiming(1, { duration: 1200 }), -1, true);\n };\n if (delayMs > 0) {\n const t = setTimeout(start, delayMs);\n return () => { clearTimeout(t); cancelAnimation(local); };\n }\n start();\n return () => cancelAnimation(local);\n }, [animate, delayMs, !!shared]);\n\n return shared ?? local;\n}\n\n// ─── Base Skeleton ────────────────────────────────────────────────\n\nexport interface SkeletonProps {\n width?: number | `${number}%`;\n height?: number;\n borderRadius?: number;\n /** Disable shimmer animation */\n animate?: boolean;\n /** Stagger start — used by `SkeletonGroup` */\n delayMs?: number;\n /** Shimmer style — default `pulse` (opacity); LTR/RTL sweep uses translateX */\n shimmerDirection?: SkeletonShimmerDirection;\n}\n\nexport function Skeleton({\n width = \"100%\",\n height = 16,\n borderRadius,\n animate = true,\n delayMs = 0,\n shimmerDirection = \"pulse\",\n}: SkeletonProps) {\n const { skeleton } = useComponentTokens();\n const isDark = useIsDark();\n const shimmer = useShimmerValue(animate, delayMs);\n const [layoutW, setLayoutW] = useState(0);\n\n const sweepHighlight = isDark ? \"rgba(255,255,255,0.12)\" : \"rgba(255,255,255,0.45)\";\n\n const pulseStyle = useAnimatedStyle(() => ({\n opacity: interpolate(shimmer.value, [0, 1], [skeleton.opacity.start, skeleton.opacity.end]),\n }));\n\n const sweepStyle = useAnimatedStyle(() => {\n const w = Math.max(layoutW, 1);\n const sweep = w * 0.35;\n const t = shimmerDirection === \"right-to-left\" ? 1 - shimmer.value : shimmer.value;\n return {\n transform: [{ translateX: interpolate(t, [0, 1], [-sweep, w]) }],\n opacity: 0.45,\n };\n });\n\n const isSweep = shimmerDirection === \"left-to-right\" || shimmerDirection === \"right-to-left\";\n\n return (\n setLayoutW(e.nativeEvent.layout.width)}\n >\n {animate && isSweep && (\n \n )}\n \n );\n}\n\n// ─── SkeletonGroup — stagger children that accept `delayMs` ───────\n\nexport interface SkeletonGroupProps {\n children: React.ReactNode;\n /** Delay between each child (ms) */\n stagger?: number;\n}\n\nexport function SkeletonGroup({ stagger = 80, children }: SkeletonGroupProps) {\n return (\n <>\n {Children.map(children, (child, i) => {\n if (!isValidElement(child)) return child;\n return cloneElement(child as React.ReactElement<{ delayMs?: number }>, {\n delayMs: i * stagger,\n });\n })}\n \n );\n}\n\n// ─── Presets ──────────────────────────────────────────────────────\n\nexport const SkeletonText = React.memo(function SkeletonText({\n lines = 3,\n lastLineWidth = \"60%\",\n shimmerDirection = \"pulse\",\n}: {\n lines?: number;\n lastLineWidth?: `${number}%`;\n shimmerDirection?: SkeletonShimmerDirection;\n}) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: lines }).map((_, i) => (\n \n ))}\n \n );\n});\n\nexport const SkeletonCard = React.memo(function SkeletonCard() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n});\n\nexport const SkeletonListItem = React.memo(function SkeletonListItem() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n \n \n \n );\n});\n\n/** Avatar + two text lines — profile card placeholder */\nexport const SkeletonProfile = React.memo(function SkeletonProfile() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** 16:9 block + title lines */\nexport const SkeletonMedia = React.memo(function SkeletonMedia() {\n const tokens = useTokens();\n return (\n \n \n \n \n \n );\n});\n\n/** Repeated label + field rows */\nexport const SkeletonForm = React.memo(function SkeletonForm({ rows = 4 }: { rows?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: rows }).map((_, i) => (\n \n \n \n \n ))}\n \n );\n});\n\n/** N×M grid of squares */\nexport const SkeletonGrid = React.memo(function SkeletonGrid({ columns = 3, rows = 2, cell = 48 }: { columns?: number; rows?: number; cell?: number }) {\n const tokens = useTokens();\n return (\n \n {Array.from({ length: columns * rows }).map((_, i) => (\n \n ))}\n \n );\n});\n\n/** Header row + data rows */\nexport const SkeletonTable = React.memo(function SkeletonTable({ columns = 4, dataRows = 3 }: { columns?: number; dataRows?: number }) {\n const tokens = useTokens();\n return (\n \n \n {Array.from({ length: columns }).map((_, i) => (\n \n ))}\n \n {Array.from({ length: dataRows }).map((_, r) => (\n \n {Array.from({ length: columns }).map((_, c) => (\n \n ))}\n \n ))}\n \n );\n});\n","import React, { useMemo } from \"react\";\nimport { View, Text, TextInput, type TextStyle } from \"react-native\";\nimport Animated, { useAnimatedProps } from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSlider, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport type {\n UseSliderOptions,\n UseSliderOptionsRange,\n UseSliderOptionsSingle,\n UseSliderReturnRange,\n UseSliderReturnSingle,\n} from \"@truongdq01/headless\";\n\ntype SliderUiProps = {\n label?: string;\n /** Show current value (single) or \"lo – hi\" (range) */\n showValue?: boolean;\n formatValue?: (v: number) => string;\n /** Min / max labels under the track */\n showMinMaxLabels?: boolean;\n showMarks?: boolean;\n /** Vertical track height when `orientation=\"vertical\"` */\n sliderHeight?: number;\n /** Replace default thumb circle */\n thumbRenderer?: (args: {\n kind: \"single\" | \"low\" | \"high\";\n value: number;\n }) => React.ReactNode;\n};\n\nexport type SliderProps =\n | (SliderUiProps & UseSliderOptionsSingle)\n | (SliderUiProps & UseSliderOptionsRange);\n\nconst AnimatedTextInput = Animated.createAnimatedComponent(TextInput);\n\n/** Worklet snap (mirrors headless `snapRatioWorklet` for live labels). */\nfunction snapSliderValueWorklet(raw: number, minV: number, maxV: number, stepV: number): number {\n \"worklet\";\n if (stepV === 0 || maxV === minV) return Math.max(minV, Math.min(maxV, raw));\n const snapped = Math.round((raw - minV) / stepV) * stepV + minV;\n return Math.max(minV, Math.min(maxV, snapped));\n}\n\ntype LiveValueStyle = Pick;\n\nfunction SliderLiveSingleValue(props: {\n show: boolean;\n thumbRatioShared: UseSliderReturnSingle[\"thumbRatioShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const raw = thumbRatioShared.value * (max - min) + min;\n const s = snapSliderValueWorklet(raw, min, max, step);\n return { text: String(s) };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nfunction SliderLiveRangeValue(props: {\n show: boolean;\n thumbRatioLowShared: UseSliderReturnRange[\"thumbRatioLowShared\"];\n thumbRatioHighShared: UseSliderReturnRange[\"thumbRatioHighShared\"];\n min: number;\n max: number;\n step: number;\n style: LiveValueStyle;\n}) {\n const { show, thumbRatioLowShared, thumbRatioHighShared, min, max, step, style } = props;\n const animatedProps = useAnimatedProps(() => {\n const rawLo = thumbRatioLowShared.value * (max - min) + min;\n const rawHi = thumbRatioHighShared.value * (max - min) + min;\n const lo = snapSliderValueWorklet(rawLo, min, max, step);\n const hi = snapSliderValueWorklet(rawHi, min, max, step);\n return { text: `${lo} – ${hi}` };\n });\n if (!show) return null;\n return (\n \n );\n}\n\nexport function Slider({\n label,\n showValue = false,\n formatValue = (v: number) => String(v),\n showMinMaxLabels = false,\n showMarks = false,\n sliderHeight = 150,\n thumbRenderer,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n range = false,\n ...rest\n}: SliderProps) {\n const tokens = useTokens();\n const { slider } = useComponentTokens();\n const isVertical = orientation === \"vertical\";\n\n const sliderState = useSlider({\n min,\n max,\n step,\n orientation,\n range,\n ...rest,\n } as UseSliderOptions);\n\n const showRangeLabels = showMinMaxLabels;\n\n const marks =\n showMarks && step > 0\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => i * step + min)\n : [];\n\n const liveValueStyle = useMemo(\n (): LiveValueStyle => ({\n fontSize: tokens.fontSize.sm,\n fontWeight: tokens.fontWeight.semibold,\n color: tokens.color.brand.default,\n }),\n [tokens.color.brand.default, tokens.fontSize.sm, tokens.fontWeight.semibold]\n );\n\n const trackThickness = slider.track.height;\n const thumbW = slider.thumb.width;\n const thumbH = slider.thumb.height;\n\n // Match Meta's minimum comfortable hit target (48dp) while keeping the visual thumb smaller.\n const minHitSize = 48;\n const trackPad = Math.max(12, (minHitSize - thumbH) / 2);\n\n const thumbShellStyle = useMemo(() => {\n const chrome = thumbRenderer\n ? {\n backgroundColor: \"transparent\" as const,\n borderWidth: 0,\n borderColor: \"transparent\" as const,\n elevation: 0,\n shadowOpacity: 0,\n shadowRadius: 0,\n shadowOffset: { width: 0, height: 0 } as const,\n shadowColor: \"transparent\" as const,\n }\n : {\n backgroundColor: slider.thumb.bg,\n borderWidth: slider.thumb.borderWidth,\n borderColor: slider.thumb.borderColor,\n shadowColor: slider.thumb.shadowColor,\n shadowOffset: slider.thumb.shadowOffset,\n shadowOpacity: slider.thumb.shadowOpacity,\n shadowRadius: slider.thumb.shadowRadius,\n elevation: slider.thumb.elevation,\n };\n return {\n position: \"absolute\" as const,\n width: thumbW,\n height: thumbH,\n borderRadius: slider.thumb.borderRadius,\n ...chrome,\n ...(isVertical\n ? { left: \"50%\" as const, marginLeft: -thumbW / 2, top: (-thumbH / 2) as number }\n : { left: (-thumbW / 2) as number, top: undefined as undefined }),\n };\n }, [\n thumbRenderer,\n isVertical,\n thumbW,\n thumbH,\n slider.thumb,\n ]);\n\n function renderThumb(\n animatedStyle: object,\n kind: \"single\" | \"low\" | \"high\",\n value: number\n ) {\n const custom = thumbRenderer?.({ kind, value });\n return (\n \n {custom ?? null}\n \n );\n }\n\n if (sliderState.mode === \"range\") {\n const {\n currentValue,\n thumbRatioLowShared,\n thumbRatioHighShared,\n thumbLowAnimatedStyle,\n thumbHighAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGestureLow,\n panGestureHigh,\n onTrackLayout,\n } = sliderState;\n const [lo, hi] = currentValue;\n const d = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= hi && mark >= lo;\n return (\n \n );\n })}\n\n \n {renderThumb(thumbLowAnimatedStyle, \"low\", lo)}\n \n \n {renderThumb(thumbHighAnimatedStyle, \"high\", hi)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n }\n\n const {\n currentValue,\n thumbRatioShared,\n thumbAnimatedStyle,\n fillAnimatedStyle,\n trackAnimatedStyle,\n panGesture,\n onTrackLayout,\n } = sliderState as UseSliderReturnSingle;\n const disabled = (rest as { disabled?: boolean }).disabled;\n\n return (\n \n {(label || showValue) && (\n \n {label && (\n \n {label}\n \n )}\n {showValue && (\n \n )}\n \n )}\n\n \n \n \n onTrackLayout(isVertical ? e.nativeEvent.layout.height : e.nativeEvent.layout.width)\n }\n >\n \n \n \n\n {showMarks &&\n !isVertical &&\n marks.map((mark) => {\n const markPct = (mark - min) / (max - min);\n const isActive = mark <= currentValue;\n return (\n \n );\n })}\n\n {renderThumb(thumbAnimatedStyle, \"single\", currentValue)}\n \n \n \n\n {showRangeLabels && (\n \n {formatValue(min)}\n {formatValue(max)}\n \n )}\n \n );\n}\n","import React, { useEffect, useMemo } from \"react\";\nimport { View, Text, Pressable, Modal, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface SnackbarProps {\n /** If true, the snackbar is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Duration in ms before auto-hiding. Use null to disable. */\n autoHideDuration?: number | null;\n /** Callback on close */\n onClose?: () => void;\n /** Action element (e.g. Button) */\n action?: React.ReactNode;\n /** Position on screen */\n anchorOrigin?: { vertical: \"top\" | \"bottom\"; horizontal: \"left\" | \"center\" | \"right\" };\n}\n\nexport function Snackbar({\n open,\n message,\n autoHideDuration = 4000,\n onClose,\n action,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n}: SnackbarProps) {\n const { snackbar } = useComponentTokens();\n const tokens = useTokens();\n const [mounted, setMounted] = React.useState(open);\n\n const isBottom = anchorOrigin.vertical === \"bottom\";\n const translateY = useSharedValue(isBottom ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = () => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300, mass: 1 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n };\n\n const animateOut = (onDone: () => void) => {\n translateY.value = withTiming(isBottom ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n };\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = isBottom ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const verticalStyle = isBottom ? { bottom: 32 } : { top: 48 };\n const horizontalStyle = useMemo(() => {\n if (anchorOrigin.horizontal === \"center\") return { alignSelf: \"center\" as const };\n if (anchorOrigin.horizontal === \"left\") return { left: 16 };\n return { right: 16 };\n }, [anchorOrigin.horizontal]);\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as any,\n }));\n\n if (!mounted && !open) return null;\n\n return (\n \n \n \n {message}\n {action}\n {onClose && (\n \n \n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n },\n});\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useDisclosure, useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Fab } from \"../Fab/Fab\";\n\nexport interface SpeedDialProps {\n ariaLabel: string;\n icon?: React.ReactNode;\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n hidden?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface SpeedDialActionProps {\n icon?: React.ReactNode;\n tooltipTitle?: string;\n onPress?: () => void;\n}\n\ninterface SpeedDialContextValue {\n isOpen: boolean;\n close: () => void;\n}\n\nconst SpeedDialContext = createContext(null);\n\nexport function SpeedDial({\n ariaLabel,\n icon,\n direction = \"up\",\n open: controlledOpen,\n onOpen,\n onClose,\n hidden = false,\n children,\n}: SpeedDialProps) {\n const { speedDial } = useComponentTokens();\n const disclosure = useDisclosure({ isOpen: controlledOpen, onOpen, onClose });\n const tokens = useTokens();\n\n if (hidden) return null;\n\n const stackStyle = {\n flexDirection: (direction === \"left\" || direction === \"right\" ? \"row\" : \"column\") as \"row\" | \"column\",\n alignItems: \"center\" as const,\n gap: tokens.spacing[3],\n };\n\n const ctxValue = useMemo(() => ({ isOpen: disclosure.isOpen, close: disclosure.close }), [disclosure.isOpen, disclosure.close]);\n\n return (\n \n \n {disclosure.isOpen && children}\n \n \n \n );\n}\n\nexport function SpeedDialAction({ icon, tooltipTitle, onPress }: SpeedDialActionProps) {\n const { speedDial } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(SpeedDialContext);\n if (!ctx?.isOpen) return null;\n\n return (\n {\n onPress?.();\n ctx.close();\n }}\n style={speedDial.action as any}\n >\n \n {icon}\n \n {tooltipTitle && (\n \n {tooltipTitle}\n \n )}\n \n );\n}\n","import React from \"react\";\nimport { View, type ViewStyle } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\n\nexport interface StackProps {\n children?: React.ReactNode;\n direction?: \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n spacing?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | number;\n divider?: React.ReactNode;\n alignItems?: ViewStyle[\"alignItems\"];\n justifyContent?: ViewStyle[\"justifyContent\"];\n flexWrap?: ViewStyle[\"flexWrap\"];\n style?: ViewStyle | ViewStyle[];\n}\n\nexport function Stack({\n children,\n direction = \"column\",\n spacing = \"sm\",\n divider,\n alignItems,\n justifyContent,\n flexWrap,\n style,\n}: StackProps) {\n const { stack } = useComponentTokens();\n const gap = typeof spacing === \"number\" ? spacing : stack.gap[spacing];\n\n const items = React.Children.toArray(children);\n const content = divider\n ? items.flatMap((child, idx) => (idx === 0 ? [child] : [divider, child]))\n : items;\n\n return (\n \n {content}\n \n );\n}\n","import React from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface StepperProps {\n activeStep?: number;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface StepProps {\n index: number;\n label?: string;\n children?: React.ReactNode;\n}\n\nexport interface StepLabelProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function Stepper({ activeStep = 0, orientation = \"horizontal\", children }: StepperProps) {\n const { stepper } = useComponentTokens();\n const items = React.Children.toArray(children);\n\n return (\n \n {items.map((child) => {\n if (!React.isValidElement<{ activeStep?: number; orientation?: \"horizontal\" | \"vertical\" }>(child)) return child;\n return React.cloneElement(child, { activeStep, orientation });\n })}\n \n );\n}\n\ninterface StepInternalProps extends StepProps {\n activeStep: number;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nexport function Step({ index, label, children, activeStep = 0, orientation = \"horizontal\" }: Partial & StepProps) {\n const { stepper } = useComponentTokens();\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n\n const color = isCompleted\n ? stepper.step.completed.color\n : isActive\n ? stepper.step.active.color\n : stepper.step.pending.color;\n\n return (\n \n \n {isCompleted ? (\n \n ) : (\n \n {index + 1}\n \n )}\n \n {label && (\n \n {label}\n \n )}\n {children}\n \n );\n}\n\nexport function StepLabel({ children, style }: StepLabelProps) {\n const { stepper } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useSwitch, useTokens, useComponentTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { spring } from \"@truongdq01/tokens\";\nimport type { UseSwitchOptions } from \"@truongdq01/headless\";\n\nexport interface SwitchProps extends UseSwitchOptions {\n label?: string;\n description?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Switch = React.memo(({ label, description, size = \"md\", ...hookOptions }: SwitchProps) => {\n const tokens = useTokens();\n const { switch: switchT } = useComponentTokens();\n const reduceMotion = useReduceMotionEnabled();\n const { isOn, isDisabled, toggle, accessibilityProps } = useSwitch(hookOptions);\n\n const tTrack = switchT.track[size];\n const tThumb = switchT.thumb[size];\n const thumbTravel = Math.max(0, tTrack.width - tThumb.width - tTrack.padding * 2);\n\n // Shared value 0 = off, 1 = on\n const progress = useSharedValue(isOn ? 1 : 0);\n\n React.useEffect(() => {\n const target = isOn ? 1 : 0;\n progress.value = reduceMotion ? target : withSpring(target, spring.snappy);\n }, [isOn, reduceMotion]);\n\n const trackStyle = useAnimatedStyle(() => ({\n backgroundColor: interpolateColor(\n progress.value,\n [0, 1],\n [switchT.colors.trackOff, switchT.colors.trackOn]\n ),\n }));\n\n const thumbStyle = useAnimatedStyle(() => ({\n transform: [{ translateX: progress.value * thumbTravel }],\n }));\n\n return (\n \n {/* Track */}\n \n {/* Thumb */}\n \n \n\n {(label || description) && (\n \n {label && (\n \n {label}\n \n )}\n {description && (\n \n {description}\n \n )}\n \n )}\n \n );\n});","import React, { createContext, useContext, useMemo } from \"react\";\nimport { View, ScrollView, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { Button } from \"../Button/Button\";\nimport { Icon } from \"../Icon\";\n\n/**\n * Available table size variants\n */\nexport type TableSize = \"small\" | \"medium\";\n\n/**\n * Available table cell padding options\n */\nexport type TablePadding = \"normal\" | \"checkbox\" | \"none\";\n\n/**\n * Internal table context value\n */\ninterface TableContextValue {\n size: TableSize;\n padding: TablePadding;\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext(null);\n\nfunction useTableContext() {\n return useContext(TableContext);\n}\n\n/**\n * Props for the Table component\n */\nexport interface TableProps {\n children?: React.ReactNode;\n size?: TableSize;\n padding?: TablePadding;\n stickyHeader?: boolean;\n style?: object;\n}\n\n/**\n * Root table component that provides context for child table elements.\n * Implements Material Design table patterns with accessibility support.\n *\n * @param props - Table configuration props\n * @returns Table context provider component\n *\n * @example\n * ```tsx\n * \n * \n * \n * Name\n * Email\n * \n * \n * \n * {data.map(row => (\n * \n * {row.name}\n * {row.email}\n * \n * ))}\n * \n *
\n * ```\n */\nexport function Table({\n children,\n size = \"medium\",\n padding = \"normal\",\n stickyHeader = false,\n style,\n}: TableProps) {\n const ctx = useMemo(() => ({ size, padding, stickyHeader }), [size, padding, stickyHeader]);\n return (\n \n {children}\n \n );\n}\n\nexport interface TableContainerProps {\n children?: React.ReactNode;\n style?: object;\n}\n\nexport function TableContainer({ children, style }: TableContainerProps) {\n const { table } = useComponentTokens();\n return (\n \n {children}\n \n );\n}\n\nexport function TableHead({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport function TableBody({ children }: { children?: React.ReactNode }) {\n return {children};\n}\n\nexport function TableFooter({ children }: { children?: React.ReactNode }) {\n const { table } = useComponentTokens();\n return {children};\n}\n\nexport interface TableRowProps {\n children?: React.ReactNode;\n selected?: boolean;\n style?: object;\n}\n\nexport function TableRow({ children, selected = false, style }: TableRowProps) {\n const { table } = useComponentTokens();\n const tokens = useTokens();\n return (\n \n {children}\n \n );\n}\n\nexport interface TableCellProps {\n children?: React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n padding?: TablePadding;\n size?: TableSize;\n variant?: \"head\" | \"body\" | \"footer\";\n style?: object;\n}\n\nexport function TableCell({\n children,\n align = \"left\",\n padding,\n size,\n variant = \"body\",\n style,\n}: TableCellProps) {\n const { table } = useComponentTokens();\n const ctx = useTableContext();\n const tokens = useTokens();\n const resolvedPadding = padding ?? ctx?.padding ?? \"normal\";\n const resolvedSize = size ?? ctx?.size ?? \"medium\";\n\n const paddingX = {\n normal: tokens.spacing[4],\n checkbox: tokens.spacing[2],\n none: 0,\n }[resolvedPadding];\n\n const paddingY = resolvedSize === \"small\" ? tokens.spacing[2] : tokens.spacing[3];\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport interface TablePaginationProps {\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange?: (page: number) => void;\n onRowsPerPageChange?: (rows: number) => void;\n labelRowsPerPage?: string;\n}\n\nexport function TablePagination({\n count,\n page,\n rowsPerPage,\n onPageChange,\n labelRowsPerPage = \"Rows per page\",\n}: TablePaginationProps) {\n const tokens = useTokens();\n const totalPages = Math.max(1, Math.ceil(count / rowsPerPage));\n\n return (\n \n \n {labelRowsPerPage}: {rowsPerPage}\n \n \n \n Page {page + 1} of {totalPages}\n \n onPageChange?.(Math.max(0, page - 1))}\n startIcon={}\n >\n Prev\n \n = totalPages - 1}\n onPress={() => onPageChange?.(Math.min(totalPages - 1, page + 1))}\n endIcon={}\n >\n Next\n \n \n \n );\n}\n\nexport interface TableSortLabelProps {\n active?: boolean;\n direction?: \"asc\" | \"desc\";\n onClick?: () => void;\n children?: React.ReactNode;\n}\n\nexport function TableSortLabel({\n active = false,\n direction = \"asc\",\n onClick,\n children,\n}: TableSortLabelProps) {\n const tokens = useTokens();\n return (\n \n \n {children}\n \n {active ? (\n \n {direction === \"asc\" ? \"arrowUp\" : \"arrowDown\"}\n \n ) : (\n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTabs, useTokens } from \"@truongdq01/headless\";\n\nexport interface TabsProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n variant?: \"standard\" | \"scrollable\" | \"fullWidth\";\n centered?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n children?: React.ReactNode;\n}\n\nexport interface TabProps {\n value: T;\n label?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface TabsContextValue {\n getTabProps: (value: T, disabled?: boolean) => {\n onPress: () => void;\n accessibilityRole: \"tab\";\n accessibilityState: { selected: boolean; disabled: boolean };\n };\n isSelected: (value: T) => boolean;\n orientation: \"horizontal\" | \"vertical\";\n variant: \"standard\" | \"scrollable\" | \"fullWidth\";\n}\n\nconst TabsContext = createContext | null>(null);\n\nexport function Tabs({\n value,\n defaultValue,\n onChange,\n variant = \"standard\",\n centered = false,\n orientation = \"horizontal\",\n children,\n}: TabsProps) {\n const { tabs } = useComponentTokens();\n const { getTabProps, isSelected } = useTabs({ value, defaultValue, onChange });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function Tab({ value, label, icon, disabled = false }: TabProps) {\n const { tabs } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(TabsContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const { onPress, accessibilityState } = ctx.getTabProps(value, disabled);\n\n return (\n [\n {\n paddingVertical: tokens.spacing[3],\n paddingHorizontal: tokens.spacing[4],\n borderBottomWidth: ctx.orientation === \"horizontal\" ? tabs.indicator.height : 0,\n borderLeftWidth: ctx.orientation === \"vertical\" ? tabs.indicator.height : 0,\n borderColor: selected ? tabs.indicator.bg : \"transparent\",\n opacity: disabled ? 0.5 : pressed ? 0.92 : 1,\n alignItems: \"center\",\n flexDirection: \"row\",\n gap: tokens.spacing[2],\n },\n ctx.variant === \"fullWidth\" ? { flex: 1, justifyContent: \"center\" } : null,\n ]}\n >\n {icon}\n {label && (\n \n {label}\n \n )}\n \n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { View, Text, TextInput } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n interpolateColor,\n} from \"react-native-reanimated\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\nimport { useFormGroupVariant } from \"../FormField/FormGroupContext\";\nimport { AnimatedHelperText } from \"../Input/AnimatedHelperText\";\n\n/** IMPROVEMENT_PLAN Issue #1 — `inside` | `above` (label row) | `below` (between field and helper) */\nexport type TextAreaCounterPosition = \"inside\" | \"above\" | \"below\";\n\nconst FOCUS_MS = 150;\n\nexport interface TextAreaProps {\n label?: string;\n placeholder?: string;\n value?: string;\n onChangeText?: (text: string) => void;\n onBlur?: () => void;\n onFocus?: () => void;\n error?: string;\n helperText?: string;\n /**\n * Kept for API compatibility (e.g. TextField `rows`); layout height uses `maxLines` only.\n */\n minLines?: number;\n /** Visible height is fixed to this many lines; extra text scrolls inside. */\n maxLines?: number;\n /** Show character counter when `maxLength` is set */\n showCounter?: boolean;\n /**\n * `inside` = bottom-right inside the field (default);\n * `above` = same row as label (top);\n * `below` = between the field and helper/error.\n */\n counterPosition?: TextAreaCounterPosition;\n /** Maximum length (enables counter when `showCounter` is true) */\n maxLength?: number;\n disabled?: boolean;\n autoFocus?: boolean;\n accessibilityLabel?: string;\n}\n\nexport function TextArea({\n label,\n placeholder,\n value = \"\",\n onChangeText,\n onBlur,\n onFocus,\n error,\n helperText,\n minLines: _minLines = 3,\n maxLines = 8,\n maxLength,\n showCounter = true,\n counterPosition = \"inside\",\n disabled = false,\n autoFocus = false,\n accessibilityLabel,\n}: TextAreaProps) {\n const { textArea } = useComponentTokens();\n const tokens = useTokens();\n const formGroupVariant = useFormGroupVariant();\n const isGrouped = formGroupVariant === \"grouped\";\n const [isFocused, setIsFocused] = useState(false);\n\n const focusProgress = useSharedValue(0);\n const errorSv = useSharedValue(0);\n const disabledSv = useSharedValue(0);\n const groupedSv = useSharedValue(0);\n\n useEffect(() => {\n errorSv.value = error ? 1 : 0;\n }, [error, errorSv]);\n\n useEffect(() => {\n disabledSv.value = disabled ? 1 : 0;\n }, [disabled, disabledSv]);\n\n useEffect(() => {\n groupedSv.value = isGrouped ? 1 : 0;\n }, [isGrouped, groupedSv]);\n\n useEffect(() => {\n if (error || disabled) {\n focusProgress.value = 0;\n return;\n }\n focusProgress.value = withTiming(isFocused ? 1 : 0, { duration: FOCUS_MS });\n }, [isFocused, error, disabled, focusProgress]);\n\n const defaultBorder = tokens.color.border.input;\n const focusBorder = tokens.color.border.focus;\n const errorBorder = tokens.color.border.error;\n const disabledBorder = tokens.color.border.default;\n\n const animatedBorderStyle = useAnimatedStyle(() => {\n if (groupedSv.value === 1) {\n return {};\n }\n if (errorSv.value === 1) {\n return { borderColor: errorBorder };\n }\n if (disabledSv.value === 1) {\n return { borderColor: disabledBorder };\n }\n return {\n borderColor: interpolateColor(focusProgress.value, [0, 1], [defaultBorder, focusBorder]),\n };\n }, [defaultBorder, disabledBorder, errorBorder, focusBorder]);\n\n const LINE_HEIGHT = tokens.fontSize.md * tokens.lineHeight.normal;\n /** Fixed outer height from `maxLines` — no content measurement (avoids layout loops). */\n const maxHeight = maxLines * LINE_HEIGHT + tokens.spacing[3] * 2;\n\n /** Vertical padding inside bordered container (must match `textArea.container`). */\n const containerPadV = tokens.spacing[2];\n\n const showCounterAbove = Boolean(maxLength && showCounter && counterPosition === \"above\");\n const showCounterInside = Boolean(maxLength && showCounter && counterPosition === \"inside\");\n const showCounterBelow = Boolean(maxLength && showCounter && counterPosition === \"below\");\n const counterPaddingBottom = showCounterInside ? tokens.spacing[5] : 0;\n\n const innerMaxH = Math.max(1, maxHeight - 2 * containerPadV);\n\n const groupedChrome = isGrouped\n ? {\n borderWidth: 0,\n borderRadius: 0,\n backgroundColor: \"transparent\" as const,\n }\n : {};\n\n const containerStyle = [\n textArea.container,\n { height: maxHeight },\n !isGrouped && error && textArea.state.error,\n !isGrouped && disabled && textArea.state.disabled,\n groupedChrome,\n ];\n\n const charCount = value.length;\n const nearLimit = maxLength && charCount >= maxLength * 0.9;\n const atLimit = maxLength && charCount >= maxLength;\n\n const counterColor = atLimit\n ? tokens.color.error.text\n : nearLimit\n ? tokens.color.warning.text\n : tokens.color.text.tertiary;\n\n const counterWeight = atLimit ? tokens.fontWeight.semibold : tokens.fontWeight.regular;\n\n const counterEl = maxLength && showCounter ? (\n \n {charCount}/{maxLength}\n \n ) : null;\n\n return (\n \n {/* Label row — counter when `above` */}\n {(label || showCounterAbove) && (\n \n {label ? {label} : null}\n {showCounterAbove ? counterEl : null}\n \n )}\n\n {/* Text area */}\n \n {\n setIsFocused(true);\n onFocus?.();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n />\n {showCounterInside && counterEl ? (\n \n {counterEl}\n \n ) : null}\n \n\n {/* Counter between field and helper — `below` */}\n {showCounterBelow && counterEl ? (\n \n {counterEl}\n \n ) : null}\n\n {error ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Input, type InputProps } from \"../Input/Input\";\nimport { TextArea } from \"../TextArea/TextArea\";\nimport { Select, type SelectProps } from \"../Select/Select\";\nimport { Pressable } from \"react-native\";\nimport { useComponentTokens } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\n\nexport interface TextFieldProps extends Omit {\n variant?: \"outlined\" | \"filled\" | \"standard\";\n multiline?: boolean;\n rows?: number;\n maxRows?: number;\n minRows?: number;\n helperText?: string;\n error?: boolean | string;\n required?: boolean;\n select?: boolean;\n selectProps?: SelectProps;\n type?: \"text\" | \"password\" | \"email\" | \"number\";\n}\n\nexport function TextField({\n variant = \"outlined\",\n multiline = false,\n rows,\n maxRows,\n minRows,\n helperText,\n error,\n required = false,\n select = false,\n selectProps,\n type = \"text\",\n label,\n ...rest\n}: TextFieldProps) {\n const { textField } = useComponentTokens();\n const [showPassword, setShowPassword] = useState(false);\n const isPassword = type === \"password\";\n \n const labelText = required && label ? `${label} *` : label;\n const errorText = typeof error === \"string\" ? error : error ? helperText : undefined;\n\n const trailingElement = isPassword ? (\n setShowPassword(!showPassword)}\n style={{ padding: 4 }}\n hitSlop={8}\n >\n \n {showPassword ? \"eyeOff\" : \"eye\"}\n \n \n ) : rest.trailingElement;\n\n if (select) {\n return (\n \n );\n }\n\n if (multiline) {\n return (\n \n );\n }\n\n return (\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TimelinePosition = \"left\" | \"right\" | \"alternate\" | \"alternate-reverse\";\n\ninterface TimelineContextValue {\n position: TimelinePosition;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nconst TimelineContext = createContext(null);\n\nfunction useTimelineContext() {\n return useContext(TimelineContext);\n}\n\nexport interface TimelineProps {\n position?: TimelinePosition;\n children?: React.ReactNode;\n itemVariant?: \"filled\" | \"outlined\";\n}\n\nexport function Timeline({ position = \"right\", itemVariant = \"filled\", children }: TimelineProps) {\n const { timeline } = useComponentTokens();\n return (\n \n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<{ position?: TimelinePosition | \"left\" | \"right\"; variant?: \"filled\" | \"outlined\" }>(child)) return child;\n if (position === \"alternate\" || position === \"alternate-reverse\") {\n const isEven = index % 2 === 0;\n const derived = position === \"alternate\" ? (isEven ? \"right\" : \"left\") : (isEven ? \"left\" : \"right\");\n return React.cloneElement(child, { position: child.props.position ?? derived, variant: itemVariant });\n }\n return React.cloneElement(child, { variant: itemVariant });\n })}\n \n );\n}\n\nexport interface TimelineItemProps {\n position?: \"left\" | \"right\";\n variant?: \"filled\" | \"outlined\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n children?: React.ReactNode;\n}\n\nexport function TimelineItem({ position, variant = \"filled\", status = \"pending\", children }: TimelineItemProps) {\n const ctx = useTimelineContext();\n const resolved = position ?? (ctx?.position === \"left\" || ctx?.position === \"right\" ? ctx.position : \"right\");\n\n return (\n \n \n {resolved === \"right\" ? extractOpposite(children) : extractContent(children)}\n \n \n \n {resolved === \"right\" ? extractContent(children) : extractOpposite(children)}\n \n \n );\n}\n\nfunction extractChildrenByType(children: React.ReactNode, type: any) {\n const items: React.ReactNode[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === type) {\n const element = child as React.ReactElement;\n items.push(element.props.children);\n }\n });\n return items.length > 0 ? items : null;\n}\n\nfunction extractSeparator(children: React.ReactNode) {\n return extractChildrenByType(children, TimelineSeparator);\n}\n\nfunction extractContent(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nfunction extractOpposite(children: React.ReactNode) {\n const result = extractChildrenByType(children, TimelineOppositeContent);\n // Wrap string content in Text\n if (result && result.length === 1 && typeof result[0] === \"string\") {\n return {result[0]};\n }\n return result;\n}\n\nexport interface TimelineSeparatorProps {\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n variant?: \"filled\" | \"outlined\";\n children?: React.ReactNode;\n}\n\nexport function TimelineSeparator({ status = \"pending\", variant = \"filled\", children }: TimelineSeparatorProps) {\n const { timeline } = useComponentTokens();\n \n const connectorColor = status === \"completed\" ? timeline.dot.completed.borderColor : timeline.connector.color;\n\n return (\n \n {children || (\n <>\n \n \n \n )}\n \n );\n}\n\nexport interface TimelineDotProps {\n variant?: \"filled\" | \"outlined\";\n color?: \"primary\" | \"secondary\" | \"success\" | \"error\" | \"info\" | \"warning\" | \"inherit\";\n status?: \"pending\" | \"active\" | \"completed\" | \"error\";\n size?: number;\n}\n\nexport function TimelineDot({ variant = \"filled\", color = \"primary\", status, size }: TimelineDotProps) {\n const { timeline } = useComponentTokens();\n const tokens = useTokens();\n \n const resolvedStatus = status || (color === \"success\" ? \"completed\" : color === \"error\" ? \"error\" : color === \"primary\" ? \"active\" : \"pending\");\n const statusTokens = (timeline.dot as any)[resolvedStatus] || timeline.dot.pending;\n \n const dotSize = size || timeline.dot.size || 16;\n\n return (\n \n );\n}\n\nexport interface TimelineConnectorProps {\n color?: string;\n width?: number;\n}\n\nexport function TimelineConnector({ color, width }: TimelineConnectorProps) {\n const { timeline } = useComponentTokens();\n const resolvedWidth = width || timeline.connector.width;\n return ;\n}\n\nexport interface TimelineContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineContent({ children, align = \"left\" }: TimelineContentProps) {\n return (\n \n {children}\n \n );\n}\n\nexport interface TimelineOppositeContentProps {\n children?: React.ReactNode;\n align?: \"left\" | \"right\";\n}\n\nexport function TimelineOppositeContent({ children, align = \"right\" }: TimelineOppositeContentProps) {\n return (\n \n {typeof children === \"string\" ? {children} : children}\n \n );\n}\n","import React from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, { LinearTransition as RawLinearTransition } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useToast, dismissToast } from \"@truongdq01/headless\";\nimport type { ToastPosition } from \"@truongdq01/headless\";\nimport { ToastItem } from \"./ToastItem\";\n\n// ─── Props ────────────────────────────────────────────────────────\n\nexport interface ToastContainerProps {\n position?: ToastPosition;\n /** Horizontal offset from screen edges */\n horizontalPadding?: number;\n}\n\nconst layoutTransition =\n typeof RawLinearTransition?.duration === \"function\"\n ? RawLinearTransition.duration(280)\n : undefined;\n\n// ─── Component ────────────────────────────────────────────────────\n\n/**\n * Container component for displaying toast notifications.\n * Manages positioning and animations for multiple toasts.\n *\n * @param props - Toast container configuration\n * @returns Animated toast container component\n *\n * @example\n * ```tsx\n * \n * ```\n */\nexport function ToastContainer({\n position = \"bottom\",\n horizontalPadding = 16,\n}: ToastContainerProps) {\n const { toasts } = useToast();\n const insets = useSafeAreaInsets();\n\n const positionStyle =\n position === \"top\"\n ? { top: insets.top + 8, left: horizontalPadding, right: horizontalPadding }\n : { bottom: insets.bottom + 8, left: horizontalPadding, right: horizontalPadding };\n\n if (toasts.length === 0) return null;\n\n return (\n \n {toasts.map((item) => (\n \n ))}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: \"absolute\",\n zIndex: 9999,\n gap: 8,\n },\n});","import React, { useEffect } from \"react\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n FadeOutUp,\n FadeInDown,\n FadeOutDown,\n SlideInUp,\n SlideInDown,\n Easing,\n} from \"react-native-reanimated\";\nimport { View, Text, Pressable } from \"react-native\";\nimport { useComponentTokens, useTokens, useReduceMotionEnabled } from \"@truongdq01/headless\";\nimport { Icon } from \"../Icon\";\nimport type { ToastItem as ToastItemType, ToastPosition } from \"@truongdq01/headless\";\n\nconst VARIANT_ICONS: Record = {\n success: \"checkCircle\",\n error: \"error\",\n warning: \"warning\",\n info: \"info\",\n};\n\nexport interface ToastItemProps {\n item: ToastItemType;\n position: ToastPosition;\n onDismiss: (id: string) => void;\n}\n\nexport function ToastItem({ item, position, onDismiss }: ToastItemProps) {\n const { toast } = useComponentTokens();\n const tokens = useTokens();\n const reduceMotion = useReduceMotionEnabled();\n\n // Progress bar for auto-dismiss\n const progress = useSharedValue(1);\n\n useEffect(() => {\n if (item.persistent) return;\n progress.value = withTiming(0, { duration: item.duration }, (finished) => {\n if (finished) runOnJS(onDismiss)(item.id);\n });\n return () => {\n progress.value = 1;\n };\n }, [item.id, item.duration, item.persistent]);\n\n const progressStyle = useAnimatedStyle(() => ({\n width: `${progress.value * 100}%`,\n }));\n\n // Pick variant colors\n const variantMap = {\n default: { iconColor: tokens.color.text.tertiary, progressColor: tokens.color.border.strong },\n success: { iconColor: tokens.color.success.icon, progressColor: tokens.color.success.icon },\n warning: { iconColor: tokens.color.warning.icon, progressColor: tokens.color.warning.icon },\n error: { iconColor: tokens.color.error.icon, progressColor: tokens.color.error.icon },\n info: { iconColor: tokens.color.info.icon, progressColor: tokens.color.info.icon },\n } as const;\n\n const v = variantMap[item.variant] || variantMap.default;\n\n const entering = reduceMotion\n ? undefined\n : position === \"top\" ? SlideInDown.duration(280).easing(Easing.out(Easing.cubic)) : SlideInUp.duration(280).easing(Easing.out(Easing.cubic));\n const exiting = reduceMotion\n ? undefined\n : position === \"top\" ? FadeOutUp.duration(200) : FadeOutDown.duration(200);\n\n return (\n \n {/* Icon */}\n {item.icon ? (\n \n {React.isValidElement<{ size?: number | string; color?: string }>(item.icon)\n ? React.cloneElement(item.icon, {\n size: item.icon.props.size ?? 20,\n color: item.icon.props.color ?? \"#FFFFFF\",\n })\n : item.icon}\n \n ) : item.variant !== \"default\" && (\n \n )}\n\n {/* Message */}\n \n {item.message}\n \n\n {/* Action button */}\n {item.action && (\n {\n item.action!.onPress();\n onDismiss(item.id);\n }}\n style={{ paddingLeft: 4 }}\n >\n \n {item.action.label}\n \n \n )}\n\n {/* Dismiss button */}\n onDismiss(item.id)}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n >\n \n \n\n {/* Progress bar */}\n {!item.persistent && (\n \n \n \n )}\n \n );\n}\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text } from \"react-native\";\nimport Animated from \"react-native-reanimated\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useComponentTokens, usePressable, useTokens, useToggleGroup } from \"@truongdq01/headless\";\n\nexport interface ToggleButtonGroupProps {\n value?: T | T[];\n defaultValue?: T | T[];\n exclusive?: boolean;\n onChange?: (value: T | T[] | undefined) => void;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport interface ToggleButtonProps {\n value: T;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\ninterface ToggleContextValue {\n isSelected: (value: T) => boolean;\n toggle: (value: T) => void;\n size: \"sm\" | \"md\" | \"lg\";\n disabled: boolean;\n}\n\nconst ToggleContext = createContext | null>(null);\n\nexport function ToggleButtonGroup({\n value,\n defaultValue,\n exclusive = false,\n onChange,\n orientation = \"horizontal\",\n size = \"md\",\n disabled = false,\n children,\n}: ToggleButtonGroupProps) {\n const { isSelected, toggle } = useToggleGroup({\n value,\n defaultValue,\n exclusive,\n disabled,\n onChange,\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport function ToggleButton({ value, disabled = false, children }: ToggleButtonProps) {\n const { toggleButton } = useComponentTokens();\n const tokens = useTokens();\n const ctx = useContext(ToggleContext as React.Context | null>);\n\n const selected = ctx?.isSelected(value) ?? false;\n const isDisabled = disabled || ctx?.disabled;\n\n const { animatedStyle, gesture, accessibilityProps } = usePressable({\n onPress: () => ctx?.toggle(value),\n disabled: isDisabled,\n feedbackMode: \"scaleSubtle\",\n accessibilityRole: \"button\",\n });\n\n const size = ctx?.size ?? \"md\";\n const sizeMap = {\n sm: { height: 32, paddingHorizontal: 12, fontSize: tokens.fontSize.sm },\n md: { height: 40, paddingHorizontal: 16, fontSize: tokens.fontSize.md },\n lg: { height: 48, paddingHorizontal: 20, fontSize: tokens.fontSize.lg },\n };\n\n const s = sizeMap[size];\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { View, Text, Pressable, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\n\nexport type TooltipPlacement =\n | \"top\" | \"top-start\" | \"top-end\"\n | \"bottom\" | \"bottom-start\" | \"bottom-end\"\n | \"left\" | \"left-start\" | \"left-end\"\n | \"right\" | \"right-start\" | \"right-end\";\n\nexport interface TooltipProps {\n title: React.ReactNode;\n children: React.ReactElement;\n open?: boolean;\n onOpen?: () => void;\n onClose?: () => void;\n placement?: TooltipPlacement;\n}\n\ninterface TriggerRect {\n pageX: number;\n pageY: number;\n width: number;\n height: number;\n}\n\nexport function Tooltip({\n title,\n children,\n open: controlledOpen,\n onOpen,\n onClose,\n placement = \"top\",\n}: TooltipProps) {\n const { tooltip } = useComponentTokens();\n const tokens = useTokens();\n const [internalOpen, setInternalOpen] = useState(false);\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [triggerRect, setTriggerRect] = useState(null);\n const [tooltipSize, setTooltipSize] = useState({ width: 0, height: 0 });\n const triggerRef = React.useRef(null);\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;\n\n // Simple fade animation\n const opacity = useSharedValue(0);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 150 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 100 }, () => {\n runOnJS(onDone)();\n });\n }, []);\n\n const handleOpen = () => {\n triggerRef.current?.measure((_x, _y, w, h, pageX, pageY) => {\n setTriggerRect({ pageX, pageY, width: w, height: h });\n setInternalOpen(true);\n onOpen?.();\n requestAnimationFrame(() => animateIn());\n });\n };\n\n const handleClose = () => {\n animateOut(() => {\n setInternalOpen(false);\n setTriggerRect(null);\n onClose?.();\n });\n };\n\n // Compute position\n const GAP = 8;\n const PADDING = 12;\n const tx = triggerRect?.pageX ?? 0;\n const ty = triggerRect?.pageY ?? 0;\n const tw = triggerRect?.width ?? 0;\n const th = triggerRect?.height ?? 0;\n const tlw = tooltipSize.width || 200;\n const tlh = tooltipSize.height || 40;\n \n let top = ty - tlh - GAP;\n let left = tx + tw / 2 - tlw / 2;\n\n // Simple placement logic\n if (placement.includes(\"bottom\")) {\n top = ty + th + GAP;\n }\n if (placement.includes(\"left\")) {\n left = tx - tlw - GAP;\n }\n if (placement.includes(\"right\")) {\n left = tx + tw + GAP;\n }\n if (placement.includes(\"top-left\") || placement.includes(\"bottom-left\")) {\n left = tx;\n }\n if (placement.includes(\"top-right\") || placement.includes(\"bottom-right\")) {\n left = tx + tw - tlw;\n }\n\n // Clamp to screen bounds\n const safeTop = Math.max(PADDING, Math.min(top, windowHeight - tlh - PADDING));\n const safeLeft = Math.max(PADDING, Math.min(left, windowWidth - tlw - PADDING));\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n }));\n\n return (\n <>\n \n {children}\n \n\n \n \n {\n const { width, height } = e.nativeEvent.layout;\n setTooltipSize({ width, height });\n }}\n onStartShouldSetResponder={() => true}\n style={[\n tooltip.container,\n {\n position: \"absolute\",\n top: safeTop,\n left: safeLeft,\n },\n animStyle,\n ] as any}\n >\n {typeof title === \"string\" ? (\n \n {title}\n \n ) : title}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Text, type TextStyle, type AccessibilityRole } from \"react-native\";\nimport { useComponentTokens, useTokens } from \"@truongdq01/headless\";\n\nexport type TypographyVariant =\n | \"display\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"button\"\n | \"overline\"\n | \"label\"\n | \"code\"\n | \"inherit\";\n\n/** Semantic role hint — RN maps to `accessibilityRole` / `accessibilityLevel` (IMPROVEMENT_PLAN Issue #2) */\nexport type TypographyAs = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"label\";\n\nexport interface TypographyProps {\n children?: React.ReactNode;\n variant?: TypographyVariant;\n /** Maps to accessibility props (RN has no DOM elements) */\n as?: TypographyAs;\n align?: \"left\" | \"right\" | \"center\" | \"justify\" | \"inherit\";\n color?: \"primary\" | \"secondary\" | \"tertiary\" | \"disabled\" | \"brand\" | \"error\" | string;\n gutterBottom?: boolean;\n noWrap?: boolean;\n paragraph?: boolean;\n display?: \"none\" | \"flex\" | \"contents\" | \"block\" | \"inline\" | \"inline-flex\";\n style?: TextStyle | TextStyle[];\n}\n\nfunction accessibilityForAs(as: TypographyAs | undefined): { accessibilityRole?: AccessibilityRole } {\n if (!as || as === \"span\") return {};\n if (as === \"p\" || as === \"label\") {\n return { accessibilityRole: \"text\" };\n }\n if (as === \"h1\" || as === \"h2\" || as === \"h3\" || as === \"h4\" || as === \"h5\" || as === \"h6\") {\n return { accessibilityRole: \"header\" };\n }\n return {};\n}\n\nfunction TypographyInner({\n children,\n variant = \"body1\",\n as,\n align = \"left\",\n color,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n display,\n style,\n}: TypographyProps) {\n const { typography } = useComponentTokens();\n const tokens = useTokens();\n\n const variantStyle =\n variant === \"inherit\" ? {} : typography.variants[variant as keyof typeof typography.variants] || {};\n\n const presetColors = typography.colors;\n const resolvedColor =\n color != null &&\n color !== \"\" &&\n typeof color === \"string\" &&\n Object.prototype.hasOwnProperty.call(presetColors, color)\n ? presetColors[color as keyof typeof presetColors]\n : color || presetColors.primary;\n\n const resolvedDisplay =\n display === \"block\" || display === \"inline\" || display === \"inline-flex\"\n ? \"flex\"\n : display;\n\n const sans = tokens.fontFamily?.sans;\n const sansFont =\n sans != null && sans !== \"\" ? { fontFamily: sans } : null;\n\n const skipSans = variant === \"code\";\n\n const a11y = accessibilityForAs(as);\n\n return (\n \n {children}\n \n );\n}\n\nexport const Typography = React.memo(TypographyInner);\n","import React, { createContext, useContext } from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withSpring,\n withTiming,\n interpolateColor,\n interpolate,\n} from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramTabBarProps {\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n children?: React.ReactNode;\n glassEffect?: boolean;\n}\n\nexport interface TelegramTabProps {\n value: T;\n label: string;\n icon: React.ReactNode;\n activeIcon?: React.ReactNode;\n badge?: number | string | boolean;\n disabled?: boolean;\n}\n\ninterface TabBarContextValue {\n value?: T;\n isSelected: (value: T) => boolean;\n getItemProps: (value: T, disabled?: boolean) => { onPress?: () => void };\n}\n\nconst TabBarContext = createContext | null>(null);\n\n// ─── Telegram Tab Bar ─────────────────────────────────────────────\n\nexport function TelegramTabBar({\n value: controlledValue,\n defaultValue,\n onChange,\n children,\n glassEffect = true,\n}: TelegramTabBarProps) {\n const tokens = useTokens();\n const { bottomNavigation } = useComponentTokens();\n\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const value = controlledValue !== undefined ? controlledValue : internalValue;\n\n const isSelected = (itemValue: T) => value === itemValue;\n\n const getItemProps = (itemValue: T, disabled?: boolean) => ({\n onPress: disabled\n ? undefined\n : () => {\n if (controlledValue === undefined) setInternalValue(itemValue);\n onChange?.(itemValue);\n },\n });\n\n return (\n \n \n {children}\n \n \n );\n}\n\n// ─── Telegram Tab Item ────────────────────────────────────────────\n\nexport function TelegramTab({\n value,\n label,\n icon,\n activeIcon,\n badge,\n disabled = false,\n}: TelegramTabProps) {\n const tokens = useTokens();\n const ctx = useContext(TabBarContext as React.Context | null>);\n if (!ctx) return null;\n\n const selected = ctx.isSelected(value);\n const progress = useSharedValue(selected ? 1 : 0);\n\n React.useEffect(() => {\n progress.value = withSpring(selected ? 1 : 0, {\n damping: 22,\n stiffness: 300,\n });\n }, [selected]);\n\n const iconStyle = useAnimatedStyle(() => ({\n transform: [{ scale: interpolate(progress.value, [0, 1], [1, 1.15]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const labelStyle = useAnimatedStyle(() => ({\n color: interpolateColor(\n progress.value,\n [0, 1],\n [tokens.color.text.secondary, tokens.color.brand.default]\n ),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0.95, 1]) }],\n opacity: interpolate(progress.value, [0, 1], [0.7, 1]),\n }));\n\n const dotStyle = useAnimatedStyle(() => ({\n opacity: interpolate(progress.value, [0, 1], [0, 1]),\n transform: [{ scale: interpolate(progress.value, [0, 1], [0, 1]) }],\n }));\n\n const itemProps = ctx.getItemProps(value, disabled);\n\n return (\n [\n styles.tabItem,\n pressed && { opacity: 0.85 },\n disabled && { opacity: 0.3 },\n ]}\n >\n \n \n {selected && activeIcon ? activeIcon : icon}\n \n\n {badge !== undefined && badge !== false && (\n \n )}\n \n\n \n {label}\n \n\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n paddingHorizontal: 8,\n paddingVertical: 6,\n paddingBottom: 6,\n minHeight: 56,\n },\n tabItem: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 4,\n paddingHorizontal: 8,\n minHeight: 48,\n },\n iconContainer: {\n position: \"relative\",\n marginBottom: 2,\n },\n badge: {\n position: \"absolute\",\n top: -4,\n right: -12,\n },\n tabLabel: {\n fontSize: 11,\n fontWeight: \"500\",\n lineHeight: 14,\n marginTop: 2,\n },\n activeDot: {\n width: 4,\n height: 4,\n borderRadius: 2,\n marginTop: 4,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens } from \"@truongdq01/headless\";\nimport { Avatar } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface ChatListItemProps {\n /** Optional unique id */\n id?: string;\n /** Avatar source or initials */\n avatar?: {\n src?: string;\n initials?: string;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n };\n /** Chat name / contact name */\n name: string;\n /** Message preview text */\n preview?: string;\n /** Message timestamp */\n time?: string;\n /** Unread count */\n unread?: number;\n /** Is message read */\n read?: boolean;\n /** Is message sent by current user */\n outgoing?: boolean;\n /** Is chat muted */\n muted?: boolean;\n /** Is chat pinned */\n pinned?: boolean;\n /** Selected state */\n selected?: boolean;\n /** Disable interaction */\n disabled?: boolean;\n /** Press callback */\n onPress?: () => void;\n /** Long press callback */\n onLongPress?: () => void;\n /** Trailing custom element */\n trailingElement?: React.ReactNode;\n}\n\n// ─── Chat List Item ───────────────────────────────────────────────\n\nexport function ChatListItem({\n avatar,\n name,\n preview,\n time,\n unread,\n read = true,\n outgoing = true,\n muted = false,\n pinned = false,\n selected = false,\n disabled = false,\n onPress,\n onLongPress,\n trailingElement,\n}: ChatListItemProps) {\n const tokens = useTokens();\n const { list } = useComponentTokens();\n\n const pressed = useSharedValue(0);\n\n const containerStyle = useAnimatedStyle(() => ({\n backgroundColor: pressed.value === 1\n ? tokens.color.surface.hover\n : selected\n ? tokens.color.brand.subtle\n : \"transparent\",\n }));\n\n return (\n { pressed.value = withSpring(1, { damping: 20 }); }}\n onPressOut={() => { pressed.value = withSpring(0, { damping: 20 }); }}\n >\n \n {/* Avatar */}\n {avatar && (\n \n )}\n\n {/* Content */}\n \n \n \n {pinned && (\n 📌\n )}\n \n {name}\n \n {muted && (\n 🔕\n )}\n \n\n {time && (\n 0 ? { color: tokens.color.brand.default, fontWeight: \"600\" as const } : undefined,\n ]}\n >\n {time}\n \n )}\n \n\n \n \n {outgoing && (\n \n {read ? \"✓✓\" : \"✓\"}\n \n )}\n {preview && (\n \n {preview}\n \n )}\n \n\n \n {unread && unread > 0 && (\n \n )}\n {trailingElement}\n \n \n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 10,\n minHeight: 72,\n },\n avatar: {\n marginRight: 12,\n },\n content: {\n flex: 1,\n justifyContent: \"center\",\n },\n headerRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 4,\n },\n nameContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n name: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 20,\n flex: 1,\n },\n iconPin: {\n marginRight: 4,\n fontSize: 14,\n },\n iconMute: {\n marginLeft: 4,\n fontSize: 14,\n },\n time: {\n fontSize: 13,\n lineHeight: 16,\n textAlign: \"right\",\n },\n previewRow: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n previewContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flex: 1,\n marginRight: 8,\n },\n checkmark: {\n fontSize: 12,\n marginRight: 4,\n },\n preview: {\n fontSize: 14,\n lineHeight: 18,\n flex: 1,\n },\n rightContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n});\n\n\n","import React, { useRef, useState } from \"react\";\nimport { View, TextInput as RNTextInput, Pressable, StyleSheet, type TextInputProps, Text } from \"react-native\";\nimport Animated, { useSharedValue, useAnimatedStyle, withTiming, withSpring } from \"react-native-reanimated\";\nimport { useTokens, useComponentTokens, useIconStyle } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface MessageInputProps extends Omit {\n /** Left action buttons (attach, sticker, etc.) */\n leftActions?: React.ReactNode;\n /** Right action buttons (send, voice, etc.) */\n rightActions?: React.ReactNode;\n /** Show attachment button */\n showAttach?: boolean;\n /** Show sticker button */\n showSticker?: boolean;\n /** Show send button */\n showSend?: boolean;\n /** Callback when send button pressed */\n onSend?: (text: string) => void;\n /** Callback when attachment button pressed */\n onAttach?: () => void;\n /** Callback when sticker button pressed */\n onSticker?: () => void;\n /** Custom send button */\n sendButton?: React.ReactNode;\n /** Glass effect background */\n glassEffect?: boolean;\n /** Disable input */\n disabled?: boolean;\n}\n\n// ─── Message Input ────────────────────────────────────────────────\n\nexport function MessageInput({\n leftActions,\n rightActions,\n showAttach = true,\n showSticker = true,\n showSend = true,\n onSend,\n onAttach,\n onSticker,\n sendButton,\n glassEffect = true,\n disabled = false,\n value,\n onChangeText,\n placeholder = \"Type a message...\",\n ...rest\n}: MessageInputProps) {\n const tokens = useTokens();\n const { input } = useComponentTokens();\n const { size: iconSize } = useIconStyle(\"input\");\n const inputRef = useRef(null);\n const [focused, setFocused] = useState(false);\n const [text, setText] = useState(value ?? \"\");\n\n const height = useSharedValue(48);\n const attachVisible = useSharedValue(1);\n\n const hasText = text.length > 0;\n\n React.useEffect(() => {\n attachVisible.value = withTiming(hasText ? 0 : 1, { duration: 180 });\n }, [hasText]);\n\n const inputStyle = useAnimatedStyle(() => ({\n minHeight: height.value,\n }));\n\n const attachStyle = useAnimatedStyle(() => ({\n opacity: attachVisible.value,\n transform: [{ scale: attachVisible.value }],\n width: attachVisible.value > 0.5 ? 40 : 0,\n }));\n\n const handleSend = () => {\n if (text.trim() && onSend) {\n onSend(text.trim());\n setText(\"\");\n }\n };\n\n const handleChangeText = (newText: string) => {\n setText(newText);\n onChangeText?.(newText);\n };\n\n return (\n \n {showAttach && (\n \n \n \n 📎\n \n \n \n )}\n\n {leftActions}\n\n \n setFocused(true)}\n onBlur={() => setFocused(false)}\n multiline\n textAlignVertical=\"center\"\n {...rest}\n />\n\n {showSticker && (\n \n 😊\n \n )}\n \n\n {rightActions}\n\n {showSend && (\n sendButton ?? (\n \n \n {hasText ? \"➤\" : \"🎤\"}\n \n \n )\n )}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n paddingHorizontal: 8,\n paddingVertical: 8,\n minHeight: 56,\n },\n actionButton: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n iconButton: {\n width: 40,\n height: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputWrapper: {\n flex: 1,\n flexDirection: \"row\",\n alignItems: \"flex-end\",\n marginHorizontal: 4,\n borderRadius: 20,\n borderWidth: 1,\n borderColor: \"rgba(0,0,0,0.1)\",\n backgroundColor: \"rgba(0,0,0,0.03)\",\n overflow: \"hidden\",\n minHeight: 40,\n },\n input: {\n flex: 1,\n fontSize: 16,\n paddingHorizontal: 12,\n paddingVertical: 10,\n paddingRight: 40,\n maxHeight: 120,\n },\n stickerButton: {\n position: \"absolute\",\n right: 4,\n bottom: 4,\n width: 32,\n height: 32,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n sendButton: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: \"center\",\n justifyContent: \"center\",\n marginLeft: 4,\n },\n icon: {\n fontSize: 20,\n },\n sendIcon: {\n fontSize: 18,\n fontWeight: \"600\",\n color: \"rgba(0,0,0,0.3)\",\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n// @ts-ignore expo-blur is optional peer dependency\nimport { BlurView } from \"expo-blur\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramPopupProps {\n /** If true, the popup is shown */\n open: boolean;\n /** The message to display */\n message: React.ReactNode;\n /** Title for popup */\n title?: string;\n /** Action buttons */\n actions?: React.ReactNode;\n /** Callback on close */\n onClose?: () => void;\n /** Duration in ms before auto-hiding */\n autoHideDuration?: number | null;\n /** Position on screen */\n position?: \"top\" | \"bottom\" | \"center\";\n /** Blur background */\n blur?: boolean;\n /** Icon */\n icon?: React.ReactNode;\n /** Variant for different types */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n}\n\n// ─── Telegram Popup ───────────────────────────────────────────────\n\nexport function TelegramPopup({\n open,\n message,\n title,\n actions,\n onClose,\n autoHideDuration = 3000,\n position = \"top\",\n blur = true,\n icon,\n variant = \"default\",\n}: TelegramPopupProps) {\n const tokens = useTokens();\n const { height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n\n const translateY = useSharedValue(position === \"bottom\" ? 100 : -100);\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.95);\n\n const animateIn = useCallback(() => {\n translateY.value = withSpring(0, { damping: 25, stiffness: 300 });\n opacity.value = withTiming(1, { duration: 200 });\n scale.value = withSpring(1, { damping: 25, stiffness: 300 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n translateY.value = withTiming(position === \"bottom\" ? 100 : -100, { duration: 200 });\n opacity.value = withTiming(0, { duration: 150 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, [position]);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n translateY.value = position === \"bottom\" ? 80 : -80;\n opacity.value = 0;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n React.useEffect(() => {\n if (!open || autoHideDuration === null) return;\n const t = setTimeout(() => onClose?.(), autoHideDuration);\n return () => clearTimeout(t);\n }, [open, autoHideDuration, onClose]);\n\n const positionStyle =\n position === \"top\"\n ? { top: 48, alignSelf: \"center\" as const }\n : position === \"bottom\"\n ? { bottom: 96, alignSelf: \"center\" as const }\n : { alignSelf: \"center\" as const, top: windowHeight / 2 - 50 };\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ translateY: translateY.value }, { scale: scale.value }] as const,\n }));\n\n const variantColors = {\n default: tokens.color.bg.default,\n success: tokens.color.success.bg,\n error: tokens.color.error.bg,\n warning: tokens.color.warning.bg,\n info: tokens.color.info.bg,\n };\n\n if (!mounted && !open) return null;\n\n return (\n \n \n {blur && (\n \n )}\n \n \n {icon && {icon}}\n \n {title && (\n {title}\n )}\n {typeof message === \"string\" ? (\n \n {message}\n \n ) : (\n message\n )}\n \n \n {actions && {actions}}\n \n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.05)\",\n },\n popup: {\n position: \"absolute\",\n marginHorizontal: 16,\n minWidth: 280,\n maxWidth: 340,\n padding: 16,\n elevation: 6,\n },\n content: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n iconContainer: {\n marginRight: 12,\n },\n textContent: {\n flex: 1,\n },\n title: {\n fontSize: 15,\n fontWeight: \"600\",\n lineHeight: 20,\n marginBottom: 2,\n },\n message: {\n fontSize: 14,\n lineHeight: 18,\n },\n actions: {\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n marginTop: 12,\n gap: 8,\n },\n});\n\n\n","import React, { useCallback } from \"react\";\nimport { View, Text, Pressable, StyleSheet, Modal, useWindowDimensions } from \"react-native\";\nimport Animated, {\n useSharedValue,\n useAnimatedStyle,\n withTiming,\n withSpring,\n runOnJS,\n} from \"react-native-reanimated\";\nimport { useTokens } from \"@truongdq01/headless\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramContextMenuItem {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramContextMenuProps {\n open: boolean;\n onClose: () => void;\n items: TelegramContextMenuItem[];\n anchor?: { x: number; y: number; width: number; height: number } | null;\n}\n\n// ─── Telegram Context Menu ────────────────────────────────────────\n\nexport function TelegramContextMenu({\n open,\n onClose,\n items,\n anchor,\n}: TelegramContextMenuProps) {\n const tokens = useTokens();\n const { width: windowWidth, height: windowHeight } = useWindowDimensions();\n const [mounted, setMounted] = React.useState(open);\n const [menuSize, setMenuSize] = React.useState({ width: 200, height: 0 });\n\n const opacity = useSharedValue(0);\n const scale = useSharedValue(0.9);\n\n const animateIn = useCallback(() => {\n opacity.value = withTiming(1, { duration: 180 });\n scale.value = withSpring(1, { damping: 18, stiffness: 320 });\n }, []);\n\n const animateOut = useCallback((onDone: () => void) => {\n opacity.value = withTiming(0, { duration: 130 });\n scale.value = withTiming(0.92, { duration: 130 }, (done) => {\n if (done) runOnJS(onDone)();\n });\n }, []);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n opacity.value = 0;\n scale.value = 0.9;\n requestAnimationFrame(animateIn);\n } else if (mounted) {\n animateOut(() => setMounted(false));\n }\n }, [open]);\n\n // Position calculation\n const GAP = 8;\n let top = 100;\n let left = windowWidth - 220;\n\n if (anchor) {\n top = anchor.y + anchor.height + GAP;\n left = anchor.x;\n\n if (left + menuSize.width > windowWidth - 16) {\n left = windowWidth - menuSize.width - 16;\n }\n if (top + menuSize.height > windowHeight - 16) {\n top = anchor.y - menuSize.height - GAP;\n }\n top = Math.max(16, top);\n left = Math.max(16, left);\n }\n\n const animStyle = useAnimatedStyle(() => ({\n opacity: opacity.value,\n transform: [{ scale: scale.value }],\n }));\n\n if (!mounted) return null;\n\n return (\n \n \n {\n setMenuSize({\n width: e.nativeEvent.layout.width,\n height: e.nativeEvent.layout.height,\n });\n }}\n style={[\n styles.menu,\n animStyle,\n {\n position: \"absolute\",\n top,\n left,\n backgroundColor: tokens.color.surface.default,\n borderRadius: 14,\n shadowColor: tokens.color.bg.inverse,\n shadowOffset: { width: 0, height: 6 },\n shadowOpacity: 0.2,\n shadowRadius: 18,\n elevation: 8,\n },\n ]}\n >\n {items.map((item, index) => (\n {\n item.onPress?.();\n onClose();\n }}\n disabled={item.disabled}\n style={({ pressed }) => [\n styles.item,\n index === 0 && { borderTopLeftRadius: 14, borderTopRightRadius: 14 },\n index === items.length - 1 && { borderBottomLeftRadius: 14, borderBottomRightRadius: 14 },\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n ]}\n >\n {item.icon && {item.icon}}\n \n {item.label}\n \n \n ))}\n \n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n overlay: {\n flex: 1,\n backgroundColor: \"rgba(0,0,0,0.1)\",\n },\n menu: {\n minWidth: 180,\n overflow: \"hidden\",\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 48,\n },\n itemIcon: {\n marginRight: 12,\n width: 20,\n alignItems: \"center\",\n },\n itemLabel: {\n fontSize: 15,\n fontWeight: \"500\",\n lineHeight: 20,\n },\n});\n\n\n","import React from \"react\";\nimport { View, Text, Pressable, StyleSheet } from \"react-native\";\nimport { useTokens } from \"@truongdq01/headless\";\nimport { List, ListItem, ListItemText, ListItemIcon } from \"../List\";\nimport { Divider } from \"../Divider\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\nexport interface TelegramSettingsItem {\n id: string;\n label: string;\n subtitle?: string;\n icon?: React.ReactNode;\n value?: React.ReactNode;\n onPress?: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nexport interface TelegramSettingsSection {\n title?: string;\n items: TelegramSettingsItem[];\n}\n\nexport interface TelegramSettingsMenuProps {\n sections: TelegramSettingsSection[];\n variant?: \"default\" | \"grouped\";\n}\n\n// ─── Telegram Settings Menu ───────────────────────────────────────\n\nexport function TelegramSettingsMenu({ sections, variant = \"grouped\" }: TelegramSettingsMenuProps) {\n const tokens = useTokens();\n\n return (\n \n {sections.map((section, sectionIndex) => (\n \n {section.title && (\n \n \n {section.title}\n \n \n )}\n \n {section.items.map((item, itemIndex) => (\n [\n styles.item,\n pressed && { backgroundColor: tokens.color.surface.hover },\n item.disabled && { opacity: 0.3 },\n itemIndex !== section.items.length - 1 && {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: tokens.color.border.subtle,\n marginLeft: 56,\n },\n ]}\n >\n {item.icon && (\n \n {item.icon}\n \n )}\n \n \n {item.label}\n \n {item.subtitle && (\n \n {item.subtitle}\n \n )}\n \n \n {item.value}\n \n \n \n ))}\n \n \n ))}\n \n );\n}\n\n// ─── Styles ───────────────────────────────────────────────────────\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 16,\n },\n sectionHeader: {\n paddingHorizontal: 32,\n paddingVertical: 8,\n },\n sectionTitle: {\n fontSize: 13,\n fontWeight: \"600\",\n lineHeight: 16,\n textTransform: \"uppercase\",\n letterSpacing: 0.5,\n },\n section: {\n marginBottom: 24,\n },\n item: {\n flexDirection: \"row\",\n alignItems: \"center\",\n paddingHorizontal: 16,\n paddingVertical: 12,\n minHeight: 52,\n },\n itemIcon: {\n width: 28,\n marginRight: 12,\n alignItems: \"center\",\n },\n itemContent: {\n flex: 1,\n },\n itemLabel: {\n fontSize: 16,\n fontWeight: \"500\",\n lineHeight: 22,\n },\n itemSubtitle: {\n fontSize: 13,\n lineHeight: 16,\n marginTop: 2,\n },\n itemRight: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n chevron: {\n fontSize: 20,\n fontWeight: \"400\",\n },\n});\n\n\n"],"mappings":"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","names":["useTokens","useComponentTokens","useIsDark","React","View","Text","useTokens","useComponentTokens","useComponentTokens","React","View","Text","useTokens","React","useMemo","View","Text","useComponentTokens","useTokens","useComponentTokens","useTokens","useMemo","React","View","Text","React","useMemo","Animated","Layout","useComponentTokens","useReduceMotionEnabled","React","View","useComponentTokens","useTokens","React","useState","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withTiming","useTokens","useComponentTokens","React","useMemo","View","Text","Animated","useSharedValue","useAnimatedStyle","withTiming","interpolate","useComponentTokens","useTokens","React","React","Text","Animated","Animated","useComponentTokens","useTokens","useSharedValue","withTiming","useAnimatedStyle","interpolate","useMemo","React","View","Text","useTokens","useComponentTokens","useState","useSharedValue","withTiming","useAnimatedStyle","React","View","Pressable","Animated","Text","React","View","Text","Image","useComponentTokens","useTokens","useComponentTokens","useTokens","React","View","Image","Text","React","useMemo","View","Text","useComponentTokens","React","createContext","useContext","useMemo","View","Text","Pressable","useTokens","useComponentTokens","React","forwardRef","useState","View","StyleSheet","Modal","Animated","GestureDetector","useComponentTokens","BottomSheet","styles","React","View","useComponentTokens","Box","React","View","Text","useComponentTokens","React","useMemo","Animated","GestureDetector","Text","View","StyleSheet","usePressable","useComponentTokens","useIconStyle","useTokens","styles","React","View","useTokens","useComponentTokens","React","useMemo","Animated","GestureDetector","View","usePressable","useComponentTokens","React","View","useWindowDimensions","Animated","useAnimatedStyle","interpolate","Extrapolation","useComponentTokens","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","useComponentTokens","useTokens","useReduceMotionEnabled","React","View","Text","Pressable","useTokens","useIconStyle","useComponentTokens","React","ActivityIndicator","View","Text","StyleSheet","useTokens","useComponentTokens","styles","React","useState","useMemo","View","Text","Pressable","Modal","StyleSheet","useSafeAreaInsets","useTokens","useComponentTokens","useIconStyle","React","useMemo","useCallback","View","Text","Pressable","useTokens","useTokens","useMemo","useCallback","React","View","Pressable","Text","React","useCallback","useMemo","View","Text","ScrollView","Pressable","useTokens","useComponentTokens","useTokens","useSafeAreaInsets","useIconStyle","useState","useMemo","React","View","Text","Pressable","Modal","StyleSheet","React","Modal","View","Pressable","StyleSheet","Text","useComponentTokens","useTokens","React","View","Text","useComponentTokens","useTokens","React","useEffect","Modal","View","Pressable","StyleSheet","Dimensions","Animated","useSharedValue","useAnimatedStyle","withSpring","useComponentTokens","useTokens","useReduceMotionEnabled","spring","React","View","Text","useComponentTokens","useTokens","useComponentTokens","useTokens","React","View","Text","React","View","Text","StyleSheet","Animated","GestureDetector","usePressable","useComponentTokens","useComponentTokens","usePressable","React","GestureDetector","Animated","View","styles","Text","StyleSheet","React","createContext","useContext","useCallback","View","ScrollView","StyleSheet","useTokens","styles","React","createContext","useContext","useMemo","View","Text","Pressable","useComponentTokens","useTokens","React","View","Text","StyleSheet","useComponentTokens","useTokens","React","useState","Pressable","useIconStyle","useState","useIconStyle","React","Pressable","React","useComponentTokens","useTokens","View","Text","StyleSheet","React","useMemo","View","StyleSheet","useTokens","styles","React","useMemo","View","StyleSheet","styles","React","View","useComponentTokens","Grid","React","useState","View","StyleSheet","Animated","useAnimatedStyle","withTiming","useSharedValue","useComponentTokens","styles","React","createContext","useContext","useMemo","useState","View","Text","Dimensions","useTokens","useComponentTokens","React","View","StyleSheet","Animated","useAnimatedStyle","useTokens","useComponentTokens","clamp","styles","React","Text","Linking","useComponentTokens","React","createContext","useContext","useMemo","View","Text","Pressable","FlatList","useTokens","useComponentTokens","List","React","useEffect","useRef","View","StyleSheet","Animated","useAnimatedStyle","useSharedValue","withTiming","Easing","useTokens","styles","React","Modal","Pressable","Text","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","Easing","useTokens","useComponentTokens","Menu","React","View","Pressable","StyleSheet","useComponentTokens","Modal","styles","React","useEffect","View","Pressable","Text","Animated","useAnimatedStyle","withSpring","useSharedValue","withTiming","withSequence","withRepeat","cancelAnimation","useComponentTokens","useReduceMotionEnabled","React","View","Text","Pressable","useTokens","useComponentTokens","React","View","useComponentTokens","useTokens","React","useMemo","useState","Modal","View","Pressable","StyleSheet","Dimensions","useTokens","useComponentTokens","styles","React","useMemo","useState","Modal","View","Pressable","StyleSheet","Dimensions","useTokens","useComponentTokens","styles","React","Animated","GestureDetector","usePressable","useComponentTokens","Pressable","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolate","interpolateColor","useTokens","useComponentTokens","useReduceMotionEnabled","spring","React","useCallback","View","Pressable","Text","AccessibilityInfo","Animated","useAnimatedStyle","useSharedValue","withSpring","spring","useComponentTokens","useReduceMotionEnabled","clamp","useSharedValue","useAnimatedStyle","withSpring","spring","React","Pressable","Animated","useComponentTokens","useReduceMotionEnabled","useCallback","AccessibilityInfo","Text","View","React","useState","useRef","View","Pressable","Text","Animated","useAnimatedStyle","withSpring","useSharedValue","useTokens","useComponentTokens","React","useRef","useState","useMemo","useCallback","View","Text","TextInput","Pressable","ActivityIndicator","FlatList","useTokens","useComponentTokens","React","createContext","useContext","useEffect","useState","View","Animated","useSharedValue","useAnimatedStyle","withRepeat","withTiming","interpolate","cancelAnimation","useTokens","useComponentTokens","useContext","useSharedValue","useEffect","cancelAnimation","withRepeat","withTiming","useComponentTokens","useState","useAnimatedStyle","interpolate","React","Animated","SkeletonText","useTokens","View","SkeletonCard","SkeletonListItem","SkeletonProfile","SkeletonMedia","SkeletonForm","SkeletonGrid","SkeletonTable","_","useComponentTokens","useTokens","useRef","useState","useMemo","FlatList","useCallback","React","Pressable","Text","View","TextInput","ActivityIndicator","React","useMemo","View","Text","TextInput","Animated","GestureDetector","useTokens","useComponentTokens","AnimatedTextInput","currentValue","fillAnimatedStyle","trackAnimatedStyle","onTrackLayout","React","useEffect","useMemo","View","Text","Pressable","Modal","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","useComponentTokens","useComponentTokens","useTokens","React","useSharedValue","withSpring","withTiming","runOnJS","useEffect","useMemo","useAnimatedStyle","Modal","View","styles","Animated","Text","Pressable","StyleSheet","React","createContext","useContext","useMemo","View","Text","Pressable","useDisclosure","useTokens","useComponentTokens","createContext","useComponentTokens","useDisclosure","useTokens","useMemo","React","View","useContext","Pressable","Text","React","View","useComponentTokens","React","View","Text","useComponentTokens","useComponentTokens","React","View","Text","React","View","Text","Pressable","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","useTokens","useComponentTokens","useReduceMotionEnabled","spring","React","createContext","useContext","useMemo","View","ScrollView","Text","Pressable","useComponentTokens","useTokens","createContext","useContext","useMemo","React","View","useComponentTokens","ScrollView","useTokens","Text","Pressable","React","createContext","useContext","View","Text","Pressable","useComponentTokens","useTokens","React","useState","useEffect","View","Text","TextInput","Animated","useSharedValue","useAnimatedStyle","withTiming","interpolateColor","useComponentTokens","useTokens","FOCUS_MS","useComponentTokens","useTokens","useState","useSharedValue","useEffect","withTiming","useAnimatedStyle","interpolateColor","React","Text","View","Animated","TextInput","React","useState","Pressable","useComponentTokens","useComponentTokens","useState","React","Pressable","React","createContext","useContext","View","Text","useComponentTokens","useTokens","React","Text","useComponentTokens","View","useTokens","React","StyleSheet","Animated","useSafeAreaInsets","React","useEffect","Animated","useSharedValue","useAnimatedStyle","withTiming","runOnJS","Easing","View","Text","Pressable","useComponentTokens","useTokens","useReduceMotionEnabled","useComponentTokens","useTokens","useReduceMotionEnabled","useSharedValue","useEffect","withTiming","runOnJS","useAnimatedStyle","Easing","React","Animated","View","Text","Pressable","useSafeAreaInsets","React","Animated","styles","StyleSheet","React","createContext","useContext","View","Text","Animated","GestureDetector","useComponentTokens","usePressable","useTokens","React","useState","useCallback","Text","Pressable","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","runOnJS","useTokens","useComponentTokens","React","Text","useComponentTokens","useTokens","React","createContext","useContext","View","Pressable","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","interpolateColor","interpolate","useTokens","useComponentTokens","createContext","useTokens","useComponentTokens","React","View","styles","useContext","useSharedValue","withSpring","useAnimatedStyle","interpolate","interpolateColor","Pressable","Animated","StyleSheet","React","View","Text","Pressable","StyleSheet","Animated","useSharedValue","useAnimatedStyle","withSpring","useTokens","useComponentTokens","useTokens","useComponentTokens","useSharedValue","useAnimatedStyle","React","Pressable","withSpring","Animated","styles","View","Text","StyleSheet","React","useRef","useState","View","RNTextInput","Pressable","StyleSheet","Text","Animated","useSharedValue","useAnimatedStyle","withTiming","useTokens","useComponentTokens","useIconStyle","styles","React","useCallback","View","Text","Pressable","StyleSheet","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","BlurView","styles","React","useCallback","View","Text","Pressable","StyleSheet","Modal","useWindowDimensions","Animated","useSharedValue","useAnimatedStyle","withTiming","withSpring","runOnJS","useTokens","styles","React","View","Text","Pressable","StyleSheet","useTokens","styles","StyleSheet"]} \ No newline at end of file diff --git a/packages/ui/src/components/AnimatedList/AnimatedList.tsx b/packages/ui/src/components/AnimatedList/AnimatedList.tsx index 4a8b4ee6..33006dd0 100644 --- a/packages/ui/src/components/AnimatedList/AnimatedList.tsx +++ b/packages/ui/src/components/AnimatedList/AnimatedList.tsx @@ -105,6 +105,7 @@ function AnimatedListInner( ref={ref} data={data} renderItem={(info: any) => } + keyExtractor={(item: any, index: number) => item?.id || item?.key || String(index)} {...flashListProps} contentContainerStyle={useMemo(() => [ animatedList.container, diff --git a/packages/ui/src/components/Marquee/Marquee.tsx b/packages/ui/src/components/Marquee/Marquee.tsx index 6d0b9180..29ce9d33 100644 --- a/packages/ui/src/components/Marquee/Marquee.tsx +++ b/packages/ui/src/components/Marquee/Marquee.tsx @@ -62,6 +62,9 @@ export function Marquee({ const translateY = useSharedValue(0); const isPaused = useSharedValue(false); + const [containerSize, setContainerSize] = React.useState(0); + const [contentSize, setContentSize] = React.useState(0); + const animatedStyle = useAnimatedStyle(() => { if (direction === "left" || direction === "right") { return { @@ -130,31 +133,21 @@ export function Marquee({ const resumeAnimation = () => { isPaused.value = false; - // Re-measure and restart animation - measureAndStart(); - }; - - const measureAndStart = () => { - containerRef.current?.measure((x, y, width, height) => { - contentRef.current?.measure((cx, cy, cWidth, cHeight) => { - if (direction === "left" || direction === "right") { - startAnimation(width, cWidth); - } else { - startAnimation(height, cHeight); - } - }); - }); + // Restart animation using existing dimensions + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } }; useEffect(() => { - // Start animation after layout - const timeout = setTimeout(measureAndStart, 100); + if (containerSize > 0 && contentSize > 0) { + startAnimation(containerSize, contentSize); + } return () => { - clearTimeout(timeout); cancelAnimation(translateX); cancelAnimation(translateY); }; - }, [children, speed, direction, loop]); + }, [containerSize, contentSize, speed, direction, loop]); const handlePressIn = () => { if (pauseOnPress) { @@ -177,6 +170,14 @@ export function Marquee({ accessibilityLabel={accessibilityLabel} accessibilityRole="text" testID={testID} + onLayout={(e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContainerSize(width); + } else { + setContainerSize(height); + } + }} > {fadeEdges && ( <> @@ -204,6 +205,14 @@ export function Marquee({ ]} onTouchStart={handlePressIn} onTouchEnd={handlePressOut} + onLayout={(e) => { + const { width, height } = e.nativeEvent.layout; + if (direction === "left" || direction === "right") { + setContentSize(width); + } else { + setContentSize(height); + } + }} accessible={false} // Let parent handle accessibility > {children} diff --git a/packages/ui/src/components/SegmentedControl/SegmentedControl.tsx b/packages/ui/src/components/SegmentedControl/SegmentedControl.tsx index ae8e2527..be150bea 100644 --- a/packages/ui/src/components/SegmentedControl/SegmentedControl.tsx +++ b/packages/ui/src/components/SegmentedControl/SegmentedControl.tsx @@ -89,7 +89,7 @@ export function SegmentedControl({ width: indicatorWidth.value, })); - const showIndicator = layoutReady && segmentWidth > 0; + const showIndicator = layoutReady && segmentWidth > 0 && containerWidth > 0; return (