@ecohouse/ui 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -12
- package/dist/index.cjs +699 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -3
- package/dist/index.d.ts +137 -3
- package/dist/index.js +690 -103
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/CommentCard/CommentCard.stories.tsx +31 -0
- package/src/components/CommentCard/CommentCard.tsx +209 -0
- package/src/components/CommentCard/index.ts +2 -0
- package/src/components/LanguageSwitcher/LanguageSwitcher.stories.tsx +52 -0
- package/src/components/LanguageSwitcher/LanguageSwitcher.tsx +287 -0
- package/src/components/LanguageSwitcher/index.ts +2 -0
- package/src/components/RatingInput/RatingInput.stories.tsx +41 -0
- package/src/components/RatingInput/RatingInput.tsx +168 -0
- package/src/components/RatingInput/index.ts +2 -0
- package/src/components/index.ts +9 -0
- package/src/icons/Globe/GlobeIcon.tsx +20 -0
- package/src/icons/Globe/GlobeIcon.web.tsx +26 -0
- package/src/icons/Globe/globePath.ts +3 -0
- package/src/icons/Globe/index.ts +2 -0
- package/src/icons/Star/StarIcon.tsx +35 -0
- package/src/icons/Star/StarIcon.web.tsx +41 -0
- package/src/icons/Star/index.ts +2 -0
- package/src/icons/Star/starPath.ts +3 -0
- package/src/icons/StarFilled/StarFilledIcon.tsx +28 -0
- package/src/icons/StarFilled/StarFilledIcon.web.tsx +34 -0
- package/src/icons/StarFilled/index.ts +1 -0
- package/src/icons/index.ts +4 -0
- package/src/icons/registry.ts +9 -1
- package/src/index.ts +22 -1
- package/src/theme/index.ts +3 -0
- package/src/theme/typography.ts +50 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icons/ArrowRight/arrowRightPath.ts","../src/theme/colors.ts","../src/theme/typography.ts","../src/icons/ArrowRight/ArrowRightIcon.tsx","../src/icons/Bag/bagPath.ts","../src/icons/Bag/BagIcon.tsx","../src/icons/Bell/bellPath.ts","../src/icons/Bell/BellIcon.tsx","../src/icons/Building/buildingPath.ts","../src/icons/Building/BuildingIcon.tsx","../src/icons/Calendar/calendarPath.ts","../src/icons/Calendar/CalendarIcon.tsx","../src/icons/CalendarOutline/calendarOutlinePath.ts","../src/icons/CalendarOutline/CalendarOutlineIcon.tsx","../src/icons/Camera/cameraPath.ts","../src/icons/Camera/CameraIcon.tsx","../src/icons/Check/checkPath.ts","../src/icons/Check/CheckIcon.tsx","../src/icons/CheckBadge/checkBadgePath.ts","../src/icons/CheckBadge/CheckBadgeIcon.tsx","../src/icons/ChevronDown/chevronDownPath.ts","../src/icons/ChevronDown/ChevronDownIcon.tsx","../src/icons/ChevronLeft/chevronLeftPath.ts","../src/icons/ChevronLeft/ChevronLeftIcon.tsx","../src/icons/Clock/clockPath.ts","../src/icons/Clock/ClockIcon.tsx","../src/icons/Facebook/facebookPath.ts","../src/icons/Facebook/FacebookIcon.tsx","../src/icons/Heart/heartPath.ts","../src/icons/Heart/HeartIcon.tsx","../src/icons/HelpCircle/helpCirclePath.ts","../src/icons/HelpCircle/HelpCircleIcon.tsx","../src/icons/Home/homePath.ts","../src/icons/Home/HomeIcon.tsx","../src/icons/Instagram/instagramPath.ts","../src/icons/Instagram/InstagramIcon.tsx","../src/icons/Key/keyPath.ts","../src/icons/Key/KeyIcon.tsx","../src/icons/LayoutGrid/layoutGridPath.ts","../src/icons/LayoutGrid/LayoutGridIcon.tsx","../src/icons/LinkedIn/linkedinPath.ts","../src/icons/LinkedIn/LinkedInIcon.tsx","../src/icons/LogOut/logOutPath.ts","../src/icons/LogOut/LogOutIcon.tsx","../src/icons/Mail/mailPath.ts","../src/icons/Mail/MailIcon.tsx","../src/icons/Minus/minusPath.ts","../src/icons/Minus/MinusIcon.tsx","../src/icons/Navigate/navigatePath.ts","../src/icons/Navigate/NavigateIcon.tsx","../src/icons/Phone/phonePath.ts","../src/icons/Phone/PhoneIcon.tsx","../src/icons/Plus/plusPath.ts","../src/icons/Plus/PlusIcon.tsx","../src/icons/Search/searchPath.ts","../src/icons/Search/SearchIcon.tsx","../src/icons/Settings/settingsPath.ts","../src/icons/Settings/SettingsIcon.tsx","../src/icons/Show/showPath.ts","../src/icons/Show/ShowIcon.tsx","../src/icons/Sidebar/sidebarPath.ts","../src/icons/Sidebar/SidebarIcon.tsx","../src/icons/User/userPath.ts","../src/icons/User/UserIcon.tsx","../src/icons/UsersAlt/usersAltPath.ts","../src/icons/UsersAlt/UsersAltIcon.tsx","../src/icons/Video/videoPath.ts","../src/icons/Video/VideoIcon.tsx","../src/icons/registry.ts","../src/icons/Icon.tsx","../src/utils/mergeRefs.ts","../src/utils/useApplyWebClassName.ts","../src/primitives/MenuItem/MenuItem.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Counter/Counter.tsx","../src/components/SegmentedToggle/SegmentedToggle.tsx","../src/components/StatCard/StatCard.tsx","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.tsx","../src/utils/dateUtils.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Input/Input.tsx","../src/components/Select/Select.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toggle/Toggle.tsx"],"names":["jsx","Svg","Path","jsxs","MenuItem","forwardRef","Avatar","useRef","useMemo","useState","Platform","View","styles","Pressable","Text","StyleSheet","ICON_SIZE","Badge","Icon","webBlurStyle","Counter","SegmentedToggle","useEffect","StatCard","variantConfig","Button","Checkbox","MENU_RADIUS","DatePicker","useCallback","DEFAULT_WIDTH","sizeConfig","Input","TouchableOpacity","TRIGGER_HEIGHT","TRIGGER_RADIUS","ITEM_RADIUS","Select","TextInput","resolveVisualState","chromeFor","Textarea","ANIMATION_DURATION","Toggle","Animated","Easing"],"mappings":"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","file":"index.js","sourcesContent":["/** Arrow_Right_MD path — 20×20 viewBox. */\nexport const ARROW_RIGHT_PATH = \"M4.16667 10H15.8333M15.8333 10L10 4.16667M15.8333 10L10 15.8333\";\n","export const grey = {\n \"0\": \"#767676\",\n \"0.5\": \"#6E6E6E\",\n \"1\": \"#666666\",\n \"1.5\": \"#5E5E5E\",\n \"2\": \"#565656\",\n \"3\": \"#474747\",\n \"4\": \"#373737\",\n \"5\": \"#272727\",\n \"6\": \"#1F1F1F\",\n \"7\": \"#171717\",\n \"7.5\": \"#161616\",\n \"8\": \"#101010\",\n \"8.5\": \"#0C0C0C\",\n \"9\": \"#080808\",\n \"9.5\": \"#040404\",\n} as const;\n\nexport type GreyStep = keyof typeof grey;\n\nexport const colors = {\n primary: \"#B46436\",\n black: \"#000000\",\n white: \"#ffffff\",\n whiteAlpha86: \"#FFFFFFDB\",\n whiteAlpha40: \"#FFFFFF66\",\n whiteAlpha20: \"#FFFFFF33\",\n whiteAlpha10: \"#FFFFFF1A\",\n whiteAlpha5: \"#FFFFFF0D\",\n dark: \"#090909\",\n red: \"#A63E3E\",\n lightGrey: \"#B7B7B7\",\n green: \"#34A853\",\n primaryMuted: \"#B464360F\",\n primaryHover: \"#B4643633\",\n redMuted: \"#A63E3E0F\",\n redHover: \"#A63E3E33\",\n\n grey0: grey[\"0\"],\n grey50: grey[\"0.5\"],\n grey100: grey[\"1\"],\n grey150: grey[\"1.5\"],\n grey200: grey[\"2\"],\n grey300: grey[\"3\"],\n grey400: grey[\"4\"],\n grey500: grey[\"5\"],\n grey600: grey[\"6\"],\n grey700: grey[\"7\"],\n grey750: grey[\"7.5\"],\n grey800: grey[\"8\"],\n grey850: grey[\"8.5\"],\n grey900: grey[\"9\"],\n grey950: grey[\"9.5\"],\n} as const;\n","export const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Button label — SemiBold, line-height 100%, letter-spacing 3%. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0.42,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Badge label — Regular 14, line-height 112%, letter-spacing 0. */\nexport const badgeTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Stat card label — Medium 16, line-height 100%, letter-spacing 0. */\nexport const statCardTypography = {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Segmented toggle label — Medium 14, line-height 100%, letter-spacing 0. */\nexport const segmentedToggleTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"500\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Counter value — Bold 14, line-height 100%, letter-spacing 0. */\nexport const counterTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Input label / field / hint typography. */\nexport const inputTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Select label / field / hint typography — Medium/Regular 12–14, letter-spacing 3%. */\nexport const selectTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Avatar name / email / menu-item typography — 100% line-height, 0 letter-spacing. */\nexport const avatarTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n email: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n menuItem: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/**\n * DatePicker typography — trigger field text plus the calendar-panel type\n * (month heading, weekday header, day-cell numbers). No label/hint chrome —\n * the Figma trigger is a standalone field. Figma didn't spec the month\n * heading / day-cell number sizes, so those reuse the existing type scale\n * for visual consistency with the rest of the kit.\n */\nexport const datePickerTypography = {\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n /** Calendar month/year heading — Bold, centered, White. */\n monthHeading: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Weekday header (ԵՐ, ԵՔ, ...) — Regular, uppercase, centered, Grey/300. */\n weekday: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n day: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n} as const;\n\n/** Textarea label / field / hint typography — Medium/Regular 12–14, letter-spacing 3%. */\nexport const textareaTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\nimport { colors } from \"../../theme\";\n\nexport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\n\ninterface ArrowRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowRightIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ArrowRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BAG_PATH =\n \"M9.23047 9H7.2002C6.08009 9 5.51962 9 5.0918 9.21799C4.71547 9.40973 4.40973 9.71547 4.21799 10.0918C4 10.5196 4 11.0801 4 12.2002V17.8002C4 18.9203 4 19.4801 4.21799 19.9079C4.40973 20.2842 4.71547 20.5905 5.0918 20.7822C5.5192 21 6.07902 21 7.19694 21H16.8031C17.921 21 18.48 21 18.9074 20.7822C19.2837 20.5905 19.5905 20.2842 19.7822 19.9079C20 19.4805 20 18.9215 20 17.8036V12.1969C20 11.079 20 10.5192 19.7822 10.0918C19.5905 9.71547 19.2837 9.40973 18.9074 9.21799C18.4796 9 17.9203 9 16.8002 9H14.7689M9.23047 9H14.7689M9.23047 9C9.10302 9 9 8.89668 9 8.76923V6C9 4.34315 10.3431 3 12 3C13.6569 3 15 4.34315 15 6V8.76923C15 8.89668 14.8964 9 14.7689 9\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BAG_PATH } from \"./bagPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BAG_PATH } from \"./bagPath\";\n\nexport function BagIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={BAG_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BELL_PATH =\n \"M7.5 17.5H12.5M10 2.5C7.23858 2.5 5 4.73858 5 7.5C5 8.51208 5.3007 9.45393 5.81764 10.2411C6.61256 11.4515 7.00967 12.0564 7.06127 12.1467C7.52024 12.9508 7.43573 12.6672 7.49349 13.5913C7.49998 13.6952 7.5 13.8524 7.5 14.1667C7.5 14.6269 7.8731 15 8.33333 15L11.6667 15C12.1269 15 12.5 14.6269 12.5 14.1667C12.5 13.8524 12.5 13.6952 12.5065 13.5913C12.5643 12.6672 12.4793 12.9509 12.9382 12.1467C12.9898 12.0564 13.3876 11.4515 14.1825 10.2411C14.6995 9.45393 15.0002 8.51208 15.0002 7.5C15.0002 4.73858 12.7614 2.5 10 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BELL_PATH } from \"./bellPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BELL_PATH } from \"./bellPath\";\n\nexport function BellIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BELL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BUILDING_PATH =\n \"M7.5 9.16659V16.6666M7.5 9.16659H3.83301C3.3663 9.16659 3.13318 9.16659 2.95492 9.25741C2.79811 9.33731 2.67072 9.4647 2.59083 9.6215C2.5 9.79976 2.5 10.0333 2.5 10.5V16.6666H7.5M7.5 9.16659V4.66667C7.5 4.19996 7.5 3.96643 7.59083 3.78817C7.67072 3.63137 7.79811 3.50397 7.95492 3.42408C8.13317 3.33325 8.3663 3.33325 8.83301 3.33325H11.1663C11.6331 3.33325 11.8669 3.33325 12.0452 3.42408C12.202 3.50397 12.329 3.63137 12.4089 3.78817C12.4997 3.96643 12.5 4.19996 12.5 4.66667V6.66659M7.5 16.6666H12.5M12.5 16.6666L17.5 16.6667V8C17.5 7.53329 17.4997 7.29976 17.4089 7.1215C17.329 6.9647 17.2024 6.83731 17.0456 6.75741C16.8674 6.66659 16.6334 6.66659 16.1667 6.66659H12.5M12.5 16.6666V6.66659\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BUILDING_PATH } from \"./buildingPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BUILDING_PATH } from \"./buildingPath\";\n\nexport function BuildingIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BUILDING_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Calendar icon path — 16×16 viewBox. */\nexport const CALENDAR_PATH =\n \"M14 6.66668H2M14 8.33334V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667H8M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M9.66667 12.6667L11 14L14 11\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_PATH } from \"./calendarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_PATH } from \"./calendarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Plain calendar icon path (no checkmark badge) — 16×16 viewBox. */\nexport const CALENDAR_OUTLINE_PATH =\n \"M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M2 6.66668H14M5.2 2.66668H10.8C11.9201 2.66668 12.4802 2.66668 12.908 2.88466C13.2843 3.07641 13.5903 3.38237 13.782 3.7587C14 4.18652 14 4.74657 14 5.86668V11.4667C14 12.5868 14 13.1468 13.782 13.5747C13.5903 13.951 13.2843 14.2569 12.908 14.4487C12.4802 14.6667 11.9201 14.6667 10.8 14.6667H5.2C4.0799 14.6667 3.51984 14.6667 3.09202 14.4487C2.71569 14.2569 2.40973 13.951 2.21799 13.5747C2 13.1468 2 12.5868 2 11.4667V5.86668C2 4.74657 2 4.18652 2.21799 3.7587C2.40973 3.38237 2.71569 3.07641 3.09202 2.88466C3.51984 2.66668 4.0799 2.66668 5.2 2.66668Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarOutlineIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CAMERA_PATH =\n \"M9.48898 7H6.2002C5.08009 7 4.51962 7 4.0918 7.21799C3.71547 7.40973 3.40973 7.71547 3.21799 8.0918C3 8.51962 3 9.08009 3 10.2002V15.8002C3 16.9203 3 17.4796 3.21799 17.9074C3.40973 18.2837 3.71547 18.5905 4.0918 18.7822C4.5192 19 5.07899 19 6.19691 19H17.8031C18.921 19 19.48 19 19.9074 18.7822C20.2837 18.5905 20.5905 18.2837 20.7822 17.9074C21 17.48 21 16.921 21 15.8031V10.1969C21 9.07899 21 8.5192 20.7822 8.0918C20.5905 7.71547 20.2837 7.40973 19.9074 7.21799C19.4796 7 18.9203 7 17.8002 7H14.5108M9.48898 7H9.55078M9.48898 7C9.50151 7.00001 9.51468 7 9.52857 7L9.55078 7M9.48898 7C9.38286 6.99995 9.32339 6.99941 9.27637 6.99414C8.68878 6.92835 8.28578 6.36908 8.40918 5.79084C8.42066 5.73703 8.44336 5.66894 8.4883 5.53412L8.49023 5.52841C8.54156 5.37443 8.56723 5.29743 8.59558 5.22949C8.88586 4.53389 9.54322 4.06083 10.2949 4.00541C10.3683 4 10.449 4 10.6113 4H13.3886C13.5509 4 13.6322 4 13.7057 4.00541C14.4574 4.06083 15.114 4.53389 15.4043 5.22949C15.4326 5.29743 15.4584 5.37434 15.5098 5.52832C15.556 5.66699 15.5791 5.73636 15.5908 5.79093C15.7142 6.36917 15.3118 6.92835 14.7242 6.99414C14.6772 6.99941 14.6171 6.99995 14.5108 7M9.55078 7H14.449M14.449 7H14.5108M14.449 7L14.4712 7C14.4851 7 14.4983 7.00001 14.5108 7M12 16C10.3431 16 9 14.6569 9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CAMERA_PATH } from \"./cameraPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CAMERA_PATH } from \"./cameraPath\";\n\nexport function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CAMERA_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Check mark path — 20×20 viewBox. */\nexport const CHECK_PATH = \"M4.16669 10.8333L7.50002 14.1667L15.8334 5.83334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_PATH } from \"./checkPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHECK_PATH } from \"./checkPath\";\n\ninterface CheckIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function CheckIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: CheckIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CHECK_BADGE_PATH =\n \"M12.5 8.33317L9.16663 11.6665L7.49996 9.99984M11.0384 2.88233L12.0558 3.74941C12.3122 3.96786 12.6305 4.09992 12.9662 4.12671L14.2987 4.23291C15.0822 4.29543 15.7045 4.91733 15.767 5.70077L15.8729 7.03353C15.8997 7.36925 16.0322 7.68799 16.2507 7.94433L17.1174 8.96152C17.6272 9.5597 17.6272 10.4396 17.1175 11.0378L16.2508 12.0551C16.0323 12.3115 15.9 12.6303 15.8732 12.9661L15.7666 14.2986C15.704 15.082 15.0827 15.7043 14.2993 15.7668L12.9663 15.8732C12.6305 15.9 12.312 16.0317 12.0556 16.2502L11.0384 17.1173C10.4402 17.627 9.55973 17.6271 8.96155 17.1174L7.9443 16.2502C7.68796 16.0318 7.36938 15.8998 7.03365 15.8731L5.70064 15.7668C4.9172 15.7043 4.29588 15.0822 4.23336 14.2987L4.12675 12.9661C4.09996 12.6304 3.96759 12.3118 3.74915 12.0555L2.88245 11.0378C2.37268 10.4397 2.37244 9.56002 2.88221 8.96184L3.74969 7.94418C3.96814 7.68784 4.09923 7.36926 4.12602 7.03353L4.23263 5.70093C4.29515 4.91749 4.91826 4.29535 5.70171 4.23283L7.03324 4.12663C7.36897 4.09984 7.68771 3.96788 7.94404 3.74943L8.96164 2.88233C9.55982 2.37256 10.4402 2.37256 11.0384 2.88233Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\n\nexport function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_BADGE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron down path — 20×20 viewBox. */\nexport const CHEVRON_DOWN_PATH = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\n\ninterface ChevronDownIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronDownIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron left path — 20×20 viewBox. */\nexport const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronLeftIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_LEFT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CLOCK_PATH =\n \"M12 7V12H17M12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CLOCK_PATH } from \"./clockPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CLOCK_PATH } from \"./clockPath\";\n\nexport function ClockIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CLOCK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const FACEBOOK_PATH =\n \"M10.0003 1.69922C5.41699 1.69922 1.66699 5.44089 1.66699 10.0492C1.66699 14.2159 4.71699 17.6742 8.70033 18.2992V12.4659H6.58366V10.0492H8.70033V8.20755C8.70033 6.11589 9.94199 4.96589 11.8503 4.96589C12.7587 4.96589 13.7087 5.12422 13.7087 5.12422V7.18255H12.6587C11.6253 7.18255 11.3003 7.82422 11.3003 8.48255V10.0492H13.617L13.242 12.4659H11.3003V18.2992C13.264 17.9891 15.0522 16.9871 16.3419 15.4743C17.6317 13.9614 18.3381 12.0373 18.3337 10.0492C18.3337 5.44089 14.5837 1.69922 10.0003 1.69922Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FACEBOOK_PATH } from \"./facebookPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FACEBOOK_PATH } from \"./facebookPath\";\n\nexport function FacebookIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={FACEBOOK_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Heart icon path — 16×16 viewBox. */\nexport const HEART_PATH =\n \"M7.99547 3.42388C6.66257 1.8656 4.43987 1.44643 2.76984 2.87334C1.0998 4.30026 0.864686 6.68598 2.17617 8.3736C3.26659 9.77674 6.56656 12.7361 7.64811 13.6939C7.76911 13.801 7.82961 13.8546 7.90018 13.8757C7.96178 13.8941 8.02917 13.8941 8.09077 13.8757C8.16134 13.8546 8.22184 13.801 8.34284 13.6939C9.42439 12.7361 12.7244 9.77674 13.8148 8.3736C15.1263 6.68598 14.9199 4.28525 13.2211 2.87334C11.5224 1.46144 9.32838 1.8656 7.99547 3.42388Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HEART_PATH } from \"./heartPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HEART_PATH } from \"./heartPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HEART_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </Svg>\n );\n}\n","/** HelpCircle icon path — 16×16 viewBox. */\nexport const HELP_CIRCLE_PATH =\n \"M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HelpCircleIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HELP_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const HOME_PATH =\n \"M1.66675 16.6667H3.33341M3.33341 16.6667H8.33341M3.33341 16.6667V9.54352C3.33341 9.09823 3.33341 8.87548 3.38756 8.66828C3.43554 8.48466 3.51491 8.31089 3.6215 8.15387C3.74178 7.97668 3.90895 7.82974 4.24406 7.53652L8.24538 4.03537C8.86662 3.49178 9.17726 3.21997 9.5271 3.11652C9.83559 3.02529 10.1644 3.02529 10.4729 3.11652C10.823 3.22005 11.1341 3.49212 11.7563 4.03652L15.7563 7.53652C16.0914 7.82974 16.2586 7.97668 16.3789 8.15387C16.4855 8.31089 16.5642 8.48466 16.6122 8.66828C16.6664 8.87548 16.6667 9.09824 16.6667 9.54352V16.6667M8.33341 16.6667H11.6667M8.33341 16.6667V13.3334C8.33341 12.4129 9.07961 11.6667 10.0001 11.6667C10.9206 11.6667 11.6667 12.4129 11.6667 13.3334V16.6667M11.6667 16.6667H16.6667M16.6667 16.6667H18.3334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HOME_PATH } from \"./homePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HOME_PATH } from \"./homePath\";\n\nexport function HomeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={HOME_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const INSTAGRAM_PATH =\n \"M6.49984 1.66748H13.4998C16.1665 1.66748 18.3332 3.83415 18.3332 6.50081V13.5008C18.3332 14.7827 17.8239 16.0121 16.9175 16.9185C16.0111 17.8249 14.7817 18.3341 13.4998 18.3341H6.49984C3.83317 18.3341 1.6665 16.1675 1.6665 13.5008V6.50081C1.6665 5.21893 2.17573 3.98956 3.08215 3.08313C3.98858 2.17671 5.21796 1.66748 6.49984 1.66748ZM6.33317 3.33415C5.53752 3.33415 4.77446 3.65022 4.21185 4.21283C3.64924 4.77544 3.33317 5.5385 3.33317 6.33415V13.6675C3.33317 15.3258 4.67484 16.6675 6.33317 16.6675H13.6665C14.4622 16.6675 15.2252 16.3514 15.7878 15.7888C16.3504 15.2262 16.6665 14.4631 16.6665 13.6675V6.33415C16.6665 4.67581 15.3248 3.33415 13.6665 3.33415H6.33317ZM14.3748 4.58415C14.6511 4.58415 14.9161 4.69389 15.1114 4.88924C15.3068 5.08459 15.4165 5.34955 15.4165 5.62581C15.4165 5.90208 15.3068 6.16703 15.1114 6.36238C14.9161 6.55773 14.6511 6.66748 14.3748 6.66748C14.0986 6.66748 13.8336 6.55773 13.6383 6.36238C13.4429 6.16703 13.3332 5.90208 13.3332 5.62581C13.3332 5.34955 13.4429 5.08459 13.6383 4.88924C13.8336 4.69389 14.0986 4.58415 14.3748 4.58415ZM9.99984 5.83415C11.1049 5.83415 12.1647 6.27313 12.9461 7.05454C13.7275 7.83594 14.1665 8.89574 14.1665 10.0008C14.1665 11.1059 13.7275 12.1657 12.9461 12.9471C12.1647 13.7285 11.1049 14.1675 9.99984 14.1675C8.89477 14.1675 7.83496 13.7285 7.05356 12.9471C6.27216 12.1657 5.83317 11.1059 5.83317 10.0008C5.83317 8.89574 6.27216 7.83594 7.05356 7.05454C7.83496 6.27313 8.89477 5.83415 9.99984 5.83415ZM9.99984 7.50081C9.3368 7.50081 8.70091 7.76421 8.23207 8.23305C7.76323 8.70189 7.49984 9.33777 7.49984 10.0008C7.49984 10.6639 7.76323 11.2997 8.23207 11.7686C8.70091 12.2374 9.3368 12.5008 9.99984 12.5008C10.6629 12.5008 11.2988 12.2374 11.7676 11.7686C12.2364 11.2997 12.4998 10.6639 12.4998 10.0008C12.4998 9.33777 12.2364 8.70189 11.7676 8.23305C11.2988 7.76421 10.6629 7.50081 9.99984 7.50081Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { INSTAGRAM_PATH } from \"./instagramPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { INSTAGRAM_PATH } from \"./instagramPath\";\n\nexport function InstagramIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={INSTAGRAM_PATH} fill={color} />\n </Svg>\n );\n}\n","export const KEY_PATH =\n \"M5.28673 10.0002L7.0545 11.768M7.6435 7.64301L9.41127 9.41078M10.0003 5.28624L11.768 7.05401M4.22553 11.0604L11.0609 4.22505C11.7209 3.56502 12.0513 3.235 12.4318 3.11136C12.7666 3.00259 13.127 3.00259 13.4618 3.11136C13.8421 3.23494 14.1718 3.56464 14.8311 4.22393L15.775 5.16785C16.4351 5.82788 16.7654 6.15867 16.8891 6.53922C16.9979 6.87396 16.9976 7.23381 16.8889 7.56855C16.7652 7.9491 16.4353 8.27937 15.7753 8.9394L8.93989 15.7748C8.27986 16.4348 7.94959 16.7647 7.56904 16.8884C7.2343 16.9971 6.87445 16.9974 6.53971 16.8886C6.15916 16.765 5.82837 16.4346 5.16834 15.7745L4.22441 14.8306C3.56513 14.1713 3.23542 13.8416 3.11185 13.4613C3.00308 13.1266 3.00308 12.7661 3.11185 12.4313C3.23549 12.0508 3.56551 11.7204 4.22553 11.0604Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { KEY_PATH } from \"./keyPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { KEY_PATH } from \"./keyPath\";\n\nexport function KeyIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={KEY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LayoutGrid icon path — 16×16 viewBox. */\nexport const LAYOUT_GRID_PATH =\n \"M4.33333 4.33333H4.34M11.6667 4.33333H11.6733M4.33333 11.6667H4.34M8.66667 8.66667H8.67333M11.6667 11.6667H11.6733M11.3333 14H14V11.3333M9.33333 11V14M14 9.33333H11M10.4 6.66667H12.9333C13.3067 6.66667 13.4934 6.66667 13.636 6.594C13.7614 6.53009 13.8634 6.4281 13.9273 6.30266C14 6.16005 14 5.97337 14 5.6V3.06667C14 2.6933 14 2.50661 13.9273 2.36401C13.8634 2.23856 13.7614 2.13658 13.636 2.07266C13.4934 2 13.3067 2 12.9333 2H10.4C10.0266 2 9.83995 2 9.69734 2.07266C9.5719 2.13658 9.46991 2.23856 9.406 2.36401C9.33333 2.50661 9.33333 2.6933 9.33333 3.06667V5.6C9.33333 5.97337 9.33333 6.16005 9.406 6.30266C9.46991 6.4281 9.5719 6.53009 9.69734 6.594C9.83995 6.66667 10.0266 6.66667 10.4 6.66667ZM3.06667 6.66667H5.6C5.97337 6.66667 6.16005 6.66667 6.30266 6.594C6.4281 6.53009 6.53009 6.4281 6.594 6.30266C6.66667 6.16005 6.66667 5.97337 6.66667 5.6V3.06667C6.66667 2.6933 6.66667 2.50661 6.594 2.36401C6.53009 2.23856 6.4281 2.13658 6.30266 2.07266C6.16005 2 5.97337 2 5.6 2H3.06667C2.6933 2 2.50661 2 2.36401 2.07266C2.23856 2.13658 2.13658 2.23856 2.07266 2.36401C2 2.50661 2 2.6933 2 3.06667V5.6C2 5.97337 2 6.16005 2.07266 6.30266C2.13658 6.4281 2.23856 6.53009 2.36401 6.594C2.50661 6.66667 2.6933 6.66667 3.06667 6.66667ZM3.06667 14H5.6C5.97337 14 6.16005 14 6.30266 13.9273C6.4281 13.8634 6.53009 13.7614 6.594 13.636C6.66667 13.4934 6.66667 13.3067 6.66667 12.9333V10.4C6.66667 10.0266 6.66667 9.83995 6.594 9.69734C6.53009 9.5719 6.4281 9.46991 6.30266 9.406C6.16005 9.33333 5.97337 9.33333 5.6 9.33333H3.06667C2.6933 9.33333 2.50661 9.33333 2.36401 9.406C2.23856 9.46991 2.13658 9.5719 2.07266 9.69734C2 9.83995 2 10.0266 2 10.4V12.9333C2 13.3067 2 13.4934 2.07266 13.636C2.13658 13.7614 2.23856 13.8634 2.36401 13.9273C2.50661 14 2.6933 14 3.06667 14Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LayoutGridIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LAYOUT_GRID_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const LINKEDIN_PATH =\n \"M15.8333 2.50098C16.2754 2.50098 16.6993 2.67657 17.0118 2.98913C17.3244 3.30169 17.5 3.72562 17.5 4.16764V15.8343C17.5 16.2763 17.3244 16.7003 17.0118 17.0128C16.6993 17.3254 16.2754 17.501 15.8333 17.501H4.16667C3.72464 17.501 3.30072 17.3254 2.98816 17.0128C2.67559 16.7003 2.5 16.2763 2.5 15.8343V4.16764C2.5 3.72562 2.67559 3.30169 2.98816 2.98913C3.30072 2.67657 3.72464 2.50098 4.16667 2.50098H15.8333ZM15.4167 15.4176V11.001C15.4167 10.2805 15.1304 9.58948 14.621 9.08C14.1115 8.57053 13.4205 8.28431 12.7 8.28431C11.9917 8.28431 11.1667 8.71764 10.7667 9.36764V8.44264H8.44167V15.4176H10.7667V11.3093C10.7667 10.6676 11.2833 10.1426 11.925 10.1426C12.2344 10.1426 12.5312 10.2656 12.75 10.4844C12.9687 10.7031 13.0917 10.9999 13.0917 11.3093V15.4176H15.4167ZM5.73333 7.13431C6.10464 7.13431 6.46073 6.98681 6.72328 6.72426C6.98583 6.46171 7.13333 6.10561 7.13333 5.73431C7.13333 4.95931 6.50833 4.32598 5.73333 4.32598C5.35982 4.32598 5.0016 4.47435 4.73749 4.73847C4.47338 5.00258 4.325 5.3608 4.325 5.73431C4.325 6.50931 4.95833 7.13431 5.73333 7.13431ZM6.89167 15.4176V8.44264H4.58333V15.4176H6.89167Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LINKEDIN_PATH } from \"./linkedinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LINKEDIN_PATH } from \"./linkedinPath\";\n\nexport function LinkedInIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={LINKEDIN_PATH} fill={color} />\n </Svg>\n );\n}\n","/** LogOut icon path — 16×16 viewBox. */\nexport const LOG_OUT_PATH =\n \"M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M8 11.3333C8 11.5304 8 11.6289 7.99268 11.7143C7.91655 12.6013 7.26324 13.3312 6.39002 13.5049C6.30602 13.5216 6.20801 13.5324 6.01223 13.5542L5.3313 13.6299C4.30832 13.7435 3.7968 13.8004 3.39044 13.6703C2.84862 13.4969 2.40628 13.101 2.17412 12.5817C2 12.1921 2 11.6775 2 10.6482V5.3518C2 4.32251 2 3.80787 2.17412 3.41835C2.40628 2.89899 2.84862 2.50307 3.39044 2.32969C3.79681 2.19965 4.3083 2.25648 5.33129 2.37015L6.01223 2.44581C6.20808 2.46757 6.306 2.47845 6.39002 2.49515C7.26324 2.66877 7.91655 3.39869 7.99268 4.28574C8 4.37109 8 4.46962 8 4.66667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOG_OUT_PATH } from \"./logOutPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOG_OUT_PATH } from \"./logOutPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LOG_OUT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MAIL_PATH =\n \"M3.33333 4.99984L8.42303 8.84339L8.42473 8.8448C8.98987 9.25924 9.27261 9.46658 9.5823 9.54668C9.85602 9.61748 10.1438 9.61748 10.4175 9.54668C10.7274 9.46651 11.011 9.25856 11.5771 8.84339C11.5771 8.84339 14.8417 6.33812 16.6667 4.99984M2.5 13.1667V6.83333C2.5 5.89991 2.5 5.43285 2.68166 5.07633C2.84144 4.76273 3.09623 4.50795 3.40983 4.34816C3.76635 4.1665 4.23341 4.1665 5.16683 4.1665H14.8335C15.7669 4.1665 16.233 4.1665 16.5895 4.34816C16.9031 4.50795 17.1587 4.76273 17.3185 5.07633C17.5 5.43251 17.5 5.899 17.5 6.8306V13.1695C17.5 14.1011 17.5 14.5669 17.3185 14.9231C17.1587 15.2367 16.9031 15.4919 16.5895 15.6517C16.2333 15.8332 15.7675 15.8332 14.8359 15.8332H5.16409C4.23249 15.8332 3.766 15.8332 3.40983 15.6517C3.09623 15.4919 2.84144 15.2367 2.68166 14.9231C2.5 14.5666 2.5 14.1001 2.5 13.1667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAIL_PATH } from \"./mailPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAIL_PATH } from \"./mailPath\";\n\nexport function MailIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MINUS_PATH = \"M3.33337 8H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MINUS_PATH } from \"./minusPath\";\n\nexport { MINUS_PATH } from \"./minusPath\";\n\nexport function MinusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={MINUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const NAVIGATE_PATH =\n \"M5.691 14.2339C11.5836 17.7694 16.2976 13.0554 15.7084 4.21658C6.86968 3.62732 2.15584 8.34151 5.691 14.2339ZM5.691 14.2339C5.69093 14.2338 5.69107 14.234 5.691 14.2339ZM5.691 14.2339L4.16675 15.7576M5.691 14.2339L8.88079 11.0436\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { NAVIGATE_PATH } from \"./navigatePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { NAVIGATE_PATH } from \"./navigatePath\";\n\nexport function NavigateIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={NAVIGATE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PHONE_PATH =\n \"M7.91872 3.54768C7.66561 2.91492 7.05276 2.5 6.37126 2.5H4.07895C3.20692 2.5 2.5 3.20675 2.5 4.07878C2.5 11.491 8.50898 17.5 15.9212 17.5C16.7933 17.5 17.5 16.793 17.5 15.921L17.5004 13.6283C17.5004 12.9468 17.0856 12.334 16.4528 12.0809L14.2558 11.2024C13.6874 10.9751 13.0402 11.0774 12.57 11.4693L12.0029 11.9422C11.3407 12.4941 10.3664 12.4502 9.75683 11.8407L8.16018 10.2425C7.55066 9.63302 7.50561 8.65945 8.05745 7.99724L8.53027 7.43025C8.92218 6.95996 9.02541 6.31263 8.79805 5.74424L7.91872 3.54768Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { PHONE_PATH } from \"./phonePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { PHONE_PATH } from \"./phonePath\";\n\nexport function PhoneIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={PHONE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PLUS_PATH = \"M8.00004 3.33325V12.6666M3.33337 7.99992H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { PLUS_PATH } from \"./plusPath\";\n\nexport { PLUS_PATH } from \"./plusPath\";\n\nexport function PlusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={PLUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Search (magnifying glass) paths — 20×20 viewBox. */\nexport const SEARCH_CIRCLE_PATH =\n \"M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z\";\n\nexport const SEARCH_HANDLE_PATH = \"M17.5 17.5L13.875 13.875\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\nimport { colors } from \"../../theme\";\n\nexport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\n\ninterface SearchIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function SearchIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: SearchIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SEARCH_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SEARCH_HANDLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Settings icon path — 16×16 viewBox. */\nexport const SETTINGS_PATH =\n \"M8.00004 10C9.10461 10 10 9.10457 10 8C10 6.89543 9.10461 6 8.00004 6C6.89547 6 6.00004 6.89543 6.00004 8C6.00004 9.10457 6.89547 10 8.00004 10Z M12.4849 9.81818C12.4042 10.001 12.3801 10.2038 12.4158 10.4004C12.4514 10.597 12.5452 10.7784 12.6849 10.9212L12.7213 10.9576C12.834 11.0702 12.9234 11.2038 12.9844 11.351C13.0454 11.4981 13.0768 11.6559 13.0768 11.8152C13.0768 11.9744 13.0454 12.1322 12.9844 12.2793C12.9234 12.4265 12.834 12.5602 12.7213 12.6727C12.6087 12.7854 12.475 12.8748 12.3278 12.9358C12.1807 12.9968 12.023 13.0282 11.8637 13.0282C11.7044 13.0282 11.5467 12.9968 11.3995 12.9358C11.2524 12.8748 11.1187 12.7854 11.0061 12.6727L10.9697 12.6364C10.8269 12.4966 10.6455 12.4029 10.4489 12.3673C10.2523 12.3316 10.0495 12.3557 9.86671 12.4364C9.68745 12.5132 9.53458 12.6408 9.42689 12.8034C9.31921 12.966 9.26142 13.1565 9.26065 13.3515V13.4545C9.26065 13.776 9.13294 14.0843 8.90562 14.3116C8.67831 14.539 8.37 14.6667 8.04853 14.6667C7.72705 14.6667 7.41874 14.539 7.19143 14.3116C6.96411 14.0843 6.8364 13.776 6.8364 13.4545V13.4C6.83171 13.1994 6.76678 13.0048 6.65005 12.8416C6.53331 12.6784 6.37018 12.5541 6.18186 12.4848C5.99906 12.4042 5.79629 12.3801 5.59968 12.4158C5.40308 12.4514 5.22166 12.5451 5.07883 12.6849L5.04246 12.7212C4.92989 12.8339 4.79621 12.9233 4.64906 12.9843C4.50191 13.0453 4.34418 13.0767 4.18489 13.0767C4.0256 13.0767 3.86787 13.0453 3.72072 12.9843C3.57357 12.9233 3.43989 12.8339 3.32731 12.7212C3.21461 12.6086 3.12521 12.475 3.06421 12.3278C3.00321 12.1807 2.97181 12.0229 2.97181 11.8636C2.97181 11.7043 3.00321 11.5466 3.06421 11.3995C3.12521 11.2523 3.21461 11.1186 3.32731 11.0061L3.36368 10.9697C3.5034 10.8269 3.59712 10.6454 3.63277 10.4488C3.66842 10.2522 3.64435 10.0495 3.56368 9.86667C3.48685 9.68741 3.35929 9.53454 3.19669 9.42686C3.03409 9.31917 2.84355 9.26139 2.64853 9.26061H2.5455C2.22402 9.26061 1.91571 9.1329 1.6884 8.90559C1.46108 8.67827 1.33337 8.36996 1.33337 8.04849C1.33337 7.72701 1.46108 7.4187 1.6884 7.19139C1.91571 6.96407 2.22402 6.83637 2.5455 6.83637H2.60004C2.80064 6.83167 2.9952 6.76674 3.1584 6.65001C3.32161 6.53328 3.44593 6.37014 3.51519 6.18182C3.59587 5.99902 3.61993 5.79625 3.58429 5.59965C3.54864 5.40304 3.45491 5.22163 3.31519 5.07879L3.27883 5.04243C3.16613 4.92985 3.07672 4.79617 3.01573 4.64902C2.95473 4.50187 2.92333 4.34414 2.92333 4.18485C2.92333 4.02556 2.95473 3.86783 3.01573 3.72068C3.07672 3.57353 3.16613 3.43985 3.27883 3.32728C3.3914 3.21458 3.52509 3.12517 3.67223 3.06417C3.81938 3.00317 3.97711 2.97178 4.1364 2.97178C4.2957 2.97178 4.45343 3.00317 4.60057 3.06417C4.74772 3.12517 4.88141 3.21458 4.99398 3.32728L5.03034 3.36364C5.17318 3.50336 5.3546 3.59708 5.5512 3.63273C5.7478 3.66838 5.95058 3.64431 6.13337 3.56364H6.18186C6.36111 3.48681 6.51399 3.35925 6.62167 3.19665C6.72935 3.03405 6.78714 2.84351 6.78792 2.64849V2.54546C6.78792 2.22398 6.91562 1.91567 7.14294 1.68836C7.37026 1.46104 7.67857 1.33334 8.00004 1.33334C8.32151 1.33334 8.62982 1.46104 8.85714 1.68836C9.08446 1.91567 9.21216 2.22398 9.21216 2.54546V2.6C9.21294 2.79502 9.27073 2.98556 9.37841 3.14816C9.48609 3.31076 9.63897 3.43833 9.81822 3.51515C10.001 3.59583 10.2038 3.6199 10.4004 3.58425C10.597 3.5486 10.7784 3.45487 10.9213 3.31515L10.9576 3.27879C11.0702 3.16609 11.2039 3.07669 11.351 3.01569C11.4982 2.95469 11.6559 2.92329 11.8152 2.92329C11.9745 2.92329 12.1322 2.95469 12.2794 3.01569C12.4265 3.07669 12.5602 3.16609 12.6728 3.27879C12.7855 3.39136 12.8749 3.52505 12.9359 3.6722C12.9969 3.81935 13.0283 3.97707 13.0283 4.13637C13.0283 4.29566 12.9969 4.45339 12.9359 4.60054C12.8749 4.74769 12.7855 4.88137 12.6728 4.99394L12.6364 5.03031C12.4967 5.17314 12.403 5.35456 12.3673 5.55116C12.3317 5.74776 12.3557 5.95054 12.4364 6.13334V6.18182C12.5132 6.36107 12.6408 6.51395 12.8034 6.62163C12.966 6.72932 13.1565 6.7871 13.3516 6.78788H13.4546C13.7761 6.78788 14.0844 6.91559 14.3117 7.1429C14.539 7.37022 14.6667 7.67853 14.6667 8C14.6667 8.32148 14.539 8.62978 14.3117 8.8571C14.0844 9.08442 13.7761 9.21212 13.4546 9.21212H13.4C13.205 9.2129 13.0145 9.27069 12.8519 9.37837C12.6893 9.48605 12.5617 9.63893 12.4849 9.81818Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SETTINGS_PATH } from \"./settingsPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SETTINGS_PATH } from \"./settingsPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SettingsIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SETTINGS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Show (eye) icon path — 20×20 viewBox. */\nexport const SHOW_PATH =\n \"M1.66669 10C1.66669 10 4.16669 4.16667 10 4.16667C15.8334 4.16667 18.3334 10 18.3334 10C18.3334 10 15.8334 15.8333 10 15.8333C4.16669 15.8333 1.66669 10 1.66669 10Z\";\n\nexport const SHOW_PUPIL_PATH =\n \"M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\nimport { colors } from \"../../theme\";\n\nexport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\n\ninterface ShowIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ShowIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: ShowIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHOW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SHOW_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Sidebar icon path — 20×20 viewBox. */\nexport const SIDEBAR_PATH =\n \"M12.5 2.5V17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SIDEBAR_PATH } from \"./sidebarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SIDEBAR_PATH } from \"./sidebarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SidebarIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SIDEBAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** User icon path — 20×20 viewBox. */\nexport const USER_PATH =\n \"M15.8334 17.5C15.8334 14.2783 13.2217 11.6667 10 11.6667C6.77836 11.6667 4.16669 14.2783 4.16669 17.5M10 9.16667C8.15907 9.16667 6.66669 7.67428 6.66669 5.83333C6.66669 3.99238 8.15907 2.5 10 2.5C11.841 2.5 13.3334 3.99238 13.3334 5.83333C13.3334 7.67428 11.841 9.16667 10 9.16667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { USER_PATH } from \"./userPath\";\nimport { colors } from \"../../theme\";\n\nexport { USER_PATH } from \"./userPath\";\n\ninterface UserIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: UserIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={USER_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const USERS_ALT_PATH =\n \"M14.35 14.2566C14.9725 13.7177 15.4718 13.0513 15.814 12.3024C16.1562 11.5536 16.3333 10.7399 16.3333 9.91659C16.3333 8.36949 15.7187 6.88576 14.6248 5.7918C13.5308 4.69783 12.0471 4.08325 10.5 4.08325C8.95289 4.08325 7.46916 4.69783 6.3752 5.7918C5.28124 6.88576 4.66666 8.36949 4.66666 9.91659C4.66665 10.7399 4.84376 11.5536 5.18597 12.3024C5.52818 13.0513 6.02748 13.7177 6.64999 14.2566C5.01682 14.9961 3.6312 16.1904 2.6588 17.6966C1.6864 19.2027 1.16837 20.9571 1.16666 22.7499C1.16666 23.0593 1.28957 23.3561 1.50837 23.5749C1.72716 23.7937 2.0239 23.9166 2.33332 23.9166C2.64274 23.9166 2.93949 23.7937 3.15828 23.5749C3.37707 23.3561 3.49999 23.0593 3.49999 22.7499C3.49999 20.8934 4.23749 19.1129 5.55024 17.8002C6.863 16.4874 8.64347 15.7499 10.5 15.7499C12.3565 15.7499 14.137 16.4874 15.4497 17.8002C16.7625 19.1129 17.5 20.8934 17.5 22.7499C17.5 23.0593 17.6229 23.3561 17.8417 23.5749C18.0605 23.7937 18.3572 23.9166 18.6667 23.9166C18.9761 23.9166 19.2728 23.7937 19.4916 23.5749C19.7104 23.3561 19.8333 23.0593 19.8333 22.7499C19.8316 20.9571 19.3136 19.2027 18.3412 17.6966C17.3688 16.1904 15.9832 14.9961 14.35 14.2566ZM10.5 13.4166C9.80775 13.4166 9.13107 13.2113 8.55549 12.8267C7.97992 12.4421 7.53132 11.8955 7.26641 11.256C7.0015 10.6164 6.93219 9.9127 7.06724 9.23377C7.20229 8.55484 7.53563 7.9312 8.02512 7.44171C8.5146 6.95223 9.13824 6.61889 9.81717 6.48384C10.4961 6.34879 11.1998 6.4181 11.8394 6.68301C12.4789 6.94791 13.0255 7.39652 13.4101 7.97209C13.7947 8.54766 14 9.22435 14 9.91659C14 10.8448 13.6312 11.7351 12.9749 12.3915C12.3185 13.0478 11.4282 13.4166 10.5 13.4166ZM21.8633 13.7899C22.61 12.9491 23.0977 11.9105 23.2678 10.799C23.4378 9.68748 23.2831 8.55051 22.822 7.52492C22.361 6.49933 21.6134 5.62885 20.6692 5.01825C19.725 4.40764 18.6244 4.08295 17.5 4.08325C17.1906 4.08325 16.8938 4.20617 16.675 4.42496C16.4562 4.64375 16.3333 4.9405 16.3333 5.24992C16.3333 5.55934 16.4562 5.85608 16.675 6.07488C16.8938 6.29367 17.1906 6.41659 17.5 6.41659C18.4282 6.41659 19.3185 6.78533 19.9749 7.44171C20.6312 8.09809 21 8.98833 21 9.91659C20.9983 10.5294 20.8358 11.131 20.5287 11.6612C20.2216 12.1915 19.7807 12.6319 19.25 12.9383C19.077 13.038 18.9325 13.1805 18.8304 13.3521C18.7283 13.5237 18.6719 13.7186 18.6667 13.9183C18.6618 14.1163 18.7074 14.3123 18.7993 14.4879C18.8911 14.6634 19.0262 14.8127 19.1917 14.9216L19.6467 15.2249L19.7983 15.3066C21.2046 15.9736 22.391 17.0286 23.2178 18.3473C24.0446 19.666 24.4773 21.1935 24.465 22.7499C24.465 23.0593 24.5879 23.3561 24.8067 23.5749C25.0255 23.7937 25.3222 23.9166 25.6317 23.9166C25.9411 23.9166 26.2378 23.7937 26.4566 23.5749C26.6754 23.3561 26.7983 23.0593 26.7983 22.7499C26.8079 20.9596 26.3594 19.1965 25.4957 17.6283C24.632 16.0601 23.3816 14.7388 21.8633 13.7899Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport function UsersAltIcon({ size = 28, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n <Path d={USERS_ALT_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Video icon paths — 16×16 viewBox. */\nexport const VIDEO_PATHS = [\n \"M14.6667 5.95424C14.6667 5.55036 14.6667 5.34843 14.5868 5.25492C14.5175 5.17378 14.4136 5.13072 14.3072 5.13909C14.1846 5.14874 14.0418 5.29153 13.7563 5.57712L11.3334 7.99999L13.7563 10.4229C14.0418 10.7085 14.1846 10.8512 14.3072 10.8609C14.4136 10.8693 14.5175 10.8262 14.5868 10.7451C14.6667 10.6516 14.6667 10.4496 14.6667 10.0457V5.95424Z\",\n \"M1.33337 6.53333C1.33337 5.41322 1.33337 4.85317 1.55136 4.42535C1.74311 4.04902 2.04907 3.74306 2.42539 3.55132C2.85322 3.33333 3.41327 3.33333 4.53337 3.33333H8.13337C9.25348 3.33333 9.81353 3.33333 10.2414 3.55132C10.6177 3.74306 10.9236 4.04902 11.1154 4.42535C11.3334 4.85317 11.3334 5.41322 11.3334 6.53333V9.46666C11.3334 10.5868 11.3334 11.1468 11.1154 11.5746C10.9236 11.951 10.6177 12.2569 10.2414 12.4487C9.81353 12.6667 9.25348 12.6667 8.13337 12.6667H4.53337C3.41327 12.6667 2.85322 12.6667 2.42539 12.4487C2.04907 12.2569 1.74311 11.951 1.55136 11.5746C1.33337 11.1468 1.33337 10.5868 1.33337 9.46666V6.53333Z\",\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { VIDEO_PATHS } from \"./videoPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { VIDEO_PATHS } from \"./videoPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function VideoIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n {VIDEO_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n","import { ArrowRightIcon } from \"./ArrowRight\";\nimport { BagIcon } from \"./Bag\";\nimport { BellIcon } from \"./Bell\";\nimport { BuildingIcon } from \"./Building\";\nimport { CalendarIcon } from \"./Calendar\";\nimport { CalendarOutlineIcon } from \"./CalendarOutline\";\nimport { CameraIcon } from \"./Camera\";\nimport { CheckIcon } from \"./Check\";\nimport { CheckBadgeIcon } from \"./CheckBadge\";\nimport { ChevronDownIcon } from \"./ChevronDown\";\nimport { ChevronLeftIcon } from \"./ChevronLeft\";\nimport { ClockIcon } from \"./Clock\";\nimport { FacebookIcon } from \"./Facebook\";\nimport { HeartIcon } from \"./Heart\";\nimport { HelpCircleIcon } from \"./HelpCircle\";\nimport { HomeIcon } from \"./Home\";\nimport { InstagramIcon } from \"./Instagram\";\nimport { KeyIcon } from \"./Key\";\nimport { LayoutGridIcon } from \"./LayoutGrid\";\nimport { LinkedInIcon } from \"./LinkedIn\";\nimport { LogOutIcon } from \"./LogOut\";\nimport { MailIcon } from \"./Mail\";\nimport { MinusIcon } from \"./Minus\";\nimport { NavigateIcon } from \"./Navigate\";\nimport { PhoneIcon } from \"./Phone\";\nimport { PlusIcon } from \"./Plus\";\nimport { SearchIcon } from \"./Search\";\nimport { SettingsIcon } from \"./Settings\";\nimport { ShowIcon } from \"./Show\";\nimport { SidebarIcon } from \"./Sidebar\";\nimport { UserIcon } from \"./User\";\nimport { UsersAltIcon } from \"./UsersAlt\";\nimport { VideoIcon } from \"./Video\";\nimport type { IconComponent } from \"./types\";\n\nexport const icons = {\n arrowRight: ArrowRightIcon,\n bag: BagIcon,\n bell: BellIcon,\n building: BuildingIcon,\n calendar: CalendarIcon,\n calendarOutline: CalendarOutlineIcon,\n camera: CameraIcon,\n check: CheckIcon,\n checkBadge: CheckBadgeIcon,\n chevronDown: ChevronDownIcon,\n chevronLeft: ChevronLeftIcon,\n clock: ClockIcon,\n facebook: FacebookIcon,\n heart: HeartIcon,\n helpCircle: HelpCircleIcon,\n home: HomeIcon,\n instagram: InstagramIcon,\n key: KeyIcon,\n layoutGrid: LayoutGridIcon,\n linkedin: LinkedInIcon,\n logOut: LogOutIcon,\n mail: MailIcon,\n minus: MinusIcon,\n navigate: NavigateIcon,\n phone: PhoneIcon,\n plus: PlusIcon,\n search: SearchIcon,\n settings: SettingsIcon,\n show: ShowIcon,\n sidebar: SidebarIcon,\n user: UserIcon,\n usersAlt: UsersAltIcon,\n video: VideoIcon,\n} as const satisfies Record<string, IconComponent>;\n\nexport type IconName = keyof typeof icons;\n\nexport const iconNames = Object.keys(icons) as IconName[];\n\nexport const iconGroups = {\n navigation: [\"arrowRight\", \"chevronDown\", \"chevronLeft\", \"home\", \"navigate\"],\n actions: [\n \"show\",\n \"bell\",\n \"camera\",\n \"key\",\n \"check\",\n \"checkBadge\",\n \"search\",\n \"calendar\",\n \"calendarOutline\",\n \"heart\",\n \"minus\",\n \"plus\",\n ],\n objects: [\"bag\", \"building\", \"clock\", \"user\", \"usersAlt\", \"video\"],\n communication: [\"mail\", \"phone\"],\n social: [\"facebook\", \"instagram\", \"linkedin\"],\n interface: [\"layoutGrid\", \"sidebar\", \"settings\", \"helpCircle\", \"logOut\"],\n} as const satisfies Record<string, readonly IconName[]>;\n\nexport type IconGroup = keyof typeof iconGroups;\n\nexport const iconGroupNames = Object.keys(iconGroups) as IconGroup[];\n\nexport function getIconsByGroup(group: IconGroup): IconName[] {\n return [...iconGroups[group]];\n}\n","import { icons, type IconName } from \"./registry\";\nimport type { IconProps } from \"./types\";\n\nexport interface IconByNameProps extends IconProps {\n name: IconName;\n}\n\nexport function Icon({ name, ...props }: IconByNameProps) {\n const Component = icons[name];\n return <Component {...props} />;\n}\n","import type { ForwardedRef, MutableRefObject, RefCallback } from \"react\";\n\n/**\n * Combines a component's internal ref (used e.g. by `useApplyWebClassName`)\n * with an optional externally-forwarded ref, so consumers can still call\n * `.focus()`/`.measure()` on the underlying native node via `ref`.\n */\nexport function mergeRefs<T>(\n internalRef: MutableRefObject<T | null>,\n forwardedRef: ForwardedRef<T>,\n): RefCallback<T> {\n return (node) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n}\n","import { useLayoutEffect } from \"react\";\nimport { Platform } from \"react-native\";\n\ninterface ClassListElement {\n classList: {\n add: (...classes: string[]) => void;\n remove: (...classes: string[]) => void;\n };\n}\n\nfunction hasClassList(node: unknown): node is ClassListElement {\n return (\n typeof node === \"object\" &&\n node !== null &&\n \"classList\" in node &&\n typeof (node as ClassListElement).classList?.add === \"function\"\n );\n}\n\nfunction resolveWebElement(ref: React.RefObject<unknown>): ClassListElement | null {\n const node = ref.current;\n if (!node) return null;\n\n if (hasClassList(node)) return node;\n\n const host = node as {\n _touchableNode?: unknown;\n getScrollableNode?: () => unknown;\n };\n\n if (hasClassList(host._touchableNode)) return host._touchableNode;\n\n if (typeof host.getScrollableNode === \"function\") {\n const scrollNode = host.getScrollableNode();\n if (hasClassList(scrollNode)) return scrollNode;\n }\n\n return null;\n}\n\n/**\n * Applies CSS class names to the underlying DOM node on web.\n * Keeps TouchableOpacity/Text as the render path so default RN styles stay intact.\n *\n * Retries via rAF when the host node is not ready yet — otherwise classes like\n * `h-13` / `w-full` would only land after a later re-render (e.g. typing in a form),\n * which visibly changes button size.\n */\nexport function useApplyWebClassName(\n ref: React.RefObject<unknown>,\n className?: string,\n enabled = true,\n): void {\n useLayoutEffect(() => {\n if (!enabled || Platform.OS !== \"web\" || !className?.trim()) return;\n\n let cancelled = false;\n let rafId = 0;\n let appliedElement: ClassListElement | null = null;\n const classes = className.trim().split(/\\s+/);\n\n const apply = () => {\n if (cancelled) return;\n\n const element = resolveWebElement(ref);\n if (!element) {\n rafId = requestAnimationFrame(apply);\n return;\n }\n\n appliedElement = element;\n element.classList.add(...classes);\n };\n\n apply();\n\n return () => {\n cancelled = true;\n if (rafId) cancelAnimationFrame(rafId);\n appliedElement?.classList.remove(...classes);\n };\n }, [ref, className, enabled]);\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface MenuItemProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Leading icon, e.g. `<CalendarIcon size={16} />` — pass it pre-colored. */\n icon?: ReactNode;\n label: string;\n onPress?: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n /** Row background at rest. Defaults to transparent. */\n backgroundColor?: string;\n /** Row background on hover/press. Defaults to `colors.grey600`. */\n hoverColor?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 16;\n\nexport const MenuItem = forwardRef<ComponentRef<typeof Pressable>, MenuItemProps>(function MenuItem(\n {\n icon,\n label,\n onPress,\n disabled = false,\n backgroundColor,\n hoverColor,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n hitSlop = 4,\n onHoverIn,\n onHoverOut,\n onPressIn,\n onPressOut,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [hovered, setHovered] = useState(false);\n\n useApplyWebClassName(containerRef, className);\n\n const resolvedBackground = hovered\n ? (hoverColor ?? colors.grey600)\n : (backgroundColor ?? \"transparent\");\n const resolvedAccessibilityLabel = accessibilityLabel ?? label;\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={onPress}\n disabled={disabled}\n hitSlop={hitSlop}\n onHoverIn={(event) => {\n setHovered(true);\n onHoverIn?.(event);\n }}\n onHoverOut={(event) => {\n setHovered(false);\n onHoverOut?.(event);\n }}\n onPressIn={(event) => {\n setHovered(true);\n onPressIn?.(event);\n }}\n onPressOut={(event) => {\n setHovered(false);\n onPressOut?.(event);\n }}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[\n styles.root,\n { backgroundColor: resolvedBackground },\n disabled && styles.disabled,\n style,\n ]}\n >\n {icon ? <View style={styles.iconSlot}>{icon}</View> : null}\n <Text style={[styles.label, labelStyle]} numberOfLines={1}>\n {label}\n </Text>\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minHeight: 40,\n borderRadius: ITEM_RADIUS,\n paddingVertical: 12,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n alignSelf: \"stretch\",\n },\n disabled: {\n opacity: 0.5,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...avatarTypography.menuItem,\n color: colors.white,\n flex: 1,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Image,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, UserIcon } from \"../../icons\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { MenuItem, type MenuItemProps } from \"../../primitives\";\n\n/** Data shape for an Avatar dropdown option — same fields as `MenuItem`. */\nexport type AvatarMenuItem = Pick<\n MenuItemProps,\n \"icon\" | \"label\" | \"disabled\" | \"backgroundColor\" | \"hoverColor\"\n> & {\n /** Stable identity for React keys; falls back to `label`. */\n key?: string;\n onPress: () => void;\n};\n\nexport interface AvatarProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email?: string;\n /** Photo URL; falls back to a placeholder icon when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called on every press, in addition to any menu toggling driven by `menuItems`. */\n onPress?: (event: GestureResponderEvent) => void;\n /** External — non-interactive. */\n disabled?: boolean;\n /** Trailing chevron, typically used to hint a dropdown/menu. */\n showChevron?: boolean;\n /**\n * Account-menu options, supplied entirely by the consumer (icon, label,\n * action, and per-item colors). When set, pressing the chip opens a\n * dropdown listing them via `MenuItem`.\n */\n menuItems?: AvatarMenuItem[];\n /** Controlled open state for the menu. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Fixed menu width; defaults to matching the chip's width. */\n menuWidth?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst IMAGE_SIZE = 48;\nconst CONTAINER_RADIUS = 71;\nconst CHEVRON_SIZE = 20;\nconst FALLBACK_ICON_SIZE = 20;\nconst MENU_RADIUS = 16;\n\nexport const Avatar = forwardRef<ComponentRef<typeof View>, AvatarProps>(function Avatar(\n {\n name,\n email,\n imageUrl,\n onPress,\n disabled = false,\n showChevron = true,\n menuItems,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n menuWidth,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n\n const resolvedMenuItems = menuItems ?? [];\n const hasMenu = resolvedMenuItems.length > 0;\n const isInteractive = onPress != null || hasMenu;\n const isOpenControlled = typeof openProp === \"boolean\";\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = hasMenu && (isOpenControlled ? openProp : uncontrolledOpen);\n\n useApplyWebClassName(containerRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const focusTrigger = useCallback(() => {\n const node = containerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n const handlePress = (event: GestureResponderEvent) => {\n onPress?.(event);\n if (hasMenu) setOpen(!isOpen);\n };\n\n const handleItemPress = useCallback(\n (item: AvatarMenuItem) => {\n if (item.disabled) return;\n item.onPress();\n closeAndFocusTrigger();\n },\n [closeAndFocusTrigger],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n // Escape closes the menu and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const resolvedAccessibilityLabel = accessibilityLabel ?? [name, email].filter(Boolean).join(\", \");\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, isOpen && styles.wrapperOpen]}>\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled || !isInteractive}\n hitSlop={isInteractive ? hitSlop : undefined}\n accessibilityRole={isInteractive ? \"button\" : undefined}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={\n isInteractive ? { disabled, expanded: hasMenu ? isOpen : undefined } : undefined\n }\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View style={styles.imageWrap}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.image}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <View style={styles.imageFallback}>\n <UserIcon size={FALLBACK_ICON_SIZE} color={colors.primary} />\n </View>\n )}\n </View>\n\n <View style={styles.textColumn}>\n <Text style={styles.name} numberOfLines={1}>\n {name}\n </Text>\n {email ? (\n <Text style={styles.email} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n\n {showChevron ? (\n <View style={[styles.chevronSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={CHEVRON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n ) : null}\n </Pressable>\n\n {hasMenu && isOpen ? (\n <View style={[styles.menu, menuWidth != null && { right: undefined, width: menuWidth }]}>\n {resolvedMenuItems.map((item) => {\n const itemKey = item.key ?? item.label;\n return (\n <MenuItem\n key={itemKey}\n icon={item.icon}\n label={item.label}\n disabled={item.disabled}\n backgroundColor={item.backgroundColor}\n hoverColor={item.hoverColor}\n onPress={() => handleItemPress(item)}\n />\n );\n })}\n </View>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 12,\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n paddingRight: 12,\n borderRadius: CONTAINER_RADIUS,\n backgroundColor: colors.grey700,\n },\n disabled: {\n opacity: 0.6,\n },\n imageWrap: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE / 2,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n image: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n imageFallback: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: colors.grey600,\n },\n textColumn: {\n minWidth: 0,\n flexShrink: 1,\n gap: 3,\n },\n name: {\n ...avatarTypography.name,\n color: colors.white,\n },\n email: {\n ...avatarTypography.email,\n color: colors.grey0,\n },\n chevronSlot: {\n width: CHEVRON_SIZE,\n height: CHEVRON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 8,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { badgeTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type BadgeVariant = \"default\" | \"transparent\";\n\nexport interface BadgeProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n variant?: BadgeVariant;\n icon?: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 20;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10.3px)\",\n WebkitBackdropFilter: \"blur(10.3px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Variant chrome — icon color is part of the variant, not a separate prop.\n * - default: grey fill, no border, white icon\n * - transparent: muted white fill + 1px border, primary icon, blur on web\n */\nconst variantConfig = {\n default: {\n backgroundColor: colors.grey750,\n iconColor: colors.white,\n border: false,\n blur: false,\n },\n transparent: {\n backgroundColor: colors.whiteAlpha5,\n iconColor: colors.primary,\n border: true,\n blur: true,\n },\n} as const satisfies Record<\n BadgeVariant,\n { backgroundColor: string; iconColor: string; border: boolean; blur: boolean }\n>;\n\nexport const Badge = forwardRef<ComponentRef<typeof View>, BadgeProps>(function Badge(\n { label, variant = \"default\", icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const preset = variantConfig[variant];\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[\n styles.base,\n { backgroundColor: preset.backgroundColor },\n preset.border ? styles.transparentBorder : null,\n preset.blur ? webBlurStyle : null,\n style,\n ]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n {Icon ? (\n <View style={styles.iconSlot}>\n <Icon size={ICON_SIZE} color={preset.iconColor} />\n </View>\n ) : null}\n\n <Text style={[styles.label, Platform.OS === \"android\" ? styles.labelAndroid : null]}>\n {label}\n </Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n minHeight: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 12,\n borderRadius: 79,\n overflow: \"hidden\",\n borderWidth: 0,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n },\n transparentBorder: {\n borderWidth: 1,\n borderColor: colors.whiteAlpha5,\n borderStyle: \"solid\",\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...badgeTypography,\n color: colors.white,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { MinusIcon, PlusIcon } from \"../../icons\";\nimport { colors, counterTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface CounterProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BUTTON_SIZE = 32;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n } as ViewStyle)\n : {};\n\nfunction clamp(value: number, min: number, max?: number) {\n return Math.max(min, max === undefined ? value : Math.min(value, max));\n}\n\nexport const Counter = forwardRef<ComponentRef<typeof View>, CounterProps>(function Counter(\n {\n value,\n defaultValue,\n onValueChange,\n min = 1,\n max,\n step = 1,\n disabled = false,\n style,\n className,\n hitSlop,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n clamp(defaultValue ?? min, min, max),\n );\n const resolvedValue = clamp(isControlled ? value : uncontrolledValue, min, max);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const decrementDisabled = disabled || resolvedValue <= min;\n const incrementDisabled = disabled || (max !== undefined && resolvedValue >= max);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n const updateValue = (nextValue: number) => {\n const next = clamp(nextValue, min, max);\n if (next === resolvedValue) return;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.base, style]}>\n <Pressable\n disabled={decrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue - step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Decrease value\"\n accessibilityState={{ disabled: decrementDisabled }}\n style={[styles.button, webBlurStyle, decrementDisabled && styles.buttonDisabled]}\n >\n <MinusIcon />\n </Pressable>\n\n <Text style={styles.value}>{resolvedValue}</Text>\n\n <Pressable\n disabled={incrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue + step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Increase value\"\n accessibilityState={{ disabled: incrementDisabled }}\n style={[styles.button, webBlurStyle, incrementDisabled && styles.buttonDisabled]}\n >\n <PlusIcon />\n </Pressable>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 17,\n },\n button: {\n width: BUTTON_SIZE,\n height: BUTTON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n borderRadius: 39,\n },\n buttonDisabled: {\n opacity: 0.25,\n },\n value: {\n ...counterTypography,\n color: colors.white,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, segmentedToggleTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface SegmentedToggleOption {\n value: string;\n label: string;\n icon?: IconComponent;\n}\n\nexport interface SegmentedToggleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n options: readonly [SegmentedToggleOption, SegmentedToggleOption];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n fullWidth?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 20;\nconst ANIMATION_DURATION = 200;\n\nexport const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedToggleProps>(\n function SegmentedToggle(\n {\n options,\n value,\n defaultValue = options[0].value,\n onValueChange,\n fullWidth = true,\n disabled = false,\n style,\n className,\n hitSlop,\n onLayout,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const selectedValue = isControlled ? value : uncontrolledValue;\n const selectedIndex = Math.max(\n 0,\n options.findIndex(({ value: optionValue }) => optionValue === selectedValue),\n );\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const progress = useRef(new Animated.Value(selectedIndex)).current;\n const [contentWidths, setContentWidths] = useState<[number, number]>([0, 0]);\n const [containerWidth, setContainerWidth] = useState(0);\n const availableOptionWidth = Math.max(0, (containerWidth - 12) / 2);\n const widestContentWidth = Math.max(...contentWidths);\n const contentBasedOptionWidth = widestContentWidth > 0 ? widestContentWidth + 24 * 2 : 0;\n const optionWidth = fullWidth ? availableOptionWidth : contentBasedOptionWidth;\n const indicatorTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, optionWidth + 4],\n });\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n useEffect(() => {\n const animation = Animated.timing(progress, {\n toValue: selectedIndex,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.cubic),\n useNativeDriver: true,\n });\n\n animation.start();\n return () => animation.stop();\n }, [progress, selectedIndex]);\n\n const selectOption = (nextValue: string) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContainerWidth((currentWidth) =>\n currentWidth === nextWidth ? currentWidth : nextWidth,\n );\n onLayout?.(event);\n }}\n style={[\n styles.base,\n fullWidth ? styles.fullWidth : styles.contentWidth,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityRole=\"radiogroup\"\n >\n {optionWidth > 0 ? (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.activeIndicator,\n { width: optionWidth, transform: [{ translateX: indicatorTranslateX }] },\n ]}\n />\n ) : null}\n {options.map(({ value: optionValue, label, icon: Icon }, index) => {\n const selected = optionValue === selectedValue;\n const iconColor = selected ? colors.primary : colors.whiteAlpha20;\n const labelColor = selected ? colors.whiteAlpha86 : colors.whiteAlpha40;\n\n return (\n <Pressable\n key={optionValue}\n onPress={() => selectOption(optionValue)}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"radio\"\n accessibilityLabel={label}\n accessibilityState={{ selected, disabled }}\n style={[\n styles.option,\n fullWidth ? styles.optionFullWidth : optionWidth > 0 && { minWidth: optionWidth },\n ]}\n >\n <View\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContentWidths((currentWidths) => {\n if (currentWidths[index] === nextWidth) return currentWidths;\n const nextWidths: [number, number] = [currentWidths[0], currentWidths[1]];\n nextWidths[index] = nextWidth;\n return nextWidths;\n });\n }}\n style={styles.optionContent}\n >\n {Icon ? <Icon size={ICON_SIZE} color={iconColor} /> : null}\n <Text numberOfLines={1} style={[styles.label, { color: labelColor }]}>\n {label}\n </Text>\n </View>\n </Pressable>\n );\n })}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n flexDirection: \"row\",\n padding: 4,\n gap: 4,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n overflow: \"hidden\",\n },\n fullWidth: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n contentWidth: {\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n option: {\n zIndex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingHorizontal: 24,\n borderRadius: 60,\n },\n optionContent: {\n maxWidth: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 12,\n },\n optionFullWidth: {\n flex: 1,\n minWidth: 0,\n },\n activeIndicator: {\n position: \"absolute\",\n top: 4,\n left: 4,\n height: 36,\n backgroundColor: colors.grey600,\n borderRadius: 60,\n },\n label: {\n ...segmentedToggleTypography,\n flexShrink: 1,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, statCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface StatCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n icon: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 28;\n\nexport const StatCard = forwardRef<ComponentRef<typeof View>, StatCardProps>(function StatCard(\n { label, icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.base, style]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n <Icon size={ICON_SIZE} color={colors.white} />\n <Text style={styles.label}>{label}</Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n width: 204.5,\n minHeight: 114,\n padding: 24,\n gap: 16,\n borderRadius: 20,\n backgroundColor: colors.grey750,\n },\n label: {\n ...statCardTypography,\n color: colors.whiteAlpha86,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type TouchableOpacityProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ArrowRightIcon } from \"../../icons\";\nimport { buttonTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps extends Omit<\n TouchableOpacityProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\"\n> {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n icon?: ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n className?: string;\n textClassName?: string;\n}\n\ntype VariantStyleSet = {\n backgroundColor: string;\n textColor: string;\n iconBadgeBackgroundColor: string;\n iconColor: string;\n};\n\nconst variantConfig: Record<ButtonVariant, VariantStyleSet> = {\n primary: {\n backgroundColor: colors.primary,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.primary,\n },\n secondary: {\n backgroundColor: colors.grey500,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.grey600,\n iconColor: colors.white,\n },\n};\n\nconst sizeConfig = {\n lg: {\n minHeight: 44,\n borderRadius: 40,\n paddingVertical: 4,\n paddingLeft: 20,\n paddingRightWithIcon: 4,\n paddingRight: 20,\n gap: 20,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconSize: 20,\n },\n sm: {\n minHeight: 32,\n borderRadius: 40,\n paddingVertical: 6,\n paddingLeft: 12,\n paddingRightWithIcon: 4,\n paddingRight: 12,\n gap: 12,\n text: buttonTypography.sm,\n iconContainerSize: 20,\n iconSize: 12,\n },\n} as const satisfies Record<ButtonSize, Record<string, unknown>>;\n\nexport const Button = forwardRef<ComponentRef<typeof TouchableOpacity>, ButtonProps>(\n function Button(\n {\n title,\n children,\n onPress,\n disabled = false,\n variant = \"primary\",\n size = \"lg\",\n showIcon = false,\n icon,\n style,\n textStyle,\n className,\n textClassName,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const textRef = useRef<ComponentRef<typeof Text>>(null);\n const preset = variantConfig[variant];\n const metrics = sizeConfig[size];\n\n const label = typeof children !== \"undefined\" ? children : title;\n const hasCustomChildren = typeof children !== \"undefined\";\n const customIcon = icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = className?.trim() || undefined;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedContainerClassName);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode = customIcon ?? (\n <ArrowRightIcon size={metrics.iconSize} color={preset.iconColor} />\n );\n\n const containerStyle = [\n styles.base,\n {\n minHeight: metrics.minHeight,\n borderRadius: metrics.borderRadius,\n backgroundColor: preset.backgroundColor,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingLeft,\n paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,\n gap: hasIcon ? metrics.gap : 0,\n },\n disabled && styles.disabled,\n style,\n ];\n\n const labelStyle = [\n styles.label,\n metrics.text,\n { color: preset.textColor },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n !hasIcon && styles.labelCentered,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n {...rest}\n ref={setContainerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n >\n {hasCustomChildren ? (\n children\n ) : (\n <Text ref={textRef} style={labelStyle}>\n {label}\n </Text>\n )}\n\n {hasIcon ? (\n <View\n style={[\n styles.iconContainer,\n {\n width: metrics.iconContainerSize,\n height: metrics.iconContainerSize,\n borderRadius: metrics.iconContainerSize / 2,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n borderWidth: 0,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CheckIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type CheckboxVariant = \"default\" | \"light\";\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n variant?: CheckboxVariant;\n label?: string;\n children?: ReactNode;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BOX_SIZE = 20;\nconst BOX_RADIUS = 6;\nconst CHECK_SIZE = 12;\nconst CHECK_STROKE = 2.5;\n\nconst variantChrome: Record<CheckboxVariant, { backgroundColor: string; borderColor: string }> = {\n default: {\n backgroundColor: colors.dark,\n borderColor: colors.grey700,\n },\n light: {\n backgroundColor: colors.grey700,\n borderColor: colors.grey500,\n },\n};\n\nexport const Checkbox = forwardRef<ComponentRef<typeof Pressable>, CheckboxProps>(function Checkbox(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n variant = \"default\",\n label,\n children,\n style,\n labelStyle,\n className,\n hitSlop = 8,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n\n const chrome = variantChrome[variant];\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, className);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"checkbox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View\n style={[\n styles.box,\n {\n backgroundColor: chrome.backgroundColor,\n borderColor: chrome.borderColor,\n },\n ]}\n >\n {isActive ? (\n <CheckIcon size={CHECK_SIZE} color={colors.primary} strokeWidth={CHECK_STROKE} />\n ) : null}\n </View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n box: {\n width: BOX_SIZE,\n height: BOX_SIZE,\n borderRadius: BOX_RADIUS,\n borderWidth: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","/**\n * Small, dependency-free date helpers for the DatePicker component. These only\n * ever operate on local calendar days (time-of-day is ignored/zeroed) so\n * comparisons stay simple and predictable across the whole component.\n */\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (a == null || b == null) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function isWithinRange(date: Date, start: Date, end: Date): boolean {\n const time = startOfDay(date).getTime();\n return time >= startOfDay(start).getTime() && time <= startOfDay(end).getTime();\n}\n\nexport function clampDate(date: Date, min?: Date | null, max?: Date | null): Date {\n if (min && isBefore(date, min)) return startOfDay(min);\n if (max && isAfter(date, max)) return startOfDay(max);\n return startOfDay(date);\n}\n\nexport function isDateDisabled(date: Date, min?: Date | null, max?: Date | null): boolean {\n if (min && isBefore(date, min)) return true;\n if (max && isAfter(date, max)) return true;\n return false;\n}\n\n/** Zero-padded \"DD.MM.YYYY\" — matches the Figma reference formatting. */\nexport function formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Builds a 6×7 grid of calendar days for the month containing `monthDate`,\n * including the leading/trailing days from adjacent months needed to fill\n * whole weeks. `weekStartsOn` follows the JS `Date#getDay()` convention\n * (0 = Sunday, 1 = Monday, ...).\n */\nexport function getMonthMatrix(monthDate: Date, weekStartsOn: 0 | 1 = 1): Date[][] {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n\n const firstWeekday = firstOfMonth.getDay();\n const leadingDays = (firstWeekday - weekStartsOn + 7) % 7;\n const gridStart = new Date(year, month, 1 - leadingDays);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n for (let week = 0; week < 6; week += 1) {\n const days: Date[] = [];\n for (let day = 0; day < 7; day += 1) {\n days.push(cursor);\n cursor = new Date(cursor.getFullYear(), cursor.getMonth(), cursor.getDate() + 1);\n }\n weeks.push(days);\n }\n return weeks;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarOutlineIcon, ChevronLeftIcon } from \"../../icons\";\nimport { colors, datePickerTypography } from \"../../theme\";\nimport {\n addMonths,\n formatDate,\n getMonthMatrix,\n isBefore,\n isDateDisabled,\n isSameDay,\n isSameMonth,\n isWithinRange,\n startOfDay,\n} from \"../../utils/dateUtils\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\n/** Monday-first — override via `monthNames` for other locales. */\nconst DEFAULT_MONTH_NAMES = [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n];\n/** Monday-first — override via `weekdayLabels` for other locales. */\nconst DEFAULT_WEEKDAY_LABELS = [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"];\n\nexport type DateRange = { start: Date | null; end: Date | null };\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\ntype DatePickerBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n placeholder?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n /**\n * When true (default), the calendar closes after a complete selection —\n * a single date, or both ends of a range. Set false to keep it open.\n */\n closeOnSelect?: boolean;\n minDate?: Date;\n maxDate?: Date;\n /** First visible month when the calendar opens; defaults to the selected value's month, else today. */\n defaultVisibleMonth?: Date;\n /** Monday-first full month names. Defaults to Armenian. */\n monthNames?: string[];\n /** Weekday abbreviations, ordered starting from `weekStartsOn`. Defaults to Armenian, Monday-first. */\n weekdayLabels?: string[];\n /** Formats a selected date for the trigger and day accessibility labels. Defaults to \"DD.MM.YYYY\". */\n formatValue?: (date: Date) => string;\n /** First day of the week column (0 = Sunday, 1 = Monday). Defaults to Monday. */\n weekStartsOn?: 0 | 1;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type DatePickerSingleProps = DatePickerBaseProps & {\n range?: false;\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n};\n\nexport type DatePickerRangeProps = DatePickerBaseProps & {\n range: true;\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n};\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nconst DEFAULT_WIDTH = 380;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 20;\nconst ICON_SIZE = 20;\nconst NAV_ICON_SIZE = 20;\nconst DAY_CELL_HEIGHT = 44;\nconst DAY_CIRCLE_SIZE = 44;\n\nexport const DatePicker = forwardRef<ComponentRef<typeof View>, DatePickerProps>(\n function DatePicker(props, forwardedRef) {\n const {\n placeholder = \"Select date\",\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n closeOnSelect = true,\n minDate,\n maxDate,\n defaultVisibleMonth,\n monthNames = DEFAULT_MONTH_NAMES,\n weekdayLabels = DEFAULT_WEEKDAY_LABELS,\n formatValue = formatDate,\n weekStartsOn = 1,\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n range: _range,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const isRange = props.range === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState<Date | null>(\n !isRange ? ((props as DatePickerSingleProps).defaultValue ?? null) : null,\n );\n const [uncontrolledRange, setUncontrolledRange] = useState<DateRange>(\n isRange ? ((props as DatePickerRangeProps).defaultValue ?? EMPTY_RANGE) : EMPTY_RANGE,\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [hoveredDayKey, setHoveredDayKey] = useState<number | null>(null);\n\n const rangeValue: DateRange = isRange\n ? isValueControlled\n ? ((valueProp as DateRange) ?? EMPTY_RANGE)\n : uncontrolledRange\n : EMPTY_RANGE;\n const singleValue: Date | null = !isRange\n ? isValueControlled\n ? ((valueProp as Date | null) ?? null)\n : uncontrolledSingle\n : null;\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n const [visibleMonth, setVisibleMonth] = useState(() => {\n const anchor =\n defaultVisibleMonth ?? (isRange ? rangeValue.start : singleValue) ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth(), 1);\n });\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n const anchor = (isRange ? rangeValue.start : singleValue) ?? new Date();\n setVisibleMonth(new Date(anchor.getFullYear(), anchor.getMonth(), 1));\n } else {\n setHoveredDayKey(null);\n }\n },\n [isOpenControlled, isRange, onOpenChange, rangeValue.start, singleValue],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // Escape closes the calendar and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleDayPress = useCallback(\n (day: Date) => {\n if (disabled || isDateDisabled(day, minDate, maxDate)) return;\n const picked = startOfDay(day);\n\n if (!isRange) {\n if (!isValueControlled) setUncontrolledSingle(picked);\n (props as DatePickerSingleProps).onValueChange?.(picked);\n if (closeOnSelect) setOpen(false);\n return;\n }\n\n const { start, end } = rangeValue;\n const startingNewRange = !start || (start && end);\n const nextRange: DateRange = startingNewRange\n ? { start: picked, end: null }\n : isBefore(picked, start)\n ? { start: picked, end: null }\n : { start, end: picked };\n\n if (!isValueControlled) setUncontrolledRange(nextRange);\n (props as DatePickerRangeProps).onValueChange?.(nextRange);\n if (closeOnSelect && nextRange.start && nextRange.end) setOpen(false);\n },\n [\n closeOnSelect,\n disabled,\n isRange,\n isValueControlled,\n maxDate,\n minDate,\n props,\n rangeValue,\n setOpen,\n ],\n );\n\n const handlePrevMonth = () => setVisibleMonth((current) => addMonths(current, -1));\n const handleNextMonth = () => setVisibleMonth((current) => addMonths(current, 1));\n\n const weeks = useMemo(\n () => getMonthMatrix(visibleMonth, weekStartsOn),\n [visibleMonth, weekStartsOn],\n );\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const hasValue = isRange ? rangeValue.start != null : singleValue != null;\n const triggerLabel = isRange\n ? rangeValue.start && rangeValue.end\n ? `${formatValue(rangeValue.start)} - ${formatValue(rangeValue.end)}`\n : rangeValue.start\n ? `${formatValue(rangeValue.start)} - ...`\n : placeholder\n : singleValue\n ? formatValue(singleValue)\n : placeholder;\n\n const triggerBorderColor = isOpen ? colors.primaryMuted : colors.grey700;\n const triggerTextColor = hasValue ? colors.white : colors.grey100;\n\n const resolvedAccessibilityLabel = accessibilityLabel ?? placeholder;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n { borderColor: triggerBorderColor, backgroundColor: colors.grey700 },\n ]}\n >\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {triggerLabel}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarOutlineIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n <View style={styles.calendarHeader}>\n <Pressable\n onPress={handlePrevMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Previous month\"\n style={styles.navButton}\n >\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </Pressable>\n\n <Text style={styles.monthHeading}>\n {monthNames[visibleMonth.getMonth()]} {visibleMonth.getFullYear()}\n </Text>\n\n <Pressable\n onPress={handleNextMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Next month\"\n style={styles.navButton}\n >\n <View style={styles.navIconMirror}>\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </View>\n </Pressable>\n </View>\n\n <View>\n <View style={styles.weekdayRow}>\n {weekdayLabels.map((weekdayLabel, index) => (\n <View key={`${weekdayLabel}-${index}`} style={styles.dayCellWrap}>\n <Text style={styles.weekdayText}>{weekdayLabel}</Text>\n </View>\n ))}\n </View>\n\n {weeks.map((week, weekIndex) => {\n let rangeHighlightStyle: { left: `${number}%`; width: `${number}%` } | null =\n null;\n\n if (isRange && rangeValue.start && rangeValue.end) {\n const rangeIndices = week.reduce<number[]>((acc, day, index) => {\n if (isWithinRange(day, rangeValue.start as Date, rangeValue.end as Date)) {\n acc.push(index);\n }\n return acc;\n }, []);\n\n if (rangeIndices.length > 0) {\n const first = rangeIndices[0];\n const last = rangeIndices[rangeIndices.length - 1];\n const startsHere = isSameDay(week[first], rangeValue.start);\n const endsHere = isSameDay(week[last], rangeValue.end);\n // Half a cell so the bar meets the circle center, not past it.\n const cellPct = 100 / 7;\n const halfCellPct = cellPct / 2;\n let leftPct = first * cellPct;\n let widthPct = (last - first + 1) * cellPct;\n if (startsHere) {\n leftPct += halfCellPct;\n widthPct -= halfCellPct;\n }\n if (endsHere) {\n widthPct -= halfCellPct;\n }\n // Same-day range: only the circle, no connector bar.\n if (widthPct > 0) {\n rangeHighlightStyle = {\n left: `${leftPct}%`,\n width: `${widthPct}%`,\n };\n }\n }\n }\n\n return (\n <View\n key={weekIndex}\n style={[styles.weekRow, weekIndex > 0 && styles.weekRowSpaced]}\n >\n {rangeHighlightStyle ? (\n <View\n pointerEvents=\"none\"\n style={[styles.rangeHighlight, rangeHighlightStyle]}\n />\n ) : null}\n\n {week.map((day, dayIndex) => {\n const inCurrentMonth = isSameMonth(day, visibleMonth);\n const isToday = isSameDay(day, today);\n const isSelectedSingle = !isRange && isSameDay(day, singleValue);\n const isRangeStart = isRange && isSameDay(day, rangeValue.start);\n const isRangeEnd = isRange && isSameDay(day, rangeValue.end);\n const isSelectedEndpoint = isSelectedSingle || isRangeStart || isRangeEnd;\n const dayDisabled = disabled || isDateDisabled(day, minDate, maxDate);\n const dayKey = startOfDay(day).getTime();\n const isHovered =\n !dayDisabled && !isSelectedEndpoint && hoveredDayKey === dayKey;\n\n const dayTextColor = isSelectedEndpoint\n ? colors.white\n : dayDisabled\n ? colors.grey400\n : isToday\n ? colors.primary\n : !inCurrentMonth\n ? colors.grey300\n : colors.white;\n\n return (\n <Pressable\n key={dayIndex}\n onPress={() => handleDayPress(day)}\n disabled={dayDisabled}\n onHoverIn={() => setHoveredDayKey(dayKey)}\n onHoverOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n onPressIn={() => setHoveredDayKey(dayKey)}\n onPressOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n style={styles.dayCellWrap}\n accessibilityRole=\"button\"\n accessibilityLabel={formatValue(day)}\n accessibilityState={{\n disabled: dayDisabled,\n selected: isSelectedEndpoint,\n }}\n >\n <View\n style={[\n styles.dayCircle,\n isSelectedEndpoint && styles.dayCircleSelected,\n isHovered && styles.dayCircleHovered,\n ]}\n >\n <Text style={[styles.dayText, { color: dayTextColor }]}>\n {day.getDate()}\n </Text>\n </View>\n {isToday && !isSelectedEndpoint ? (\n <View style={styles.todayDot} />\n ) : null}\n </Pressable>\n );\n })}\n </View>\n );\n })}\n </View>\n </View>\n ) : null}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerText: {\n ...datePickerTypography.field,\n flex: 1,\n minWidth: 0,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 0,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n calendarHeader: {\n height: 36,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n navButton: {\n width: 36,\n height: 36,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n navIconMirror: {\n transform: [{ scaleX: -1 }],\n },\n monthHeading: {\n ...datePickerTypography.monthHeading,\n color: colors.white,\n textAlign: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n },\n weekdayText: {\n ...datePickerTypography.weekday,\n color: colors.grey300,\n textAlign: \"center\",\n textTransform: \"uppercase\",\n },\n weekRow: {\n flexDirection: \"row\",\n position: \"relative\",\n },\n weekRowSpaced: {\n marginTop: 8,\n },\n rangeHighlight: {\n position: \"absolute\",\n top: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n bottom: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n backgroundColor: colors.primaryHover,\n },\n dayCellWrap: {\n flex: 1,\n height: DAY_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircle: {\n width: DAY_CIRCLE_SIZE,\n height: DAY_CIRCLE_SIZE,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircleSelected: {\n backgroundColor: colors.primary,\n },\n dayCircleHovered: {\n backgroundColor: colors.grey600,\n },\n dayText: {\n ...datePickerTypography.day,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 2,\n width: 4,\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { ShowIcon } from \"../../icons\";\nimport { UserIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type InputSize = \"lg\" | \"sm\";\n\nexport interface InputProps extends Omit<TextInputProps, \"style\" | \"editable\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n size?: InputSize;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n leftIcon?: ReactNode;\n showLeftIcon?: boolean;\n rightIcon?: ReactNode;\n showRightIcon?: boolean;\n onRightIconPress?: () => void;\n /** Accessible name for the right icon button, when `onRightIconPress` is set. */\n rightIconAccessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n leftIconColor: string;\n rightIconColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\n\nconst sizeConfig = {\n lg: {\n height: 44,\n borderRadius: 60,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 10,\n iconSize: 20,\n text: inputTypography.field,\n },\n sm: {\n height: 32,\n borderRadius: 60,\n paddingVertical: 6,\n paddingHorizontal: 12,\n gap: 8,\n iconSize: 16,\n text: inputTypography.hint,\n },\n} as const satisfies Record<InputSize, Record<string, unknown>>;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n leftIconColor: colors.grey100,\n rightIconColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n leftIconColor: colors.primary,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n leftIconColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.grey0,\n leftIconColor: colors.grey0,\n rightIconColor: colors.grey0,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n default:\n return base;\n }\n}\n\nexport const Input = forwardRef<ComponentRef<typeof TextInput>, InputProps>(function Input(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n size = \"lg\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n leftIcon,\n showLeftIcon = false,\n rightIcon,\n showRightIcon = false,\n onRightIconPress,\n rightIconAccessibilityLabel,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n const metrics = sizeConfig[size];\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n const hasRightIcon = showRightIcon || rightIcon != null;\n\n const leftIconNode = leftIcon ?? (\n <UserIcon size={metrics.iconSize} color={chrome.leftIconColor} />\n );\n const rightIconNode = rightIcon ?? (\n <ShowIcon size={metrics.iconSize} color={chrome.rightIconColor} />\n );\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n height: metrics.height,\n borderRadius: metrics.borderRadius,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingHorizontal,\n paddingRight: metrics.paddingHorizontal,\n gap: metrics.gap,\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n {hasLeftIcon ? (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {leftIconNode}\n </View>\n ) : null}\n\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n metrics.text,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n\n {hasRightIcon ? (\n onRightIconPress ? (\n <TouchableOpacity\n onPress={onRightIconPress}\n disabled={disabled}\n style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}\n accessibilityRole=\"button\"\n accessibilityLabel={rightIconAccessibilityLabel}\n hitSlop={8}\n >\n {rightIconNode}\n </TouchableOpacity>\n ) : (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {rightIconNode}\n </View>\n )\n ) : null}\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...inputTypography.label,\n },\n field: {\n borderWidth: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n iconSlot: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n hint: {\n ...inputTypography.hint,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n View,\n type LayoutChangeEvent,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { Checkbox } from \"../Checkbox\";\nimport { ChevronDownIcon, SearchIcon, UserIcon } from \"../../icons\";\nimport { colors, selectTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type SelectOption = {\n label: string;\n value: string;\n};\n\ntype SelectBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n placeholder?: string;\n options: SelectOption[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n error?: boolean;\n leftIcon?: ReactNode;\n showLeftIcon?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n /**\n * Called with the raw query on every keystroke. When provided, the parent owns\n * filtering (e.g. server search) and the options prop is rendered as-is;\n * when omitted, options are filtered locally by label.\n */\n onSearchChange?: (query: string) => void;\n /** Shows a loading row in the menu while the parent fetches options. */\n loading?: boolean;\n /** Text shown when no options match. */\n emptyText?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst DEFAULT_WIDTH = 308;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 24;\nconst MENU_MAX_LIST_HEIGHT = 248;\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 20;\nconst CHIP_GAP = 6;\nconst FALLBACK_ELLIPSIS_WIDTH = 20;\n\ntype ItemVisualState = \"default\" | \"hover\" | \"selected\";\n\nfunction itemBackground(state: ItemVisualState): string {\n switch (state) {\n case \"hover\":\n return colors.grey600;\n case \"selected\":\n return colors.primaryMuted;\n default:\n return \"transparent\";\n }\n}\n\nfunction toArray(value: string | string[] | undefined): string[] {\n if (value == null || value === \"\") return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction resolveVisibleOptions(\n options: SelectOption[],\n containerWidth: number,\n chipWidths: Record<string, number>,\n ellipsisWidth: number,\n): { visible: SelectOption[]; hasOverflow: boolean } {\n if (options.length === 0) return { visible: [], hasOverflow: false };\n if (containerWidth <= 0) return { visible: options.slice(0, 1), hasOverflow: options.length > 1 };\n\n const visible: SelectOption[] = [];\n let used = 0;\n\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const chipWidth = chipWidths[option.value];\n if (chipWidth == null) {\n if (visible.length === 0) visible.push(option);\n break;\n }\n\n const remainingAfter = options.length - index - 1;\n const gap = visible.length > 0 ? CHIP_GAP : 0;\n const reserve = remainingAfter > 0 ? CHIP_GAP + ellipsisWidth : 0;\n const nextUsed = used + gap + chipWidth;\n\n if (visible.length > 0 && nextUsed + reserve > containerWidth) {\n return { visible, hasOverflow: true };\n }\n\n visible.push(option);\n used = nextUsed;\n }\n\n return { visible, hasOverflow: visible.length < options.length };\n}\n\ntype MultiValueChipsProps = {\n options: SelectOption[];\n disabled?: boolean;\n onRemove: (value: string) => void;\n};\n\nfunction MultiValueChips({ options, disabled, onRemove }: MultiValueChipsProps) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [chipWidths, setChipWidths] = useState<Record<string, number>>({});\n const [ellipsisWidth, setEllipsisWidth] = useState(FALLBACK_ELLIPSIS_WIDTH);\n\n useEffect(() => {\n setChipWidths((current) => {\n const validValues = new Set(options.map((option) => option.value));\n const keys = Object.keys(current);\n if (keys.every((key) => validValues.has(key))) return current;\n\n const next: Record<string, number> = {};\n for (const key of keys) {\n if (validValues.has(key)) next[key] = current[key];\n }\n return next;\n });\n }, [options]);\n\n const { visible, hasOverflow } = useMemo(\n () => resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth),\n [chipWidths, containerWidth, ellipsisWidth, options],\n );\n\n const handleContainerLayout = (event: LayoutChangeEvent) => {\n const next = Math.floor(event.nativeEvent.layout.width);\n setContainerWidth((current) => (current === next ? current : next));\n };\n\n const handleChipLayout = (value: string, event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setChipWidths((current) => (current[value] === next ? current : { ...current, [value]: next }));\n };\n\n const handleEllipsisLayout = (event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setEllipsisWidth((current) => (current === next ? current : next));\n };\n\n return (\n <View style={styles.multiValueRoot}>\n {/* Hidden copy of every chip; RN has no synchronous text measurement. */}\n <View pointerEvents=\"none\" style={styles.measureRow}>\n {options.map((option) => (\n <View\n key={`measure-${option.value}`}\n style={styles.chip}\n onLayout={(event) => handleChipLayout(option.value, event)}\n >\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Text style={styles.chipRemove}>×</Text>\n </View>\n ))}\n <View style={styles.ellipsis} onLayout={handleEllipsisLayout}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n </View>\n\n <View style={styles.chipsRow} onLayout={handleContainerLayout}>\n {visible.map((option) => (\n <View key={option.value} style={styles.chip}>\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Pressable\n onPress={(event) => {\n // Keep the surrounding trigger Pressable from toggling the menu.\n event?.stopPropagation?.();\n onRemove(option.value);\n }}\n disabled={disabled}\n hitSlop={6}\n accessibilityRole=\"button\"\n accessibilityLabel={`Remove ${option.label}`}\n >\n <Text style={styles.chipRemove}>×</Text>\n </Pressable>\n </View>\n ))}\n\n {hasOverflow ? (\n <View style={styles.ellipsis}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const Select = forwardRef<ComponentRef<typeof View>, SelectProps>(\n function Select(props, forwardedRef) {\n const {\n label = \"Label\",\n showLabel = true,\n hint,\n showHint = false,\n placeholder = \"placeholder\",\n options,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n leftIcon,\n showLeftIcon = true,\n showSearch = true,\n searchPlaceholder = \"Search...\",\n onSearchChange,\n loading = false,\n emptyText = \"No results\",\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n multiple: _multiple,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const multiple = props.multiple === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const searchInputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState(\n !multiple ? ((props as SelectSingleProps).defaultValue ?? \"\") : \"\",\n );\n const [uncontrolledMultiple, setUncontrolledMultiple] = useState<string[]>(\n multiple ? ((props as SelectMultipleProps).defaultValue ?? []) : [],\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n\n const selectedValues = useMemo(() => {\n const current = isValueControlled\n ? valueProp\n : multiple\n ? uncontrolledMultiple\n : uncontrolledSingle;\n return toArray(current);\n }, [isValueControlled, multiple, valueProp, uncontrolledMultiple, uncontrolledSingle]);\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n // Mapped from selectedValues (not filtered from options) to preserve selection order.\n const selectedOptions = useMemo(\n () =>\n selectedValues\n .map((value) => options.find((option) => option.value === value))\n .filter((option): option is SelectOption => option != null),\n [options, selectedValues],\n );\n const hasValue = selectedOptions.length > 0;\n\n const isExternalSearch = onSearchChange != null;\n\n const filteredOptions = useMemo(() => {\n if (isExternalSearch) return options;\n const query = searchQuery.trim().toLowerCase();\n if (!query) return options;\n return options.filter((option) => option.label.toLowerCase().includes(query));\n }, [isExternalSearch, options, searchQuery]);\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n // Seed keyboard highlight from the current selection so Arrow keys\n // start from a sensible position.\n setHoveredValue(selectedValues[0] ?? null);\n } else {\n setSearchQuery(\"\");\n setHoveredValue(null);\n // Let the parent reset its externally fetched options.\n onSearchChange?.(\"\");\n }\n },\n [isOpenControlled, onOpenChange, onSearchChange, selectedValues],\n );\n\n const handleSearchChange = (text: string) => {\n setSearchQuery(text);\n onSearchChange?.(text);\n };\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const commitValues = useCallback(\n (nextValues: string[]) => {\n if (multiple) {\n if (!isValueControlled) setUncontrolledMultiple(nextValues);\n (props as SelectMultipleProps).onValueChange?.(nextValues);\n return;\n }\n\n const nextValue = nextValues[0] ?? \"\";\n if (!isValueControlled) setUncontrolledSingle(nextValue);\n (props as SelectSingleProps).onValueChange?.(nextValue);\n },\n [isValueControlled, multiple, props],\n );\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleSelect = useCallback(\n (optionValue: string) => {\n if (disabled) return;\n if (multiple) {\n const exists = selectedValues.includes(optionValue);\n const nextValues = exists\n ? selectedValues.filter((value) => value !== optionValue)\n : [...selectedValues, optionValue];\n commitValues(nextValues);\n return;\n }\n\n commitValues([optionValue]);\n setOpen(false);\n },\n [commitValues, disabled, multiple, selectedValues, setOpen],\n );\n\n const handleRemoveChip = (optionValue: string) => {\n if (disabled || !multiple) return;\n commitValues(selectedValues.filter((value) => value !== optionValue));\n };\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // ARIA combobox keyboard pattern (web only): Arrow keys move the highlighted\n // option, Enter/Space selects it, Escape closes and returns focus to the trigger.\n useEffect(() => {\n if (Platform.OS !== \"web\") return;\n\n const isTriggerFocused = () => document.activeElement === triggerRef.current;\n const isSearchFocused = () => document.activeElement === searchInputRef.current;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isOpen) {\n if (!isTriggerFocused() || disabled) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Enter\") {\n event.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setHoveredValue((current) => {\n if (filteredOptions.length === 0) return current;\n const currentIndex = filteredOptions.findIndex((option) => option.value === current);\n const delta = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n currentIndex === -1\n ? delta === 1\n ? 0\n : filteredOptions.length - 1\n : Math.min(Math.max(currentIndex + delta, 0), filteredOptions.length - 1);\n return filteredOptions[nextIndex]?.value ?? current;\n });\n return;\n }\n\n // Home/End and Space are left alone while typing in the search field\n // (text-cursor navigation and literal spaces must keep working).\n if (\n isSearchFocused() &&\n (event.key === \"Home\" || event.key === \"End\" || event.key === \" \")\n ) {\n return;\n }\n\n if (event.key === \"Home\" || event.key === \"End\") {\n if (filteredOptions.length === 0) return;\n event.preventDefault();\n setHoveredValue(\n event.key === \"Home\"\n ? filteredOptions[0].value\n : filteredOptions[filteredOptions.length - 1].value,\n );\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n if (hoveredValue == null) return;\n event.preventDefault();\n handleSelect(hoveredValue);\n if (!multiple) focusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [\n isOpen,\n disabled,\n filteredOptions,\n hoveredValue,\n multiple,\n closeAndFocusTrigger,\n focusTrigger,\n handleSelect,\n setOpen,\n ]);\n\n const leftIconNode = leftIcon ?? (\n <UserIcon\n size={ICON_SIZE}\n color={error ? colors.red : isOpen ? colors.primary : colors.grey100}\n />\n );\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n\n const triggerBorderColor = error\n ? colors.redMuted\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue\n ? error\n ? colors.red\n : colors.white\n : error\n ? colors.red\n : colors.grey100;\n const labelColor = error ? colors.red : colors.white;\n const hintColor = error ? colors.red : colors.grey100;\n\n const singleLabel = selectedOptions[0]?.label ?? placeholder;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n {showLabel && label ? (\n <Text style={[styles.label, { color: labelColor }]}>{label}</Text>\n ) : null}\n\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"combobox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n {\n borderColor: triggerBorderColor,\n backgroundColor: colors.grey700,\n },\n ]}\n >\n {hasLeftIcon ? <View style={styles.iconSlot}>{leftIconNode}</View> : null}\n\n <View style={styles.triggerContent}>\n {multiple && hasValue ? (\n <MultiValueChips\n options={selectedOptions}\n disabled={disabled}\n onRemove={handleRemoveChip}\n />\n ) : (\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {multiple ? placeholder : singleLabel}\n </Text>\n )}\n </View>\n\n <View style={[styles.iconSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n {showSearch ? (\n <View style={styles.searchField}>\n <View style={styles.iconSlot}>\n <SearchIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n <TextInput\n ref={searchInputRef}\n value={searchQuery}\n onChangeText={handleSearchChange}\n editable={!disabled}\n placeholder={searchPlaceholder}\n placeholderTextColor={colors.grey100}\n style={[\n styles.searchInput,\n Platform.OS === \"web\" ? styles.searchInputWeb : null,\n Platform.OS === \"android\" ? styles.searchInputAndroid : null,\n ]}\n accessibilityLabel={searchPlaceholder}\n />\n </View>\n ) : null}\n\n <ScrollView\n style={styles.optionList}\n contentContainerStyle={styles.optionListContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {loading ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>Loading...</Text>\n </View>\n ) : filteredOptions.length === 0 ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>{emptyText}</Text>\n </View>\n ) : null}\n\n {!loading &&\n filteredOptions.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n const isHovered = hoveredValue === option.value;\n const visualState: ItemVisualState = isSelected\n ? \"selected\"\n : isHovered\n ? \"hover\"\n : \"default\";\n\n return (\n <Pressable\n key={option.value}\n onPress={() => handleSelect(option.value)}\n disabled={disabled}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n onPressIn={() => setHoveredValue(option.value)}\n onPressOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n accessibilityRole={multiple ? \"checkbox\" : \"button\"}\n accessibilityState={{ selected: isSelected, checked: isSelected, disabled }}\n style={[\n styles.item,\n {\n backgroundColor: itemBackground(visualState),\n },\n ]}\n >\n {multiple ? (\n <View pointerEvents=\"none\" style={styles.itemCheckbox}>\n <Checkbox value={isSelected} variant=\"light\" />\n </View>\n ) : null}\n <Text style={styles.itemLabel} numberOfLines={1}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n ) : null}\n </View>\n\n {showHint && hint ? <Text style={[styles.hint, { color: hintColor }]}>{hint}</Text> : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...selectTypography.label,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerContent: {\n flex: 1,\n justifyContent: \"center\",\n minWidth: 0,\n overflow: \"hidden\",\n },\n triggerText: {\n ...selectTypography.field,\n },\n multiValueRoot: {\n width: \"100%\",\n position: \"relative\",\n },\n measureRow: {\n position: \"absolute\",\n left: 0,\n top: 0,\n flexDirection: \"row\",\n opacity: 0,\n zIndex: -1,\n },\n chipsRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: CHIP_GAP,\n overflow: \"hidden\",\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 4,\n paddingVertical: 2,\n paddingHorizontal: 8,\n borderRadius: 999,\n backgroundColor: colors.grey600,\n flexShrink: 0,\n },\n chipLabel: {\n ...selectTypography.hint,\n color: colors.white,\n maxWidth: 120,\n },\n chipRemove: {\n color: colors.grey100,\n fontSize: 14,\n lineHeight: 14,\n },\n ellipsis: {\n flexShrink: 0,\n paddingHorizontal: 2,\n },\n ellipsisText: {\n ...selectTypography.field,\n color: colors.white,\n lineHeight: 16,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n optionList: {\n maxHeight: MENU_MAX_LIST_HEIGHT,\n },\n optionListContent: {\n gap: 8,\n },\n statusRow: {\n minHeight: 43,\n padding: 12,\n justifyContent: \"center\",\n },\n statusText: {\n ...selectTypography.field,\n color: colors.grey100,\n },\n searchField: {\n height: 40,\n borderRadius: ITEM_RADIUS,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n backgroundColor: colors.grey800,\n },\n searchInput: {\n ...selectTypography.field,\n flex: 1,\n color: colors.white,\n paddingVertical: 0,\n margin: 0,\n },\n searchInputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n searchInputAndroid: {\n includeFontPadding: false,\n },\n item: {\n minHeight: 43,\n borderRadius: ITEM_RADIUS,\n padding: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n itemCheckbox: {\n flexShrink: 0,\n },\n itemLabel: {\n ...selectTypography.field,\n color: colors.white,\n flex: 1,\n },\n hint: {\n ...selectTypography.hint,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { colors, textareaTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface TextareaProps extends Omit<TextInputProps, \"style\" | \"editable\" | \"multiline\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\nconst FIELD_HEIGHT = 100;\nconst FIELD_RADIUS = 16;\nconst FIELD_PADDING_VERTICAL = 12;\nconst FIELD_PADDING_HORIZONTAL = 16;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n textColor: colors.grey0,\n };\n default:\n return base;\n }\n}\n\nexport const Textarea = forwardRef<ComponentRef<typeof TextInput>, TextareaProps>(function Textarea(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n multiline\n textAlignVertical=\"top\"\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n textareaTypography.field,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...textareaTypography.label,\n },\n field: {\n height: FIELD_HEIGHT,\n borderRadius: FIELD_RADIUS,\n borderWidth: 1,\n paddingTop: FIELD_PADDING_VERTICAL,\n paddingBottom: FIELD_PADDING_VERTICAL,\n paddingLeft: FIELD_PADDING_HORIZONTAL,\n paddingRight: FIELD_PADDING_HORIZONTAL,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n resize: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n hint: {\n ...textareaTypography.hint,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface ToggleProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n /** Visible label rendered next to the track. */\n label?: string;\n children?: ReactNode;\n /** Accessible name for screen readers; falls back to `label`/`children` when omitted. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_RADIUS = 43;\nconst TRACK_PADDING = 4;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2;\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE;\nconst ANIMATION_DURATION = 300;\n\nexport const Toggle = forwardRef<ComponentRef<typeof Pressable>, ToggleProps>(function Toggle(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n label,\n children,\n accessibilityLabel,\n style,\n labelStyle,\n className,\n hitSlop = 10,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n const progress = useRef(new Animated.Value(isActive ? 1 : 0)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n Animated.timing(progress, {\n toValue: isActive ? 1 : 0,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.ease),\n useNativeDriver: false,\n }).start();\n }, [isActive, progress]);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n const trackBackgroundColor = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [colors.grey700, colors.primary],\n });\n\n const thumbTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, THUMB_TRAVEL],\n });\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"switch\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.pressable, disabled && styles.disabled, style]}\n >\n <Animated.View\n style={[\n styles.track,\n {\n backgroundColor: trackBackgroundColor,\n },\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n transform: [{ translateX: thumbTranslateX }],\n },\n ]}\n />\n </Animated.View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n pressable: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.6,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_RADIUS,\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: colors.white,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/icons/ArrowRight/arrowRightPath.ts","../src/theme/colors.ts","../src/theme/typography.ts","../src/icons/ArrowRight/ArrowRightIcon.tsx","../src/icons/Bag/bagPath.ts","../src/icons/Bag/BagIcon.tsx","../src/icons/Bell/bellPath.ts","../src/icons/Bell/BellIcon.tsx","../src/icons/Building/buildingPath.ts","../src/icons/Building/BuildingIcon.tsx","../src/icons/Calendar/calendarPath.ts","../src/icons/Calendar/CalendarIcon.tsx","../src/icons/CalendarOutline/calendarOutlinePath.ts","../src/icons/CalendarOutline/CalendarOutlineIcon.tsx","../src/icons/Camera/cameraPath.ts","../src/icons/Camera/CameraIcon.tsx","../src/icons/Check/checkPath.ts","../src/icons/Check/CheckIcon.tsx","../src/icons/CheckBadge/checkBadgePath.ts","../src/icons/CheckBadge/CheckBadgeIcon.tsx","../src/icons/ChevronDown/chevronDownPath.ts","../src/icons/ChevronDown/ChevronDownIcon.tsx","../src/icons/ChevronLeft/chevronLeftPath.ts","../src/icons/ChevronLeft/ChevronLeftIcon.tsx","../src/icons/Clock/clockPath.ts","../src/icons/Clock/ClockIcon.tsx","../src/icons/Facebook/facebookPath.ts","../src/icons/Facebook/FacebookIcon.tsx","../src/icons/Heart/heartPath.ts","../src/icons/Heart/HeartIcon.tsx","../src/icons/Globe/globePath.ts","../src/icons/Globe/GlobeIcon.tsx","../src/icons/HelpCircle/helpCirclePath.ts","../src/icons/HelpCircle/HelpCircleIcon.tsx","../src/icons/Home/homePath.ts","../src/icons/Home/HomeIcon.tsx","../src/icons/Instagram/instagramPath.ts","../src/icons/Instagram/InstagramIcon.tsx","../src/icons/Key/keyPath.ts","../src/icons/Key/KeyIcon.tsx","../src/icons/LayoutGrid/layoutGridPath.ts","../src/icons/LayoutGrid/LayoutGridIcon.tsx","../src/icons/LinkedIn/linkedinPath.ts","../src/icons/LinkedIn/LinkedInIcon.tsx","../src/icons/LogOut/logOutPath.ts","../src/icons/LogOut/LogOutIcon.tsx","../src/icons/Mail/mailPath.ts","../src/icons/Mail/MailIcon.tsx","../src/icons/Minus/minusPath.ts","../src/icons/Minus/MinusIcon.tsx","../src/icons/Navigate/navigatePath.ts","../src/icons/Navigate/NavigateIcon.tsx","../src/icons/Phone/phonePath.ts","../src/icons/Phone/PhoneIcon.tsx","../src/icons/Plus/plusPath.ts","../src/icons/Plus/PlusIcon.tsx","../src/icons/Search/searchPath.ts","../src/icons/Search/SearchIcon.tsx","../src/icons/Settings/settingsPath.ts","../src/icons/Settings/SettingsIcon.tsx","../src/icons/Show/showPath.ts","../src/icons/Show/ShowIcon.tsx","../src/icons/Sidebar/sidebarPath.ts","../src/icons/Sidebar/SidebarIcon.tsx","../src/icons/Star/starPath.ts","../src/icons/Star/StarIcon.tsx","../src/icons/StarFilled/StarFilledIcon.tsx","../src/icons/User/userPath.ts","../src/icons/User/UserIcon.tsx","../src/icons/UsersAlt/usersAltPath.ts","../src/icons/UsersAlt/UsersAltIcon.tsx","../src/icons/Video/videoPath.ts","../src/icons/Video/VideoIcon.tsx","../src/icons/registry.ts","../src/icons/Icon.tsx","../src/utils/mergeRefs.ts","../src/utils/useApplyWebClassName.ts","../src/primitives/MenuItem/MenuItem.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Counter/Counter.tsx","../src/components/SegmentedToggle/SegmentedToggle.tsx","../src/components/LanguageSwitcher/LanguageSwitcher.tsx","../src/components/StatCard/StatCard.tsx","../src/components/Button/Button.tsx","../src/components/Checkbox/Checkbox.tsx","../src/utils/dateUtils.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/Input/Input.tsx","../src/components/Select/Select.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toggle/Toggle.tsx","../src/components/RatingInput/RatingInput.tsx","../src/components/CommentCard/CommentCard.tsx"],"names":["jsx","Svg","Path","jsxs","MenuItem","forwardRef","Avatar","useRef","useMemo","useState","Platform","View","styles","Pressable","Text","StyleSheet","ICON_SIZE","Badge","Icon","webBlurStyle","Counter","SegmentedToggle","useEffect","LanguageSwitcher","useCallback","StatCard","variantConfig","Button","Checkbox","MENU_RADIUS","DatePicker","DEFAULT_WIDTH","sizeConfig","Input","TouchableOpacity","TRIGGER_HEIGHT","TRIGGER_RADIUS","ITEM_RADIUS","Select","TextInput","resolveVisualState","chromeFor","Textarea","ANIMATION_DURATION","Toggle","Animated","Easing","clamp","RatingInput","CommentCard","Image"],"mappings":"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","file":"index.js","sourcesContent":["/** Arrow_Right_MD path — 20×20 viewBox. */\nexport const ARROW_RIGHT_PATH = \"M4.16667 10H15.8333M15.8333 10L10 4.16667M15.8333 10L10 15.8333\";\n","export const grey = {\n \"0\": \"#767676\",\n \"0.5\": \"#6E6E6E\",\n \"1\": \"#666666\",\n \"1.5\": \"#5E5E5E\",\n \"2\": \"#565656\",\n \"3\": \"#474747\",\n \"4\": \"#373737\",\n \"5\": \"#272727\",\n \"6\": \"#1F1F1F\",\n \"7\": \"#171717\",\n \"7.5\": \"#161616\",\n \"8\": \"#101010\",\n \"8.5\": \"#0C0C0C\",\n \"9\": \"#080808\",\n \"9.5\": \"#040404\",\n} as const;\n\nexport type GreyStep = keyof typeof grey;\n\nexport const colors = {\n primary: \"#B46436\",\n black: \"#000000\",\n white: \"#ffffff\",\n whiteAlpha86: \"#FFFFFFDB\",\n whiteAlpha40: \"#FFFFFF66\",\n whiteAlpha20: \"#FFFFFF33\",\n whiteAlpha10: \"#FFFFFF1A\",\n whiteAlpha5: \"#FFFFFF0D\",\n dark: \"#090909\",\n red: \"#A63E3E\",\n lightGrey: \"#B7B7B7\",\n green: \"#34A853\",\n primaryMuted: \"#B464360F\",\n primaryHover: \"#B4643633\",\n redMuted: \"#A63E3E0F\",\n redHover: \"#A63E3E33\",\n\n grey0: grey[\"0\"],\n grey50: grey[\"0.5\"],\n grey100: grey[\"1\"],\n grey150: grey[\"1.5\"],\n grey200: grey[\"2\"],\n grey300: grey[\"3\"],\n grey400: grey[\"4\"],\n grey500: grey[\"5\"],\n grey600: grey[\"6\"],\n grey700: grey[\"7\"],\n grey750: grey[\"7.5\"],\n grey800: grey[\"8\"],\n grey850: grey[\"8.5\"],\n grey900: grey[\"9\"],\n grey950: grey[\"9.5\"],\n} as const;\n","export const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Button label — SemiBold, line-height 100%, letter-spacing 3%. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0.42,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Badge label — Regular 14, line-height 112%, letter-spacing 0. */\nexport const badgeTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Stat card label — Medium 16, line-height 100%, letter-spacing 0. */\nexport const statCardTypography = {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"500\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n} as const;\n\n/** Segmented toggle label — Medium 14, line-height 100%, letter-spacing 0. */\nexport const segmentedToggleTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"500\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Language switcher trigger and option labels — SemiBold 14. */\nexport const languageSwitcherTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n} as const;\n\n/** Counter value — Bold 14, line-height 100%, letter-spacing 0. */\nexport const counterTypography = {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n} as const;\n\n/** Rating score — Bold 32, line-height 112%, letter-spacing 0. */\nexport const ratingTypography = {\n fontFamily: fonts.sans,\n fontSize: 32,\n fontWeight: \"700\" as const,\n lineHeight: 35.84,\n letterSpacing: 0,\n} as const;\n\n/** Comment card identity, body, and action typography. */\nexport const commentCardTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 16,\n fontWeight: \"600\" as const,\n lineHeight: 18,\n letterSpacing: 0,\n },\n date: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 16,\n letterSpacing: 0,\n },\n comment: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n action: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"700\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/** Input label / field / hint typography. */\nexport const inputTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Select label / field / hint typography — Medium/Regular 12–14, letter-spacing 3%. */\nexport const selectTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n\n/** Avatar name / email / menu-item typography — 100% line-height, 0 letter-spacing. */\nexport const avatarTypography = {\n name: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"600\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n email: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n menuItem: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"600\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n} as const;\n\n/**\n * DatePicker typography — trigger field text plus the calendar-panel type\n * (month heading, weekday header, day-cell numbers). No label/hint chrome —\n * the Figma trigger is a standalone field. Figma didn't spec the month\n * heading / day-cell number sizes, so those reuse the existing type scale\n * for visual consistency with the rest of the kit.\n */\nexport const datePickerTypography = {\n field: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n /** Calendar month/year heading — Bold, centered, White. */\n monthHeading: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"700\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n /** Weekday header (ԵՐ, ԵՔ, ...) — Regular, uppercase, centered, Grey/300. */\n weekday: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0,\n },\n day: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 14,\n letterSpacing: 0,\n },\n} as const;\n\n/** Textarea label / field / hint typography — Medium/Regular 12–14, letter-spacing 3%. */\nexport const textareaTypography = {\n label: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"500\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n field: {\n fontFamily: fonts.sans,\n fontSize: 14,\n fontWeight: \"400\" as const,\n lineHeight: 19,\n letterSpacing: 0,\n },\n hint: {\n fontFamily: fonts.sans,\n fontSize: 12,\n fontWeight: \"400\" as const,\n lineHeight: 12,\n letterSpacing: 0.36,\n },\n} as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\nimport { colors } from \"../../theme\";\n\nexport { ARROW_RIGHT_PATH } from \"./arrowRightPath\";\n\ninterface ArrowRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowRightIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ArrowRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BAG_PATH =\n \"M9.23047 9H7.2002C6.08009 9 5.51962 9 5.0918 9.21799C4.71547 9.40973 4.40973 9.71547 4.21799 10.0918C4 10.5196 4 11.0801 4 12.2002V17.8002C4 18.9203 4 19.4801 4.21799 19.9079C4.40973 20.2842 4.71547 20.5905 5.0918 20.7822C5.5192 21 6.07902 21 7.19694 21H16.8031C17.921 21 18.48 21 18.9074 20.7822C19.2837 20.5905 19.5905 20.2842 19.7822 19.9079C20 19.4805 20 18.9215 20 17.8036V12.1969C20 11.079 20 10.5192 19.7822 10.0918C19.5905 9.71547 19.2837 9.40973 18.9074 9.21799C18.4796 9 17.9203 9 16.8002 9H14.7689M9.23047 9H14.7689M9.23047 9C9.10302 9 9 8.89668 9 8.76923V6C9 4.34315 10.3431 3 12 3C13.6569 3 15 4.34315 15 6V8.76923C15 8.89668 14.8964 9 14.7689 9\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BAG_PATH } from \"./bagPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BAG_PATH } from \"./bagPath\";\n\nexport function BagIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={BAG_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BELL_PATH =\n \"M7.5 17.5H12.5M10 2.5C7.23858 2.5 5 4.73858 5 7.5C5 8.51208 5.3007 9.45393 5.81764 10.2411C6.61256 11.4515 7.00967 12.0564 7.06127 12.1467C7.52024 12.9508 7.43573 12.6672 7.49349 13.5913C7.49998 13.6952 7.5 13.8524 7.5 14.1667C7.5 14.6269 7.8731 15 8.33333 15L11.6667 15C12.1269 15 12.5 14.6269 12.5 14.1667C12.5 13.8524 12.5 13.6952 12.5065 13.5913C12.5643 12.6672 12.4793 12.9509 12.9382 12.1467C12.9898 12.0564 13.3876 11.4515 14.1825 10.2411C14.6995 9.45393 15.0002 8.51208 15.0002 7.5C15.0002 4.73858 12.7614 2.5 10 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BELL_PATH } from \"./bellPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BELL_PATH } from \"./bellPath\";\n\nexport function BellIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BELL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const BUILDING_PATH =\n \"M7.5 9.16659V16.6666M7.5 9.16659H3.83301C3.3663 9.16659 3.13318 9.16659 2.95492 9.25741C2.79811 9.33731 2.67072 9.4647 2.59083 9.6215C2.5 9.79976 2.5 10.0333 2.5 10.5V16.6666H7.5M7.5 9.16659V4.66667C7.5 4.19996 7.5 3.96643 7.59083 3.78817C7.67072 3.63137 7.79811 3.50397 7.95492 3.42408C8.13317 3.33325 8.3663 3.33325 8.83301 3.33325H11.1663C11.6331 3.33325 11.8669 3.33325 12.0452 3.42408C12.202 3.50397 12.329 3.63137 12.4089 3.78817C12.4997 3.96643 12.5 4.19996 12.5 4.66667V6.66659M7.5 16.6666H12.5M12.5 16.6666L17.5 16.6667V8C17.5 7.53329 17.4997 7.29976 17.4089 7.1215C17.329 6.9647 17.2024 6.83731 17.0456 6.75741C16.8674 6.66659 16.6334 6.66659 16.1667 6.66659H12.5M12.5 16.6666V6.66659\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { BUILDING_PATH } from \"./buildingPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { BUILDING_PATH } from \"./buildingPath\";\n\nexport function BuildingIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={BUILDING_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Calendar icon path — 16×16 viewBox. */\nexport const CALENDAR_PATH =\n \"M14 6.66668H2M14 8.33334V5.86668C14 4.74657 14 4.18652 13.782 3.7587C13.5903 3.38237 13.2843 3.07641 12.908 2.88466C12.4802 2.66668 11.9201 2.66668 10.8 2.66668H5.2C4.0799 2.66668 3.51984 2.66668 3.09202 2.88466C2.71569 3.07641 2.40973 3.38237 2.21799 3.7587C2 4.18652 2 4.74657 2 5.86668V11.4667C2 12.5868 2 13.1468 2.21799 13.5747C2.40973 13.951 2.71569 14.2569 3.09202 14.4487C3.51984 14.6667 4.0799 14.6667 5.2 14.6667H8M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M9.66667 12.6667L11 14L14 11\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_PATH } from \"./calendarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_PATH } from \"./calendarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Plain calendar icon path (no checkmark badge) — 16×16 viewBox. */\nexport const CALENDAR_OUTLINE_PATH =\n \"M10.6667 1.33334V4.00001M5.33333 1.33334V4.00001M2 6.66668H14M5.2 2.66668H10.8C11.9201 2.66668 12.4802 2.66668 12.908 2.88466C13.2843 3.07641 13.5903 3.38237 13.782 3.7587C14 4.18652 14 4.74657 14 5.86668V11.4667C14 12.5868 14 13.1468 13.782 13.5747C13.5903 13.951 13.2843 14.2569 12.908 14.4487C12.4802 14.6667 11.9201 14.6667 10.8 14.6667H5.2C4.0799 14.6667 3.51984 14.6667 3.09202 14.4487C2.71569 14.2569 2.40973 13.951 2.21799 13.5747C2 13.1468 2 12.5868 2 11.4667V5.86668C2 4.74657 2 4.18652 2.21799 3.7587C2.40973 3.38237 2.71569 3.07641 3.09202 2.88466C3.51984 2.66668 4.0799 2.66668 5.2 2.66668Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CALENDAR_OUTLINE_PATH } from \"./calendarOutlinePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function CalendarOutlineIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={CALENDAR_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CAMERA_PATH =\n \"M9.48898 7H6.2002C5.08009 7 4.51962 7 4.0918 7.21799C3.71547 7.40973 3.40973 7.71547 3.21799 8.0918C3 8.51962 3 9.08009 3 10.2002V15.8002C3 16.9203 3 17.4796 3.21799 17.9074C3.40973 18.2837 3.71547 18.5905 4.0918 18.7822C4.5192 19 5.07899 19 6.19691 19H17.8031C18.921 19 19.48 19 19.9074 18.7822C20.2837 18.5905 20.5905 18.2837 20.7822 17.9074C21 17.48 21 16.921 21 15.8031V10.1969C21 9.07899 21 8.5192 20.7822 8.0918C20.5905 7.71547 20.2837 7.40973 19.9074 7.21799C19.4796 7 18.9203 7 17.8002 7H14.5108M9.48898 7H9.55078M9.48898 7C9.50151 7.00001 9.51468 7 9.52857 7L9.55078 7M9.48898 7C9.38286 6.99995 9.32339 6.99941 9.27637 6.99414C8.68878 6.92835 8.28578 6.36908 8.40918 5.79084C8.42066 5.73703 8.44336 5.66894 8.4883 5.53412L8.49023 5.52841C8.54156 5.37443 8.56723 5.29743 8.59558 5.22949C8.88586 4.53389 9.54322 4.06083 10.2949 4.00541C10.3683 4 10.449 4 10.6113 4H13.3886C13.5509 4 13.6322 4 13.7057 4.00541C14.4574 4.06083 15.114 4.53389 15.4043 5.22949C15.4326 5.29743 15.4584 5.37434 15.5098 5.52832C15.556 5.66699 15.5791 5.73636 15.5908 5.79093C15.7142 6.36917 15.3118 6.92835 14.7242 6.99414C14.6772 6.99941 14.6171 6.99995 14.5108 7M9.55078 7H14.449M14.449 7H14.5108M14.449 7L14.4712 7C14.4851 7 14.4983 7.00001 14.5108 7M12 16C10.3431 16 9 14.6569 9 13C9 11.3431 10.3431 10 12 10C13.6569 10 15 11.3431 15 13C15 14.6569 13.6569 16 12 16Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CAMERA_PATH } from \"./cameraPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CAMERA_PATH } from \"./cameraPath\";\n\nexport function CameraIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CAMERA_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Check mark path — 20×20 viewBox. */\nexport const CHECK_PATH = \"M4.16669 10.8333L7.50002 14.1667L15.8334 5.83334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_PATH } from \"./checkPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHECK_PATH } from \"./checkPath\";\n\ninterface CheckIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function CheckIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: CheckIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CHECK_BADGE_PATH =\n \"M12.5 8.33317L9.16663 11.6665L7.49996 9.99984M11.0384 2.88233L12.0558 3.74941C12.3122 3.96786 12.6305 4.09992 12.9662 4.12671L14.2987 4.23291C15.0822 4.29543 15.7045 4.91733 15.767 5.70077L15.8729 7.03353C15.8997 7.36925 16.0322 7.68799 16.2507 7.94433L17.1174 8.96152C17.6272 9.5597 17.6272 10.4396 17.1175 11.0378L16.2508 12.0551C16.0323 12.3115 15.9 12.6303 15.8732 12.9661L15.7666 14.2986C15.704 15.082 15.0827 15.7043 14.2993 15.7668L12.9663 15.8732C12.6305 15.9 12.312 16.0317 12.0556 16.2502L11.0384 17.1173C10.4402 17.627 9.55973 17.6271 8.96155 17.1174L7.9443 16.2502C7.68796 16.0318 7.36938 15.8998 7.03365 15.8731L5.70064 15.7668C4.9172 15.7043 4.29588 15.0822 4.23336 14.2987L4.12675 12.9661C4.09996 12.6304 3.96759 12.3118 3.74915 12.0555L2.88245 11.0378C2.37268 10.4397 2.37244 9.56002 2.88221 8.96184L3.74969 7.94418C3.96814 7.68784 4.09923 7.36926 4.12602 7.03353L4.23263 5.70093C4.29515 4.91749 4.91826 4.29535 5.70171 4.23283L7.03324 4.12663C7.36897 4.09984 7.68771 3.96788 7.94404 3.74943L8.96164 2.88233C9.55982 2.37256 10.4402 2.37256 11.0384 2.88233Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHECK_BADGE_PATH } from \"./checkBadgePath\";\n\nexport function CheckBadgeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHECK_BADGE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron down path — 20×20 viewBox. */\nexport const CHEVRON_DOWN_PATH = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\nimport { colors } from \"../../theme\";\n\nexport { CHEVRON_DOWN_PATH } from \"./chevronDownPath\";\n\ninterface ChevronDownIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronDownIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Chevron left path — 20×20 viewBox. */\nexport const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CHEVRON_LEFT_PATH } from \"./chevronLeftPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function ChevronLeftIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_LEFT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const CLOCK_PATH =\n \"M12 7V12H17M12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CLOCK_PATH } from \"./clockPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { CLOCK_PATH } from \"./clockPath\";\n\nexport function ClockIcon({ size = 24, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={CLOCK_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const FACEBOOK_PATH =\n \"M10.0003 1.69922C5.41699 1.69922 1.66699 5.44089 1.66699 10.0492C1.66699 14.2159 4.71699 17.6742 8.70033 18.2992V12.4659H6.58366V10.0492H8.70033V8.20755C8.70033 6.11589 9.94199 4.96589 11.8503 4.96589C12.7587 4.96589 13.7087 5.12422 13.7087 5.12422V7.18255H12.6587C11.6253 7.18255 11.3003 7.82422 11.3003 8.48255V10.0492H13.617L13.242 12.4659H11.3003V18.2992C13.264 17.9891 15.0522 16.9871 16.3419 15.4743C17.6317 13.9614 18.3381 12.0373 18.3337 10.0492C18.3337 5.44089 14.5837 1.69922 10.0003 1.69922Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { FACEBOOK_PATH } from \"./facebookPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { FACEBOOK_PATH } from \"./facebookPath\";\n\nexport function FacebookIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={FACEBOOK_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Heart icon path — 16×16 viewBox. */\nexport const HEART_PATH =\n \"M7.99547 3.42388C6.66257 1.8656 4.43987 1.44643 2.76984 2.87334C1.0998 4.30026 0.864686 6.68598 2.17617 8.3736C3.26659 9.77674 6.56656 12.7361 7.64811 13.6939C7.76911 13.801 7.82961 13.8546 7.90018 13.8757C7.96178 13.8941 8.02917 13.8941 8.09077 13.8757C8.16134 13.8546 8.22184 13.801 8.34284 13.6939C9.42439 12.7361 12.7244 9.77674 13.8148 8.3736C15.1263 6.68598 14.9199 4.28525 13.2211 2.87334C11.5224 1.46144 9.32838 1.8656 7.99547 3.42388Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HEART_PATH } from \"./heartPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HEART_PATH } from \"./heartPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HeartIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HEART_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </Svg>\n );\n}\n","/** Globe paths — 20×20 viewBox. */\nexport const GLOBE_PATH =\n \"M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333M18.3333 10C18.3333 5.39763 14.6024 1.66667 10 1.66667M18.3333 10H1.66667M10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10M10 18.3333C12.0833 16.0511 13.2675 13.0836 13.3333 10C13.2675 6.91643 12.0833 3.94892 10 1.66667M10 18.3333C7.91667 16.0511 6.73248 13.0836 6.66667 10C6.73248 6.91643 7.91667 3.94892 10 1.66667M1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { GLOBE_PATH } from \"./globePath\";\n\nexport function GlobeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={GLOBE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { GLOBE_PATH } from \"./globePath\";\n","/** HelpCircle icon path — 16×16 viewBox. */\nexport const HELP_CIRCLE_PATH =\n \"M6.99971 6.00149C7.11717 5.66757 7.34902 5.386 7.6542 5.20665C7.95937 5.0273 8.31817 4.96174 8.66705 5.02158C9.01593 5.08142 9.33238 5.2628 9.56034 5.5336C9.7883 5.8044 9.91306 6.14714 9.91254 6.50112C9.91254 7.50037 8.41365 8 8.41365 8M8.43298 10H8.43964M8.33304 13.3333C11.4627 13.3333 13.9997 10.7963 13.9997 7.66667C13.9997 4.53705 11.4627 2 8.33304 2C5.20343 2 2.66638 4.53705 2.66638 7.66667C2.66638 8.3 2.77027 8.90906 2.96196 9.47774C3.03409 9.69175 3.07016 9.79875 3.07666 9.88095C3.08309 9.96213 3.07823 10.019 3.05814 10.098C3.03781 10.1779 2.99291 10.261 2.9031 10.4272L1.81267 12.4456C1.65713 12.7335 1.57936 12.8774 1.59676 12.9885C1.61192 13.0853 1.66887 13.1705 1.75249 13.2215C1.84849 13.2801 2.01124 13.2632 2.33674 13.2296L5.75075 12.8767C5.85414 12.866 5.90583 12.8606 5.95295 12.8624C5.99929 12.8642 6.03201 12.8686 6.0772 12.879C6.12315 12.8896 6.18092 12.9118 6.29648 12.9564C6.92851 13.1999 7.61519 13.3333 8.33304 13.3333Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HELP_CIRCLE_PATH } from \"./helpCirclePath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function HelpCircleIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={HELP_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const HOME_PATH =\n \"M1.66675 16.6667H3.33341M3.33341 16.6667H8.33341M3.33341 16.6667V9.54352C3.33341 9.09823 3.33341 8.87548 3.38756 8.66828C3.43554 8.48466 3.51491 8.31089 3.6215 8.15387C3.74178 7.97668 3.90895 7.82974 4.24406 7.53652L8.24538 4.03537C8.86662 3.49178 9.17726 3.21997 9.5271 3.11652C9.83559 3.02529 10.1644 3.02529 10.4729 3.11652C10.823 3.22005 11.1341 3.49212 11.7563 4.03652L15.7563 7.53652C16.0914 7.82974 16.2586 7.97668 16.3789 8.15387C16.4855 8.31089 16.5642 8.48466 16.6122 8.66828C16.6664 8.87548 16.6667 9.09824 16.6667 9.54352V16.6667M8.33341 16.6667H11.6667M8.33341 16.6667V13.3334C8.33341 12.4129 9.07961 11.6667 10.0001 11.6667C10.9206 11.6667 11.6667 12.4129 11.6667 13.3334V16.6667M11.6667 16.6667H16.6667M16.6667 16.6667H18.3334\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { HOME_PATH } from \"./homePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { HOME_PATH } from \"./homePath\";\n\nexport function HomeIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={HOME_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const INSTAGRAM_PATH =\n \"M6.49984 1.66748H13.4998C16.1665 1.66748 18.3332 3.83415 18.3332 6.50081V13.5008C18.3332 14.7827 17.8239 16.0121 16.9175 16.9185C16.0111 17.8249 14.7817 18.3341 13.4998 18.3341H6.49984C3.83317 18.3341 1.6665 16.1675 1.6665 13.5008V6.50081C1.6665 5.21893 2.17573 3.98956 3.08215 3.08313C3.98858 2.17671 5.21796 1.66748 6.49984 1.66748ZM6.33317 3.33415C5.53752 3.33415 4.77446 3.65022 4.21185 4.21283C3.64924 4.77544 3.33317 5.5385 3.33317 6.33415V13.6675C3.33317 15.3258 4.67484 16.6675 6.33317 16.6675H13.6665C14.4622 16.6675 15.2252 16.3514 15.7878 15.7888C16.3504 15.2262 16.6665 14.4631 16.6665 13.6675V6.33415C16.6665 4.67581 15.3248 3.33415 13.6665 3.33415H6.33317ZM14.3748 4.58415C14.6511 4.58415 14.9161 4.69389 15.1114 4.88924C15.3068 5.08459 15.4165 5.34955 15.4165 5.62581C15.4165 5.90208 15.3068 6.16703 15.1114 6.36238C14.9161 6.55773 14.6511 6.66748 14.3748 6.66748C14.0986 6.66748 13.8336 6.55773 13.6383 6.36238C13.4429 6.16703 13.3332 5.90208 13.3332 5.62581C13.3332 5.34955 13.4429 5.08459 13.6383 4.88924C13.8336 4.69389 14.0986 4.58415 14.3748 4.58415ZM9.99984 5.83415C11.1049 5.83415 12.1647 6.27313 12.9461 7.05454C13.7275 7.83594 14.1665 8.89574 14.1665 10.0008C14.1665 11.1059 13.7275 12.1657 12.9461 12.9471C12.1647 13.7285 11.1049 14.1675 9.99984 14.1675C8.89477 14.1675 7.83496 13.7285 7.05356 12.9471C6.27216 12.1657 5.83317 11.1059 5.83317 10.0008C5.83317 8.89574 6.27216 7.83594 7.05356 7.05454C7.83496 6.27313 8.89477 5.83415 9.99984 5.83415ZM9.99984 7.50081C9.3368 7.50081 8.70091 7.76421 8.23207 8.23305C7.76323 8.70189 7.49984 9.33777 7.49984 10.0008C7.49984 10.6639 7.76323 11.2997 8.23207 11.7686C8.70091 12.2374 9.3368 12.5008 9.99984 12.5008C10.6629 12.5008 11.2988 12.2374 11.7676 11.7686C12.2364 11.2997 12.4998 10.6639 12.4998 10.0008C12.4998 9.33777 12.2364 8.70189 11.7676 8.23305C11.2988 7.76421 10.6629 7.50081 9.99984 7.50081Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { INSTAGRAM_PATH } from \"./instagramPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { INSTAGRAM_PATH } from \"./instagramPath\";\n\nexport function InstagramIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={INSTAGRAM_PATH} fill={color} />\n </Svg>\n );\n}\n","export const KEY_PATH =\n \"M5.28673 10.0002L7.0545 11.768M7.6435 7.64301L9.41127 9.41078M10.0003 5.28624L11.768 7.05401M4.22553 11.0604L11.0609 4.22505C11.7209 3.56502 12.0513 3.235 12.4318 3.11136C12.7666 3.00259 13.127 3.00259 13.4618 3.11136C13.8421 3.23494 14.1718 3.56464 14.8311 4.22393L15.775 5.16785C16.4351 5.82788 16.7654 6.15867 16.8891 6.53922C16.9979 6.87396 16.9976 7.23381 16.8889 7.56855C16.7652 7.9491 16.4353 8.27937 15.7753 8.9394L8.93989 15.7748C8.27986 16.4348 7.94959 16.7647 7.56904 16.8884C7.2343 16.9971 6.87445 16.9974 6.53971 16.8886C6.15916 16.765 5.82837 16.4346 5.16834 15.7745L4.22441 14.8306C3.56513 14.1713 3.23542 13.8416 3.11185 13.4613C3.00308 13.1266 3.00308 12.7661 3.11185 12.4313C3.23549 12.0508 3.56551 11.7204 4.22553 11.0604Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { KEY_PATH } from \"./keyPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { KEY_PATH } from \"./keyPath\";\n\nexport function KeyIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={KEY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** LayoutGrid icon path — 16×16 viewBox. */\nexport const LAYOUT_GRID_PATH =\n \"M4.33333 4.33333H4.34M11.6667 4.33333H11.6733M4.33333 11.6667H4.34M8.66667 8.66667H8.67333M11.6667 11.6667H11.6733M11.3333 14H14V11.3333M9.33333 11V14M14 9.33333H11M10.4 6.66667H12.9333C13.3067 6.66667 13.4934 6.66667 13.636 6.594C13.7614 6.53009 13.8634 6.4281 13.9273 6.30266C14 6.16005 14 5.97337 14 5.6V3.06667C14 2.6933 14 2.50661 13.9273 2.36401C13.8634 2.23856 13.7614 2.13658 13.636 2.07266C13.4934 2 13.3067 2 12.9333 2H10.4C10.0266 2 9.83995 2 9.69734 2.07266C9.5719 2.13658 9.46991 2.23856 9.406 2.36401C9.33333 2.50661 9.33333 2.6933 9.33333 3.06667V5.6C9.33333 5.97337 9.33333 6.16005 9.406 6.30266C9.46991 6.4281 9.5719 6.53009 9.69734 6.594C9.83995 6.66667 10.0266 6.66667 10.4 6.66667ZM3.06667 6.66667H5.6C5.97337 6.66667 6.16005 6.66667 6.30266 6.594C6.4281 6.53009 6.53009 6.4281 6.594 6.30266C6.66667 6.16005 6.66667 5.97337 6.66667 5.6V3.06667C6.66667 2.6933 6.66667 2.50661 6.594 2.36401C6.53009 2.23856 6.4281 2.13658 6.30266 2.07266C6.16005 2 5.97337 2 5.6 2H3.06667C2.6933 2 2.50661 2 2.36401 2.07266C2.23856 2.13658 2.13658 2.23856 2.07266 2.36401C2 2.50661 2 2.6933 2 3.06667V5.6C2 5.97337 2 6.16005 2.07266 6.30266C2.13658 6.4281 2.23856 6.53009 2.36401 6.594C2.50661 6.66667 2.6933 6.66667 3.06667 6.66667ZM3.06667 14H5.6C5.97337 14 6.16005 14 6.30266 13.9273C6.4281 13.8634 6.53009 13.7614 6.594 13.636C6.66667 13.4934 6.66667 13.3067 6.66667 12.9333V10.4C6.66667 10.0266 6.66667 9.83995 6.594 9.69734C6.53009 9.5719 6.4281 9.46991 6.30266 9.406C6.16005 9.33333 5.97337 9.33333 5.6 9.33333H3.06667C2.6933 9.33333 2.50661 9.33333 2.36401 9.406C2.23856 9.46991 2.13658 9.5719 2.07266 9.69734C2 9.83995 2 10.0266 2 10.4V12.9333C2 13.3067 2 13.4934 2.07266 13.636C2.13658 13.7614 2.23856 13.8634 2.36401 13.9273C2.50661 14 2.6933 14 3.06667 14Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LAYOUT_GRID_PATH } from \"./layoutGridPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LayoutGridIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 1.5,\n}: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LAYOUT_GRID_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const LINKEDIN_PATH =\n \"M15.8333 2.50098C16.2754 2.50098 16.6993 2.67657 17.0118 2.98913C17.3244 3.30169 17.5 3.72562 17.5 4.16764V15.8343C17.5 16.2763 17.3244 16.7003 17.0118 17.0128C16.6993 17.3254 16.2754 17.501 15.8333 17.501H4.16667C3.72464 17.501 3.30072 17.3254 2.98816 17.0128C2.67559 16.7003 2.5 16.2763 2.5 15.8343V4.16764C2.5 3.72562 2.67559 3.30169 2.98816 2.98913C3.30072 2.67657 3.72464 2.50098 4.16667 2.50098H15.8333ZM15.4167 15.4176V11.001C15.4167 10.2805 15.1304 9.58948 14.621 9.08C14.1115 8.57053 13.4205 8.28431 12.7 8.28431C11.9917 8.28431 11.1667 8.71764 10.7667 9.36764V8.44264H8.44167V15.4176H10.7667V11.3093C10.7667 10.6676 11.2833 10.1426 11.925 10.1426C12.2344 10.1426 12.5312 10.2656 12.75 10.4844C12.9687 10.7031 13.0917 10.9999 13.0917 11.3093V15.4176H15.4167ZM5.73333 7.13431C6.10464 7.13431 6.46073 6.98681 6.72328 6.72426C6.98583 6.46171 7.13333 6.10561 7.13333 5.73431C7.13333 4.95931 6.50833 4.32598 5.73333 4.32598C5.35982 4.32598 5.0016 4.47435 4.73749 4.73847C4.47338 5.00258 4.325 5.3608 4.325 5.73431C4.325 6.50931 4.95833 7.13431 5.73333 7.13431ZM6.89167 15.4176V8.44264H4.58333V15.4176H6.89167Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LINKEDIN_PATH } from \"./linkedinPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LINKEDIN_PATH } from \"./linkedinPath\";\n\nexport function LinkedInIcon({ size = 20, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path d={LINKEDIN_PATH} fill={color} />\n </Svg>\n );\n}\n","/** LogOut icon path — 16×16 viewBox. */\nexport const LOG_OUT_PATH =\n \"M10.6667 4.66667L14 8L10.6667 11.3333M14 8H6M8 11.3333C8 11.5304 8 11.6289 7.99268 11.7143C7.91655 12.6013 7.26324 13.3312 6.39002 13.5049C6.30602 13.5216 6.20801 13.5324 6.01223 13.5542L5.3313 13.6299C4.30832 13.7435 3.7968 13.8004 3.39044 13.6703C2.84862 13.4969 2.40628 13.101 2.17412 12.5817C2 12.1921 2 11.6775 2 10.6482V5.3518C2 4.32251 2 3.80787 2.17412 3.41835C2.40628 2.89899 2.84862 2.50307 3.39044 2.32969C3.79681 2.19965 4.3083 2.25648 5.33129 2.37015L6.01223 2.44581C6.20808 2.46757 6.306 2.47845 6.39002 2.49515C7.26324 2.66877 7.91655 3.39869 7.99268 4.28574C8 4.37109 8 4.46962 8 4.66667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { LOG_OUT_PATH } from \"./logOutPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { LOG_OUT_PATH } from \"./logOutPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function LogOutIcon({ size = 20, color = colors.red, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={LOG_OUT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MAIL_PATH =\n \"M3.33333 4.99984L8.42303 8.84339L8.42473 8.8448C8.98987 9.25924 9.27261 9.46658 9.5823 9.54668C9.85602 9.61748 10.1438 9.61748 10.4175 9.54668C10.7274 9.46651 11.011 9.25856 11.5771 8.84339C11.5771 8.84339 14.8417 6.33812 16.6667 4.99984M2.5 13.1667V6.83333C2.5 5.89991 2.5 5.43285 2.68166 5.07633C2.84144 4.76273 3.09623 4.50795 3.40983 4.34816C3.76635 4.1665 4.23341 4.1665 5.16683 4.1665H14.8335C15.7669 4.1665 16.233 4.1665 16.5895 4.34816C16.9031 4.50795 17.1587 4.76273 17.3185 5.07633C17.5 5.43251 17.5 5.899 17.5 6.8306V13.1695C17.5 14.1011 17.5 14.5669 17.3185 14.9231C17.1587 15.2367 16.9031 15.4919 16.5895 15.6517C16.2333 15.8332 15.7675 15.8332 14.8359 15.8332H5.16409C4.23249 15.8332 3.766 15.8332 3.40983 15.6517C3.09623 15.4919 2.84144 15.2367 2.68166 14.9231C2.5 14.5666 2.5 14.1001 2.5 13.1667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { MAIL_PATH } from \"./mailPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { MAIL_PATH } from \"./mailPath\";\n\nexport function MailIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={MAIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const MINUS_PATH = \"M3.33337 8H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { MINUS_PATH } from \"./minusPath\";\n\nexport { MINUS_PATH } from \"./minusPath\";\n\nexport function MinusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={MINUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const NAVIGATE_PATH =\n \"M5.691 14.2339C11.5836 17.7694 16.2976 13.0554 15.7084 4.21658C6.86968 3.62732 2.15584 8.34151 5.691 14.2339ZM5.691 14.2339C5.69093 14.2338 5.69107 14.234 5.691 14.2339ZM5.691 14.2339L4.16675 15.7576M5.691 14.2339L8.88079 11.0436\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { NAVIGATE_PATH } from \"./navigatePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { NAVIGATE_PATH } from \"./navigatePath\";\n\nexport function NavigateIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={NAVIGATE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PHONE_PATH =\n \"M7.91872 3.54768C7.66561 2.91492 7.05276 2.5 6.37126 2.5H4.07895C3.20692 2.5 2.5 3.20675 2.5 4.07878C2.5 11.491 8.50898 17.5 15.9212 17.5C16.7933 17.5 17.5 16.793 17.5 15.921L17.5004 13.6283C17.5004 12.9468 17.0856 12.334 16.4528 12.0809L14.2558 11.2024C13.6874 10.9751 13.0402 11.0774 12.57 11.4693L12.0029 11.9422C11.3407 12.4941 10.3664 12.4502 9.75683 11.8407L8.16018 10.2425C7.55066 9.63302 7.50561 8.65945 8.05745 7.99724L8.53027 7.43025C8.92218 6.95996 9.02541 6.31263 8.79805 5.74424L7.91872 3.54768Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { PHONE_PATH } from \"./phonePath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { PHONE_PATH } from \"./phonePath\";\n\nexport function PhoneIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={PHONE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const PLUS_PATH = \"M8.00004 3.33325V12.6666M3.33337 7.99992H12.6667\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { PLUS_PATH } from \"./plusPath\";\n\nexport { PLUS_PATH } from \"./plusPath\";\n\nexport function PlusIcon({ size = 16, color = colors.white, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={PLUS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Search (magnifying glass) paths — 20×20 viewBox. */\nexport const SEARCH_CIRCLE_PATH =\n \"M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z\";\n\nexport const SEARCH_HANDLE_PATH = \"M17.5 17.5L13.875 13.875\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\nimport { colors } from \"../../theme\";\n\nexport { SEARCH_CIRCLE_PATH, SEARCH_HANDLE_PATH } from \"./searchPath\";\n\ninterface SearchIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function SearchIcon({\n size = 20,\n color = colors.primary,\n strokeWidth = 2,\n}: SearchIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SEARCH_CIRCLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SEARCH_HANDLE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Settings icon path — 16×16 viewBox. */\nexport const SETTINGS_PATH =\n \"M8.00004 10C9.10461 10 10 9.10457 10 8C10 6.89543 9.10461 6 8.00004 6C6.89547 6 6.00004 6.89543 6.00004 8C6.00004 9.10457 6.89547 10 8.00004 10Z M12.4849 9.81818C12.4042 10.001 12.3801 10.2038 12.4158 10.4004C12.4514 10.597 12.5452 10.7784 12.6849 10.9212L12.7213 10.9576C12.834 11.0702 12.9234 11.2038 12.9844 11.351C13.0454 11.4981 13.0768 11.6559 13.0768 11.8152C13.0768 11.9744 13.0454 12.1322 12.9844 12.2793C12.9234 12.4265 12.834 12.5602 12.7213 12.6727C12.6087 12.7854 12.475 12.8748 12.3278 12.9358C12.1807 12.9968 12.023 13.0282 11.8637 13.0282C11.7044 13.0282 11.5467 12.9968 11.3995 12.9358C11.2524 12.8748 11.1187 12.7854 11.0061 12.6727L10.9697 12.6364C10.8269 12.4966 10.6455 12.4029 10.4489 12.3673C10.2523 12.3316 10.0495 12.3557 9.86671 12.4364C9.68745 12.5132 9.53458 12.6408 9.42689 12.8034C9.31921 12.966 9.26142 13.1565 9.26065 13.3515V13.4545C9.26065 13.776 9.13294 14.0843 8.90562 14.3116C8.67831 14.539 8.37 14.6667 8.04853 14.6667C7.72705 14.6667 7.41874 14.539 7.19143 14.3116C6.96411 14.0843 6.8364 13.776 6.8364 13.4545V13.4C6.83171 13.1994 6.76678 13.0048 6.65005 12.8416C6.53331 12.6784 6.37018 12.5541 6.18186 12.4848C5.99906 12.4042 5.79629 12.3801 5.59968 12.4158C5.40308 12.4514 5.22166 12.5451 5.07883 12.6849L5.04246 12.7212C4.92989 12.8339 4.79621 12.9233 4.64906 12.9843C4.50191 13.0453 4.34418 13.0767 4.18489 13.0767C4.0256 13.0767 3.86787 13.0453 3.72072 12.9843C3.57357 12.9233 3.43989 12.8339 3.32731 12.7212C3.21461 12.6086 3.12521 12.475 3.06421 12.3278C3.00321 12.1807 2.97181 12.0229 2.97181 11.8636C2.97181 11.7043 3.00321 11.5466 3.06421 11.3995C3.12521 11.2523 3.21461 11.1186 3.32731 11.0061L3.36368 10.9697C3.5034 10.8269 3.59712 10.6454 3.63277 10.4488C3.66842 10.2522 3.64435 10.0495 3.56368 9.86667C3.48685 9.68741 3.35929 9.53454 3.19669 9.42686C3.03409 9.31917 2.84355 9.26139 2.64853 9.26061H2.5455C2.22402 9.26061 1.91571 9.1329 1.6884 8.90559C1.46108 8.67827 1.33337 8.36996 1.33337 8.04849C1.33337 7.72701 1.46108 7.4187 1.6884 7.19139C1.91571 6.96407 2.22402 6.83637 2.5455 6.83637H2.60004C2.80064 6.83167 2.9952 6.76674 3.1584 6.65001C3.32161 6.53328 3.44593 6.37014 3.51519 6.18182C3.59587 5.99902 3.61993 5.79625 3.58429 5.59965C3.54864 5.40304 3.45491 5.22163 3.31519 5.07879L3.27883 5.04243C3.16613 4.92985 3.07672 4.79617 3.01573 4.64902C2.95473 4.50187 2.92333 4.34414 2.92333 4.18485C2.92333 4.02556 2.95473 3.86783 3.01573 3.72068C3.07672 3.57353 3.16613 3.43985 3.27883 3.32728C3.3914 3.21458 3.52509 3.12517 3.67223 3.06417C3.81938 3.00317 3.97711 2.97178 4.1364 2.97178C4.2957 2.97178 4.45343 3.00317 4.60057 3.06417C4.74772 3.12517 4.88141 3.21458 4.99398 3.32728L5.03034 3.36364C5.17318 3.50336 5.3546 3.59708 5.5512 3.63273C5.7478 3.66838 5.95058 3.64431 6.13337 3.56364H6.18186C6.36111 3.48681 6.51399 3.35925 6.62167 3.19665C6.72935 3.03405 6.78714 2.84351 6.78792 2.64849V2.54546C6.78792 2.22398 6.91562 1.91567 7.14294 1.68836C7.37026 1.46104 7.67857 1.33334 8.00004 1.33334C8.32151 1.33334 8.62982 1.46104 8.85714 1.68836C9.08446 1.91567 9.21216 2.22398 9.21216 2.54546V2.6C9.21294 2.79502 9.27073 2.98556 9.37841 3.14816C9.48609 3.31076 9.63897 3.43833 9.81822 3.51515C10.001 3.59583 10.2038 3.6199 10.4004 3.58425C10.597 3.5486 10.7784 3.45487 10.9213 3.31515L10.9576 3.27879C11.0702 3.16609 11.2039 3.07669 11.351 3.01569C11.4982 2.95469 11.6559 2.92329 11.8152 2.92329C11.9745 2.92329 12.1322 2.95469 12.2794 3.01569C12.4265 3.07669 12.5602 3.16609 12.6728 3.27879C12.7855 3.39136 12.8749 3.52505 12.9359 3.6722C12.9969 3.81935 13.0283 3.97707 13.0283 4.13637C13.0283 4.29566 12.9969 4.45339 12.9359 4.60054C12.8749 4.74769 12.7855 4.88137 12.6728 4.99394L12.6364 5.03031C12.4967 5.17314 12.403 5.35456 12.3673 5.55116C12.3317 5.74776 12.3557 5.95054 12.4364 6.13334V6.18182C12.5132 6.36107 12.6408 6.51395 12.8034 6.62163C12.966 6.72932 13.1565 6.7871 13.3516 6.78788H13.4546C13.7761 6.78788 14.0844 6.91559 14.3117 7.1429C14.539 7.37022 14.6667 7.67853 14.6667 8C14.6667 8.32148 14.539 8.62978 14.3117 8.8571C14.0844 9.08442 13.7761 9.21212 13.4546 9.21212H13.4C13.205 9.2129 13.0145 9.27069 12.8519 9.37837C12.6893 9.48605 12.5617 9.63893 12.4849 9.81818Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SETTINGS_PATH } from \"./settingsPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SETTINGS_PATH } from \"./settingsPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SettingsIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n <Path\n d={SETTINGS_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Show (eye) icon path — 20×20 viewBox. */\nexport const SHOW_PATH =\n \"M1.66669 10C1.66669 10 4.16669 4.16667 10 4.16667C15.8334 4.16667 18.3334 10 18.3334 10C18.3334 10 15.8334 15.8333 10 15.8333C4.16669 15.8333 1.66669 10 1.66669 10Z\";\n\nexport const SHOW_PUPIL_PATH =\n \"M10 12.5C11.3807 12.5 12.5 11.3807 12.5 10C12.5 8.61929 11.3807 7.5 10 7.5C8.61929 7.5 7.5 8.61929 7.5 10C7.5 11.3807 8.61929 12.5 10 12.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\nimport { colors } from \"../../theme\";\n\nexport { SHOW_PATH, SHOW_PUPIL_PATH } from \"./showPath\";\n\ninterface ShowIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ShowIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: ShowIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SHOW_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={SHOW_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Sidebar icon path — 20×20 viewBox. */\nexport const SIDEBAR_PATH =\n \"M12.5 2.5V17.5M6.5 2.5H13.5C14.9001 2.5 15.6002 2.5 16.135 2.77248C16.6054 3.01217 16.9878 3.39462 17.2275 3.86502C17.5 4.3998 17.5 5.09987 17.5 6.5V13.5C17.5 14.9001 17.5 15.6002 17.2275 16.135C16.9878 16.6054 16.6054 16.9878 16.135 17.2275C15.6002 17.5 14.9001 17.5 13.5 17.5H6.5C5.09987 17.5 4.3998 17.5 3.86502 17.2275C3.39462 16.9878 3.01217 16.6054 2.77248 16.135C2.5 15.6002 2.5 14.9001 2.5 13.5V6.5C2.5 5.09987 2.5 4.3998 2.77248 3.86502C3.01217 3.39462 3.39462 3.01217 3.86502 2.77248C4.3998 2.5 5.09987 2.5 6.5 2.5Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { SIDEBAR_PATH } from \"./sidebarPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { SIDEBAR_PATH } from \"./sidebarPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function SidebarIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={SIDEBAR_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** Star icon path — 28×26 viewBox. */\nexport const STAR_PATH =\n \"M12.6112 2.09824C12.9186 1.47565 13.0722 1.16436 13.2808 1.0649C13.4623 0.978367 13.6732 0.978367 13.8546 1.0649C14.0632 1.16436 14.2169 1.47565 14.5242 2.09824L17.4398 8.00486C17.5305 8.18866 17.5759 8.28056 17.6422 8.35192C17.7009 8.41509 17.7713 8.46628 17.8495 8.50264C17.9378 8.54371 18.0392 8.55854 18.242 8.58818L24.7637 9.54142C25.4505 9.6418 25.7938 9.69199 25.9528 9.85973C26.091 10.0057 26.156 10.2062 26.1297 10.4055C26.0995 10.6346 25.8509 10.8767 25.3537 11.361L20.6363 15.9557C20.4893 16.0989 20.4157 16.1706 20.3683 16.2558C20.3263 16.3312 20.2993 16.4141 20.2889 16.4998C20.2772 16.5966 20.2945 16.6978 20.3292 16.9001L21.4423 23.39C21.5597 24.0745 21.6184 24.4167 21.5081 24.6198C21.4121 24.7965 21.2415 24.9205 21.0438 24.9571C20.8165 24.9992 20.5092 24.8376 19.8945 24.5144L14.0642 21.4483C13.8826 21.3527 13.7917 21.305 13.696 21.2862C13.6113 21.2696 13.5242 21.2696 13.4394 21.2862C13.3437 21.305 13.2529 21.3527 13.0713 21.4483L7.24094 24.5144C6.62626 24.8376 6.31892 24.9992 6.09167 24.9571C5.89395 24.9205 5.72334 24.7965 5.62736 24.6198C5.51704 24.4167 5.57574 24.0745 5.69314 23.39L6.80622 16.9001C6.84092 16.6978 6.85828 16.5966 6.84653 16.4998C6.83614 16.4141 6.80919 16.3312 6.76718 16.2558C6.71974 16.1706 6.64621 16.0989 6.49916 15.9557L1.78179 11.361C1.28459 10.8767 1.03599 10.6346 1.00574 10.4055C0.979423 10.2062 1.04445 10.0057 1.18271 9.85973C1.34162 9.69199 1.685 9.6418 2.37177 9.54142L8.89346 8.58818C9.09627 8.55854 9.19768 8.54371 9.286 8.50264C9.36419 8.46628 9.43459 8.41509 9.49329 8.35192C9.55958 8.28056 9.60495 8.18866 9.69567 8.00486L12.6112 2.09824Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport { STAR_PATH } from \"./starPath\";\nimport type { IconProps } from \"../types\";\n\nexport interface StarIconProps extends IconProps {\n active?: boolean;\n height?: number;\n}\n\n/** Native — active is solid orange; inactive is a grey outline. */\nexport function StarIcon({\n active = false,\n size = 28,\n height,\n color,\n strokeWidth = 2,\n}: StarIconProps) {\n const resolvedColor = color ?? (active ? \"#E38E5E\" : colors.grey150);\n\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill=\"none\">\n <Path\n d={STAR_PATH}\n fill={active ? resolvedColor : \"none\"}\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n\nexport { STAR_PATH } from \"./starPath\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { STAR_PATH } from \"../Star/starPath\";\nimport type { IconProps } from \"../types\";\n\ninterface StarFilledIconProps extends IconProps {\n height?: number;\n}\n\n/** Native — supplied solid orange 28×26 star icon. */\nexport function StarFilledIcon({\n size = 28,\n height,\n color = \"#E38E5E\",\n strokeWidth = 2,\n}: StarFilledIconProps) {\n return (\n <Svg width={size} height={height ?? (size * 26) / 28} viewBox=\"0 0 28 26\" fill={color}>\n <Path\n d={STAR_PATH}\n fill={color}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/** User icon path — 20×20 viewBox. */\nexport const USER_PATH =\n \"M15.8334 17.5C15.8334 14.2783 13.2217 11.6667 10 11.6667C6.77836 11.6667 4.16669 14.2783 4.16669 17.5M10 9.16667C8.15907 9.16667 6.66669 7.67428 6.66669 5.83333C6.66669 3.99238 8.15907 2.5 10 2.5C11.841 2.5 13.3334 3.99238 13.3334 5.83333C13.3334 7.67428 11.841 9.16667 10 9.16667Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { USER_PATH } from \"./userPath\";\nimport { colors } from \"../../theme\";\n\nexport { USER_PATH } from \"./userPath\";\n\ninterface UserIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function UserIcon({ size = 20, color = colors.primary, strokeWidth = 2 }: UserIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={USER_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","export const USERS_ALT_PATH =\n \"M14.35 14.2566C14.9725 13.7177 15.4718 13.0513 15.814 12.3024C16.1562 11.5536 16.3333 10.7399 16.3333 9.91659C16.3333 8.36949 15.7187 6.88576 14.6248 5.7918C13.5308 4.69783 12.0471 4.08325 10.5 4.08325C8.95289 4.08325 7.46916 4.69783 6.3752 5.7918C5.28124 6.88576 4.66666 8.36949 4.66666 9.91659C4.66665 10.7399 4.84376 11.5536 5.18597 12.3024C5.52818 13.0513 6.02748 13.7177 6.64999 14.2566C5.01682 14.9961 3.6312 16.1904 2.6588 17.6966C1.6864 19.2027 1.16837 20.9571 1.16666 22.7499C1.16666 23.0593 1.28957 23.3561 1.50837 23.5749C1.72716 23.7937 2.0239 23.9166 2.33332 23.9166C2.64274 23.9166 2.93949 23.7937 3.15828 23.5749C3.37707 23.3561 3.49999 23.0593 3.49999 22.7499C3.49999 20.8934 4.23749 19.1129 5.55024 17.8002C6.863 16.4874 8.64347 15.7499 10.5 15.7499C12.3565 15.7499 14.137 16.4874 15.4497 17.8002C16.7625 19.1129 17.5 20.8934 17.5 22.7499C17.5 23.0593 17.6229 23.3561 17.8417 23.5749C18.0605 23.7937 18.3572 23.9166 18.6667 23.9166C18.9761 23.9166 19.2728 23.7937 19.4916 23.5749C19.7104 23.3561 19.8333 23.0593 19.8333 22.7499C19.8316 20.9571 19.3136 19.2027 18.3412 17.6966C17.3688 16.1904 15.9832 14.9961 14.35 14.2566ZM10.5 13.4166C9.80775 13.4166 9.13107 13.2113 8.55549 12.8267C7.97992 12.4421 7.53132 11.8955 7.26641 11.256C7.0015 10.6164 6.93219 9.9127 7.06724 9.23377C7.20229 8.55484 7.53563 7.9312 8.02512 7.44171C8.5146 6.95223 9.13824 6.61889 9.81717 6.48384C10.4961 6.34879 11.1998 6.4181 11.8394 6.68301C12.4789 6.94791 13.0255 7.39652 13.4101 7.97209C13.7947 8.54766 14 9.22435 14 9.91659C14 10.8448 13.6312 11.7351 12.9749 12.3915C12.3185 13.0478 11.4282 13.4166 10.5 13.4166ZM21.8633 13.7899C22.61 12.9491 23.0977 11.9105 23.2678 10.799C23.4378 9.68748 23.2831 8.55051 22.822 7.52492C22.361 6.49933 21.6134 5.62885 20.6692 5.01825C19.725 4.40764 18.6244 4.08295 17.5 4.08325C17.1906 4.08325 16.8938 4.20617 16.675 4.42496C16.4562 4.64375 16.3333 4.9405 16.3333 5.24992C16.3333 5.55934 16.4562 5.85608 16.675 6.07488C16.8938 6.29367 17.1906 6.41659 17.5 6.41659C18.4282 6.41659 19.3185 6.78533 19.9749 7.44171C20.6312 8.09809 21 8.98833 21 9.91659C20.9983 10.5294 20.8358 11.131 20.5287 11.6612C20.2216 12.1915 19.7807 12.6319 19.25 12.9383C19.077 13.038 18.9325 13.1805 18.8304 13.3521C18.7283 13.5237 18.6719 13.7186 18.6667 13.9183C18.6618 14.1163 18.7074 14.3123 18.7993 14.4879C18.8911 14.6634 19.0262 14.8127 19.1917 14.9216L19.6467 15.2249L19.7983 15.3066C21.2046 15.9736 22.391 17.0286 23.2178 18.3473C24.0446 19.666 24.4773 21.1935 24.465 22.7499C24.465 23.0593 24.5879 23.3561 24.8067 23.5749C25.0255 23.7937 25.3222 23.9166 25.6317 23.9166C25.9411 23.9166 26.2378 23.7937 26.4566 23.5749C26.6754 23.3561 26.7983 23.0593 26.7983 22.7499C26.8079 20.9596 26.3594 19.1965 25.4957 17.6283C24.632 16.0601 23.3816 14.7388 21.8633 13.7899Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\nimport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport { USERS_ALT_PATH } from \"./usersAltPath\";\n\nexport function UsersAltIcon({ size = 28, color = colors.white }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n <Path d={USERS_ALT_PATH} fill={color} />\n </Svg>\n );\n}\n","/** Video icon paths — 16×16 viewBox. */\nexport const VIDEO_PATHS = [\n \"M14.6667 5.95424C14.6667 5.55036 14.6667 5.34843 14.5868 5.25492C14.5175 5.17378 14.4136 5.13072 14.3072 5.13909C14.1846 5.14874 14.0418 5.29153 13.7563 5.57712L11.3334 7.99999L13.7563 10.4229C14.0418 10.7085 14.1846 10.8512 14.3072 10.8609C14.4136 10.8693 14.5175 10.8262 14.5868 10.7451C14.6667 10.6516 14.6667 10.4496 14.6667 10.0457V5.95424Z\",\n \"M1.33337 6.53333C1.33337 5.41322 1.33337 4.85317 1.55136 4.42535C1.74311 4.04902 2.04907 3.74306 2.42539 3.55132C2.85322 3.33333 3.41327 3.33333 4.53337 3.33333H8.13337C9.25348 3.33333 9.81353 3.33333 10.2414 3.55132C10.6177 3.74306 10.9236 4.04902 11.1154 4.42535C11.3334 4.85317 11.3334 5.41322 11.3334 6.53333V9.46666C11.3334 10.5868 11.3334 11.1468 11.1154 11.5746C10.9236 11.951 10.6177 12.2569 10.2414 12.4487C9.81353 12.6667 9.25348 12.6667 8.13337 12.6667H4.53337C3.41327 12.6667 2.85322 12.6667 2.42539 12.4487C2.04907 12.2569 1.74311 11.951 1.55136 11.5746C1.33337 11.1468 1.33337 10.5868 1.33337 9.46666V6.53333Z\",\n] as const;\n","import Svg, { Path } from \"react-native-svg\";\nimport { VIDEO_PATHS } from \"./videoPath\";\nimport { colors } from \"../../theme\";\nimport type { IconProps } from \"../types\";\n\nexport { VIDEO_PATHS } from \"./videoPath\";\n\n/** Native — react-native-svg (peer dependency). */\nexport function VideoIcon({ size = 20, color = colors.primary, strokeWidth = 1.5 }: IconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\">\n {VIDEO_PATHS.map((path) => (\n <Path\n key={path}\n d={path}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))}\n </Svg>\n );\n}\n","import { ArrowRightIcon } from \"./ArrowRight\";\nimport { BagIcon } from \"./Bag\";\nimport { BellIcon } from \"./Bell\";\nimport { BuildingIcon } from \"./Building\";\nimport { CalendarIcon } from \"./Calendar\";\nimport { CalendarOutlineIcon } from \"./CalendarOutline\";\nimport { CameraIcon } from \"./Camera\";\nimport { CheckIcon } from \"./Check\";\nimport { CheckBadgeIcon } from \"./CheckBadge\";\nimport { ChevronDownIcon } from \"./ChevronDown\";\nimport { ChevronLeftIcon } from \"./ChevronLeft\";\nimport { ClockIcon } from \"./Clock\";\nimport { FacebookIcon } from \"./Facebook\";\nimport { HeartIcon } from \"./Heart\";\nimport { GlobeIcon } from \"./Globe\";\nimport { HelpCircleIcon } from \"./HelpCircle\";\nimport { HomeIcon } from \"./Home\";\nimport { InstagramIcon } from \"./Instagram\";\nimport { KeyIcon } from \"./Key\";\nimport { LayoutGridIcon } from \"./LayoutGrid\";\nimport { LinkedInIcon } from \"./LinkedIn\";\nimport { LogOutIcon } from \"./LogOut\";\nimport { MailIcon } from \"./Mail\";\nimport { MinusIcon } from \"./Minus\";\nimport { NavigateIcon } from \"./Navigate\";\nimport { PhoneIcon } from \"./Phone\";\nimport { PlusIcon } from \"./Plus\";\nimport { SearchIcon } from \"./Search\";\nimport { SettingsIcon } from \"./Settings\";\nimport { ShowIcon } from \"./Show\";\nimport { SidebarIcon } from \"./Sidebar\";\nimport { StarIcon } from \"./Star\";\nimport { StarFilledIcon } from \"./StarFilled\";\nimport { UserIcon } from \"./User\";\nimport { UsersAltIcon } from \"./UsersAlt\";\nimport { VideoIcon } from \"./Video\";\nimport type { IconComponent } from \"./types\";\n\nexport const icons = {\n arrowRight: ArrowRightIcon,\n bag: BagIcon,\n bell: BellIcon,\n building: BuildingIcon,\n calendar: CalendarIcon,\n calendarOutline: CalendarOutlineIcon,\n camera: CameraIcon,\n check: CheckIcon,\n checkBadge: CheckBadgeIcon,\n chevronDown: ChevronDownIcon,\n chevronLeft: ChevronLeftIcon,\n clock: ClockIcon,\n facebook: FacebookIcon,\n heart: HeartIcon,\n globe: GlobeIcon,\n helpCircle: HelpCircleIcon,\n home: HomeIcon,\n instagram: InstagramIcon,\n key: KeyIcon,\n layoutGrid: LayoutGridIcon,\n linkedin: LinkedInIcon,\n logOut: LogOutIcon,\n mail: MailIcon,\n minus: MinusIcon,\n navigate: NavigateIcon,\n phone: PhoneIcon,\n plus: PlusIcon,\n search: SearchIcon,\n settings: SettingsIcon,\n show: ShowIcon,\n sidebar: SidebarIcon,\n star: StarIcon,\n starFilled: StarFilledIcon,\n user: UserIcon,\n usersAlt: UsersAltIcon,\n video: VideoIcon,\n} as const satisfies Record<string, IconComponent>;\n\nexport type IconName = keyof typeof icons;\n\nexport const iconNames = Object.keys(icons) as IconName[];\n\nexport const iconGroups = {\n navigation: [\"arrowRight\", \"chevronDown\", \"chevronLeft\", \"home\", \"navigate\"],\n actions: [\n \"show\",\n \"bell\",\n \"camera\",\n \"key\",\n \"check\",\n \"checkBadge\",\n \"search\",\n \"calendar\",\n \"calendarOutline\",\n \"heart\",\n \"star\",\n \"starFilled\",\n \"minus\",\n \"plus\",\n ],\n objects: [\"bag\", \"building\", \"clock\", \"user\", \"usersAlt\", \"video\"],\n communication: [\"mail\", \"phone\"],\n social: [\"facebook\", \"instagram\", \"linkedin\"],\n interface: [\"globe\", \"layoutGrid\", \"sidebar\", \"settings\", \"helpCircle\", \"logOut\"],\n} as const satisfies Record<string, readonly IconName[]>;\n\nexport type IconGroup = keyof typeof iconGroups;\n\nexport const iconGroupNames = Object.keys(iconGroups) as IconGroup[];\n\nexport function getIconsByGroup(group: IconGroup): IconName[] {\n return [...iconGroups[group]];\n}\n","import { icons, type IconName } from \"./registry\";\nimport type { IconProps } from \"./types\";\n\nexport interface IconByNameProps extends IconProps {\n name: IconName;\n}\n\nexport function Icon({ name, ...props }: IconByNameProps) {\n const Component = icons[name];\n return <Component {...props} />;\n}\n","import type { ForwardedRef, MutableRefObject, RefCallback } from \"react\";\n\n/**\n * Combines a component's internal ref (used e.g. by `useApplyWebClassName`)\n * with an optional externally-forwarded ref, so consumers can still call\n * `.focus()`/`.measure()` on the underlying native node via `ref`.\n */\nexport function mergeRefs<T>(\n internalRef: MutableRefObject<T | null>,\n forwardedRef: ForwardedRef<T>,\n): RefCallback<T> {\n return (node) => {\n internalRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n}\n","import { useLayoutEffect } from \"react\";\nimport { Platform } from \"react-native\";\n\ninterface ClassListElement {\n classList: {\n add: (...classes: string[]) => void;\n remove: (...classes: string[]) => void;\n };\n}\n\nfunction hasClassList(node: unknown): node is ClassListElement {\n return (\n typeof node === \"object\" &&\n node !== null &&\n \"classList\" in node &&\n typeof (node as ClassListElement).classList?.add === \"function\"\n );\n}\n\nfunction resolveWebElement(ref: React.RefObject<unknown>): ClassListElement | null {\n const node = ref.current;\n if (!node) return null;\n\n if (hasClassList(node)) return node;\n\n const host = node as {\n _touchableNode?: unknown;\n getScrollableNode?: () => unknown;\n };\n\n if (hasClassList(host._touchableNode)) return host._touchableNode;\n\n if (typeof host.getScrollableNode === \"function\") {\n const scrollNode = host.getScrollableNode();\n if (hasClassList(scrollNode)) return scrollNode;\n }\n\n return null;\n}\n\n/**\n * Applies CSS class names to the underlying DOM node on web.\n * Keeps TouchableOpacity/Text as the render path so default RN styles stay intact.\n *\n * Retries via rAF when the host node is not ready yet — otherwise classes like\n * `h-13` / `w-full` would only land after a later re-render (e.g. typing in a form),\n * which visibly changes button size.\n */\nexport function useApplyWebClassName(\n ref: React.RefObject<unknown>,\n className?: string,\n enabled = true,\n): void {\n useLayoutEffect(() => {\n if (!enabled || Platform.OS !== \"web\" || !className?.trim()) return;\n\n let cancelled = false;\n let rafId = 0;\n let appliedElement: ClassListElement | null = null;\n const classes = className.trim().split(/\\s+/);\n\n const apply = () => {\n if (cancelled) return;\n\n const element = resolveWebElement(ref);\n if (!element) {\n rafId = requestAnimationFrame(apply);\n return;\n }\n\n appliedElement = element;\n element.classList.add(...classes);\n };\n\n apply();\n\n return () => {\n cancelled = true;\n if (rafId) cancelAnimationFrame(rafId);\n appliedElement?.classList.remove(...classes);\n };\n }, [ref, className, enabled]);\n}\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface MenuItemProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Leading icon, e.g. `<CalendarIcon size={16} />` — pass it pre-colored. */\n icon?: ReactNode;\n label: string;\n onPress?: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n /** Row background at rest. Defaults to transparent. */\n backgroundColor?: string;\n /** Row background on hover/press. Defaults to `colors.grey600`. */\n hoverColor?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 16;\n\nexport const MenuItem = forwardRef<ComponentRef<typeof Pressable>, MenuItemProps>(function MenuItem(\n {\n icon,\n label,\n onPress,\n disabled = false,\n backgroundColor,\n hoverColor,\n style,\n labelStyle,\n className,\n accessibilityLabel,\n hitSlop = 4,\n onHoverIn,\n onHoverOut,\n onPressIn,\n onPressOut,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [hovered, setHovered] = useState(false);\n\n useApplyWebClassName(containerRef, className);\n\n const resolvedBackground = hovered\n ? (hoverColor ?? colors.grey600)\n : (backgroundColor ?? \"transparent\");\n const resolvedAccessibilityLabel = accessibilityLabel ?? label;\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={onPress}\n disabled={disabled}\n hitSlop={hitSlop}\n onHoverIn={(event) => {\n setHovered(true);\n onHoverIn?.(event);\n }}\n onHoverOut={(event) => {\n setHovered(false);\n onHoverOut?.(event);\n }}\n onPressIn={(event) => {\n setHovered(true);\n onPressIn?.(event);\n }}\n onPressOut={(event) => {\n setHovered(false);\n onPressOut?.(event);\n }}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[\n styles.root,\n { backgroundColor: resolvedBackground },\n disabled && styles.disabled,\n style,\n ]}\n >\n {icon ? <View style={styles.iconSlot}>{icon}</View> : null}\n <Text style={[styles.label, labelStyle]} numberOfLines={1}>\n {label}\n </Text>\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n minHeight: 40,\n borderRadius: ITEM_RADIUS,\n paddingVertical: 12,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n alignSelf: \"stretch\",\n },\n disabled: {\n opacity: 0.5,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...avatarTypography.menuItem,\n color: colors.white,\n flex: 1,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Image,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type GestureResponderEvent,\n type PressableProps,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, UserIcon } from \"../../icons\";\nimport { avatarTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { MenuItem, type MenuItemProps } from \"../../primitives\";\n\n/** Data shape for an Avatar dropdown option — same fields as `MenuItem`. */\nexport type AvatarMenuItem = Pick<\n MenuItemProps,\n \"icon\" | \"label\" | \"disabled\" | \"backgroundColor\" | \"hoverColor\"\n> & {\n /** Stable identity for React keys; falls back to `label`. */\n key?: string;\n onPress: () => void;\n};\n\nexport interface AvatarProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n /** Logged-in user's display name. */\n name: string;\n /** Shown under the name, e.g. the user's email. */\n email?: string;\n /** Photo URL; falls back to a placeholder icon when missing or when it fails to load. */\n imageUrl?: string | null;\n /** Called on every press, in addition to any menu toggling driven by `menuItems`. */\n onPress?: (event: GestureResponderEvent) => void;\n /** External — non-interactive. */\n disabled?: boolean;\n /** Trailing chevron, typically used to hint a dropdown/menu. */\n showChevron?: boolean;\n /**\n * Account-menu options, supplied entirely by the consumer (icon, label,\n * action, and per-item colors). When set, pressing the chip opens a\n * dropdown listing them via `MenuItem`.\n */\n menuItems?: AvatarMenuItem[];\n /** Controlled open state for the menu. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Fixed menu width; defaults to matching the chip's width. */\n menuWidth?: number;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst IMAGE_SIZE = 48;\nconst CONTAINER_RADIUS = 71;\nconst CHEVRON_SIZE = 20;\nconst FALLBACK_ICON_SIZE = 20;\nconst MENU_RADIUS = 16;\n\nexport const Avatar = forwardRef<ComponentRef<typeof View>, AvatarProps>(function Avatar(\n {\n name,\n email,\n imageUrl,\n onPress,\n disabled = false,\n showChevron = true,\n menuItems,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n menuWidth,\n style,\n className,\n accessibilityLabel,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n\n const resolvedMenuItems = menuItems ?? [];\n const hasMenu = resolvedMenuItems.length > 0;\n const isInteractive = onPress != null || hasMenu;\n const isOpenControlled = typeof openProp === \"boolean\";\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = hasMenu && (isOpenControlled ? openProp : uncontrolledOpen);\n\n useApplyWebClassName(containerRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const focusTrigger = useCallback(() => {\n const node = containerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n const handlePress = (event: GestureResponderEvent) => {\n onPress?.(event);\n if (hasMenu) setOpen(!isOpen);\n };\n\n const handleItemPress = useCallback(\n (item: AvatarMenuItem) => {\n if (item.disabled) return;\n item.onPress();\n closeAndFocusTrigger();\n },\n [closeAndFocusTrigger],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n // Escape closes the menu and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const resolvedAccessibilityLabel = accessibilityLabel ?? [name, email].filter(Boolean).join(\", \");\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, isOpen && styles.wrapperOpen]}>\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled || !isInteractive}\n hitSlop={isInteractive ? hitSlop : undefined}\n accessibilityRole={isInteractive ? \"button\" : undefined}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={\n isInteractive ? { disabled, expanded: hasMenu ? isOpen : undefined } : undefined\n }\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View style={styles.imageWrap}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.image}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <View style={styles.imageFallback}>\n <UserIcon size={FALLBACK_ICON_SIZE} color={colors.primary} />\n </View>\n )}\n </View>\n\n <View style={styles.textColumn}>\n <Text style={styles.name} numberOfLines={1}>\n {name}\n </Text>\n {email ? (\n <Text style={styles.email} numberOfLines={1}>\n {email}\n </Text>\n ) : null}\n </View>\n\n {showChevron ? (\n <View style={[styles.chevronSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={CHEVRON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n ) : null}\n </Pressable>\n\n {hasMenu && isOpen ? (\n <View style={[styles.menu, menuWidth != null && { right: undefined, width: menuWidth }]}>\n {resolvedMenuItems.map((item) => {\n const itemKey = item.key ?? item.label;\n return (\n <MenuItem\n key={itemKey}\n icon={item.icon}\n label={item.label}\n disabled={item.disabled}\n backgroundColor={item.backgroundColor}\n hoverColor={item.hoverColor}\n onPress={() => handleItemPress(item)}\n />\n );\n })}\n </View>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 12,\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n paddingRight: 12,\n borderRadius: CONTAINER_RADIUS,\n backgroundColor: colors.grey700,\n },\n disabled: {\n opacity: 0.6,\n },\n imageWrap: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n borderRadius: IMAGE_SIZE / 2,\n overflow: \"hidden\",\n flexShrink: 0,\n },\n image: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n },\n imageFallback: {\n width: IMAGE_SIZE,\n height: IMAGE_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: colors.grey600,\n },\n textColumn: {\n minWidth: 0,\n flexShrink: 1,\n gap: 3,\n },\n name: {\n ...avatarTypography.name,\n color: colors.white,\n },\n email: {\n ...avatarTypography.email,\n color: colors.grey0,\n },\n chevronSlot: {\n width: CHEVRON_SIZE,\n height: CHEVRON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 8,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { badgeTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type BadgeVariant = \"default\" | \"transparent\";\n\nexport interface BadgeProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n variant?: BadgeVariant;\n icon?: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 20;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(10.3px)\",\n WebkitBackdropFilter: \"blur(10.3px)\",\n } as ViewStyle)\n : {};\n\n/**\n * Variant chrome — icon color is part of the variant, not a separate prop.\n * - default: grey fill, no border, white icon\n * - transparent: muted white fill + 1px border, primary icon, blur on web\n */\nconst variantConfig = {\n default: {\n backgroundColor: colors.grey750,\n iconColor: colors.white,\n border: false,\n blur: false,\n },\n transparent: {\n backgroundColor: colors.whiteAlpha5,\n iconColor: colors.primary,\n border: true,\n blur: true,\n },\n} as const satisfies Record<\n BadgeVariant,\n { backgroundColor: string; iconColor: string; border: boolean; blur: boolean }\n>;\n\nexport const Badge = forwardRef<ComponentRef<typeof View>, BadgeProps>(function Badge(\n { label, variant = \"default\", icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const preset = variantConfig[variant];\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[\n styles.base,\n { backgroundColor: preset.backgroundColor },\n preset.border ? styles.transparentBorder : null,\n preset.blur ? webBlurStyle : null,\n style,\n ]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n {Icon ? (\n <View style={styles.iconSlot}>\n <Icon size={ICON_SIZE} color={preset.iconColor} />\n </View>\n ) : null}\n\n <Text style={[styles.label, Platform.OS === \"android\" ? styles.labelAndroid : null]}>\n {label}\n </Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n minHeight: 44,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 12,\n borderRadius: 79,\n overflow: \"hidden\",\n borderWidth: 0,\n borderColor: \"transparent\",\n borderStyle: \"solid\",\n },\n transparentBorder: {\n borderWidth: 1,\n borderColor: colors.whiteAlpha5,\n borderStyle: \"solid\",\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...badgeTypography,\n color: colors.white,\n },\n labelAndroid: {\n includeFontPadding: false,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { MinusIcon, PlusIcon } from \"../../icons\";\nimport { colors, counterTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface CounterProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BUTTON_SIZE = 32;\n\nconst webBlurStyle: ViewStyle =\n Platform.OS === \"web\"\n ? ({\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n } as ViewStyle)\n : {};\n\nfunction clamp(value: number, min: number, max?: number) {\n return Math.max(min, max === undefined ? value : Math.min(value, max));\n}\n\nexport const Counter = forwardRef<ComponentRef<typeof View>, CounterProps>(function Counter(\n {\n value,\n defaultValue,\n onValueChange,\n min = 1,\n max,\n step = 1,\n disabled = false,\n style,\n className,\n hitSlop,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() =>\n clamp(defaultValue ?? min, min, max),\n );\n const resolvedValue = clamp(isControlled ? value : uncontrolledValue, min, max);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const decrementDisabled = disabled || resolvedValue <= min;\n const incrementDisabled = disabled || (max !== undefined && resolvedValue >= max);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n const updateValue = (nextValue: number) => {\n const next = clamp(nextValue, min, max);\n if (next === resolvedValue) return;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.base, style]}>\n <Pressable\n disabled={decrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue - step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Decrease value\"\n accessibilityState={{ disabled: decrementDisabled }}\n style={[styles.button, webBlurStyle, decrementDisabled && styles.buttonDisabled]}\n >\n <MinusIcon />\n </Pressable>\n\n <Text style={styles.value}>{resolvedValue}</Text>\n\n <Pressable\n disabled={incrementDisabled}\n hitSlop={hitSlop}\n onPress={() => updateValue(resolvedValue + step)}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Increase value\"\n accessibilityState={{ disabled: incrementDisabled }}\n style={[styles.button, webBlurStyle, incrementDisabled && styles.buttonDisabled]}\n >\n <PlusIcon />\n </Pressable>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 17,\n },\n button: {\n width: BUTTON_SIZE,\n height: BUTTON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderWidth: 1,\n borderColor: colors.whiteAlpha10,\n borderRadius: 39,\n },\n buttonDisabled: {\n opacity: 0.25,\n },\n value: {\n ...counterTypography,\n color: colors.white,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, segmentedToggleTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface SegmentedToggleOption {\n value: string;\n label: string;\n icon?: IconComponent;\n}\n\nexport interface SegmentedToggleProps extends Omit<ViewProps, \"style\" | \"children\"> {\n options: readonly [SegmentedToggleOption, SegmentedToggleOption];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n fullWidth?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst ICON_SIZE = 20;\nconst ANIMATION_DURATION = 200;\n\nexport const SegmentedToggle = forwardRef<ComponentRef<typeof View>, SegmentedToggleProps>(\n function SegmentedToggle(\n {\n options,\n value,\n defaultValue = options[0].value,\n onValueChange,\n fullWidth = true,\n disabled = false,\n style,\n className,\n hitSlop,\n onLayout,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const selectedValue = isControlled ? value : uncontrolledValue;\n const selectedIndex = Math.max(\n 0,\n options.findIndex(({ value: optionValue }) => optionValue === selectedValue),\n );\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const progress = useRef(new Animated.Value(selectedIndex)).current;\n const [contentWidths, setContentWidths] = useState<[number, number]>([0, 0]);\n const [containerWidth, setContainerWidth] = useState(0);\n const availableOptionWidth = Math.max(0, (containerWidth - 12) / 2);\n const widestContentWidth = Math.max(...contentWidths);\n const contentBasedOptionWidth = widestContentWidth > 0 ? widestContentWidth + 24 * 2 : 0;\n const optionWidth = fullWidth ? availableOptionWidth : contentBasedOptionWidth;\n const indicatorTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, optionWidth + 4],\n });\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n useEffect(() => {\n const animation = Animated.timing(progress, {\n toValue: selectedIndex,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.cubic),\n useNativeDriver: true,\n });\n\n animation.start();\n return () => animation.stop();\n }, [progress, selectedIndex]);\n\n const selectOption = (nextValue: string) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContainerWidth((currentWidth) =>\n currentWidth === nextWidth ? currentWidth : nextWidth,\n );\n onLayout?.(event);\n }}\n style={[\n styles.base,\n fullWidth ? styles.fullWidth : styles.contentWidth,\n disabled && styles.disabled,\n style,\n ]}\n accessibilityRole=\"radiogroup\"\n >\n {optionWidth > 0 ? (\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.activeIndicator,\n { width: optionWidth, transform: [{ translateX: indicatorTranslateX }] },\n ]}\n />\n ) : null}\n {options.map(({ value: optionValue, label, icon: Icon }, index) => {\n const selected = optionValue === selectedValue;\n const iconColor = selected ? colors.primary : colors.whiteAlpha20;\n const labelColor = selected ? colors.whiteAlpha86 : colors.whiteAlpha40;\n\n return (\n <Pressable\n key={optionValue}\n onPress={() => selectOption(optionValue)}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"radio\"\n accessibilityLabel={label}\n accessibilityState={{ selected, disabled }}\n style={[\n styles.option,\n fullWidth ? styles.optionFullWidth : optionWidth > 0 && { minWidth: optionWidth },\n ]}\n >\n <View\n onLayout={(event) => {\n const nextWidth = event.nativeEvent.layout.width;\n setContentWidths((currentWidths) => {\n if (currentWidths[index] === nextWidth) return currentWidths;\n const nextWidths: [number, number] = [currentWidths[0], currentWidths[1]];\n nextWidths[index] = nextWidth;\n return nextWidths;\n });\n }}\n style={styles.optionContent}\n >\n {Icon ? <Icon size={ICON_SIZE} color={iconColor} /> : null}\n <Text numberOfLines={1} style={[styles.label, { color: labelColor }]}>\n {label}\n </Text>\n </View>\n </Pressable>\n );\n })}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n height: 44,\n flexDirection: \"row\",\n padding: 4,\n gap: 4,\n borderRadius: 60,\n backgroundColor: colors.grey700,\n overflow: \"hidden\",\n },\n fullWidth: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n contentWidth: {\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n option: {\n zIndex: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingHorizontal: 24,\n borderRadius: 60,\n },\n optionContent: {\n maxWidth: \"100%\",\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 12,\n },\n optionFullWidth: {\n flex: 1,\n minWidth: 0,\n },\n activeIndicator: {\n position: \"absolute\",\n top: 4,\n left: 4,\n height: 36,\n backgroundColor: colors.grey600,\n borderRadius: 60,\n },\n label: {\n ...segmentedToggleTypography,\n flexShrink: 1,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon, GlobeIcon } from \"../../icons\";\nimport { colors, fonts, languageSwitcherTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface LanguageOption {\n /** Stable locale identifier, such as `hy`, `en`, or `ru`. */\n value: string;\n /** Short label shown in the trigger and menu. */\n label: string;\n}\n\nexport interface LanguageSwitcherProps extends Omit<ViewProps, \"style\" | \"children\"> {\n options?: readonly LanguageOption[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nexport const defaultLanguageOptions = [\n { value: \"hy\", label: \"Հայ\" },\n { value: \"en\", label: \"Eng\" },\n { value: \"ru\", label: \"Рус\" },\n] as const satisfies readonly LanguageOption[];\n\nconst CONTROL_WIDTH = 90;\nconst CONTROL_HEIGHT = 35;\nconst ICON_SIZE = 16;\n\nexport const LanguageSwitcher = forwardRef<ComponentRef<typeof View>, LanguageSwitcherProps>(\n function LanguageSwitcher(\n {\n options = defaultLanguageOptions,\n value,\n defaultValue,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n accessibilityLabel = \"Language\",\n style,\n className,\n hitSlop = 8,\n ...rest\n },\n forwardedRef,\n ) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setWrapperRef = useMemo(() => mergeRefs(wrapperRef, forwardedRef), [forwardedRef]);\n const firstValue = options[0]?.value ?? \"\";\n const isValueControlled = value !== undefined;\n const isOpenControlled = openProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? firstValue);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [triggerHovered, setTriggerHovered] = useState(false);\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n const selectedValue = isValueControlled ? value : uncontrolledValue;\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const selectedOption =\n options.find((option) => option.value === selectedValue) ?? options[0] ?? null;\n\n useApplyWebClassName(wrapperRef, className?.trim() || undefined);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (disabled || next === isOpen) return;\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [disabled, isOpen, isOpenControlled, onOpenChange],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, [setOpen]);\n\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const wrapper = wrapperRef.current as unknown as {\n contains?: (node: Node) => boolean;\n } | null;\n const target = event.target;\n if (wrapper?.contains && target instanceof Node && !wrapper.contains(target)) {\n setOpen(false);\n }\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [closeAndFocusTrigger, isOpen, setOpen]);\n\n const selectLanguage = (nextValue: string) => {\n if (nextValue !== selectedValue) {\n if (!isValueControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n }\n closeAndFocusTrigger();\n };\n\n return (\n <View\n {...rest}\n ref={setWrapperRef}\n style={[styles.wrapper, isOpen && styles.wrapperOpen, disabled && styles.disabled, style]}\n >\n <Pressable\n ref={triggerRef}\n onPress={() => setOpen(!isOpen)}\n disabled={disabled || options.length === 0}\n hitSlop={hitSlop}\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n onHoverIn={() => setTriggerHovered(true)}\n onHoverOut={() => setTriggerHovered(false)}\n style={({ pressed }) => [\n styles.trigger,\n (triggerHovered || pressed || isOpen) && styles.triggerActive,\n ]}\n >\n <GlobeIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n <Text style={styles.triggerLabel} numberOfLines={1}>\n {selectedOption?.label ?? \"\"}\n </Text>\n <View style={[styles.chevron, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={colors.white} strokeWidth={2} />\n </View>\n </Pressable>\n\n {isOpen && options.length > 0 ? (\n <View style={styles.menu} accessibilityRole=\"menu\">\n {options.map((option) => {\n const selected = option.value === selectedValue;\n return (\n <Pressable\n key={option.value}\n onPress={() => selectLanguage(option.value)}\n accessibilityRole=\"menuitem\"\n accessibilityLabel={option.label}\n accessibilityState={{ selected }}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() => setHoveredValue(null)}\n style={({ pressed }) => [\n styles.item,\n selected\n ? styles.itemSelected\n : (hoveredValue === option.value || pressed) && styles.itemHovered,\n ]}\n >\n <Text style={[styles.itemLabel, selected && styles.itemLabelSelected]}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </View>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n wrapper: {\n position: \"relative\",\n width: CONTROL_WIDTH,\n alignSelf: \"flex-start\",\n },\n wrapperOpen: {\n zIndex: 20,\n },\n disabled: {\n opacity: 0.6,\n },\n trigger: {\n width: CONTROL_WIDTH,\n height: CONTROL_HEIGHT,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n padding: 8,\n borderRadius: 12,\n backgroundColor: \"transparent\",\n },\n triggerActive: {\n backgroundColor: colors.grey700,\n },\n triggerLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n minWidth: 0,\n flex: 1,\n color: colors.white,\n },\n chevron: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: CONTROL_HEIGHT + 8,\n left: 0,\n width: CONTROL_WIDTH,\n padding: 8,\n gap: 8,\n borderRadius: 12,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: { boxShadow: `0 8px 24px ${colors.black}73` },\n default: { elevation: 8 },\n }),\n },\n item: {\n height: CONTROL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n paddingVertical: 8,\n paddingHorizontal: 12,\n borderRadius: 8,\n },\n itemHovered: {\n backgroundColor: colors.whiteAlpha5,\n },\n itemSelected: {\n backgroundColor: colors.primaryMuted,\n },\n itemLabel: {\n ...languageSwitcherTypography,\n ...Platform.select({ web: { fontFamily: `${fonts.sans}, sans-serif` } }),\n color: colors.white,\n },\n itemLabelSelected: {\n color: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport type { IconComponent } from \"../../icons\";\nimport { colors, statCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface StatCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n label: string;\n icon: IconComponent;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\nconst ICON_SIZE = 28;\n\nexport const StatCard = forwardRef<ComponentRef<typeof View>, StatCardProps>(function StatCard(\n { label, icon: Icon, style, className, accessibilityLabel, ...rest },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const resolvedClassName = className?.trim() || undefined;\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedClassName);\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.base, style]}\n accessibilityRole=\"text\"\n accessibilityLabel={accessibilityLabel ?? label}\n >\n <Icon size={ICON_SIZE} color={colors.white} />\n <Text style={styles.label}>{label}</Text>\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n base: {\n width: 204.5,\n minHeight: 114,\n padding: 24,\n gap: 16,\n borderRadius: 20,\n backgroundColor: colors.grey750,\n },\n label: {\n ...statCardTypography,\n color: colors.whiteAlpha86,\n },\n});\n","import { forwardRef, useMemo, useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n type GestureResponderEvent,\n type StyleProp,\n type TextStyle,\n type TouchableOpacityProps,\n type ViewStyle,\n} from \"react-native\";\nimport { ArrowRightIcon } from \"../../icons\";\nimport { buttonTypography, colors } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps extends Omit<\n TouchableOpacityProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\"\n> {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n icon?: ReactNode;\n style?: StyleProp<ViewStyle>;\n textStyle?: StyleProp<TextStyle>;\n className?: string;\n textClassName?: string;\n}\n\ntype VariantStyleSet = {\n backgroundColor: string;\n textColor: string;\n iconBadgeBackgroundColor: string;\n iconColor: string;\n};\n\nconst variantConfig: Record<ButtonVariant, VariantStyleSet> = {\n primary: {\n backgroundColor: colors.primary,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.primary,\n },\n secondary: {\n backgroundColor: colors.grey500,\n textColor: colors.white,\n iconBadgeBackgroundColor: colors.grey600,\n iconColor: colors.white,\n },\n};\n\nconst sizeConfig = {\n lg: {\n minHeight: 44,\n borderRadius: 40,\n paddingVertical: 4,\n paddingLeft: 20,\n paddingRightWithIcon: 4,\n paddingRight: 20,\n gap: 20,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconSize: 20,\n },\n sm: {\n minHeight: 32,\n borderRadius: 40,\n paddingVertical: 6,\n paddingLeft: 12,\n paddingRightWithIcon: 4,\n paddingRight: 12,\n gap: 12,\n text: buttonTypography.sm,\n iconContainerSize: 20,\n iconSize: 12,\n },\n} as const satisfies Record<ButtonSize, Record<string, unknown>>;\n\nexport const Button = forwardRef<ComponentRef<typeof TouchableOpacity>, ButtonProps>(\n function Button(\n {\n title,\n children,\n onPress,\n disabled = false,\n variant = \"primary\",\n size = \"lg\",\n showIcon = false,\n icon,\n style,\n textStyle,\n className,\n textClassName,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof TouchableOpacity>>(null);\n const textRef = useRef<ComponentRef<typeof Text>>(null);\n const preset = variantConfig[variant];\n const metrics = sizeConfig[size];\n\n const label = typeof children !== \"undefined\" ? children : title;\n const hasCustomChildren = typeof children !== \"undefined\";\n const customIcon = icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = className?.trim() || undefined;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, resolvedContainerClassName);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode = customIcon ?? (\n <ArrowRightIcon size={metrics.iconSize} color={preset.iconColor} />\n );\n\n const containerStyle = [\n styles.base,\n {\n minHeight: metrics.minHeight,\n borderRadius: metrics.borderRadius,\n backgroundColor: preset.backgroundColor,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingLeft,\n paddingRight: hasIcon ? metrics.paddingRightWithIcon : metrics.paddingRight,\n gap: hasIcon ? metrics.gap : 0,\n },\n disabled && styles.disabled,\n style,\n ];\n\n const labelStyle = [\n styles.label,\n metrics.text,\n { color: preset.textColor },\n Platform.OS === \"android\" ? styles.labelAndroid : null,\n !hasIcon && styles.labelCentered,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n {...rest}\n ref={setContainerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n >\n {hasCustomChildren ? (\n children\n ) : (\n <Text ref={textRef} style={labelStyle}>\n {label}\n </Text>\n )}\n\n {hasIcon ? (\n <View\n style={[\n styles.iconContainer,\n {\n width: metrics.iconContainerSize,\n height: metrics.iconContainerSize,\n borderRadius: metrics.iconContainerSize / 2,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n borderWidth: 0,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CheckIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type CheckboxVariant = \"default\" | \"light\";\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n variant?: CheckboxVariant;\n label?: string;\n children?: ReactNode;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst BOX_SIZE = 20;\nconst BOX_RADIUS = 6;\nconst CHECK_SIZE = 12;\nconst CHECK_STROKE = 2.5;\n\nconst variantChrome: Record<CheckboxVariant, { backgroundColor: string; borderColor: string }> = {\n default: {\n backgroundColor: colors.dark,\n borderColor: colors.grey700,\n },\n light: {\n backgroundColor: colors.grey700,\n borderColor: colors.grey500,\n },\n};\n\nexport const Checkbox = forwardRef<ComponentRef<typeof Pressable>, CheckboxProps>(function Checkbox(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n variant = \"default\",\n label,\n children,\n style,\n labelStyle,\n className,\n hitSlop = 8,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n\n const chrome = variantChrome[variant];\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n useApplyWebClassName(containerRef, className);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"checkbox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n <View\n style={[\n styles.box,\n {\n backgroundColor: chrome.backgroundColor,\n borderColor: chrome.borderColor,\n },\n ]}\n >\n {isActive ? (\n <CheckIcon size={CHECK_SIZE} color={colors.primary} strokeWidth={CHECK_STROKE} />\n ) : null}\n </View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n box: {\n width: BOX_SIZE,\n height: BOX_SIZE,\n borderRadius: BOX_RADIUS,\n borderWidth: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","/**\n * Small, dependency-free date helpers for the DatePicker component. These only\n * ever operate on local calendar days (time-of-day is ignored/zeroed) so\n * comparisons stay simple and predictable across the whole component.\n */\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (a == null || b == null) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isBefore(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() < startOfDay(b).getTime();\n}\n\nexport function isAfter(a: Date, b: Date): boolean {\n return startOfDay(a).getTime() > startOfDay(b).getTime();\n}\n\nexport function isWithinRange(date: Date, start: Date, end: Date): boolean {\n const time = startOfDay(date).getTime();\n return time >= startOfDay(start).getTime() && time <= startOfDay(end).getTime();\n}\n\nexport function clampDate(date: Date, min?: Date | null, max?: Date | null): Date {\n if (min && isBefore(date, min)) return startOfDay(min);\n if (max && isAfter(date, max)) return startOfDay(max);\n return startOfDay(date);\n}\n\nexport function isDateDisabled(date: Date, min?: Date | null, max?: Date | null): boolean {\n if (min && isBefore(date, min)) return true;\n if (max && isAfter(date, max)) return true;\n return false;\n}\n\n/** Zero-padded \"DD.MM.YYYY\" — matches the Figma reference formatting. */\nexport function formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Builds a 6×7 grid of calendar days for the month containing `monthDate`,\n * including the leading/trailing days from adjacent months needed to fill\n * whole weeks. `weekStartsOn` follows the JS `Date#getDay()` convention\n * (0 = Sunday, 1 = Monday, ...).\n */\nexport function getMonthMatrix(monthDate: Date, weekStartsOn: 0 | 1 = 1): Date[][] {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n\n const firstWeekday = firstOfMonth.getDay();\n const leadingDays = (firstWeekday - weekStartsOn + 7) % 7;\n const gridStart = new Date(year, month, 1 - leadingDays);\n\n const weeks: Date[][] = [];\n let cursor = gridStart;\n for (let week = 0; week < 6; week += 1) {\n const days: Date[] = [];\n for (let day = 0; day < 7; day += 1) {\n days.push(cursor);\n cursor = new Date(cursor.getFullYear(), cursor.getMonth(), cursor.getDate() + 1);\n }\n weeks.push(days);\n }\n return weeks;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarOutlineIcon, ChevronLeftIcon } from \"../../icons\";\nimport { colors, datePickerTypography } from \"../../theme\";\nimport {\n addMonths,\n formatDate,\n getMonthMatrix,\n isBefore,\n isDateDisabled,\n isSameDay,\n isSameMonth,\n isWithinRange,\n startOfDay,\n} from \"../../utils/dateUtils\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\n/** Monday-first — override via `monthNames` for other locales. */\nconst DEFAULT_MONTH_NAMES = [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n];\n/** Monday-first — override via `weekdayLabels` for other locales. */\nconst DEFAULT_WEEKDAY_LABELS = [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"];\n\nexport type DateRange = { start: Date | null; end: Date | null };\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\ntype DatePickerBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n placeholder?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n /**\n * When true (default), the calendar closes after a complete selection —\n * a single date, or both ends of a range. Set false to keep it open.\n */\n closeOnSelect?: boolean;\n minDate?: Date;\n maxDate?: Date;\n /** First visible month when the calendar opens; defaults to the selected value's month, else today. */\n defaultVisibleMonth?: Date;\n /** Monday-first full month names. Defaults to Armenian. */\n monthNames?: string[];\n /** Weekday abbreviations, ordered starting from `weekStartsOn`. Defaults to Armenian, Monday-first. */\n weekdayLabels?: string[];\n /** Formats a selected date for the trigger and day accessibility labels. Defaults to \"DD.MM.YYYY\". */\n formatValue?: (date: Date) => string;\n /** First day of the week column (0 = Sunday, 1 = Monday). Defaults to Monday. */\n weekStartsOn?: 0 | 1;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type DatePickerSingleProps = DatePickerBaseProps & {\n range?: false;\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n};\n\nexport type DatePickerRangeProps = DatePickerBaseProps & {\n range: true;\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n};\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nconst DEFAULT_WIDTH = 380;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 20;\nconst ICON_SIZE = 20;\nconst NAV_ICON_SIZE = 20;\nconst DAY_CELL_HEIGHT = 44;\nconst DAY_CIRCLE_SIZE = 44;\n\nexport const DatePicker = forwardRef<ComponentRef<typeof View>, DatePickerProps>(\n function DatePicker(props, forwardedRef) {\n const {\n placeholder = \"Select date\",\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n closeOnSelect = true,\n minDate,\n maxDate,\n defaultVisibleMonth,\n monthNames = DEFAULT_MONTH_NAMES,\n weekdayLabels = DEFAULT_WEEKDAY_LABELS,\n formatValue = formatDate,\n weekStartsOn = 1,\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n range: _range,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const isRange = props.range === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState<Date | null>(\n !isRange ? ((props as DatePickerSingleProps).defaultValue ?? null) : null,\n );\n const [uncontrolledRange, setUncontrolledRange] = useState<DateRange>(\n isRange ? ((props as DatePickerRangeProps).defaultValue ?? EMPTY_RANGE) : EMPTY_RANGE,\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [hoveredDayKey, setHoveredDayKey] = useState<number | null>(null);\n\n const rangeValue: DateRange = isRange\n ? isValueControlled\n ? ((valueProp as DateRange) ?? EMPTY_RANGE)\n : uncontrolledRange\n : EMPTY_RANGE;\n const singleValue: Date | null = !isRange\n ? isValueControlled\n ? ((valueProp as Date | null) ?? null)\n : uncontrolledSingle\n : null;\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n const [visibleMonth, setVisibleMonth] = useState(() => {\n const anchor =\n defaultVisibleMonth ?? (isRange ? rangeValue.start : singleValue) ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth(), 1);\n });\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n const anchor = (isRange ? rangeValue.start : singleValue) ?? new Date();\n setVisibleMonth(new Date(anchor.getFullYear(), anchor.getMonth(), 1));\n } else {\n setHoveredDayKey(null);\n }\n },\n [isOpenControlled, isRange, onOpenChange, rangeValue.start, singleValue],\n );\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // Escape closes the calendar and returns focus to the trigger (web only).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, closeAndFocusTrigger]);\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleDayPress = useCallback(\n (day: Date) => {\n if (disabled || isDateDisabled(day, minDate, maxDate)) return;\n const picked = startOfDay(day);\n\n if (!isRange) {\n if (!isValueControlled) setUncontrolledSingle(picked);\n (props as DatePickerSingleProps).onValueChange?.(picked);\n if (closeOnSelect) setOpen(false);\n return;\n }\n\n const { start, end } = rangeValue;\n const startingNewRange = !start || (start && end);\n const nextRange: DateRange = startingNewRange\n ? { start: picked, end: null }\n : isBefore(picked, start)\n ? { start: picked, end: null }\n : { start, end: picked };\n\n if (!isValueControlled) setUncontrolledRange(nextRange);\n (props as DatePickerRangeProps).onValueChange?.(nextRange);\n if (closeOnSelect && nextRange.start && nextRange.end) setOpen(false);\n },\n [\n closeOnSelect,\n disabled,\n isRange,\n isValueControlled,\n maxDate,\n minDate,\n props,\n rangeValue,\n setOpen,\n ],\n );\n\n const handlePrevMonth = () => setVisibleMonth((current) => addMonths(current, -1));\n const handleNextMonth = () => setVisibleMonth((current) => addMonths(current, 1));\n\n const weeks = useMemo(\n () => getMonthMatrix(visibleMonth, weekStartsOn),\n [visibleMonth, weekStartsOn],\n );\n const today = useMemo(() => startOfDay(new Date()), []);\n\n const hasValue = isRange ? rangeValue.start != null : singleValue != null;\n const triggerLabel = isRange\n ? rangeValue.start && rangeValue.end\n ? `${formatValue(rangeValue.start)} - ${formatValue(rangeValue.end)}`\n : rangeValue.start\n ? `${formatValue(rangeValue.start)} - ...`\n : placeholder\n : singleValue\n ? formatValue(singleValue)\n : placeholder;\n\n const triggerBorderColor = isOpen ? colors.primaryMuted : colors.grey700;\n const triggerTextColor = hasValue ? colors.white : colors.grey100;\n\n const resolvedAccessibilityLabel = accessibilityLabel ?? placeholder;\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n { borderColor: triggerBorderColor, backgroundColor: colors.grey700 },\n ]}\n >\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {triggerLabel}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarOutlineIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n <View style={styles.calendarHeader}>\n <Pressable\n onPress={handlePrevMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Previous month\"\n style={styles.navButton}\n >\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </Pressable>\n\n <Text style={styles.monthHeading}>\n {monthNames[visibleMonth.getMonth()]} {visibleMonth.getFullYear()}\n </Text>\n\n <Pressable\n onPress={handleNextMonth}\n hitSlop={8}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Next month\"\n style={styles.navButton}\n >\n <View style={styles.navIconMirror}>\n <ChevronLeftIcon size={NAV_ICON_SIZE} color={colors.white} />\n </View>\n </Pressable>\n </View>\n\n <View>\n <View style={styles.weekdayRow}>\n {weekdayLabels.map((weekdayLabel, index) => (\n <View key={`${weekdayLabel}-${index}`} style={styles.dayCellWrap}>\n <Text style={styles.weekdayText}>{weekdayLabel}</Text>\n </View>\n ))}\n </View>\n\n {weeks.map((week, weekIndex) => {\n let rangeHighlightStyle: { left: `${number}%`; width: `${number}%` } | null =\n null;\n\n if (isRange && rangeValue.start && rangeValue.end) {\n const rangeIndices = week.reduce<number[]>((acc, day, index) => {\n if (isWithinRange(day, rangeValue.start as Date, rangeValue.end as Date)) {\n acc.push(index);\n }\n return acc;\n }, []);\n\n if (rangeIndices.length > 0) {\n const first = rangeIndices[0];\n const last = rangeIndices[rangeIndices.length - 1];\n const startsHere = isSameDay(week[first], rangeValue.start);\n const endsHere = isSameDay(week[last], rangeValue.end);\n // Half a cell so the bar meets the circle center, not past it.\n const cellPct = 100 / 7;\n const halfCellPct = cellPct / 2;\n let leftPct = first * cellPct;\n let widthPct = (last - first + 1) * cellPct;\n if (startsHere) {\n leftPct += halfCellPct;\n widthPct -= halfCellPct;\n }\n if (endsHere) {\n widthPct -= halfCellPct;\n }\n // Same-day range: only the circle, no connector bar.\n if (widthPct > 0) {\n rangeHighlightStyle = {\n left: `${leftPct}%`,\n width: `${widthPct}%`,\n };\n }\n }\n }\n\n return (\n <View\n key={weekIndex}\n style={[styles.weekRow, weekIndex > 0 && styles.weekRowSpaced]}\n >\n {rangeHighlightStyle ? (\n <View\n pointerEvents=\"none\"\n style={[styles.rangeHighlight, rangeHighlightStyle]}\n />\n ) : null}\n\n {week.map((day, dayIndex) => {\n const inCurrentMonth = isSameMonth(day, visibleMonth);\n const isToday = isSameDay(day, today);\n const isSelectedSingle = !isRange && isSameDay(day, singleValue);\n const isRangeStart = isRange && isSameDay(day, rangeValue.start);\n const isRangeEnd = isRange && isSameDay(day, rangeValue.end);\n const isSelectedEndpoint = isSelectedSingle || isRangeStart || isRangeEnd;\n const dayDisabled = disabled || isDateDisabled(day, minDate, maxDate);\n const dayKey = startOfDay(day).getTime();\n const isHovered =\n !dayDisabled && !isSelectedEndpoint && hoveredDayKey === dayKey;\n\n const dayTextColor = isSelectedEndpoint\n ? colors.white\n : dayDisabled\n ? colors.grey400\n : isToday\n ? colors.primary\n : !inCurrentMonth\n ? colors.grey300\n : colors.white;\n\n return (\n <Pressable\n key={dayIndex}\n onPress={() => handleDayPress(day)}\n disabled={dayDisabled}\n onHoverIn={() => setHoveredDayKey(dayKey)}\n onHoverOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n onPressIn={() => setHoveredDayKey(dayKey)}\n onPressOut={() =>\n setHoveredDayKey((current) => (current === dayKey ? null : current))\n }\n style={styles.dayCellWrap}\n accessibilityRole=\"button\"\n accessibilityLabel={formatValue(day)}\n accessibilityState={{\n disabled: dayDisabled,\n selected: isSelectedEndpoint,\n }}\n >\n <View\n style={[\n styles.dayCircle,\n isSelectedEndpoint && styles.dayCircleSelected,\n isHovered && styles.dayCircleHovered,\n ]}\n >\n <Text style={[styles.dayText, { color: dayTextColor }]}>\n {day.getDate()}\n </Text>\n </View>\n {isToday && !isSelectedEndpoint ? (\n <View style={styles.todayDot} />\n ) : null}\n </Pressable>\n );\n })}\n </View>\n );\n })}\n </View>\n </View>\n ) : null}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerText: {\n ...datePickerTypography.field,\n flex: 1,\n minWidth: 0,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 0,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n calendarHeader: {\n height: 36,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n navButton: {\n width: 36,\n height: 36,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n navIconMirror: {\n transform: [{ scaleX: -1 }],\n },\n monthHeading: {\n ...datePickerTypography.monthHeading,\n color: colors.white,\n textAlign: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n },\n weekdayText: {\n ...datePickerTypography.weekday,\n color: colors.grey300,\n textAlign: \"center\",\n textTransform: \"uppercase\",\n },\n weekRow: {\n flexDirection: \"row\",\n position: \"relative\",\n },\n weekRowSpaced: {\n marginTop: 8,\n },\n rangeHighlight: {\n position: \"absolute\",\n top: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n bottom: (DAY_CELL_HEIGHT - DAY_CIRCLE_SIZE) / 2,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n backgroundColor: colors.primaryHover,\n },\n dayCellWrap: {\n flex: 1,\n height: DAY_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircle: {\n width: DAY_CIRCLE_SIZE,\n height: DAY_CIRCLE_SIZE,\n borderRadius: DAY_CIRCLE_SIZE / 2,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n dayCircleSelected: {\n backgroundColor: colors.primary,\n },\n dayCircleHovered: {\n backgroundColor: colors.grey600,\n },\n dayText: {\n ...datePickerTypography.day,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 2,\n width: 4,\n height: 4,\n borderRadius: 2,\n backgroundColor: colors.primary,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef, type ReactNode } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n TouchableOpacity,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { ShowIcon } from \"../../icons\";\nimport { UserIcon } from \"../../icons\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type InputSize = \"lg\" | \"sm\";\n\nexport interface InputProps extends Omit<TextInputProps, \"style\" | \"editable\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n size?: InputSize;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n leftIcon?: ReactNode;\n showLeftIcon?: boolean;\n rightIcon?: ReactNode;\n showRightIcon?: boolean;\n onRightIconPress?: () => void;\n /** Accessible name for the right icon button, when `onRightIconPress` is set. */\n rightIconAccessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n leftIconColor: string;\n rightIconColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\n\nconst sizeConfig = {\n lg: {\n height: 44,\n borderRadius: 60,\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 10,\n iconSize: 20,\n text: inputTypography.field,\n },\n sm: {\n height: 32,\n borderRadius: 60,\n paddingVertical: 6,\n paddingHorizontal: 12,\n gap: 8,\n iconSize: 16,\n text: inputTypography.hint,\n },\n} as const satisfies Record<InputSize, Record<string, unknown>>;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n leftIconColor: colors.grey100,\n rightIconColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n leftIconColor: colors.primary,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n leftIconColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.grey0,\n leftIconColor: colors.grey0,\n rightIconColor: colors.grey0,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n default:\n return base;\n }\n}\n\nexport const Input = forwardRef<ComponentRef<typeof TextInput>, InputProps>(function Input(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n size = \"lg\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n leftIcon,\n showLeftIcon = false,\n rightIcon,\n showRightIcon = false,\n onRightIconPress,\n rightIconAccessibilityLabel,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n const metrics = sizeConfig[size];\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n const hasRightIcon = showRightIcon || rightIcon != null;\n\n const leftIconNode = leftIcon ?? (\n <UserIcon size={metrics.iconSize} color={chrome.leftIconColor} />\n );\n const rightIconNode = rightIcon ?? (\n <ShowIcon size={metrics.iconSize} color={chrome.rightIconColor} />\n );\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n height: metrics.height,\n borderRadius: metrics.borderRadius,\n paddingTop: metrics.paddingVertical,\n paddingBottom: metrics.paddingVertical,\n paddingLeft: metrics.paddingHorizontal,\n paddingRight: metrics.paddingHorizontal,\n gap: metrics.gap,\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n {hasLeftIcon ? (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {leftIconNode}\n </View>\n ) : null}\n\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n metrics.text,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n\n {hasRightIcon ? (\n onRightIconPress ? (\n <TouchableOpacity\n onPress={onRightIconPress}\n disabled={disabled}\n style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}\n accessibilityRole=\"button\"\n accessibilityLabel={rightIconAccessibilityLabel}\n hitSlop={8}\n >\n {rightIconNode}\n </TouchableOpacity>\n ) : (\n <View style={[styles.iconSlot, { width: metrics.iconSize, height: metrics.iconSize }]}>\n {rightIconNode}\n </View>\n )\n ) : null}\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...inputTypography.label,\n },\n field: {\n borderWidth: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n iconSlot: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n hint: {\n ...inputTypography.hint,\n },\n});\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n TextInput,\n View,\n type LayoutChangeEvent,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { Checkbox } from \"../Checkbox\";\nimport { ChevronDownIcon, SearchIcon, UserIcon } from \"../../icons\";\nimport { colors, selectTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport type SelectOption = {\n label: string;\n value: string;\n};\n\ntype SelectBaseProps = Omit<ViewProps, \"style\" | \"children\"> & {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n placeholder?: string;\n options: SelectOption[];\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n error?: boolean;\n leftIcon?: ReactNode;\n showLeftIcon?: boolean;\n showSearch?: boolean;\n searchPlaceholder?: string;\n /**\n * Called with the raw query on every keystroke. When provided, the parent owns\n * filtering (e.g. server search) and the options prop is rendered as-is;\n * when omitted, options are filtered locally by label.\n */\n onSearchChange?: (query: string) => void;\n /** Shows a loading row in the menu while the parent fetches options. */\n loading?: boolean;\n /** Text shown when no options match. */\n emptyText?: string;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n multiple?: false;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n multiple: true;\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst DEFAULT_WIDTH = 308;\nconst TRIGGER_HEIGHT = 44;\nconst TRIGGER_RADIUS = 60;\nconst MENU_RADIUS = 24;\nconst MENU_MAX_LIST_HEIGHT = 248;\nconst ITEM_RADIUS = 12;\nconst ICON_SIZE = 20;\nconst CHIP_GAP = 6;\nconst FALLBACK_ELLIPSIS_WIDTH = 20;\n\ntype ItemVisualState = \"default\" | \"hover\" | \"selected\";\n\nfunction itemBackground(state: ItemVisualState): string {\n switch (state) {\n case \"hover\":\n return colors.grey600;\n case \"selected\":\n return colors.primaryMuted;\n default:\n return \"transparent\";\n }\n}\n\nfunction toArray(value: string | string[] | undefined): string[] {\n if (value == null || value === \"\") return [];\n return Array.isArray(value) ? value : [value];\n}\n\nfunction resolveVisibleOptions(\n options: SelectOption[],\n containerWidth: number,\n chipWidths: Record<string, number>,\n ellipsisWidth: number,\n): { visible: SelectOption[]; hasOverflow: boolean } {\n if (options.length === 0) return { visible: [], hasOverflow: false };\n if (containerWidth <= 0) return { visible: options.slice(0, 1), hasOverflow: options.length > 1 };\n\n const visible: SelectOption[] = [];\n let used = 0;\n\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const chipWidth = chipWidths[option.value];\n if (chipWidth == null) {\n if (visible.length === 0) visible.push(option);\n break;\n }\n\n const remainingAfter = options.length - index - 1;\n const gap = visible.length > 0 ? CHIP_GAP : 0;\n const reserve = remainingAfter > 0 ? CHIP_GAP + ellipsisWidth : 0;\n const nextUsed = used + gap + chipWidth;\n\n if (visible.length > 0 && nextUsed + reserve > containerWidth) {\n return { visible, hasOverflow: true };\n }\n\n visible.push(option);\n used = nextUsed;\n }\n\n return { visible, hasOverflow: visible.length < options.length };\n}\n\ntype MultiValueChipsProps = {\n options: SelectOption[];\n disabled?: boolean;\n onRemove: (value: string) => void;\n};\n\nfunction MultiValueChips({ options, disabled, onRemove }: MultiValueChipsProps) {\n const [containerWidth, setContainerWidth] = useState(0);\n const [chipWidths, setChipWidths] = useState<Record<string, number>>({});\n const [ellipsisWidth, setEllipsisWidth] = useState(FALLBACK_ELLIPSIS_WIDTH);\n\n useEffect(() => {\n setChipWidths((current) => {\n const validValues = new Set(options.map((option) => option.value));\n const keys = Object.keys(current);\n if (keys.every((key) => validValues.has(key))) return current;\n\n const next: Record<string, number> = {};\n for (const key of keys) {\n if (validValues.has(key)) next[key] = current[key];\n }\n return next;\n });\n }, [options]);\n\n const { visible, hasOverflow } = useMemo(\n () => resolveVisibleOptions(options, containerWidth, chipWidths, ellipsisWidth),\n [chipWidths, containerWidth, ellipsisWidth, options],\n );\n\n const handleContainerLayout = (event: LayoutChangeEvent) => {\n const next = Math.floor(event.nativeEvent.layout.width);\n setContainerWidth((current) => (current === next ? current : next));\n };\n\n const handleChipLayout = (value: string, event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setChipWidths((current) => (current[value] === next ? current : { ...current, [value]: next }));\n };\n\n const handleEllipsisLayout = (event: LayoutChangeEvent) => {\n const next = Math.ceil(event.nativeEvent.layout.width);\n setEllipsisWidth((current) => (current === next ? current : next));\n };\n\n return (\n <View style={styles.multiValueRoot}>\n {/* Hidden copy of every chip; RN has no synchronous text measurement. */}\n <View pointerEvents=\"none\" style={styles.measureRow}>\n {options.map((option) => (\n <View\n key={`measure-${option.value}`}\n style={styles.chip}\n onLayout={(event) => handleChipLayout(option.value, event)}\n >\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Text style={styles.chipRemove}>×</Text>\n </View>\n ))}\n <View style={styles.ellipsis} onLayout={handleEllipsisLayout}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n </View>\n\n <View style={styles.chipsRow} onLayout={handleContainerLayout}>\n {visible.map((option) => (\n <View key={option.value} style={styles.chip}>\n <Text style={styles.chipLabel} numberOfLines={1}>\n {option.label}\n </Text>\n <Pressable\n onPress={(event) => {\n // Keep the surrounding trigger Pressable from toggling the menu.\n event?.stopPropagation?.();\n onRemove(option.value);\n }}\n disabled={disabled}\n hitSlop={6}\n accessibilityRole=\"button\"\n accessibilityLabel={`Remove ${option.label}`}\n >\n <Text style={styles.chipRemove}>×</Text>\n </Pressable>\n </View>\n ))}\n\n {hasOverflow ? (\n <View style={styles.ellipsis}>\n <Text style={styles.ellipsisText}>...</Text>\n </View>\n ) : null}\n </View>\n </View>\n );\n}\n\nexport const Select = forwardRef<ComponentRef<typeof View>, SelectProps>(\n function Select(props, forwardedRef) {\n const {\n label = \"Label\",\n showLabel = true,\n hint,\n showHint = false,\n placeholder = \"placeholder\",\n options,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n error = false,\n leftIcon,\n showLeftIcon = true,\n showSearch = true,\n searchPlaceholder = \"Search...\",\n onSearchChange,\n loading = false,\n emptyText = \"No results\",\n style,\n className,\n accessibilityLabel,\n // Pulled out only to keep them off `rest` (which is spread onto the root View);\n // the real values are read from `props` directly below to preserve discriminated typing.\n multiple: _multiple,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...rest\n } = props;\n\n const multiple = props.multiple === true;\n const valueProp = props.value;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const searchInputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setRootRef = useMemo(() => mergeRefs(rootRef, forwardedRef), [forwardedRef]);\n const isOpenControlled = typeof openProp === \"boolean\";\n const isValueControlled = valueProp !== undefined;\n\n const [uncontrolledSingle, setUncontrolledSingle] = useState(\n !multiple ? ((props as SelectSingleProps).defaultValue ?? \"\") : \"\",\n );\n const [uncontrolledMultiple, setUncontrolledMultiple] = useState<string[]>(\n multiple ? ((props as SelectMultipleProps).defaultValue ?? []) : [],\n );\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [hoveredValue, setHoveredValue] = useState<string | null>(null);\n\n const selectedValues = useMemo(() => {\n const current = isValueControlled\n ? valueProp\n : multiple\n ? uncontrolledMultiple\n : uncontrolledSingle;\n return toArray(current);\n }, [isValueControlled, multiple, valueProp, uncontrolledMultiple, uncontrolledSingle]);\n\n const isOpen = isOpenControlled ? openProp : uncontrolledOpen;\n\n // Mapped from selectedValues (not filtered from options) to preserve selection order.\n const selectedOptions = useMemo(\n () =>\n selectedValues\n .map((value) => options.find((option) => option.value === value))\n .filter((option): option is SelectOption => option != null),\n [options, selectedValues],\n );\n const hasValue = selectedOptions.length > 0;\n\n const isExternalSearch = onSearchChange != null;\n\n const filteredOptions = useMemo(() => {\n if (isExternalSearch) return options;\n const query = searchQuery.trim().toLowerCase();\n if (!query) return options;\n return options.filter((option) => option.label.toLowerCase().includes(query));\n }, [isExternalSearch, options, searchQuery]);\n\n useApplyWebClassName(rootRef, className);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (next) {\n // Seed keyboard highlight from the current selection so Arrow keys\n // start from a sensible position.\n setHoveredValue(selectedValues[0] ?? null);\n } else {\n setSearchQuery(\"\");\n setHoveredValue(null);\n // Let the parent reset its externally fetched options.\n onSearchChange?.(\"\");\n }\n },\n [isOpenControlled, onOpenChange, onSearchChange, selectedValues],\n );\n\n const handleSearchChange = (text: string) => {\n setSearchQuery(text);\n onSearchChange?.(text);\n };\n\n // Close on outside click (web only; native has no document-level events).\n useEffect(() => {\n if (Platform.OS !== \"web\" || !isOpen) return;\n\n const handlePointerDown = (event: MouseEvent | TouchEvent) => {\n const root = rootRef.current as unknown as { contains?: (node: Node) => boolean } | null;\n const target = event.target;\n if (root?.contains && target instanceof Node && !root.contains(target)) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n document.addEventListener(\"touchstart\", handlePointerDown);\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDown);\n document.removeEventListener(\"touchstart\", handlePointerDown);\n };\n }, [isOpen, setOpen]);\n\n const commitValues = useCallback(\n (nextValues: string[]) => {\n if (multiple) {\n if (!isValueControlled) setUncontrolledMultiple(nextValues);\n (props as SelectMultipleProps).onValueChange?.(nextValues);\n return;\n }\n\n const nextValue = nextValues[0] ?? \"\";\n if (!isValueControlled) setUncontrolledSingle(nextValue);\n (props as SelectSingleProps).onValueChange?.(nextValue);\n },\n [isValueControlled, multiple, props],\n );\n\n const handleTriggerPress = () => {\n if (disabled) return;\n setOpen(!isOpen);\n };\n\n const handleSelect = useCallback(\n (optionValue: string) => {\n if (disabled) return;\n if (multiple) {\n const exists = selectedValues.includes(optionValue);\n const nextValues = exists\n ? selectedValues.filter((value) => value !== optionValue)\n : [...selectedValues, optionValue];\n commitValues(nextValues);\n return;\n }\n\n commitValues([optionValue]);\n setOpen(false);\n },\n [commitValues, disabled, multiple, selectedValues, setOpen],\n );\n\n const handleRemoveChip = (optionValue: string) => {\n if (disabled || !multiple) return;\n commitValues(selectedValues.filter((value) => value !== optionValue));\n };\n\n const focusTrigger = useCallback(() => {\n const node = triggerRef.current as unknown as { focus?: () => void } | null;\n node?.focus?.();\n }, []);\n\n const closeAndFocusTrigger = useCallback(() => {\n setOpen(false);\n focusTrigger();\n }, [focusTrigger, setOpen]);\n\n // ARIA combobox keyboard pattern (web only): Arrow keys move the highlighted\n // option, Enter/Space selects it, Escape closes and returns focus to the trigger.\n useEffect(() => {\n if (Platform.OS !== \"web\") return;\n\n const isTriggerFocused = () => document.activeElement === triggerRef.current;\n const isSearchFocused = () => document.activeElement === searchInputRef.current;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isOpen) {\n if (!isTriggerFocused() || disabled) return;\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\" || event.key === \"Enter\") {\n event.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n setHoveredValue((current) => {\n if (filteredOptions.length === 0) return current;\n const currentIndex = filteredOptions.findIndex((option) => option.value === current);\n const delta = event.key === \"ArrowDown\" ? 1 : -1;\n const nextIndex =\n currentIndex === -1\n ? delta === 1\n ? 0\n : filteredOptions.length - 1\n : Math.min(Math.max(currentIndex + delta, 0), filteredOptions.length - 1);\n return filteredOptions[nextIndex]?.value ?? current;\n });\n return;\n }\n\n // Home/End and Space are left alone while typing in the search field\n // (text-cursor navigation and literal spaces must keep working).\n if (\n isSearchFocused() &&\n (event.key === \"Home\" || event.key === \"End\" || event.key === \" \")\n ) {\n return;\n }\n\n if (event.key === \"Home\" || event.key === \"End\") {\n if (filteredOptions.length === 0) return;\n event.preventDefault();\n setHoveredValue(\n event.key === \"Home\"\n ? filteredOptions[0].value\n : filteredOptions[filteredOptions.length - 1].value,\n );\n return;\n }\n\n if (event.key === \"Enter\" || event.key === \" \") {\n if (hoveredValue == null) return;\n event.preventDefault();\n handleSelect(hoveredValue);\n if (!multiple) focusTrigger();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [\n isOpen,\n disabled,\n filteredOptions,\n hoveredValue,\n multiple,\n closeAndFocusTrigger,\n focusTrigger,\n handleSelect,\n setOpen,\n ]);\n\n const leftIconNode = leftIcon ?? (\n <UserIcon\n size={ICON_SIZE}\n color={error ? colors.red : isOpen ? colors.primary : colors.grey100}\n />\n );\n const hasLeftIcon = showLeftIcon || leftIcon != null;\n\n const triggerBorderColor = error\n ? colors.redMuted\n : isOpen\n ? colors.primaryMuted\n : colors.grey700;\n const triggerTextColor = hasValue\n ? error\n ? colors.red\n : colors.white\n : error\n ? colors.red\n : colors.grey100;\n const labelColor = error ? colors.red : colors.white;\n const hintColor = error ? colors.red : colors.grey100;\n\n const singleLabel = selectedOptions[0]?.label ?? placeholder;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof label === \"string\" ? label : undefined);\n\n return (\n <View\n {...rest}\n ref={setRootRef}\n style={[styles.root, isOpen && styles.rootOpen, disabled && styles.disabled, style]}\n accessibilityState={{ disabled, expanded: isOpen }}\n >\n {showLabel && label ? (\n <Text style={[styles.label, { color: labelColor }]}>{label}</Text>\n ) : null}\n\n <View style={[styles.triggerWrap, isOpen && styles.triggerWrapOpen]}>\n <Pressable\n ref={triggerRef}\n onPress={handleTriggerPress}\n disabled={disabled}\n accessibilityRole=\"combobox\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled, expanded: isOpen }}\n style={[\n styles.trigger,\n {\n borderColor: triggerBorderColor,\n backgroundColor: colors.grey700,\n },\n ]}\n >\n {hasLeftIcon ? <View style={styles.iconSlot}>{leftIconNode}</View> : null}\n\n <View style={styles.triggerContent}>\n {multiple && hasValue ? (\n <MultiValueChips\n options={selectedOptions}\n disabled={disabled}\n onRemove={handleRemoveChip}\n />\n ) : (\n <Text style={[styles.triggerText, { color: triggerTextColor }]} numberOfLines={1}>\n {multiple ? placeholder : singleLabel}\n </Text>\n )}\n </View>\n\n <View style={[styles.iconSlot, isOpen && styles.chevronOpen]}>\n <ChevronDownIcon size={ICON_SIZE} color={isOpen ? colors.primary : colors.grey100} />\n </View>\n </Pressable>\n\n {isOpen ? (\n <View style={styles.menu}>\n {showSearch ? (\n <View style={styles.searchField}>\n <View style={styles.iconSlot}>\n <SearchIcon size={ICON_SIZE} color={colors.grey100} />\n </View>\n <TextInput\n ref={searchInputRef}\n value={searchQuery}\n onChangeText={handleSearchChange}\n editable={!disabled}\n placeholder={searchPlaceholder}\n placeholderTextColor={colors.grey100}\n style={[\n styles.searchInput,\n Platform.OS === \"web\" ? styles.searchInputWeb : null,\n Platform.OS === \"android\" ? styles.searchInputAndroid : null,\n ]}\n accessibilityLabel={searchPlaceholder}\n />\n </View>\n ) : null}\n\n <ScrollView\n style={styles.optionList}\n contentContainerStyle={styles.optionListContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator={false}\n >\n {loading ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>Loading...</Text>\n </View>\n ) : filteredOptions.length === 0 ? (\n <View style={styles.statusRow}>\n <Text style={styles.statusText}>{emptyText}</Text>\n </View>\n ) : null}\n\n {!loading &&\n filteredOptions.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n const isHovered = hoveredValue === option.value;\n const visualState: ItemVisualState = isSelected\n ? \"selected\"\n : isHovered\n ? \"hover\"\n : \"default\";\n\n return (\n <Pressable\n key={option.value}\n onPress={() => handleSelect(option.value)}\n disabled={disabled}\n onHoverIn={() => setHoveredValue(option.value)}\n onHoverOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n onPressIn={() => setHoveredValue(option.value)}\n onPressOut={() =>\n setHoveredValue((current) => (current === option.value ? null : current))\n }\n accessibilityRole={multiple ? \"checkbox\" : \"button\"}\n accessibilityState={{ selected: isSelected, checked: isSelected, disabled }}\n style={[\n styles.item,\n {\n backgroundColor: itemBackground(visualState),\n },\n ]}\n >\n {multiple ? (\n <View pointerEvents=\"none\" style={styles.itemCheckbox}>\n <Checkbox value={isSelected} variant=\"light\" />\n </View>\n ) : null}\n <Text style={styles.itemLabel} numberOfLines={1}>\n {option.label}\n </Text>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n ) : null}\n </View>\n\n {showHint && hint ? <Text style={[styles.hint, { color: hintColor }]}>{hint}</Text> : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n rootOpen: {\n zIndex: 30,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...selectTypography.label,\n },\n triggerWrap: {\n position: \"relative\",\n zIndex: 1,\n },\n triggerWrapOpen: {\n zIndex: 20,\n },\n trigger: {\n height: TRIGGER_HEIGHT,\n borderRadius: TRIGGER_RADIUS,\n borderWidth: 1,\n paddingVertical: 12,\n paddingHorizontal: 16,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 10,\n overflow: \"hidden\",\n },\n triggerContent: {\n flex: 1,\n justifyContent: \"center\",\n minWidth: 0,\n overflow: \"hidden\",\n },\n triggerText: {\n ...selectTypography.field,\n },\n multiValueRoot: {\n width: \"100%\",\n position: \"relative\",\n },\n measureRow: {\n position: \"absolute\",\n left: 0,\n top: 0,\n flexDirection: \"row\",\n opacity: 0,\n zIndex: -1,\n },\n chipsRow: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: CHIP_GAP,\n overflow: \"hidden\",\n },\n chip: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 4,\n paddingVertical: 2,\n paddingHorizontal: 8,\n borderRadius: 999,\n backgroundColor: colors.grey600,\n flexShrink: 0,\n },\n chipLabel: {\n ...selectTypography.hint,\n color: colors.white,\n maxWidth: 120,\n },\n chipRemove: {\n color: colors.grey100,\n fontSize: 14,\n lineHeight: 14,\n },\n ellipsis: {\n flexShrink: 0,\n paddingHorizontal: 2,\n },\n ellipsisText: {\n ...selectTypography.field,\n color: colors.white,\n lineHeight: 16,\n },\n iconSlot: {\n width: ICON_SIZE,\n height: ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n chevronOpen: {\n transform: [{ rotate: \"180deg\" }],\n },\n menu: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 8,\n zIndex: 10,\n borderRadius: MENU_RADIUS,\n padding: 12,\n gap: 8,\n backgroundColor: colors.grey700,\n ...Platform.select({\n web: {\n boxShadow: `0 8px 24px ${colors.black}73`,\n },\n default: {\n elevation: 8,\n },\n }),\n },\n optionList: {\n maxHeight: MENU_MAX_LIST_HEIGHT,\n },\n optionListContent: {\n gap: 8,\n },\n statusRow: {\n minHeight: 43,\n padding: 12,\n justifyContent: \"center\",\n },\n statusText: {\n ...selectTypography.field,\n color: colors.grey100,\n },\n searchField: {\n height: 40,\n borderRadius: ITEM_RADIUS,\n paddingHorizontal: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n backgroundColor: colors.grey800,\n },\n searchInput: {\n ...selectTypography.field,\n flex: 1,\n color: colors.white,\n paddingVertical: 0,\n margin: 0,\n },\n searchInputWeb: {\n outlineStyle: \"none\",\n } as TextStyle,\n searchInputAndroid: {\n includeFontPadding: false,\n },\n item: {\n minHeight: 43,\n borderRadius: ITEM_RADIUS,\n padding: 12,\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n itemCheckbox: {\n flexShrink: 0,\n },\n itemLabel: {\n ...selectTypography.field,\n color: colors.white,\n flex: 1,\n },\n hint: {\n ...selectTypography.hint,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Platform,\n StyleSheet,\n Text,\n TextInput,\n View,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n type TextInputProps,\n} from \"react-native\";\nimport { colors, textareaTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface TextareaProps extends Omit<TextInputProps, \"style\" | \"editable\" | \"multiline\"> {\n label?: string;\n showLabel?: boolean;\n hint?: string;\n showHint?: boolean;\n /** External — validation / form error. */\n error?: boolean;\n /** External — non-interactive. */\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n inputStyle?: StyleProp<TextStyle>;\n className?: string;\n inputClassName?: string;\n}\n\ntype VisualState = \"default\" | \"filled\" | \"active\" | \"error\" | \"disabled\";\n\ntype FieldChrome = {\n borderColor: string;\n backgroundColor: string;\n textColor: string;\n placeholderColor: string;\n labelColor: string;\n hintColor: string;\n};\n\nconst DEFAULT_WIDTH = 308;\nconst FIELD_HEIGHT = 100;\nconst FIELD_RADIUS = 16;\nconst FIELD_PADDING_VERTICAL = 12;\nconst FIELD_PADDING_HORIZONTAL = 16;\n\n/** default / filled / active come from value + focus; error / disabled from props. */\nfunction resolveVisualState({\n disabled,\n error,\n focused,\n hasValue,\n}: {\n disabled: boolean;\n error: boolean;\n focused: boolean;\n hasValue: boolean;\n}): VisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"active\";\n if (hasValue) return \"filled\";\n return \"default\";\n}\n\nfunction chromeFor(state: VisualState): FieldChrome {\n const base: FieldChrome = {\n borderColor: colors.grey700,\n backgroundColor: colors.grey700,\n textColor: colors.white,\n placeholderColor: colors.grey100,\n labelColor: colors.white,\n hintColor: colors.grey100,\n };\n\n switch (state) {\n case \"active\":\n return {\n ...base,\n borderColor: colors.primaryMuted,\n };\n case \"error\":\n return {\n ...base,\n borderColor: colors.redMuted,\n textColor: colors.red,\n placeholderColor: colors.red,\n labelColor: colors.red,\n hintColor: colors.red,\n };\n case \"filled\":\n return base;\n case \"disabled\":\n return {\n ...base,\n textColor: colors.grey0,\n };\n default:\n return base;\n }\n}\n\nexport const Textarea = forwardRef<ComponentRef<typeof TextInput>, TextareaProps>(function Textarea(\n {\n label = \"Label\",\n showLabel = true,\n hint = \"Hint\",\n showHint = true,\n placeholder = \"placeholder\",\n disabled = false,\n error = false,\n value,\n defaultValue,\n onChangeText,\n onFocus,\n onBlur,\n style,\n fieldStyle,\n inputStyle,\n className,\n inputClassName,\n accessibilityLabel,\n ...textInputProps\n },\n forwardedRef,\n) {\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const setInputRef = useMemo(() => mergeRefs(inputRef, forwardedRef), [forwardedRef]);\n const [focused, setFocused] = useState(false);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : uncontrolledValue;\n const hasValue = currentValue.length > 0;\n\n const visualState = resolveVisualState({ disabled, error, focused, hasValue });\n const chrome = chromeFor(visualState);\n const resolvedAccessibilityLabel = accessibilityLabel ?? (showLabel ? undefined : label);\n\n useApplyWebClassName(rootRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n\n return (\n <View ref={rootRef} style={[styles.root, disabled && styles.disabled, style]}>\n {showLabel && label ? (\n <Text style={[styles.label, { color: chrome.labelColor }]}>{label}</Text>\n ) : null}\n\n <View\n style={[\n styles.field,\n {\n borderColor: chrome.borderColor,\n backgroundColor: chrome.backgroundColor,\n },\n fieldStyle,\n ]}\n >\n <TextInput\n ref={setInputRef}\n {...textInputProps}\n multiline\n textAlignVertical=\"top\"\n value={isControlled ? value : undefined}\n defaultValue={isControlled ? undefined : defaultValue}\n editable={!disabled}\n placeholder={placeholder}\n placeholderTextColor={chrome.placeholderColor}\n onChangeText={(text) => {\n if (!isControlled) setUncontrolledValue(text);\n onChangeText?.(text);\n }}\n onFocus={(event) => {\n setFocused(true);\n onFocus?.(event);\n }}\n onBlur={(event) => {\n setFocused(false);\n onBlur?.(event);\n }}\n style={[\n styles.input,\n textareaTypography.field,\n { color: chrome.textColor },\n Platform.OS === \"web\" ? styles.inputWeb : null,\n Platform.OS === \"android\" ? styles.inputAndroid : null,\n inputStyle,\n ]}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n />\n </View>\n\n {showHint && hint ? (\n <Text style={[styles.hint, { color: chrome.hintColor }]}>{hint}</Text>\n ) : null}\n </View>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n width: DEFAULT_WIDTH,\n gap: 8,\n alignSelf: \"flex-start\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {\n ...textareaTypography.label,\n },\n field: {\n height: FIELD_HEIGHT,\n borderRadius: FIELD_RADIUS,\n borderWidth: 1,\n paddingTop: FIELD_PADDING_VERTICAL,\n paddingBottom: FIELD_PADDING_VERTICAL,\n paddingLeft: FIELD_PADDING_HORIZONTAL,\n paddingRight: FIELD_PADDING_HORIZONTAL,\n },\n input: {\n flex: 1,\n paddingVertical: 0,\n margin: 0,\n },\n inputWeb: {\n outlineStyle: \"none\",\n resize: \"none\",\n } as TextStyle,\n inputAndroid: {\n includeFontPadding: false,\n },\n hint: {\n ...textareaTypography.hint,\n },\n});\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Pressable,\n StyleSheet,\n Text,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { colors, inputTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nexport interface ToggleProps extends Omit<\n PressableProps,\n \"onPress\" | \"disabled\" | \"style\" | \"children\" | \"hitSlop\"\n> {\n value?: boolean;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n disabled?: boolean;\n /** Visible label rendered next to the track. */\n label?: string;\n children?: ReactNode;\n /** Accessible name for screen readers; falls back to `label`/`children` when omitted. */\n accessibilityLabel?: string;\n style?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n}\n\nconst TRACK_WIDTH = 44;\nconst TRACK_HEIGHT = 24;\nconst TRACK_RADIUS = 43;\nconst TRACK_PADDING = 4;\nconst THUMB_SIZE = TRACK_HEIGHT - TRACK_PADDING * 2;\nconst THUMB_TRAVEL = TRACK_WIDTH - TRACK_PADDING * 2 - THUMB_SIZE;\nconst ANIMATION_DURATION = 300;\n\nexport const Toggle = forwardRef<ComponentRef<typeof Pressable>, ToggleProps>(function Toggle(\n {\n value,\n defaultValue = false,\n onValueChange,\n disabled = false,\n label,\n children,\n accessibilityLabel,\n style,\n labelStyle,\n className,\n hitSlop = 10,\n ...rest\n },\n forwardedRef,\n) {\n const containerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const isControlled = typeof value === \"boolean\";\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isActive = isControlled ? value : uncontrolledValue;\n const labelContent = children ?? label;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (typeof labelContent === \"string\" ? labelContent : undefined);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n\n const progress = useRef(new Animated.Value(isActive ? 1 : 0)).current;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n Animated.timing(progress, {\n toValue: isActive ? 1 : 0,\n duration: ANIMATION_DURATION,\n easing: Easing.out(Easing.ease),\n useNativeDriver: false,\n }).start();\n }, [isActive, progress]);\n\n const handlePress = () => {\n if (disabled) return;\n const next = !isActive;\n if (!isControlled) setUncontrolledValue(next);\n onValueChange?.(next);\n };\n\n const trackBackgroundColor = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [colors.grey700, colors.primary],\n });\n\n const thumbTranslateX = progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, THUMB_TRAVEL],\n });\n\n return (\n <Pressable\n {...rest}\n ref={setContainerRef}\n onPress={handlePress}\n disabled={disabled}\n hitSlop={hitSlop}\n accessibilityRole=\"switch\"\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ checked: isActive, disabled }}\n style={[styles.pressable, disabled && styles.disabled, style]}\n >\n <Animated.View\n style={[\n styles.track,\n {\n backgroundColor: trackBackgroundColor,\n },\n ]}\n >\n <Animated.View\n style={[\n styles.thumb,\n {\n transform: [{ translateX: thumbTranslateX }],\n },\n ]}\n />\n </Animated.View>\n\n {labelContent != null && labelContent !== false ? (\n typeof labelContent === \"string\" || typeof labelContent === \"number\" ? (\n <Text style={[styles.label, labelStyle]}>{labelContent}</Text>\n ) : (\n labelContent\n )\n ) : null}\n </Pressable>\n );\n});\n\nconst styles = StyleSheet.create({\n pressable: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n gap: 10,\n },\n disabled: {\n opacity: 0.6,\n },\n track: {\n width: TRACK_WIDTH,\n height: TRACK_HEIGHT,\n borderRadius: TRACK_RADIUS,\n padding: TRACK_PADDING,\n justifyContent: \"center\",\n },\n thumb: {\n width: THUMB_SIZE,\n height: THUMB_SIZE,\n borderRadius: THUMB_SIZE / 2,\n backgroundColor: colors.white,\n },\n label: {\n ...inputTypography.field,\n color: colors.white,\n },\n});\n","import { forwardRef, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { StarFilledIcon, StarIcon } from \"../../icons\";\nimport { colors, ratingTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\n\nconst STAR_COUNT = 5;\nconst BASE_ITEM_SIZE = 16;\nconst ICON_WIDTH_RATIO = 12.57 / BASE_ITEM_SIZE;\nconst ICON_HEIGHT_RATIO = 11.98 / BASE_ITEM_SIZE;\nconst STAR_GAP_RATIO = 2 / BASE_ITEM_SIZE;\n\nexport interface RatingInputProps extends Omit<ViewProps, \"style\" | \"children\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n showValue?: boolean;\n precision?: number;\n /** Star item size. Glyph dimensions and default spacing scale with it. */\n size?: number;\n /** Overrides the proportional spacing between star items. */\n starGap?: number;\n readOnly?: boolean;\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n valueStyle?: StyleProp<TextStyle>;\n className?: string;\n hitSlop?: PressableProps[\"hitSlop\"];\n accessibilityLabel?: string;\n}\n\nfunction clamp(value: number) {\n return Math.max(0, Math.min(value, STAR_COUNT));\n}\n\nexport const RatingInput = forwardRef<ComponentRef<typeof View>, RatingInputProps>(\n function RatingInput(\n {\n value,\n defaultValue = 0,\n onValueChange,\n showValue = true,\n precision = 1,\n size = 20,\n starGap,\n readOnly = false,\n disabled = false,\n style,\n valueStyle,\n className,\n hitSlop = 6,\n accessibilityLabel,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(() => clamp(defaultValue));\n const selectedValue = clamp(isControlled ? value : uncontrolledValue);\n const selectedStarCount = Math.round(selectedValue);\n const iconWidth = size * ICON_WIDTH_RATIO;\n const iconHeight = size * ICON_HEIGHT_RATIO;\n const resolvedStarGap = starGap ?? size * STAR_GAP_RATIO;\n const resolvedAccessibilityLabel =\n accessibilityLabel ?? (readOnly ? `${selectedValue} out of ${STAR_COUNT} stars` : \"Rating\");\n\n useApplyWebClassName(containerRef, className);\n\n const selectValue = (nextValue: number) => {\n if (disabled || nextValue === selectedValue) return;\n if (!isControlled) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n return (\n <View\n {...rest}\n ref={setContainerRef}\n style={[styles.root, disabled && styles.disabled, style]}\n >\n {showValue ? (\n <Text numberOfLines={1} style={[styles.value, valueStyle]}>\n {selectedValue.toFixed(precision)}\n </Text>\n ) : null}\n\n <View\n accessibilityRole={readOnly ? \"image\" : \"radiogroup\"}\n accessibilityLabel={resolvedAccessibilityLabel}\n accessibilityState={{ disabled }}\n style={[styles.stars, { gap: resolvedStarGap }]}\n >\n {Array.from({ length: STAR_COUNT }, (_, index) => {\n const starValue = index + 1;\n const isSelected = starValue <= selectedStarCount;\n const icon = isSelected ? (\n <StarFilledIcon size={iconWidth} height={iconHeight} />\n ) : (\n <StarIcon size={iconWidth} height={iconHeight} />\n );\n const itemStyle = [styles.starItem, { width: size, height: size }];\n\n if (readOnly) {\n return (\n <View key={starValue} style={itemStyle}>\n {icon}\n </View>\n );\n }\n\n return (\n <Pressable\n key={starValue}\n disabled={disabled}\n hitSlop={hitSlop}\n onPress={() => selectValue(starValue)}\n accessibilityRole=\"radio\"\n accessibilityLabel={`${starValue} star${starValue === 1 ? \"\" : \"s\"}`}\n accessibilityState={{ checked: isSelected, disabled }}\n style={itemStyle}\n >\n {icon}\n </Pressable>\n );\n })}\n </View>\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n flexDirection: \"row\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n alignSelf: \"flex-start\",\n gap: 16,\n },\n stars: {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n starItem: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n value: {\n ...ratingTypography,\n color: colors.white,\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","import { forwardRef, useEffect, useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Image,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type TextStyle,\n type ViewProps,\n type ViewStyle,\n} from \"react-native\";\nimport { UserIcon } from \"../../icons\";\nimport { colors, commentCardTypography } from \"../../theme\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport { useApplyWebClassName } from \"../../utils/useApplyWebClassName\";\nimport { RatingInput } from \"../RatingInput\";\n\nexport interface CommentCardProps extends Omit<ViewProps, \"style\" | \"children\"> {\n userName: string;\n date: string;\n commentText: string;\n rating: number;\n imageUrl?: string | null;\n maxCommentLines?: number;\n maxCommentLength?: number;\n readMoreLabel?: string;\n readLessLabel?: string;\n onExpandedChange?: (expanded: boolean) => void;\n style?: StyleProp<ViewStyle>;\n commentStyle?: StyleProp<TextStyle>;\n className?: string;\n}\n\nconst CARD_WIDTH = 370;\nconst CARD_MIN_HEIGHT = 173;\nconst AVATAR_SIZE = 44;\n\nexport const CommentCard = forwardRef<ComponentRef<typeof View>, CommentCardProps>(\n function CommentCard(\n {\n userName,\n date,\n commentText,\n rating,\n imageUrl,\n maxCommentLines = 3,\n maxCommentLength = 111,\n readMoreLabel = \"Դիտել ավելին\",\n readLessLabel = \"Փակել\",\n onExpandedChange,\n style,\n commentStyle,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const containerRef = useRef<ComponentRef<typeof View>>(null);\n const setContainerRef = useMemo(() => mergeRefs(containerRef, forwardedRef), [forwardedRef]);\n const [imageFailed, setImageFailed] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const [actionHovered, setActionHovered] = useState(false);\n const hasImage = Boolean(imageUrl) && !imageFailed;\n const shouldShowAction = Array.from(commentText).length >= maxCommentLength;\n\n useApplyWebClassName(containerRef, className);\n\n useEffect(() => {\n setImageFailed(false);\n }, [imageUrl]);\n\n useEffect(() => {\n setExpanded(false);\n setActionHovered(false);\n }, [commentText, maxCommentLength, maxCommentLines]);\n\n const toggleExpanded = () => {\n const next = !expanded;\n setExpanded(next);\n onExpandedChange?.(next);\n };\n\n return (\n <View {...rest} ref={setContainerRef} style={[styles.root, style]}>\n <View style={styles.header}>\n <View style={styles.avatar}>\n {hasImage ? (\n <Image\n source={{ uri: imageUrl ?? undefined }}\n style={styles.avatarImage}\n onError={() => setImageFailed(true)}\n />\n ) : (\n <UserIcon size={20} color={colors.primary} />\n )}\n </View>\n\n <View style={styles.identity}>\n <Text numberOfLines={1} style={styles.name}>\n {userName}\n </Text>\n <Text numberOfLines={1} style={styles.date}>\n {date}\n </Text>\n </View>\n\n <RatingInput value={rating} readOnly showValue={false} size={16} />\n </View>\n\n <Text\n numberOfLines={expanded ? undefined : maxCommentLines}\n style={[styles.comment, commentStyle]}\n >\n {commentText}\n </Text>\n\n {shouldShowAction ? (\n <Pressable\n onPress={toggleExpanded}\n accessibilityRole=\"button\"\n accessibilityState={{ expanded }}\n hitSlop={6}\n onHoverIn={() => setActionHovered(true)}\n onHoverOut={() => setActionHovered(false)}\n style={styles.action}\n >\n <Text\n style={[\n styles.actionText,\n expanded && styles.closeActionText,\n actionHovered &&\n (expanded ? styles.closeActionTextHovered : styles.openActionTextHovered),\n ]}\n >\n {expanded ? readLessLabel : readMoreLabel}\n </Text>\n </Pressable>\n ) : null}\n </View>\n );\n },\n);\n\nconst styles = StyleSheet.create({\n root: {\n width: CARD_WIDTH,\n minHeight: CARD_MIN_HEIGHT,\n padding: 16,\n gap: 12,\n borderRadius: 12,\n backgroundColor: colors.grey750,\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n gap: 8,\n },\n avatar: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: AVATAR_SIZE / 2,\n backgroundColor: colors.grey600,\n },\n avatarImage: {\n width: AVATAR_SIZE,\n height: AVATAR_SIZE,\n },\n identity: {\n minWidth: 0,\n flex: 1,\n gap: 4,\n },\n name: {\n ...commentCardTypography.name,\n color: colors.white,\n },\n date: {\n ...commentCardTypography.date,\n color: colors.grey0,\n },\n comment: {\n ...commentCardTypography.comment,\n color: colors.white,\n },\n action: {\n alignSelf: \"flex-start\",\n marginTop: \"auto\",\n minHeight: 16,\n justifyContent: \"center\",\n },\n actionText: {\n ...commentCardTypography.action,\n color: colors.white,\n },\n closeActionText: {\n color: colors.primary,\n },\n openActionTextHovered: {\n color: colors.primary,\n },\n closeActionTextHovered: {\n color: colors.white,\n },\n});\n"]}
|