@nori-ui/core 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/{chunk-7UKRN73P.js → chunk-2XJCLPNH.js} +3 -3
  2. package/dist/{chunk-7UKRN73P.js.map → chunk-2XJCLPNH.js.map} +1 -1
  3. package/dist/{chunk-5PSC5HT4.js → chunk-3B345SQU.js} +5 -5
  4. package/dist/{chunk-5PSC5HT4.js.map → chunk-3B345SQU.js.map} +1 -1
  5. package/dist/{chunk-JSAG5YO7.js → chunk-3IIIHZHT.js} +3 -3
  6. package/dist/{chunk-JSAG5YO7.js.map → chunk-3IIIHZHT.js.map} +1 -1
  7. package/dist/{chunk-DDGMLLS3.js → chunk-3W3XYULK.js} +3 -3
  8. package/dist/{chunk-DDGMLLS3.js.map → chunk-3W3XYULK.js.map} +1 -1
  9. package/dist/{chunk-WYPGQVDV.js → chunk-5YHT252H.js} +3 -3
  10. package/dist/{chunk-WYPGQVDV.js.map → chunk-5YHT252H.js.map} +1 -1
  11. package/dist/{chunk-ZMSIYLSI.js → chunk-7FSFJA33.js} +3 -3
  12. package/dist/{chunk-ZMSIYLSI.js.map → chunk-7FSFJA33.js.map} +1 -1
  13. package/dist/{chunk-YZ27OS2R.js → chunk-C32XGHWO.js} +3 -3
  14. package/dist/{chunk-YZ27OS2R.js.map → chunk-C32XGHWO.js.map} +1 -1
  15. package/dist/{chunk-UJWCEGQY.js → chunk-C5HQPXRI.js} +3 -3
  16. package/dist/{chunk-UJWCEGQY.js.map → chunk-C5HQPXRI.js.map} +1 -1
  17. package/dist/{chunk-XALU6LOT.js → chunk-EN4CLDGZ.js} +3 -3
  18. package/dist/{chunk-XALU6LOT.js.map → chunk-EN4CLDGZ.js.map} +1 -1
  19. package/dist/{chunk-6AD6KCVB.js → chunk-F5UKI7XD.js} +3 -3
  20. package/dist/{chunk-6AD6KCVB.js.map → chunk-F5UKI7XD.js.map} +1 -1
  21. package/dist/chunk-GTAXVTLF.js +43 -0
  22. package/dist/chunk-GTAXVTLF.js.map +1 -0
  23. package/dist/{chunk-NNFJKRXZ.js → chunk-H2LHWJ52.js} +3 -3
  24. package/dist/{chunk-NNFJKRXZ.js.map → chunk-H2LHWJ52.js.map} +1 -1
  25. package/dist/{chunk-PZS4A4VQ.js → chunk-HXCETKCC.js} +3 -3
  26. package/dist/{chunk-PZS4A4VQ.js.map → chunk-HXCETKCC.js.map} +1 -1
  27. package/dist/chunk-IGBXSBF7.js +71 -0
  28. package/dist/chunk-IGBXSBF7.js.map +1 -0
  29. package/dist/{chunk-JXLEMBDB.js → chunk-IIVTPN62.js} +3 -3
  30. package/dist/{chunk-JXLEMBDB.js.map → chunk-IIVTPN62.js.map} +1 -1
  31. package/dist/{chunk-PNP7L4TA.js → chunk-ISCJST4P.js} +3 -3
  32. package/dist/{chunk-PNP7L4TA.js.map → chunk-ISCJST4P.js.map} +1 -1
  33. package/dist/{chunk-TLS54G6Y.js → chunk-IWM2XDXH.js} +3 -3
  34. package/dist/{chunk-TLS54G6Y.js.map → chunk-IWM2XDXH.js.map} +1 -1
  35. package/dist/chunk-J5LK2XHE.js +118 -0
  36. package/dist/chunk-J5LK2XHE.js.map +1 -0
  37. package/dist/chunk-KFFGDET3.js +27 -0
  38. package/dist/chunk-KFFGDET3.js.map +1 -0
  39. package/dist/{chunk-MRJWPRCX.js → chunk-L6VYDM7S.js} +3 -3
  40. package/dist/{chunk-MRJWPRCX.js.map → chunk-L6VYDM7S.js.map} +1 -1
  41. package/dist/chunk-M4BI63P6.js +188 -0
  42. package/dist/chunk-M4BI63P6.js.map +1 -0
  43. package/dist/{chunk-RUWD35UI.js → chunk-MK57AOTI.js} +4 -4
  44. package/dist/{chunk-RUWD35UI.js.map → chunk-MK57AOTI.js.map} +1 -1
  45. package/dist/{chunk-3BDDPFCI.js → chunk-MOAIQHR7.js} +3 -3
  46. package/dist/{chunk-3BDDPFCI.js.map → chunk-MOAIQHR7.js.map} +1 -1
  47. package/dist/{chunk-5XEGZFG5.js → chunk-MYBBBLYE.js} +3 -3
  48. package/dist/{chunk-5XEGZFG5.js.map → chunk-MYBBBLYE.js.map} +1 -1
  49. package/dist/{chunk-WP2Z2ATO.js → chunk-O6M3F7BZ.js} +5 -5
  50. package/dist/{chunk-WP2Z2ATO.js.map → chunk-O6M3F7BZ.js.map} +1 -1
  51. package/dist/{chunk-FEPTH5RV.js → chunk-OELY6K44.js} +3 -3
  52. package/dist/{chunk-FEPTH5RV.js.map → chunk-OELY6K44.js.map} +1 -1
  53. package/dist/{chunk-BZLT6R62.js → chunk-OIHX5B4R.js} +3 -3
  54. package/dist/{chunk-BZLT6R62.js.map → chunk-OIHX5B4R.js.map} +1 -1
  55. package/dist/{chunk-QJVS2VXS.js → chunk-PGYEIXCO.js} +4 -4
  56. package/dist/{chunk-QJVS2VXS.js.map → chunk-PGYEIXCO.js.map} +1 -1
  57. package/dist/{chunk-UZD77M3J.js → chunk-PJTCO76H.js} +3 -3
  58. package/dist/{chunk-UZD77M3J.js.map → chunk-PJTCO76H.js.map} +1 -1
  59. package/dist/{chunk-4PUPKWEP.js → chunk-PJXVLE24.js} +4 -4
  60. package/dist/{chunk-4PUPKWEP.js.map → chunk-PJXVLE24.js.map} +1 -1
  61. package/dist/{chunk-WGT345SV.js → chunk-PLQPBMG2.js} +3 -3
  62. package/dist/{chunk-WGT345SV.js.map → chunk-PLQPBMG2.js.map} +1 -1
  63. package/dist/{chunk-OMU4R4Y5.js → chunk-PQW5LKAI.js} +3 -3
  64. package/dist/{chunk-OMU4R4Y5.js.map → chunk-PQW5LKAI.js.map} +1 -1
  65. package/dist/{chunk-Y5TJ7CAX.js → chunk-RI4Y2C5U.js} +3 -3
  66. package/dist/{chunk-Y5TJ7CAX.js.map → chunk-RI4Y2C5U.js.map} +1 -1
  67. package/dist/{chunk-3OIWAS2P.js → chunk-SF6WPUC5.js} +3 -3
  68. package/dist/{chunk-3OIWAS2P.js.map → chunk-SF6WPUC5.js.map} +1 -1
  69. package/dist/{chunk-MKSDYRWQ.js → chunk-STX5UKYT.js} +3 -3
  70. package/dist/{chunk-MKSDYRWQ.js.map → chunk-STX5UKYT.js.map} +1 -1
  71. package/dist/{chunk-2RL6WCFC.js → chunk-TSWPHJIU.js} +4 -4
  72. package/dist/{chunk-2RL6WCFC.js.map → chunk-TSWPHJIU.js.map} +1 -1
  73. package/dist/{chunk-SFNDR6DI.js → chunk-U2ZKY2CP.js} +3 -3
  74. package/dist/{chunk-SFNDR6DI.js.map → chunk-U2ZKY2CP.js.map} +1 -1
  75. package/dist/{chunk-PABG3IJ6.js → chunk-UKDDK42K.js} +3 -3
  76. package/dist/{chunk-PABG3IJ6.js.map → chunk-UKDDK42K.js.map} +1 -1
  77. package/dist/{chunk-VYRJ7OE5.js → chunk-USFXANEU.js} +3 -3
  78. package/dist/{chunk-VYRJ7OE5.js.map → chunk-USFXANEU.js.map} +1 -1
  79. package/dist/{chunk-CCUXO2HN.js → chunk-V5QSMDZL.js} +3 -3
  80. package/dist/{chunk-CCUXO2HN.js.map → chunk-V5QSMDZL.js.map} +1 -1
  81. package/dist/{chunk-NF7XG2FG.js → chunk-V75O7QQO.js} +3 -3
  82. package/dist/{chunk-NF7XG2FG.js.map → chunk-V75O7QQO.js.map} +1 -1
  83. package/dist/{chunk-NRYWNOG5.js → chunk-VL2WNGPF.js} +3 -3
  84. package/dist/{chunk-NRYWNOG5.js.map → chunk-VL2WNGPF.js.map} +1 -1
  85. package/dist/{chunk-JQQ3FBN7.js → chunk-VLZANXRZ.js} +3 -3
  86. package/dist/{chunk-JQQ3FBN7.js.map → chunk-VLZANXRZ.js.map} +1 -1
  87. package/dist/{chunk-2HMQDJ22.js → chunk-VOF3S5I4.js} +3 -3
  88. package/dist/{chunk-2HMQDJ22.js.map → chunk-VOF3S5I4.js.map} +1 -1
  89. package/dist/chunk-XQNVWHMN.js +60 -0
  90. package/dist/chunk-XQNVWHMN.js.map +1 -0
  91. package/dist/{chunk-JZ774T7U.js → chunk-ZGFXKYA5.js} +3 -3
  92. package/dist/{chunk-JZ774T7U.js.map → chunk-ZGFXKYA5.js.map} +1 -1
  93. package/dist/client.cjs +451 -2
  94. package/dist/client.cjs.map +1 -1
  95. package/dist/client.d.cts +6 -0
  96. package/dist/client.d.ts +6 -0
  97. package/dist/client.js +52 -46
  98. package/dist/client.js.map +1 -1
  99. package/dist/components/Accordion/index.js +2 -2
  100. package/dist/components/Alert/index.js +2 -2
  101. package/dist/components/AlertDialog/index.js +2 -2
  102. package/dist/components/AspectRatio/index.cjs +67 -0
  103. package/dist/components/AspectRatio/index.cjs.map +1 -0
  104. package/dist/components/AspectRatio/index.d.cts +30 -0
  105. package/dist/components/AspectRatio/index.d.ts +30 -0
  106. package/dist/components/AspectRatio/index.js +5 -0
  107. package/dist/components/AspectRatio/index.js.map +1 -0
  108. package/dist/components/Avatar/index.js +2 -2
  109. package/dist/components/Badge/index.js +2 -2
  110. package/dist/components/Box/index.js +4 -4
  111. package/dist/components/Breadcrumb/index.js +3 -3
  112. package/dist/components/Button/index.js +2 -2
  113. package/dist/components/ButtonGroup/index.cjs +83 -0
  114. package/dist/components/ButtonGroup/index.cjs.map +1 -0
  115. package/dist/components/ButtonGroup/index.d.cts +45 -0
  116. package/dist/components/ButtonGroup/index.d.ts +45 -0
  117. package/dist/components/ButtonGroup/index.js +5 -0
  118. package/dist/components/ButtonGroup/index.js.map +1 -0
  119. package/dist/components/Calendar/index.js +3 -3
  120. package/dist/components/Card/index.js +2 -2
  121. package/dist/components/Checkbox/index.js +2 -2
  122. package/dist/components/Collapsible/index.cjs +512 -0
  123. package/dist/components/Collapsible/index.cjs.map +1 -0
  124. package/dist/components/Collapsible/index.d.cts +50 -0
  125. package/dist/components/Collapsible/index.d.ts +50 -0
  126. package/dist/components/Collapsible/index.js +7 -0
  127. package/dist/components/Collapsible/index.js.map +1 -0
  128. package/dist/components/Combobox/index.js +3 -3
  129. package/dist/components/ContextMenu/index.js +4 -4
  130. package/dist/components/DataTable/index.js +3 -3
  131. package/dist/components/DatePicker/index.js +5 -5
  132. package/dist/components/Dialog/index.js +2 -2
  133. package/dist/components/DropdownMenu/index.js +3 -3
  134. package/dist/components/Empty/index.cjs +385 -0
  135. package/dist/components/Empty/index.cjs.map +1 -0
  136. package/dist/components/Empty/index.d.cts +32 -0
  137. package/dist/components/Empty/index.d.ts +32 -0
  138. package/dist/components/Empty/index.js +7 -0
  139. package/dist/components/Empty/index.js.map +1 -0
  140. package/dist/components/FloatButton/index.js +3 -3
  141. package/dist/components/HStack/index.js +4 -4
  142. package/dist/components/InputGroup/index.js +2 -2
  143. package/dist/components/Item/index.cjs +443 -0
  144. package/dist/components/Item/index.cjs.map +1 -0
  145. package/dist/components/Item/index.d.cts +40 -0
  146. package/dist/components/Item/index.d.ts +40 -0
  147. package/dist/components/Item/index.js +7 -0
  148. package/dist/components/Item/index.js.map +1 -0
  149. package/dist/components/Kbd/index.cjs +396 -0
  150. package/dist/components/Kbd/index.cjs.map +1 -0
  151. package/dist/components/Kbd/index.d.cts +22 -0
  152. package/dist/components/Kbd/index.d.ts +22 -0
  153. package/dist/components/Kbd/index.js +7 -0
  154. package/dist/components/Kbd/index.js.map +1 -0
  155. package/dist/components/Pagination/index.js +4 -4
  156. package/dist/components/Popover/index.js +2 -2
  157. package/dist/components/Progress/index.js +2 -2
  158. package/dist/components/Radio/index.js +2 -2
  159. package/dist/components/SegmentedControl/index.js +2 -2
  160. package/dist/components/Select/index.js +2 -2
  161. package/dist/components/Separator/index.js +2 -2
  162. package/dist/components/Sheet/index.js +2 -2
  163. package/dist/components/Skeleton/index.js +2 -2
  164. package/dist/components/Slider/index.js +2 -2
  165. package/dist/components/Switch/index.js +2 -2
  166. package/dist/components/Table/index.js +2 -2
  167. package/dist/components/Tabs/index.js +2 -2
  168. package/dist/components/Text/index.js +2 -2
  169. package/dist/components/TextArea/index.js +3 -3
  170. package/dist/components/TextInput/index.js +2 -2
  171. package/dist/components/Toggle/index.js +2 -2
  172. package/dist/components/Tooltip/index.js +2 -2
  173. package/dist/components/VStack/index.js +4 -4
  174. package/dist/index.cjs +451 -2
  175. package/dist/index.cjs.map +1 -1
  176. package/dist/index.d.cts +6 -0
  177. package/dist/index.d.ts +6 -0
  178. package/dist/index.js +50 -44
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DatePicker/DatePicker.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-WP2Z2ATO.js","sourcesContent":["'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone } from '@internationalized/date';\nimport { useCallback, useState } from 'react';\nimport { Platform, Pressable, Text as RNText, View } from 'react-native';\nimport { useLocale } from '../../i18n/locale';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport type { DateRange } from '../Calendar';\nimport { Calendar } from '../Calendar';\nimport { Popover } from '../Popover';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/** Format a single CalendarDate for display using Intl. */\nfunction formatDate(date: CalendarDate, locale: string): string {\n try {\n return new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(date.toDate(getLocalTimeZone()));\n } catch {\n return `${date.year}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Calendar icon\n// ---------------------------------------------------------------------------\n\nfunction CalendarIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n const colors = useThemeColors();\n\n if (Platform.OS === 'web') {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\" />\n </svg>\n );\n }\n\n const resolvedColor = color === 'currentColor' ? colors.semantic.text.muted : color;\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ fontSize: size, lineHeight: size, color: resolvedColor }}\n >\n {'📅'}\n </RNText>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DatePickerProps = {\n value?: CalendarDate | null;\n defaultValue?: CalendarDate | null;\n onChange?: (date: CalendarDate | null) => void;\n\n /** BCP 47 locale; defaults from NoriProvider's i18n context. */\n locale?: string;\n\n /** Min/max selectable date. */\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n\n /** Custom unavailable predicate. */\n isDateUnavailable?: (date: CalendarDate) => boolean;\n\n /** First day of week override (0=Sun, 1=Mon, ...). Defaults from locale. */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n /** Placeholder text shown when no value. */\n placeholder?: string;\n\n /** Disable the whole picker. */\n disabled?: boolean;\n\n // A11y / Field.Control hook props\n id?: string;\n name?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n\n testID?: string;\n className?: string;\n};\n\nexport type DateRangeValue = { start: CalendarDate | null; end: CalendarDate | null };\n\nexport type DatePickerRangeProps = {\n value?: DateRangeValue;\n defaultValue?: DateRangeValue;\n onChange?: (range: DateRangeValue) => void;\n\n locale?: string;\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n placeholder?: string;\n disabled?: boolean;\n\n id?: string;\n name?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n\n testID?: string;\n className?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Shared Calendar optional props builder\n// ---------------------------------------------------------------------------\n\ntype CalendarOptional = {\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nfunction buildCalendarOptional(\n minValue: CalendarDate | undefined,\n maxValue: CalendarDate | undefined,\n isDateUnavailable: ((date: CalendarDate) => boolean) | undefined,\n firstDayOfWeek: (0 | 1 | 2 | 3 | 4 | 5 | 6) | undefined\n): CalendarOptional {\n const out: CalendarOptional = {};\n if (minValue !== undefined) {\n out.minValue = minValue;\n }\n if (maxValue !== undefined) {\n out.maxValue = maxValue;\n }\n if (isDateUnavailable !== undefined) {\n out.isDateUnavailable = isDateUnavailable;\n }\n if (firstDayOfWeek !== undefined) {\n out.firstDayOfWeek = firstDayOfWeek;\n }\n return out;\n}\n\nfunction buildTriggerAriaProps(ariaProps: {\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n}): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (ariaProps['aria-labelledby'] !== undefined) {\n out['aria-labelledby'] = ariaProps['aria-labelledby'];\n }\n if (ariaProps['aria-describedby'] !== undefined) {\n out['aria-describedby'] = ariaProps['aria-describedby'];\n }\n if (ariaProps['aria-invalid'] !== undefined) {\n out['aria-invalid'] = ariaProps['aria-invalid'];\n }\n if (ariaProps['aria-required'] !== undefined) {\n out['aria-required'] = ariaProps['aria-required'];\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// DatePicker (single)\n//\n// Uses Popover.Trigger + asChild so the Popover correctly sets the trigger\n// ref for web positioning and handles outside-click dismissal.\n// The trigger renders as a Pressable (via Popover.Trigger asChild pattern).\n// ---------------------------------------------------------------------------\n\nconst DatePickerRoot = ({\n value,\n defaultValue,\n onChange,\n locale: localeProp,\n minValue,\n maxValue,\n isDateUnavailable,\n firstDayOfWeek,\n placeholder,\n disabled = false,\n id,\n name: _name,\n className,\n testID,\n ...ariaProps\n}: DatePickerProps) => {\n const providerLocale = useLocale();\n const locale = localeProp ?? providerLocale;\n\n const [open, setOpen] = useState(false);\n\n const isControlled = value !== undefined;\n const [inner, setInner] = useState<CalendarDate | null>(defaultValue ?? null);\n const current = isControlled ? (value ?? null) : inner;\n\n const handleChange = useCallback(\n (date: CalendarDate | null) => {\n if (!isControlled) {\n setInner(date);\n }\n onChange?.(date);\n setOpen(false);\n },\n [isControlled, onChange]\n );\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!disabled) {\n setOpen(next);\n }\n },\n [disabled]\n );\n\n const displayValue = current ? formatDate(current, locale) : null;\n const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);\n const triggerAriaProps = buildTriggerAriaProps(ariaProps);\n\n const colors = useThemeColors();\n const hasError = ariaProps['aria-invalid'] === true || (ariaProps['aria-invalid'] as unknown as string) === 'true';\n\n const pressableStyle = {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n borderWidth: 1,\n borderRadius: px(colors.radius.md),\n paddingHorizontal: px(colors.spacing['3']),\n paddingVertical: px(colors.spacing['2']),\n backgroundColor: colors.semantic.background.elevated,\n borderColor: hasError ? colors.color.danger : colors.semantic.border.default,\n opacity: disabled ? 0.6 : 1,\n };\n\n const textStyle = {\n flex: 1,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted,\n };\n\n // Extra a11y props for the trigger\n const triggerExtraProps: Record<string, unknown> = {\n role: 'combobox',\n accessibilityRole: 'button',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n ...triggerAriaProps,\n };\n if (id !== undefined) {\n triggerExtraProps.id = id;\n triggerExtraProps.nativeID = id;\n }\n if (testID !== undefined) {\n triggerExtraProps.testID = testID;\n }\n if (hasError) {\n triggerExtraProps['aria-invalid'] = true;\n }\n if (ariaProps['aria-required']) {\n triggerExtraProps['aria-required'] = true;\n }\n if (disabled) {\n triggerExtraProps['aria-disabled'] = true;\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <Popover.Trigger asChild={false} className={cn(className)}>\n <Pressable\n onPress={disabled ? undefined : () => setOpen(!open)}\n disabled={disabled}\n className={cn(\n 'flex-row items-center rounded-md border px-3 py-2',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={pressableStyle}\n {...(triggerExtraProps as Record<string, unknown>)}\n >\n <RNText style={textStyle} numberOfLines={1}>\n {displayValue ?? placeholder ?? ''}\n </RNText>\n <View style={{ marginLeft: px(colors.spacing['2']) }}>\n <CalendarIcon size={16} color={colors.semantic.text.muted} />\n </View>\n </Pressable>\n </Popover.Trigger>\n <Popover.Content aria-label=\"Date picker\" side=\"bottom\" align=\"start\">\n <Calendar\n mode=\"single\"\n value={current}\n onChange={(date) => {\n handleChange(date as CalendarDate | null);\n }}\n locale={locale}\n {...calendarOptional}\n />\n </Popover.Content>\n </Popover>\n );\n};\n\n// ---------------------------------------------------------------------------\n// DatePicker.Range\n// ---------------------------------------------------------------------------\n\nconst DatePickerRange = ({\n value,\n defaultValue,\n onChange,\n locale: localeProp,\n minValue,\n maxValue,\n isDateUnavailable,\n firstDayOfWeek,\n placeholder,\n disabled = false,\n id,\n name: _name,\n className,\n testID,\n ...ariaProps\n}: DatePickerRangeProps) => {\n const providerLocale = useLocale();\n const locale = localeProp ?? providerLocale;\n\n const [open, setOpen] = useState(false);\n\n const isControlled = value !== undefined;\n const [inner, setInner] = useState<DateRangeValue>(defaultValue ?? { start: null, end: null });\n const current = isControlled ? (value ?? { start: null, end: null }) : inner;\n\n const calendarValue: DateRange | null = current.start !== null ? { start: current.start, end: current.end } : null;\n\n const handleChange = useCallback(\n (calRange: DateRange | null) => {\n const next: DateRangeValue = {\n start: calRange?.start ?? null,\n end: calRange?.end ?? null,\n };\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n if (next.start !== null && next.end !== null) {\n setOpen(false);\n }\n },\n [isControlled, onChange]\n );\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!disabled) {\n setOpen(next);\n }\n },\n [disabled]\n );\n\n let displayValue: string | null = null;\n if (current.start !== null) {\n const startStr = formatDate(current.start, locale);\n const endStr = current.end !== null ? formatDate(current.end, locale) : '';\n displayValue = `${startStr} – ${endStr}`;\n }\n\n const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);\n const triggerAriaProps = buildTriggerAriaProps(ariaProps);\n\n const colors = useThemeColors();\n const hasError = ariaProps['aria-invalid'] === true || (ariaProps['aria-invalid'] as unknown as string) === 'true';\n\n const pressableStyle = {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n borderWidth: 1,\n borderRadius: px(colors.radius.md),\n paddingHorizontal: px(colors.spacing['3']),\n paddingVertical: px(colors.spacing['2']),\n backgroundColor: colors.semantic.background.elevated,\n borderColor: hasError ? colors.color.danger : colors.semantic.border.default,\n opacity: disabled ? 0.6 : 1,\n };\n\n const textStyle = {\n flex: 1,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted,\n };\n\n const triggerExtraProps: Record<string, unknown> = {\n role: 'combobox',\n accessibilityRole: 'button',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n ...triggerAriaProps,\n };\n if (id !== undefined) {\n triggerExtraProps.id = id;\n triggerExtraProps.nativeID = id;\n }\n if (testID !== undefined) {\n triggerExtraProps.testID = testID;\n }\n if (hasError) {\n triggerExtraProps['aria-invalid'] = true;\n }\n if (ariaProps['aria-required']) {\n triggerExtraProps['aria-required'] = true;\n }\n if (disabled) {\n triggerExtraProps['aria-disabled'] = true;\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <Popover.Trigger asChild={false} className={cn(className)}>\n <Pressable\n onPress={disabled ? undefined : () => setOpen(!open)}\n disabled={disabled}\n className={cn(\n 'flex-row items-center rounded-md border px-3 py-2',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={pressableStyle}\n {...(triggerExtraProps as Record<string, unknown>)}\n >\n <RNText style={textStyle} numberOfLines={1}>\n {displayValue ?? placeholder ?? ''}\n </RNText>\n <View style={{ marginLeft: px(colors.spacing['2']) }}>\n <CalendarIcon size={16} color={colors.semantic.text.muted} />\n </View>\n </Pressable>\n </Popover.Trigger>\n <Popover.Content aria-label=\"Date range picker\" side=\"bottom\" align=\"start\">\n <Calendar\n mode=\"range\"\n value={calendarValue}\n onChange={(range) => {\n handleChange(range as DateRange | null);\n }}\n locale={locale}\n {...calendarOptional}\n />\n </Popover.Content>\n </Popover>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Public export\n// ---------------------------------------------------------------------------\n\nexport const DatePicker = Object.assign(DatePickerRoot, {\n Range: DatePickerRange,\n});\n"]}
1
+ {"version":3,"sources":["../src/components/DatePicker/DatePicker.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-O6M3F7BZ.js","sourcesContent":["'use client';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport { getLocalTimeZone } from '@internationalized/date';\nimport { useCallback, useState } from 'react';\nimport { Platform, Pressable, Text as RNText, View } from 'react-native';\nimport { useLocale } from '../../i18n/locale';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport type { DateRange } from '../Calendar';\nimport { Calendar } from '../Calendar';\nimport { Popover } from '../Popover';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/** Format a single CalendarDate for display using Intl. */\nfunction formatDate(date: CalendarDate, locale: string): string {\n try {\n return new Intl.DateTimeFormat(locale, { dateStyle: 'medium' }).format(date.toDate(getLocalTimeZone()));\n } catch {\n return `${date.year}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Calendar icon\n// ---------------------------------------------------------------------------\n\nfunction CalendarIcon({ size = 16, color = 'currentColor' }: { size?: number; color?: string }) {\n const colors = useThemeColors();\n\n if (Platform.OS === 'web') {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\" />\n </svg>\n );\n }\n\n const resolvedColor = color === 'currentColor' ? colors.semantic.text.muted : color;\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ fontSize: size, lineHeight: size, color: resolvedColor }}\n >\n {'📅'}\n </RNText>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DatePickerProps = {\n value?: CalendarDate | null;\n defaultValue?: CalendarDate | null;\n onChange?: (date: CalendarDate | null) => void;\n\n /** BCP 47 locale; defaults from NoriProvider's i18n context. */\n locale?: string;\n\n /** Min/max selectable date. */\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n\n /** Custom unavailable predicate. */\n isDateUnavailable?: (date: CalendarDate) => boolean;\n\n /** First day of week override (0=Sun, 1=Mon, ...). Defaults from locale. */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n /** Placeholder text shown when no value. */\n placeholder?: string;\n\n /** Disable the whole picker. */\n disabled?: boolean;\n\n // A11y / Field.Control hook props\n id?: string;\n name?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n\n testID?: string;\n className?: string;\n};\n\nexport type DateRangeValue = { start: CalendarDate | null; end: CalendarDate | null };\n\nexport type DatePickerRangeProps = {\n value?: DateRangeValue;\n defaultValue?: DateRangeValue;\n onChange?: (range: DateRangeValue) => void;\n\n locale?: string;\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n placeholder?: string;\n disabled?: boolean;\n\n id?: string;\n name?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n\n testID?: string;\n className?: string;\n};\n\n// ---------------------------------------------------------------------------\n// Shared Calendar optional props builder\n// ---------------------------------------------------------------------------\n\ntype CalendarOptional = {\n minValue?: CalendarDate;\n maxValue?: CalendarDate;\n isDateUnavailable?: (date: CalendarDate) => boolean;\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n};\n\nfunction buildCalendarOptional(\n minValue: CalendarDate | undefined,\n maxValue: CalendarDate | undefined,\n isDateUnavailable: ((date: CalendarDate) => boolean) | undefined,\n firstDayOfWeek: (0 | 1 | 2 | 3 | 4 | 5 | 6) | undefined\n): CalendarOptional {\n const out: CalendarOptional = {};\n if (minValue !== undefined) {\n out.minValue = minValue;\n }\n if (maxValue !== undefined) {\n out.maxValue = maxValue;\n }\n if (isDateUnavailable !== undefined) {\n out.isDateUnavailable = isDateUnavailable;\n }\n if (firstDayOfWeek !== undefined) {\n out.firstDayOfWeek = firstDayOfWeek;\n }\n return out;\n}\n\nfunction buildTriggerAriaProps(ariaProps: {\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-required'?: boolean;\n}): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (ariaProps['aria-labelledby'] !== undefined) {\n out['aria-labelledby'] = ariaProps['aria-labelledby'];\n }\n if (ariaProps['aria-describedby'] !== undefined) {\n out['aria-describedby'] = ariaProps['aria-describedby'];\n }\n if (ariaProps['aria-invalid'] !== undefined) {\n out['aria-invalid'] = ariaProps['aria-invalid'];\n }\n if (ariaProps['aria-required'] !== undefined) {\n out['aria-required'] = ariaProps['aria-required'];\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// DatePicker (single)\n//\n// Uses Popover.Trigger + asChild so the Popover correctly sets the trigger\n// ref for web positioning and handles outside-click dismissal.\n// The trigger renders as a Pressable (via Popover.Trigger asChild pattern).\n// ---------------------------------------------------------------------------\n\nconst DatePickerRoot = ({\n value,\n defaultValue,\n onChange,\n locale: localeProp,\n minValue,\n maxValue,\n isDateUnavailable,\n firstDayOfWeek,\n placeholder,\n disabled = false,\n id,\n name: _name,\n className,\n testID,\n ...ariaProps\n}: DatePickerProps) => {\n const providerLocale = useLocale();\n const locale = localeProp ?? providerLocale;\n\n const [open, setOpen] = useState(false);\n\n const isControlled = value !== undefined;\n const [inner, setInner] = useState<CalendarDate | null>(defaultValue ?? null);\n const current = isControlled ? (value ?? null) : inner;\n\n const handleChange = useCallback(\n (date: CalendarDate | null) => {\n if (!isControlled) {\n setInner(date);\n }\n onChange?.(date);\n setOpen(false);\n },\n [isControlled, onChange]\n );\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!disabled) {\n setOpen(next);\n }\n },\n [disabled]\n );\n\n const displayValue = current ? formatDate(current, locale) : null;\n const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);\n const triggerAriaProps = buildTriggerAriaProps(ariaProps);\n\n const colors = useThemeColors();\n const hasError = ariaProps['aria-invalid'] === true || (ariaProps['aria-invalid'] as unknown as string) === 'true';\n\n const pressableStyle = {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n borderWidth: 1,\n borderRadius: px(colors.radius.md),\n paddingHorizontal: px(colors.spacing['3']),\n paddingVertical: px(colors.spacing['2']),\n backgroundColor: colors.semantic.background.elevated,\n borderColor: hasError ? colors.color.danger : colors.semantic.border.default,\n opacity: disabled ? 0.6 : 1,\n };\n\n const textStyle = {\n flex: 1,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted,\n };\n\n // Extra a11y props for the trigger\n const triggerExtraProps: Record<string, unknown> = {\n role: 'combobox',\n accessibilityRole: 'button',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n ...triggerAriaProps,\n };\n if (id !== undefined) {\n triggerExtraProps.id = id;\n triggerExtraProps.nativeID = id;\n }\n if (testID !== undefined) {\n triggerExtraProps.testID = testID;\n }\n if (hasError) {\n triggerExtraProps['aria-invalid'] = true;\n }\n if (ariaProps['aria-required']) {\n triggerExtraProps['aria-required'] = true;\n }\n if (disabled) {\n triggerExtraProps['aria-disabled'] = true;\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <Popover.Trigger asChild={false} className={cn(className)}>\n <Pressable\n onPress={disabled ? undefined : () => setOpen(!open)}\n disabled={disabled}\n className={cn(\n 'flex-row items-center rounded-md border px-3 py-2',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={pressableStyle}\n {...(triggerExtraProps as Record<string, unknown>)}\n >\n <RNText style={textStyle} numberOfLines={1}>\n {displayValue ?? placeholder ?? ''}\n </RNText>\n <View style={{ marginLeft: px(colors.spacing['2']) }}>\n <CalendarIcon size={16} color={colors.semantic.text.muted} />\n </View>\n </Pressable>\n </Popover.Trigger>\n <Popover.Content aria-label=\"Date picker\" side=\"bottom\" align=\"start\">\n <Calendar\n mode=\"single\"\n value={current}\n onChange={(date) => {\n handleChange(date as CalendarDate | null);\n }}\n locale={locale}\n {...calendarOptional}\n />\n </Popover.Content>\n </Popover>\n );\n};\n\n// ---------------------------------------------------------------------------\n// DatePicker.Range\n// ---------------------------------------------------------------------------\n\nconst DatePickerRange = ({\n value,\n defaultValue,\n onChange,\n locale: localeProp,\n minValue,\n maxValue,\n isDateUnavailable,\n firstDayOfWeek,\n placeholder,\n disabled = false,\n id,\n name: _name,\n className,\n testID,\n ...ariaProps\n}: DatePickerRangeProps) => {\n const providerLocale = useLocale();\n const locale = localeProp ?? providerLocale;\n\n const [open, setOpen] = useState(false);\n\n const isControlled = value !== undefined;\n const [inner, setInner] = useState<DateRangeValue>(defaultValue ?? { start: null, end: null });\n const current = isControlled ? (value ?? { start: null, end: null }) : inner;\n\n const calendarValue: DateRange | null = current.start !== null ? { start: current.start, end: current.end } : null;\n\n const handleChange = useCallback(\n (calRange: DateRange | null) => {\n const next: DateRangeValue = {\n start: calRange?.start ?? null,\n end: calRange?.end ?? null,\n };\n if (!isControlled) {\n setInner(next);\n }\n onChange?.(next);\n if (next.start !== null && next.end !== null) {\n setOpen(false);\n }\n },\n [isControlled, onChange]\n );\n\n const handleOpenChange = useCallback(\n (next: boolean) => {\n if (!disabled) {\n setOpen(next);\n }\n },\n [disabled]\n );\n\n let displayValue: string | null = null;\n if (current.start !== null) {\n const startStr = formatDate(current.start, locale);\n const endStr = current.end !== null ? formatDate(current.end, locale) : '';\n displayValue = `${startStr} – ${endStr}`;\n }\n\n const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);\n const triggerAriaProps = buildTriggerAriaProps(ariaProps);\n\n const colors = useThemeColors();\n const hasError = ariaProps['aria-invalid'] === true || (ariaProps['aria-invalid'] as unknown as string) === 'true';\n\n const pressableStyle = {\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n borderWidth: 1,\n borderRadius: px(colors.radius.md),\n paddingHorizontal: px(colors.spacing['3']),\n paddingVertical: px(colors.spacing['2']),\n backgroundColor: colors.semantic.background.elevated,\n borderColor: hasError ? colors.color.danger : colors.semantic.border.default,\n opacity: disabled ? 0.6 : 1,\n };\n\n const textStyle = {\n flex: 1,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.md),\n color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted,\n };\n\n const triggerExtraProps: Record<string, unknown> = {\n role: 'combobox',\n accessibilityRole: 'button',\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n ...triggerAriaProps,\n };\n if (id !== undefined) {\n triggerExtraProps.id = id;\n triggerExtraProps.nativeID = id;\n }\n if (testID !== undefined) {\n triggerExtraProps.testID = testID;\n }\n if (hasError) {\n triggerExtraProps['aria-invalid'] = true;\n }\n if (ariaProps['aria-required']) {\n triggerExtraProps['aria-required'] = true;\n }\n if (disabled) {\n triggerExtraProps['aria-disabled'] = true;\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <Popover.Trigger asChild={false} className={cn(className)}>\n <Pressable\n onPress={disabled ? undefined : () => setOpen(!open)}\n disabled={disabled}\n className={cn(\n 'flex-row items-center rounded-md border px-3 py-2',\n hasError ? 'border-semantic-interactive-destructive' : 'border-semantic-border-default',\n disabled ? 'opacity-60' : undefined,\n className\n )}\n style={pressableStyle}\n {...(triggerExtraProps as Record<string, unknown>)}\n >\n <RNText style={textStyle} numberOfLines={1}>\n {displayValue ?? placeholder ?? ''}\n </RNText>\n <View style={{ marginLeft: px(colors.spacing['2']) }}>\n <CalendarIcon size={16} color={colors.semantic.text.muted} />\n </View>\n </Pressable>\n </Popover.Trigger>\n <Popover.Content aria-label=\"Date range picker\" side=\"bottom\" align=\"start\">\n <Calendar\n mode=\"range\"\n value={calendarValue}\n onChange={(range) => {\n handleChange(range as DateRange | null);\n }}\n locale={locale}\n {...calendarOptional}\n />\n </Popover.Content>\n </Popover>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Public export\n// ---------------------------------------------------------------------------\n\nexport const DatePicker = Object.assign(DatePickerRoot, {\n Range: DatePickerRange,\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { px } from './chunk-5A2QOOVN.js';
2
- import { cn } from './chunk-CHXHRJNZ.js';
3
2
  import { useThemeColors } from './chunk-R5JMDDCB.js';
3
+ import { cn } from './chunk-CHXHRJNZ.js';
4
4
  import { __name } from './chunk-WCQVDF3K.js';
5
5
  import { useRef, useEffect } from 'react';
6
6
  import { Animated, Easing, View, Text } from 'react-native';
@@ -165,5 +165,5 @@ var Progress = /* @__PURE__ */ __name(({
165
165
  }, "Progress");
166
166
 
167
167
  export { Progress };
168
- //# sourceMappingURL=chunk-FEPTH5RV.js.map
169
- //# sourceMappingURL=chunk-FEPTH5RV.js.map
168
+ //# sourceMappingURL=chunk-OELY6K44.js.map
169
+ //# sourceMappingURL=chunk-OELY6K44.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Progress/Progress.tsx"],"names":["RNText"],"mappings":";;;;;;;;AAmDA,IAAM,OAAA,GAAwC;AAAA,EAC1C,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AAEA,IAAM,yBAAA,GAA4B,IAAA;AAClC,IAAM,iBAAA,GAAoB,EAAA;AAmBnB,IAAM,2BAAW,MAAA,CAAA,CAAC;AAAA,EACrB,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,IAAA,GAAO,SAAA;AAAA,EACP,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,cAAA,GAAiB,KAAA;AAAA,EACjB,SAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACP,CAAA,KAAqB;AACjB,EAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,EAAA,MAAM,SAAA,GAAY,KAAK,YAAY,CAAA;AACnC,EAAA,MAAM,cAAA,GAAiB,KAAK,iBAAiB,CAAA;AAE7C,EAAA,MAAM,kBAAkB,KAAA,KAAU,MAAA;AAClC,EAAA,MAAM,OAAA,GAAU,GAAA,IAAO,CAAA,GAAI,GAAA,GAAM,GAAA;AACjC,EAAA,MAAM,OAAA,GAAU,eAAA,GAAkB,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAC1E,EAAA,MAAM,GAAA,GAAM,eAAA,GAAkB,CAAA,GAAK,OAAA,GAAU,OAAA,GAAW,GAAA;AAExD,EAAA,MAAM,MAAA,GAAS,QAAQ,IAAI,CAAA;AAE3B,EAAA,MAAM,SAAA,GACF,SAAS,SAAA,GACH,MAAA,CAAO,SAAS,WAAA,CAAY,OAAA,GAC5B,IAAA,KAAS,SAAA,GACP,MAAA,CAAO,KAAA,CAAM,UACb,IAAA,KAAS,SAAA,GACP,MAAA,CAAO,KAAA,CAAM,OAAA,GACb,IAAA,KAAS,WACP,MAAA,CAAO,KAAA,CAAM,MAAA,GACb,MAAA,CAAO,KAAA,CAAM,IAAA;AAM7B,EAAA,MAAM,UAAU,MAAA,CAAO,IAAI,SAAS,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,OAAA;AAC9C,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,IAAI,CAAC,eAAA,EAAiB;AAClB,MAAA;AAAA,IACJ;AACA,IAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AAAA,MAClB,QAAA,CAAS,OAAO,OAAA,EAAS;AAAA,QACrB,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,yBAAA;AAAA,QACV,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAAA;AAAA;AAAA,QAGhC,eAAA,EAAiB;AAAA,OACpB;AAAA,KACL;AACA,IAAA,IAAA,CAAK,KAAA,EAAM;AACX,IAAA,OAAO,MAAM;AACT,MAAA,IAAA,CAAK,IAAA,EAAK;AAAA,IACd,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,eAAA,EAAiB,OAAO,CAAC,CAAA;AAE7B,EAAA,MAAM,UAAA,GAAwB;AAAA,IAC1B,KAAA,EAAO,MAAA;AAAA,IACP,MAAA;AAAA,IACA,eAAA,EAAiB,MAAA,CAAO,QAAA,CAAS,UAAA,CAAW,MAAA;AAAA,IAC5C,cAAc,MAAA,GAAS,CAAA;AAAA,IACvB,QAAA,EAAU,QAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACd;AAEA,EAAA,MAAM,oBAAA,GAAkC;AAAA,IACpC,QAAA,EAAU,UAAA;AAAA,IACV,IAAA,EAAM,CAAA;AAAA,IACN,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ,CAAA;AAAA;AAAA;AAAA,IAGR,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,cAAc,MAAA,GAAS;AAAA,GAC3B;AAMA,EAAA,MAAM,0CAA0B,MAAA,CAAA,MAAM;AAClC,IAAA,MAAM,OACF,OAAO,OAAA,CAAQ,WAAA,KAAgB,UAAA,GACzB,QAAQ,WAAA,CAAY;AAAA,MAChB,UAAA,EAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,MACjB,WAAA,EAAa,CAAC,CAAA,CAAA,EAAI,iBAAiB,KAAK,MAAM;AAAA,KACjD,CAAA,GACA,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,CAAA;AAChC,IAAA,OAAO;AAAA,MACH,QAAA,EAAU,UAAA;AAAA,MACV,GAAA,EAAK,CAAA;AAAA,MACL,MAAA,EAAQ,CAAA;AAAA,MACR,IAAA;AAAA,MACA,KAAA,EAAO,GAAG,iBAAiB,CAAA,CAAA,CAAA;AAAA,MAC3B,eAAA,EAAiB,SAAA;AAAA,MACjB,cAAc,MAAA,GAAS;AAAA,KAC3B;AAAA,EACJ,CAAA,EAjBgC,yBAAA,CAAA;AAqBhC,EAAA,MAAM,SAAA,GAAqC;AAAA,IACvC,IAAA,EAAM,aAAA;AAAA,IACN,iBAAA,EAAmB,aAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,eAAA,EAAiB;AAAA,GACrB;AACA,EAAA,IAAI,CAAC,eAAA,EAAiB;AAClB,IAAA,SAAA,CAAU,eAAe,CAAA,GAAI,OAAA;AAC7B,IAAA,SAAA,CAAU,qBAAqB,EAAE,GAAA,EAAK,GAAG,GAAA,EAAK,OAAA,EAAS,KAAK,OAAA,EAAQ;AAAA,EACxE;AACA,EAAA,IAAI,cAAc,MAAA,EAAW;AACzB,IAAA,SAAA,CAAU,YAAY,CAAA,GAAI,SAAA;AAC1B,IAAA,SAAA,CAAU,kBAAA,GAAqB,SAAA;AAAA,EACnC,CAAA,MAAA,IAAW,UAAU,MAAA,EAAW;AAC5B,IAAA,SAAA,CAAU,YAAY,CAAA,GAAI,KAAA;AAC1B,IAAA,SAAA,CAAU,kBAAA,GAAqB,KAAA;AAAA,EACnC;AACA,EAAA,IAAI,mBAAmB,MAAA,EAAW;AAC9B,IAAA,SAAA,CAAU,iBAAiB,CAAA,GAAI,cAAA;AAAA,EACnC;AAEA,EAAA,MAAM,aAAa,KAAA,KAAU,MAAA;AAC7B,EAAA,MAAM,cAAA,GAAiB,UAAA,IAAc,CAAC,cAAA,IAAkB,CAAC,eAAA;AAEzD,EAAA,uBACI,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,GAAI,MAAA,KAAW,MAAA,GAAY,EAAE,MAAA,KAAW,EAAC;AAAA,MAC1C,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,MACjC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,MAEtB,QAAA,EAAA;AAAA,QAAA,UAAA,mBACG,IAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO;AAAA,cACH,aAAA,EAAe,KAAA;AAAA,cACf,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,eAAA;AAAA,cAChB,cAAc,EAAA,CAAG,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAC,CAAA,GAAI;AAAA;AAAA,aAC5C;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAACA,IAAA;AAAA,gBAAA;AAAA,kBACG,KAAA,EAAO;AAAA,oBACH,UAAA,EAAY,OAAO,UAAA,CAAW,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA,CAAG,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA;AAAA,oBAC/B,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK;AAAA,mBAChC;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACL;AAAA,cACC,cAAA,mBACG,IAAA;AAAA,gBAACA,IAAA;AAAA,gBAAA;AAAA,kBACG,KAAA,EAAO;AAAA,oBACH,UAAA,EAAY,OAAO,UAAA,CAAW,IAAA;AAAA,oBAC9B,QAAA,EAAU,EAAA,CAAG,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA;AAAA,oBAC/B,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,KAAA;AAAA;AAAA;AAAA,oBAG5B,WAAA,EAAa,CAAC,cAAc;AAAA,mBAChC;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,oBAAE;AAAA;AAAA;AAAA,eACrB,GACA;AAAA;AAAA;AAAA,SACR,GACA,IAAA;AAAA,4BACH,IAAA,EAAA,EAAM,GAAG,WAAW,KAAA,EAAO,UAAA,EACvB,4CACG,GAAA,CAAC,QAAA,CAAS,MAAT,EAAc,KAAA,EAAO,yBAAwB,EAAG,CAAA,uBAEhD,IAAA,EAAA,EAAK,KAAA,EAAO,sBAAsB,CAAA,EAE3C;AAAA;AAAA;AAAA,GACJ;AAER,CAAA,EAjLwB,UAAA","file":"chunk-FEPTH5RV.js","sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { Animated, Easing, Text as RNText, View, type ViewStyle } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type ProgressTone = 'primary' | 'info' | 'success' | 'warning' | 'danger';\nexport type ProgressSize = 'sm' | 'md' | 'lg';\n\nexport type ProgressProps = {\n /**\n * Current progress value (`0..max`). Omit to render the indeterminate\n * marquee variant (use this when you don't know how long the work\n * will take, e.g. an initial load before headers come back).\n */\n value?: number;\n /** Upper bound for `value`. @defaultValue 100 */\n max?: number;\n /**\n * Color of the fill / shuttle. `primary` follows the theme's interactive\n * color (matches buttons + sliders); the rest map to semantic status colors.\n * @defaultValue 'primary'\n */\n tone?: ProgressTone;\n /**\n * Bar height — `sm` 4px, `md` 8px (default), `lg` 12px. The track is\n * always pill-shaped (border-radius = height/2).\n * @defaultValue 'md'\n */\n size?: ProgressSize;\n /**\n * Optional label rendered above the bar. When set, also enables a\n * percentage readout on the right side for determinate progress.\n */\n label?: string;\n /**\n * Hide the auto-rendered percentage when a `label` is provided. Useful\n * when the label itself already conveys the number (e.g. \"Step 3 of 5\").\n * @defaultValue false\n */\n hidePercentage?: boolean;\n /** Accessibility label when no visible `label` is provided. */\n 'aria-label'?: string;\n /** Reference to a labeling element by id. */\n 'aria-labelledby'?: string;\n className?: string;\n testID?: string;\n};\n\nconst SIZE_PX: Record<ProgressSize, number> = {\n sm: 4,\n md: 8,\n lg: 12,\n};\n\nconst INDETERMINATE_DURATION_MS = 1500;\nconst SHUTTLE_WIDTH_PCT = 30;\n\n/**\n * Linear progress indicator. Use the determinate form (`value` set) to\n * communicate \"we're 42% done\"; use the indeterminate form (`value`\n * omitted) for \"we're working, no ETA\". The track is always pill-shaped\n * and the fill animates smoothly between renders for the determinate\n * variant — keep updates throttled to ~10/s in the parent to avoid\n * jitter.\n *\n * Cross-platform: built on `View` + `Animated.View` so it renders\n * identically on web (rn-web) and native. Uses `useThemeColors()` to\n * pick up dark-mode flips automatically.\n *\n * Accessibility: maps to `role=\"progressbar\"` with `aria-valuemin`,\n * `aria-valuemax`, and (for determinate) `aria-valuenow`. Provide an\n * `aria-label`, `aria-labelledby`, or visible `label` so the bar is\n * named.\n */\nexport const Progress = ({\n value,\n max = 100,\n tone = 'primary',\n size = 'md',\n label,\n hidePercentage = false,\n className,\n testID,\n ...rest\n}: ProgressProps) => {\n const colors = useThemeColors();\n const ariaLabel = rest['aria-label'];\n const ariaLabelledBy = rest['aria-labelledby'];\n\n const isIndeterminate = value === undefined;\n const safeMax = max <= 0 ? 100 : max;\n const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value));\n const pct = isIndeterminate ? 0 : (clamped / safeMax) * 100;\n\n const height = SIZE_PX[size];\n\n const fillColor =\n tone === 'primary'\n ? colors.semantic.interactive.primary\n : tone === 'success'\n ? colors.color.success\n : tone === 'warning'\n ? colors.color.warning\n : tone === 'danger'\n ? colors.color.danger\n : colors.color.info;\n\n // Indeterminate marquee — a 30%-wide shuttle that slides from -30% to\n // 100% on a continuous loop. Driven by `Animated.Value` (0..1) which we\n // interpolate to a percent string for `left`. ease-in-out keeps the\n // motion subtle so the bar never feels frantic.\n const shuttle = useRef(new Animated.Value(0)).current;\n useEffect(() => {\n if (!isIndeterminate) {\n return;\n }\n const loop = Animated.loop(\n Animated.timing(shuttle, {\n toValue: 1,\n duration: INDETERMINATE_DURATION_MS,\n easing: Easing.inOut(Easing.ease),\n // We animate `left` (a layout property), so the native driver\n // can't be used. Web (rn-web) ignores `useNativeDriver`.\n useNativeDriver: false,\n })\n );\n loop.start();\n return () => {\n loop.stop();\n };\n }, [isIndeterminate, shuttle]);\n\n const trackStyle: ViewStyle = {\n width: '100%',\n height,\n backgroundColor: colors.semantic.background.subtle,\n borderRadius: height / 2,\n overflow: 'hidden',\n position: 'relative',\n };\n\n const determinateFillStyle: ViewStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n // Cast at the boundary — RN's typed DimensionValue is narrower than\n // the percentage strings rn-web actually accepts.\n width: `${pct}%` as unknown as number,\n backgroundColor: fillColor,\n borderRadius: height / 2,\n };\n\n // Build the indeterminate style only when needed — `Animated.Value.interpolate`\n // returns an animated node that RN reads at render; we keep the call inside\n // the branch so determinate renders never hit it (and so test envs that\n // stub `Animated.Value` don't choke on a missing `interpolate`).\n const buildIndeterminateStyle = () => {\n const left =\n typeof shuttle.interpolate === 'function'\n ? shuttle.interpolate({\n inputRange: [0, 1],\n outputRange: [`-${SHUTTLE_WIDTH_PCT}%`, '100%'],\n })\n : (`-${SHUTTLE_WIDTH_PCT}%` as unknown as number);\n return {\n position: 'absolute' as const,\n top: 0,\n bottom: 0,\n left: left as unknown as number,\n width: `${SHUTTLE_WIDTH_PCT}%` as unknown as number,\n backgroundColor: fillColor,\n borderRadius: height / 2,\n };\n };\n\n // ARIA: only emit aria-valuenow when determinate so AT announces\n // \"in progress\" rather than \"0%\" while indeterminate.\n const ariaProps: Record<string, unknown> = {\n role: 'progressbar',\n accessibilityRole: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': safeMax,\n };\n if (!isIndeterminate) {\n ariaProps['aria-valuenow'] = clamped;\n ariaProps.accessibilityValue = { min: 0, max: safeMax, now: clamped };\n }\n if (ariaLabel !== undefined) {\n ariaProps['aria-label'] = ariaLabel;\n ariaProps.accessibilityLabel = ariaLabel;\n } else if (label !== undefined) {\n ariaProps['aria-label'] = label;\n ariaProps.accessibilityLabel = label;\n }\n if (ariaLabelledBy !== undefined) {\n ariaProps['aria-labelledby'] = ariaLabelledBy;\n }\n\n const showHeader = label !== undefined;\n const showPercentage = showHeader && !hidePercentage && !isIndeterminate;\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n className={cn('w-full', className)}\n style={{ width: '100%' }}\n >\n {showHeader ? (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: px(colors.spacing['2']) - 2, // closest to legacy 6\n }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {label}\n </RNText>\n {showPercentage ? (\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n // Tabular numerals keep the percentage from\n // jittering as digits change width.\n fontVariant: ['tabular-nums'],\n }}\n >\n {Math.round(pct)}%\n </RNText>\n ) : null}\n </View>\n ) : null}\n <View {...ariaProps} style={trackStyle}>\n {isIndeterminate ? (\n <Animated.View style={buildIndeterminateStyle()} />\n ) : (\n <View style={determinateFillStyle} />\n )}\n </View>\n </View>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Progress/Progress.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-OELY6K44.js","sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { Animated, Easing, Text as RNText, View, type ViewStyle } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type ProgressTone = 'primary' | 'info' | 'success' | 'warning' | 'danger';\nexport type ProgressSize = 'sm' | 'md' | 'lg';\n\nexport type ProgressProps = {\n /**\n * Current progress value (`0..max`). Omit to render the indeterminate\n * marquee variant (use this when you don't know how long the work\n * will take, e.g. an initial load before headers come back).\n */\n value?: number;\n /** Upper bound for `value`. @defaultValue 100 */\n max?: number;\n /**\n * Color of the fill / shuttle. `primary` follows the theme's interactive\n * color (matches buttons + sliders); the rest map to semantic status colors.\n * @defaultValue 'primary'\n */\n tone?: ProgressTone;\n /**\n * Bar height — `sm` 4px, `md` 8px (default), `lg` 12px. The track is\n * always pill-shaped (border-radius = height/2).\n * @defaultValue 'md'\n */\n size?: ProgressSize;\n /**\n * Optional label rendered above the bar. When set, also enables a\n * percentage readout on the right side for determinate progress.\n */\n label?: string;\n /**\n * Hide the auto-rendered percentage when a `label` is provided. Useful\n * when the label itself already conveys the number (e.g. \"Step 3 of 5\").\n * @defaultValue false\n */\n hidePercentage?: boolean;\n /** Accessibility label when no visible `label` is provided. */\n 'aria-label'?: string;\n /** Reference to a labeling element by id. */\n 'aria-labelledby'?: string;\n className?: string;\n testID?: string;\n};\n\nconst SIZE_PX: Record<ProgressSize, number> = {\n sm: 4,\n md: 8,\n lg: 12,\n};\n\nconst INDETERMINATE_DURATION_MS = 1500;\nconst SHUTTLE_WIDTH_PCT = 30;\n\n/**\n * Linear progress indicator. Use the determinate form (`value` set) to\n * communicate \"we're 42% done\"; use the indeterminate form (`value`\n * omitted) for \"we're working, no ETA\". The track is always pill-shaped\n * and the fill animates smoothly between renders for the determinate\n * variant — keep updates throttled to ~10/s in the parent to avoid\n * jitter.\n *\n * Cross-platform: built on `View` + `Animated.View` so it renders\n * identically on web (rn-web) and native. Uses `useThemeColors()` to\n * pick up dark-mode flips automatically.\n *\n * Accessibility: maps to `role=\"progressbar\"` with `aria-valuemin`,\n * `aria-valuemax`, and (for determinate) `aria-valuenow`. Provide an\n * `aria-label`, `aria-labelledby`, or visible `label` so the bar is\n * named.\n */\nexport const Progress = ({\n value,\n max = 100,\n tone = 'primary',\n size = 'md',\n label,\n hidePercentage = false,\n className,\n testID,\n ...rest\n}: ProgressProps) => {\n const colors = useThemeColors();\n const ariaLabel = rest['aria-label'];\n const ariaLabelledBy = rest['aria-labelledby'];\n\n const isIndeterminate = value === undefined;\n const safeMax = max <= 0 ? 100 : max;\n const clamped = isIndeterminate ? 0 : Math.min(safeMax, Math.max(0, value));\n const pct = isIndeterminate ? 0 : (clamped / safeMax) * 100;\n\n const height = SIZE_PX[size];\n\n const fillColor =\n tone === 'primary'\n ? colors.semantic.interactive.primary\n : tone === 'success'\n ? colors.color.success\n : tone === 'warning'\n ? colors.color.warning\n : tone === 'danger'\n ? colors.color.danger\n : colors.color.info;\n\n // Indeterminate marquee — a 30%-wide shuttle that slides from -30% to\n // 100% on a continuous loop. Driven by `Animated.Value` (0..1) which we\n // interpolate to a percent string for `left`. ease-in-out keeps the\n // motion subtle so the bar never feels frantic.\n const shuttle = useRef(new Animated.Value(0)).current;\n useEffect(() => {\n if (!isIndeterminate) {\n return;\n }\n const loop = Animated.loop(\n Animated.timing(shuttle, {\n toValue: 1,\n duration: INDETERMINATE_DURATION_MS,\n easing: Easing.inOut(Easing.ease),\n // We animate `left` (a layout property), so the native driver\n // can't be used. Web (rn-web) ignores `useNativeDriver`.\n useNativeDriver: false,\n })\n );\n loop.start();\n return () => {\n loop.stop();\n };\n }, [isIndeterminate, shuttle]);\n\n const trackStyle: ViewStyle = {\n width: '100%',\n height,\n backgroundColor: colors.semantic.background.subtle,\n borderRadius: height / 2,\n overflow: 'hidden',\n position: 'relative',\n };\n\n const determinateFillStyle: ViewStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n // Cast at the boundary — RN's typed DimensionValue is narrower than\n // the percentage strings rn-web actually accepts.\n width: `${pct}%` as unknown as number,\n backgroundColor: fillColor,\n borderRadius: height / 2,\n };\n\n // Build the indeterminate style only when needed — `Animated.Value.interpolate`\n // returns an animated node that RN reads at render; we keep the call inside\n // the branch so determinate renders never hit it (and so test envs that\n // stub `Animated.Value` don't choke on a missing `interpolate`).\n const buildIndeterminateStyle = () => {\n const left =\n typeof shuttle.interpolate === 'function'\n ? shuttle.interpolate({\n inputRange: [0, 1],\n outputRange: [`-${SHUTTLE_WIDTH_PCT}%`, '100%'],\n })\n : (`-${SHUTTLE_WIDTH_PCT}%` as unknown as number);\n return {\n position: 'absolute' as const,\n top: 0,\n bottom: 0,\n left: left as unknown as number,\n width: `${SHUTTLE_WIDTH_PCT}%` as unknown as number,\n backgroundColor: fillColor,\n borderRadius: height / 2,\n };\n };\n\n // ARIA: only emit aria-valuenow when determinate so AT announces\n // \"in progress\" rather than \"0%\" while indeterminate.\n const ariaProps: Record<string, unknown> = {\n role: 'progressbar',\n accessibilityRole: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': safeMax,\n };\n if (!isIndeterminate) {\n ariaProps['aria-valuenow'] = clamped;\n ariaProps.accessibilityValue = { min: 0, max: safeMax, now: clamped };\n }\n if (ariaLabel !== undefined) {\n ariaProps['aria-label'] = ariaLabel;\n ariaProps.accessibilityLabel = ariaLabel;\n } else if (label !== undefined) {\n ariaProps['aria-label'] = label;\n ariaProps.accessibilityLabel = label;\n }\n if (ariaLabelledBy !== undefined) {\n ariaProps['aria-labelledby'] = ariaLabelledBy;\n }\n\n const showHeader = label !== undefined;\n const showPercentage = showHeader && !hidePercentage && !isIndeterminate;\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n className={cn('w-full', className)}\n style={{ width: '100%' }}\n >\n {showHeader ? (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: px(colors.spacing['2']) - 2, // closest to legacy 6\n }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {label}\n </RNText>\n {showPercentage ? (\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n // Tabular numerals keep the percentage from\n // jittering as digits change width.\n fontVariant: ['tabular-nums'],\n }}\n >\n {Math.round(pct)}%\n </RNText>\n ) : null}\n </View>\n ) : null}\n <View {...ariaProps} style={trackStyle}>\n {isIndeterminate ? (\n <Animated.View style={buildIndeterminateStyle()} />\n ) : (\n <View style={determinateFillStyle} />\n )}\n </View>\n </View>\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { wrapStringChildren } from './chunk-JQQ3FBN7.js';
1
+ import { wrapStringChildren } from './chunk-VLZANXRZ.js';
2
2
  import { cn } from './chunk-CHXHRJNZ.js';
3
3
  import { __name } from './chunk-WCQVDF3K.js';
4
4
  import { View } from 'react-native';
@@ -76,5 +76,5 @@ var HStack = /* @__PURE__ */ __name(({ gap, align, justify, className, children,
76
76
  }, "HStack");
77
77
 
78
78
  export { HStack };
79
- //# sourceMappingURL=chunk-BZLT6R62.js.map
80
- //# sourceMappingURL=chunk-BZLT6R62.js.map
79
+ //# sourceMappingURL=chunk-OIHX5B4R.js.map
80
+ //# sourceMappingURL=chunk-OIHX5B4R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/HStack/HStack.tsx"],"names":[],"mappings":";;;;;;AAiBA,IAAM,WAAA,GAA0C;AAAA,EAC5C,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAA8C;AAAA,EAChD,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAEA,IAAM,WAAA,GAA2D;AAAA,EAC7D,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAAmE;AAAA,EACrE,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAOA,IAAM,MAAA,GAAmC;AAAA,EACrC,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AAUO,IAAM,MAAA,mBAAS,MAAA,CAAA,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,GAAG,IAAA,EAAK,KAAmB;AACjG,EAAA,MAAM,MAAA,GAAoB,EAAE,aAAA,EAAe,KAAA,EAAM;AACjD,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,EAAG;AAChC,IAAA,MAAA,CAAO,GAAA,GAAM,OAAO,GAAG,CAAA;AAAA,EAC3B;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACrB,IAAA,MAAA,CAAO,UAAA,GAAa,YAAY,KAAK,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAY,MAAA,EAAW;AACvB,IAAA,MAAA,CAAO,cAAA,GAAiB,cAAc,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,MAAM,SAAS,KAAA,KAAU,MAAA,GAAY,MAAA,GAAU,CAAC,QAAQ,KAAK,CAAA;AAC7D,EAAA,uBACI,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,QACP,UAAA;AAAA,QACA,QAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,GAAI,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,GAAK,MAAA;AAAA,QAChD,KAAA,KAAU,MAAA,GAAY,WAAA,CAAY,KAAK,CAAA,GAAI,MAAA;AAAA,QAC3C,OAAA,KAAY,MAAA,GAAY,aAAA,CAAc,OAAO,CAAA,GAAI,MAAA;AAAA,QACjD;AAAA,OACJ;AAAA,MAEC,6BAAmB,QAAQ;AAAA;AAAA,GAChC;AAER,CAAA,EA3BsB,QAAA","file":"chunk-BZLT6R62.js","sourcesContent":["import type { ViewProps, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\nimport { wrapStringChildren } from '../../utils/wrap-string-children';\n\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type HStackProps = ViewProps & {\n gap?: StackGap;\n align?: StackAlign;\n justify?: StackJustify;\n className?: string;\n testID?: string;\n};\n\nconst ALIGN_CLASS: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst JUSTIFY_CLASS: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\nconst ALIGN_STYLE: Record<StackAlign, ViewStyle['alignItems']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst JUSTIFY_STYLE: Record<StackJustify, ViewStyle['justifyContent']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\n// Tailwind spacing scale → RN px. Mirrors the `gap-{n}` class output but\n// drives RN's native `gap` style, which Yoga supports directly. Inline\n// `gap` is more reliable than NativeWind's className path on native —\n// css-interop sometimes fails to apply gap classes through the static\n// extraction pipeline, leaving stacks with zero spacing.\nconst GAP_PX: Record<StackGap, number> = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n};\n\n/**\n * Horizontal flex layout primitive. RSC-safe.\n *\n * Layout (`flexDirection`, `gap`, `alignItems`, `justifyContent`) is set\n * via inline style — NativeWind's className path doesn't reliably apply\n * these on native. The matching Tailwind classes are still emitted so\n * web tooling and consumers extending the className keep working.\n */\nexport const HStack = ({ gap, align, justify, className, children, style, ...rest }: HStackProps) => {\n const inline: ViewStyle = { flexDirection: 'row' };\n if (gap !== undefined && gap !== 0) {\n inline.gap = GAP_PX[gap];\n }\n if (align !== undefined) {\n inline.alignItems = ALIGN_STYLE[align];\n }\n if (justify !== undefined) {\n inline.justifyContent = JUSTIFY_STYLE[justify];\n }\n const merged = style === undefined ? inline : ([inline, style] as ViewStyle[]);\n return (\n <View\n {...rest}\n style={merged}\n className={cn(\n 'flex-row',\n gap !== undefined && gap !== 0 ? `gap-${gap}` : undefined,\n align !== undefined ? ALIGN_CLASS[align] : undefined,\n justify !== undefined ? JUSTIFY_CLASS[justify] : undefined,\n className\n )}\n >\n {wrapStringChildren(children)}\n </View>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/HStack/HStack.tsx"],"names":[],"mappings":";;;;;;AAiBA,IAAM,WAAA,GAA0C;AAAA,EAC5C,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAA8C;AAAA,EAChD,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,GAAA,EAAK,aAAA;AAAA,EACL,OAAA,EAAS,iBAAA;AAAA,EACT,MAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAEA,IAAM,WAAA,GAA2D;AAAA,EAC7D,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA,EACT,QAAA,EAAU;AACd,CAAA;AAEA,IAAM,aAAA,GAAmE;AAAA,EACrE,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ;AACZ,CAAA;AAOA,IAAM,MAAA,GAAmC;AAAA,EACrC,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,CAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACR,CAAA;AAUO,IAAM,MAAA,mBAAS,MAAA,CAAA,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,GAAG,IAAA,EAAK,KAAmB;AACjG,EAAA,MAAM,MAAA,GAAoB,EAAE,aAAA,EAAe,KAAA,EAAM;AACjD,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,EAAG;AAChC,IAAA,MAAA,CAAO,GAAA,GAAM,OAAO,GAAG,CAAA;AAAA,EAC3B;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACrB,IAAA,MAAA,CAAO,UAAA,GAAa,YAAY,KAAK,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,YAAY,MAAA,EAAW;AACvB,IAAA,MAAA,CAAO,cAAA,GAAiB,cAAc,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,MAAM,SAAS,KAAA,KAAU,MAAA,GAAY,MAAA,GAAU,CAAC,QAAQ,KAAK,CAAA;AAC7D,EAAA,uBACI,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACI,GAAG,IAAA;AAAA,MACJ,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,EAAA;AAAA,QACP,UAAA;AAAA,QACA,QAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,GAAI,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,GAAK,MAAA;AAAA,QAChD,KAAA,KAAU,MAAA,GAAY,WAAA,CAAY,KAAK,CAAA,GAAI,MAAA;AAAA,QAC3C,OAAA,KAAY,MAAA,GAAY,aAAA,CAAc,OAAO,CAAA,GAAI,MAAA;AAAA,QACjD;AAAA,OACJ;AAAA,MAEC,6BAAmB,QAAQ;AAAA;AAAA,GAChC;AAER,CAAA,EA3BsB,QAAA","file":"chunk-OIHX5B4R.js","sourcesContent":["import type { ViewProps, ViewStyle } from 'react-native';\nimport { View } from 'react-native';\nimport { cn } from '../../utils/cn';\nimport { wrapStringChildren } from '../../utils/wrap-string-children';\n\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12;\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type HStackProps = ViewProps & {\n gap?: StackGap;\n align?: StackAlign;\n justify?: StackJustify;\n className?: string;\n testID?: string;\n};\n\nconst ALIGN_CLASS: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst JUSTIFY_CLASS: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\nconst ALIGN_STYLE: Record<StackAlign, ViewStyle['alignItems']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst JUSTIFY_STYLE: Record<StackJustify, ViewStyle['justifyContent']> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\n// Tailwind spacing scale → RN px. Mirrors the `gap-{n}` class output but\n// drives RN's native `gap` style, which Yoga supports directly. Inline\n// `gap` is more reliable than NativeWind's className path on native —\n// css-interop sometimes fails to apply gap classes through the static\n// extraction pipeline, leaving stacks with zero spacing.\nconst GAP_PX: Record<StackGap, number> = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n};\n\n/**\n * Horizontal flex layout primitive. RSC-safe.\n *\n * Layout (`flexDirection`, `gap`, `alignItems`, `justifyContent`) is set\n * via inline style — NativeWind's className path doesn't reliably apply\n * these on native. The matching Tailwind classes are still emitted so\n * web tooling and consumers extending the className keep working.\n */\nexport const HStack = ({ gap, align, justify, className, children, style, ...rest }: HStackProps) => {\n const inline: ViewStyle = { flexDirection: 'row' };\n if (gap !== undefined && gap !== 0) {\n inline.gap = GAP_PX[gap];\n }\n if (align !== undefined) {\n inline.alignItems = ALIGN_STYLE[align];\n }\n if (justify !== undefined) {\n inline.justifyContent = JUSTIFY_STYLE[justify];\n }\n const merged = style === undefined ? inline : ([inline, style] as ViewStyle[]);\n return (\n <View\n {...rest}\n style={merged}\n className={cn(\n 'flex-row',\n gap !== undefined && gap !== 0 ? `gap-${gap}` : undefined,\n align !== undefined ? ALIGN_CLASS[align] : undefined,\n justify !== undefined ? JUSTIFY_CLASS[justify] : undefined,\n className\n )}\n >\n {wrapStringChildren(children)}\n </View>\n );\n};\n"]}
@@ -1,9 +1,9 @@
1
+ import { Popover } from './chunk-HXCETKCC.js';
1
2
  import { useTranslation } from './chunk-GJMHNEQ3.js';
2
- import { Popover } from './chunk-PZS4A4VQ.js';
3
3
  import { Slot } from './chunk-ZIBNLXIV.js';
4
4
  import { px } from './chunk-5A2QOOVN.js';
5
- import { cn } from './chunk-CHXHRJNZ.js';
6
5
  import { useThemeColors } from './chunk-R5JMDDCB.js';
6
+ import { cn } from './chunk-CHXHRJNZ.js';
7
7
  import { __name } from './chunk-WCQVDF3K.js';
8
8
  import { createContext, isValidElement, useState, useRef, useCallback, useMemo, useEffect, Children, Fragment, useContext } from 'react';
9
9
  import { Platform, View, Text, Pressable, ScrollView } from 'react-native';
@@ -1102,5 +1102,5 @@ var Breadcrumb = Object.assign(BreadcrumbRoot, {
1102
1102
  });
1103
1103
 
1104
1104
  export { Breadcrumb, getBreadcrumbJsonLd };
1105
- //# sourceMappingURL=chunk-QJVS2VXS.js.map
1106
- //# sourceMappingURL=chunk-QJVS2VXS.js.map
1105
+ //# sourceMappingURL=chunk-PGYEIXCO.js.map
1106
+ //# sourceMappingURL=chunk-PGYEIXCO.js.map