@nori-ui/core 1.5.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 (228) hide show
  1. package/dist/Table.shared-BymRgTnY.d.cts +54 -0
  2. package/dist/Table.shared-BymRgTnY.d.ts +54 -0
  3. package/dist/{chunk-7UKRN73P.js → chunk-2XJCLPNH.js} +3 -3
  4. package/dist/{chunk-7UKRN73P.js.map → chunk-2XJCLPNH.js.map} +1 -1
  5. package/dist/{chunk-76FZF4GM.js → chunk-3B345SQU.js} +8 -125
  6. package/dist/chunk-3B345SQU.js.map +1 -0
  7. package/dist/{chunk-WOF67PKT.js → chunk-3CEJ5TB4.js} +3 -3
  8. package/dist/{chunk-WOF67PKT.js.map → chunk-3CEJ5TB4.js.map} +1 -1
  9. package/dist/{chunk-JSAG5YO7.js → chunk-3IIIHZHT.js} +3 -3
  10. package/dist/{chunk-JSAG5YO7.js.map → chunk-3IIIHZHT.js.map} +1 -1
  11. package/dist/{chunk-46OT4PA6.js → chunk-3W3XYULK.js} +3 -3
  12. package/dist/{chunk-46OT4PA6.js.map → chunk-3W3XYULK.js.map} +1 -1
  13. package/dist/{chunk-6PO2IWB3.js → chunk-4UFAZLSZ.js} +5 -3
  14. package/dist/chunk-4UFAZLSZ.js.map +1 -0
  15. package/dist/chunk-5YHT252H.js +145 -0
  16. package/dist/chunk-5YHT252H.js.map +1 -0
  17. package/dist/chunk-73CUV7MW.js +125 -0
  18. package/dist/chunk-73CUV7MW.js.map +1 -0
  19. package/dist/{chunk-ZMSIYLSI.js → chunk-7FSFJA33.js} +3 -3
  20. package/dist/{chunk-ZMSIYLSI.js.map → chunk-7FSFJA33.js.map} +1 -1
  21. package/dist/chunk-C32XGHWO.js +202 -0
  22. package/dist/chunk-C32XGHWO.js.map +1 -0
  23. package/dist/{chunk-UUXWRDWW.js → chunk-C5HQPXRI.js} +3 -3
  24. package/dist/{chunk-UUXWRDWW.js.map → chunk-C5HQPXRI.js.map} +1 -1
  25. package/dist/{chunk-2UXKXUX2.js → chunk-CPIKN4BX.js} +3 -3
  26. package/dist/{chunk-2UXKXUX2.js.map → chunk-CPIKN4BX.js.map} +1 -1
  27. package/dist/{chunk-GELLSU64.js → chunk-EN4CLDGZ.js} +3 -3
  28. package/dist/{chunk-GELLSU64.js.map → chunk-EN4CLDGZ.js.map} +1 -1
  29. package/dist/{chunk-WAKKQROH.js → chunk-F5UKI7XD.js} +3 -3
  30. package/dist/{chunk-WAKKQROH.js.map → chunk-F5UKI7XD.js.map} +1 -1
  31. package/dist/{chunk-MJ4AGXS7.js → chunk-GJMHNEQ3.js} +3 -3
  32. package/dist/{chunk-MJ4AGXS7.js.map → chunk-GJMHNEQ3.js.map} +1 -1
  33. package/dist/chunk-GTAXVTLF.js +43 -0
  34. package/dist/chunk-GTAXVTLF.js.map +1 -0
  35. package/dist/{chunk-WTNDPO2V.js → chunk-H2LHWJ52.js} +3 -3
  36. package/dist/{chunk-WTNDPO2V.js.map → chunk-H2LHWJ52.js.map} +1 -1
  37. package/dist/{chunk-L5X4SYJ4.js → chunk-HXCETKCC.js} +3 -3
  38. package/dist/{chunk-L5X4SYJ4.js.map → chunk-HXCETKCC.js.map} +1 -1
  39. package/dist/chunk-IGBXSBF7.js +71 -0
  40. package/dist/chunk-IGBXSBF7.js.map +1 -0
  41. package/dist/{chunk-O4NMS3KB.js → chunk-IIVTPN62.js} +3 -3
  42. package/dist/{chunk-O4NMS3KB.js.map → chunk-IIVTPN62.js.map} +1 -1
  43. package/dist/{chunk-RM5TSXVE.js → chunk-ISCJST4P.js} +3 -3
  44. package/dist/{chunk-RM5TSXVE.js.map → chunk-ISCJST4P.js.map} +1 -1
  45. package/dist/{chunk-UF5OENHV.js → chunk-IWM2XDXH.js} +3 -3
  46. package/dist/{chunk-UF5OENHV.js.map → chunk-IWM2XDXH.js.map} +1 -1
  47. package/dist/chunk-J5LK2XHE.js +118 -0
  48. package/dist/chunk-J5LK2XHE.js.map +1 -0
  49. package/dist/chunk-KFFGDET3.js +27 -0
  50. package/dist/chunk-KFFGDET3.js.map +1 -0
  51. package/dist/{chunk-AFQIK6JI.js → chunk-L6VYDM7S.js} +3 -3
  52. package/dist/{chunk-AFQIK6JI.js.map → chunk-L6VYDM7S.js.map} +1 -1
  53. package/dist/chunk-M4BI63P6.js +188 -0
  54. package/dist/chunk-M4BI63P6.js.map +1 -0
  55. package/dist/{chunk-H7MFAFV4.js → chunk-MK57AOTI.js} +4 -4
  56. package/dist/{chunk-H7MFAFV4.js.map → chunk-MK57AOTI.js.map} +1 -1
  57. package/dist/{chunk-FDBQOQMW.js → chunk-MOAIQHR7.js} +3 -3
  58. package/dist/{chunk-FDBQOQMW.js.map → chunk-MOAIQHR7.js.map} +1 -1
  59. package/dist/{chunk-LWQZ257T.js → chunk-MYBBBLYE.js} +3 -3
  60. package/dist/{chunk-LWQZ257T.js.map → chunk-MYBBBLYE.js.map} +1 -1
  61. package/dist/{chunk-F7G6R373.js → chunk-O6M3F7BZ.js} +5 -5
  62. package/dist/{chunk-F7G6R373.js.map → chunk-O6M3F7BZ.js.map} +1 -1
  63. package/dist/{chunk-XP55RZ3D.js → chunk-OELY6K44.js} +3 -3
  64. package/dist/{chunk-XP55RZ3D.js.map → chunk-OELY6K44.js.map} +1 -1
  65. package/dist/{chunk-GRDVE3IR.js → chunk-OIHX5B4R.js} +3 -3
  66. package/dist/{chunk-GRDVE3IR.js.map → chunk-OIHX5B4R.js.map} +1 -1
  67. package/dist/{chunk-4I37QSEM.js → chunk-PGYEIXCO.js} +5 -5
  68. package/dist/{chunk-4I37QSEM.js.map → chunk-PGYEIXCO.js.map} +1 -1
  69. package/dist/{chunk-UJ5KFRDE.js → chunk-PJTCO76H.js} +3 -3
  70. package/dist/{chunk-UJ5KFRDE.js.map → chunk-PJTCO76H.js.map} +1 -1
  71. package/dist/{chunk-6JVUVBZH.js → chunk-PJXVLE24.js} +5 -5
  72. package/dist/{chunk-6JVUVBZH.js.map → chunk-PJXVLE24.js.map} +1 -1
  73. package/dist/{chunk-IGLMPAWE.js → chunk-PLQPBMG2.js} +3 -3
  74. package/dist/{chunk-IGLMPAWE.js.map → chunk-PLQPBMG2.js.map} +1 -1
  75. package/dist/{chunk-HTF6FDB6.js → chunk-PQW5LKAI.js} +3 -3
  76. package/dist/{chunk-HTF6FDB6.js.map → chunk-PQW5LKAI.js.map} +1 -1
  77. package/dist/{chunk-VMAGFYHG.js → chunk-RI4Y2C5U.js} +3 -3
  78. package/dist/{chunk-VMAGFYHG.js.map → chunk-RI4Y2C5U.js.map} +1 -1
  79. package/dist/{chunk-BNDUQNG7.js → chunk-SF6WPUC5.js} +3 -3
  80. package/dist/{chunk-BNDUQNG7.js.map → chunk-SF6WPUC5.js.map} +1 -1
  81. package/dist/{chunk-SINLREQV.js → chunk-STX5UKYT.js} +3 -3
  82. package/dist/{chunk-SINLREQV.js.map → chunk-STX5UKYT.js.map} +1 -1
  83. package/dist/{chunk-KCLWPSV5.js → chunk-TSWPHJIU.js} +4 -4
  84. package/dist/{chunk-KCLWPSV5.js.map → chunk-TSWPHJIU.js.map} +1 -1
  85. package/dist/{chunk-5BM6H2CD.js → chunk-U2ZKY2CP.js} +3 -3
  86. package/dist/{chunk-5BM6H2CD.js.map → chunk-U2ZKY2CP.js.map} +1 -1
  87. package/dist/{chunk-C6TRLHMW.js → chunk-UKDDK42K.js} +3 -3
  88. package/dist/{chunk-C6TRLHMW.js.map → chunk-UKDDK42K.js.map} +1 -1
  89. package/dist/{chunk-UPVNZPFV.js → chunk-USFXANEU.js} +3 -3
  90. package/dist/{chunk-UPVNZPFV.js.map → chunk-USFXANEU.js.map} +1 -1
  91. package/dist/{chunk-Y4ZRSW35.js → chunk-V5QSMDZL.js} +3 -3
  92. package/dist/{chunk-Y4ZRSW35.js.map → chunk-V5QSMDZL.js.map} +1 -1
  93. package/dist/{chunk-EFK7726V.js → chunk-V75O7QQO.js} +3 -3
  94. package/dist/{chunk-EFK7726V.js.map → chunk-V75O7QQO.js.map} +1 -1
  95. package/dist/{chunk-CGQIVFCN.js → chunk-VL2WNGPF.js} +3 -3
  96. package/dist/{chunk-CGQIVFCN.js.map → chunk-VL2WNGPF.js.map} +1 -1
  97. package/dist/{chunk-VCJF75T2.js → chunk-VLZANXRZ.js} +3 -3
  98. package/dist/{chunk-VCJF75T2.js.map → chunk-VLZANXRZ.js.map} +1 -1
  99. package/dist/{chunk-ND7MRYW7.js → chunk-VOF3S5I4.js} +4 -4
  100. package/dist/{chunk-ND7MRYW7.js.map → chunk-VOF3S5I4.js.map} +1 -1
  101. package/dist/chunk-VP7DRJUZ.js +3 -0
  102. package/dist/chunk-VP7DRJUZ.js.map +1 -0
  103. package/dist/chunk-XQNVWHMN.js +60 -0
  104. package/dist/chunk-XQNVWHMN.js.map +1 -0
  105. package/dist/{chunk-W3HMOOON.js → chunk-ZGFXKYA5.js} +3 -3
  106. package/dist/{chunk-W3HMOOON.js.map → chunk-ZGFXKYA5.js.map} +1 -1
  107. package/dist/client.cjs +935 -156
  108. package/dist/client.cjs.map +1 -1
  109. package/dist/client.d.cts +9 -0
  110. package/dist/client.d.ts +9 -0
  111. package/dist/client.js +57 -47
  112. package/dist/client.js.map +1 -1
  113. package/dist/components/Accordion/index.js +2 -2
  114. package/dist/components/Alert/index.js +2 -2
  115. package/dist/components/AlertDialog/index.js +2 -2
  116. package/dist/components/AspectRatio/index.cjs +67 -0
  117. package/dist/components/AspectRatio/index.cjs.map +1 -0
  118. package/dist/components/AspectRatio/index.d.cts +30 -0
  119. package/dist/components/AspectRatio/index.d.ts +30 -0
  120. package/dist/components/AspectRatio/index.js +5 -0
  121. package/dist/components/AspectRatio/index.js.map +1 -0
  122. package/dist/components/Avatar/index.js +2 -2
  123. package/dist/components/Badge/index.js +2 -2
  124. package/dist/components/Box/index.js +4 -4
  125. package/dist/components/Breadcrumb/index.cjs +3 -1
  126. package/dist/components/Breadcrumb/index.cjs.map +1 -1
  127. package/dist/components/Breadcrumb/index.js +5 -5
  128. package/dist/components/Button/index.js +2 -2
  129. package/dist/components/ButtonGroup/index.cjs +83 -0
  130. package/dist/components/ButtonGroup/index.cjs.map +1 -0
  131. package/dist/components/ButtonGroup/index.d.cts +45 -0
  132. package/dist/components/ButtonGroup/index.d.ts +45 -0
  133. package/dist/components/ButtonGroup/index.js +5 -0
  134. package/dist/components/ButtonGroup/index.js.map +1 -0
  135. package/dist/components/Calendar/index.cjs +3 -1
  136. package/dist/components/Calendar/index.cjs.map +1 -1
  137. package/dist/components/Calendar/index.js +5 -5
  138. package/dist/components/Card/index.js +2 -2
  139. package/dist/components/Checkbox/index.js +2 -2
  140. package/dist/components/Collapsible/index.cjs +512 -0
  141. package/dist/components/Collapsible/index.cjs.map +1 -0
  142. package/dist/components/Collapsible/index.d.cts +50 -0
  143. package/dist/components/Collapsible/index.d.ts +50 -0
  144. package/dist/components/Collapsible/index.js +7 -0
  145. package/dist/components/Collapsible/index.js.map +1 -0
  146. package/dist/components/Combobox/index.js +3 -3
  147. package/dist/components/ContextMenu/index.js +4 -4
  148. package/dist/components/DataTable/index.cjs +770 -0
  149. package/dist/components/DataTable/index.cjs.map +1 -0
  150. package/dist/components/DataTable/index.d.cts +53 -0
  151. package/dist/components/DataTable/index.d.ts +53 -0
  152. package/dist/components/DataTable/index.js +8 -0
  153. package/dist/components/DataTable/index.js.map +1 -0
  154. package/dist/components/DatePicker/index.cjs +3 -1
  155. package/dist/components/DatePicker/index.cjs.map +1 -1
  156. package/dist/components/DatePicker/index.js +7 -7
  157. package/dist/components/Dialog/index.js +2 -2
  158. package/dist/components/DropdownMenu/index.js +3 -3
  159. package/dist/components/Empty/index.cjs +385 -0
  160. package/dist/components/Empty/index.cjs.map +1 -0
  161. package/dist/components/Empty/index.d.cts +32 -0
  162. package/dist/components/Empty/index.d.ts +32 -0
  163. package/dist/components/Empty/index.js +7 -0
  164. package/dist/components/Empty/index.js.map +1 -0
  165. package/dist/components/Field/index.cjs +3 -1
  166. package/dist/components/Field/index.cjs.map +1 -1
  167. package/dist/components/Field/index.d.cts +2 -2
  168. package/dist/components/Field/index.d.ts +2 -2
  169. package/dist/components/Field/index.js +3 -3
  170. package/dist/components/FloatButton/index.cjs +3 -1
  171. package/dist/components/FloatButton/index.cjs.map +1 -1
  172. package/dist/components/FloatButton/index.js +5 -5
  173. package/dist/components/HStack/index.js +4 -4
  174. package/dist/components/InputGroup/index.js +2 -2
  175. package/dist/components/Item/index.cjs +443 -0
  176. package/dist/components/Item/index.cjs.map +1 -0
  177. package/dist/components/Item/index.d.cts +40 -0
  178. package/dist/components/Item/index.d.ts +40 -0
  179. package/dist/components/Item/index.js +7 -0
  180. package/dist/components/Item/index.js.map +1 -0
  181. package/dist/components/Kbd/index.cjs +396 -0
  182. package/dist/components/Kbd/index.cjs.map +1 -0
  183. package/dist/components/Kbd/index.d.cts +22 -0
  184. package/dist/components/Kbd/index.d.ts +22 -0
  185. package/dist/components/Kbd/index.js +7 -0
  186. package/dist/components/Kbd/index.js.map +1 -0
  187. package/dist/components/Label/index.cjs +3 -1
  188. package/dist/components/Label/index.cjs.map +1 -1
  189. package/dist/components/Label/index.js +3 -3
  190. package/dist/components/Pagination/index.cjs +3 -1
  191. package/dist/components/Pagination/index.cjs.map +1 -1
  192. package/dist/components/Pagination/index.js +6 -5
  193. package/dist/components/Popover/index.js +2 -2
  194. package/dist/components/Progress/index.js +2 -2
  195. package/dist/components/Radio/index.js +2 -2
  196. package/dist/components/SegmentedControl/index.js +2 -2
  197. package/dist/components/Select/index.js +2 -2
  198. package/dist/components/Separator/index.js +2 -2
  199. package/dist/components/Sheet/index.js +2 -2
  200. package/dist/components/Skeleton/index.js +2 -2
  201. package/dist/components/Slider/index.js +2 -2
  202. package/dist/components/Switch/index.js +2 -2
  203. package/dist/components/Table/index.cjs +461 -0
  204. package/dist/components/Table/index.cjs.map +1 -0
  205. package/dist/components/Table/index.d.cts +16 -0
  206. package/dist/components/Table/index.d.ts +16 -0
  207. package/dist/components/Table/index.js +7 -0
  208. package/dist/components/Table/index.js.map +1 -0
  209. package/dist/components/Tabs/index.js +2 -2
  210. package/dist/components/Text/index.js +2 -2
  211. package/dist/components/TextArea/index.js +3 -3
  212. package/dist/components/TextInput/index.js +2 -2
  213. package/dist/components/Toggle/index.js +2 -2
  214. package/dist/components/Tooltip/index.js +2 -2
  215. package/dist/components/VStack/index.js +4 -4
  216. package/dist/i18n/index.cjs +3 -1
  217. package/dist/i18n/index.cjs.map +1 -1
  218. package/dist/i18n/index.js +1 -1
  219. package/dist/index.cjs +935 -156
  220. package/dist/index.cjs.map +1 -1
  221. package/dist/index.d.cts +9 -0
  222. package/dist/index.d.ts +9 -0
  223. package/dist/index.js +54 -44
  224. package/dist/slot/index.d.cts +2 -2
  225. package/dist/slot/index.d.ts +2 -2
  226. package/package.json +1 -1
  227. package/dist/chunk-6PO2IWB3.js.map +0 -1
  228. package/dist/chunk-76FZF4GM.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Alert/Alert.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-46OT4PA6.js","sourcesContent":["'use client';\n\nimport type { ComponentType, ReactNode } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { defaultSemanticIcons } from '../../icons/default-semantic-icons';\nimport { px } from '../../theme/px';\nimport { useColorScheme } from '../../theme/use-color-scheme';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type AlertTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport type AlertProps = {\n /**\n * Severity of the alert. Drives the color tone and the default icon.\n * @defaultValue 'info'\n */\n tone?: AlertTone;\n /** Bolded heading line. Optional — provide one of title or description. */\n title?: string;\n /** Body text below the title. */\n description?: string;\n /**\n * When provided, renders a close button in the top-right that calls back\n * when pressed. The Alert itself doesn't track dismissed state — the\n * parent decides whether to keep rendering.\n */\n onDismiss?: () => void;\n /**\n * Override the tone's default icon. Pass `null` to render no icon at\n * all (rare — the icon doubles as the visual severity cue).\n */\n icon?: ReactNode;\n /** Additional content below title/description. */\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\ntype IconType = ComponentType<{ size?: number; color?: string }>;\ntype TonePalette = { bg: string; border: string; fg: string; iconBg: string; defaultIcon: IconType };\n\n// Light/dark soft palettes per tone. Light variants use the familiar\n// pastel scale (Tailwind 50/200/800); dark variants use the deep 950/700/100\n// scale so the alert reads as a calm, on-tone surface against either\n// background — never a harsh white card on a dark page.\nfunction tonePalettes(\n scheme: 'light' | 'dark',\n primary: { '50': string; '200': string; '700': string; '800': string; '900': string; '100': string },\n success: string,\n warning: string,\n danger: string\n): Record<AlertTone, TonePalette> {\n if (scheme === 'dark') {\n return {\n info: {\n bg: primary['900'],\n border: primary['700'],\n fg: primary['100'],\n iconBg: primary['200'],\n defaultIcon: defaultSemanticIcons.info,\n },\n success: {\n bg: '#052e16',\n border: '#14532d',\n fg: '#bbf7d0',\n iconBg: success,\n defaultIcon: defaultSemanticIcons.checkmark,\n },\n warning: {\n bg: '#422006',\n border: '#78350f',\n fg: '#fef3c7',\n iconBg: warning,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n danger: {\n bg: '#450a0a',\n border: '#7f1d1d',\n fg: '#fecaca',\n iconBg: danger,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n };\n }\n return {\n info: {\n bg: primary['50'],\n border: primary['200'],\n fg: primary['800'],\n iconBg: primary['700'],\n defaultIcon: defaultSemanticIcons.info,\n },\n success: {\n bg: '#f0fdf4',\n border: '#bbf7d0',\n fg: '#166534',\n iconBg: success,\n defaultIcon: defaultSemanticIcons.checkmark,\n },\n warning: {\n bg: '#fefce8',\n border: '#fde68a',\n fg: '#92400e',\n iconBg: warning,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n danger: {\n bg: '#fef2f2',\n border: '#fecaca',\n fg: '#991b1b',\n iconBg: danger,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n };\n}\n\n// Layout-only base; theme-driven dimensions (gap/padding/radius) are merged\n// inside the component so a custom theme reshapes the alert.\nconst CONTAINER_LAYOUT_BASE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'flex-start',\n borderWidth: 1,\n};\n\n/**\n * Status banner with an icon, title, optional description, optional dismiss.\n * Use for inline messages that the reader should notice but doesn't need to\n * action immediately (use a Dialog when you need a forced acknowledgement).\n *\n * Color tone flips automatically with the active color scheme — light\n * pastel surface in light mode, deep on-tone surface in dark.\n */\nexport const Alert = ({\n tone = 'info',\n title,\n description,\n onDismiss,\n icon,\n children,\n className,\n testID,\n}: AlertProps) => {\n const colors = useThemeColors();\n const scheme = useColorScheme();\n const palette = tonePalettes(\n scheme,\n colors.color.primary,\n colors.color.success,\n colors.color.warning,\n colors.color.danger\n )[tone];\n const IconComponent = palette.defaultIcon;\n const containerStyle: ViewStyle = {\n ...CONTAINER_LAYOUT_BASE,\n gap: px(colors.spacing['3']),\n padding: px(colors.spacing['3']), // closest token to legacy 14px\n borderRadius: px(colors.radius.lg),\n backgroundColor: palette.bg,\n borderColor: palette.border,\n };\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"alert\"\n accessibilityRole=\"alert\"\n className={cn('flex-row items-start gap-3 rounded-md border p-3.5', className)}\n style={containerStyle}\n >\n {icon === null ? null : icon !== undefined ? (\n icon\n ) : (\n <View\n aria-hidden={true}\n style={{\n // 20×20 icon hit area — component-density literal — not from theme\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 2,\n }}\n >\n <IconComponent size={20} color={palette.iconBg} />\n </View>\n )}\n <View style={{ flex: 1, gap: 2 }}>\n {title !== undefined ? (\n <RNText\n style={{\n color: palette.fg,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.semibold as '600',\n lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal),\n }}\n >\n {title}\n </RNText>\n ) : null}\n {description !== undefined ? (\n <RNText\n style={{\n color: palette.fg,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal),\n opacity: 0.85,\n }}\n >\n {description}\n </RNText>\n ) : null}\n {children}\n </View>\n {onDismiss !== undefined ? (\n <Pressable\n onPress={onDismiss}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n aria-label=\"Dismiss\"\n style={{\n // 24×24 close button hit area — component-density literal — not from theme\n width: 24,\n height: 24,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: px(colors.radius.sm),\n marginTop: -2,\n }}\n >\n <defaultSemanticIcons.close size={16} color={palette.fg} />\n </Pressable>\n ) : null}\n </View>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Alert/Alert.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-3W3XYULK.js","sourcesContent":["'use client';\n\nimport type { ComponentType, ReactNode } from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { defaultSemanticIcons } from '../../icons/default-semantic-icons';\nimport { px } from '../../theme/px';\nimport { useColorScheme } from '../../theme/use-color-scheme';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\n\nexport type AlertTone = 'info' | 'success' | 'warning' | 'danger';\n\nexport type AlertProps = {\n /**\n * Severity of the alert. Drives the color tone and the default icon.\n * @defaultValue 'info'\n */\n tone?: AlertTone;\n /** Bolded heading line. Optional — provide one of title or description. */\n title?: string;\n /** Body text below the title. */\n description?: string;\n /**\n * When provided, renders a close button in the top-right that calls back\n * when pressed. The Alert itself doesn't track dismissed state — the\n * parent decides whether to keep rendering.\n */\n onDismiss?: () => void;\n /**\n * Override the tone's default icon. Pass `null` to render no icon at\n * all (rare — the icon doubles as the visual severity cue).\n */\n icon?: ReactNode;\n /** Additional content below title/description. */\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\ntype IconType = ComponentType<{ size?: number; color?: string }>;\ntype TonePalette = { bg: string; border: string; fg: string; iconBg: string; defaultIcon: IconType };\n\n// Light/dark soft palettes per tone. Light variants use the familiar\n// pastel scale (Tailwind 50/200/800); dark variants use the deep 950/700/100\n// scale so the alert reads as a calm, on-tone surface against either\n// background — never a harsh white card on a dark page.\nfunction tonePalettes(\n scheme: 'light' | 'dark',\n primary: { '50': string; '200': string; '700': string; '800': string; '900': string; '100': string },\n success: string,\n warning: string,\n danger: string\n): Record<AlertTone, TonePalette> {\n if (scheme === 'dark') {\n return {\n info: {\n bg: primary['900'],\n border: primary['700'],\n fg: primary['100'],\n iconBg: primary['200'],\n defaultIcon: defaultSemanticIcons.info,\n },\n success: {\n bg: '#052e16',\n border: '#14532d',\n fg: '#bbf7d0',\n iconBg: success,\n defaultIcon: defaultSemanticIcons.checkmark,\n },\n warning: {\n bg: '#422006',\n border: '#78350f',\n fg: '#fef3c7',\n iconBg: warning,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n danger: {\n bg: '#450a0a',\n border: '#7f1d1d',\n fg: '#fecaca',\n iconBg: danger,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n };\n }\n return {\n info: {\n bg: primary['50'],\n border: primary['200'],\n fg: primary['800'],\n iconBg: primary['700'],\n defaultIcon: defaultSemanticIcons.info,\n },\n success: {\n bg: '#f0fdf4',\n border: '#bbf7d0',\n fg: '#166534',\n iconBg: success,\n defaultIcon: defaultSemanticIcons.checkmark,\n },\n warning: {\n bg: '#fefce8',\n border: '#fde68a',\n fg: '#92400e',\n iconBg: warning,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n danger: {\n bg: '#fef2f2',\n border: '#fecaca',\n fg: '#991b1b',\n iconBg: danger,\n defaultIcon: defaultSemanticIcons.alertTriangle,\n },\n };\n}\n\n// Layout-only base; theme-driven dimensions (gap/padding/radius) are merged\n// inside the component so a custom theme reshapes the alert.\nconst CONTAINER_LAYOUT_BASE: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'flex-start',\n borderWidth: 1,\n};\n\n/**\n * Status banner with an icon, title, optional description, optional dismiss.\n * Use for inline messages that the reader should notice but doesn't need to\n * action immediately (use a Dialog when you need a forced acknowledgement).\n *\n * Color tone flips automatically with the active color scheme — light\n * pastel surface in light mode, deep on-tone surface in dark.\n */\nexport const Alert = ({\n tone = 'info',\n title,\n description,\n onDismiss,\n icon,\n children,\n className,\n testID,\n}: AlertProps) => {\n const colors = useThemeColors();\n const scheme = useColorScheme();\n const palette = tonePalettes(\n scheme,\n colors.color.primary,\n colors.color.success,\n colors.color.warning,\n colors.color.danger\n )[tone];\n const IconComponent = palette.defaultIcon;\n const containerStyle: ViewStyle = {\n ...CONTAINER_LAYOUT_BASE,\n gap: px(colors.spacing['3']),\n padding: px(colors.spacing['3']), // closest token to legacy 14px\n borderRadius: px(colors.radius.lg),\n backgroundColor: palette.bg,\n borderColor: palette.border,\n };\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"alert\"\n accessibilityRole=\"alert\"\n className={cn('flex-row items-start gap-3 rounded-md border p-3.5', className)}\n style={containerStyle}\n >\n {icon === null ? null : icon !== undefined ? (\n icon\n ) : (\n <View\n aria-hidden={true}\n style={{\n // 20×20 icon hit area — component-density literal — not from theme\n width: 20,\n height: 20,\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 2,\n }}\n >\n <IconComponent size={20} color={palette.iconBg} />\n </View>\n )}\n <View style={{ flex: 1, gap: 2 }}>\n {title !== undefined ? (\n <RNText\n style={{\n color: palette.fg,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.semibold as '600',\n lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal),\n }}\n >\n {title}\n </RNText>\n ) : null}\n {description !== undefined ? (\n <RNText\n style={{\n color: palette.fg,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal),\n opacity: 0.85,\n }}\n >\n {description}\n </RNText>\n ) : null}\n {children}\n </View>\n {onDismiss !== undefined ? (\n <Pressable\n onPress={onDismiss}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityLabel=\"Dismiss\"\n aria-label=\"Dismiss\"\n style={{\n // 24×24 close button hit area — component-density literal — not from theme\n width: 24,\n height: 24,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: px(colors.radius.sm),\n marginTop: -2,\n }}\n >\n <defaultSemanticIcons.close size={16} color={palette.fg} />\n </Pressable>\n ) : null}\n </View>\n );\n};\n"]}
@@ -53,7 +53,9 @@ var defaultDictionary = {
53
53
  "switch.off": "Off",
54
54
  // field
55
55
  "field.requiredIndicator": "*",
56
- "field.requiredLabel": "required"
56
+ "field.requiredLabel": "required",
57
+ // table / dataTable
58
+ "table.empty": "No data"
57
59
  };
58
60
 
59
61
  // src/i18n/resolve.ts
@@ -101,5 +103,5 @@ function interpolate(template, options) {
101
103
  __name(interpolate, "interpolate");
102
104
 
103
105
  export { defaultDictionary, resolveI18n };
104
- //# sourceMappingURL=chunk-6PO2IWB3.js.map
105
- //# sourceMappingURL=chunk-6PO2IWB3.js.map
106
+ //# sourceMappingURL=chunk-4UFAZLSZ.js.map
107
+ //# sourceMappingURL=chunk-4UFAZLSZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/default-dictionary.ts","../src/i18n/resolve.ts"],"names":[],"mappings":"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","file":"chunk-4UFAZLSZ.js","sourcesContent":["import type { Dictionary } from './types';\n\n/**\n * Default English strings used by library components.\n *\n * Key naming convention:\n * <component>.<purpose>[_plural-form]\n *\n * Plural suffixes follow i18next: `_zero`, `_one`, `_two`, `_few`, `_many`, `_other`.\n * Interpolation uses `{{name}}` — double braces, no spaces, by convention.\n */\nexport const defaultDictionary: Dictionary = {\n // generic / shared\n 'common.cancel': 'Cancel',\n 'common.confirm': 'Confirm',\n 'common.close': 'Close',\n 'common.back': 'Back',\n 'common.loading': 'Loading',\n 'common.error': 'Something went wrong',\n 'common.retry': 'Try again',\n\n // breadcrumb\n 'breadcrumb.ariaLabel': 'Breadcrumb',\n 'breadcrumb.expandLabel': 'Show full path',\n 'breadcrumb.ellipsisLabel': 'More',\n 'breadcrumb.currentPageLabel': 'Current page',\n 'breadcrumb.siblingMenuLabel': 'Open sibling pages',\n\n // pagination\n 'pagination.ariaLabel': 'Pagination',\n 'pagination.previous': 'Previous page',\n 'pagination.next': 'Next page',\n 'pagination.first': 'First page',\n 'pagination.last': 'Last page',\n 'pagination.ellipsis': 'More pages',\n 'pagination.currentPage': 'Current page',\n 'pagination.gotoPage': 'Go to page {{page}}',\n 'pagination.range': 'Showing {{from}}–{{to}} of {{total}}',\n 'pagination.pageOf': 'Page {{page}} of {{total}}',\n 'pagination.pageSizeLabel': 'Items per page',\n 'pagination.jumperLabel': 'Go to page',\n 'pagination.jumperPlaceholder': '#',\n\n // floatButton\n 'floatButton.backToTop': 'Back to top',\n\n // calendar\n 'calendar.header.previous': 'Previous month',\n 'calendar.header.next': 'Next month',\n 'calendar.header.openMonthView': 'Open month picker',\n 'calendar.header.openYearView': 'Open year picker',\n 'calendar.header.openDayView': 'Open day picker',\n 'calendar.today': 'Today',\n 'calendar.clear': 'Clear',\n\n // button\n 'button.loadingLabel': 'Loading',\n\n // input\n 'input.clear': 'Clear',\n 'input.passwordShow': 'Show password',\n 'input.passwordHide': 'Hide password',\n\n // checkbox / switch\n 'checkbox.checked': 'Checked',\n 'checkbox.unchecked': 'Unchecked',\n 'switch.on': 'On',\n 'switch.off': 'Off',\n\n // field\n 'field.requiredIndicator': '*',\n 'field.requiredLabel': 'required',\n\n // table / dataTable\n 'table.empty': 'No data',\n};\n","import type { Dictionary, I18nInput, I18nOptions, TranslateFn } from './types';\n\n/**\n * Normalizes the consumer's i18n input (undefined | dictionary | function) into a\n * uniform TranslateFn. Internal code only calls the returned function.\n *\n * Precedence for a given key lookup:\n * 1. consumer function (if provided) — called verbatim, no further fallback\n * 2. consumer dictionary (if provided)\n * 3. library defaults\n * 4. options.defaultValue\n * 5. the key itself (so missing strings are visible in dev, not silent)\n */\nexport function resolveI18n(input: I18nInput, defaults: Dictionary): TranslateFn {\n if (typeof input === 'function') {\n // Wrap so the consumer fn is always invoked with (key, options) — enables\n // Jest `toHaveBeenCalledWith(key, undefined)` assertions and mirrors i18next's\n // own call signature exactly.\n return (keyOrKeys, options) => input(keyOrKeys, options);\n }\n\n const dict = input ?? {};\n\n return (keyOrKeys, options) => {\n const keys = Array.isArray(keyOrKeys) ? keyOrKeys : [keyOrKeys];\n for (const rawKey of keys) {\n const key = pluralize(rawKey, options?.count);\n const template = dict[key] ?? defaults[key];\n if (template !== undefined) {\n return interpolate(template, options);\n }\n }\n // exhausted the key list\n const lastKey = keys[keys.length - 1];\n if (options?.defaultValue !== undefined) {\n return interpolate(options.defaultValue, options);\n }\n return lastKey ?? '';\n };\n}\n\nfunction pluralize(key: string, count: number | undefined): string {\n if (count === undefined) {\n return key;\n }\n // Minimal English pluralization — extend with ICU rules later if needed.\n if (count === 1) {\n return `${key}_one`;\n }\n return `${key}_other`;\n}\n\nfunction interpolate(template: string, options: I18nOptions | undefined): string {\n if (!options) {\n return template;\n }\n return template.replace(/\\{\\{\\s*([A-Za-z0-9_.-]+)\\s*\\}\\}/g, (_match, name: string) => {\n const value = options[name];\n return value === undefined || value === null ? '' : String(value);\n });\n}\n"]}
@@ -0,0 +1,145 @@
1
+ import { useThemeColors } from './chunk-R5JMDDCB.js';
2
+ import { cn } from './chunk-CHXHRJNZ.js';
3
+ import { __name } from './chunk-WCQVDF3K.js';
4
+ import { createContext, useState, useCallback } from 'react';
5
+ import { jsx } from 'nativewind/jsx-runtime';
6
+
7
+ var TableContext = createContext({
8
+ striped: false,
9
+ compact: false,
10
+ bordered: false,
11
+ rowIndex: 0,
12
+ setRowIndex: /* @__PURE__ */ __name(() => {
13
+ }, "setRowIndex")
14
+ });
15
+ function buildTableCompound(parts) {
16
+ return Object.assign(parts.Root, {
17
+ Header: parts.Header,
18
+ Body: parts.Body,
19
+ Footer: parts.Footer,
20
+ Row: parts.Row,
21
+ HeaderCell: parts.HeaderCell,
22
+ Cell: parts.Cell,
23
+ Caption: parts.Caption
24
+ });
25
+ }
26
+ __name(buildTableCompound, "buildTableCompound");
27
+ var TableRoot = /* @__PURE__ */ __name(({ striped = false, compact = false, bordered = false, children, className, testID }) => {
28
+ const [rowIndex, setRowIndex] = useState(0);
29
+ const ctxValue = {
30
+ striped,
31
+ compact,
32
+ bordered,
33
+ rowIndex,
34
+ setRowIndex
35
+ };
36
+ return /* @__PURE__ */ jsx(TableContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsx("div", { className: cn("w-full overflow-auto", className), children: /* @__PURE__ */ jsx(
37
+ "table",
38
+ {
39
+ className: cn(
40
+ "w-full caption-bottom text-sm",
41
+ bordered && "border border-semantic-border-default",
42
+ className
43
+ ),
44
+ ...testID !== void 0 ? { "data-testid": testID } : {},
45
+ children
46
+ }
47
+ ) }) });
48
+ }, "TableRoot");
49
+ var TableHeader = /* @__PURE__ */ __name(({ children, className, testID }) => /* @__PURE__ */ jsx(
50
+ "thead",
51
+ {
52
+ className: cn("[&_tr]:border-b [&_tr]:border-semantic-border-default", className),
53
+ ...testID !== void 0 ? { "data-testid": testID } : {},
54
+ children
55
+ }
56
+ ), "TableHeader");
57
+ var TableBody = /* @__PURE__ */ __name(({ children, className, testID }) => /* @__PURE__ */ jsx(
58
+ "tbody",
59
+ {
60
+ className: cn("[&_tr:last-child]:border-0", className),
61
+ ...testID !== void 0 ? { "data-testid": testID } : {},
62
+ children
63
+ }
64
+ ), "TableBody");
65
+ var TableFooter = /* @__PURE__ */ __name(({ children, className, testID }) => /* @__PURE__ */ jsx(
66
+ "tfoot",
67
+ {
68
+ className: cn("border-t border-semantic-border-default font-medium", className),
69
+ ...testID !== void 0 ? { "data-testid": testID } : {},
70
+ children
71
+ }
72
+ ), "TableFooter");
73
+ var TableRow = /* @__PURE__ */ __name(({ selected = false, onPress, children, className, testID }) => {
74
+ const colors = useThemeColors();
75
+ const handleClick = useCallback(() => {
76
+ onPress?.();
77
+ }, [onPress]);
78
+ return /* @__PURE__ */ jsx(
79
+ "tr",
80
+ {
81
+ className: cn(
82
+ "border-b border-semantic-border-default transition-colors",
83
+ onPress && "cursor-pointer hover:bg-semantic-background-subtle",
84
+ selected && "bg-semantic-background-subtle",
85
+ className
86
+ ),
87
+ style: selected ? { backgroundColor: colors.semantic.background.subtle } : void 0,
88
+ onClick: onPress ? handleClick : void 0,
89
+ ...testID !== void 0 ? { "data-testid": testID } : {},
90
+ children
91
+ }
92
+ );
93
+ }, "TableRow");
94
+ var TableHeaderCell = /* @__PURE__ */ __name(({ align = "left", colSpan, children, className, testID }) => /* @__PURE__ */ jsx(
95
+ "th",
96
+ {
97
+ className: cn(
98
+ "h-10 px-4 font-medium text-semantic-text-secondary",
99
+ align === "right" && "text-right",
100
+ align === "center" && "text-center",
101
+ align === "left" && "text-left",
102
+ className
103
+ ),
104
+ colSpan,
105
+ ...testID !== void 0 ? { "data-testid": testID } : {},
106
+ children
107
+ }
108
+ ), "TableHeaderCell");
109
+ var TableCell = /* @__PURE__ */ __name(({ align = "left", colSpan, children, className, testID }) => /* @__PURE__ */ jsx(
110
+ "td",
111
+ {
112
+ className: cn(
113
+ "p-4 align-middle",
114
+ align === "right" && "text-right",
115
+ align === "center" && "text-center",
116
+ align === "left" && "text-left",
117
+ className
118
+ ),
119
+ colSpan,
120
+ ...testID !== void 0 ? { "data-testid": testID } : {},
121
+ children
122
+ }
123
+ ), "TableCell");
124
+ var TableCaption = /* @__PURE__ */ __name(({ children, className, testID }) => /* @__PURE__ */ jsx(
125
+ "caption",
126
+ {
127
+ className: cn("mt-4 text-sm text-semantic-text-secondary", className),
128
+ ...testID !== void 0 ? { "data-testid": testID } : {},
129
+ children
130
+ }
131
+ ), "TableCaption");
132
+ var Table = buildTableCompound({
133
+ Root: TableRoot,
134
+ Header: TableHeader,
135
+ Body: TableBody,
136
+ Footer: TableFooter,
137
+ Row: TableRow,
138
+ HeaderCell: TableHeaderCell,
139
+ Cell: TableCell,
140
+ Caption: TableCaption
141
+ });
142
+
143
+ export { Table };
144
+ //# sourceMappingURL=chunk-5YHT252H.js.map
145
+ //# sourceMappingURL=chunk-5YHT252H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Table/Table.shared.tsx","../src/components/Table/Table.web.tsx"],"names":[],"mappings":"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","file":"chunk-5YHT252H.js","sourcesContent":["'use client';\n\n/**\n * Shared Table internals — context, types, and compound assembly.\n *\n * Imported by both `Table.web.tsx` and `Table.native.tsx`. The actual\n * render elements (semantic HTML vs. View grid) live in those platform\n * files. This module exports only types, context, and the Object.assign\n * compound builder so both platforms ship an identical API surface.\n */\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type TableAlign = 'left' | 'center' | 'right';\n\nexport type TableProps = {\n /** Alternating row background tinting. */\n striped?: boolean;\n /** Reduced cell padding for dense layouts. */\n compact?: boolean;\n /** Draw borders around all cells. */\n bordered?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport type TableRowProps = {\n /** Visually highlight this row as selected. */\n selected?: boolean;\n /** Press handler — makes the row interactive on both platforms. */\n onPress?: () => void;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport type TableCellProps = {\n /** Horizontal alignment of cell content. @defaultValue 'left' */\n align?: TableAlign;\n /** HTML colspan / native column span (visual only on native). */\n colSpan?: number;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport type TableHeaderCellProps = TableCellProps;\n\nexport type TableSectionProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport type TableCaptionProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nexport type TableContextValue = {\n striped: boolean;\n compact: boolean;\n bordered: boolean;\n /** Zero-based row index for striped row coloring — incremented per Body row */\n rowIndex: number;\n setRowIndex: (n: number) => void;\n};\n\nexport const TableContext = createContext<TableContextValue>({\n striped: false,\n compact: false,\n bordered: false,\n rowIndex: 0,\n setRowIndex: () => {},\n});\n\nexport const useTableContext = (): TableContextValue => useContext(TableContext);\n\n// ─── Compound builder ─────────────────────────────────────────────────────────\n\n/**\n * Attach sub-components to a Root component via `Object.assign` and return\n * the compound. Both `.web.tsx` and `.native.tsx` call this with their\n * platform-specific implementations so consumers get the same dot-notation API.\n */\nexport function buildTableCompound<\n Root extends React.ComponentType<TableProps>,\n Header extends React.ComponentType<TableSectionProps>,\n Body extends React.ComponentType<TableSectionProps>,\n Footer extends React.ComponentType<TableSectionProps>,\n Row extends React.ComponentType<TableRowProps>,\n HeaderCell extends React.ComponentType<TableHeaderCellProps>,\n Cell extends React.ComponentType<TableCellProps>,\n Caption extends React.ComponentType<TableCaptionProps>,\n>(parts: {\n Root: Root;\n Header: Header;\n Body: Body;\n Footer: Footer;\n Row: Row;\n HeaderCell: HeaderCell;\n Cell: Cell;\n Caption: Caption;\n}) {\n return Object.assign(parts.Root, {\n Header: parts.Header,\n Body: parts.Body,\n Footer: parts.Footer,\n Row: parts.Row,\n HeaderCell: parts.HeaderCell,\n Cell: parts.Cell,\n Caption: parts.Caption,\n });\n}\n\n// needed for the generic parameter above\nimport type React from 'react';\n","'use client';\n\n/**\n * Web Table implementation — uses semantic HTML table elements for full\n * accessibility. Metro never resolves this file; Vite / Next.js pick it up\n * via the `.web.tsx` extension.\n */\n\nimport { useCallback, useState } from 'react';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport {\n buildTableCompound,\n type TableCaptionProps,\n type TableCellProps,\n TableContext,\n type TableContextValue,\n type TableHeaderCellProps,\n type TableProps,\n type TableRowProps,\n type TableSectionProps,\n} from './Table.shared';\n\n// ─── Root ─────────────────────────────────────────────────────────────────────\n\nconst TableRoot = ({ striped = false, compact = false, bordered = false, children, className, testID }: TableProps) => {\n const [rowIndex, setRowIndex] = useState(0);\n const ctxValue: TableContextValue = {\n striped,\n compact,\n bordered,\n rowIndex,\n setRowIndex,\n };\n return (\n <TableContext.Provider value={ctxValue}>\n <div className={cn('w-full overflow-auto', className)}>\n <table\n className={cn(\n 'w-full caption-bottom text-sm',\n bordered && 'border border-semantic-border-default',\n className\n )}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </table>\n </div>\n </TableContext.Provider>\n );\n};\n\n// ─── Header ───────────────────────────────────────────────────────────────────\n\nconst TableHeader = ({ children, className, testID }: TableSectionProps) => (\n <thead\n className={cn('[&_tr]:border-b [&_tr]:border-semantic-border-default', className)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </thead>\n);\n\n// ─── Body ─────────────────────────────────────────────────────────────────────\n\nconst TableBody = ({ children, className, testID }: TableSectionProps) => (\n <tbody\n className={cn('[&_tr:last-child]:border-0', className)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </tbody>\n);\n\n// ─── Footer ───────────────────────────────────────────────────────────────────\n\nconst TableFooter = ({ children, className, testID }: TableSectionProps) => (\n <tfoot\n className={cn('border-t border-semantic-border-default font-medium', className)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </tfoot>\n);\n\n// ─── Row ──────────────────────────────────────────────────────────────────────\n\nconst TableRow = ({ selected = false, onPress, children, className, testID }: TableRowProps) => {\n const colors = useThemeColors();\n const handleClick = useCallback(() => {\n onPress?.();\n }, [onPress]);\n\n return (\n <tr\n className={cn(\n 'border-b border-semantic-border-default transition-colors',\n onPress && 'cursor-pointer hover:bg-semantic-background-subtle',\n selected && 'bg-semantic-background-subtle',\n className\n )}\n style={selected ? { backgroundColor: colors.semantic.background.subtle } : undefined}\n onClick={onPress ? handleClick : undefined}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </tr>\n );\n};\n\n// ─── HeaderCell ───────────────────────────────────────────────────────────────\n\nconst TableHeaderCell = ({ align = 'left', colSpan, children, className, testID }: TableHeaderCellProps) => (\n <th\n className={cn(\n 'h-10 px-4 font-medium text-semantic-text-secondary',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className\n )}\n colSpan={colSpan}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </th>\n);\n\n// ─── Cell ─────────────────────────────────────────────────────────────────────\n\nconst TableCell = ({ align = 'left', colSpan, children, className, testID }: TableCellProps) => (\n <td\n className={cn(\n 'p-4 align-middle',\n align === 'right' && 'text-right',\n align === 'center' && 'text-center',\n align === 'left' && 'text-left',\n className\n )}\n colSpan={colSpan}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </td>\n);\n\n// ─── Caption ──────────────────────────────────────────────────────────────────\n\nconst TableCaption = ({ children, className, testID }: TableCaptionProps) => (\n <caption\n className={cn('mt-4 text-sm text-semantic-text-secondary', className)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n >\n {children}\n </caption>\n);\n\n// ─── Compound export ──────────────────────────────────────────────────────────\n\nexport const Table = buildTableCompound({\n Root: TableRoot,\n Header: TableHeader,\n Body: TableBody,\n Footer: TableFooter,\n Row: TableRow,\n HeaderCell: TableHeaderCell,\n Cell: TableCell,\n Caption: TableCaption,\n});\n\nexport type {\n TableAlign,\n TableCaptionProps,\n TableCellProps,\n TableHeaderCellProps,\n TableProps,\n TableRowProps,\n TableSectionProps,\n} from './Table.shared';\n"]}
@@ -0,0 +1,125 @@
1
+ import { __name } from './chunk-WCQVDF3K.js';
2
+ import { useState, useRef, useCallback, useMemo } from 'react';
3
+
4
+ var range = /* @__PURE__ */ __name((from, to) => {
5
+ if (to < from) {
6
+ return [];
7
+ }
8
+ const out = new Array(to - from + 1);
9
+ for (let i = 0; i < out.length; i += 1) {
10
+ out[i] = from + i;
11
+ }
12
+ return out;
13
+ }, "range");
14
+ function usePagination(args) {
15
+ const {
16
+ page: controlledPage,
17
+ defaultPage = 1,
18
+ pageCount,
19
+ siblingCount = 1,
20
+ boundaryCount = 1,
21
+ showFirstLast = false,
22
+ showPrevNext = true,
23
+ onPageChange
24
+ } = args;
25
+ const isControlled = controlledPage !== void 0;
26
+ const [uncontrolledPage, setUncontrolledPage] = useState(defaultPage);
27
+ const onChangeRef = useRef(onPageChange);
28
+ onChangeRef.current = onPageChange;
29
+ const safePageCount = Math.max(1, Math.floor(pageCount));
30
+ const rawPage = isControlled ? controlledPage : uncontrolledPage;
31
+ const currentPage = Math.min(Math.max(1, Math.floor(rawPage)), safePageCount);
32
+ const goToPage = useCallback(
33
+ (next2) => {
34
+ const clamped = Math.min(Math.max(1, Math.floor(next2)), Math.max(1, Math.floor(pageCount)));
35
+ if (!isControlled) {
36
+ setUncontrolledPage(clamped);
37
+ }
38
+ onChangeRef.current?.(clamped);
39
+ },
40
+ [isControlled, pageCount]
41
+ );
42
+ const prev = useCallback(() => goToPage(currentPage - 1), [goToPage, currentPage]);
43
+ const next = useCallback(() => goToPage(currentPage + 1), [goToPage, currentPage]);
44
+ const first = useCallback(() => goToPage(1), [goToPage]);
45
+ const last = useCallback(() => goToPage(safePageCount), [goToPage, safePageCount]);
46
+ const pages = useMemo(() => {
47
+ const items = [];
48
+ const safeSibling = Math.max(0, Math.floor(siblingCount));
49
+ const safeBoundary = Math.max(0, Math.floor(boundaryCount));
50
+ if (showFirstLast) {
51
+ items.push({ type: "first", disabled: currentPage <= 1 });
52
+ }
53
+ if (showPrevNext) {
54
+ items.push({ type: "prev", disabled: currentPage <= 1 });
55
+ }
56
+ const startPages = range(1, Math.min(safeBoundary, safePageCount));
57
+ const endPages = range(Math.max(safePageCount - safeBoundary + 1, safeBoundary + 1), safePageCount);
58
+ const siblingsStart = Math.max(
59
+ Math.min(currentPage - safeSibling, safePageCount - safeBoundary - safeSibling * 2 - 1),
60
+ safeBoundary + 2
61
+ );
62
+ const siblingsEnd = Math.min(
63
+ Math.max(currentPage + safeSibling, safeBoundary + safeSibling * 2 + 2),
64
+ endPages.length > 0 ? endPages[0] - 2 : safePageCount - 1
65
+ );
66
+ const middle = [];
67
+ if (siblingsStart > safeBoundary + 2) {
68
+ middle.push("ellipsis");
69
+ } else if (safeBoundary + 1 < safePageCount - safeBoundary) {
70
+ middle.push(safeBoundary + 1);
71
+ }
72
+ for (const p of range(siblingsStart, siblingsEnd)) {
73
+ middle.push(p);
74
+ }
75
+ if (siblingsEnd < safePageCount - safeBoundary - 1) {
76
+ middle.push("ellipsis");
77
+ } else if (safePageCount - safeBoundary > safeBoundary) {
78
+ middle.push(safePageCount - safeBoundary);
79
+ }
80
+ const seen = /* @__PURE__ */ new Set();
81
+ const pushPage = /* @__PURE__ */ __name((n) => {
82
+ if (n < 1 || n > safePageCount || seen.has(n)) {
83
+ return;
84
+ }
85
+ seen.add(n);
86
+ items.push({ type: "page", page: n, selected: n === currentPage });
87
+ }, "pushPage");
88
+ for (const n of startPages) {
89
+ pushPage(n);
90
+ }
91
+ for (const m of middle) {
92
+ if (m === "ellipsis") {
93
+ items.push({ type: "ellipsis" });
94
+ } else {
95
+ pushPage(m);
96
+ }
97
+ }
98
+ for (const n of endPages) {
99
+ pushPage(n);
100
+ }
101
+ if (showPrevNext) {
102
+ items.push({ type: "next", disabled: currentPage >= safePageCount });
103
+ }
104
+ if (showFirstLast) {
105
+ items.push({ type: "last", disabled: currentPage >= safePageCount });
106
+ }
107
+ return items;
108
+ }, [currentPage, safePageCount, siblingCount, boundaryCount, showFirstLast, showPrevNext]);
109
+ return {
110
+ page: currentPage,
111
+ pages,
112
+ canPrev: currentPage > 1,
113
+ canNext: currentPage < safePageCount,
114
+ goToPage,
115
+ prev,
116
+ next,
117
+ first,
118
+ last
119
+ };
120
+ }
121
+ __name(usePagination, "usePagination");
122
+
123
+ export { usePagination };
124
+ //# sourceMappingURL=chunk-73CUV7MW.js.map
125
+ //# sourceMappingURL=chunk-73CUV7MW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Pagination/use-pagination.ts"],"names":["next"],"mappings":"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","file":"chunk-73CUV7MW.js","sourcesContent":["'use client';\n\nimport { useCallback, useMemo, useRef, useState } from 'react';\n\nexport type PaginationItemType = 'page' | 'prev' | 'next' | 'first' | 'last' | 'ellipsis';\n\n/**\n * One slot in the rendered pagination row, as produced by `usePagination`.\n * `page` is set on `'page'` items only; ellipsis carries no number.\n */\nexport type PaginationItemDescriptor = {\n type: PaginationItemType;\n page?: number;\n selected?: boolean;\n disabled?: boolean;\n};\n\nexport type UsePaginationArgs = {\n /** Controlled current page (1-indexed). Omit for uncontrolled. */\n page?: number;\n /** Initial page when uncontrolled (1-indexed). @defaultValue 1 */\n defaultPage?: number;\n /** Total number of pages. */\n pageCount: number;\n /** Pages on each side of the current page. @defaultValue 1 */\n siblingCount?: number;\n /** Pages always visible at start/end. @defaultValue 1 */\n boundaryCount?: number;\n /** Include first/last items in the `pages` list. @defaultValue false */\n showFirstLast?: boolean;\n /** Include prev/next items in the `pages` list. @defaultValue true */\n showPrevNext?: boolean;\n /** Fired on every page change. */\n onPageChange?: (page: number) => void;\n};\n\nexport type UsePaginationReturn = {\n /** Current page (1-indexed), clamped to [1, max(1, pageCount)]. */\n page: number;\n /** Item descriptors in render order. */\n pages: ReadonlyArray<PaginationItemDescriptor>;\n canPrev: boolean;\n canNext: boolean;\n goToPage: (page: number) => void;\n prev: () => void;\n next: () => void;\n first: () => void;\n last: () => void;\n};\n\nconst range = (from: number, to: number): number[] => {\n if (to < from) {\n return [];\n }\n const out = new Array<number>(to - from + 1);\n for (let i = 0; i < out.length; i += 1) {\n out[i] = from + i;\n }\n return out;\n};\n\n/**\n * Headless pagination math + state. Returns the items to render and the\n * actions that drive them — without a single DOM/RN element. Use this\n * directly for fully custom paginators, or let `<Pagination>` use it\n * internally.\n *\n * The math mirrors MUI's `usePagination` algorithm so its behavior is\n * predictable for anyone who has used the React ecosystem before.\n *\n * @example\n * const p = usePagination({ pageCount: 12, defaultPage: 3 });\n * p.pages.map((item) => …);\n */\nexport function usePagination(args: UsePaginationArgs): UsePaginationReturn {\n const {\n page: controlledPage,\n defaultPage = 1,\n pageCount,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstLast = false,\n showPrevNext = true,\n onPageChange,\n } = args;\n\n const isControlled = controlledPage !== undefined;\n const [uncontrolledPage, setUncontrolledPage] = useState(defaultPage);\n\n // Latest-callback ref so `goToPage` can stay referentially stable.\n const onChangeRef = useRef(onPageChange);\n onChangeRef.current = onPageChange;\n\n const safePageCount = Math.max(1, Math.floor(pageCount));\n const rawPage = isControlled ? (controlledPage as number) : uncontrolledPage;\n const currentPage = Math.min(Math.max(1, Math.floor(rawPage)), safePageCount);\n\n const goToPage = useCallback(\n (next: number) => {\n const clamped = Math.min(Math.max(1, Math.floor(next)), Math.max(1, Math.floor(pageCount)));\n if (!isControlled) {\n setUncontrolledPage(clamped);\n }\n onChangeRef.current?.(clamped);\n },\n [isControlled, pageCount]\n );\n\n const prev = useCallback(() => goToPage(currentPage - 1), [goToPage, currentPage]);\n const next = useCallback(() => goToPage(currentPage + 1), [goToPage, currentPage]);\n const first = useCallback(() => goToPage(1), [goToPage]);\n const last = useCallback(() => goToPage(safePageCount), [goToPage, safePageCount]);\n\n const pages = useMemo<ReadonlyArray<PaginationItemDescriptor>>(() => {\n const items: PaginationItemDescriptor[] = [];\n const safeSibling = Math.max(0, Math.floor(siblingCount));\n const safeBoundary = Math.max(0, Math.floor(boundaryCount));\n\n // First / Prev\n if (showFirstLast) {\n items.push({ type: 'first', disabled: currentPage <= 1 });\n }\n if (showPrevNext) {\n items.push({ type: 'prev', disabled: currentPage <= 1 });\n }\n\n // Page numbers + ellipses\n const startPages = range(1, Math.min(safeBoundary, safePageCount));\n const endPages = range(Math.max(safePageCount - safeBoundary + 1, safeBoundary + 1), safePageCount);\n\n const siblingsStart = Math.max(\n Math.min(currentPage - safeSibling, safePageCount - safeBoundary - safeSibling * 2 - 1),\n safeBoundary + 2\n );\n const siblingsEnd = Math.min(\n Math.max(currentPage + safeSibling, safeBoundary + safeSibling * 2 + 2),\n endPages.length > 0 ? endPages[0]! - 2 : safePageCount - 1\n );\n\n const middle: Array<number | 'ellipsis'> = [];\n // Start ellipsis\n if (siblingsStart > safeBoundary + 2) {\n middle.push('ellipsis');\n } else if (safeBoundary + 1 < safePageCount - safeBoundary) {\n middle.push(safeBoundary + 1);\n }\n // Middle pages\n for (const p of range(siblingsStart, siblingsEnd)) {\n middle.push(p);\n }\n // End ellipsis\n if (siblingsEnd < safePageCount - safeBoundary - 1) {\n middle.push('ellipsis');\n } else if (safePageCount - safeBoundary > safeBoundary) {\n middle.push(safePageCount - safeBoundary);\n }\n\n const seen = new Set<number>();\n const pushPage = (n: number) => {\n if (n < 1 || n > safePageCount || seen.has(n)) {\n return;\n }\n seen.add(n);\n items.push({ type: 'page', page: n, selected: n === currentPage });\n };\n\n for (const n of startPages) {\n pushPage(n);\n }\n for (const m of middle) {\n if (m === 'ellipsis') {\n items.push({ type: 'ellipsis' });\n } else {\n pushPage(m);\n }\n }\n for (const n of endPages) {\n pushPage(n);\n }\n\n // Next / Last\n if (showPrevNext) {\n items.push({ type: 'next', disabled: currentPage >= safePageCount });\n }\n if (showFirstLast) {\n items.push({ type: 'last', disabled: currentPage >= safePageCount });\n }\n\n return items;\n }, [currentPage, safePageCount, siblingCount, boundaryCount, showFirstLast, showPrevNext]);\n\n return {\n page: currentPage,\n pages,\n canPrev: currentPage > 1,\n canNext: currentPage < safePageCount,\n goToPage,\n prev,\n next,\n first,\n last,\n };\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { cn } from './chunk-CHXHRJNZ.js';
2
1
  import { useThemeColors } from './chunk-R5JMDDCB.js';
2
+ import { cn } from './chunk-CHXHRJNZ.js';
3
3
  import { __name } from './chunk-WCQVDF3K.js';
4
4
  import { createContext, useRef, useCallback, useMemo, useContext, useState, useEffect } from 'react';
5
5
  import { Platform, View } from 'react-native';
@@ -559,5 +559,5 @@ var Slider = /* @__PURE__ */ __name(({
559
559
  }, "Slider");
560
560
 
561
561
  export { Slider, SliderGestureProvider, useSliderInteractionActive };
562
- //# sourceMappingURL=chunk-ZMSIYLSI.js.map
563
- //# sourceMappingURL=chunk-ZMSIYLSI.js.map
562
+ //# sourceMappingURL=chunk-7FSFJA33.js.map
563
+ //# sourceMappingURL=chunk-7FSFJA33.js.map