@scripso-homepad/ui 0.4.18 → 0.4.19

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icons/arrowUpRightPath.ts","../src/icons/ArrowUpRightIcon.tsx","../src/theme/tokens.ts","../src/utils/useApplyWebClassName.ts","../src/components/Button.tsx","../src/icons/eyeIconPaths.ts","../src/icons/EyeIcon.tsx","../src/icons/EyeOffIcon.tsx","../src/theme/input.ts","../src/components/Label.tsx","../src/components/Input.tsx","../src/icons/chevronDownPath.ts","../src/icons/ChevronDownIcon.tsx","../src/theme/select.ts","../src/utils/countryDropdownScrollStyles.ts","../src/utils/formatMultiSelectDisplay.ts","../src/components/Select.tsx","../src/data/countries.ts","../src/utils/countryFlag.ts","../src/components/CountryCodeSelector.tsx","../src/components/PhoneInput.tsx","../src/icons/chevronNavPaths.ts","../src/icons/ChevronNavIcons.tsx","../src/theme/calendar.ts","../src/utils/calendarDays.ts","../src/utils/calendarLocalization.ts","../src/utils/calendarLocaleContext.tsx","../src/components/Calendar.tsx","../src/icons/calendarIconPaths.ts","../src/icons/CalendarIcon.tsx","../src/components/DatePicker.tsx","../src/icons/lockIconPaths.ts","../src/icons/LockIcon.tsx"],"names":["jsx","Svg","Path","useLayoutEffect","Platform","useRef","jsxs","TouchableOpacity","Text","View","StyleSheet","styles","isValidElement","cloneElement","useState","Pressable","TextInput","INPUT_OUTLINE_WIDTH","createOutlineStyle","defaultOutline","Dimensions","useEffect","Animated","useMemo","Easing","Modal","ScrollView","createContext","useContext","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["export const ARROW_UP_RIGHT_PATH =\n \"M14.1667 14.1668V5.8335H5.83333M14.1667 5.8335L5.83333 14.1668\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\nexport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\ninterface ArrowUpRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowUpRightIcon({\n size = 20,\n color = \"#082640\",\n strokeWidth = 2,\n}: ArrowUpRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_UP_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/**\n * HomePad design tokens — aligned with the Figma design system\n * (navy / storm gray / slate-blue palette from HomePad brand).\n */\n\n/** Storm Gray scale — Figma steps 0 → 8.5 */\nexport const stormGray = {\n \"0\": \"#fbfcfc\",\n \"0.5\": \"#eceef0\",\n \"1\": \"#dadde0\",\n \"1.5\": \"#c7cdd1\",\n \"2\": \"#b5bcc1\",\n \"3\": \"#8f9aa3\",\n \"4\": \"#6a7984\",\n \"5\": \"#455765\",\n \"6\": \"#374651\",\n \"7\": \"#29343d\",\n \"8\": \"#1c2328\",\n \"8.5\": \"#151a1e\",\n} as const;\n\nexport type StormGrayStep = keyof typeof stormGray;\n\n/** Navy scale — Figma steps 0 → 8.5 */\nexport const navy = {\n \"0\": \"#f6fafe\",\n \"0.5\": \"#dee5eb\",\n \"1\": \"#c6d0d8\",\n \"1.5\": \"#afbac5\",\n \"2\": \"#97a5b2\",\n \"3\": \"#677b8c\",\n \"4\": \"#385066\",\n \"5\": \"#082640\",\n \"6\": \"#061e33\",\n \"7\": \"#051726\",\n \"8\": \"#030f1a\",\n \"8.5\": \"#020b13\",\n} as const;\n\nexport type NavyStep = keyof typeof navy;\n\n/** Ruby Red scale — Figma steps 0 → 8.5 */\nexport const rubyRed = {\n \"0\": \"#fff5f6\",\n \"0.5\": \"#f7dddf\",\n \"1\": \"#efc4c8\",\n \"1.5\": \"#e7acb1\",\n \"2\": \"#df939a\",\n \"3\": \"#ce626d\",\n \"4\": \"#be313f\",\n \"5\": \"#ae0011\",\n \"6\": \"#8b000e\",\n \"7\": \"#68000a\",\n \"8\": \"#460007\",\n \"8.5\": \"#340005\",\n} as const;\n\nexport type RubyRedStep = keyof typeof rubyRed;\n\n/** Emerald Green scale — Figma steps 0 → 8.5 */\nexport const emeraldGreen = {\n \"0\": \"#f0fbf5\",\n \"0.5\": \"#dcf2e5\",\n \"1\": \"#c8e8d5\",\n \"1.5\": \"#b4dfc5\",\n \"2\": \"#a0d5b5\",\n \"3\": \"#77c394\",\n \"4\": \"#4fb074\",\n \"5\": \"#279d54\",\n \"6\": \"#1f7e43\",\n \"7\": \"#175e32\",\n \"8\": \"#103f22\",\n \"8.5\": \"#0c2f19\",\n} as const;\n\nexport type EmeraldGreenStep = keyof typeof emeraldGreen;\n\n/** Figma brand palette — primary swatch per color family */\nexport const brand = {\n slateBlue: \"#182e3c\",\n stormGray: stormGray[\"5\"],\n navy: navy[\"5\"],\n rubyRed: rubyRed[\"5\"],\n emeraldGreen: emeraldGreen[\"5\"],\n} as const;\n\nexport const colors = {\n // Brand colors\n slateBlue: brand.slateBlue,\n\n // Emerald Green — Figma scale + brand swatch\n emeraldGreen0: emeraldGreen[\"0\"],\n emeraldGreen50: emeraldGreen[\"0.5\"],\n emeraldGreen100: emeraldGreen[\"1\"],\n emeraldGreen150: emeraldGreen[\"1.5\"],\n emeraldGreen200: emeraldGreen[\"2\"],\n emeraldGreen300: emeraldGreen[\"3\"],\n emeraldGreen400: emeraldGreen[\"4\"],\n emeraldGreen500: emeraldGreen[\"5\"],\n emeraldGreen600: emeraldGreen[\"6\"],\n emeraldGreen700: emeraldGreen[\"7\"],\n emeraldGreen800: emeraldGreen[\"8\"],\n emeraldGreen850: emeraldGreen[\"8.5\"],\n\n /** Primary brand emerald green — Figma Emerald Green 5 */\n emeraldGreen: brand.emeraldGreen,\n\n // Ruby Red — Figma scale + brand swatch\n rubyRed0: rubyRed[\"0\"],\n rubyRed50: rubyRed[\"0.5\"],\n rubyRed100: rubyRed[\"1\"],\n rubyRed150: rubyRed[\"1.5\"],\n rubyRed200: rubyRed[\"2\"],\n rubyRed300: rubyRed[\"3\"],\n rubyRed400: rubyRed[\"4\"],\n rubyRed500: rubyRed[\"5\"],\n rubyRed600: rubyRed[\"6\"],\n rubyRed700: rubyRed[\"7\"],\n rubyRed800: rubyRed[\"8\"],\n rubyRed850: rubyRed[\"8.5\"],\n\n /** Primary brand ruby red — Figma Ruby Red 5 */\n rubyRed: brand.rubyRed,\n\n // Navy — Figma scale + brand swatch\n navy0: navy[\"0\"],\n navy50: navy[\"0.5\"],\n navy100: navy[\"1\"],\n navy150: navy[\"1.5\"],\n navy200: navy[\"2\"],\n navy300: navy[\"3\"],\n navy400: navy[\"4\"],\n navy500: navy[\"5\"],\n navy600: navy[\"6\"],\n navy700: navy[\"7\"],\n navy800: navy[\"8\"],\n navy850: navy[\"8.5\"],\n\n /** Primary brand navy — Figma Navy 5 */\n navy: brand.navy,\n\n // Storm Gray — Figma scale + brand swatch\n stormGray0: stormGray[\"0\"],\n stormGray50: stormGray[\"0.5\"],\n stormGray100: stormGray[\"1\"],\n stormGray150: stormGray[\"1.5\"],\n stormGray200: stormGray[\"2\"],\n stormGray300: stormGray[\"3\"],\n stormGray400: stormGray[\"4\"],\n stormGray500: stormGray[\"5\"],\n /** Figma brand swatch \"Storm Gray\" — same as `stormGray500` */\n stormGrayBrand: brand.stormGray,\n stormGray600: stormGray[\"6\"],\n stormGray700: stormGray[\"7\"],\n stormGray800: stormGray[\"8\"],\n stormGray850: stormGray[\"8.5\"],\n\n /** @deprecated Use `stormGray0` */\n storm0: stormGray[\"0\"],\n /** @deprecated Use `stormGray50` */\n storm50: stormGray[\"0.5\"],\n /** @deprecated Use `stormGray200` */\n storm200: stormGray[\"2\"],\n /** @deprecated Use `stormGray300` */\n storm300: stormGray[\"3\"],\n /** @deprecated Use `stormGray500` */\n storm500: stormGray[\"5\"],\n /** @deprecated Use `stormGray700` */\n storm700: stormGray[\"7\"],\n /** @deprecated Use `stormGray850` */\n storm900: stormGray[\"8.5\"],\n\n countrySelectorSelectedBg: `${stormGray[\"0.5\"]}99`,\n\n white: \"#ffffff\",\n error: \"#dc2626\",\n errorDark: \"#b3261e\",\n errorLight: \"#fee2e2\",\n /** @deprecated Use `rubyRed` */\n inputError: brand.rubyRed,\n inputOutlineFocus: navy[\"0.5\"],\n inputOutlineError: rubyRed[\"0.5\"],\n warning: \"#92400e\",\n warningBg: \"#fef3c7\",\n success: \"#28a745\",\n successMuted: \"#9fd4a8\",\n /** @deprecated Use `emeraldGreen` */\n green: brand.emeraldGreen,\n transparent: \"transparent\",\n} as const;\n\nexport const radii = {\n sm: 8,\n md: 12,\n lg: 16,\n xl: 20,\n full: 9999,\n} as const;\n\nexport const spacing = {\n xs: 4,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 24,\n xxl: 32,\n} as const;\n\nexport const fontSize = {\n xs: 11,\n sm: 12,\n md: 14,\n base: 16,\n lg: 18,\n xl: 24,\n xxl: 32,\n} as const;\n\n/**\n * Canonical Homepad type scale (matches `.typography-*` in `src/web/styles/typography.css`).\n * font-size / line-height pairs:\n * 12/16 · 14/19 · 18/24 · 20/27 · 24/25 · 32/34\n */\nexport const typographyScale = {\n 12: { fontSize: 12, lineHeight: 16 },\n 14: { fontSize: 14, lineHeight: 19 },\n 18: { fontSize: 18, lineHeight: 24 },\n 20: { fontSize: 20, lineHeight: 27 },\n 24: { fontSize: 24, lineHeight: 25 },\n 32: { fontSize: 32, lineHeight: 34 },\n} as const;\n\nexport const fontWeight = {\n regular: \"400\" as const,\n medium: \"500\" as const,\n semibold: \"600\" as const,\n bold: \"700\" as const,\n};\n\nexport const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Input label typography — Medium, typography-12 scale. */\nexport const labelTypography = {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.medium,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n} as const;\n\n/** Button label typography — SemiBold. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[14].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[14].lineHeight,\n letterSpacing: 0,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n },\n} as const;\n\nexport const shadows = {\n card: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.05,\n shadowRadius: 20,\n elevation: 2,\n },\n cardLg: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.1,\n shadowRadius: 20,\n elevation: 4,\n },\n} as const;\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 { 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 ViewStyle,\n} from \"react-native\";\nimport { ArrowUpRightIcon } from \"../icons/ArrowUpRightIcon\";\nimport { colors, buttonTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"white\" | \"primary\" | \"green\" | \"gray\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n /** Custom icon inside the badge. Defaults to `ArrowUpRightIcon` when `showIcon` is true. */\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 white: {\n backgroundColor: colors.white,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n primary: {\n backgroundColor: colors.navy,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.navy,\n },\n green: {\n backgroundColor: colors.green,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.green,\n },\n gray: {\n backgroundColor: colors.stormGray50,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n};\n\nconst sizeConfig = {\n lg: {\n /** Matches Tailwind `h-13` so size stays stable before web classNames attach. */\n minHeight: 52,\n borderRadius: 16,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 24,\n paddingHorizontalCentered: 24,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconContainerRadius: 12,\n iconContainerPadding: 8,\n iconSize: 20,\n },\n sm: {\n minHeight: 40,\n borderRadius: 12,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 16,\n paddingHorizontalCentered: 16,\n text: buttonTypography.sm,\n iconContainerSize: 32,\n iconContainerRadius: 8,\n iconContainerPadding: 8,\n iconSize: 16,\n },\n} as const;\n\nexport function Button({\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}: ButtonProps) {\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 =\n icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = [\n Platform.OS === \"web\" ? \"max-md:px-4!\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n useApplyWebClassName(containerRef, resolvedContainerClassName || undefined);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode =\n customIcon ?? (\n <ArrowUpRightIcon 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.paddingTop,\n paddingBottom: metrics.paddingBottom,\n paddingLeft: hasIcon ? metrics.paddingLeft : metrics.paddingHorizontalCentered,\n paddingRight: hasIcon ? metrics.paddingRight : metrics.paddingHorizontalCentered,\n },\n hasIcon ? styles.withIcon : styles.centered,\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 hasIcon && styles.labelWithIcon,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n ref={containerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\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.iconContainerRadius,\n padding: metrics.iconContainerPadding,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderWidth: 0,\n },\n centered: {\n justifyContent: \"center\",\n },\n withIcon: {\n justifyContent: \"space-between\",\n },\n disabled: {\n opacity: 0.6,\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n labelWithIcon: {\n flex: 1,\n flexShrink: 1,\n marginRight: 8,\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","export const EYE_OPEN_OUTLINE_PATH =\n \"M1.71835 10.2898C1.6489 10.1027 1.6489 9.89691 1.71835 9.70981C2.39476 8.06969 3.54294 6.66735 5.01732 5.68056C6.4917 4.69378 8.22588 4.16699 10 4.16699C11.7741 4.16699 13.5083 4.69378 14.9827 5.68056C16.4571 6.66735 17.6053 8.06969 18.2817 9.70981C18.3511 9.89691 18.3511 10.1027 18.2817 10.2898C17.6053 11.9299 16.4571 13.3323 14.9827 14.3191C13.5083 15.3058 11.7741 15.8326 10 15.8326C8.22588 15.8326 6.4917 15.3058 5.01732 14.3191C3.54294 13.3323 2.39476 11.9299 1.71835 10.2898Z\";\n\nexport const EYE_OPEN_PUPIL_PATH =\n \"M10 12.4998C11.3807 12.4998 12.5 11.3805 12.5 9.99981C12.5 8.6191 11.3807 7.49981 10 7.49981C8.6193 7.49981 7.50001 8.6191 7.50001 9.99981C7.50001 11.3805 8.6193 12.4998 10 12.4998Z\";\n\nexport const EYE_OFF_PATH =\n \"M10.733 5.076C13.0624 4.7984 15.4186 5.29082 17.4419 6.47805C19.4651 7.66528 21.0442 9.48208 21.938 11.651C22.0213 11.8755 22.0213 12.1225 21.938 12.347C21.5705 13.238 21.0848 14.0755 20.494 14.837M14.084 14.158C13.5182 14.7045 12.7604 15.0069 11.9738 15C11.1872 14.9932 10.4348 14.6777 9.87854 14.1215C9.32232 13.5652 9.00681 12.8128 8.99998 12.0262C8.99314 11.2396 9.29553 10.4818 9.842 9.916M17.479 17.499C16.1525 18.2848 14.6725 18.776 13.1394 18.9394C11.6063 19.1028 10.056 18.9345 8.59363 18.4459C7.13131 17.9573 5.79119 17.1599 4.66421 16.1077C3.53723 15.0556 2.64975 13.7734 2.062 12.348C1.97866 12.1235 1.97866 11.8765 2.062 11.652C2.94863 9.50186 4.50867 7.69725 6.508 6.509M2 2L22 22\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\ninterface EyeIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — open eye (password hidden). */\nexport function EyeIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={EYE_OPEN_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={EYE_OPEN_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\ninterface EyeOffIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — slashed eye (password visible). */\nexport function EyeOffIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeOffIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={EYE_OFF_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport { colors, fonts, fontSize, fontWeight, radii } from \"./tokens\";\n\nexport const INPUT_HEIGHT = 52;\nexport const INPUT_ICON_SIZE = 20;\nexport const INPUT_ICON_GAP = 10;\nexport const INPUT_OUTLINE_WIDTH = 2;\nexport const INPUT_TEXT_LINE_HEIGHT = 19;\nexport const INPUT_WEB_VERTICAL_PADDING = 14;\n\nexport type InputVisualState =\n | \"default\"\n | \"focused\"\n | \"error\"\n | \"disabled\";\n\nexport interface InputStateFlags {\n focused?: boolean;\n error?: boolean;\n disabled?: boolean;\n}\n\nexport function resolveInputVisualState({\n focused = false,\n error = false,\n disabled = false,\n}: InputStateFlags): InputVisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"focused\";\n return \"default\";\n}\n\ninterface FieldStyleSet {\n container: ViewStyle;\n outline: ViewStyle;\n text: TextStyle;\n placeholder: string;\n icon: string;\n}\n\nfunction createOutlineStyle(ringColor: string): ViewStyle {\n return {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: ringColor,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n}\n\nconst defaultOutline: ViewStyle = {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: colors.transparent,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n};\n\nexport function getInputFieldStyles(state: InputVisualState): FieldStyleSet {\n const containerBase: ViewStyle = {\n borderRadius: radii.lg,\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n\n switch (state) {\n case \"disabled\":\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n text: { color: colors.stormGray300 },\n placeholder: colors.stormGray300,\n icon: colors.stormGray150,\n };\n case \"error\":\n return {\n outline: createOutlineStyle(colors.inputOutlineError),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.inputError,\n backgroundColor: colors.white,\n },\n text: { color: colors.inputError },\n placeholder: colors.stormGray200,\n icon: colors.inputError,\n };\n case \"focused\":\n return {\n outline: createOutlineStyle(colors.inputOutlineFocus),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.navy,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.navy,\n };\n default:\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.stormGray150,\n };\n }\n}\n\nexport const inputFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: INPUT_HEIGHT,\n borderRadius: radii.lg,\n padding: 16,\n gap: INPUT_ICON_GAP,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n paddingVertical: INPUT_WEB_VERTICAL_PADDING,\n paddingHorizontal: 16,\n } as ViewStyle)\n : null),\n },\n input: {\n flex: 1,\n minWidth: 0,\n width: \"100%\",\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n borderWidth: 0,\n backgroundColor: colors.transparent,\n ...(Platform.OS === \"android\"\n ? { includeFontPadding: false }\n : null),\n ...(Platform.OS === \"ios\"\n ? { lineHeight: INPUT_TEXT_LINE_HEIGHT, paddingVertical: 2 }\n : null),\n ...(Platform.OS === \"web\"\n ? ({\n alignSelf: \"center\",\n outlineStyle: \"none\",\n lineHeight: INPUT_TEXT_LINE_HEIGHT,\n } as TextStyle)\n : {\n alignSelf: \"stretch\",\n }),\n },\n /** Single-line: avoid Android lineHeight jump between placeholder and typed text. */\n inputSingleLine: {\n ...(Platform.OS === \"android\"\n ? ({ textAlignVertical: \"center\" } as TextStyle)\n : null),\n },\n});\n","import { useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n StyleSheet,\n Text,\n type StyleProp,\n type TextProps,\n type TextStyle,\n} from \"react-native\";\nimport { colors, labelTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport interface LabelProps extends TextProps {\n children: ReactNode;\n /** Render as a required field indicator. */\n required?: boolean;\n disabled?: boolean;\n style?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport function Label({\n children,\n required = false,\n disabled = false,\n style,\n className,\n ...props\n}: LabelProps) {\n const ref = useRef<ComponentRef<typeof Text>>(null);\n useApplyWebClassName(ref, className);\n\n return (\n <Text\n ref={ref}\n style={[styles.label, disabled && styles.labelDisabled, style]}\n accessibilityRole=\"text\"\n {...props}\n >\n {children}\n {required ? <Text style={styles.required}> *</Text> : null}\n </Text>\n );\n}\n\nconst styles = StyleSheet.create({\n label: {\n ...labelTypography,\n color: colors.slateBlue,\n },\n labelDisabled: {\n color: colors.stormGray400,\n },\n required: {\n color: colors.inputError,\n },\n});\n","import {\n cloneElement,\n isValidElement,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputFocusEventData,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { EyeIcon } from \"../icons/EyeIcon\";\nimport { EyeOffIcon } from \"../icons/EyeOffIcon\";\nimport {\n getInputFieldStyles,\n inputFieldMetrics,\n INPUT_ICON_SIZE,\n resolveInputVisualState,\n} from \"../theme/input\";\nimport { colors, spacing } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport { Label } from \"./Label\";\n\ntype InputIconProps = {\n size?: number;\n color?: string;\n};\n\nfunction renderInputIcon(icon: ReactNode, color: string) {\n if (!icon) return null;\n\n if (isValidElement<InputIconProps>(icon)) {\n return cloneElement(icon, {\n size: icon.props.size ?? INPUT_ICON_SIZE,\n color: icon.props.color ?? color,\n });\n }\n\n return icon;\n}\n\nexport interface InputProps extends TextInputProps {\n /** Optional field label rendered above the input. */\n label?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n /** Validation or helper error message. Shown instead of `hint` when set. */\n error?: string;\n /** Applies error field styling without showing a message (use with a form-level error). */\n invalid?: boolean;\n /** Helper text shown below the input when there is no error. */\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<TextStyle>;\n className?: string;\n /** CSS classes for the bordered field container (web). */\n fieldClassName?: string;\n /** Styles merged into the bordered field container. */\n fieldStyle?: StyleProp<ViewStyle>;\n labelClassName?: string;\n /** Styles merged into the field label. */\n labelStyles?: StyleProp<TextStyle>;\n inputClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** When `secureTextEntry` is set, show a toggleable eye icon. Pass `false` to disable. */\n showPasswordToggle?: boolean;\n}\n\nexport function Input({\n label,\n leftIcon,\n rightIcon,\n error,\n invalid,\n hint,\n containerStyle,\n style,\n className,\n fieldClassName,\n fieldStyle,\n labelClassName,\n labelStyles,\n inputClassName,\n errorClassName,\n hintClassName,\n editable = true,\n secureTextEntry,\n showPasswordToggle,\n onFocus,\n onBlur,\n multiline,\n textAlignVertical,\n ...props\n}: InputProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const fieldRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [focused, setFocused] = useState(false);\n const [passwordVisible, setPasswordVisible] = useState(false);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(fieldRef, fieldClassName);\n useApplyWebClassName(inputRef, inputClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n const isDisabled = editable === false;\n const hasError = Boolean(error) || Boolean(invalid);\n const passwordToggleEnabled =\n secureTextEntry === true && showPasswordToggle !== false && rightIcon == null;\n const effectiveSecureTextEntry = passwordToggleEnabled\n ? !passwordVisible\n : secureTextEntry;\n // Keep placeholder and typed text on the same vertical line (esp. Android).\n const resolvedTextAlignVertical =\n textAlignVertical ?? (multiline ? \"top\" : \"center\");\n const visualState = resolveInputVisualState({\n focused,\n error: hasError,\n disabled: isDisabled,\n });\n const fieldStyles = getInputFieldStyles(visualState);\n const iconColor = fieldStyles.icon;\n\n function handleFocus(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(true);\n onFocus?.(event);\n }\n\n function handleBlur(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(false);\n onBlur?.(event);\n }\n\n const helperMessage = error ?? hint;\n\n function togglePasswordVisibility() {\n if (!isDisabled) {\n setPasswordVisible((visible) => !visible);\n }\n }\n\n const trailingIcon = passwordToggleEnabled ? (\n <Pressable\n onPress={togglePasswordVisibility}\n disabled={isDisabled}\n accessibilityRole=\"button\"\n accessibilityLabel={passwordVisible ? \"Hide password\" : \"Show password\"}\n hitSlop={8}\n style={styles.iconPressable}\n >\n {renderInputIcon(\n passwordVisible ? <EyeOffIcon /> : <EyeIcon />,\n iconColor,\n )}\n </Pressable>\n ) : rightIcon ? (\n renderInputIcon(rightIcon, iconColor)\n ) : null;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label\n disabled={isDisabled}\n className={labelClassName}\n style={labelStyles}\n >\n {label}\n </Label>\n ) : null}\n <View style={fieldStyles.outline}>\n <View\n ref={fieldRef}\n style={[inputFieldMetrics.container, fieldStyles.container, fieldStyle]}\n >\n {leftIcon ? (\n <View style={styles.iconSlot}>{renderInputIcon(leftIcon, iconColor)}</View>\n ) : null}\n <TextInput\n ref={inputRef}\n style={[\n inputFieldMetrics.input,\n !multiline ? inputFieldMetrics.inputSingleLine : null,\n fieldStyles.text,\n style,\n ]}\n placeholderTextColor={fieldStyles.placeholder}\n editable={editable}\n multiline={multiline}\n secureTextEntry={effectiveSecureTextEntry}\n textAlign=\"left\"\n textAlignVertical={resolvedTextAlignVertical}\n onFocus={handleFocus}\n onBlur={handleBlur}\n accessibilityState={{ disabled: isDisabled }}\n {...props}\n />\n {trailingIcon ? (\n <View style={styles.iconSlot}>{trailingIcon}</View>\n ) : null}\n </View>\n </View>\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n minWidth: 0,\n gap: spacing.sm,\n },\n iconSlot: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n iconPressable: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const CHEVRON_DOWN_PATH = \"M4 6L8 10L12 6\";\nexport const CHEVRON_DOWN_PATH_20 = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH, CHEVRON_DOWN_PATH_20 } from \"./chevronDownPath\";\n\nexport { CHEVRON_DOWN_PATH, CHEVRON_DOWN_PATH_20 } 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 = 16,\n color = \"#dadde0\",\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n const useLarge = size >= 20;\n\n return (\n <Svg\n width={size}\n height={size}\n viewBox={useLarge ? \"0 0 20 20\" : \"0 0 16 16\"}\n fill=\"none\"\n >\n <Path\n d={useLarge ? CHEVRON_DOWN_PATH_20 : CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Dimensions, Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport {\n resolveInputVisualState,\n type InputStateFlags,\n type InputVisualState,\n} from \"./input\";\nimport { colors, fonts, fontSize, fontWeight, radii, spacing } from \"./tokens\";\n\nexport const SELECT_HEIGHT = 52;\nexport const SELECT_PADDING = 16;\nexport const SELECT_INNER_GAP = 10;\nexport const SELECT_ICON_SIZE = 20;\nexport const SELECT_LABEL_GAP = spacing.sm;\nexport const SELECT_DROPDOWN_GAP = spacing.sm;\nexport const SELECT_DROPDOWN_PADDING = spacing.sm;\nexport const SELECT_DROPDOWN_MAX_HEIGHT = 317;\nexport const SELECT_OPTION_HEIGHT = 43;\nexport const SELECT_OPTION_HEIGHT_COMPACT = 36;\nexport const SELECT_OPTION_GAP = spacing.sm;\nexport const SELECT_CHEVRON_SIZE = 20;\nexport const SELECT_CHEVRON_COLOR = colors.stormGray150;\nexport const SELECT_CHEVRON_ROTATION_MS = 200;\nexport const SELECT_TEXT_LINE_HEIGHT = 19;\n\nexport { resolveInputVisualState };\nexport type { InputStateFlags, InputVisualState };\n\nexport const selectLabelTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.slateBlue,\n} as const;\n\nexport const selectValueTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: SELECT_TEXT_LINE_HEIGHT,\n letterSpacing: 0,\n textAlign: \"left\",\n} as const;\n\ninterface SelectFieldStyleSet {\n container: ViewStyle;\n outline: ViewStyle;\n value: TextStyle;\n placeholder: string;\n icon: string;\n}\n\nconst INPUT_OUTLINE_WIDTH = 2;\n\nfunction createOutlineStyle(ringColor: string): ViewStyle {\n return {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: ringColor,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n}\n\nconst defaultOutline: ViewStyle = {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: colors.transparent,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n};\n\nexport function getSelectFieldStyles(state: InputVisualState): SelectFieldStyleSet {\n const containerBase: ViewStyle = {\n borderRadius: radii.lg,\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n\n const valueBase: TextStyle = {\n ...selectValueTypography,\n color: colors.slateBlue,\n };\n\n switch (state) {\n case \"disabled\":\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n value: { ...valueBase, color: colors.stormGray300 },\n placeholder: colors.stormGray300,\n icon: colors.stormGray150,\n };\n case \"error\":\n return {\n outline: createOutlineStyle(colors.inputOutlineError),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.inputError,\n backgroundColor: colors.white,\n },\n value: { ...valueBase, color: colors.inputError },\n placeholder: colors.stormGray200,\n icon: colors.inputError,\n };\n case \"focused\":\n return {\n outline: createOutlineStyle(colors.inputOutlineFocus),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.navy,\n backgroundColor: colors.white,\n },\n value: valueBase,\n placeholder: colors.stormGray200,\n icon: colors.navy,\n };\n default:\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n value: valueBase,\n placeholder: colors.stormGray200,\n icon: colors.stormGray150,\n };\n }\n}\n\nexport const selectFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: SELECT_HEIGHT,\n borderRadius: radii.lg,\n padding: SELECT_PADDING,\n gap: SELECT_INNER_GAP,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n value: {\n flex: 1,\n minWidth: 0,\n ...selectValueTypography,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n ...(Platform.OS === \"android\" ? { includeFontPadding: false } : null),\n ...(Platform.OS === \"web\"\n ? ({\n outlineStyle: \"none\",\n } as TextStyle)\n : null),\n },\n});\n\nexport const selectDropdownMetrics = StyleSheet.create({\n menu: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: SELECT_DROPDOWN_PADDING,\n overflow: \"hidden\",\n },\n option: {\n width: \"100%\",\n height: SELECT_OPTION_HEIGHT,\n minHeight: SELECT_OPTION_HEIGHT,\n maxHeight: SELECT_OPTION_HEIGHT,\n paddingTop: 12,\n paddingRight: spacing.sm,\n paddingBottom: 12,\n paddingLeft: spacing.sm,\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n },\n optionLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: SELECT_TEXT_LINE_HEIGHT,\n letterSpacing: 0,\n textAlign: \"left\",\n color: colors.slateBlue,\n width: \"100%\",\n },\n optionLabelSelected: {\n fontWeight: fontWeight.medium,\n color: colors.slateBlue,\n },\n optionSelected: {\n opacity: 1,\n borderRadius: radii.sm,\n paddingTop: 12,\n paddingRight: spacing.sm,\n paddingBottom: 12,\n paddingLeft: spacing.sm,\n backgroundColor: colors.countrySelectorSelectedBg,\n },\n optionHighlighted: {\n backgroundColor: colors.stormGray0,\n },\n});\n\nexport function resolveSelectDropdownHeight(\n optionCount: number,\n optionHeight: number = SELECT_OPTION_HEIGHT,\n): number {\n const contentHeight =\n optionCount * optionHeight +\n Math.max(0, optionCount - 1) * SELECT_OPTION_GAP +\n SELECT_DROPDOWN_PADDING * 2;\n\n return Math.min(contentHeight, SELECT_DROPDOWN_MAX_HEIGHT);\n}\n\nexport function resolveSelectDropdownContentHeight(\n optionCount: number,\n optionHeight: number = SELECT_OPTION_HEIGHT,\n): number {\n return (\n optionCount * optionHeight + Math.max(0, optionCount - 1) * SELECT_OPTION_GAP\n );\n}\n\nexport function resolveSelectDropdownTop(\n anchor: { y: number; height: number },\n dropdownHeight: number,\n): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const spaceBelow = windowHeight - (anchor.y + anchor.height + SELECT_DROPDOWN_GAP);\n const spaceAbove = anchor.y - SELECT_DROPDOWN_GAP;\n const topBelow = anchor.y + anchor.height + SELECT_DROPDOWN_GAP;\n const topAbove = anchor.y - SELECT_DROPDOWN_GAP - dropdownHeight;\n\n if (spaceBelow >= dropdownHeight) {\n return topBelow;\n }\n\n if (spaceAbove >= dropdownHeight) {\n return topAbove;\n }\n\n if (spaceAbove > spaceBelow) {\n return Math.max(0, topAbove);\n }\n\n return Math.max(0, Math.min(topBelow, windowHeight - dropdownHeight));\n}\n","import { Platform } from \"react-native\";\nimport { colors } from \"../theme/tokens\";\n\nexport const COUNTRY_DROPDOWN_SCROLL_CLASS = \"hp-country-dropdown-scroll\";\nexport const SELECT_DROPDOWN_SCROLL_CLASS = \"hp-select-dropdown-scroll\";\n\nconst STYLE_ID = \"hp-dropdown-scroll-styles\";\n\nfunction createDropdownScrollCss(className: string): string {\n return `\n .${className} {\n scrollbar-width: thin;\n scrollbar-color: ${colors.stormGray300} transparent;\n overflow-y: auto;\n }\n\n .${className}::-webkit-scrollbar {\n width: 4px;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .${className}::-webkit-scrollbar-corner {\n background: transparent;\n }\n\n .${className}::-webkit-scrollbar-button,\n .${className}::-webkit-scrollbar-button:single-button,\n .${className}::-webkit-scrollbar-button:double-button,\n .${className}::-webkit-scrollbar-button:horizontal:decrement,\n .${className}::-webkit-scrollbar-button:horizontal:increment,\n .${className}::-webkit-scrollbar-button:horizontal:start:decrement,\n .${className}::-webkit-scrollbar-button:horizontal:end:increment,\n .${className}::-webkit-scrollbar-button:vertical:decrement,\n .${className}::-webkit-scrollbar-button:vertical:increment,\n .${className}::-webkit-scrollbar-button:vertical:start:decrement,\n .${className}::-webkit-scrollbar-button:vertical:end:increment,\n .${className}::-webkit-scrollbar-button:start:decrement,\n .${className}::-webkit-scrollbar-button:end:increment,\n .${className}::-webkit-scrollbar-button:decrement,\n .${className}::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .${className}::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .${className}::-webkit-scrollbar-thumb {\n background-color: ${colors.stormGray300};\n border-radius: 9999px;\n }\n`;\n}\n\nexport const dropdownScrollCss = [\n createDropdownScrollCss(COUNTRY_DROPDOWN_SCROLL_CLASS),\n createDropdownScrollCss(SELECT_DROPDOWN_SCROLL_CLASS),\n].join(\"\\n\");\n\n/** @deprecated Use `dropdownScrollCss` */\nexport const countryDropdownScrollCss = dropdownScrollCss;\n\nexport function ensureDropdownScrollStyles(): void {\n if (Platform.OS !== \"web\" || typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = dropdownScrollCss;\n document.head.appendChild(style);\n}\n\nexport function ensureCountryDropdownScrollStyles(): void {\n ensureDropdownScrollStyles();\n}\n\nexport function ensureSelectDropdownScrollStyles(): void {\n ensureDropdownScrollStyles();\n}\n","import { fontSize } from \"../theme/tokens\";\n\nconst MULTI_SELECT_SUFFIX = \" ... + \";\nconst MULTI_SELECT_SUFFIX_UNIT = \" items\";\n\n/** Rough width estimate for Noto Sans Armenian at 14px (single-select value text). */\nfunction estimateTextWidth(text: string, size = fontSize.md): number {\n return text.length * size * 0.58;\n}\n\nexport function formatMultiSelectDisplay(\n labels: string[],\n maxWidth: number,\n textSize = fontSize.md,\n): string {\n if (labels.length === 0) {\n return \"\";\n }\n\n if (labels.length === 1) {\n return labels[0];\n }\n\n const fits = (text: string) => estimateTextWidth(text, textSize) <= maxWidth;\n const fullText = labels.join(\", \");\n\n if (fits(fullText)) {\n return fullText;\n }\n\n for (let visibleCount = labels.length - 1; visibleCount >= 1; visibleCount -= 1) {\n const hiddenCount = labels.length - visibleCount;\n const truncatedText = `${labels.slice(0, visibleCount).join(\", \")}${MULTI_SELECT_SUFFIX}${hiddenCount}${MULTI_SELECT_SUFFIX_UNIT}`;\n\n if (fits(truncatedText)) {\n return truncatedText;\n }\n }\n\n return `... + ${labels.length}${MULTI_SELECT_SUFFIX_UNIT}`;\n}\n\nexport function resolveSelectedLabels(\n options: { value: string; label: string }[],\n selectedValues: string[],\n): string[] {\n if (selectedValues.length === 0) {\n return [];\n }\n\n const labelByValue = new Map(options.map((option) => [option.value, option.label]));\n\n return selectedValues\n .map((value) => labelByValue.get(value))\n .filter((label): label is string => Boolean(label));\n}\n","import {\n cloneElement,\n isValidElement,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon } from \"../icons/ChevronDownIcon\";\nimport {\n getSelectFieldStyles,\n SELECT_CHEVRON_COLOR,\n SELECT_CHEVRON_ROTATION_MS,\n SELECT_CHEVRON_SIZE,\n SELECT_ICON_SIZE,\n SELECT_LABEL_GAP,\n SELECT_DROPDOWN_MAX_HEIGHT,\n SELECT_DROPDOWN_PADDING,\n SELECT_OPTION_GAP,\n SELECT_OPTION_HEIGHT,\n SELECT_OPTION_HEIGHT_COMPACT,\n resolveInputVisualState,\n resolveSelectDropdownContentHeight,\n resolveSelectDropdownHeight,\n resolveSelectDropdownTop,\n selectDropdownMetrics,\n selectFieldMetrics,\n selectLabelTypography,\n} from \"../theme/select\";\nimport { colors } from \"../theme/tokens\";\nimport {\n ensureSelectDropdownScrollStyles,\n SELECT_DROPDOWN_SCROLL_CLASS,\n} from \"../utils/countryDropdownScrollStyles\";\nimport {\n formatMultiSelectDisplay,\n resolveSelectedLabels,\n} from \"../utils/formatMultiSelectDisplay\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport { Label } from \"./Label\";\n\ntype SelectIconProps = {\n size?: number;\n color?: string;\n};\n\nfunction renderSelectIcon(icon: ReactNode, color: string) {\n if (!icon) return null;\n\n if (isValidElement<SelectIconProps>(icon)) {\n return cloneElement(icon, {\n size: icon.props.size ?? SELECT_ICON_SIZE,\n color: icon.props.color ?? color,\n });\n }\n\n return icon;\n}\n\nfunction resolveWebTextNode(\n ref: React.RefObject<ComponentRef<typeof Text> | null>,\n): HTMLElement | null {\n if (Platform.OS !== \"web\") {\n return null;\n }\n\n const node = ref.current as unknown;\n return node instanceof HTMLElement ? node : null;\n}\n\nfunction syncTruncatedNativeTitle(\n ref: React.RefObject<ComponentRef<typeof Text> | null>,\n label: string,\n): void {\n const element = resolveWebTextNode(ref);\n if (!element) {\n return;\n }\n\n if (element.scrollWidth > element.clientWidth) {\n element.setAttribute(\"title\", label);\n return;\n }\n\n element.removeAttribute(\"title\");\n}\n\nfunction clearNativeTitle(ref: React.RefObject<ComponentRef<typeof Text> | null>): void {\n resolveWebTextNode(ref)?.removeAttribute(\"title\");\n}\n\ninterface SelectOptionItemProps {\n option: SelectOption;\n compact: boolean;\n optionHeight: number;\n isSelected: boolean;\n isHighlighted: boolean;\n isLast: boolean;\n selectableIndex: number;\n onHighlight: (selectableIndex: number) => void;\n onSelect: (value: string) => void;\n}\n\nfunction SelectOptionItem({\n option,\n compact,\n optionHeight,\n isSelected,\n isHighlighted,\n isLast,\n selectableIndex,\n onHighlight,\n onSelect,\n}: SelectOptionItemProps) {\n const labelRef = useRef<ComponentRef<typeof Text>>(null);\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: option.disabled, selected: isSelected }}\n disabled={option.disabled}\n onPress={() => {\n if (!option.disabled) {\n onSelect(option.value);\n }\n }}\n onHoverIn={() => {\n if (!option.disabled && selectableIndex >= 0) {\n onHighlight(selectableIndex);\n }\n\n syncTruncatedNativeTitle(labelRef, option.label);\n }}\n onHoverOut={() => {\n clearNativeTitle(labelRef);\n }}\n style={[\n selectDropdownMetrics.option,\n compact && styles.optionCompact,\n { height: optionHeight, minHeight: optionHeight, maxHeight: optionHeight },\n isSelected && selectDropdownMetrics.optionSelected,\n compact && isSelected && styles.optionSelectedCompact,\n isHighlighted && !isSelected && !option.disabled\n ? selectDropdownMetrics.optionHighlighted\n : null,\n !isLast && styles.optionSpacing,\n option.disabled && styles.optionDisabled,\n ]}\n >\n <Text\n ref={labelRef}\n style={[\n selectDropdownMetrics.optionLabel,\n styles.optionLabel,\n isSelected && selectDropdownMetrics.optionLabelSelected,\n option.disabled && styles.optionLabelDisabled,\n ]}\n numberOfLines={1}\n >\n {option.label}\n </Text>\n </Pressable>\n );\n}\n\nexport type SelectOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype AnchorLayout = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nconst useIsomorphicLayoutEffect =\n typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\ninterface SelectBaseProps {\n label?: string;\n placeholder?: string;\n options: SelectOption[];\n leftIcon?: ReactNode;\n disabled?: boolean;\n error?: string;\n invalid?: boolean;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n className?: string;\n fieldClassName?: string;\n menuClassName?: string;\n labelClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** Shorter option rows for compact filter-style dropdowns. */\n compact?: boolean;\n}\n\nexport interface SingleSelectProps extends SelectBaseProps {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport interface MultipleSelectProps extends SelectBaseProps {\n multiple: true;\n value?: string[];\n onValueChange?: (value: string[]) => void;\n}\n\nexport type SelectProps = SingleSelectProps | MultipleSelectProps;\n\nfunction normalizeSelectedValues(\n multiple: boolean,\n value: string | string[] | undefined,\n): string[] {\n if (multiple) {\n if (Array.isArray(value)) {\n return value;\n }\n\n return value ? [value] : [];\n }\n\n return typeof value === \"string\" && value.length > 0 ? [value] : [];\n}\n\nexport function Select({\n label,\n placeholder = \"placeholder\",\n value,\n onValueChange,\n options,\n leftIcon,\n multiple = false,\n disabled = false,\n error,\n invalid,\n hint,\n containerStyle,\n fieldStyle,\n className,\n fieldClassName,\n menuClassName,\n labelClassName,\n errorClassName,\n hintClassName,\n compact = false,\n}: SelectProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const menuRef = useRef<ComponentRef<typeof View>>(null);\n const scrollRef = useRef<ComponentRef<typeof ScrollView>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const chevronRotation = useRef(new Animated.Value(0)).current;\n const [open, setOpen] = useState(false);\n const [anchor, setAnchor] = useState<AnchorLayout | null>(null);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [valueContainerWidth, setValueContainerWidth] = useState(0);\n const optionHeight = compact ? SELECT_OPTION_HEIGHT_COMPACT : SELECT_OPTION_HEIGHT;\n const needsScroll = useMemo(\n () =>\n resolveSelectDropdownContentHeight(options.length, optionHeight) >\n SELECT_DROPDOWN_MAX_HEIGHT - SELECT_DROPDOWN_PADDING * 2,\n [optionHeight, options.length],\n );\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(triggerRef, fieldClassName);\n useApplyWebClassName(menuRef, menuClassName);\n useApplyWebClassName(scrollRef, SELECT_DROPDOWN_SCROLL_CLASS, open && Boolean(anchor) && needsScroll);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n useIsomorphicLayoutEffect(() => {\n ensureSelectDropdownScrollStyles();\n }, []);\n\n useEffect(() => {\n Animated.timing(chevronRotation, {\n toValue: open ? 1 : 0,\n duration: SELECT_CHEVRON_ROTATION_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: Platform.OS !== \"web\",\n }).start();\n }, [chevronRotation, open]);\n\n const chevronRotate = chevronRotation.interpolate({\n inputRange: [0, 1],\n outputRange: [\"0deg\", \"180deg\"],\n });\n\n const hasError = Boolean(error) || Boolean(invalid);\n const visualState = resolveInputVisualState({\n focused: open,\n error: hasError,\n disabled,\n });\n const fieldStyles = getSelectFieldStyles(visualState);\n\n const selectedValues = useMemo(\n () => normalizeSelectedValues(multiple, value),\n [multiple, value],\n );\n const selectedValueSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const selectedLabels = useMemo(\n () => resolveSelectedLabels(options, selectedValues),\n [options, selectedValues],\n );\n const selectableOptions = useMemo(\n () => options.filter((option) => !option.disabled),\n [options],\n );\n const selectableIndexByValue = useMemo(\n () =>\n new Map(\n selectableOptions.map((option, index) => [option.value, index] as const),\n ),\n [selectableOptions],\n );\n const displayLabel = useMemo(() => {\n if (selectedLabels.length === 0) {\n return placeholder;\n }\n\n if (!multiple) {\n return selectedLabels[0];\n }\n\n if (valueContainerWidth <= 0) {\n return selectedLabels.join(\", \");\n }\n\n return formatMultiSelectDisplay(selectedLabels, valueContainerWidth);\n }, [multiple, placeholder, selectedLabels, valueContainerWidth]);\n\n const isPlaceholder = selectedLabels.length === 0;\n const dropdownHeight = resolveSelectDropdownHeight(options.length, optionHeight);\n const helperMessage = error ?? hint;\n\n function closeMenu() {\n setOpen(false);\n setAnchor(null);\n setHighlightedIndex(-1);\n }\n\n function openMenu() {\n if (disabled || selectableOptions.length === 0) {\n return;\n }\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n const selectedIndex = selectableOptions.findIndex((option) =>\n selectedValueSet.has(option.value),\n );\n setHighlightedIndex(selectedIndex >= 0 ? selectedIndex : 0);\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSelect(nextValue: string) {\n if (multiple) {\n const nextValues = selectedValues.includes(nextValue)\n ? selectedValues.filter((item) => item !== nextValue)\n : [...selectedValues, nextValue];\n\n (onValueChange as MultipleSelectProps[\"onValueChange\"] | undefined)?.(nextValues);\n return;\n }\n\n if (selectedValues.includes(nextValue)) {\n (onValueChange as SingleSelectProps[\"onValueChange\"] | undefined)?.(\"\");\n closeMenu();\n return;\n }\n\n (onValueChange as SingleSelectProps[\"onValueChange\"] | undefined)?.(nextValue);\n closeMenu();\n }\n\n const optionList = options.map((option, index) => {\n const selectableIndex = selectableIndexByValue.get(option.value) ?? -1;\n const isSelected = selectedValueSet.has(option.value);\n const isHighlighted = selectableIndex === highlightedIndex;\n const isLast = index === options.length - 1;\n\n return (\n <SelectOptionItem\n key={option.value}\n option={option}\n compact={compact}\n optionHeight={optionHeight}\n isSelected={isSelected}\n isHighlighted={isHighlighted}\n isLast={isLast}\n selectableIndex={selectableIndex}\n onHighlight={setHighlightedIndex}\n onSelect={handleSelect}\n />\n );\n });\n\n const dropdownTop = anchor ? resolveSelectDropdownTop(anchor, dropdownHeight) : 0;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label disabled={disabled} style={styles.label} className={labelClassName}>\n {label}\n </Label>\n ) : null}\n\n <View style={fieldStyles.outline}>\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled, expanded: open }}\n disabled={disabled}\n onPress={open ? closeMenu : openMenu}\n style={[selectFieldMetrics.container, fieldStyles.container, fieldStyle]}\n >\n {leftIcon ? (\n <View style={styles.iconSlot}>\n {renderSelectIcon(leftIcon, fieldStyles.icon)}\n </View>\n ) : null}\n <View\n style={styles.valueContainer}\n onLayout={(event) => {\n setValueContainerWidth(event.nativeEvent.layout.width);\n }}\n >\n <Text\n style={[\n selectFieldMetrics.value,\n fieldStyles.value,\n isPlaceholder && { color: fieldStyles.placeholder },\n ]}\n numberOfLines={1}\n >\n {displayLabel}\n </Text>\n </View>\n <Animated.View\n style={[styles.iconSlot, { transform: [{ rotate: chevronRotate }] }]}\n >\n <ChevronDownIcon\n size={SELECT_CHEVRON_SIZE}\n color={disabled ? colors.stormGray200 : SELECT_CHEVRON_COLOR}\n />\n </Animated.View>\n </Pressable>\n </View>\n\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n\n <Modal visible={open} transparent animationType=\"fade\" onRequestClose={closeMenu}>\n <Pressable style={styles.overlay} onPress={closeMenu}>\n {anchor ? (\n <View\n ref={menuRef}\n style={[\n selectDropdownMetrics.menu,\n styles.dropdown,\n {\n top: dropdownTop,\n left: anchor.x,\n width: anchor.width,\n height: dropdownHeight,\n },\n ]}\n >\n {needsScroll ? (\n <ScrollView\n ref={scrollRef}\n style={styles.dropdownScroll}\n contentContainerStyle={styles.dropdownContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator\n bounces={false}\n nestedScrollEnabled\n >\n {optionList}\n </ScrollView>\n ) : (\n <View style={styles.dropdownContent}>{optionList}</View>\n )}\n </View>\n ) : null}\n </Pressable>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n gap: SELECT_LABEL_GAP,\n },\n label: {\n ...selectLabelTypography,\n },\n iconSlot: {\n width: SELECT_ICON_SIZE,\n height: SELECT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n valueContainer: {\n flex: 1,\n minWidth: 0,\n justifyContent: \"center\",\n },\n overlay: {\n flex: 1,\n backgroundColor: colors.transparent,\n },\n dropdown: {\n position: \"absolute\",\n },\n dropdownScroll: {\n flex: 1,\n },\n dropdownContent: {\n flexGrow: 1,\n },\n optionSpacing: {\n marginBottom: SELECT_OPTION_GAP,\n },\n optionCompact: {\n paddingTop: 8,\n paddingBottom: 8,\n },\n optionSelectedCompact: {\n paddingTop: 8,\n paddingBottom: 8,\n },\n optionDisabled: {\n opacity: 0.5,\n },\n optionLabel: {\n minWidth: 0,\n ...(Platform.OS === \"web\"\n ? ({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n } as const)\n : null),\n },\n optionLabelDisabled: {\n color: colors.stormGray300,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export type Country = {\n code: string;\n name: string;\n dialCode: string;\n};\n\nexport const defaultCountry: Country = {\n code: \"AM\",\n name: \"Armenia\",\n dialCode: \"+374\",\n};\n\nexport const countries: Country[] = [\n defaultCountry,\n { code: \"AF\", name: \"Afghanistan\", dialCode: \"+93\" },\n { code: \"AL\", name: \"Albania\", dialCode: \"+355\" },\n { code: \"DZ\", name: \"Algeria\", dialCode: \"+213\" },\n { code: \"AR\", name: \"Argentina\", dialCode: \"+54\" },\n { code: \"AU\", name: \"Australia\", dialCode: \"+61\" },\n { code: \"AT\", name: \"Austria\", dialCode: \"+43\" },\n { code: \"AZ\", name: \"Azerbaijan\", dialCode: \"+994\" },\n { code: \"BH\", name: \"Bahrain\", dialCode: \"+973\" },\n { code: \"BY\", name: \"Belarus\", dialCode: \"+375\" },\n { code: \"BE\", name: \"Belgium\", dialCode: \"+32\" },\n { code: \"BR\", name: \"Brazil\", dialCode: \"+55\" },\n { code: \"BG\", name: \"Bulgaria\", dialCode: \"+359\" },\n { code: \"CA\", name: \"Canada\", dialCode: \"+1\" },\n { code: \"CL\", name: \"Chile\", dialCode: \"+56\" },\n { code: \"CN\", name: \"China\", dialCode: \"+86\" },\n { code: \"CO\", name: \"Colombia\", dialCode: \"+57\" },\n { code: \"HR\", name: \"Croatia\", dialCode: \"+385\" },\n { code: \"CY\", name: \"Cyprus\", dialCode: \"+357\" },\n { code: \"CZ\", name: \"Czech Republic\", dialCode: \"+420\" },\n { code: \"DK\", name: \"Denmark\", dialCode: \"+45\" },\n { code: \"EG\", name: \"Egypt\", dialCode: \"+20\" },\n { code: \"EE\", name: \"Estonia\", dialCode: \"+372\" },\n { code: \"FI\", name: \"Finland\", dialCode: \"+358\" },\n { code: \"FR\", name: \"France\", dialCode: \"+33\" },\n { code: \"GE\", name: \"Georgia\", dialCode: \"+995\" },\n { code: \"DE\", name: \"Germany\", dialCode: \"+49\" },\n { code: \"GR\", name: \"Greece\", dialCode: \"+30\" },\n { code: \"HK\", name: \"Hong Kong\", dialCode: \"+852\" },\n { code: \"HU\", name: \"Hungary\", dialCode: \"+36\" },\n { code: \"IN\", name: \"India\", dialCode: \"+91\" },\n { code: \"ID\", name: \"Indonesia\", dialCode: \"+62\" },\n { code: \"IR\", name: \"Iran\", dialCode: \"+98\" },\n { code: \"IQ\", name: \"Iraq\", dialCode: \"+964\" },\n { code: \"IE\", name: \"Ireland\", dialCode: \"+353\" },\n { code: \"IL\", name: \"Israel\", dialCode: \"+972\" },\n { code: \"IT\", name: \"Italy\", dialCode: \"+39\" },\n { code: \"JP\", name: \"Japan\", dialCode: \"+81\" },\n { code: \"JO\", name: \"Jordan\", dialCode: \"+962\" },\n { code: \"KZ\", name: \"Kazakhstan\", dialCode: \"+7\" },\n { code: \"KW\", name: \"Kuwait\", dialCode: \"+965\" },\n { code: \"LV\", name: \"Latvia\", dialCode: \"+371\" },\n { code: \"LB\", name: \"Lebanon\", dialCode: \"+961\" },\n { code: \"LT\", name: \"Lithuania\", dialCode: \"+370\" },\n { code: \"LU\", name: \"Luxembourg\", dialCode: \"+352\" },\n { code: \"MY\", name: \"Malaysia\", dialCode: \"+60\" },\n { code: \"MX\", name: \"Mexico\", dialCode: \"+52\" },\n { code: \"MD\", name: \"Moldova\", dialCode: \"+373\" },\n { code: \"NL\", name: \"Netherlands\", dialCode: \"+31\" },\n { code: \"NZ\", name: \"New Zealand\", dialCode: \"+64\" },\n { code: \"NG\", name: \"Nigeria\", dialCode: \"+234\" },\n { code: \"NO\", name: \"Norway\", dialCode: \"+47\" },\n { code: \"PK\", name: \"Pakistan\", dialCode: \"+92\" },\n { code: \"PS\", name: \"Palestine\", dialCode: \"+970\" },\n { code: \"PH\", name: \"Philippines\", dialCode: \"+63\" },\n { code: \"PL\", name: \"Poland\", dialCode: \"+48\" },\n { code: \"PT\", name: \"Portugal\", dialCode: \"+351\" },\n { code: \"QA\", name: \"Qatar\", dialCode: \"+974\" },\n { code: \"RO\", name: \"Romania\", dialCode: \"+40\" },\n { code: \"RU\", name: \"Russia\", dialCode: \"+7\" },\n { code: \"SA\", name: \"Saudi Arabia\", dialCode: \"+966\" },\n { code: \"RS\", name: \"Serbia\", dialCode: \"+381\" },\n { code: \"SG\", name: \"Singapore\", dialCode: \"+65\" },\n { code: \"SK\", name: \"Slovakia\", dialCode: \"+421\" },\n { code: \"SI\", name: \"Slovenia\", dialCode: \"+386\" },\n { code: \"ZA\", name: \"South Africa\", dialCode: \"+27\" },\n { code: \"KR\", name: \"South Korea\", dialCode: \"+82\" },\n { code: \"ES\", name: \"Spain\", dialCode: \"+34\" },\n { code: \"SE\", name: \"Sweden\", dialCode: \"+46\" },\n { code: \"CH\", name: \"Switzerland\", dialCode: \"+41\" },\n { code: \"SY\", name: \"Syria\", dialCode: \"+963\" },\n { code: \"TW\", name: \"Taiwan\", dialCode: \"+886\" },\n { code: \"TH\", name: \"Thailand\", dialCode: \"+66\" },\n { code: \"TR\", name: \"Turkey\", dialCode: \"+90\" },\n { code: \"UA\", name: \"Ukraine\", dialCode: \"+380\" },\n { code: \"AE\", name: \"United Arab Emirates\", dialCode: \"+971\" },\n { code: \"GB\", name: \"United Kingdom\", dialCode: \"+44\" },\n { code: \"US\", name: \"United States\", dialCode: \"+1\" },\n { code: \"UZ\", name: \"Uzbekistan\", dialCode: \"+998\" },\n { code: \"VN\", name: \"Vietnam\", dialCode: \"+84\" },\n];\n\nexport function findCountry(code: string): Country {\n return countries.find((country) => country.code === code) ?? defaultCountry;\n}\n","/** ISO 3166-1 alpha-2 country code → flag emoji (cross-platform). */\nexport function countryCodeToFlagEmoji(code: string): string {\n const upper = code.trim().toUpperCase();\n if (upper.length !== 2) return \"\";\n\n return String.fromCodePoint(\n ...upper.split(\"\").map((char) => 0x1f1e6 - 65 + char.charCodeAt(0)),\n );\n}\n","import { useRef, useState, useLayoutEffect, type ComponentRef } from \"react\";\nimport {\n Dimensions,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport {\n countries,\n defaultCountry,\n findCountry,\n type Country,\n} from \"../data/countries\";\nimport { ChevronDownIcon } from \"../icons/ChevronDownIcon\";\nimport { colors, fontSize, fontWeight, radii, spacing, fonts } from \"../theme/tokens\";\nimport { countryCodeToFlagEmoji } from \"../utils/countryFlag\";\nimport {\n COUNTRY_DROPDOWN_SCROLL_CLASS,\n ensureCountryDropdownScrollStyles,\n} from \"../utils/countryDropdownScrollStyles\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nconst DROPDOWN_GAP = 10;\nconst DROPDOWN_HEIGHT = 186;\nconst DROPDOWN_PADDING = 8;\nconst OPTION_GAP = 10;\nconst OPTION_HEIGHT = 35;\nconst TRIGGER_HEIGHT = 52;\nconst CHEVRON_SIZE = 16;\n\nexport interface CountryCodeSelectorProps {\n value?: string;\n onValueChange?: (countryCode: string) => void;\n /** Country list (defaults to built-in list). */\n options?: Country[];\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\ntype AnchorLayout = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nfunction resolveDropdownTop(anchor: AnchorLayout): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const topBelow = anchor.y + anchor.height + DROPDOWN_GAP;\n const topAbove = anchor.y - DROPDOWN_GAP - DROPDOWN_HEIGHT;\n const fitsBelow = topBelow + DROPDOWN_HEIGHT <= windowHeight;\n\n if (fitsBelow) return topBelow;\n if (topAbove >= 0) return topAbove;\n\n return Math.max(0, Math.min(topBelow, windowHeight - DROPDOWN_HEIGHT));\n}\n\nexport function CountryCodeSelector({\n value = defaultCountry.code,\n onValueChange,\n options = countries,\n disabled = false,\n style,\n className,\n}: CountryCodeSelectorProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const scrollRef = useRef<ComponentRef<typeof ScrollView>>(null);\n const [open, setOpen] = useState(false);\n const [anchor, setAnchor] = useState<AnchorLayout | null>(null);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(\n scrollRef,\n COUNTRY_DROPDOWN_SCROLL_CLASS,\n open && Boolean(anchor),\n );\n\n useLayoutEffect(() => {\n ensureCountryDropdownScrollStyles();\n }, []);\n\n const selected = findCountry(value);\n const textColor = disabled ? colors.stormGray200 : colors.slateBlue;\n\n function closeDropdown() {\n setOpen(false);\n setAnchor(null);\n }\n\n function handleOpen() {\n if (disabled) return;\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSelect(code: string) {\n onValueChange?.(code);\n closeDropdown();\n }\n\n const dropdownTop = anchor ? resolveDropdownTop(anchor) : 0;\n\n const optionList = options.map((item, index) => {\n const isSelected = item.code === selected.code;\n const isLast = index === options.length - 1;\n return (\n <Pressable\n key={item.code}\n accessibilityRole=\"button\"\n onPress={() => handleSelect(item.code)}\n style={[\n styles.option,\n isSelected && styles.optionSelected,\n !isLast && styles.optionSpacing,\n ]}\n >\n <Text style={styles.flag}>{countryCodeToFlagEmoji(item.code)}</Text>\n <Text style={styles.optionDialCode}>{item.dialCode}</Text>\n </Pressable>\n );\n });\n\n const dropdownList = (\n <ScrollView\n ref={scrollRef}\n style={styles.dropdownScroll}\n contentContainerStyle={styles.dropdownContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator\n bounces={false}\n nestedScrollEnabled\n >\n {optionList}\n </ScrollView>\n );\n\n return (\n <View ref={wrapperRef} style={[styles.root, style]}>\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n disabled={disabled}\n onPress={handleOpen}\n style={[\n styles.trigger,\n disabled ? styles.triggerDisabled : styles.triggerEnabled,\n Platform.OS === \"web\" ? styles.triggerWeb : null,\n ]}\n >\n <Text style={styles.flag}>{countryCodeToFlagEmoji(selected.code)}</Text>\n <Text style={[styles.dialCode, { color: textColor }]}>{selected.dialCode}</Text>\n <ChevronDownIcon size={CHEVRON_SIZE} color={colors.stormGray100} />\n </Pressable>\n\n <Modal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={closeDropdown}\n >\n <Pressable style={styles.overlay} onPress={closeDropdown}>\n {anchor ? (\n <View\n style={[\n styles.dropdown,\n {\n top: dropdownTop,\n left: anchor.x,\n width: anchor.width,\n },\n ]}\n >\n {dropdownList}\n </View>\n ) : null}\n </Pressable>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: {\n alignSelf: \"flex-start\",\n flexShrink: 0,\n },\n trigger: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n flexGrow: 0,\n flexShrink: 0,\n height: TRIGGER_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n padding: spacing.lg,\n gap: spacing.sm,\n },\n triggerEnabled: {\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n triggerDisabled: {\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n triggerWeb: {\n width: \"max-content\" as ViewStyle[\"width\"],\n },\n flag: {\n fontSize: 18,\n lineHeight: 24,\n },\n dialCode: {\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n lineHeight: 19,\n },\n overlay: {\n flex: 1,\n backgroundColor: \"transparent\",\n },\n dropdown: {\n position: \"absolute\",\n height: DROPDOWN_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: DROPDOWN_PADDING,\n overflow: \"hidden\",\n },\n dropdownScroll: {\n flex: 1,\n },\n dropdownContent: {\n flexGrow: 1,\n },\n option: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: OPTION_HEIGHT,\n borderRadius: radii.sm,\n padding: spacing.sm,\n gap: spacing.sm,\n },\n optionSpacing: {\n marginBottom: OPTION_GAP,\n },\n optionSelected: {\n backgroundColor: colors.countrySelectorSelectedBg,\n },\n optionDialCode: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: fontSize.md,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.slateBlue,\n },\n});\n","import { useRef, useState, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n TextInput,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputFocusEventData,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CountryCodeSelector } from \"./CountryCodeSelector\";\nimport { Label } from \"./Label\";\nimport {\n getInputFieldStyles,\n inputFieldMetrics,\n INPUT_ICON_GAP,\n resolveInputVisualState,\n} from \"../theme/input\";\nimport { colors, spacing } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport interface PhoneInputProps extends Omit<TextInputProps, \"style\"> {\n label?: string;\n countryCode?: string;\n onCountryCodeChange?: (countryCode: string) => void;\n error?: string;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<TextStyle>;\n className?: string;\n labelClassName?: string;\n /** Styles merged into the field label. */\n labelStyles?: StyleProp<TextStyle>;\n inputClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n}\n\nexport function PhoneInput({\n label,\n countryCode,\n onCountryCodeChange,\n error,\n hint,\n containerStyle,\n style,\n className,\n labelClassName,\n labelStyles,\n inputClassName,\n errorClassName,\n hintClassName,\n editable = true,\n onFocus,\n onBlur,\n ...props\n}: PhoneInputProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [focused, setFocused] = useState(false);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n const isDisabled = editable === false;\n const phoneVisualState = resolveInputVisualState({\n focused,\n error: Boolean(error),\n disabled: isDisabled,\n });\n const phoneFieldStyles = getInputFieldStyles(phoneVisualState);\n\n function handleFocus(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(true);\n onFocus?.(event);\n }\n\n function handleBlur(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(false);\n onBlur?.(event);\n }\n\n const helperMessage = error ?? hint;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label\n disabled={isDisabled}\n className={labelClassName}\n style={labelStyles}\n >\n {label}\n </Label>\n ) : null}\n <View style={styles.row}>\n <CountryCodeSelector\n value={countryCode}\n onValueChange={onCountryCodeChange}\n disabled={isDisabled}\n style={styles.countrySelector}\n />\n <View style={[phoneFieldStyles.outline, styles.phoneOutline]}>\n <View\n style={[\n inputFieldMetrics.container,\n phoneFieldStyles.container,\n styles.phoneField,\n ]}\n >\n <TextInput\n ref={inputRef}\n style={[\n inputFieldMetrics.input,\n phoneFieldStyles.text,\n style,\n ]}\n keyboardType=\"phone-pad\"\n placeholderTextColor={\n error ? colors.inputError : phoneFieldStyles.placeholder\n }\n editable={editable}\n onFocus={handleFocus}\n onBlur={handleBlur}\n accessibilityState={{ disabled: isDisabled }}\n {...props}\n />\n </View>\n </View>\n </View>\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n gap: spacing.sm,\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n gap: INPUT_ICON_GAP,\n },\n countrySelector: {\n flexShrink: 0,\n alignSelf: \"flex-start\",\n },\n phoneOutline: {\n flex: 1,\n },\n phoneField: {\n flex: 1,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\nexport const CHEVRON_RIGHT_PATH = \"M7.5 15L12.5 10L7.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH, CHEVRON_RIGHT_PATH } from \"./chevronNavPaths\";\n\ninterface ChevronNavIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\nexport function ChevronLeftIcon({\n size = 20,\n color = \"#151a1e\",\n strokeWidth = 2,\n}: ChevronNavIconProps) {\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\nexport function ChevronRightIcon({\n size = 20,\n color = \"#151a1e\",\n strokeWidth = 2,\n}: ChevronNavIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Dimensions, Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport { colors, fonts, fontSize, fontWeight, radii, spacing } from \"./tokens\";\n\nexport const CALENDAR_DROPDOWN_GAP = spacing.sm;\nexport const CALENDAR_PANEL_WIDTH = 296;\nexport const CALENDAR_PANEL_PADDING = spacing.md;\nexport const CALENDAR_PANEL_GAP = spacing.md;\nexport const CALENDAR_CONTENT_WIDTH =\n CALENDAR_PANEL_WIDTH - CALENDAR_PANEL_PADDING * 2;\nexport const CALENDAR_HEADER_HEIGHT = 20;\nexport const CALENDAR_WEEKDAY_CELL_SIZE = 32;\nexport const CALENDAR_WEEKDAY_GAP = spacing.sm;\nexport const CALENDAR_WEEKDAY_RADIUS = 6;\nexport const CALENDAR_DAY_SIZE = CALENDAR_WEEKDAY_CELL_SIZE;\nexport const CALENDAR_DAY_GRID_WIDTH = CALENDAR_CONTENT_WIDTH;\nexport const CALENDAR_DAY_GAP_X = spacing.sm;\nexport const CALENDAR_DAY_GAP_Y = spacing.lg;\nexport const CALENDAR_DAY_ROWS = 6;\nexport const CALENDAR_DAY_GRID_HEIGHT =\n CALENDAR_DAY_SIZE * CALENDAR_DAY_ROWS + CALENDAR_DAY_GAP_Y * (CALENDAR_DAY_ROWS - 1);\nexport const CALENDAR_PICKER_COLUMNS = 3;\nexport const CALENDAR_PICKER_ROWS = 4;\nexport const CALENDAR_YEARS_PER_PAGE = 12;\nexport const CALENDAR_PICKER_CELL_WIDTH =\n (CALENDAR_DAY_GRID_WIDTH - CALENDAR_DAY_GAP_X * (CALENDAR_PICKER_COLUMNS - 1)) /\n CALENDAR_PICKER_COLUMNS;\nexport const CALENDAR_PICKER_CELL_HEIGHT = 36;\nexport const CALENDAR_PICKER_BODY_HEIGHT =\n CALENDAR_WEEKDAY_CELL_SIZE + CALENDAR_WEEKDAY_GAP + CALENDAR_DAY_GRID_HEIGHT;\nexport const CALENDAR_DAY_DOT_SIZE = 3;\nexport const CALENDAR_TODAY_TEXT_COLOR = \"#082640\";\nexport const CALENDAR_TODAY_DOT_COLOR = \"#0033A0\";\nexport const CALENDAR_NAV_ICON_SIZE = 20;\nexport const CALENDAR_NAV_ICON_COLOR = colors.stormGray850;\nexport const CALENDAR_FIELD_ICON_SIZE = 20;\nexport const CALENDAR_FIELD_WIDTH = CALENDAR_PANEL_WIDTH;\nexport const CALENDAR_FIELD_HEIGHT = 52;\nexport const CALENDAR_FIELD_PADDING = spacing.lg;\nexport const CALENDAR_FIELD_GAP = spacing.sm;\nexport const CALENDAR_FIELD_PLACEHOLDER_COLOR = colors.stormGray200;\n\n/** @deprecated Use `CALENDAR_PANEL_WIDTH` */\nexport const CALENDAR_PANEL_MIN_WIDTH = CALENDAR_PANEL_WIDTH;\n\nexport const CALENDAR_PANEL_TOTAL_HEIGHT =\n CALENDAR_PANEL_PADDING * 2 +\n CALENDAR_HEADER_HEIGHT +\n CALENDAR_PANEL_GAP * 2 +\n CALENDAR_WEEKDAY_CELL_SIZE +\n CALENDAR_DAY_GRID_HEIGHT;\nexport const CALENDAR_PANEL_HEIGHT = CALENDAR_PANEL_TOTAL_HEIGHT;\n\nexport const calendarLabelTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.slateBlue,\n} as const;\n\nexport const calendarFieldTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"left\",\n} as const;\n\nexport const calendarFieldPlaceholderTypography = {\n ...calendarFieldTypography,\n color: CALENDAR_FIELD_PLACEHOLDER_COLOR,\n} as const;\n\nexport const calendarDropdownMetrics = StyleSheet.create({\n panel: {\n width: CALENDAR_PANEL_WIDTH,\n height: CALENDAR_PANEL_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: CALENDAR_PANEL_PADDING,\n gap: CALENDAR_PANEL_GAP,\n overflow: \"hidden\",\n flexDirection: \"column\",\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n height: CALENDAR_HEADER_HEIGHT,\n minHeight: CALENDAR_HEADER_HEIGHT,\n maxHeight: CALENDAR_HEADER_HEIGHT,\n },\n headerTitle: {\n textAlign: \"center\",\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.bold,\n lineHeight: 19,\n letterSpacing: 0,\n color: colors.stormGray850,\n },\n headerTitlePressable: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: CALENDAR_HEADER_HEIGHT,\n },\n navButton: {\n width: CALENDAR_NAV_ICON_SIZE,\n height: CALENDAR_NAV_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n gap: CALENDAR_WEEKDAY_GAP,\n height: CALENDAR_WEEKDAY_CELL_SIZE,\n minHeight: CALENDAR_WEEKDAY_CELL_SIZE,\n maxHeight: CALENDAR_WEEKDAY_CELL_SIZE,\n opacity: 1,\n },\n weekdayCell: {\n width: CALENDAR_WEEKDAY_CELL_SIZE,\n height: CALENDAR_WEEKDAY_CELL_SIZE,\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n padding: spacing.xs,\n backgroundColor: colors.stormGray0,\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n weekdayLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.regular,\n lineHeight: 16,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.stormGray300,\n textTransform: \"uppercase\",\n },\n dayGrid: {\n width: CALENDAR_DAY_GRID_WIDTH,\n height: CALENDAR_DAY_GRID_HEIGHT,\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n columnGap: CALENDAR_DAY_GAP_X,\n rowGap: CALENDAR_DAY_GAP_Y,\n alignContent: \"flex-start\",\n opacity: 1,\n },\n dayCell: {\n width: CALENDAR_DAY_SIZE,\n height: CALENDAR_DAY_SIZE,\n minHeight: CALENDAR_DAY_SIZE,\n maxHeight: CALENDAR_DAY_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n padding: spacing.xs,\n backgroundColor: colors.white,\n opacity: 1,\n position: \"relative\",\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n dayCellPast: {\n backgroundColor: colors.stormGray50,\n },\n dayCellSelected: {\n backgroundColor: colors.navy,\n },\n dayLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.navy,\n includeFontPadding: false,\n textAlignVertical: \"center\",\n },\n dayLabelToday: {\n color: CALENDAR_TODAY_TEXT_COLOR,\n },\n dayLabelSelected: {\n fontWeight: fontWeight.semibold,\n color: colors.white,\n },\n dayLabelFuture: {\n color: colors.navy,\n },\n dayLabelMuted: {\n color: colors.stormGray300,\n },\n dayLabelOutsideMonth: {\n color: colors.stormGray300,\n },\n dayLabelDisabled: {\n color: colors.stormGray300,\n opacity: 0.5,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 5,\n left: \"50%\",\n width: CALENDAR_DAY_DOT_SIZE,\n height: CALENDAR_DAY_DOT_SIZE,\n borderRadius: 15,\n backgroundColor: CALENDAR_TODAY_DOT_COLOR,\n marginLeft: -(CALENDAR_DAY_DOT_SIZE / 2),\n zIndex: 1,\n },\n pickerBody: {\n width: CALENDAR_DAY_GRID_WIDTH,\n height: CALENDAR_PICKER_BODY_HEIGHT,\n justifyContent: \"center\",\n },\n pickerGrid: {\n width: CALENDAR_DAY_GRID_WIDTH,\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n columnGap: CALENDAR_DAY_GAP_X,\n rowGap: CALENDAR_DAY_GAP_Y,\n alignContent: \"flex-start\",\n },\n pickerCell: {\n width: CALENDAR_PICKER_CELL_WIDTH,\n minHeight: CALENDAR_PICKER_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n backgroundColor: colors.white,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n pickerCellSelected: {\n backgroundColor: colors.navy,\n },\n pickerLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.navy,\n includeFontPadding: false,\n ...(Platform.OS === \"android\" ? { textAlignVertical: \"center\" as const } : null),\n },\n pickerLabelSelected: {\n fontWeight: fontWeight.semibold,\n color: colors.white,\n },\n pickerLabelDisabled: {\n color: colors.stormGray300,\n opacity: 0.5,\n },\n pickerLabelCurrent: {\n color: CALENDAR_TODAY_TEXT_COLOR,\n },\n});\n\nexport function resolveCalendarDropdownTop(\n anchor: { y: number; height: number },\n panelHeight: number = CALENDAR_PANEL_HEIGHT,\n): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const spaceBelow = windowHeight - (anchor.y + anchor.height + CALENDAR_DROPDOWN_GAP);\n const spaceAbove = anchor.y - CALENDAR_DROPDOWN_GAP;\n const topBelow = anchor.y + anchor.height + CALENDAR_DROPDOWN_GAP;\n const topAbove = anchor.y - CALENDAR_DROPDOWN_GAP - panelHeight;\n\n if (spaceBelow >= panelHeight) {\n return topBelow;\n }\n\n if (spaceAbove >= panelHeight) {\n return topAbove;\n }\n\n if (spaceAbove > spaceBelow) {\n return Math.max(0, topAbove);\n }\n\n return Math.max(0, Math.min(topBelow, windowHeight - panelHeight));\n}\n\nexport function resolveCalendarDropdownLeft(\n anchor: { x: number },\n panelWidth: number = CALENDAR_PANEL_WIDTH,\n): number {\n const windowWidth = Dimensions.get(\"window\").width;\n const maxLeft = Math.max(0, windowWidth - panelWidth);\n\n return Math.max(0, Math.min(anchor.x, maxLeft));\n}\n\nexport const calendarFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n width: CALENDAR_FIELD_WIDTH,\n minWidth: CALENDAR_FIELD_WIDTH,\n maxWidth: CALENDAR_FIELD_WIDTH,\n height: CALENDAR_FIELD_HEIGHT,\n minHeight: CALENDAR_FIELD_HEIGHT,\n maxHeight: CALENDAR_FIELD_HEIGHT,\n borderRadius: radii.lg,\n padding: CALENDAR_FIELD_PADDING,\n gap: CALENDAR_FIELD_GAP,\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n value: {\n flex: 1,\n minWidth: 0,\n ...calendarFieldTypography,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n ...(Platform.OS === \"android\" ? { includeFontPadding: false } : null),\n ...(Platform.OS === \"web\"\n ? ({\n outlineStyle: \"none\",\n } as TextStyle)\n : null),\n },\n});\n","export function stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport type DateRange = {\n start: Date;\n end?: Date;\n};\n\nexport function normalizeDateRange(range?: DateRange): { start?: Date; end?: Date } {\n if (!range?.start) {\n return {};\n }\n\n const start = stripTime(range.start);\n\n if (!range.end) {\n return { start };\n }\n\n const end = stripTime(range.end);\n\n if (isBeforeDay(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n}\n\nexport function isInDateRange(date: Date, start?: Date, end?: Date): boolean {\n if (!start) {\n return false;\n }\n\n const day = stripTime(date);\n\n if (!end) {\n return isSameDay(day, start);\n }\n\n return !isBeforeDay(day, start) && !isAfterDay(day, end);\n}\n\nexport function selectRangeDate(clicked: Date, current?: DateRange): DateRange | undefined {\n const clickedDate = stripTime(clicked);\n\n if (!current?.start) {\n return { start: clickedDate };\n }\n\n const start = stripTime(current.start);\n const end = current.end ? stripTime(current.end) : undefined;\n\n if (!end) {\n if (isSameDay(clickedDate, start)) {\n return undefined;\n }\n\n if (isBeforeDay(clickedDate, start)) {\n return { start: clickedDate };\n }\n\n return { start, end: clickedDate };\n }\n\n if (isSameDay(clickedDate, end)) {\n return undefined;\n }\n\n return { start: clickedDate };\n}\n\nexport function isSameDay(left: Date, right: Date): boolean {\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n );\n}\n\nexport function isBeforeDay(left: Date, right: Date): boolean {\n return stripTime(left).getTime() < stripTime(right).getTime();\n}\n\nexport function isAfterDay(left: Date, right: Date): boolean {\n return stripTime(left).getTime() > stripTime(right).getTime();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isDateDisabled(\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n): boolean {\n if (minDate && isBeforeDay(date, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(date, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport type CalendarDayCell = {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n isPast: boolean;\n isDisabled: boolean;\n};\n\nconst CALENDAR_VISIBLE_DAY_COUNT = 42;\nconst MONDAY_WEEK_START = 1;\n\nexport function buildCalendarDays({\n viewDate,\n selectedDate,\n selectedRange,\n today,\n minDate,\n maxDate,\n}: {\n viewDate: Date;\n selectedDate?: Date;\n selectedRange?: DateRange;\n today: Date;\n minDate?: Date;\n maxDate?: Date;\n}): CalendarDayCell[] {\n const { start: rangeStart, end: rangeEnd } = normalizeDateRange(selectedRange);\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n const startOffset = (firstOfMonth.getDay() - MONDAY_WEEK_START + 7) % 7;\n const gridStart = new Date(year, month, 1 - startOffset);\n const days: CalendarDayCell[] = [];\n\n for (let index = 0; index < CALENDAR_VISIBLE_DAY_COUNT; index += 1) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + index,\n );\n const inCurrentMonth = date.getMonth() === month;\n const isPast = inCurrentMonth && isBeforeDay(date, today);\n const isDisabled = isDateDisabled(date, minDate, maxDate);\n const isRangeStart = rangeStart ? isSameDay(date, rangeStart) : false;\n const isRangeEnd = rangeEnd ? isSameDay(date, rangeEnd) : false;\n const inSelectedRange =\n rangeStart && rangeEnd ? isInDateRange(date, rangeStart, rangeEnd) : false;\n const isInRange = inSelectedRange && !isRangeStart && !isRangeEnd;\n const isSelected = selectedDate\n ? isSameDay(date, selectedDate)\n : inSelectedRange || Boolean(rangeStart && !rangeEnd && isRangeStart);\n\n days.push({\n date,\n inCurrentMonth,\n isToday: isSameDay(date, today),\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange,\n isPast,\n isDisabled,\n });\n }\n\n return days;\n}\n\nexport function formatCalendarMonthYear(date: Date, locale: string): string {\n const formatted = new Intl.DateTimeFormat(locale, {\n month: \"short\",\n year: \"numeric\",\n }).format(date);\n\n return formatted.charAt(0).toUpperCase() + formatted.slice(1);\n}\n\nexport function formatCalendarYear(year: number, locale: string): string {\n return new Intl.DateTimeFormat(locale, { year: \"numeric\" }).format(new Date(year, 0, 1));\n}\n\nexport function getMonthLabels(locale: string): string[] {\n return Array.from({ length: 12 }, (_, month) => {\n const label = new Intl.DateTimeFormat(locale, { month: \"short\" }).format(\n new Date(2024, month, 1),\n );\n const normalized = label.replace(/\\./g, \"\");\n\n return normalized.charAt(0).toUpperCase() + normalized.slice(1);\n });\n}\n\nexport function getYearPageStart(year: number, yearsPerPage = 12): number {\n return Math.floor(year / yearsPerPage) * yearsPerPage;\n}\n\nexport function isMonthDisabled(\n year: number,\n month: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n\n if (minDate && isBeforeDay(lastDay, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(firstDay, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport function isYearDisabled(year: number, minDate?: Date, maxDate?: Date): boolean {\n const firstDay = new Date(year, 0, 1);\n const lastDay = new Date(year, 11, 31);\n\n if (minDate && isBeforeDay(lastDay, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(firstDay, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport function formatCalendarDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatCalendarDateRange(\n range: DateRange,\n locale: string,\n separator = \" – \",\n): string {\n const { start, end } = normalizeDateRange(range);\n\n if (!start) {\n return \"\";\n }\n\n if (!end) {\n return formatCalendarDate(start, locale);\n }\n\n return `${formatCalendarDate(start, locale)}${separator}${formatCalendarDate(end, locale)}`;\n}\n\n/** @deprecated Use `resolveWeekdayLabels` from `calendarLocalization`; calendars are Monday-first. */\nexport function getDefaultWeekdayLabels(locale: string): string[] {\n const labels: string[] = [];\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n\n for (let index = 0; index < 7; index += 1) {\n const day = new Date(2024, 0, index + 1);\n const label = formatter.format(day).replace(/\\./g, \"\").toUpperCase();\n labels.push(label.slice(0, 2));\n }\n\n return labels;\n}\n","export type CalendarLocale = \"hy-AM\" | \"en-US\" | \"ru-RU\";\n\nexport type CalendarTranslationKey =\n | \"datePlaceholder\"\n | \"rangePlaceholder\"\n | \"previousMonth\"\n | \"nextMonth\"\n | \"previousYear\"\n | \"nextYear\"\n | \"previousYears\"\n | \"nextYears\"\n | \"selectMonth\"\n | \"selectYear\"\n | \"closeCalendar\";\n\nexport type CalendarTranslations = Record<CalendarTranslationKey, string> & {\n /** Weekday labels in Monday-first order. */\n weekdays: string[];\n /** Short month labels used in compact calendar headers and month picker cells. */\n monthsShort: string[];\n /** Full month labels available for consumers that need long-form display. */\n monthsLong: string[];\n};\n\nexport const calendarTranslations: Record<CalendarLocale, CalendarTranslations> = {\n \"hy-AM\": {\n weekdays: [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"],\n monthsShort: [\n \"Հնվ\",\n \"Փտվ\",\n \"Մրտ\",\n \"Ապր\",\n \"Մյս\",\n \"Հուն\",\n \"Հուլ\",\n \"Օգս\",\n \"Սեպ\",\n \"Հոկ\",\n \"Նոյ\",\n \"Դեկ\",\n ],\n monthsLong: [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n ],\n datePlaceholder: \"Ընտրել ամսաթիվ\",\n rangePlaceholder: \"Ընտրել ժամանակահատված\",\n previousMonth: \"Նախորդ ամիս\",\n nextMonth: \"Հաջորդ ամիս\",\n previousYear: \"Նախորդ տարի\",\n nextYear: \"Հաջորդ տարի\",\n previousYears: \"Նախորդ տարիներ\",\n nextYears: \"Հաջորդ տարիներ\",\n selectMonth: \"Ընտրել ամիս\",\n selectYear: \"Ընտրել տարի\",\n closeCalendar: \"Փակել օրացույցը\",\n },\n \"en-US\": {\n weekdays: [\"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\", \"SU\"],\n monthsShort: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n monthsLong: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n datePlaceholder: \"Select date\",\n rangePlaceholder: \"Select date range\",\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n previousYear: \"Previous year\",\n nextYear: \"Next year\",\n previousYears: \"Previous years\",\n nextYears: \"Next years\",\n selectMonth: \"Select month\",\n selectYear: \"Select year\",\n closeCalendar: \"Close calendar\",\n },\n \"ru-RU\": {\n weekdays: [\"ПН\", \"ВТ\", \"СР\", \"ЧТ\", \"ПТ\", \"СБ\", \"ВС\"],\n monthsShort: [\n \"Янв\",\n \"Фев\",\n \"Мар\",\n \"Апр\",\n \"Май\",\n \"Июн\",\n \"Июл\",\n \"Авг\",\n \"Сен\",\n \"Окт\",\n \"Ноя\",\n \"Дек\",\n ],\n monthsLong: [\n \"Январь\",\n \"Февраль\",\n \"Март\",\n \"Апрель\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Август\",\n \"Сентябрь\",\n \"Октябрь\",\n \"Ноябрь\",\n \"Декабрь\",\n ],\n datePlaceholder: \"Выбрать дату\",\n rangePlaceholder: \"Выбрать период\",\n previousMonth: \"Предыдущий месяц\",\n nextMonth: \"Следующий месяц\",\n previousYear: \"Предыдущий год\",\n nextYear: \"Следующий год\",\n previousYears: \"Предыдущие годы\",\n nextYears: \"Следующие годы\",\n selectMonth: \"Выбрать месяц\",\n selectYear: \"Выбрать год\",\n closeCalendar: \"Закрыть календарь\",\n },\n};\n\nexport function resolveCalendarLocale(locale: string): CalendarLocale {\n const normalizedLocale = locale.toLowerCase();\n\n if (normalizedLocale.startsWith(\"hy\")) {\n return \"hy-AM\";\n }\n\n if (normalizedLocale.startsWith(\"ru\")) {\n return \"ru-RU\";\n }\n\n return \"en-US\";\n}\n\nexport function getCalendarTranslations(locale: string): CalendarTranslations {\n return calendarTranslations[resolveCalendarLocale(locale)];\n}\n\nexport function resolveWeekdayLabels(locale: string): string[] {\n return getCalendarTranslations(locale).weekdays;\n}\n\nexport function getCalendarMonthLabels(\n locale: string,\n width: \"short\" | \"long\" = \"short\",\n): string[] {\n const translations = getCalendarTranslations(locale);\n\n return width === \"short\" ? translations.monthsShort : translations.monthsLong;\n}\n\nexport function formatLocalizedCalendarMonthYear(date: Date, locale: string): string {\n return `${getCalendarMonthLabels(locale)[date.getMonth()]} ${date.getFullYear()}`;\n}\n","import { createContext, useContext, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport { resolveCalendarLocale, type CalendarLocale } from \"./calendarLocalization\";\n\nconst LOCALE_STORAGE_KEY = \"homepad.locale\";\nconst LOCALE_CHANGE_EVENT = \"homepad:locale-change\";\nconst DEFAULT_CALENDAR_LOCALE: CalendarLocale = \"hy-AM\";\n\nconst CalendarLocaleContext = createContext<string | undefined>(undefined);\n\nexport type CalendarLocaleProviderProps = {\n locale: string;\n children: ReactNode;\n};\n\nexport function CalendarLocaleProvider({ locale, children }: CalendarLocaleProviderProps) {\n return (\n <CalendarLocaleContext.Provider value={locale}>{children}</CalendarLocaleContext.Provider>\n );\n}\n\nfunction normalizeProjectLocale(locale: string | null | undefined): CalendarLocale | null {\n if (!locale) {\n return null;\n }\n\n return resolveCalendarLocale(locale);\n}\n\nfunction readBrowserLocale(): CalendarLocale | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n let storedLocale: CalendarLocale | null = null;\n\n try {\n storedLocale = normalizeProjectLocale(window.localStorage.getItem(LOCALE_STORAGE_KEY));\n } catch {\n storedLocale = null;\n }\n\n if (storedLocale) {\n return storedLocale;\n }\n\n const documentLocale = normalizeProjectLocale(window.document?.documentElement.lang);\n if (documentLocale) {\n return documentLocale;\n }\n\n return normalizeProjectLocale(window.navigator.language);\n}\n\nexport function useCalendarLocale(locale?: string): CalendarLocale {\n const contextLocale = useContext(CalendarLocaleContext);\n const controlledLocale = locale ?? contextLocale;\n const [browserLocale, setBrowserLocale] = useState<CalendarLocale>(() =>\n readBrowserLocale() ?? DEFAULT_CALENDAR_LOCALE,\n );\n\n useEffect(() => {\n if (controlledLocale !== undefined || typeof window === \"undefined\") {\n return;\n }\n\n const syncLocale = () => {\n setBrowserLocale(readBrowserLocale() ?? DEFAULT_CALENDAR_LOCALE);\n };\n\n const handleLocaleChange = (event: Event) => {\n const customEvent = event as CustomEvent<string>;\n const nextLocale = normalizeProjectLocale(customEvent.detail);\n\n if (nextLocale) {\n setBrowserLocale(nextLocale);\n return;\n }\n\n syncLocale();\n };\n\n window.addEventListener(LOCALE_CHANGE_EVENT, handleLocaleChange);\n window.addEventListener(\"storage\", syncLocale);\n\n return () => {\n window.removeEventListener(LOCALE_CHANGE_EVENT, handleLocaleChange);\n window.removeEventListener(\"storage\", syncLocale);\n };\n }, [controlledLocale]);\n\n return useMemo(\n () => normalizeProjectLocale(controlledLocale) ?? browserLocale,\n [browserLocale, controlledLocale],\n );\n}\n","import { useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type TextStyle, type ViewStyle } from \"react-native\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icons/ChevronNavIcons\";\nimport {\n CALENDAR_NAV_ICON_COLOR,\n CALENDAR_NAV_ICON_SIZE,\n CALENDAR_YEARS_PER_PAGE,\n calendarDropdownMetrics,\n} from \"../theme/calendar\";\nimport {\n addMonths,\n buildCalendarDays,\n formatCalendarYear,\n getYearPageStart,\n isMonthDisabled,\n isSameDay,\n isYearDisabled,\n selectRangeDate,\n type CalendarDayCell,\n type DateRange,\n} from \"../utils/calendarDays\";\nimport {\n formatLocalizedCalendarMonthYear,\n getCalendarMonthLabels,\n getCalendarTranslations,\n resolveWeekdayLabels,\n type CalendarTranslations,\n} from \"../utils/calendarLocalization\";\nimport { useCalendarLocale } from \"../utils/calendarLocaleContext\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport type { DateRange };\n\nexport type CalendarLabels = Partial<Pick<CalendarTranslations, CalendarTranslationKey>> & {\n weekdays?: string[];\n formatMonthYear?: (date: Date) => string;\n};\n\ntype CalendarTranslationKey =\n | \"previousMonth\"\n | \"nextMonth\"\n | \"previousYear\"\n | \"nextYear\"\n | \"previousYears\"\n | \"nextYears\"\n | \"selectMonth\"\n | \"selectYear\"\n | \"closeCalendar\";\n\ntype CalendarPickerView = \"days\" | \"months\" | \"years\";\n\ntype CalendarBaseProps = {\n viewDate?: Date;\n defaultViewDate?: Date;\n onViewDateChange?: (date: Date) => void;\n locale?: string;\n labels?: CalendarLabels;\n minDate?: Date;\n maxDate?: Date;\n today?: Date;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type CalendarSingleProps = CalendarBaseProps & {\n mode?: \"single\";\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n};\n\nexport type CalendarRangeProps = CalendarBaseProps & {\n mode: \"range\";\n value?: DateRange;\n onChange?: (range: DateRange | undefined) => void;\n};\n\nexport type CalendarProps = CalendarSingleProps | CalendarRangeProps;\n\nfunction resolveDayCellStyle(day: CalendarDayCell): StyleProp<ViewStyle> {\n if (day.isDisabled) {\n return [calendarDropdownMetrics.dayCell];\n }\n\n if (day.isSelected) {\n return [calendarDropdownMetrics.dayCell, calendarDropdownMetrics.dayCellSelected];\n }\n\n return [\n calendarDropdownMetrics.dayCell,\n day.inCurrentMonth && day.isPast && !day.isToday\n ? calendarDropdownMetrics.dayCellPast\n : null,\n ];\n}\n\nfunction resolveDayLabelStyle(day: CalendarDayCell): StyleProp<TextStyle> {\n if (day.isDisabled) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelDisabled];\n }\n\n if (day.isSelected) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelSelected];\n }\n\n if (!day.inCurrentMonth) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelOutsideMonth];\n }\n\n if (day.isToday) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelToday];\n }\n\n if (day.isPast) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelMuted];\n }\n\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelFuture];\n}\n\nexport function Calendar(props: CalendarProps) {\n const rangeProps = props.mode === \"range\" ? (props as CalendarRangeProps) : null;\n const singleProps = props.mode === \"range\" ? null : (props as CalendarSingleProps);\n const {\n viewDate,\n defaultViewDate,\n onViewDateChange,\n locale,\n labels,\n minDate,\n maxDate,\n today = new Date(),\n style,\n className,\n } = props;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const [internalViewDate, setInternalViewDate] = useState(() => {\n if (defaultViewDate) {\n return defaultViewDate;\n }\n\n if (rangeProps) {\n return rangeProps.value?.start ?? today;\n }\n\n return singleProps?.value ?? today;\n });\n const activeViewDate = viewDate ?? internalViewDate;\n const [pickerView, setPickerView] = useState<CalendarPickerView>(\"days\");\n const [pickerYear, setPickerYear] = useState(() => activeViewDate.getFullYear());\n const [yearPageStart, setYearPageStart] = useState(() =>\n getYearPageStart(activeViewDate.getFullYear(), CALENDAR_YEARS_PER_PAGE),\n );\n const customWeekdayLabels = labels?.weekdays;\n const formatMonthYearLabel = labels?.formatMonthYear;\n const resolvedLocale = useCalendarLocale(locale);\n const translations = useMemo(\n () => getCalendarTranslations(resolvedLocale),\n [resolvedLocale],\n );\n\n useApplyWebClassName(rootRef, className);\n\n const weekdayLabels = useMemo(\n () => customWeekdayLabels ?? resolveWeekdayLabels(resolvedLocale),\n [customWeekdayLabels, resolvedLocale],\n );\n\n const monthLabels = useMemo(() => getCalendarMonthLabels(resolvedLocale), [resolvedLocale]);\n\n const monthYearLabel = useMemo(() => {\n if (formatMonthYearLabel) {\n return formatMonthYearLabel(activeViewDate);\n }\n\n return formatLocalizedCalendarMonthYear(activeViewDate, resolvedLocale);\n }, [activeViewDate, formatMonthYearLabel, resolvedLocale]);\n\n const headerLabel = useMemo(() => {\n if (pickerView === \"months\") {\n return formatCalendarYear(pickerYear, resolvedLocale);\n }\n\n if (pickerView === \"years\") {\n const endYear = yearPageStart + CALENDAR_YEARS_PER_PAGE - 1;\n return `${yearPageStart} – ${endYear}`;\n }\n\n return monthYearLabel;\n }, [monthYearLabel, pickerView, pickerYear, resolvedLocale, yearPageStart]);\n\n const days = useMemo(\n () =>\n buildCalendarDays({\n viewDate: activeViewDate,\n selectedDate: singleProps?.value,\n selectedRange: rangeProps?.value,\n today,\n minDate,\n maxDate,\n }),\n [activeViewDate, maxDate, minDate, rangeProps?.value, singleProps?.value, today],\n );\n\n const yearOptions = useMemo(\n () =>\n Array.from({ length: CALENDAR_YEARS_PER_PAGE }, (_, index) => yearPageStart + index),\n [yearPageStart],\n );\n\n function getLabel(key: CalendarTranslationKey): string {\n return labels?.[key] ?? translations[key];\n }\n\n function setViewDate(nextDate: Date) {\n if (viewDate === undefined) {\n setInternalViewDate(nextDate);\n }\n\n onViewDateChange?.(nextDate);\n }\n\n function handlePrevious() {\n if (pickerView === \"months\") {\n setPickerYear((year) => year - 1);\n return;\n }\n\n if (pickerView === \"years\") {\n setYearPageStart((start) => start - CALENDAR_YEARS_PER_PAGE);\n return;\n }\n\n setViewDate(addMonths(activeViewDate, -1));\n }\n\n function handleNext() {\n if (pickerView === \"months\") {\n setPickerYear((year) => year + 1);\n return;\n }\n\n if (pickerView === \"years\") {\n setYearPageStart((start) => start + CALENDAR_YEARS_PER_PAGE);\n return;\n }\n\n setViewDate(addMonths(activeViewDate, 1));\n }\n\n function handleHeaderPress() {\n if (pickerView === \"days\") {\n setPickerYear(activeViewDate.getFullYear());\n setPickerView(\"months\");\n return;\n }\n\n if (pickerView === \"months\") {\n setYearPageStart(getYearPageStart(pickerYear, CALENDAR_YEARS_PER_PAGE));\n setPickerView(\"years\");\n }\n }\n\n function handleMonthSelect(month: number) {\n setViewDate(new Date(pickerYear, month, 1));\n setPickerView(\"days\");\n }\n\n function handleYearSelect(year: number) {\n setPickerYear(year);\n setPickerView(\"months\");\n }\n\n function handleDayPress(date: Date) {\n if (rangeProps) {\n rangeProps.onChange?.(selectRangeDate(date, rangeProps.value));\n return;\n }\n\n const currentValue = singleProps?.value;\n\n if (currentValue && isSameDay(date, currentValue)) {\n singleProps?.onChange?.(undefined);\n return;\n }\n\n singleProps?.onChange?.(date);\n }\n\n const headerIsPressable = pickerView === \"days\" || pickerView === \"months\";\n\n return (\n <View ref={rootRef} style={[calendarDropdownMetrics.panel, style]}>\n <View style={calendarDropdownMetrics.header}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"months\"\n ? getLabel(\"previousYear\")\n : pickerView === \"years\"\n ? getLabel(\"previousYears\")\n : getLabel(\"previousMonth\")\n }\n onPress={handlePrevious}\n style={calendarDropdownMetrics.navButton}\n >\n <ChevronLeftIcon size={CALENDAR_NAV_ICON_SIZE} color={CALENDAR_NAV_ICON_COLOR} />\n </Pressable>\n\n {headerIsPressable ? (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"days\" ? getLabel(\"selectMonth\") : getLabel(\"selectYear\")\n }\n onPress={handleHeaderPress}\n style={calendarDropdownMetrics.headerTitlePressable}\n >\n <Text style={calendarDropdownMetrics.headerTitle}>{headerLabel}</Text>\n </Pressable>\n ) : (\n <View style={calendarDropdownMetrics.headerTitlePressable}>\n <Text style={calendarDropdownMetrics.headerTitle}>{headerLabel}</Text>\n </View>\n )}\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"months\"\n ? getLabel(\"nextYear\")\n : pickerView === \"years\"\n ? getLabel(\"nextYears\")\n : getLabel(\"nextMonth\")\n }\n onPress={handleNext}\n style={calendarDropdownMetrics.navButton}\n >\n <ChevronRightIcon size={CALENDAR_NAV_ICON_SIZE} color={CALENDAR_NAV_ICON_COLOR} />\n </Pressable>\n </View>\n\n {pickerView === \"days\" ? (\n <>\n <View style={calendarDropdownMetrics.weekdayRow}>\n {weekdayLabels.map((weekday) => (\n <View key={weekday} style={calendarDropdownMetrics.weekdayCell}>\n <Text style={calendarDropdownMetrics.weekdayLabel}>{weekday}</Text>\n </View>\n ))}\n </View>\n\n <View style={calendarDropdownMetrics.dayGrid}>\n {days.map((day) => (\n <Pressable\n key={day.date.toISOString()}\n accessibilityRole=\"button\"\n accessibilityState={{\n selected: day.isSelected,\n disabled: day.isDisabled,\n }}\n disabled={day.isDisabled}\n onPress={() => handleDayPress(day.date)}\n style={resolveDayCellStyle(day)}\n >\n <Text style={resolveDayLabelStyle(day)}>{day.date.getDate()}</Text>\n {day.isToday && day.inCurrentMonth && !day.isSelected ? (\n <View style={calendarDropdownMetrics.todayDot} />\n ) : null}\n </Pressable>\n ))}\n </View>\n </>\n ) : (\n <View style={calendarDropdownMetrics.pickerBody}>\n <View style={calendarDropdownMetrics.pickerGrid}>\n {pickerView === \"months\"\n ? monthLabels.map((monthLabel, month) => {\n const isSelected =\n activeViewDate.getFullYear() === pickerYear &&\n activeViewDate.getMonth() === month;\n const isCurrent =\n today.getFullYear() === pickerYear && today.getMonth() === month;\n const disabled = isMonthDisabled(pickerYear, month, minDate, maxDate);\n\n return (\n <Pressable\n key={monthLabel}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSelected, disabled }}\n disabled={disabled}\n onPress={() => handleMonthSelect(month)}\n style={[\n calendarDropdownMetrics.pickerCell,\n isSelected ? calendarDropdownMetrics.pickerCellSelected : null,\n ]}\n >\n <Text\n style={[\n calendarDropdownMetrics.pickerLabel,\n isSelected ? calendarDropdownMetrics.pickerLabelSelected : null,\n !isSelected && isCurrent\n ? calendarDropdownMetrics.pickerLabelCurrent\n : null,\n disabled ? calendarDropdownMetrics.pickerLabelDisabled : null,\n ]}\n >\n {monthLabel}\n </Text>\n </Pressable>\n );\n })\n : yearOptions.map((year) => {\n const isSelected = activeViewDate.getFullYear() === year;\n const isCurrent = today.getFullYear() === year;\n const disabled = isYearDisabled(year, minDate, maxDate);\n\n return (\n <Pressable\n key={year}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSelected, disabled }}\n disabled={disabled}\n onPress={() => handleYearSelect(year)}\n style={[\n calendarDropdownMetrics.pickerCell,\n isSelected ? calendarDropdownMetrics.pickerCellSelected : null,\n ]}\n >\n <Text\n style={[\n calendarDropdownMetrics.pickerLabel,\n isSelected ? calendarDropdownMetrics.pickerLabelSelected : null,\n !isSelected && isCurrent\n ? calendarDropdownMetrics.pickerLabelCurrent\n : null,\n disabled ? calendarDropdownMetrics.pickerLabelDisabled : null,\n ]}\n >\n {year}\n </Text>\n </Pressable>\n );\n })}\n </View>\n </View>\n )}\n </View>\n );\n}\n","export const CALENDAR_ICON_BODY_PATH =\n \"M6.66667 1.6665V4.99984M13.3333 1.6665V4.99984M2.5 8.33317H17.5M4.16667 3.33317H15.8333C16.7538 3.33317 17.5 4.07936 17.5 4.99984V16.6665C17.5 17.587 16.7538 18.3332 15.8333 18.3332H4.16667C3.24619 18.3332 2.5 17.587 2.5 16.6665V4.99984C2.5 4.07936 3.24619 3.33317 4.16667 3.33317Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_ICON_BODY_PATH } from \"./calendarIconPaths\";\n\nexport { CALENDAR_ICON_BODY_PATH } from \"./calendarIconPaths\";\n\ninterface CalendarIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\nexport function CalendarIcon({\n size = 20,\n color = \"#C7CDD1\",\n strokeWidth = 2,\n}: CalendarIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CALENDAR_ICON_BODY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { useEffect, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Modal,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarIcon } from \"../icons/CalendarIcon\";\nimport {\n CALENDAR_FIELD_ICON_SIZE,\n CALENDAR_FIELD_WIDTH,\n CALENDAR_PANEL_HEIGHT,\n CALENDAR_PANEL_WIDTH,\n calendarFieldMetrics,\n calendarFieldPlaceholderTypography,\n calendarFieldTypography,\n calendarLabelTypography,\n resolveCalendarDropdownLeft,\n resolveCalendarDropdownTop,\n} from \"../theme/calendar\";\nimport { getSelectFieldStyles, resolveInputVisualState, SELECT_LABEL_GAP } from \"../theme/select\";\nimport { colors } from \"../theme/tokens\";\nimport {\n formatCalendarDate,\n formatCalendarDateRange,\n type DateRange,\n} from \"../utils/calendarDays\";\nimport { getCalendarTranslations } from \"../utils/calendarLocalization\";\nimport { useCalendarLocale } from \"../utils/calendarLocaleContext\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport {\n Calendar,\n type CalendarLabels,\n type CalendarRangeProps,\n type CalendarSingleProps,\n} from \"./Calendar\";\nimport { Label } from \"./Label\";\n\nexport type { CalendarLabels, DateRange };\n\ntype DatePickerFieldProps = {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n invalid?: boolean;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n className?: string;\n fieldClassName?: string;\n fieldStyle?: StyleProp<ViewStyle>;\n fieldOutlineStyle?: StyleProp<ViewStyle>;\n panelClassName?: string;\n labelClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** Opens the calendar popup on mount (useful for Storybook previews). */\n defaultOpen?: boolean;\n /** Closes the popup after a complete range is selected. Defaults to true in range mode. */\n closeOnRangeComplete?: boolean;\n};\n\nexport type DatePickerSingleProps = Omit<CalendarSingleProps, \"style\" | \"className\"> &\n DatePickerFieldProps & {\n mode?: \"single\";\n formatDate?: (date: Date) => string;\n };\n\nexport type DatePickerRangeProps = Omit<CalendarRangeProps, \"style\" | \"className\"> &\n DatePickerFieldProps & {\n mode: \"range\";\n formatRange?: (range: DateRange) => string;\n rangeSeparator?: string;\n };\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nexport function DatePicker(props: DatePickerProps) {\n const {\n label,\n placeholder,\n locale,\n labels,\n minDate,\n maxDate,\n today,\n viewDate,\n defaultViewDate,\n onViewDateChange,\n disabled = false,\n error,\n invalid,\n hint,\n containerStyle,\n className,\n fieldClassName,\n fieldStyle,\n fieldOutlineStyle,\n panelClassName,\n labelClassName,\n errorClassName,\n hintClassName,\n defaultOpen = false,\n } = props;\n const mode = props.mode ?? \"single\";\n const closeOnRangeComplete =\n props.mode === \"range\" ? (props.closeOnRangeComplete ?? true) : false;\n const resolvedLocale = useCalendarLocale(locale);\n const translations = getCalendarTranslations(resolvedLocale);\n const resolvedPlaceholder =\n placeholder ?? (mode === \"range\" ? translations.rangePlaceholder : translations.datePlaceholder);\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [open, setOpen] = useState(defaultOpen);\n const [anchor, setAnchor] = useState<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(triggerRef, fieldClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n useEffect(() => {\n if (!defaultOpen || disabled) {\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n });\n\n return () => cancelAnimationFrame(frame);\n }, [defaultOpen, disabled]);\n\n const hasError = Boolean(error) || Boolean(invalid);\n const fieldStyles = getSelectFieldStyles(\n resolveInputVisualState({\n error: hasError,\n disabled,\n }),\n );\n\n const hasValue =\n mode === \"single\"\n ? Boolean(props.value)\n : Boolean(props.mode === \"range\" && props.value?.start);\n const displayValue = (() => {\n if (props.mode === \"range\") {\n if (!props.value?.start) {\n return resolvedPlaceholder;\n }\n\n return (\n props.formatRange?.(props.value) ??\n formatCalendarDateRange(props.value, resolvedLocale, props.rangeSeparator)\n );\n }\n\n if (props.value) {\n return props.formatDate?.(props.value) ?? formatCalendarDate(props.value, resolvedLocale);\n }\n\n return resolvedPlaceholder;\n })();\n const isPlaceholder = !hasValue;\n const valueTextStyle = isPlaceholder\n ? {\n ...calendarFieldPlaceholderTypography,\n color: disabled ? colors.stormGray300 : calendarFieldPlaceholderTypography.color,\n }\n : {\n ...calendarFieldTypography,\n color: fieldStyles.value.color,\n };\n const helperMessage = error ?? hint;\n const panelWidth = CALENDAR_PANEL_WIDTH;\n const panelLeft = anchor ? resolveCalendarDropdownLeft(anchor, panelWidth) : 0;\n const dropdownTop = anchor ? resolveCalendarDropdownTop(anchor) : 0;\n const resolvedDefaultViewDate =\n defaultViewDate ??\n (props.mode === \"range\" ? props.value?.start : props.value) ??\n today;\n\n function closePicker() {\n setOpen(false);\n setAnchor(null);\n }\n\n function openPicker() {\n if (disabled) {\n return;\n }\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSingleSelect(date: Date | undefined) {\n if (props.mode === \"range\") {\n return;\n }\n\n props.onChange?.(date);\n closePicker();\n }\n\n function handleRangeSelect(range: DateRange | undefined) {\n if (props.mode !== \"range\") {\n return;\n }\n\n props.onChange?.(range);\n\n if (closeOnRangeComplete && range?.end) {\n closePicker();\n }\n }\n\n const isFluidField = Boolean(fieldStyle) || Boolean(fieldOutlineStyle);\n\n return (\n <View\n ref={wrapperRef}\n style={[styles.wrapper, isFluidField && styles.wrapperFluid, containerStyle]}\n >\n {label ? (\n <Label disabled={disabled} style={styles.label} className={labelClassName}>\n {label}\n </Label>\n ) : null}\n\n <View\n style={[\n fieldStyles.outline,\n styles.fieldOutline,\n isFluidField && styles.fieldOutlineFluid,\n fieldOutlineStyle,\n ]}\n >\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled, expanded: open }}\n disabled={disabled}\n onPress={openPicker}\n style={[\n calendarFieldMetrics.container,\n isFluidField && styles.fieldContainerFluid,\n fieldStyles.container,\n fieldStyle,\n ]}\n >\n <Text\n style={[calendarFieldMetrics.value, valueTextStyle]}\n numberOfLines={1}\n >\n {displayValue}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarIcon\n size={CALENDAR_FIELD_ICON_SIZE}\n color={disabled ? colors.stormGray200 : colors.stormGray150}\n />\n </View>\n </Pressable>\n </View>\n\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n\n <Modal visible={open} transparent animationType=\"fade\" onRequestClose={closePicker}>\n <View style={styles.modalRoot}>\n <Pressable\n style={styles.backdrop}\n onPress={closePicker}\n accessibilityRole=\"button\"\n accessibilityLabel={labels?.closeCalendar ?? translations.closeCalendar}\n />\n {anchor ? (\n <View\n style={[\n styles.panelPosition,\n {\n top: dropdownTop,\n left: panelLeft,\n width: panelWidth,\n height: CALENDAR_PANEL_HEIGHT,\n },\n ]}\n >\n {props.mode === \"range\" ? (\n <Calendar\n mode=\"range\"\n value={props.value}\n onChange={handleRangeSelect}\n viewDate={viewDate}\n defaultViewDate={resolvedDefaultViewDate}\n onViewDateChange={onViewDateChange}\n locale={resolvedLocale}\n labels={labels}\n minDate={minDate}\n maxDate={maxDate}\n today={today}\n className={panelClassName}\n />\n ) : (\n <Calendar\n mode=\"single\"\n value={props.value}\n onChange={handleSingleSelect}\n viewDate={viewDate}\n defaultViewDate={resolvedDefaultViewDate}\n onViewDateChange={onViewDateChange}\n locale={resolvedLocale}\n labels={labels}\n minDate={minDate}\n maxDate={maxDate}\n today={today}\n className={panelClassName}\n />\n )}\n </View>\n ) : null}\n </View>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: CALENDAR_FIELD_WIDTH,\n maxWidth: \"100%\",\n gap: SELECT_LABEL_GAP,\n },\n wrapperFluid: {\n width: \"100%\",\n },\n fieldOutline: {\n width: CALENDAR_FIELD_WIDTH,\n maxWidth: \"100%\",\n alignSelf: \"flex-start\",\n },\n fieldOutlineFluid: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n fieldContainerFluid: {\n width: \"100%\",\n minWidth: 0,\n maxWidth: \"100%\",\n alignSelf: \"stretch\",\n },\n label: {\n ...calendarLabelTypography,\n },\n iconSlot: {\n width: CALENDAR_FIELD_ICON_SIZE,\n height: CALENDAR_FIELD_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n modalRoot: {\n flex: 1,\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: colors.transparent,\n },\n panelPosition: {\n position: \"absolute\",\n zIndex: 1,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const LOCK_ICON_PATH =\n \"M5.83333 8.33317V5.83317C5.83333 4.7281 6.27232 3.66829 7.05372 2.88689C7.83512 2.10549 8.89493 1.6665 10 1.6665C11.1051 1.6665 12.1649 2.10549 12.9463 2.88689C13.7277 3.66829 14.1667 4.7281 14.1667 5.83317V8.33317M10.8333 13.3332C10.8333 13.7934 10.4602 14.1665 10 14.1665C9.53976 14.1665 9.16667 13.7934 9.16667 13.3332C9.16667 12.8729 9.53976 12.4998 10 12.4998C10.4602 12.4998 10.8333 12.8729 10.8333 13.3332ZM4.16667 8.33317H15.8333C16.7538 8.33317 17.5 9.07936 17.5 9.99984V16.6665C17.5 17.587 16.7538 18.3332 15.8333 18.3332H4.16667C3.24619 18.3332 2.5 17.587 2.5 16.6665V9.99984C2.5 9.07936 3.24619 8.33317 4.16667 8.33317Z\";\n","import Svg, { Path } from \"react-native-svg\";\n\nimport { LOCK_ICON_PATH } from \"./lockIconPaths\";\n\nexport { LOCK_ICON_PATH } from \"./lockIconPaths\";\n\ninterface LockIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function LockIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: LockIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LOCK_ICON_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/icons/arrowUpRightPath.ts","../src/icons/ArrowUpRightIcon.tsx","../src/theme/tokens.ts","../src/utils/useApplyWebClassName.ts","../src/components/Button.tsx","../src/icons/eyeIconPaths.ts","../src/icons/EyeIcon.tsx","../src/icons/EyeOffIcon.tsx","../src/theme/input.ts","../src/components/Label.tsx","../src/components/Input.tsx","../src/icons/chevronDownPath.ts","../src/icons/ChevronDownIcon.tsx","../src/theme/select.ts","../src/utils/countryDropdownScrollStyles.ts","../src/utils/formatMultiSelectDisplay.ts","../src/components/Select.tsx","../src/data/countries.ts","../src/utils/countryFlag.ts","../src/components/CountryCodeSelector.tsx","../src/components/PhoneInput.tsx","../src/icons/chevronNavPaths.ts","../src/icons/ChevronNavIcons.tsx","../src/theme/calendar.ts","../src/utils/calendarDays.ts","../src/utils/calendarLocalization.ts","../src/utils/calendarLocaleContext.tsx","../src/components/Calendar.tsx","../src/icons/calendarIconPaths.ts","../src/icons/CalendarIcon.tsx","../src/components/DatePicker.tsx","../src/icons/lockIconPaths.ts","../src/icons/LockIcon.tsx"],"names":["jsx","Svg","Path","useLayoutEffect","Platform","useRef","jsxs","TouchableOpacity","Text","View","StyleSheet","styles","isValidElement","cloneElement","useState","Pressable","TextInput","INPUT_OUTLINE_WIDTH","createOutlineStyle","defaultOutline","Dimensions","useEffect","Animated","useMemo","Easing","Modal","ScrollView","createContext","useContext","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["export const ARROW_UP_RIGHT_PATH =\n \"M14.1667 14.1668V5.8335H5.83333M14.1667 5.8335L5.83333 14.1668\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\nexport { ARROW_UP_RIGHT_PATH } from \"./arrowUpRightPath\";\n\ninterface ArrowUpRightIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function ArrowUpRightIcon({\n size = 20,\n color = \"#082640\",\n strokeWidth = 2,\n}: ArrowUpRightIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={ARROW_UP_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","/**\n * HomePad design tokens — aligned with the Figma design system\n * (navy / storm gray / slate-blue palette from HomePad brand).\n */\n\n/** Storm Gray scale — Figma steps 0 → 8.5 */\nexport const stormGray = {\n \"0\": \"#fbfcfc\",\n \"0.5\": \"#eceef0\",\n \"1\": \"#dadde0\",\n \"1.5\": \"#c7cdd1\",\n \"2\": \"#b5bcc1\",\n \"3\": \"#8f9aa3\",\n \"4\": \"#6a7984\",\n \"5\": \"#455765\",\n \"6\": \"#374651\",\n \"7\": \"#29343d\",\n \"8\": \"#1c2328\",\n \"8.5\": \"#151a1e\",\n} as const;\n\nexport type StormGrayStep = keyof typeof stormGray;\n\n/** Navy scale — Figma steps 0 → 8.5 */\nexport const navy = {\n \"0\": \"#f6fafe\",\n \"0.5\": \"#dee5eb\",\n \"1\": \"#c6d0d8\",\n \"1.5\": \"#afbac5\",\n \"2\": \"#97a5b2\",\n \"3\": \"#677b8c\",\n \"4\": \"#385066\",\n \"5\": \"#082640\",\n \"6\": \"#061e33\",\n \"7\": \"#051726\",\n \"8\": \"#030f1a\",\n \"8.5\": \"#020b13\",\n} as const;\n\nexport type NavyStep = keyof typeof navy;\n\n/** Ruby Red scale — Figma steps 0 → 8.5 */\nexport const rubyRed = {\n \"0\": \"#fff5f6\",\n \"0.5\": \"#f7dddf\",\n \"1\": \"#efc4c8\",\n \"1.5\": \"#e7acb1\",\n \"2\": \"#df939a\",\n \"3\": \"#ce626d\",\n \"4\": \"#be313f\",\n \"5\": \"#ae0011\",\n \"6\": \"#8b000e\",\n \"7\": \"#68000a\",\n \"8\": \"#460007\",\n \"8.5\": \"#340005\",\n} as const;\n\nexport type RubyRedStep = keyof typeof rubyRed;\n\n/** Emerald Green scale — Figma steps 0 → 8.5 */\nexport const emeraldGreen = {\n \"0\": \"#f0fbf5\",\n \"0.5\": \"#dcf2e5\",\n \"1\": \"#c8e8d5\",\n \"1.5\": \"#b4dfc5\",\n \"2\": \"#a0d5b5\",\n \"3\": \"#77c394\",\n \"4\": \"#4fb074\",\n \"5\": \"#279d54\",\n \"6\": \"#1f7e43\",\n \"7\": \"#175e32\",\n \"8\": \"#103f22\",\n \"8.5\": \"#0c2f19\",\n} as const;\n\nexport type EmeraldGreenStep = keyof typeof emeraldGreen;\n\n/** Figma brand palette — primary swatch per color family */\nexport const brand = {\n slateBlue: \"#182e3c\",\n stormGray: stormGray[\"5\"],\n navy: navy[\"5\"],\n rubyRed: rubyRed[\"5\"],\n emeraldGreen: emeraldGreen[\"5\"],\n} as const;\n\nexport const colors = {\n // Brand colors\n slateBlue: brand.slateBlue,\n\n // Emerald Green — Figma scale + brand swatch\n emeraldGreen0: emeraldGreen[\"0\"],\n emeraldGreen50: emeraldGreen[\"0.5\"],\n emeraldGreen100: emeraldGreen[\"1\"],\n emeraldGreen150: emeraldGreen[\"1.5\"],\n emeraldGreen200: emeraldGreen[\"2\"],\n emeraldGreen300: emeraldGreen[\"3\"],\n emeraldGreen400: emeraldGreen[\"4\"],\n emeraldGreen500: emeraldGreen[\"5\"],\n emeraldGreen600: emeraldGreen[\"6\"],\n emeraldGreen700: emeraldGreen[\"7\"],\n emeraldGreen800: emeraldGreen[\"8\"],\n emeraldGreen850: emeraldGreen[\"8.5\"],\n\n /** Primary brand emerald green — Figma Emerald Green 5 */\n emeraldGreen: brand.emeraldGreen,\n\n // Ruby Red — Figma scale + brand swatch\n rubyRed0: rubyRed[\"0\"],\n rubyRed50: rubyRed[\"0.5\"],\n rubyRed100: rubyRed[\"1\"],\n rubyRed150: rubyRed[\"1.5\"],\n rubyRed200: rubyRed[\"2\"],\n rubyRed300: rubyRed[\"3\"],\n rubyRed400: rubyRed[\"4\"],\n rubyRed500: rubyRed[\"5\"],\n rubyRed600: rubyRed[\"6\"],\n rubyRed700: rubyRed[\"7\"],\n rubyRed800: rubyRed[\"8\"],\n rubyRed850: rubyRed[\"8.5\"],\n\n /** Primary brand ruby red — Figma Ruby Red 5 */\n rubyRed: brand.rubyRed,\n\n // Navy — Figma scale + brand swatch\n navy0: navy[\"0\"],\n navy50: navy[\"0.5\"],\n navy100: navy[\"1\"],\n navy150: navy[\"1.5\"],\n navy200: navy[\"2\"],\n navy300: navy[\"3\"],\n navy400: navy[\"4\"],\n navy500: navy[\"5\"],\n navy600: navy[\"6\"],\n navy700: navy[\"7\"],\n navy800: navy[\"8\"],\n navy850: navy[\"8.5\"],\n\n /** Primary brand navy — Figma Navy 5 */\n navy: brand.navy,\n\n // Storm Gray — Figma scale + brand swatch\n stormGray0: stormGray[\"0\"],\n stormGray50: stormGray[\"0.5\"],\n stormGray100: stormGray[\"1\"],\n stormGray150: stormGray[\"1.5\"],\n stormGray200: stormGray[\"2\"],\n stormGray300: stormGray[\"3\"],\n stormGray400: stormGray[\"4\"],\n stormGray500: stormGray[\"5\"],\n /** Figma brand swatch \"Storm Gray\" — same as `stormGray500` */\n stormGrayBrand: brand.stormGray,\n stormGray600: stormGray[\"6\"],\n stormGray700: stormGray[\"7\"],\n stormGray800: stormGray[\"8\"],\n stormGray850: stormGray[\"8.5\"],\n\n /** @deprecated Use `stormGray0` */\n storm0: stormGray[\"0\"],\n /** @deprecated Use `stormGray50` */\n storm50: stormGray[\"0.5\"],\n /** @deprecated Use `stormGray200` */\n storm200: stormGray[\"2\"],\n /** @deprecated Use `stormGray300` */\n storm300: stormGray[\"3\"],\n /** @deprecated Use `stormGray500` */\n storm500: stormGray[\"5\"],\n /** @deprecated Use `stormGray700` */\n storm700: stormGray[\"7\"],\n /** @deprecated Use `stormGray850` */\n storm900: stormGray[\"8.5\"],\n\n countrySelectorSelectedBg: `${stormGray[\"0.5\"]}99`,\n\n white: \"#ffffff\",\n error: \"#dc2626\",\n errorDark: \"#b3261e\",\n errorLight: \"#fee2e2\",\n /** @deprecated Use `rubyRed` */\n inputError: brand.rubyRed,\n inputOutlineFocus: navy[\"0.5\"],\n inputOutlineError: rubyRed[\"0.5\"],\n warning: \"#92400e\",\n warningBg: \"#fef3c7\",\n success: \"#28a745\",\n successMuted: \"#9fd4a8\",\n /** @deprecated Use `emeraldGreen` */\n green: brand.emeraldGreen,\n transparent: \"transparent\",\n} as const;\n\nexport const radii = {\n sm: 8,\n md: 12,\n lg: 16,\n xl: 20,\n full: 9999,\n} as const;\n\nexport const spacing = {\n xs: 4,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 24,\n xxl: 32,\n} as const;\n\nexport const fontSize = {\n xs: 11,\n sm: 12,\n md: 14,\n base: 16,\n lg: 18,\n xl: 24,\n xxl: 32,\n} as const;\n\n/**\n * Canonical Homepad type scale (matches `.typography-*` in `src/web/styles/typography.css`).\n * font-size / line-height pairs:\n * 12/16 · 14/19 · 18/24 · 20/27 · 24/25 · 32/34\n */\nexport const typographyScale = {\n 12: { fontSize: 12, lineHeight: 16 },\n 14: { fontSize: 14, lineHeight: 19 },\n 18: { fontSize: 18, lineHeight: 24 },\n 20: { fontSize: 20, lineHeight: 27 },\n 24: { fontSize: 24, lineHeight: 25 },\n 32: { fontSize: 32, lineHeight: 34 },\n} as const;\n\nexport const fontWeight = {\n regular: \"400\" as const,\n medium: \"500\" as const,\n semibold: \"600\" as const,\n bold: \"700\" as const,\n};\n\nexport const fonts = {\n sans: \"Noto Sans Armenian\",\n} as const;\n\n/** Input label typography — Medium, typography-12 scale. */\nexport const labelTypography = {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.medium,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n} as const;\n\n/** Button label typography — SemiBold. */\nexport const buttonTypography = {\n lg: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[14].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[14].lineHeight,\n letterSpacing: 0,\n },\n sm: {\n fontFamily: fonts.sans,\n fontSize: typographyScale[12].fontSize,\n fontWeight: fontWeight.semibold,\n lineHeight: typographyScale[12].lineHeight,\n letterSpacing: 0,\n },\n} as const;\n\nexport const shadows = {\n card: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.05,\n shadowRadius: 20,\n elevation: 2,\n },\n cardLg: {\n shadowColor: colors.navy,\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.1,\n shadowRadius: 20,\n elevation: 4,\n },\n} as const;\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 { 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 ViewStyle,\n} from \"react-native\";\nimport { ArrowUpRightIcon } from \"../icons/ArrowUpRightIcon\";\nimport { colors, buttonTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport type ButtonVariant = \"white\" | \"primary\" | \"green\" | \"gray\";\nexport type ButtonSize = \"lg\" | \"sm\";\n\nexport interface ButtonProps {\n title?: string;\n children?: ReactNode;\n onPress: (event: GestureResponderEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n showIcon?: boolean;\n /** Custom icon inside the badge. Defaults to `ArrowUpRightIcon` when `showIcon` is true. */\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 white: {\n backgroundColor: colors.white,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n primary: {\n backgroundColor: colors.navy,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.navy,\n },\n green: {\n backgroundColor: colors.green,\n textColor: colors.stormGray0,\n iconBadgeBackgroundColor: colors.white,\n iconColor: colors.green,\n },\n gray: {\n backgroundColor: colors.stormGray50,\n textColor: colors.slateBlue,\n iconBadgeBackgroundColor: colors.stormGray150,\n iconColor: colors.navy,\n },\n};\n\nconst sizeConfig = {\n lg: {\n /** Matches Tailwind `h-13` so size stays stable before web classNames attach. */\n minHeight: 52,\n borderRadius: 16,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 24,\n paddingHorizontalCentered: 24,\n text: buttonTypography.lg,\n iconContainerSize: 36,\n iconContainerRadius: 12,\n iconContainerPadding: 8,\n iconSize: 20,\n },\n sm: {\n minHeight: 40,\n borderRadius: 12,\n paddingTop: 8,\n paddingRight: 8,\n paddingBottom: 8,\n paddingLeft: 16,\n paddingHorizontalCentered: 16,\n text: buttonTypography.sm,\n iconContainerSize: 32,\n iconContainerRadius: 8,\n iconContainerPadding: 8,\n iconSize: 16,\n },\n} as const;\n\nexport function Button({\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}: ButtonProps) {\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 =\n icon != null && typeof icon !== \"boolean\" ? icon : undefined;\n const hasIcon = showIcon || icon === true || customIcon != null;\n const resolvedContainerClassName = [\n Platform.OS === \"web\" ? \"max-md:px-4!\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n useApplyWebClassName(containerRef, resolvedContainerClassName || undefined);\n useApplyWebClassName(textRef, textClassName);\n\n const iconNode =\n customIcon ?? (\n <ArrowUpRightIcon 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.paddingTop,\n paddingBottom: metrics.paddingBottom,\n paddingLeft: hasIcon ? metrics.paddingLeft : metrics.paddingHorizontalCentered,\n paddingRight: hasIcon ? metrics.paddingRight : metrics.paddingHorizontalCentered,\n },\n hasIcon ? styles.withIcon : styles.centered,\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 hasIcon && styles.labelWithIcon,\n textStyle,\n ];\n\n return (\n <TouchableOpacity\n ref={containerRef}\n style={containerStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n accessibilityRole=\"button\"\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.iconContainerRadius,\n padding: metrics.iconContainerPadding,\n backgroundColor: preset.iconBadgeBackgroundColor,\n },\n ]}\n >\n {iconNode}\n </View>\n ) : null}\n </TouchableOpacity>\n );\n}\n\nconst styles = StyleSheet.create({\n base: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderWidth: 0,\n },\n centered: {\n justifyContent: \"center\",\n },\n withIcon: {\n justifyContent: \"space-between\",\n gap: 24,\n },\n disabled: {\n opacity: 0.6,\n },\n label: {},\n labelAndroid: {\n includeFontPadding: false,\n },\n labelCentered: {\n textAlign: \"center\",\n },\n labelWithIcon: {\n flex: 1,\n flexShrink: 1,\n },\n iconContainer: {\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n});\n","export const EYE_OPEN_OUTLINE_PATH =\n \"M1.71835 10.2898C1.6489 10.1027 1.6489 9.89691 1.71835 9.70981C2.39476 8.06969 3.54294 6.66735 5.01732 5.68056C6.4917 4.69378 8.22588 4.16699 10 4.16699C11.7741 4.16699 13.5083 4.69378 14.9827 5.68056C16.4571 6.66735 17.6053 8.06969 18.2817 9.70981C18.3511 9.89691 18.3511 10.1027 18.2817 10.2898C17.6053 11.9299 16.4571 13.3323 14.9827 14.3191C13.5083 15.3058 11.7741 15.8326 10 15.8326C8.22588 15.8326 6.4917 15.3058 5.01732 14.3191C3.54294 13.3323 2.39476 11.9299 1.71835 10.2898Z\";\n\nexport const EYE_OPEN_PUPIL_PATH =\n \"M10 12.4998C11.3807 12.4998 12.5 11.3805 12.5 9.99981C12.5 8.6191 11.3807 7.49981 10 7.49981C8.6193 7.49981 7.50001 8.6191 7.50001 9.99981C7.50001 11.3805 8.6193 12.4998 10 12.4998Z\";\n\nexport const EYE_OFF_PATH =\n \"M10.733 5.076C13.0624 4.7984 15.4186 5.29082 17.4419 6.47805C19.4651 7.66528 21.0442 9.48208 21.938 11.651C22.0213 11.8755 22.0213 12.1225 21.938 12.347C21.5705 13.238 21.0848 14.0755 20.494 14.837M14.084 14.158C13.5182 14.7045 12.7604 15.0069 11.9738 15C11.1872 14.9932 10.4348 14.6777 9.87854 14.1215C9.32232 13.5652 9.00681 12.8128 8.99998 12.0262C8.99314 11.2396 9.29553 10.4818 9.842 9.916M17.479 17.499C16.1525 18.2848 14.6725 18.776 13.1394 18.9394C11.6063 19.1028 10.056 18.9345 8.59363 18.4459C7.13131 17.9573 5.79119 17.1599 4.66421 16.1077C3.53723 15.0556 2.64975 13.7734 2.062 12.348C1.97866 12.1235 1.97866 11.8765 2.062 11.652C2.94863 9.50186 4.50867 7.69725 6.508 6.509M2 2L22 22\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OPEN_OUTLINE_PATH, EYE_OPEN_PUPIL_PATH } from \"./eyeIconPaths\";\n\ninterface EyeIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — open eye (password hidden). */\nexport function EyeIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={EYE_OPEN_OUTLINE_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Path\n d={EYE_OPEN_PUPIL_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import Svg, { Path } from \"react-native-svg\";\nimport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\nexport { EYE_OFF_PATH } from \"./eyeIconPaths\";\n\ninterface EyeOffIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — slashed eye (password visible). */\nexport function EyeOffIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: EyeOffIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <Path\n d={EYE_OFF_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport { colors, fonts, fontSize, fontWeight, radii } from \"./tokens\";\n\nexport const INPUT_HEIGHT = 52;\nexport const INPUT_ICON_SIZE = 20;\nexport const INPUT_ICON_GAP = 10;\nexport const INPUT_OUTLINE_WIDTH = 2;\nexport const INPUT_TEXT_LINE_HEIGHT = 19;\nexport const INPUT_WEB_VERTICAL_PADDING = 14;\n\nexport type InputVisualState =\n | \"default\"\n | \"focused\"\n | \"error\"\n | \"disabled\";\n\nexport interface InputStateFlags {\n focused?: boolean;\n error?: boolean;\n disabled?: boolean;\n}\n\nexport function resolveInputVisualState({\n focused = false,\n error = false,\n disabled = false,\n}: InputStateFlags): InputVisualState {\n if (disabled) return \"disabled\";\n if (error) return \"error\";\n if (focused) return \"focused\";\n return \"default\";\n}\n\ninterface FieldStyleSet {\n container: ViewStyle;\n outline: ViewStyle;\n text: TextStyle;\n placeholder: string;\n icon: string;\n}\n\nfunction createOutlineStyle(ringColor: string): ViewStyle {\n return {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: ringColor,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n}\n\nconst defaultOutline: ViewStyle = {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: colors.transparent,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n};\n\nexport function getInputFieldStyles(state: InputVisualState): FieldStyleSet {\n const containerBase: ViewStyle = {\n borderRadius: radii.lg,\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n\n switch (state) {\n case \"disabled\":\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n text: { color: colors.stormGray300 },\n placeholder: colors.stormGray300,\n icon: colors.stormGray150,\n };\n case \"error\":\n return {\n outline: createOutlineStyle(colors.inputOutlineError),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.inputError,\n backgroundColor: colors.white,\n },\n text: { color: colors.inputError },\n placeholder: colors.stormGray200,\n icon: colors.inputError,\n };\n case \"focused\":\n return {\n outline: createOutlineStyle(colors.inputOutlineFocus),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.navy,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.navy,\n };\n default:\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n text: { color: colors.slateBlue },\n placeholder: colors.stormGray200,\n icon: colors.stormGray150,\n };\n }\n}\n\nexport const inputFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: INPUT_HEIGHT,\n borderRadius: radii.lg,\n padding: 16,\n gap: INPUT_ICON_GAP,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n paddingVertical: INPUT_WEB_VERTICAL_PADDING,\n paddingHorizontal: 16,\n } as ViewStyle)\n : null),\n },\n input: {\n flex: 1,\n minWidth: 0,\n width: \"100%\",\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n borderWidth: 0,\n backgroundColor: colors.transparent,\n ...(Platform.OS === \"android\"\n ? { includeFontPadding: false }\n : null),\n ...(Platform.OS === \"ios\"\n ? { lineHeight: INPUT_TEXT_LINE_HEIGHT, paddingVertical: 2 }\n : null),\n ...(Platform.OS === \"web\"\n ? ({\n alignSelf: \"center\",\n outlineStyle: \"none\",\n lineHeight: INPUT_TEXT_LINE_HEIGHT,\n } as TextStyle)\n : {\n alignSelf: \"stretch\",\n }),\n },\n /** Single-line: avoid Android lineHeight jump between placeholder and typed text. */\n inputSingleLine: {\n ...(Platform.OS === \"android\"\n ? ({ textAlignVertical: \"center\" } as TextStyle)\n : null),\n },\n});\n","import { useRef, type ComponentRef, type ReactNode } from \"react\";\nimport {\n StyleSheet,\n Text,\n type StyleProp,\n type TextProps,\n type TextStyle,\n} from \"react-native\";\nimport { colors, labelTypography } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport interface LabelProps extends TextProps {\n children: ReactNode;\n /** Render as a required field indicator. */\n required?: boolean;\n disabled?: boolean;\n style?: StyleProp<TextStyle>;\n className?: string;\n}\n\nexport function Label({\n children,\n required = false,\n disabled = false,\n style,\n className,\n ...props\n}: LabelProps) {\n const ref = useRef<ComponentRef<typeof Text>>(null);\n useApplyWebClassName(ref, className);\n\n return (\n <Text\n ref={ref}\n style={[styles.label, disabled && styles.labelDisabled, style]}\n accessibilityRole=\"text\"\n {...props}\n >\n {children}\n {required ? <Text style={styles.required}> *</Text> : null}\n </Text>\n );\n}\n\nconst styles = StyleSheet.create({\n label: {\n ...labelTypography,\n color: colors.slateBlue,\n },\n labelDisabled: {\n color: colors.stormGray400,\n },\n required: {\n color: colors.inputError,\n },\n});\n","import {\n cloneElement,\n isValidElement,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputFocusEventData,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { EyeIcon } from \"../icons/EyeIcon\";\nimport { EyeOffIcon } from \"../icons/EyeOffIcon\";\nimport {\n getInputFieldStyles,\n inputFieldMetrics,\n INPUT_ICON_SIZE,\n resolveInputVisualState,\n} from \"../theme/input\";\nimport { colors, spacing } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport { Label } from \"./Label\";\n\ntype InputIconProps = {\n size?: number;\n color?: string;\n};\n\nfunction renderInputIcon(icon: ReactNode, color: string) {\n if (!icon) return null;\n\n if (isValidElement<InputIconProps>(icon)) {\n return cloneElement(icon, {\n size: icon.props.size ?? INPUT_ICON_SIZE,\n color: icon.props.color ?? color,\n });\n }\n\n return icon;\n}\n\nexport interface InputProps extends TextInputProps {\n /** Optional field label rendered above the input. */\n label?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n /** Validation or helper error message. Shown instead of `hint` when set. */\n error?: string;\n /** Applies error field styling without showing a message (use with a form-level error). */\n invalid?: boolean;\n /** Helper text shown below the input when there is no error. */\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<TextStyle>;\n className?: string;\n /** CSS classes for the bordered field container (web). */\n fieldClassName?: string;\n /** Styles merged into the bordered field container. */\n fieldStyle?: StyleProp<ViewStyle>;\n labelClassName?: string;\n /** Styles merged into the field label. */\n labelStyles?: StyleProp<TextStyle>;\n inputClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** When `secureTextEntry` is set, show a toggleable eye icon. Pass `false` to disable. */\n showPasswordToggle?: boolean;\n}\n\nconst INTEGER_KEYBOARD_TYPES = new Set([\n \"numeric\",\n \"number-pad\",\n \"phone-pad\",\n]);\n\n/** Strip non-digits for integer pads; keep one decimal separator for decimal-pad. */\nfunction sanitizeNumericInput(\n value: string,\n keyboardType: TextInputProps[\"keyboardType\"],\n): string {\n if (keyboardType === \"decimal-pad\") {\n const normalized = value.replace(/,/g, \".\").replace(/[^\\d.]/g, \"\");\n const separatorIndex = normalized.indexOf(\".\");\n\n if (separatorIndex === -1) {\n return normalized;\n }\n\n return (\n normalized.slice(0, separatorIndex + 1) +\n normalized.slice(separatorIndex + 1).replace(/\\./g, \"\")\n );\n }\n\n if (keyboardType && INTEGER_KEYBOARD_TYPES.has(keyboardType)) {\n return value.replace(/\\D/g, \"\");\n }\n\n return value;\n}\n\nexport function Input({\n label,\n leftIcon,\n rightIcon,\n error,\n invalid,\n hint,\n containerStyle,\n style,\n className,\n fieldClassName,\n fieldStyle,\n labelClassName,\n labelStyles,\n inputClassName,\n errorClassName,\n hintClassName,\n editable = true,\n secureTextEntry,\n showPasswordToggle,\n onFocus,\n onBlur,\n onChangeText,\n keyboardType,\n multiline,\n textAlignVertical,\n ...props\n}: InputProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const fieldRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [focused, setFocused] = useState(false);\n const [passwordVisible, setPasswordVisible] = useState(false);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(fieldRef, fieldClassName);\n useApplyWebClassName(inputRef, inputClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n const isDisabled = editable === false;\n const hasError = Boolean(error) || Boolean(invalid);\n const passwordToggleEnabled =\n secureTextEntry === true && showPasswordToggle !== false && rightIcon == null;\n const effectiveSecureTextEntry = passwordToggleEnabled\n ? !passwordVisible\n : secureTextEntry;\n // Keep placeholder and typed text on the same vertical line (esp. Android).\n const resolvedTextAlignVertical =\n textAlignVertical ?? (multiline ? \"top\" : \"center\");\n const visualState = resolveInputVisualState({\n focused,\n error: hasError,\n disabled: isDisabled,\n });\n const fieldStyles = getInputFieldStyles(visualState);\n const iconColor = fieldStyles.icon;\n\n function handleFocus(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(true);\n onFocus?.(event);\n }\n\n function handleBlur(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(false);\n onBlur?.(event);\n }\n\n function handleChangeText(value: string) {\n onChangeText?.(sanitizeNumericInput(value, keyboardType));\n }\n\n const helperMessage = error ?? hint;\n\n function togglePasswordVisibility() {\n if (!isDisabled) {\n setPasswordVisible((visible) => !visible);\n }\n }\n\n const trailingIcon = passwordToggleEnabled ? (\n <Pressable\n onPress={togglePasswordVisibility}\n disabled={isDisabled}\n accessibilityRole=\"button\"\n accessibilityLabel={passwordVisible ? \"Hide password\" : \"Show password\"}\n hitSlop={8}\n style={styles.iconPressable}\n >\n {renderInputIcon(\n passwordVisible ? <EyeOffIcon /> : <EyeIcon />,\n iconColor,\n )}\n </Pressable>\n ) : rightIcon ? (\n renderInputIcon(rightIcon, iconColor)\n ) : null;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label\n disabled={isDisabled}\n className={labelClassName}\n style={labelStyles}\n >\n {label}\n </Label>\n ) : null}\n <View style={fieldStyles.outline}>\n <View\n ref={fieldRef}\n style={[inputFieldMetrics.container, fieldStyles.container, fieldStyle]}\n >\n {leftIcon ? (\n <View style={styles.iconSlot}>{renderInputIcon(leftIcon, iconColor)}</View>\n ) : null}\n <TextInput\n ref={inputRef}\n style={[\n inputFieldMetrics.input,\n !multiline ? inputFieldMetrics.inputSingleLine : null,\n fieldStyles.text,\n style,\n ]}\n placeholderTextColor={fieldStyles.placeholder}\n editable={editable}\n keyboardType={keyboardType}\n multiline={multiline}\n secureTextEntry={effectiveSecureTextEntry}\n textAlign=\"left\"\n textAlignVertical={resolvedTextAlignVertical}\n onFocus={handleFocus}\n onBlur={handleBlur}\n accessibilityState={{ disabled: isDisabled }}\n {...props}\n onChangeText={handleChangeText}\n />\n {trailingIcon ? (\n <View style={styles.iconSlot}>{trailingIcon}</View>\n ) : null}\n </View>\n </View>\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n minWidth: 0,\n gap: spacing.sm,\n },\n iconSlot: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n iconPressable: {\n width: INPUT_ICON_SIZE,\n height: INPUT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const CHEVRON_DOWN_PATH = \"M4 6L8 10L12 6\";\nexport const CHEVRON_DOWN_PATH_20 = \"M5 7.5L10 12.5L15 7.5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_DOWN_PATH, CHEVRON_DOWN_PATH_20 } from \"./chevronDownPath\";\n\nexport { CHEVRON_DOWN_PATH, CHEVRON_DOWN_PATH_20 } 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 = 16,\n color = \"#dadde0\",\n strokeWidth = 2,\n}: ChevronDownIconProps) {\n const useLarge = size >= 20;\n\n return (\n <Svg\n width={size}\n height={size}\n viewBox={useLarge ? \"0 0 20 20\" : \"0 0 16 16\"}\n fill=\"none\"\n >\n <Path\n d={useLarge ? CHEVRON_DOWN_PATH_20 : CHEVRON_DOWN_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Dimensions, Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport {\n resolveInputVisualState,\n type InputStateFlags,\n type InputVisualState,\n} from \"./input\";\nimport { colors, fonts, fontSize, fontWeight, radii, spacing } from \"./tokens\";\n\nexport const SELECT_HEIGHT = 52;\nexport const SELECT_PADDING = 16;\nexport const SELECT_INNER_GAP = 10;\nexport const SELECT_ICON_SIZE = 20;\nexport const SELECT_LABEL_GAP = spacing.sm;\nexport const SELECT_DROPDOWN_GAP = spacing.sm;\nexport const SELECT_DROPDOWN_PADDING = spacing.sm;\nexport const SELECT_DROPDOWN_MAX_HEIGHT = 317;\nexport const SELECT_OPTION_HEIGHT = 43;\nexport const SELECT_OPTION_HEIGHT_COMPACT = 36;\nexport const SELECT_OPTION_GAP = spacing.sm;\nexport const SELECT_CHEVRON_SIZE = 20;\nexport const SELECT_CHEVRON_COLOR = colors.stormGray150;\nexport const SELECT_CHEVRON_ROTATION_MS = 200;\nexport const SELECT_TEXT_LINE_HEIGHT = 19;\n\nexport { resolveInputVisualState };\nexport type { InputStateFlags, InputVisualState };\n\nexport const selectLabelTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.slateBlue,\n} as const;\n\nexport const selectValueTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: SELECT_TEXT_LINE_HEIGHT,\n letterSpacing: 0,\n textAlign: \"left\",\n} as const;\n\ninterface SelectFieldStyleSet {\n container: ViewStyle;\n outline: ViewStyle;\n value: TextStyle;\n placeholder: string;\n icon: string;\n}\n\nconst INPUT_OUTLINE_WIDTH = 2;\n\nfunction createOutlineStyle(ringColor: string): ViewStyle {\n return {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: ringColor,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n}\n\nconst defaultOutline: ViewStyle = {\n borderRadius: radii.lg + INPUT_OUTLINE_WIDTH,\n borderWidth: INPUT_OUTLINE_WIDTH,\n borderColor: colors.transparent,\n padding: 0,\n backgroundColor: colors.transparent,\n width: \"100%\",\n alignSelf: \"stretch\",\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n};\n\nexport function getSelectFieldStyles(state: InputVisualState): SelectFieldStyleSet {\n const containerBase: ViewStyle = {\n borderRadius: radii.lg,\n ...(Platform.OS !== \"web\" ? { overflow: \"hidden\" as const } : null),\n };\n\n const valueBase: TextStyle = {\n ...selectValueTypography,\n color: colors.slateBlue,\n };\n\n switch (state) {\n case \"disabled\":\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n value: { ...valueBase, color: colors.stormGray300 },\n placeholder: colors.stormGray300,\n icon: colors.stormGray150,\n };\n case \"error\":\n return {\n outline: createOutlineStyle(colors.inputOutlineError),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.inputError,\n backgroundColor: colors.white,\n },\n value: { ...valueBase, color: colors.inputError },\n placeholder: colors.stormGray200,\n icon: colors.inputError,\n };\n case \"focused\":\n return {\n outline: createOutlineStyle(colors.inputOutlineFocus),\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.navy,\n backgroundColor: colors.white,\n },\n value: valueBase,\n placeholder: colors.stormGray200,\n icon: colors.navy,\n };\n default:\n return {\n outline: defaultOutline,\n container: {\n ...containerBase,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n value: valueBase,\n placeholder: colors.stormGray200,\n icon: colors.stormGray150,\n };\n }\n}\n\nexport const selectFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: SELECT_HEIGHT,\n borderRadius: radii.lg,\n padding: SELECT_PADDING,\n gap: SELECT_INNER_GAP,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n value: {\n flex: 1,\n minWidth: 0,\n ...selectValueTypography,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n ...(Platform.OS === \"android\" ? { includeFontPadding: false } : null),\n ...(Platform.OS === \"web\"\n ? ({\n outlineStyle: \"none\",\n } as TextStyle)\n : null),\n },\n});\n\nexport const selectDropdownMetrics = StyleSheet.create({\n menu: {\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: SELECT_DROPDOWN_PADDING,\n overflow: \"hidden\",\n },\n option: {\n width: \"100%\",\n height: SELECT_OPTION_HEIGHT,\n minHeight: SELECT_OPTION_HEIGHT,\n maxHeight: SELECT_OPTION_HEIGHT,\n paddingTop: 12,\n paddingRight: spacing.sm,\n paddingBottom: 12,\n paddingLeft: spacing.sm,\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n },\n optionLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: SELECT_TEXT_LINE_HEIGHT,\n letterSpacing: 0,\n textAlign: \"left\",\n color: colors.slateBlue,\n width: \"100%\",\n },\n optionLabelSelected: {\n fontWeight: fontWeight.medium,\n color: colors.slateBlue,\n },\n optionSelected: {\n opacity: 1,\n borderRadius: radii.sm,\n paddingTop: 12,\n paddingRight: spacing.sm,\n paddingBottom: 12,\n paddingLeft: spacing.sm,\n backgroundColor: colors.countrySelectorSelectedBg,\n },\n optionHighlighted: {\n backgroundColor: colors.stormGray0,\n },\n});\n\nexport function resolveSelectDropdownHeight(\n optionCount: number,\n optionHeight: number = SELECT_OPTION_HEIGHT,\n): number {\n const contentHeight =\n optionCount * optionHeight +\n Math.max(0, optionCount - 1) * SELECT_OPTION_GAP +\n SELECT_DROPDOWN_PADDING * 2;\n\n return Math.min(contentHeight, SELECT_DROPDOWN_MAX_HEIGHT);\n}\n\nexport function resolveSelectDropdownContentHeight(\n optionCount: number,\n optionHeight: number = SELECT_OPTION_HEIGHT,\n): number {\n return (\n optionCount * optionHeight + Math.max(0, optionCount - 1) * SELECT_OPTION_GAP\n );\n}\n\nexport function resolveSelectDropdownTop(\n anchor: { y: number; height: number },\n dropdownHeight: number,\n): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const spaceBelow = windowHeight - (anchor.y + anchor.height + SELECT_DROPDOWN_GAP);\n const spaceAbove = anchor.y - SELECT_DROPDOWN_GAP;\n const topBelow = anchor.y + anchor.height + SELECT_DROPDOWN_GAP;\n const topAbove = anchor.y - SELECT_DROPDOWN_GAP - dropdownHeight;\n\n if (spaceBelow >= dropdownHeight) {\n return topBelow;\n }\n\n if (spaceAbove >= dropdownHeight) {\n return topAbove;\n }\n\n if (spaceAbove > spaceBelow) {\n return Math.max(0, topAbove);\n }\n\n return Math.max(0, Math.min(topBelow, windowHeight - dropdownHeight));\n}\n","import { Platform } from \"react-native\";\nimport { colors } from \"../theme/tokens\";\n\nexport const COUNTRY_DROPDOWN_SCROLL_CLASS = \"hp-country-dropdown-scroll\";\nexport const SELECT_DROPDOWN_SCROLL_CLASS = \"hp-select-dropdown-scroll\";\n\nconst STYLE_ID = \"hp-dropdown-scroll-styles\";\n\nfunction createDropdownScrollCss(className: string): string {\n return `\n .${className} {\n scrollbar-width: thin;\n scrollbar-color: ${colors.stormGray300} transparent;\n overflow-y: auto;\n }\n\n .${className}::-webkit-scrollbar {\n width: 4px;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .${className}::-webkit-scrollbar-corner {\n background: transparent;\n }\n\n .${className}::-webkit-scrollbar-button,\n .${className}::-webkit-scrollbar-button:single-button,\n .${className}::-webkit-scrollbar-button:double-button,\n .${className}::-webkit-scrollbar-button:horizontal:decrement,\n .${className}::-webkit-scrollbar-button:horizontal:increment,\n .${className}::-webkit-scrollbar-button:horizontal:start:decrement,\n .${className}::-webkit-scrollbar-button:horizontal:end:increment,\n .${className}::-webkit-scrollbar-button:vertical:decrement,\n .${className}::-webkit-scrollbar-button:vertical:increment,\n .${className}::-webkit-scrollbar-button:vertical:start:decrement,\n .${className}::-webkit-scrollbar-button:vertical:end:increment,\n .${className}::-webkit-scrollbar-button:start:decrement,\n .${className}::-webkit-scrollbar-button:end:increment,\n .${className}::-webkit-scrollbar-button:decrement,\n .${className}::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .${className}::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .${className}::-webkit-scrollbar-thumb {\n background-color: ${colors.stormGray300};\n border-radius: 9999px;\n }\n`;\n}\n\nexport const dropdownScrollCss = [\n createDropdownScrollCss(COUNTRY_DROPDOWN_SCROLL_CLASS),\n createDropdownScrollCss(SELECT_DROPDOWN_SCROLL_CLASS),\n].join(\"\\n\");\n\n/** @deprecated Use `dropdownScrollCss` */\nexport const countryDropdownScrollCss = dropdownScrollCss;\n\nexport function ensureDropdownScrollStyles(): void {\n if (Platform.OS !== \"web\" || typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = dropdownScrollCss;\n document.head.appendChild(style);\n}\n\nexport function ensureCountryDropdownScrollStyles(): void {\n ensureDropdownScrollStyles();\n}\n\nexport function ensureSelectDropdownScrollStyles(): void {\n ensureDropdownScrollStyles();\n}\n","import { fontSize } from \"../theme/tokens\";\n\nconst MULTI_SELECT_SUFFIX = \" ... + \";\nconst MULTI_SELECT_SUFFIX_UNIT = \" items\";\n\n/** Rough width estimate for Noto Sans Armenian at 14px (single-select value text). */\nfunction estimateTextWidth(text: string, size = fontSize.md): number {\n return text.length * size * 0.58;\n}\n\nexport function formatMultiSelectDisplay(\n labels: string[],\n maxWidth: number,\n textSize = fontSize.md,\n): string {\n if (labels.length === 0) {\n return \"\";\n }\n\n if (labels.length === 1) {\n return labels[0];\n }\n\n const fits = (text: string) => estimateTextWidth(text, textSize) <= maxWidth;\n const fullText = labels.join(\", \");\n\n if (fits(fullText)) {\n return fullText;\n }\n\n for (let visibleCount = labels.length - 1; visibleCount >= 1; visibleCount -= 1) {\n const hiddenCount = labels.length - visibleCount;\n const truncatedText = `${labels.slice(0, visibleCount).join(\", \")}${MULTI_SELECT_SUFFIX}${hiddenCount}${MULTI_SELECT_SUFFIX_UNIT}`;\n\n if (fits(truncatedText)) {\n return truncatedText;\n }\n }\n\n return `... + ${labels.length}${MULTI_SELECT_SUFFIX_UNIT}`;\n}\n\nexport function resolveSelectedLabels(\n options: { value: string; label: string }[],\n selectedValues: string[],\n): string[] {\n if (selectedValues.length === 0) {\n return [];\n }\n\n const labelByValue = new Map(options.map((option) => [option.value, option.label]));\n\n return selectedValues\n .map((value) => labelByValue.get(value))\n .filter((label): label is string => Boolean(label));\n}\n","import {\n cloneElement,\n isValidElement,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ComponentRef,\n type ReactNode,\n} from \"react\";\nimport {\n Animated,\n Easing,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { ChevronDownIcon } from \"../icons/ChevronDownIcon\";\nimport {\n getSelectFieldStyles,\n SELECT_CHEVRON_COLOR,\n SELECT_CHEVRON_ROTATION_MS,\n SELECT_CHEVRON_SIZE,\n SELECT_ICON_SIZE,\n SELECT_LABEL_GAP,\n SELECT_DROPDOWN_MAX_HEIGHT,\n SELECT_DROPDOWN_PADDING,\n SELECT_OPTION_GAP,\n SELECT_OPTION_HEIGHT,\n SELECT_OPTION_HEIGHT_COMPACT,\n resolveInputVisualState,\n resolveSelectDropdownContentHeight,\n resolveSelectDropdownHeight,\n resolveSelectDropdownTop,\n selectDropdownMetrics,\n selectFieldMetrics,\n selectLabelTypography,\n} from \"../theme/select\";\nimport { colors } from \"../theme/tokens\";\nimport {\n ensureSelectDropdownScrollStyles,\n SELECT_DROPDOWN_SCROLL_CLASS,\n} from \"../utils/countryDropdownScrollStyles\";\nimport {\n formatMultiSelectDisplay,\n resolveSelectedLabels,\n} from \"../utils/formatMultiSelectDisplay\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport { Label } from \"./Label\";\n\ntype SelectIconProps = {\n size?: number;\n color?: string;\n};\n\nfunction renderSelectIcon(icon: ReactNode, color: string) {\n if (!icon) return null;\n\n if (isValidElement<SelectIconProps>(icon)) {\n return cloneElement(icon, {\n size: icon.props.size ?? SELECT_ICON_SIZE,\n color: icon.props.color ?? color,\n });\n }\n\n return icon;\n}\n\nfunction resolveWebTextNode(\n ref: React.RefObject<ComponentRef<typeof Text> | null>,\n): HTMLElement | null {\n if (Platform.OS !== \"web\") {\n return null;\n }\n\n const node = ref.current as unknown;\n return node instanceof HTMLElement ? node : null;\n}\n\nfunction syncTruncatedNativeTitle(\n ref: React.RefObject<ComponentRef<typeof Text> | null>,\n label: string,\n): void {\n const element = resolveWebTextNode(ref);\n if (!element) {\n return;\n }\n\n if (element.scrollWidth > element.clientWidth) {\n element.setAttribute(\"title\", label);\n return;\n }\n\n element.removeAttribute(\"title\");\n}\n\nfunction clearNativeTitle(ref: React.RefObject<ComponentRef<typeof Text> | null>): void {\n resolveWebTextNode(ref)?.removeAttribute(\"title\");\n}\n\ninterface SelectOptionItemProps {\n option: SelectOption;\n compact: boolean;\n optionHeight: number;\n isSelected: boolean;\n isHighlighted: boolean;\n isLast: boolean;\n selectableIndex: number;\n onHighlight: (selectableIndex: number) => void;\n onSelect: (value: string) => void;\n}\n\nfunction SelectOptionItem({\n option,\n compact,\n optionHeight,\n isSelected,\n isHighlighted,\n isLast,\n selectableIndex,\n onHighlight,\n onSelect,\n}: SelectOptionItemProps) {\n const labelRef = useRef<ComponentRef<typeof Text>>(null);\n\n return (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: option.disabled, selected: isSelected }}\n disabled={option.disabled}\n onPress={() => {\n if (!option.disabled) {\n onSelect(option.value);\n }\n }}\n onHoverIn={() => {\n if (!option.disabled && selectableIndex >= 0) {\n onHighlight(selectableIndex);\n }\n\n syncTruncatedNativeTitle(labelRef, option.label);\n }}\n onHoverOut={() => {\n clearNativeTitle(labelRef);\n }}\n style={[\n selectDropdownMetrics.option,\n compact && styles.optionCompact,\n { height: optionHeight, minHeight: optionHeight, maxHeight: optionHeight },\n isSelected && selectDropdownMetrics.optionSelected,\n compact && isSelected && styles.optionSelectedCompact,\n isHighlighted && !isSelected && !option.disabled\n ? selectDropdownMetrics.optionHighlighted\n : null,\n !isLast && styles.optionSpacing,\n option.disabled && styles.optionDisabled,\n ]}\n >\n <Text\n ref={labelRef}\n style={[\n selectDropdownMetrics.optionLabel,\n styles.optionLabel,\n isSelected && selectDropdownMetrics.optionLabelSelected,\n option.disabled && styles.optionLabelDisabled,\n ]}\n numberOfLines={1}\n >\n {option.label}\n </Text>\n </Pressable>\n );\n}\n\nexport type SelectOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype AnchorLayout = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nconst useIsomorphicLayoutEffect =\n typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\ninterface SelectBaseProps {\n label?: string;\n placeholder?: string;\n options: SelectOption[];\n leftIcon?: ReactNode;\n disabled?: boolean;\n error?: string;\n invalid?: boolean;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n fieldStyle?: StyleProp<ViewStyle>;\n className?: string;\n fieldClassName?: string;\n menuClassName?: string;\n labelClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** Shorter option rows for compact filter-style dropdowns. */\n compact?: boolean;\n}\n\nexport interface SingleSelectProps extends SelectBaseProps {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n}\n\nexport interface MultipleSelectProps extends SelectBaseProps {\n multiple: true;\n value?: string[];\n onValueChange?: (value: string[]) => void;\n}\n\nexport type SelectProps = SingleSelectProps | MultipleSelectProps;\n\nfunction normalizeSelectedValues(\n multiple: boolean,\n value: string | string[] | undefined,\n): string[] {\n if (multiple) {\n if (Array.isArray(value)) {\n return value;\n }\n\n return value ? [value] : [];\n }\n\n return typeof value === \"string\" && value.length > 0 ? [value] : [];\n}\n\nexport function Select({\n label,\n placeholder = \"placeholder\",\n value,\n onValueChange,\n options,\n leftIcon,\n multiple = false,\n disabled = false,\n error,\n invalid,\n hint,\n containerStyle,\n fieldStyle,\n className,\n fieldClassName,\n menuClassName,\n labelClassName,\n errorClassName,\n hintClassName,\n compact = false,\n}: SelectProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const menuRef = useRef<ComponentRef<typeof View>>(null);\n const scrollRef = useRef<ComponentRef<typeof ScrollView>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const chevronRotation = useRef(new Animated.Value(0)).current;\n const [open, setOpen] = useState(false);\n const [anchor, setAnchor] = useState<AnchorLayout | null>(null);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const [valueContainerWidth, setValueContainerWidth] = useState(0);\n const optionHeight = compact ? SELECT_OPTION_HEIGHT_COMPACT : SELECT_OPTION_HEIGHT;\n const needsScroll = useMemo(\n () =>\n resolveSelectDropdownContentHeight(options.length, optionHeight) >\n SELECT_DROPDOWN_MAX_HEIGHT - SELECT_DROPDOWN_PADDING * 2,\n [optionHeight, options.length],\n );\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(triggerRef, fieldClassName);\n useApplyWebClassName(menuRef, menuClassName);\n useApplyWebClassName(scrollRef, SELECT_DROPDOWN_SCROLL_CLASS, open && Boolean(anchor) && needsScroll);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n useIsomorphicLayoutEffect(() => {\n ensureSelectDropdownScrollStyles();\n }, []);\n\n useEffect(() => {\n Animated.timing(chevronRotation, {\n toValue: open ? 1 : 0,\n duration: SELECT_CHEVRON_ROTATION_MS,\n easing: Easing.out(Easing.ease),\n useNativeDriver: Platform.OS !== \"web\",\n }).start();\n }, [chevronRotation, open]);\n\n const chevronRotate = chevronRotation.interpolate({\n inputRange: [0, 1],\n outputRange: [\"0deg\", \"180deg\"],\n });\n\n const selectedValues = useMemo(\n () => normalizeSelectedValues(multiple, value),\n [multiple, value],\n );\n const selectedValueSet = useMemo(() => new Set(selectedValues), [selectedValues]);\n const selectedLabels = useMemo(\n () => resolveSelectedLabels(options, selectedValues),\n [options, selectedValues],\n );\n const selectableOptions = useMemo(\n () => options.filter((option) => !option.disabled),\n [options],\n );\n // Empty option lists cannot open — treat as disabled so the field does not look interactive.\n const isEffectivelyDisabled = disabled || selectableOptions.length === 0;\n const hasError = Boolean(error) || Boolean(invalid);\n const visualState = resolveInputVisualState({\n focused: open,\n error: hasError,\n disabled: isEffectivelyDisabled,\n });\n const fieldStyles = getSelectFieldStyles(visualState);\n const selectableIndexByValue = useMemo(\n () =>\n new Map(\n selectableOptions.map((option, index) => [option.value, index] as const),\n ),\n [selectableOptions],\n );\n const displayLabel = useMemo(() => {\n if (selectedLabels.length === 0) {\n return placeholder;\n }\n\n if (!multiple) {\n return selectedLabels[0];\n }\n\n if (valueContainerWidth <= 0) {\n return selectedLabels.join(\", \");\n }\n\n return formatMultiSelectDisplay(selectedLabels, valueContainerWidth);\n }, [multiple, placeholder, selectedLabels, valueContainerWidth]);\n\n const isPlaceholder = selectedLabels.length === 0;\n const dropdownHeight = resolveSelectDropdownHeight(options.length, optionHeight);\n const helperMessage = error ?? hint;\n\n function closeMenu() {\n setOpen(false);\n setAnchor(null);\n setHighlightedIndex(-1);\n }\n\n function openMenu() {\n if (isEffectivelyDisabled) {\n return;\n }\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n const selectedIndex = selectableOptions.findIndex((option) =>\n selectedValueSet.has(option.value),\n );\n setHighlightedIndex(selectedIndex >= 0 ? selectedIndex : 0);\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSelect(nextValue: string) {\n if (multiple) {\n const nextValues = selectedValues.includes(nextValue)\n ? selectedValues.filter((item) => item !== nextValue)\n : [...selectedValues, nextValue];\n\n (onValueChange as MultipleSelectProps[\"onValueChange\"] | undefined)?.(nextValues);\n return;\n }\n\n if (selectedValues.includes(nextValue)) {\n (onValueChange as SingleSelectProps[\"onValueChange\"] | undefined)?.(\"\");\n closeMenu();\n return;\n }\n\n (onValueChange as SingleSelectProps[\"onValueChange\"] | undefined)?.(nextValue);\n closeMenu();\n }\n\n const optionList = options.map((option, index) => {\n const selectableIndex = selectableIndexByValue.get(option.value) ?? -1;\n const isSelected = selectedValueSet.has(option.value);\n const isHighlighted = selectableIndex === highlightedIndex;\n const isLast = index === options.length - 1;\n\n return (\n <SelectOptionItem\n key={option.value}\n option={option}\n compact={compact}\n optionHeight={optionHeight}\n isSelected={isSelected}\n isHighlighted={isHighlighted}\n isLast={isLast}\n selectableIndex={selectableIndex}\n onHighlight={setHighlightedIndex}\n onSelect={handleSelect}\n />\n );\n });\n\n const dropdownTop = anchor ? resolveSelectDropdownTop(anchor, dropdownHeight) : 0;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label disabled={isEffectivelyDisabled} style={styles.label} className={labelClassName}>\n {label}\n </Label>\n ) : null}\n\n <View style={fieldStyles.outline}>\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: isEffectivelyDisabled, expanded: open }}\n disabled={isEffectivelyDisabled}\n onPress={open ? closeMenu : openMenu}\n style={[selectFieldMetrics.container, fieldStyles.container, fieldStyle]}\n >\n {leftIcon ? (\n <View style={styles.iconSlot}>\n {renderSelectIcon(leftIcon, fieldStyles.icon)}\n </View>\n ) : null}\n <View\n style={styles.valueContainer}\n onLayout={(event) => {\n setValueContainerWidth(event.nativeEvent.layout.width);\n }}\n >\n <Text\n style={[\n selectFieldMetrics.value,\n fieldStyles.value,\n isPlaceholder && { color: fieldStyles.placeholder },\n ]}\n numberOfLines={1}\n >\n {displayLabel}\n </Text>\n </View>\n <Animated.View\n style={[styles.iconSlot, { transform: [{ rotate: chevronRotate }] }]}\n >\n <ChevronDownIcon\n size={SELECT_CHEVRON_SIZE}\n color={isEffectivelyDisabled ? colors.stormGray200 : SELECT_CHEVRON_COLOR}\n />\n </Animated.View>\n </Pressable>\n </View>\n\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n\n <Modal visible={open} transparent animationType=\"fade\" onRequestClose={closeMenu}>\n <View style={styles.overlay}>\n <Pressable\n style={styles.backdrop}\n onPress={closeMenu}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close\"\n />\n {anchor ? (\n <View\n ref={menuRef}\n style={[\n selectDropdownMetrics.menu,\n styles.dropdown,\n {\n top: dropdownTop,\n left: anchor.x,\n width: anchor.width,\n height: dropdownHeight,\n },\n ]}\n >\n {needsScroll ? (\n <ScrollView\n ref={scrollRef}\n style={styles.dropdownScroll}\n contentContainerStyle={styles.dropdownContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator\n bounces={false}\n nestedScrollEnabled\n >\n {optionList}\n </ScrollView>\n ) : (\n <View style={styles.dropdownContent}>{optionList}</View>\n )}\n </View>\n ) : null}\n </View>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n gap: SELECT_LABEL_GAP,\n },\n label: {\n ...selectLabelTypography,\n },\n iconSlot: {\n width: SELECT_ICON_SIZE,\n height: SELECT_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n valueContainer: {\n flex: 1,\n minWidth: 0,\n justifyContent: \"center\",\n },\n overlay: {\n flex: 1,\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: colors.transparent,\n },\n dropdown: {\n position: \"absolute\",\n zIndex: 1,\n },\n dropdownScroll: {\n flex: 1,\n },\n dropdownContent: {\n flexGrow: 1,\n },\n optionSpacing: {\n marginBottom: SELECT_OPTION_GAP,\n },\n optionCompact: {\n paddingTop: 8,\n paddingBottom: 8,\n },\n optionSelectedCompact: {\n paddingTop: 8,\n paddingBottom: 8,\n },\n optionDisabled: {\n opacity: 0.5,\n },\n optionLabel: {\n minWidth: 0,\n ...(Platform.OS === \"web\"\n ? ({\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n } as const)\n : null),\n },\n optionLabelDisabled: {\n color: colors.stormGray300,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export type Country = {\n code: string;\n name: string;\n dialCode: string;\n};\n\nexport const defaultCountry: Country = {\n code: \"AM\",\n name: \"Armenia\",\n dialCode: \"+374\",\n};\n\nexport const countries: Country[] = [\n defaultCountry,\n { code: \"AF\", name: \"Afghanistan\", dialCode: \"+93\" },\n { code: \"AL\", name: \"Albania\", dialCode: \"+355\" },\n { code: \"DZ\", name: \"Algeria\", dialCode: \"+213\" },\n { code: \"AR\", name: \"Argentina\", dialCode: \"+54\" },\n { code: \"AU\", name: \"Australia\", dialCode: \"+61\" },\n { code: \"AT\", name: \"Austria\", dialCode: \"+43\" },\n { code: \"AZ\", name: \"Azerbaijan\", dialCode: \"+994\" },\n { code: \"BH\", name: \"Bahrain\", dialCode: \"+973\" },\n { code: \"BY\", name: \"Belarus\", dialCode: \"+375\" },\n { code: \"BE\", name: \"Belgium\", dialCode: \"+32\" },\n { code: \"BR\", name: \"Brazil\", dialCode: \"+55\" },\n { code: \"BG\", name: \"Bulgaria\", dialCode: \"+359\" },\n { code: \"CA\", name: \"Canada\", dialCode: \"+1\" },\n { code: \"CL\", name: \"Chile\", dialCode: \"+56\" },\n { code: \"CN\", name: \"China\", dialCode: \"+86\" },\n { code: \"CO\", name: \"Colombia\", dialCode: \"+57\" },\n { code: \"HR\", name: \"Croatia\", dialCode: \"+385\" },\n { code: \"CY\", name: \"Cyprus\", dialCode: \"+357\" },\n { code: \"CZ\", name: \"Czech Republic\", dialCode: \"+420\" },\n { code: \"DK\", name: \"Denmark\", dialCode: \"+45\" },\n { code: \"EG\", name: \"Egypt\", dialCode: \"+20\" },\n { code: \"EE\", name: \"Estonia\", dialCode: \"+372\" },\n { code: \"FI\", name: \"Finland\", dialCode: \"+358\" },\n { code: \"FR\", name: \"France\", dialCode: \"+33\" },\n { code: \"GE\", name: \"Georgia\", dialCode: \"+995\" },\n { code: \"DE\", name: \"Germany\", dialCode: \"+49\" },\n { code: \"GR\", name: \"Greece\", dialCode: \"+30\" },\n { code: \"HK\", name: \"Hong Kong\", dialCode: \"+852\" },\n { code: \"HU\", name: \"Hungary\", dialCode: \"+36\" },\n { code: \"IN\", name: \"India\", dialCode: \"+91\" },\n { code: \"ID\", name: \"Indonesia\", dialCode: \"+62\" },\n { code: \"IR\", name: \"Iran\", dialCode: \"+98\" },\n { code: \"IQ\", name: \"Iraq\", dialCode: \"+964\" },\n { code: \"IE\", name: \"Ireland\", dialCode: \"+353\" },\n { code: \"IL\", name: \"Israel\", dialCode: \"+972\" },\n { code: \"IT\", name: \"Italy\", dialCode: \"+39\" },\n { code: \"JP\", name: \"Japan\", dialCode: \"+81\" },\n { code: \"JO\", name: \"Jordan\", dialCode: \"+962\" },\n { code: \"KZ\", name: \"Kazakhstan\", dialCode: \"+7\" },\n { code: \"KW\", name: \"Kuwait\", dialCode: \"+965\" },\n { code: \"LV\", name: \"Latvia\", dialCode: \"+371\" },\n { code: \"LB\", name: \"Lebanon\", dialCode: \"+961\" },\n { code: \"LT\", name: \"Lithuania\", dialCode: \"+370\" },\n { code: \"LU\", name: \"Luxembourg\", dialCode: \"+352\" },\n { code: \"MY\", name: \"Malaysia\", dialCode: \"+60\" },\n { code: \"MX\", name: \"Mexico\", dialCode: \"+52\" },\n { code: \"MD\", name: \"Moldova\", dialCode: \"+373\" },\n { code: \"NL\", name: \"Netherlands\", dialCode: \"+31\" },\n { code: \"NZ\", name: \"New Zealand\", dialCode: \"+64\" },\n { code: \"NG\", name: \"Nigeria\", dialCode: \"+234\" },\n { code: \"NO\", name: \"Norway\", dialCode: \"+47\" },\n { code: \"PK\", name: \"Pakistan\", dialCode: \"+92\" },\n { code: \"PS\", name: \"Palestine\", dialCode: \"+970\" },\n { code: \"PH\", name: \"Philippines\", dialCode: \"+63\" },\n { code: \"PL\", name: \"Poland\", dialCode: \"+48\" },\n { code: \"PT\", name: \"Portugal\", dialCode: \"+351\" },\n { code: \"QA\", name: \"Qatar\", dialCode: \"+974\" },\n { code: \"RO\", name: \"Romania\", dialCode: \"+40\" },\n { code: \"RU\", name: \"Russia\", dialCode: \"+7\" },\n { code: \"SA\", name: \"Saudi Arabia\", dialCode: \"+966\" },\n { code: \"RS\", name: \"Serbia\", dialCode: \"+381\" },\n { code: \"SG\", name: \"Singapore\", dialCode: \"+65\" },\n { code: \"SK\", name: \"Slovakia\", dialCode: \"+421\" },\n { code: \"SI\", name: \"Slovenia\", dialCode: \"+386\" },\n { code: \"ZA\", name: \"South Africa\", dialCode: \"+27\" },\n { code: \"KR\", name: \"South Korea\", dialCode: \"+82\" },\n { code: \"ES\", name: \"Spain\", dialCode: \"+34\" },\n { code: \"SE\", name: \"Sweden\", dialCode: \"+46\" },\n { code: \"CH\", name: \"Switzerland\", dialCode: \"+41\" },\n { code: \"SY\", name: \"Syria\", dialCode: \"+963\" },\n { code: \"TW\", name: \"Taiwan\", dialCode: \"+886\" },\n { code: \"TH\", name: \"Thailand\", dialCode: \"+66\" },\n { code: \"TR\", name: \"Turkey\", dialCode: \"+90\" },\n { code: \"UA\", name: \"Ukraine\", dialCode: \"+380\" },\n { code: \"AE\", name: \"United Arab Emirates\", dialCode: \"+971\" },\n { code: \"GB\", name: \"United Kingdom\", dialCode: \"+44\" },\n { code: \"US\", name: \"United States\", dialCode: \"+1\" },\n { code: \"UZ\", name: \"Uzbekistan\", dialCode: \"+998\" },\n { code: \"VN\", name: \"Vietnam\", dialCode: \"+84\" },\n];\n\nexport function findCountry(code: string): Country {\n return countries.find((country) => country.code === code) ?? defaultCountry;\n}\n","/** ISO 3166-1 alpha-2 country code → flag emoji (cross-platform). */\nexport function countryCodeToFlagEmoji(code: string): string {\n const upper = code.trim().toUpperCase();\n if (upper.length !== 2) return \"\";\n\n return String.fromCodePoint(\n ...upper.split(\"\").map((char) => 0x1f1e6 - 65 + char.charCodeAt(0)),\n );\n}\n","import { useRef, useState, useLayoutEffect, type ComponentRef } from \"react\";\nimport {\n Dimensions,\n Modal,\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport {\n countries,\n defaultCountry,\n findCountry,\n type Country,\n} from \"../data/countries\";\nimport { ChevronDownIcon } from \"../icons/ChevronDownIcon\";\nimport { colors, fontSize, fontWeight, radii, spacing, fonts } from \"../theme/tokens\";\nimport { countryCodeToFlagEmoji } from \"../utils/countryFlag\";\nimport {\n COUNTRY_DROPDOWN_SCROLL_CLASS,\n ensureCountryDropdownScrollStyles,\n} from \"../utils/countryDropdownScrollStyles\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nconst DROPDOWN_GAP = 10;\nconst DROPDOWN_HEIGHT = 186;\nconst DROPDOWN_PADDING = 8;\nconst OPTION_GAP = 10;\nconst OPTION_HEIGHT = 35;\nconst TRIGGER_HEIGHT = 52;\nconst CHEVRON_SIZE = 16;\n\nexport interface CountryCodeSelectorProps {\n value?: string;\n onValueChange?: (countryCode: string) => void;\n /** Country list (defaults to built-in list). */\n options?: Country[];\n disabled?: boolean;\n style?: StyleProp<ViewStyle>;\n className?: string;\n}\n\ntype AnchorLayout = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nfunction resolveDropdownTop(anchor: AnchorLayout): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const topBelow = anchor.y + anchor.height + DROPDOWN_GAP;\n const topAbove = anchor.y - DROPDOWN_GAP - DROPDOWN_HEIGHT;\n const fitsBelow = topBelow + DROPDOWN_HEIGHT <= windowHeight;\n\n if (fitsBelow) return topBelow;\n if (topAbove >= 0) return topAbove;\n\n return Math.max(0, Math.min(topBelow, windowHeight - DROPDOWN_HEIGHT));\n}\n\nexport function CountryCodeSelector({\n value = defaultCountry.code,\n onValueChange,\n options = countries,\n disabled = false,\n style,\n className,\n}: CountryCodeSelectorProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const scrollRef = useRef<ComponentRef<typeof ScrollView>>(null);\n const [open, setOpen] = useState(false);\n const [anchor, setAnchor] = useState<AnchorLayout | null>(null);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(\n scrollRef,\n COUNTRY_DROPDOWN_SCROLL_CLASS,\n open && Boolean(anchor),\n );\n\n useLayoutEffect(() => {\n ensureCountryDropdownScrollStyles();\n }, []);\n\n const selected = findCountry(value);\n const textColor = disabled ? colors.stormGray200 : colors.slateBlue;\n\n function closeDropdown() {\n setOpen(false);\n setAnchor(null);\n }\n\n function handleOpen() {\n if (disabled) return;\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSelect(code: string) {\n onValueChange?.(code);\n closeDropdown();\n }\n\n const dropdownTop = anchor ? resolveDropdownTop(anchor) : 0;\n\n const optionList = options.map((item, index) => {\n const isSelected = item.code === selected.code;\n const isLast = index === options.length - 1;\n return (\n <Pressable\n key={item.code}\n accessibilityRole=\"button\"\n onPress={() => handleSelect(item.code)}\n style={[\n styles.option,\n isSelected && styles.optionSelected,\n !isLast && styles.optionSpacing,\n ]}\n >\n <Text style={styles.flag}>{countryCodeToFlagEmoji(item.code)}</Text>\n <Text style={styles.optionDialCode}>{item.dialCode}</Text>\n </Pressable>\n );\n });\n\n const dropdownList = (\n <ScrollView\n ref={scrollRef}\n style={styles.dropdownScroll}\n contentContainerStyle={styles.dropdownContent}\n keyboardShouldPersistTaps=\"handled\"\n showsVerticalScrollIndicator\n bounces={false}\n nestedScrollEnabled\n >\n {optionList}\n </ScrollView>\n );\n\n return (\n <View ref={wrapperRef} style={[styles.root, style]}>\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n disabled={disabled}\n onPress={handleOpen}\n style={[\n styles.trigger,\n disabled ? styles.triggerDisabled : styles.triggerEnabled,\n Platform.OS === \"web\" ? styles.triggerWeb : null,\n ]}\n >\n <Text style={styles.flag}>{countryCodeToFlagEmoji(selected.code)}</Text>\n <Text style={[styles.dialCode, { color: textColor }]}>{selected.dialCode}</Text>\n <ChevronDownIcon size={CHEVRON_SIZE} color={colors.stormGray100} />\n </Pressable>\n\n <Modal\n visible={open}\n transparent\n animationType=\"fade\"\n onRequestClose={closeDropdown}\n >\n <Pressable style={styles.overlay} onPress={closeDropdown}>\n {anchor ? (\n <View\n style={[\n styles.dropdown,\n {\n top: dropdownTop,\n left: anchor.x,\n width: anchor.width,\n },\n ]}\n >\n {dropdownList}\n </View>\n ) : null}\n </Pressable>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n root: {\n alignSelf: \"flex-start\",\n flexShrink: 0,\n },\n trigger: {\n flexDirection: \"row\",\n alignItems: \"center\",\n alignSelf: \"flex-start\",\n flexGrow: 0,\n flexShrink: 0,\n height: TRIGGER_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n padding: spacing.lg,\n gap: spacing.sm,\n },\n triggerEnabled: {\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n },\n triggerDisabled: {\n borderColor: colors.stormGray50,\n backgroundColor: colors.stormGray50,\n },\n triggerWeb: {\n width: \"max-content\" as ViewStyle[\"width\"],\n },\n flag: {\n fontSize: 18,\n lineHeight: 24,\n },\n dialCode: {\n fontSize: fontSize.md,\n fontWeight: fontWeight.medium,\n lineHeight: 19,\n },\n overlay: {\n flex: 1,\n backgroundColor: \"transparent\",\n },\n dropdown: {\n position: \"absolute\",\n height: DROPDOWN_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: DROPDOWN_PADDING,\n overflow: \"hidden\",\n },\n dropdownScroll: {\n flex: 1,\n },\n dropdownContent: {\n flexGrow: 1,\n },\n option: {\n flexDirection: \"row\",\n alignItems: \"center\",\n height: OPTION_HEIGHT,\n borderRadius: radii.sm,\n padding: spacing.sm,\n gap: spacing.sm,\n },\n optionSpacing: {\n marginBottom: OPTION_GAP,\n },\n optionSelected: {\n backgroundColor: colors.countrySelectorSelectedBg,\n },\n optionDialCode: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: fontSize.md,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.slateBlue,\n },\n});\n","import { useRef, useState, type ComponentRef } from \"react\";\nimport {\n StyleSheet,\n Text,\n TextInput,\n View,\n type NativeSyntheticEvent,\n type StyleProp,\n type TextInputFocusEventData,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { CountryCodeSelector } from \"./CountryCodeSelector\";\nimport { Label } from \"./Label\";\nimport {\n getInputFieldStyles,\n inputFieldMetrics,\n INPUT_ICON_GAP,\n resolveInputVisualState,\n} from \"../theme/input\";\nimport { colors, spacing } from \"../theme/tokens\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport interface PhoneInputProps extends Omit<TextInputProps, \"style\"> {\n label?: string;\n countryCode?: string;\n onCountryCodeChange?: (countryCode: string) => void;\n error?: string;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<TextStyle>;\n className?: string;\n labelClassName?: string;\n /** Styles merged into the field label. */\n labelStyles?: StyleProp<TextStyle>;\n inputClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n}\n\n/** National phone field: digits only (blocks pasted letters/symbols). */\nfunction sanitizePhoneDigits(value: string): string {\n return value.replace(/\\D/g, \"\");\n}\n\nexport function PhoneInput({\n label,\n countryCode,\n onCountryCodeChange,\n error,\n hint,\n containerStyle,\n style,\n className,\n labelClassName,\n labelStyles,\n inputClassName,\n errorClassName,\n hintClassName,\n editable = true,\n onFocus,\n onBlur,\n onChangeText,\n ...props\n}: PhoneInputProps) {\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const inputRef = useRef<ComponentRef<typeof TextInput>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [focused, setFocused] = useState(false);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(inputRef, inputClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n const isDisabled = editable === false;\n const phoneVisualState = resolveInputVisualState({\n focused,\n error: Boolean(error),\n disabled: isDisabled,\n });\n const phoneFieldStyles = getInputFieldStyles(phoneVisualState);\n\n function handleFocus(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(true);\n onFocus?.(event);\n }\n\n function handleBlur(event: NativeSyntheticEvent<TextInputFocusEventData>) {\n setFocused(false);\n onBlur?.(event);\n }\n\n function handleChangeText(value: string) {\n onChangeText?.(sanitizePhoneDigits(value));\n }\n\n const helperMessage = error ?? hint;\n\n return (\n <View ref={wrapperRef} style={[styles.wrapper, containerStyle]}>\n {label ? (\n <Label\n disabled={isDisabled}\n className={labelClassName}\n style={labelStyles}\n >\n {label}\n </Label>\n ) : null}\n <View style={styles.row}>\n <CountryCodeSelector\n value={countryCode}\n onValueChange={onCountryCodeChange}\n disabled={isDisabled}\n style={styles.countrySelector}\n />\n <View style={[phoneFieldStyles.outline, styles.phoneOutline]}>\n <View\n style={[\n inputFieldMetrics.container,\n phoneFieldStyles.container,\n styles.phoneField,\n ]}\n >\n <TextInput\n ref={inputRef}\n style={[\n inputFieldMetrics.input,\n phoneFieldStyles.text,\n style,\n ]}\n keyboardType=\"phone-pad\"\n placeholderTextColor={\n error ? colors.inputError : phoneFieldStyles.placeholder\n }\n editable={editable}\n onFocus={handleFocus}\n onBlur={handleBlur}\n accessibilityState={{ disabled: isDisabled }}\n {...props}\n onChangeText={handleChangeText}\n />\n </View>\n </View>\n </View>\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: \"100%\",\n gap: spacing.sm,\n },\n row: {\n flexDirection: \"row\",\n alignItems: \"flex-start\",\n gap: INPUT_ICON_GAP,\n },\n countrySelector: {\n flexShrink: 0,\n alignSelf: \"flex-start\",\n },\n phoneOutline: {\n flex: 1,\n },\n phoneField: {\n flex: 1,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const CHEVRON_LEFT_PATH = \"M12.5 15L7.5 10L12.5 5\";\nexport const CHEVRON_RIGHT_PATH = \"M7.5 15L12.5 10L7.5 5\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CHEVRON_LEFT_PATH, CHEVRON_RIGHT_PATH } from \"./chevronNavPaths\";\n\ninterface ChevronNavIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\nexport function ChevronLeftIcon({\n size = 20,\n color = \"#151a1e\",\n strokeWidth = 2,\n}: ChevronNavIconProps) {\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\nexport function ChevronRightIcon({\n size = 20,\n color = \"#151a1e\",\n strokeWidth = 2,\n}: ChevronNavIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CHEVRON_RIGHT_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { Dimensions, Platform, StyleSheet, type TextStyle, type ViewStyle } from \"react-native\";\nimport { colors, fonts, fontSize, fontWeight, radii, spacing } from \"./tokens\";\n\nexport const CALENDAR_DROPDOWN_GAP = spacing.sm;\nexport const CALENDAR_PANEL_WIDTH = 296;\nexport const CALENDAR_PANEL_PADDING = spacing.md;\nexport const CALENDAR_PANEL_GAP = spacing.md;\nexport const CALENDAR_CONTENT_WIDTH =\n CALENDAR_PANEL_WIDTH - CALENDAR_PANEL_PADDING * 2;\nexport const CALENDAR_HEADER_HEIGHT = 20;\nexport const CALENDAR_WEEKDAY_CELL_SIZE = 32;\nexport const CALENDAR_WEEKDAY_GAP = spacing.sm;\nexport const CALENDAR_WEEKDAY_RADIUS = 6;\nexport const CALENDAR_DAY_SIZE = CALENDAR_WEEKDAY_CELL_SIZE;\nexport const CALENDAR_DAY_GRID_WIDTH = CALENDAR_CONTENT_WIDTH;\nexport const CALENDAR_DAY_GAP_X = spacing.sm;\nexport const CALENDAR_DAY_GAP_Y = spacing.lg;\nexport const CALENDAR_DAY_ROWS = 6;\nexport const CALENDAR_DAY_GRID_HEIGHT =\n CALENDAR_DAY_SIZE * CALENDAR_DAY_ROWS + CALENDAR_DAY_GAP_Y * (CALENDAR_DAY_ROWS - 1);\nexport const CALENDAR_PICKER_COLUMNS = 3;\nexport const CALENDAR_PICKER_ROWS = 4;\nexport const CALENDAR_YEARS_PER_PAGE = 12;\nexport const CALENDAR_PICKER_CELL_WIDTH =\n (CALENDAR_DAY_GRID_WIDTH - CALENDAR_DAY_GAP_X * (CALENDAR_PICKER_COLUMNS - 1)) /\n CALENDAR_PICKER_COLUMNS;\nexport const CALENDAR_PICKER_CELL_HEIGHT = 36;\nexport const CALENDAR_PICKER_BODY_HEIGHT =\n CALENDAR_WEEKDAY_CELL_SIZE + CALENDAR_WEEKDAY_GAP + CALENDAR_DAY_GRID_HEIGHT;\nexport const CALENDAR_DAY_DOT_SIZE = 3;\nexport const CALENDAR_TODAY_TEXT_COLOR = \"#082640\";\nexport const CALENDAR_TODAY_DOT_COLOR = \"#0033A0\";\nexport const CALENDAR_NAV_ICON_SIZE = 20;\nexport const CALENDAR_NAV_ICON_COLOR = colors.stormGray850;\nexport const CALENDAR_FIELD_ICON_SIZE = 20;\nexport const CALENDAR_FIELD_WIDTH = CALENDAR_PANEL_WIDTH;\nexport const CALENDAR_FIELD_HEIGHT = 52;\nexport const CALENDAR_FIELD_PADDING = spacing.lg;\nexport const CALENDAR_FIELD_GAP = spacing.sm;\nexport const CALENDAR_FIELD_PLACEHOLDER_COLOR = colors.stormGray200;\n\n/** @deprecated Use `CALENDAR_PANEL_WIDTH` */\nexport const CALENDAR_PANEL_MIN_WIDTH = CALENDAR_PANEL_WIDTH;\n\nexport const CALENDAR_PANEL_TOTAL_HEIGHT =\n CALENDAR_PANEL_PADDING * 2 +\n CALENDAR_HEADER_HEIGHT +\n CALENDAR_PANEL_GAP * 2 +\n CALENDAR_WEEKDAY_CELL_SIZE +\n CALENDAR_DAY_GRID_HEIGHT;\nexport const CALENDAR_PANEL_HEIGHT = CALENDAR_PANEL_TOTAL_HEIGHT;\n\nexport const calendarLabelTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.medium,\n lineHeight: 16,\n letterSpacing: 0,\n color: colors.slateBlue,\n} as const;\n\nexport const calendarFieldTypography = {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"left\",\n} as const;\n\nexport const calendarFieldPlaceholderTypography = {\n ...calendarFieldTypography,\n color: CALENDAR_FIELD_PLACEHOLDER_COLOR,\n} as const;\n\nexport const calendarDropdownMetrics = StyleSheet.create({\n panel: {\n width: CALENDAR_PANEL_WIDTH,\n height: CALENDAR_PANEL_HEIGHT,\n borderRadius: radii.lg,\n borderWidth: 1,\n borderColor: colors.stormGray50,\n backgroundColor: colors.white,\n padding: CALENDAR_PANEL_PADDING,\n gap: CALENDAR_PANEL_GAP,\n overflow: \"hidden\",\n flexDirection: \"column\",\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n header: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n height: CALENDAR_HEADER_HEIGHT,\n minHeight: CALENDAR_HEADER_HEIGHT,\n maxHeight: CALENDAR_HEADER_HEIGHT,\n },\n headerTitle: {\n textAlign: \"center\",\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.bold,\n lineHeight: 19,\n letterSpacing: 0,\n color: colors.stormGray850,\n },\n headerTitlePressable: {\n flex: 1,\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: CALENDAR_HEADER_HEIGHT,\n },\n navButton: {\n width: CALENDAR_NAV_ICON_SIZE,\n height: CALENDAR_NAV_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n weekdayRow: {\n flexDirection: \"row\",\n gap: CALENDAR_WEEKDAY_GAP,\n height: CALENDAR_WEEKDAY_CELL_SIZE,\n minHeight: CALENDAR_WEEKDAY_CELL_SIZE,\n maxHeight: CALENDAR_WEEKDAY_CELL_SIZE,\n opacity: 1,\n },\n weekdayCell: {\n width: CALENDAR_WEEKDAY_CELL_SIZE,\n height: CALENDAR_WEEKDAY_CELL_SIZE,\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n padding: spacing.xs,\n backgroundColor: colors.stormGray0,\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n weekdayLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.sm,\n fontWeight: fontWeight.regular,\n lineHeight: 16,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.stormGray300,\n textTransform: \"uppercase\",\n },\n dayGrid: {\n width: CALENDAR_DAY_GRID_WIDTH,\n height: CALENDAR_DAY_GRID_HEIGHT,\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n columnGap: CALENDAR_DAY_GAP_X,\n rowGap: CALENDAR_DAY_GAP_Y,\n alignContent: \"flex-start\",\n opacity: 1,\n },\n dayCell: {\n width: CALENDAR_DAY_SIZE,\n height: CALENDAR_DAY_SIZE,\n minHeight: CALENDAR_DAY_SIZE,\n maxHeight: CALENDAR_DAY_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n padding: spacing.xs,\n backgroundColor: colors.white,\n opacity: 1,\n position: \"relative\",\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n dayCellPast: {\n backgroundColor: colors.stormGray50,\n },\n dayCellSelected: {\n backgroundColor: colors.navy,\n },\n dayLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.navy,\n includeFontPadding: false,\n textAlignVertical: \"center\",\n },\n dayLabelToday: {\n color: CALENDAR_TODAY_TEXT_COLOR,\n },\n dayLabelSelected: {\n fontWeight: fontWeight.semibold,\n color: colors.white,\n },\n dayLabelFuture: {\n color: colors.navy,\n },\n dayLabelMuted: {\n color: colors.stormGray300,\n },\n dayLabelOutsideMonth: {\n color: colors.stormGray300,\n },\n dayLabelDisabled: {\n color: colors.stormGray300,\n opacity: 0.5,\n },\n todayDot: {\n position: \"absolute\",\n bottom: 5,\n left: \"50%\",\n width: CALENDAR_DAY_DOT_SIZE,\n height: CALENDAR_DAY_DOT_SIZE,\n borderRadius: 15,\n backgroundColor: CALENDAR_TODAY_DOT_COLOR,\n marginLeft: -(CALENDAR_DAY_DOT_SIZE / 2),\n zIndex: 1,\n },\n pickerBody: {\n width: CALENDAR_DAY_GRID_WIDTH,\n height: CALENDAR_PICKER_BODY_HEIGHT,\n justifyContent: \"center\",\n },\n pickerGrid: {\n width: CALENDAR_DAY_GRID_WIDTH,\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n columnGap: CALENDAR_DAY_GAP_X,\n rowGap: CALENDAR_DAY_GAP_Y,\n alignContent: \"flex-start\",\n },\n pickerCell: {\n width: CALENDAR_PICKER_CELL_WIDTH,\n minHeight: CALENDAR_PICKER_CELL_HEIGHT,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: CALENDAR_WEEKDAY_RADIUS,\n paddingHorizontal: spacing.xs,\n paddingVertical: spacing.xs,\n backgroundColor: colors.white,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n pickerCellSelected: {\n backgroundColor: colors.navy,\n },\n pickerLabel: {\n fontFamily: fonts.sans,\n fontSize: fontSize.md,\n fontWeight: fontWeight.regular,\n lineHeight: 19,\n letterSpacing: 0,\n textAlign: \"center\",\n color: colors.navy,\n includeFontPadding: false,\n ...(Platform.OS === \"android\" ? { textAlignVertical: \"center\" as const } : null),\n },\n pickerLabelSelected: {\n fontWeight: fontWeight.semibold,\n color: colors.white,\n },\n pickerLabelDisabled: {\n color: colors.stormGray300,\n opacity: 0.5,\n },\n pickerLabelCurrent: {\n color: CALENDAR_TODAY_TEXT_COLOR,\n },\n});\n\nexport function resolveCalendarDropdownTop(\n anchor: { y: number; height: number },\n panelHeight: number = CALENDAR_PANEL_HEIGHT,\n): number {\n const windowHeight = Dimensions.get(\"window\").height;\n const spaceBelow = windowHeight - (anchor.y + anchor.height + CALENDAR_DROPDOWN_GAP);\n const spaceAbove = anchor.y - CALENDAR_DROPDOWN_GAP;\n const topBelow = anchor.y + anchor.height + CALENDAR_DROPDOWN_GAP;\n const topAbove = anchor.y - CALENDAR_DROPDOWN_GAP - panelHeight;\n\n if (spaceBelow >= panelHeight) {\n return topBelow;\n }\n\n if (spaceAbove >= panelHeight) {\n return topAbove;\n }\n\n if (spaceAbove > spaceBelow) {\n return Math.max(0, topAbove);\n }\n\n return Math.max(0, Math.min(topBelow, windowHeight - panelHeight));\n}\n\nexport function resolveCalendarDropdownLeft(\n anchor: { x: number },\n panelWidth: number = CALENDAR_PANEL_WIDTH,\n): number {\n const windowWidth = Dimensions.get(\"window\").width;\n const maxLeft = Math.max(0, windowWidth - panelWidth);\n\n return Math.max(0, Math.min(anchor.x, maxLeft));\n}\n\nexport const calendarFieldMetrics = StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n width: CALENDAR_FIELD_WIDTH,\n minWidth: CALENDAR_FIELD_WIDTH,\n maxWidth: CALENDAR_FIELD_WIDTH,\n height: CALENDAR_FIELD_HEIGHT,\n minHeight: CALENDAR_FIELD_HEIGHT,\n maxHeight: CALENDAR_FIELD_HEIGHT,\n borderRadius: radii.lg,\n padding: CALENDAR_FIELD_PADDING,\n gap: CALENDAR_FIELD_GAP,\n opacity: 1,\n ...(Platform.OS === \"web\"\n ? ({\n boxSizing: \"border-box\",\n } as ViewStyle)\n : null),\n },\n value: {\n flex: 1,\n minWidth: 0,\n ...calendarFieldTypography,\n paddingVertical: 0,\n paddingHorizontal: 0,\n margin: 0,\n ...(Platform.OS === \"android\" ? { includeFontPadding: false } : null),\n ...(Platform.OS === \"web\"\n ? ({\n outlineStyle: \"none\",\n } as TextStyle)\n : null),\n },\n});\n","export function stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport type DateRange = {\n start: Date;\n end?: Date;\n};\n\nexport function normalizeDateRange(range?: DateRange): { start?: Date; end?: Date } {\n if (!range?.start) {\n return {};\n }\n\n const start = stripTime(range.start);\n\n if (!range.end) {\n return { start };\n }\n\n const end = stripTime(range.end);\n\n if (isBeforeDay(end, start)) {\n return { start: end, end: start };\n }\n\n return { start, end };\n}\n\nexport function isInDateRange(date: Date, start?: Date, end?: Date): boolean {\n if (!start) {\n return false;\n }\n\n const day = stripTime(date);\n\n if (!end) {\n return isSameDay(day, start);\n }\n\n return !isBeforeDay(day, start) && !isAfterDay(day, end);\n}\n\nexport function selectRangeDate(clicked: Date, current?: DateRange): DateRange | undefined {\n const clickedDate = stripTime(clicked);\n\n if (!current?.start) {\n return { start: clickedDate };\n }\n\n const start = stripTime(current.start);\n const end = current.end ? stripTime(current.end) : undefined;\n\n if (!end) {\n if (isSameDay(clickedDate, start)) {\n return undefined;\n }\n\n if (isBeforeDay(clickedDate, start)) {\n return { start: clickedDate };\n }\n\n return { start, end: clickedDate };\n }\n\n if (isSameDay(clickedDate, end)) {\n return undefined;\n }\n\n return { start: clickedDate };\n}\n\nexport function isSameDay(left: Date, right: Date): boolean {\n return (\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n );\n}\n\nexport function isBeforeDay(left: Date, right: Date): boolean {\n return stripTime(left).getTime() < stripTime(right).getTime();\n}\n\nexport function isAfterDay(left: Date, right: Date): boolean {\n return stripTime(left).getTime() > stripTime(right).getTime();\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1);\n}\n\nexport function isDateDisabled(\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n): boolean {\n if (minDate && isBeforeDay(date, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(date, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport type CalendarDayCell = {\n date: Date;\n inCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n isPast: boolean;\n isDisabled: boolean;\n};\n\nconst CALENDAR_VISIBLE_DAY_COUNT = 42;\nconst MONDAY_WEEK_START = 1;\n\nexport function buildCalendarDays({\n viewDate,\n selectedDate,\n selectedRange,\n today,\n minDate,\n maxDate,\n}: {\n viewDate: Date;\n selectedDate?: Date;\n selectedRange?: DateRange;\n today: Date;\n minDate?: Date;\n maxDate?: Date;\n}): CalendarDayCell[] {\n const { start: rangeStart, end: rangeEnd } = normalizeDateRange(selectedRange);\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n const startOffset = (firstOfMonth.getDay() - MONDAY_WEEK_START + 7) % 7;\n const gridStart = new Date(year, month, 1 - startOffset);\n const days: CalendarDayCell[] = [];\n\n for (let index = 0; index < CALENDAR_VISIBLE_DAY_COUNT; index += 1) {\n const date = new Date(\n gridStart.getFullYear(),\n gridStart.getMonth(),\n gridStart.getDate() + index,\n );\n const inCurrentMonth = date.getMonth() === month;\n const isPast = inCurrentMonth && isBeforeDay(date, today);\n const isDisabled = isDateDisabled(date, minDate, maxDate);\n const isRangeStart = rangeStart ? isSameDay(date, rangeStart) : false;\n const isRangeEnd = rangeEnd ? isSameDay(date, rangeEnd) : false;\n const inSelectedRange =\n rangeStart && rangeEnd ? isInDateRange(date, rangeStart, rangeEnd) : false;\n const isInRange = inSelectedRange && !isRangeStart && !isRangeEnd;\n const isSelected = selectedDate\n ? isSameDay(date, selectedDate)\n : inSelectedRange || Boolean(rangeStart && !rangeEnd && isRangeStart);\n\n days.push({\n date,\n inCurrentMonth,\n isToday: isSameDay(date, today),\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange,\n isPast,\n isDisabled,\n });\n }\n\n return days;\n}\n\nexport function formatCalendarMonthYear(date: Date, locale: string): string {\n const formatted = new Intl.DateTimeFormat(locale, {\n month: \"short\",\n year: \"numeric\",\n }).format(date);\n\n return formatted.charAt(0).toUpperCase() + formatted.slice(1);\n}\n\nexport function formatCalendarYear(year: number, locale: string): string {\n return new Intl.DateTimeFormat(locale, { year: \"numeric\" }).format(new Date(year, 0, 1));\n}\n\nexport function getMonthLabels(locale: string): string[] {\n return Array.from({ length: 12 }, (_, month) => {\n const label = new Intl.DateTimeFormat(locale, { month: \"short\" }).format(\n new Date(2024, month, 1),\n );\n const normalized = label.replace(/\\./g, \"\");\n\n return normalized.charAt(0).toUpperCase() + normalized.slice(1);\n });\n}\n\nexport function getYearPageStart(year: number, yearsPerPage = 12): number {\n return Math.floor(year / yearsPerPage) * yearsPerPage;\n}\n\nexport function isMonthDisabled(\n year: number,\n month: number,\n minDate?: Date,\n maxDate?: Date,\n): boolean {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n\n if (minDate && isBeforeDay(lastDay, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(firstDay, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport function isYearDisabled(year: number, minDate?: Date, maxDate?: Date): boolean {\n const firstDay = new Date(year, 0, 1);\n const lastDay = new Date(year, 11, 31);\n\n if (minDate && isBeforeDay(lastDay, minDate)) {\n return true;\n }\n\n if (maxDate && isAfterDay(firstDay, maxDate)) {\n return true;\n }\n\n return false;\n}\n\nexport function formatCalendarDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nexport function formatCalendarDateRange(\n range: DateRange,\n locale: string,\n separator = \" – \",\n): string {\n const { start, end } = normalizeDateRange(range);\n\n if (!start) {\n return \"\";\n }\n\n if (!end) {\n return formatCalendarDate(start, locale);\n }\n\n return `${formatCalendarDate(start, locale)}${separator}${formatCalendarDate(end, locale)}`;\n}\n\n/** @deprecated Use `resolveWeekdayLabels` from `calendarLocalization`; calendars are Monday-first. */\nexport function getDefaultWeekdayLabels(locale: string): string[] {\n const labels: string[] = [];\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n\n for (let index = 0; index < 7; index += 1) {\n const day = new Date(2024, 0, index + 1);\n const label = formatter.format(day).replace(/\\./g, \"\").toUpperCase();\n labels.push(label.slice(0, 2));\n }\n\n return labels;\n}\n","export type CalendarLocale = \"hy-AM\" | \"en-US\" | \"ru-RU\";\n\nexport type CalendarTranslationKey =\n | \"datePlaceholder\"\n | \"rangePlaceholder\"\n | \"previousMonth\"\n | \"nextMonth\"\n | \"previousYear\"\n | \"nextYear\"\n | \"previousYears\"\n | \"nextYears\"\n | \"selectMonth\"\n | \"selectYear\"\n | \"closeCalendar\";\n\nexport type CalendarTranslations = Record<CalendarTranslationKey, string> & {\n /** Weekday labels in Monday-first order. */\n weekdays: string[];\n /** Short month labels used in compact calendar headers and month picker cells. */\n monthsShort: string[];\n /** Full month labels available for consumers that need long-form display. */\n monthsLong: string[];\n};\n\nexport const calendarTranslations: Record<CalendarLocale, CalendarTranslations> = {\n \"hy-AM\": {\n weekdays: [\"ԵՐ\", \"ԵՔ\", \"ՉՐ\", \"ՀՆ\", \"ՈՒՐ\", \"ՇԲ\", \"ԿՐ\"],\n monthsShort: [\n \"Հնվ\",\n \"Փտվ\",\n \"Մրտ\",\n \"Ապր\",\n \"Մյս\",\n \"Հուն\",\n \"Հուլ\",\n \"Օգս\",\n \"Սեպ\",\n \"Հոկ\",\n \"Նոյ\",\n \"Դեկ\",\n ],\n monthsLong: [\n \"Հունվար\",\n \"Փետրվար\",\n \"Մարտ\",\n \"Ապրիլ\",\n \"Մայիս\",\n \"Հունիս\",\n \"Հուլիս\",\n \"Օգոստոս\",\n \"Սեպտեմբեր\",\n \"Հոկտեմբեր\",\n \"Նոյեմբեր\",\n \"Դեկտեմբեր\",\n ],\n datePlaceholder: \"Ընտրել ամսաթիվ\",\n rangePlaceholder: \"Ընտրել ժամանակահատված\",\n previousMonth: \"Նախորդ ամիս\",\n nextMonth: \"Հաջորդ ամիս\",\n previousYear: \"Նախորդ տարի\",\n nextYear: \"Հաջորդ տարի\",\n previousYears: \"Նախորդ տարիներ\",\n nextYears: \"Հաջորդ տարիներ\",\n selectMonth: \"Ընտրել ամիս\",\n selectYear: \"Ընտրել տարի\",\n closeCalendar: \"Փակել օրացույցը\",\n },\n \"en-US\": {\n weekdays: [\"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\", \"SU\"],\n monthsShort: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n monthsLong: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n datePlaceholder: \"Select date\",\n rangePlaceholder: \"Select date range\",\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n previousYear: \"Previous year\",\n nextYear: \"Next year\",\n previousYears: \"Previous years\",\n nextYears: \"Next years\",\n selectMonth: \"Select month\",\n selectYear: \"Select year\",\n closeCalendar: \"Close calendar\",\n },\n \"ru-RU\": {\n weekdays: [\"ПН\", \"ВТ\", \"СР\", \"ЧТ\", \"ПТ\", \"СБ\", \"ВС\"],\n monthsShort: [\n \"Янв\",\n \"Фев\",\n \"Мар\",\n \"Апр\",\n \"Май\",\n \"Июн\",\n \"Июл\",\n \"Авг\",\n \"Сен\",\n \"Окт\",\n \"Ноя\",\n \"Дек\",\n ],\n monthsLong: [\n \"Январь\",\n \"Февраль\",\n \"Март\",\n \"Апрель\",\n \"Май\",\n \"Июнь\",\n \"Июль\",\n \"Август\",\n \"Сентябрь\",\n \"Октябрь\",\n \"Ноябрь\",\n \"Декабрь\",\n ],\n datePlaceholder: \"Выбрать дату\",\n rangePlaceholder: \"Выбрать период\",\n previousMonth: \"Предыдущий месяц\",\n nextMonth: \"Следующий месяц\",\n previousYear: \"Предыдущий год\",\n nextYear: \"Следующий год\",\n previousYears: \"Предыдущие годы\",\n nextYears: \"Следующие годы\",\n selectMonth: \"Выбрать месяц\",\n selectYear: \"Выбрать год\",\n closeCalendar: \"Закрыть календарь\",\n },\n};\n\nexport function resolveCalendarLocale(locale: string): CalendarLocale {\n const normalizedLocale = locale.toLowerCase();\n\n if (normalizedLocale.startsWith(\"hy\")) {\n return \"hy-AM\";\n }\n\n if (normalizedLocale.startsWith(\"ru\")) {\n return \"ru-RU\";\n }\n\n return \"en-US\";\n}\n\nexport function getCalendarTranslations(locale: string): CalendarTranslations {\n return calendarTranslations[resolveCalendarLocale(locale)];\n}\n\nexport function resolveWeekdayLabels(locale: string): string[] {\n return getCalendarTranslations(locale).weekdays;\n}\n\nexport function getCalendarMonthLabels(\n locale: string,\n width: \"short\" | \"long\" = \"short\",\n): string[] {\n const translations = getCalendarTranslations(locale);\n\n return width === \"short\" ? translations.monthsShort : translations.monthsLong;\n}\n\nexport function formatLocalizedCalendarMonthYear(date: Date, locale: string): string {\n return `${getCalendarMonthLabels(locale)[date.getMonth()]} ${date.getFullYear()}`;\n}\n","import { createContext, useContext, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport { resolveCalendarLocale, type CalendarLocale } from \"./calendarLocalization\";\n\nconst LOCALE_STORAGE_KEY = \"homepad.locale\";\nconst LOCALE_CHANGE_EVENT = \"homepad:locale-change\";\nconst DEFAULT_CALENDAR_LOCALE: CalendarLocale = \"hy-AM\";\n\nconst CalendarLocaleContext = createContext<string | undefined>(undefined);\n\nexport type CalendarLocaleProviderProps = {\n locale: string;\n children: ReactNode;\n};\n\nexport function CalendarLocaleProvider({ locale, children }: CalendarLocaleProviderProps) {\n return (\n <CalendarLocaleContext.Provider value={locale}>{children}</CalendarLocaleContext.Provider>\n );\n}\n\nfunction normalizeProjectLocale(locale: string | null | undefined): CalendarLocale | null {\n if (!locale) {\n return null;\n }\n\n return resolveCalendarLocale(locale);\n}\n\nfunction readBrowserLocale(): CalendarLocale | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n let storedLocale: CalendarLocale | null = null;\n\n try {\n storedLocale = normalizeProjectLocale(window.localStorage.getItem(LOCALE_STORAGE_KEY));\n } catch {\n storedLocale = null;\n }\n\n if (storedLocale) {\n return storedLocale;\n }\n\n const documentLocale = normalizeProjectLocale(window.document?.documentElement.lang);\n if (documentLocale) {\n return documentLocale;\n }\n\n return normalizeProjectLocale(window.navigator.language);\n}\n\nexport function useCalendarLocale(locale?: string): CalendarLocale {\n const contextLocale = useContext(CalendarLocaleContext);\n const controlledLocale = locale ?? contextLocale;\n const [browserLocale, setBrowserLocale] = useState<CalendarLocale>(() =>\n readBrowserLocale() ?? DEFAULT_CALENDAR_LOCALE,\n );\n\n useEffect(() => {\n if (controlledLocale !== undefined || typeof window === \"undefined\") {\n return;\n }\n\n const syncLocale = () => {\n setBrowserLocale(readBrowserLocale() ?? DEFAULT_CALENDAR_LOCALE);\n };\n\n const handleLocaleChange = (event: Event) => {\n const customEvent = event as CustomEvent<string>;\n const nextLocale = normalizeProjectLocale(customEvent.detail);\n\n if (nextLocale) {\n setBrowserLocale(nextLocale);\n return;\n }\n\n syncLocale();\n };\n\n window.addEventListener(LOCALE_CHANGE_EVENT, handleLocaleChange);\n window.addEventListener(\"storage\", syncLocale);\n\n return () => {\n window.removeEventListener(LOCALE_CHANGE_EVENT, handleLocaleChange);\n window.removeEventListener(\"storage\", syncLocale);\n };\n }, [controlledLocale]);\n\n return useMemo(\n () => normalizeProjectLocale(controlledLocale) ?? browserLocale,\n [browserLocale, controlledLocale],\n );\n}\n","import { useMemo, useRef, useState, type ComponentRef } from \"react\";\nimport { Pressable, Text, View, type StyleProp, type TextStyle, type ViewStyle } from \"react-native\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icons/ChevronNavIcons\";\nimport {\n CALENDAR_NAV_ICON_COLOR,\n CALENDAR_NAV_ICON_SIZE,\n CALENDAR_YEARS_PER_PAGE,\n calendarDropdownMetrics,\n} from \"../theme/calendar\";\nimport {\n addMonths,\n buildCalendarDays,\n formatCalendarYear,\n getYearPageStart,\n isMonthDisabled,\n isSameDay,\n isYearDisabled,\n selectRangeDate,\n type CalendarDayCell,\n type DateRange,\n} from \"../utils/calendarDays\";\nimport {\n formatLocalizedCalendarMonthYear,\n getCalendarMonthLabels,\n getCalendarTranslations,\n resolveWeekdayLabels,\n type CalendarTranslations,\n} from \"../utils/calendarLocalization\";\nimport { useCalendarLocale } from \"../utils/calendarLocaleContext\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\n\nexport type { DateRange };\n\nexport type CalendarLabels = Partial<Pick<CalendarTranslations, CalendarTranslationKey>> & {\n weekdays?: string[];\n formatMonthYear?: (date: Date) => string;\n};\n\ntype CalendarTranslationKey =\n | \"previousMonth\"\n | \"nextMonth\"\n | \"previousYear\"\n | \"nextYear\"\n | \"previousYears\"\n | \"nextYears\"\n | \"selectMonth\"\n | \"selectYear\"\n | \"closeCalendar\";\n\ntype CalendarPickerView = \"days\" | \"months\" | \"years\";\n\ntype CalendarBaseProps = {\n viewDate?: Date;\n defaultViewDate?: Date;\n onViewDateChange?: (date: Date) => void;\n locale?: string;\n labels?: CalendarLabels;\n minDate?: Date;\n maxDate?: Date;\n today?: Date;\n style?: StyleProp<ViewStyle>;\n className?: string;\n};\n\nexport type CalendarSingleProps = CalendarBaseProps & {\n mode?: \"single\";\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n};\n\nexport type CalendarRangeProps = CalendarBaseProps & {\n mode: \"range\";\n value?: DateRange;\n onChange?: (range: DateRange | undefined) => void;\n};\n\nexport type CalendarProps = CalendarSingleProps | CalendarRangeProps;\n\nfunction resolveDayCellStyle(day: CalendarDayCell): StyleProp<ViewStyle> {\n if (day.isDisabled) {\n return [calendarDropdownMetrics.dayCell];\n }\n\n if (day.isSelected) {\n return [calendarDropdownMetrics.dayCell, calendarDropdownMetrics.dayCellSelected];\n }\n\n return [\n calendarDropdownMetrics.dayCell,\n day.inCurrentMonth && day.isPast && !day.isToday\n ? calendarDropdownMetrics.dayCellPast\n : null,\n ];\n}\n\nfunction resolveDayLabelStyle(day: CalendarDayCell): StyleProp<TextStyle> {\n if (day.isDisabled) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelDisabled];\n }\n\n if (day.isSelected) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelSelected];\n }\n\n if (!day.inCurrentMonth) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelOutsideMonth];\n }\n\n if (day.isToday) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelToday];\n }\n\n if (day.isPast) {\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelMuted];\n }\n\n return [calendarDropdownMetrics.dayLabel, calendarDropdownMetrics.dayLabelFuture];\n}\n\nexport function Calendar(props: CalendarProps) {\n const rangeProps = props.mode === \"range\" ? (props as CalendarRangeProps) : null;\n const singleProps = props.mode === \"range\" ? null : (props as CalendarSingleProps);\n const {\n viewDate,\n defaultViewDate,\n onViewDateChange,\n locale,\n labels,\n minDate,\n maxDate,\n today = new Date(),\n style,\n className,\n } = props;\n const rootRef = useRef<ComponentRef<typeof View>>(null);\n const [internalViewDate, setInternalViewDate] = useState(() => {\n if (defaultViewDate) {\n return defaultViewDate;\n }\n\n if (rangeProps) {\n return rangeProps.value?.start ?? today;\n }\n\n return singleProps?.value ?? today;\n });\n const activeViewDate = viewDate ?? internalViewDate;\n const [pickerView, setPickerView] = useState<CalendarPickerView>(\"days\");\n const [pickerYear, setPickerYear] = useState(() => activeViewDate.getFullYear());\n const [yearPageStart, setYearPageStart] = useState(() =>\n getYearPageStart(activeViewDate.getFullYear(), CALENDAR_YEARS_PER_PAGE),\n );\n const customWeekdayLabels = labels?.weekdays;\n const formatMonthYearLabel = labels?.formatMonthYear;\n const resolvedLocale = useCalendarLocale(locale);\n const translations = useMemo(\n () => getCalendarTranslations(resolvedLocale),\n [resolvedLocale],\n );\n\n useApplyWebClassName(rootRef, className);\n\n const weekdayLabels = useMemo(\n () => customWeekdayLabels ?? resolveWeekdayLabels(resolvedLocale),\n [customWeekdayLabels, resolvedLocale],\n );\n\n const monthLabels = useMemo(() => getCalendarMonthLabels(resolvedLocale), [resolvedLocale]);\n\n const monthYearLabel = useMemo(() => {\n if (formatMonthYearLabel) {\n return formatMonthYearLabel(activeViewDate);\n }\n\n return formatLocalizedCalendarMonthYear(activeViewDate, resolvedLocale);\n }, [activeViewDate, formatMonthYearLabel, resolvedLocale]);\n\n const headerLabel = useMemo(() => {\n if (pickerView === \"months\") {\n return formatCalendarYear(pickerYear, resolvedLocale);\n }\n\n if (pickerView === \"years\") {\n const endYear = yearPageStart + CALENDAR_YEARS_PER_PAGE - 1;\n return `${yearPageStart} – ${endYear}`;\n }\n\n return monthYearLabel;\n }, [monthYearLabel, pickerView, pickerYear, resolvedLocale, yearPageStart]);\n\n const days = useMemo(\n () =>\n buildCalendarDays({\n viewDate: activeViewDate,\n selectedDate: singleProps?.value,\n selectedRange: rangeProps?.value,\n today,\n minDate,\n maxDate,\n }),\n [activeViewDate, maxDate, minDate, rangeProps?.value, singleProps?.value, today],\n );\n\n const yearOptions = useMemo(\n () =>\n Array.from({ length: CALENDAR_YEARS_PER_PAGE }, (_, index) => yearPageStart + index),\n [yearPageStart],\n );\n\n function getLabel(key: CalendarTranslationKey): string {\n return labels?.[key] ?? translations[key];\n }\n\n function setViewDate(nextDate: Date) {\n if (viewDate === undefined) {\n setInternalViewDate(nextDate);\n }\n\n onViewDateChange?.(nextDate);\n }\n\n function handlePrevious() {\n if (pickerView === \"months\") {\n setPickerYear((year) => year - 1);\n return;\n }\n\n if (pickerView === \"years\") {\n setYearPageStart((start) => start - CALENDAR_YEARS_PER_PAGE);\n return;\n }\n\n setViewDate(addMonths(activeViewDate, -1));\n }\n\n function handleNext() {\n if (pickerView === \"months\") {\n setPickerYear((year) => year + 1);\n return;\n }\n\n if (pickerView === \"years\") {\n setYearPageStart((start) => start + CALENDAR_YEARS_PER_PAGE);\n return;\n }\n\n setViewDate(addMonths(activeViewDate, 1));\n }\n\n function handleHeaderPress() {\n if (pickerView === \"days\") {\n setPickerYear(activeViewDate.getFullYear());\n setPickerView(\"months\");\n return;\n }\n\n if (pickerView === \"months\") {\n setYearPageStart(getYearPageStart(pickerYear, CALENDAR_YEARS_PER_PAGE));\n setPickerView(\"years\");\n }\n }\n\n function handleMonthSelect(month: number) {\n setViewDate(new Date(pickerYear, month, 1));\n setPickerView(\"days\");\n }\n\n function handleYearSelect(year: number) {\n setPickerYear(year);\n setPickerView(\"months\");\n }\n\n function handleDayPress(date: Date) {\n if (rangeProps) {\n rangeProps.onChange?.(selectRangeDate(date, rangeProps.value));\n return;\n }\n\n const currentValue = singleProps?.value;\n\n if (currentValue && isSameDay(date, currentValue)) {\n singleProps?.onChange?.(undefined);\n return;\n }\n\n singleProps?.onChange?.(date);\n }\n\n const headerIsPressable = pickerView === \"days\" || pickerView === \"months\";\n\n return (\n <View ref={rootRef} style={[calendarDropdownMetrics.panel, style]}>\n <View style={calendarDropdownMetrics.header}>\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"months\"\n ? getLabel(\"previousYear\")\n : pickerView === \"years\"\n ? getLabel(\"previousYears\")\n : getLabel(\"previousMonth\")\n }\n onPress={handlePrevious}\n style={calendarDropdownMetrics.navButton}\n >\n <ChevronLeftIcon size={CALENDAR_NAV_ICON_SIZE} color={CALENDAR_NAV_ICON_COLOR} />\n </Pressable>\n\n {headerIsPressable ? (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"days\" ? getLabel(\"selectMonth\") : getLabel(\"selectYear\")\n }\n onPress={handleHeaderPress}\n style={calendarDropdownMetrics.headerTitlePressable}\n >\n <Text style={calendarDropdownMetrics.headerTitle}>{headerLabel}</Text>\n </Pressable>\n ) : (\n <View style={calendarDropdownMetrics.headerTitlePressable}>\n <Text style={calendarDropdownMetrics.headerTitle}>{headerLabel}</Text>\n </View>\n )}\n\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel={\n pickerView === \"months\"\n ? getLabel(\"nextYear\")\n : pickerView === \"years\"\n ? getLabel(\"nextYears\")\n : getLabel(\"nextMonth\")\n }\n onPress={handleNext}\n style={calendarDropdownMetrics.navButton}\n >\n <ChevronRightIcon size={CALENDAR_NAV_ICON_SIZE} color={CALENDAR_NAV_ICON_COLOR} />\n </Pressable>\n </View>\n\n {pickerView === \"days\" ? (\n <>\n <View style={calendarDropdownMetrics.weekdayRow}>\n {weekdayLabels.map((weekday) => (\n <View key={weekday} style={calendarDropdownMetrics.weekdayCell}>\n <Text style={calendarDropdownMetrics.weekdayLabel}>{weekday}</Text>\n </View>\n ))}\n </View>\n\n <View style={calendarDropdownMetrics.dayGrid}>\n {days.map((day) => (\n <Pressable\n key={day.date.toISOString()}\n accessibilityRole=\"button\"\n accessibilityState={{\n selected: day.isSelected,\n disabled: day.isDisabled,\n }}\n disabled={day.isDisabled}\n onPress={() => handleDayPress(day.date)}\n style={resolveDayCellStyle(day)}\n >\n <Text style={resolveDayLabelStyle(day)}>{day.date.getDate()}</Text>\n {day.isToday && day.inCurrentMonth && !day.isSelected ? (\n <View style={calendarDropdownMetrics.todayDot} />\n ) : null}\n </Pressable>\n ))}\n </View>\n </>\n ) : (\n <View style={calendarDropdownMetrics.pickerBody}>\n <View style={calendarDropdownMetrics.pickerGrid}>\n {pickerView === \"months\"\n ? monthLabels.map((monthLabel, month) => {\n const isSelected =\n activeViewDate.getFullYear() === pickerYear &&\n activeViewDate.getMonth() === month;\n const isCurrent =\n today.getFullYear() === pickerYear && today.getMonth() === month;\n const disabled = isMonthDisabled(pickerYear, month, minDate, maxDate);\n\n return (\n <Pressable\n key={monthLabel}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSelected, disabled }}\n disabled={disabled}\n onPress={() => handleMonthSelect(month)}\n style={[\n calendarDropdownMetrics.pickerCell,\n isSelected ? calendarDropdownMetrics.pickerCellSelected : null,\n ]}\n >\n <Text\n style={[\n calendarDropdownMetrics.pickerLabel,\n isSelected ? calendarDropdownMetrics.pickerLabelSelected : null,\n !isSelected && isCurrent\n ? calendarDropdownMetrics.pickerLabelCurrent\n : null,\n disabled ? calendarDropdownMetrics.pickerLabelDisabled : null,\n ]}\n >\n {monthLabel}\n </Text>\n </Pressable>\n );\n })\n : yearOptions.map((year) => {\n const isSelected = activeViewDate.getFullYear() === year;\n const isCurrent = today.getFullYear() === year;\n const disabled = isYearDisabled(year, minDate, maxDate);\n\n return (\n <Pressable\n key={year}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isSelected, disabled }}\n disabled={disabled}\n onPress={() => handleYearSelect(year)}\n style={[\n calendarDropdownMetrics.pickerCell,\n isSelected ? calendarDropdownMetrics.pickerCellSelected : null,\n ]}\n >\n <Text\n style={[\n calendarDropdownMetrics.pickerLabel,\n isSelected ? calendarDropdownMetrics.pickerLabelSelected : null,\n !isSelected && isCurrent\n ? calendarDropdownMetrics.pickerLabelCurrent\n : null,\n disabled ? calendarDropdownMetrics.pickerLabelDisabled : null,\n ]}\n >\n {year}\n </Text>\n </Pressable>\n );\n })}\n </View>\n </View>\n )}\n </View>\n );\n}\n","export const CALENDAR_ICON_BODY_PATH =\n \"M6.66667 1.6665V4.99984M13.3333 1.6665V4.99984M2.5 8.33317H17.5M4.16667 3.33317H15.8333C16.7538 3.33317 17.5 4.07936 17.5 4.99984V16.6665C17.5 17.587 16.7538 18.3332 15.8333 18.3332H4.16667C3.24619 18.3332 2.5 17.587 2.5 16.6665V4.99984C2.5 4.07936 3.24619 3.33317 4.16667 3.33317Z\";\n","import Svg, { Path } from \"react-native-svg\";\nimport { CALENDAR_ICON_BODY_PATH } from \"./calendarIconPaths\";\n\nexport { CALENDAR_ICON_BODY_PATH } from \"./calendarIconPaths\";\n\ninterface CalendarIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\nexport function CalendarIcon({\n size = 20,\n color = \"#C7CDD1\",\n strokeWidth = 2,\n}: CalendarIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={CALENDAR_ICON_BODY_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n","import { useEffect, useRef, useState, type ComponentRef } from \"react\";\nimport {\n Modal,\n Pressable,\n StyleSheet,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { CalendarIcon } from \"../icons/CalendarIcon\";\nimport {\n CALENDAR_FIELD_ICON_SIZE,\n CALENDAR_FIELD_WIDTH,\n CALENDAR_PANEL_HEIGHT,\n CALENDAR_PANEL_WIDTH,\n calendarFieldMetrics,\n calendarFieldPlaceholderTypography,\n calendarFieldTypography,\n calendarLabelTypography,\n resolveCalendarDropdownLeft,\n resolveCalendarDropdownTop,\n} from \"../theme/calendar\";\nimport { getSelectFieldStyles, resolveInputVisualState, SELECT_LABEL_GAP } from \"../theme/select\";\nimport { colors } from \"../theme/tokens\";\nimport {\n formatCalendarDate,\n formatCalendarDateRange,\n type DateRange,\n} from \"../utils/calendarDays\";\nimport { getCalendarTranslations } from \"../utils/calendarLocalization\";\nimport { useCalendarLocale } from \"../utils/calendarLocaleContext\";\nimport { useApplyWebClassName } from \"../utils/useApplyWebClassName\";\nimport {\n Calendar,\n type CalendarLabels,\n type CalendarRangeProps,\n type CalendarSingleProps,\n} from \"./Calendar\";\nimport { Label } from \"./Label\";\n\nexport type { CalendarLabels, DateRange };\n\ntype DatePickerFieldProps = {\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n invalid?: boolean;\n hint?: string;\n containerStyle?: StyleProp<ViewStyle>;\n className?: string;\n fieldClassName?: string;\n fieldStyle?: StyleProp<ViewStyle>;\n fieldOutlineStyle?: StyleProp<ViewStyle>;\n panelClassName?: string;\n labelClassName?: string;\n errorClassName?: string;\n hintClassName?: string;\n /** Opens the calendar popup on mount (useful for Storybook previews). */\n defaultOpen?: boolean;\n /** Closes the popup after a complete range is selected. Defaults to true in range mode. */\n closeOnRangeComplete?: boolean;\n};\n\nexport type DatePickerSingleProps = Omit<CalendarSingleProps, \"style\" | \"className\"> &\n DatePickerFieldProps & {\n mode?: \"single\";\n formatDate?: (date: Date) => string;\n };\n\nexport type DatePickerRangeProps = Omit<CalendarRangeProps, \"style\" | \"className\"> &\n DatePickerFieldProps & {\n mode: \"range\";\n formatRange?: (range: DateRange) => string;\n rangeSeparator?: string;\n };\n\nexport type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;\n\nexport function DatePicker(props: DatePickerProps) {\n const {\n label,\n placeholder,\n locale,\n labels,\n minDate,\n maxDate,\n today,\n viewDate,\n defaultViewDate,\n onViewDateChange,\n disabled = false,\n error,\n invalid,\n hint,\n containerStyle,\n className,\n fieldClassName,\n fieldStyle,\n fieldOutlineStyle,\n panelClassName,\n labelClassName,\n errorClassName,\n hintClassName,\n defaultOpen = false,\n } = props;\n const mode = props.mode ?? \"single\";\n const closeOnRangeComplete =\n props.mode === \"range\" ? (props.closeOnRangeComplete ?? true) : false;\n const resolvedLocale = useCalendarLocale(locale);\n const translations = getCalendarTranslations(resolvedLocale);\n const resolvedPlaceholder =\n placeholder ?? (mode === \"range\" ? translations.rangePlaceholder : translations.datePlaceholder);\n const wrapperRef = useRef<ComponentRef<typeof View>>(null);\n const triggerRef = useRef<ComponentRef<typeof Pressable>>(null);\n const helperRef = useRef<ComponentRef<typeof Text>>(null);\n const [open, setOpen] = useState(defaultOpen);\n const [anchor, setAnchor] = useState<{\n x: number;\n y: number;\n width: number;\n height: number;\n } | null>(null);\n\n useApplyWebClassName(wrapperRef, className);\n useApplyWebClassName(triggerRef, fieldClassName);\n useApplyWebClassName(helperRef, error ? errorClassName : hintClassName);\n\n useEffect(() => {\n if (!defaultOpen || disabled) {\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n });\n\n return () => cancelAnimationFrame(frame);\n }, [defaultOpen, disabled]);\n\n const hasError = Boolean(error) || Boolean(invalid);\n const fieldStyles = getSelectFieldStyles(\n resolveInputVisualState({\n error: hasError,\n disabled,\n }),\n );\n\n const hasValue =\n mode === \"single\"\n ? Boolean(props.value)\n : Boolean(props.mode === \"range\" && props.value?.start);\n const displayValue = (() => {\n if (props.mode === \"range\") {\n if (!props.value?.start) {\n return resolvedPlaceholder;\n }\n\n return (\n props.formatRange?.(props.value) ??\n formatCalendarDateRange(props.value, resolvedLocale, props.rangeSeparator)\n );\n }\n\n if (props.value) {\n return props.formatDate?.(props.value) ?? formatCalendarDate(props.value, resolvedLocale);\n }\n\n return resolvedPlaceholder;\n })();\n const isPlaceholder = !hasValue;\n const valueTextStyle = isPlaceholder\n ? {\n ...calendarFieldPlaceholderTypography,\n color: disabled ? colors.stormGray300 : calendarFieldPlaceholderTypography.color,\n }\n : {\n ...calendarFieldTypography,\n color: fieldStyles.value.color,\n };\n const helperMessage = error ?? hint;\n const panelWidth = CALENDAR_PANEL_WIDTH;\n const panelLeft = anchor ? resolveCalendarDropdownLeft(anchor, panelWidth) : 0;\n const dropdownTop = anchor ? resolveCalendarDropdownTop(anchor) : 0;\n const resolvedDefaultViewDate =\n defaultViewDate ??\n (props.mode === \"range\" ? props.value?.start : props.value) ??\n today;\n\n function closePicker() {\n setOpen(false);\n setAnchor(null);\n }\n\n function openPicker() {\n if (disabled) {\n return;\n }\n\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height });\n setOpen(true);\n });\n }\n\n function handleSingleSelect(date: Date | undefined) {\n if (props.mode === \"range\") {\n return;\n }\n\n props.onChange?.(date);\n closePicker();\n }\n\n function handleRangeSelect(range: DateRange | undefined) {\n if (props.mode !== \"range\") {\n return;\n }\n\n props.onChange?.(range);\n\n if (closeOnRangeComplete && range?.end) {\n closePicker();\n }\n }\n\n const isFluidField = Boolean(fieldStyle) || Boolean(fieldOutlineStyle);\n\n return (\n <View\n ref={wrapperRef}\n style={[styles.wrapper, isFluidField && styles.wrapperFluid, containerStyle]}\n >\n {label ? (\n <Label disabled={disabled} style={styles.label} className={labelClassName}>\n {label}\n </Label>\n ) : null}\n\n <View\n style={[\n fieldStyles.outline,\n styles.fieldOutline,\n isFluidField && styles.fieldOutlineFluid,\n fieldOutlineStyle,\n ]}\n >\n <Pressable\n ref={triggerRef}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled, expanded: open }}\n disabled={disabled}\n onPress={openPicker}\n style={[\n calendarFieldMetrics.container,\n isFluidField && styles.fieldContainerFluid,\n fieldStyles.container,\n fieldStyle,\n ]}\n >\n <Text\n style={[calendarFieldMetrics.value, valueTextStyle]}\n numberOfLines={1}\n >\n {displayValue}\n </Text>\n <View style={styles.iconSlot}>\n <CalendarIcon\n size={CALENDAR_FIELD_ICON_SIZE}\n color={disabled ? colors.stormGray200 : colors.stormGray150}\n />\n </View>\n </Pressable>\n </View>\n\n {helperMessage ? (\n <Text ref={helperRef} style={error ? styles.error : styles.hint}>\n {helperMessage}\n </Text>\n ) : null}\n\n <Modal visible={open} transparent animationType=\"fade\" onRequestClose={closePicker}>\n <View style={styles.modalRoot}>\n <Pressable\n style={styles.backdrop}\n onPress={closePicker}\n accessibilityRole=\"button\"\n accessibilityLabel={labels?.closeCalendar ?? translations.closeCalendar}\n />\n {anchor ? (\n <View\n style={[\n styles.panelPosition,\n {\n top: dropdownTop,\n left: panelLeft,\n width: panelWidth,\n height: CALENDAR_PANEL_HEIGHT,\n },\n ]}\n >\n {props.mode === \"range\" ? (\n <Calendar\n mode=\"range\"\n value={props.value}\n onChange={handleRangeSelect}\n viewDate={viewDate}\n defaultViewDate={resolvedDefaultViewDate}\n onViewDateChange={onViewDateChange}\n locale={resolvedLocale}\n labels={labels}\n minDate={minDate}\n maxDate={maxDate}\n today={today}\n className={panelClassName}\n />\n ) : (\n <Calendar\n mode=\"single\"\n value={props.value}\n onChange={handleSingleSelect}\n viewDate={viewDate}\n defaultViewDate={resolvedDefaultViewDate}\n onViewDateChange={onViewDateChange}\n locale={resolvedLocale}\n labels={labels}\n minDate={minDate}\n maxDate={maxDate}\n today={today}\n className={panelClassName}\n />\n )}\n </View>\n ) : null}\n </View>\n </Modal>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n wrapper: {\n width: CALENDAR_FIELD_WIDTH,\n maxWidth: \"100%\",\n gap: SELECT_LABEL_GAP,\n },\n wrapperFluid: {\n width: \"100%\",\n },\n fieldOutline: {\n width: CALENDAR_FIELD_WIDTH,\n maxWidth: \"100%\",\n alignSelf: \"flex-start\",\n },\n fieldOutlineFluid: {\n width: \"100%\",\n alignSelf: \"stretch\",\n },\n fieldContainerFluid: {\n width: \"100%\",\n minWidth: 0,\n maxWidth: \"100%\",\n alignSelf: \"stretch\",\n },\n label: {\n ...calendarLabelTypography,\n },\n iconSlot: {\n width: CALENDAR_FIELD_ICON_SIZE,\n height: CALENDAR_FIELD_ICON_SIZE,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n },\n modalRoot: {\n flex: 1,\n },\n backdrop: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: colors.transparent,\n },\n panelPosition: {\n position: \"absolute\",\n zIndex: 1,\n },\n error: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.inputError,\n },\n hint: {\n fontSize: 12,\n lineHeight: 16,\n color: colors.stormGray300,\n },\n});\n","export const LOCK_ICON_PATH =\n \"M5.83333 8.33317V5.83317C5.83333 4.7281 6.27232 3.66829 7.05372 2.88689C7.83512 2.10549 8.89493 1.6665 10 1.6665C11.1051 1.6665 12.1649 2.10549 12.9463 2.88689C13.7277 3.66829 14.1667 4.7281 14.1667 5.83317V8.33317M10.8333 13.3332C10.8333 13.7934 10.4602 14.1665 10 14.1665C9.53976 14.1665 9.16667 13.7934 9.16667 13.3332C9.16667 12.8729 9.53976 12.4998 10 12.4998C10.4602 12.4998 10.8333 12.8729 10.8333 13.3332ZM4.16667 8.33317H15.8333C16.7538 8.33317 17.5 9.07936 17.5 9.99984V16.6665C17.5 17.587 16.7538 18.3332 15.8333 18.3332H4.16667C3.24619 18.3332 2.5 17.587 2.5 16.6665V9.99984C2.5 9.07936 3.24619 8.33317 4.16667 8.33317Z\";\n","import Svg, { Path } from \"react-native-svg\";\n\nimport { LOCK_ICON_PATH } from \"./lockIconPaths\";\n\nexport { LOCK_ICON_PATH } from \"./lockIconPaths\";\n\ninterface LockIconProps {\n size?: number;\n color?: string;\n strokeWidth?: number;\n}\n\n/** Native — react-native-svg (peer dependency). */\nexport function LockIcon({\n size = 20,\n color = \"#c7cdd1\",\n strokeWidth = 2,\n}: LockIconProps) {\n return (\n <Svg width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <Path\n d={LOCK_ICON_PATH}\n stroke={color}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Svg>\n );\n}\n"]}