@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/i18n/default-dictionary.ts","../../../src/i18n/resolve.ts","../../../src/i18n/context.tsx","../../../src/i18n/use-translation.ts","../../../src/theme/px.ts","../../../../tokens/build/theme.ts","../../../src/theme/context.tsx","../../../src/theme/use-color-scheme.tsx","../../../src/theme/use-theme-colors.ts","../../../src/components/Spinner/Spinner.tsx","../../../src/components/Field/Field.tsx"],"names":["createContext","useContext","Platform","useState","Appearance","useEffect","px","jsx","ActivityIndicator","isValidElement","useId","useMemo","Children","useRef","jsxs","Fragment","View","Pressable","RNText","cloneElement"],"mappings":"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","file":"index.cjs","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","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","'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useMemo } from 'react';\nimport { defaultDictionary } from './default-dictionary';\nimport { resolveI18n } from './resolve';\nimport type { I18nInput, TranslateFn } from './types';\n\nexport type I18nContextValue = {\n t: TranslateFn;\n};\n\n// Default context value uses the built-in English dictionary; consumers without\n// a provider still get a working t().\nconst defaultValue: I18nContextValue = {\n t: resolveI18n(undefined, defaultDictionary),\n};\n\nexport const I18nContext = createContext<I18nContextValue>(defaultValue);\nI18nContext.displayName = 'I18nContext';\n\nexport type I18nProviderProps = {\n i18n?: I18nInput;\n children?: ReactNode;\n};\n\nexport function I18nProvider({ i18n, children }: I18nProviderProps) {\n const value = useMemo<I18nContextValue>(() => ({ t: resolveI18n(i18n, defaultDictionary) }), [i18n]);\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n}\n","'use client';\n\nimport { useContext } from 'react';\nimport { I18nContext, type I18nContextValue } from './context';\n\nexport function useTranslation(): I18nContextValue {\n return useContext(I18nContext);\n}\n","/**\n * Strip the `px` suffix from a CSS-flavored token value and return a\n * number, the form React Native style props expect for properties like\n * `borderRadius`, `paddingHorizontal`, `fontSize`, etc.\n *\n * The tokens package emits all dimensional tokens as `${number}px`\n * strings (it's the lingua franca for both CSS and Style Dictionary\n * consumers); inside RN we need the unitless number. RN-Web tolerates\n * both, but native is strict.\n *\n * Falls through unchanged for tokens that already came in as numbers\n * (forward-compat).\n *\n * Examples:\n * px('6px') → 6\n * px('1.5px') → 1.5\n * px(6) → 6\n * px('foo') → 0 (defensive — bad input shouldn't crash render)\n */\nexport function px(value: string | number): number {\n if (typeof value === 'number') {\n return value;\n }\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : 0;\n}\n","// GENERATED by @nori-ui/tokens — DO NOT EDIT.\n// Run `yarn build:tokens` to regenerate.\n\n// Generated for light mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const theme = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#fafafa\",\n elevated: \"#ffffff\",\n subtle: \"#f4f4f5\",\n },\n border: {\n default: \"#e4e4e7\",\n strong: \"#d4d4d8\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#0d9488\",\n primaryHover: \"#0f766e\",\n primaryPressed: \"#115e59\",\n },\n text: {\n default: \"#18181b\",\n inverted: \"#fafafa\",\n muted: \"#52525b\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n\n// Dark mode overrides\n// Generated for dark mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const themeDark = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#18181b\",\n elevated: \"#3f3f46\",\n subtle: \"#27272a\",\n },\n border: {\n default: \"#3f3f46\",\n strong: \"#52525b\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#2dd4bf\",\n primaryHover: \"#5eead4\",\n primaryPressed: \"#99f6e4\",\n },\n text: {\n default: \"#fafafa\",\n inverted: \"#18181b\",\n muted: \"#a1a1aa\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\n","'use client';\n\nimport { themeDark as defaultDark, theme as defaultLight, type Theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { createContext } from 'react';\n\n/**\n * A `NoriTheme` is a paired light/dark palette. The active half is picked\n * by `useColorScheme()` so the same theme object covers both schemes.\n *\n * Build one yourself by spreading the defaults and overriding the colors\n * you care about, or pick a preset from `@nori-ui/core/themes` (see the\n * Theming docs for examples).\n */\nexport type NoriTheme = {\n light: Theme;\n dark: Theme;\n};\n\n/**\n * Default Nori palette — teal primary on a warm-paper light surface, and\n * teal-400 primary on a deep-zinc dark surface. Mirrors the `theme` /\n * `themeDark` exports from @nori-ui/tokens.\n */\nexport const defaultTheme: NoriTheme = {\n light: defaultLight,\n dark: defaultDark as unknown as Theme,\n};\n\n// Context value is the FULL pair, not the active half. `useThemeColors`\n// (the hook components reach for) resolves it to the right one based on\n// the current color scheme. Storing the pair means a parent only has to\n// declare the theme once — switching scheme is a separate concern.\nexport const ThemeContext = createContext<NoriTheme>(defaultTheme);\nThemeContext.displayName = 'ThemeContext';\n\nexport type ThemeProviderProps = {\n /**\n * The theme to apply to descendants. Pass either:\n * - a full `NoriTheme` (`{ light, dark }`) — both schemes covered\n * - a single `Theme` — used for both light and dark (rare; mostly\n * useful when you ONLY ever render in one scheme)\n * - omit — falls back to the Nori default (teal palette)\n */\n theme?: NoriTheme | Theme;\n children?: ReactNode;\n};\n\nconst isFullTheme = (t: NoriTheme | Theme): t is NoriTheme => 'light' in t && 'dark' in t;\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const value: NoriTheme =\n theme === undefined ? defaultTheme : isFullTheme(theme) ? theme : { light: theme, dark: theme };\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n","'use client';\n\nimport { createContext, type ReactNode, useContext, useEffect, useState } from 'react';\nimport { Appearance, Platform } from 'react-native';\n\nexport type ColorScheme = 'light' | 'dark';\n\n// Override channel so a parent can force a scheme (e.g. an app shell with\n// hard-coded dark chrome that wants nested components to render against\n// the dark token half regardless of the OS Appearance). `null` means\n// \"no override — use the system signal\".\nconst ColorSchemeOverrideContext = createContext<ColorScheme | null>(null);\nColorSchemeOverrideContext.displayName = 'ColorSchemeOverrideContext';\n\nexport type ColorSchemeProviderProps = {\n /** Force a specific scheme for descendants. */\n value: ColorScheme;\n children?: ReactNode;\n};\n\n/**\n * Forces a color scheme for all descendants. Useful when a screen's chrome\n * is hard-coded to one scheme (e.g. a forced-dark editorial surface) and\n * you want library components inside it to follow that, not the OS.\n */\nexport function ColorSchemeProvider({ value, children }: ColorSchemeProviderProps) {\n return <ColorSchemeOverrideContext.Provider value={value}>{children}</ColorSchemeOverrideContext.Provider>;\n}\n\nconst isWeb = Platform.OS === 'web';\n\n// Web: a document is \"in dark mode\" when the root <html> element carries\n// the `dark` class (Tailwind / Fumadocs convention) OR a `data-theme=\"dark\"`\n// attribute (matches the `darkMode` selectors in our Tailwind preset).\n// We deliberately don't fall back to `prefers-color-scheme` — the app\n// usually owns that decision and writes it onto <html>; tracking the system\n// preference too would fight the app's chosen value.\nfunction readWebScheme(): ColorScheme {\n if (typeof document === 'undefined') {\n return 'light';\n }\n const root = document.documentElement;\n if (root.classList.contains('dark')) {\n return 'dark';\n }\n if (root.getAttribute('data-theme') === 'dark') {\n return 'dark';\n }\n return 'light';\n}\n\n/**\n * Returns the current color scheme — `'light'` or `'dark'`.\n *\n * On web: observes the root `<html>` element's `class=\"dark\"` and\n * `data-theme=\"dark\"` attribute (the same signals our Tailwind preset\n * keys on). Updates live as those flip.\n *\n * On native: delegates to `react-native`'s `Appearance` API so the hook\n * tracks the OS preference without extra wiring.\n *\n * Components consume this indirectly via `useThemeColors()`; reach for\n * this directly when you need the raw scheme (e.g. to swap an icon).\n */\nexport function useColorScheme(): ColorScheme {\n // A `<ColorSchemeProvider value=\"dark\">` ancestor (or NoriProvider's\n // `colorScheme` prop, which mounts one) wins over the OS signal — the\n // app shell knows which scheme its chrome is locked to.\n const override = useContext(ColorSchemeOverrideContext);\n\n const [scheme, setScheme] = useState<ColorScheme>(() => {\n if (isWeb) {\n return readWebScheme();\n }\n return (Appearance.getColorScheme() ?? 'light') as ColorScheme;\n });\n\n useEffect(() => {\n if (isWeb) {\n const root = document.documentElement;\n const update = () => setScheme(readWebScheme());\n const observer = new MutationObserver(update);\n observer.observe(root, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n // Sync once after mount in case SSR shipped a different value.\n update();\n return () => observer.disconnect();\n }\n\n const sub = Appearance.addChangeListener(({ colorScheme }) => {\n setScheme((colorScheme ?? 'light') as ColorScheme);\n });\n return () => sub.remove();\n }, []);\n\n return override ?? scheme;\n}\n","'use client';\n\nimport type { Theme } from '@nori-ui/tokens';\nimport { useContext } from 'react';\nimport { ThemeContext } from './context';\nimport { useColorScheme } from './use-color-scheme';\n\n/**\n * Returns the active token palette — `theme.light` in light mode,\n * `theme.dark` in dark mode. Resolves the theme via `ThemeContext` so\n * any ancestor `<ThemeProvider theme={...}>` flows through. With no\n * provider in the tree, the default Nori palette (teal) is used.\n *\n * Use this **inside a component** when you need a hex value for a React\n * Native `style` prop (`backgroundColor`, `borderColor`, etc.).\n *\n * Note: className-based styles (e.g. `bg-semantic-interactive-primary`)\n * compile against the @nori-ui/tokens palette at build time and don't\n * follow `<ThemeProvider>` overrides today. Inline styles via this hook\n * always do — and inline beats class on CSS specificity, so the visible\n * color you see is whatever the hook resolves to. CSS-variable theming\n * for the className path is a planned follow-up.\n */\nexport function useThemeColors(): Theme {\n const scheme = useColorScheme();\n const themePair = useContext(ThemeContext);\n return scheme === 'dark' ? themePair.dark : themePair.light;\n}\n","import type { ActivityIndicatorProps } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport type SpinnerProps = Omit<ActivityIndicatorProps, 'size'> & {\n /** Visible (a11y) label. Defaults to the i18n \"common.loading\" default (\"Loading\"). */\n label?: string;\n size?: SpinnerSize;\n testID?: string;\n className?: string;\n};\n\nconst SIZE_MAP: Record<Exclude<SpinnerSize, number>, number> = {\n sm: 12,\n md: 16,\n lg: 24,\n xl: 32,\n};\n\n/**\n * Loading indicator.\n *\n * a11y: rendered with `role=\"progressbar\"` and an `aria-label` so screen\n * readers announce it. Respects `prefers-reduced-motion` — on web, react-native-web's\n * ActivityIndicator will render without animation when the media query matches;\n * on native, React Native's ActivityIndicator honors the OS reduce-motion setting\n * automatically.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport const Spinner = ({ label = 'Loading', size = 'md', testID, color, style, ...rest }: SpinnerProps) => {\n const px = typeof size === 'number' ? size : SIZE_MAP[size];\n return (\n <ActivityIndicator\n {...rest}\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"progressbar\"\n accessibilityLabel={label}\n {...(color !== undefined ? { color } : {})}\n size={px}\n style={[{ width: px, height: px }, style]}\n />\n );\n};\n","'use client';\n\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n} from 'react';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useTranslation } from '../../i18n/use-translation';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { Spinner } from '../Spinner';\n\ntype FieldContextValue = {\n fieldId: string;\n labelId: string;\n descriptionId: string;\n errorId: string;\n hasError: boolean;\n hasDescription: boolean;\n describedBy: string | undefined;\n disabled: boolean;\n required: boolean;\n validating: boolean;\n name?: string;\n error?: string | null;\n isGroup: boolean;\n};\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\nconst useFieldContextStrict = (caller: string): FieldContextValue => {\n const ctx = useContext(FieldContext);\n if (!ctx) {\n throw new Error(`[Field] ${caller} must be used inside <Field> or <Field.Group>.`);\n }\n return ctx;\n};\n\nconst childHasDisplayName = (child: ReactNode, name: string): boolean => {\n if (!isValidElement(child)) {\n return false;\n }\n const t = child.type as { displayName?: string } | string;\n return typeof t !== 'string' && t?.displayName === name;\n};\n\n/** Display names that mark a compound-mode child. */\nconst COMPOUND_DISPLAY_NAMES = ['Field.Label', 'Field.Description', 'Field.Error', 'Field.Control'];\n\nconst isCompoundChild = (child: ReactNode): boolean =>\n COMPOUND_DISPLAY_NAMES.some((name) => childHasDisplayName(child, name));\n\nexport type FieldProps = {\n // Shorthand slot props\n label?: ReactNode;\n description?: ReactNode;\n error?: ReactNode;\n\n // State flags\n name?: string;\n required?: boolean;\n disabled?: boolean;\n validating?: boolean;\n\n // Layout\n orientation?: 'vertical' | 'horizontal';\n id?: string;\n\n children: ReactNode;\n className?: string;\n testID?: string;\n};\n\ntype FieldRootInternalProps = FieldProps & { isGroup?: boolean };\n\nconst FieldRoot = ({\n name,\n required = false,\n disabled = false,\n error = null,\n label,\n description,\n validating = false,\n orientation = 'vertical',\n id,\n children,\n className,\n testID,\n isGroup = false,\n}: FieldRootInternalProps) => {\n const colors = useThemeColors();\n const reactId = useId();\n const fieldId = id ?? `nori-ui-field-${reactId}`;\n const labelId = `${fieldId}-label`;\n const descriptionId = `${fieldId}-desc`;\n const errorId = `${fieldId}-error`;\n\n // ---------- mode detection ----------\n const isCompoundMode = useMemo(() => {\n let found = false;\n Children.forEach(children, (child) => {\n if (isCompoundChild(child)) {\n found = true;\n }\n });\n return found;\n }, [children]);\n\n // ---------- derive hasDescription / hasError ----------\n const hasDescription = useMemo(() => {\n if (!isCompoundMode) {\n return description !== undefined && description !== null && description !== false && description !== '';\n }\n let found = false;\n Children.forEach(children, (child) => {\n if (childHasDisplayName(child, 'Field.Description')) {\n found = true;\n }\n });\n return found;\n }, [isCompoundMode, description, children]);\n\n const hasError = useMemo(() => {\n if (!isCompoundMode) {\n return Boolean(error);\n }\n // compound mode: scan for Field.Error child with truthy children\n let found = false;\n Children.forEach(children, (child) => {\n if (childHasDisplayName(child, 'Field.Error') && isValidElement(child)) {\n const el = child as ReactElement<{ children?: ReactNode }>;\n if (\n el.props.children !== undefined &&\n el.props.children !== null &&\n el.props.children !== false &&\n el.props.children !== ''\n ) {\n found = true;\n }\n }\n });\n // also check the legacy `error` prop usage in compound mode\n if (!found && error !== null && error !== undefined && error !== false && error !== '') {\n found = true;\n }\n return found;\n }, [isCompoundMode, error, children]);\n\n const describedBy = useMemo(() => {\n const ids: string[] = [];\n if (hasDescription) {\n ids.push(descriptionId);\n }\n if (hasError) {\n ids.push(errorId);\n }\n return ids.length === 0 ? undefined : ids.join(' ');\n }, [hasDescription, hasError, descriptionId, errorId]);\n\n const value: FieldContextValue = {\n fieldId,\n labelId,\n descriptionId,\n errorId,\n hasError,\n hasDescription,\n describedBy,\n disabled,\n required,\n validating,\n ...(name !== undefined ? { name } : {}),\n // In compound mode pass `error` (string) so Field.Error can fall back to it.\n // In shorthand mode the error prop may be ReactNode; only pass when it is a string/null.\n ...(error !== null && error !== undefined && typeof error === 'string' ? { error } : {}),\n isGroup,\n };\n\n // ---------- dev warning for mixed usage ----------\n const warnedRef = useRef(false);\n useEffect(() => {\n if (process.env.NODE_ENV === 'production' || warnedRef.current) {\n return;\n }\n const hasShorthand = label !== undefined || description !== undefined || error !== undefined;\n if (hasShorthand && isCompoundMode) {\n warnedRef.current = true;\n // biome-ignore lint/suspicious/noConsole: intentional dev-mode warning\n console.warn(\n '[Field] Mixing shorthand props (label/description/error) with compound children (Field.Label/Field.Description/Field.Error) is not supported. The compound children will win. To suppress this warning, use only one mode.'\n );\n }\n }, [label, description, error, isCompoundMode]);\n\n // ---------- layout ----------\n const containerStyle =\n orientation === 'horizontal'\n ? {\n flexDirection: 'row' as const,\n alignItems: 'flex-start' as const,\n gap: px(colors.spacing['3']),\n }\n : { flexDirection: 'column' as const, gap: px(colors.spacing['1']) };\n\n const containerExtra: Record<string, unknown> = {};\n if (testID !== undefined) {\n containerExtra.testID = testID;\n }\n containerExtra['data-orientation'] = orientation;\n if (isGroup) {\n containerExtra.role = 'group';\n containerExtra['aria-labelledby'] = labelId;\n containerExtra.accessibilityRole = 'none';\n }\n if (validating) {\n containerExtra['data-validating'] = '';\n containerExtra['aria-busy'] = true;\n }\n\n // ---------- shorthand mode rendering ----------\n const renderShorthand = () => {\n // Determine if there's exactly one non-Field.* child we can auto-wrap.\n const childArray = Children.toArray(children);\n const controlChild =\n childArray.length === 1 && isValidElement(childArray[0]) ? (childArray[0] as ReactElement) : null;\n\n return (\n <>\n {label !== undefined && label !== null && label !== false ? <FieldLabel>{label}</FieldLabel> : null}\n {description !== undefined && description !== null && description !== false && description !== '' ? (\n <FieldDescription>{description}</FieldDescription>\n ) : null}\n {controlChild !== null ? <FieldControl>{controlChild}</FieldControl> : children}\n {error !== undefined && error !== null && error !== false && error !== '' ? (\n <FieldError>{error}</FieldError>\n ) : null}\n </>\n );\n };\n\n return (\n <FieldContext.Provider value={value}>\n <View style={containerStyle} {...(className !== undefined ? { className } : {})} {...containerExtra}>\n {isCompoundMode ? children : renderShorthand()}\n {validating ? <Spinner size=\"sm\" /> : null}\n </View>\n </FieldContext.Provider>\n );\n};\n\nconst FieldLabel = ({ children }: { children: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Label');\n const colors = useThemeColors();\n const { t } = useTranslation();\n const requiredIndicator = t('field.requiredIndicator');\n const requiredLabel = t('field.requiredLabel');\n\n const focusInput = () => {\n if (typeof document !== 'undefined') {\n const el = document.getElementById(ctx.fieldId);\n if (el && typeof (el as HTMLElement).focus === 'function') {\n (el as HTMLElement).focus();\n }\n }\n };\n\n return (\n <Pressable onPress={focusInput} accessibilityRole=\"none\" disabled={ctx.disabled}>\n <RNText\n nativeID={ctx.labelId}\n {...({ id: ctx.labelId } as Record<string, unknown>)}\n accessibilityRole=\"text\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.medium as '500',\n color: ctx.disabled ? colors.semantic.text.muted : colors.semantic.text.default,\n }}\n >\n {children}\n {ctx.required ? (\n <RNText\n accessibilityLabel={requiredLabel}\n {...({ 'aria-label': requiredLabel } as Record<string, unknown>)}\n style={{ color: colors.color.danger }}\n >\n {` ${requiredIndicator}`}\n </RNText>\n ) : null}\n </RNText>\n </Pressable>\n );\n};\nFieldLabel.displayName = 'Field.Label';\n\nconst FieldControl = ({ children }: { children: ReactElement }) => {\n const ctx = useFieldContextStrict('Field.Control');\n if (Children.count(children) !== 1 || !isValidElement(children)) {\n throw new Error('[Field.Control] expects exactly one child element.');\n }\n const child = children as ReactElement<Record<string, unknown>>;\n const merged: Record<string, unknown> = {\n id: child.props.id ?? ctx.fieldId,\n accessibilityLabelledBy: ctx.labelId,\n 'aria-labelledby': ctx.labelId,\n };\n if (ctx.name !== undefined && child.props.name === undefined) {\n merged.name = ctx.name;\n }\n if (ctx.describedBy !== undefined) {\n merged['aria-describedby'] = ctx.describedBy;\n merged.accessibilityDescribedBy = ctx.describedBy;\n }\n if (ctx.hasError) {\n merged['aria-invalid'] = true;\n }\n if (ctx.required) {\n merged['aria-required'] = true;\n }\n if (ctx.disabled || child.props.disabled) {\n merged.disabled = true;\n }\n return cloneElement(child, merged);\n};\nFieldControl.displayName = 'Field.Control';\n\nconst FieldDescription = ({ children }: { children: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Description');\n const colors = useThemeColors();\n return (\n <RNText\n nativeID={ctx.descriptionId}\n {...({ id: ctx.descriptionId } as Record<string, unknown>)}\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {children}\n </RNText>\n );\n};\nFieldDescription.displayName = 'Field.Description';\n\nconst FieldError = ({ children }: { children?: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Error');\n const colors = useThemeColors();\n const content = children ?? ctx.error;\n if (content === null || content === undefined || content === '' || content === false) {\n return null;\n }\n return (\n <RNText\n nativeID={ctx.errorId}\n {...({ id: ctx.errorId, role: 'alert' } as Record<string, unknown>)}\n accessibilityRole=\"text\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.color.danger,\n }}\n >\n {content}\n </RNText>\n );\n};\nFieldError.displayName = 'Field.Error';\n\nexport type FieldGroupProps = Omit<FieldProps, 'name'>;\n\nconst FieldGroup = (props: FieldGroupProps) => <FieldRoot {...(props as FieldProps)} isGroup />;\nFieldGroup.displayName = 'Field.Group';\n\nexport const Field = Object.assign(FieldRoot as (props: FieldProps) => ReactElement, {\n Label: FieldLabel,\n Description: FieldDescription,\n Control: FieldControl,\n Error: FieldError,\n Group: FieldGroup,\n});\n"]}
1
+ {"version":3,"sources":["../../../src/i18n/default-dictionary.ts","../../../src/i18n/resolve.ts","../../../src/i18n/context.tsx","../../../src/i18n/use-translation.ts","../../../src/theme/px.ts","../../../../tokens/build/theme.ts","../../../src/theme/context.tsx","../../../src/theme/use-color-scheme.tsx","../../../src/theme/use-theme-colors.ts","../../../src/components/Spinner/Spinner.tsx","../../../src/components/Field/Field.tsx"],"names":["createContext","useContext","Platform","useState","Appearance","useEffect","px","jsx","ActivityIndicator","isValidElement","useId","useMemo","Children","useRef","jsxs","Fragment","View","Pressable","RNText","cloneElement"],"mappings":"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","file":"index.cjs","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","'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useMemo } from 'react';\nimport { defaultDictionary } from './default-dictionary';\nimport { resolveI18n } from './resolve';\nimport type { I18nInput, TranslateFn } from './types';\n\nexport type I18nContextValue = {\n t: TranslateFn;\n};\n\n// Default context value uses the built-in English dictionary; consumers without\n// a provider still get a working t().\nconst defaultValue: I18nContextValue = {\n t: resolveI18n(undefined, defaultDictionary),\n};\n\nexport const I18nContext = createContext<I18nContextValue>(defaultValue);\nI18nContext.displayName = 'I18nContext';\n\nexport type I18nProviderProps = {\n i18n?: I18nInput;\n children?: ReactNode;\n};\n\nexport function I18nProvider({ i18n, children }: I18nProviderProps) {\n const value = useMemo<I18nContextValue>(() => ({ t: resolveI18n(i18n, defaultDictionary) }), [i18n]);\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n}\n","'use client';\n\nimport { useContext } from 'react';\nimport { I18nContext, type I18nContextValue } from './context';\n\nexport function useTranslation(): I18nContextValue {\n return useContext(I18nContext);\n}\n","/**\n * Strip the `px` suffix from a CSS-flavored token value and return a\n * number, the form React Native style props expect for properties like\n * `borderRadius`, `paddingHorizontal`, `fontSize`, etc.\n *\n * The tokens package emits all dimensional tokens as `${number}px`\n * strings (it's the lingua franca for both CSS and Style Dictionary\n * consumers); inside RN we need the unitless number. RN-Web tolerates\n * both, but native is strict.\n *\n * Falls through unchanged for tokens that already came in as numbers\n * (forward-compat).\n *\n * Examples:\n * px('6px') → 6\n * px('1.5px') → 1.5\n * px(6) → 6\n * px('foo') → 0 (defensive — bad input shouldn't crash render)\n */\nexport function px(value: string | number): number {\n if (typeof value === 'number') {\n return value;\n }\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : 0;\n}\n","// GENERATED by @nori-ui/tokens — DO NOT EDIT.\n// Run `yarn build:tokens` to regenerate.\n\n// Generated for light mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const theme = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#fafafa\",\n elevated: \"#ffffff\",\n subtle: \"#f4f4f5\",\n },\n border: {\n default: \"#e4e4e7\",\n strong: \"#d4d4d8\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#0d9488\",\n primaryHover: \"#0f766e\",\n primaryPressed: \"#115e59\",\n },\n text: {\n default: \"#18181b\",\n inverted: \"#fafafa\",\n muted: \"#52525b\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n\n// Dark mode overrides\n// Generated for dark mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const themeDark = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#18181b\",\n elevated: \"#3f3f46\",\n subtle: \"#27272a\",\n },\n border: {\n default: \"#3f3f46\",\n strong: \"#52525b\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#2dd4bf\",\n primaryHover: \"#5eead4\",\n primaryPressed: \"#99f6e4\",\n },\n text: {\n default: \"#fafafa\",\n inverted: \"#18181b\",\n muted: \"#a1a1aa\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\n","'use client';\n\nimport { themeDark as defaultDark, theme as defaultLight, type Theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { createContext } from 'react';\n\n/**\n * A `NoriTheme` is a paired light/dark palette. The active half is picked\n * by `useColorScheme()` so the same theme object covers both schemes.\n *\n * Build one yourself by spreading the defaults and overriding the colors\n * you care about, or pick a preset from `@nori-ui/core/themes` (see the\n * Theming docs for examples).\n */\nexport type NoriTheme = {\n light: Theme;\n dark: Theme;\n};\n\n/**\n * Default Nori palette — teal primary on a warm-paper light surface, and\n * teal-400 primary on a deep-zinc dark surface. Mirrors the `theme` /\n * `themeDark` exports from @nori-ui/tokens.\n */\nexport const defaultTheme: NoriTheme = {\n light: defaultLight,\n dark: defaultDark as unknown as Theme,\n};\n\n// Context value is the FULL pair, not the active half. `useThemeColors`\n// (the hook components reach for) resolves it to the right one based on\n// the current color scheme. Storing the pair means a parent only has to\n// declare the theme once — switching scheme is a separate concern.\nexport const ThemeContext = createContext<NoriTheme>(defaultTheme);\nThemeContext.displayName = 'ThemeContext';\n\nexport type ThemeProviderProps = {\n /**\n * The theme to apply to descendants. Pass either:\n * - a full `NoriTheme` (`{ light, dark }`) — both schemes covered\n * - a single `Theme` — used for both light and dark (rare; mostly\n * useful when you ONLY ever render in one scheme)\n * - omit — falls back to the Nori default (teal palette)\n */\n theme?: NoriTheme | Theme;\n children?: ReactNode;\n};\n\nconst isFullTheme = (t: NoriTheme | Theme): t is NoriTheme => 'light' in t && 'dark' in t;\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const value: NoriTheme =\n theme === undefined ? defaultTheme : isFullTheme(theme) ? theme : { light: theme, dark: theme };\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n","'use client';\n\nimport { createContext, type ReactNode, useContext, useEffect, useState } from 'react';\nimport { Appearance, Platform } from 'react-native';\n\nexport type ColorScheme = 'light' | 'dark';\n\n// Override channel so a parent can force a scheme (e.g. an app shell with\n// hard-coded dark chrome that wants nested components to render against\n// the dark token half regardless of the OS Appearance). `null` means\n// \"no override — use the system signal\".\nconst ColorSchemeOverrideContext = createContext<ColorScheme | null>(null);\nColorSchemeOverrideContext.displayName = 'ColorSchemeOverrideContext';\n\nexport type ColorSchemeProviderProps = {\n /** Force a specific scheme for descendants. */\n value: ColorScheme;\n children?: ReactNode;\n};\n\n/**\n * Forces a color scheme for all descendants. Useful when a screen's chrome\n * is hard-coded to one scheme (e.g. a forced-dark editorial surface) and\n * you want library components inside it to follow that, not the OS.\n */\nexport function ColorSchemeProvider({ value, children }: ColorSchemeProviderProps) {\n return <ColorSchemeOverrideContext.Provider value={value}>{children}</ColorSchemeOverrideContext.Provider>;\n}\n\nconst isWeb = Platform.OS === 'web';\n\n// Web: a document is \"in dark mode\" when the root <html> element carries\n// the `dark` class (Tailwind / Fumadocs convention) OR a `data-theme=\"dark\"`\n// attribute (matches the `darkMode` selectors in our Tailwind preset).\n// We deliberately don't fall back to `prefers-color-scheme` — the app\n// usually owns that decision and writes it onto <html>; tracking the system\n// preference too would fight the app's chosen value.\nfunction readWebScheme(): ColorScheme {\n if (typeof document === 'undefined') {\n return 'light';\n }\n const root = document.documentElement;\n if (root.classList.contains('dark')) {\n return 'dark';\n }\n if (root.getAttribute('data-theme') === 'dark') {\n return 'dark';\n }\n return 'light';\n}\n\n/**\n * Returns the current color scheme — `'light'` or `'dark'`.\n *\n * On web: observes the root `<html>` element's `class=\"dark\"` and\n * `data-theme=\"dark\"` attribute (the same signals our Tailwind preset\n * keys on). Updates live as those flip.\n *\n * On native: delegates to `react-native`'s `Appearance` API so the hook\n * tracks the OS preference without extra wiring.\n *\n * Components consume this indirectly via `useThemeColors()`; reach for\n * this directly when you need the raw scheme (e.g. to swap an icon).\n */\nexport function useColorScheme(): ColorScheme {\n // A `<ColorSchemeProvider value=\"dark\">` ancestor (or NoriProvider's\n // `colorScheme` prop, which mounts one) wins over the OS signal — the\n // app shell knows which scheme its chrome is locked to.\n const override = useContext(ColorSchemeOverrideContext);\n\n const [scheme, setScheme] = useState<ColorScheme>(() => {\n if (isWeb) {\n return readWebScheme();\n }\n return (Appearance.getColorScheme() ?? 'light') as ColorScheme;\n });\n\n useEffect(() => {\n if (isWeb) {\n const root = document.documentElement;\n const update = () => setScheme(readWebScheme());\n const observer = new MutationObserver(update);\n observer.observe(root, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n // Sync once after mount in case SSR shipped a different value.\n update();\n return () => observer.disconnect();\n }\n\n const sub = Appearance.addChangeListener(({ colorScheme }) => {\n setScheme((colorScheme ?? 'light') as ColorScheme);\n });\n return () => sub.remove();\n }, []);\n\n return override ?? scheme;\n}\n","'use client';\n\nimport type { Theme } from '@nori-ui/tokens';\nimport { useContext } from 'react';\nimport { ThemeContext } from './context';\nimport { useColorScheme } from './use-color-scheme';\n\n/**\n * Returns the active token palette — `theme.light` in light mode,\n * `theme.dark` in dark mode. Resolves the theme via `ThemeContext` so\n * any ancestor `<ThemeProvider theme={...}>` flows through. With no\n * provider in the tree, the default Nori palette (teal) is used.\n *\n * Use this **inside a component** when you need a hex value for a React\n * Native `style` prop (`backgroundColor`, `borderColor`, etc.).\n *\n * Note: className-based styles (e.g. `bg-semantic-interactive-primary`)\n * compile against the @nori-ui/tokens palette at build time and don't\n * follow `<ThemeProvider>` overrides today. Inline styles via this hook\n * always do — and inline beats class on CSS specificity, so the visible\n * color you see is whatever the hook resolves to. CSS-variable theming\n * for the className path is a planned follow-up.\n */\nexport function useThemeColors(): Theme {\n const scheme = useColorScheme();\n const themePair = useContext(ThemeContext);\n return scheme === 'dark' ? themePair.dark : themePair.light;\n}\n","import type { ActivityIndicatorProps } from 'react-native';\nimport { ActivityIndicator } from 'react-native';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport type SpinnerProps = Omit<ActivityIndicatorProps, 'size'> & {\n /** Visible (a11y) label. Defaults to the i18n \"common.loading\" default (\"Loading\"). */\n label?: string;\n size?: SpinnerSize;\n testID?: string;\n className?: string;\n};\n\nconst SIZE_MAP: Record<Exclude<SpinnerSize, number>, number> = {\n sm: 12,\n md: 16,\n lg: 24,\n xl: 32,\n};\n\n/**\n * Loading indicator.\n *\n * a11y: rendered with `role=\"progressbar\"` and an `aria-label` so screen\n * readers announce it. Respects `prefers-reduced-motion` — on web, react-native-web's\n * ActivityIndicator will render without animation when the media query matches;\n * on native, React Native's ActivityIndicator honors the OS reduce-motion setting\n * automatically.\n *\n * RSC-safe: pure render, no hooks.\n */\nexport const Spinner = ({ label = 'Loading', size = 'md', testID, color, style, ...rest }: SpinnerProps) => {\n const px = typeof size === 'number' ? size : SIZE_MAP[size];\n return (\n <ActivityIndicator\n {...rest}\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"progressbar\"\n accessibilityLabel={label}\n {...(color !== undefined ? { color } : {})}\n size={px}\n style={[{ width: px, height: px }, style]}\n />\n );\n};\n","'use client';\n\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n} from 'react';\nimport { Pressable, Text as RNText, View } from 'react-native';\nimport { useTranslation } from '../../i18n/use-translation';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { Spinner } from '../Spinner';\n\ntype FieldContextValue = {\n fieldId: string;\n labelId: string;\n descriptionId: string;\n errorId: string;\n hasError: boolean;\n hasDescription: boolean;\n describedBy: string | undefined;\n disabled: boolean;\n required: boolean;\n validating: boolean;\n name?: string;\n error?: string | null;\n isGroup: boolean;\n};\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\nconst useFieldContextStrict = (caller: string): FieldContextValue => {\n const ctx = useContext(FieldContext);\n if (!ctx) {\n throw new Error(`[Field] ${caller} must be used inside <Field> or <Field.Group>.`);\n }\n return ctx;\n};\n\nconst childHasDisplayName = (child: ReactNode, name: string): boolean => {\n if (!isValidElement(child)) {\n return false;\n }\n const t = child.type as { displayName?: string } | string;\n return typeof t !== 'string' && t?.displayName === name;\n};\n\n/** Display names that mark a compound-mode child. */\nconst COMPOUND_DISPLAY_NAMES = ['Field.Label', 'Field.Description', 'Field.Error', 'Field.Control'];\n\nconst isCompoundChild = (child: ReactNode): boolean =>\n COMPOUND_DISPLAY_NAMES.some((name) => childHasDisplayName(child, name));\n\nexport type FieldProps = {\n // Shorthand slot props\n label?: ReactNode;\n description?: ReactNode;\n error?: ReactNode;\n\n // State flags\n name?: string;\n required?: boolean;\n disabled?: boolean;\n validating?: boolean;\n\n // Layout\n orientation?: 'vertical' | 'horizontal';\n id?: string;\n\n children: ReactNode;\n className?: string;\n testID?: string;\n};\n\ntype FieldRootInternalProps = FieldProps & { isGroup?: boolean };\n\nconst FieldRoot = ({\n name,\n required = false,\n disabled = false,\n error = null,\n label,\n description,\n validating = false,\n orientation = 'vertical',\n id,\n children,\n className,\n testID,\n isGroup = false,\n}: FieldRootInternalProps) => {\n const colors = useThemeColors();\n const reactId = useId();\n const fieldId = id ?? `nori-ui-field-${reactId}`;\n const labelId = `${fieldId}-label`;\n const descriptionId = `${fieldId}-desc`;\n const errorId = `${fieldId}-error`;\n\n // ---------- mode detection ----------\n const isCompoundMode = useMemo(() => {\n let found = false;\n Children.forEach(children, (child) => {\n if (isCompoundChild(child)) {\n found = true;\n }\n });\n return found;\n }, [children]);\n\n // ---------- derive hasDescription / hasError ----------\n const hasDescription = useMemo(() => {\n if (!isCompoundMode) {\n return description !== undefined && description !== null && description !== false && description !== '';\n }\n let found = false;\n Children.forEach(children, (child) => {\n if (childHasDisplayName(child, 'Field.Description')) {\n found = true;\n }\n });\n return found;\n }, [isCompoundMode, description, children]);\n\n const hasError = useMemo(() => {\n if (!isCompoundMode) {\n return Boolean(error);\n }\n // compound mode: scan for Field.Error child with truthy children\n let found = false;\n Children.forEach(children, (child) => {\n if (childHasDisplayName(child, 'Field.Error') && isValidElement(child)) {\n const el = child as ReactElement<{ children?: ReactNode }>;\n if (\n el.props.children !== undefined &&\n el.props.children !== null &&\n el.props.children !== false &&\n el.props.children !== ''\n ) {\n found = true;\n }\n }\n });\n // also check the legacy `error` prop usage in compound mode\n if (!found && error !== null && error !== undefined && error !== false && error !== '') {\n found = true;\n }\n return found;\n }, [isCompoundMode, error, children]);\n\n const describedBy = useMemo(() => {\n const ids: string[] = [];\n if (hasDescription) {\n ids.push(descriptionId);\n }\n if (hasError) {\n ids.push(errorId);\n }\n return ids.length === 0 ? undefined : ids.join(' ');\n }, [hasDescription, hasError, descriptionId, errorId]);\n\n const value: FieldContextValue = {\n fieldId,\n labelId,\n descriptionId,\n errorId,\n hasError,\n hasDescription,\n describedBy,\n disabled,\n required,\n validating,\n ...(name !== undefined ? { name } : {}),\n // In compound mode pass `error` (string) so Field.Error can fall back to it.\n // In shorthand mode the error prop may be ReactNode; only pass when it is a string/null.\n ...(error !== null && error !== undefined && typeof error === 'string' ? { error } : {}),\n isGroup,\n };\n\n // ---------- dev warning for mixed usage ----------\n const warnedRef = useRef(false);\n useEffect(() => {\n if (process.env.NODE_ENV === 'production' || warnedRef.current) {\n return;\n }\n const hasShorthand = label !== undefined || description !== undefined || error !== undefined;\n if (hasShorthand && isCompoundMode) {\n warnedRef.current = true;\n // biome-ignore lint/suspicious/noConsole: intentional dev-mode warning\n console.warn(\n '[Field] Mixing shorthand props (label/description/error) with compound children (Field.Label/Field.Description/Field.Error) is not supported. The compound children will win. To suppress this warning, use only one mode.'\n );\n }\n }, [label, description, error, isCompoundMode]);\n\n // ---------- layout ----------\n const containerStyle =\n orientation === 'horizontal'\n ? {\n flexDirection: 'row' as const,\n alignItems: 'flex-start' as const,\n gap: px(colors.spacing['3']),\n }\n : { flexDirection: 'column' as const, gap: px(colors.spacing['1']) };\n\n const containerExtra: Record<string, unknown> = {};\n if (testID !== undefined) {\n containerExtra.testID = testID;\n }\n containerExtra['data-orientation'] = orientation;\n if (isGroup) {\n containerExtra.role = 'group';\n containerExtra['aria-labelledby'] = labelId;\n containerExtra.accessibilityRole = 'none';\n }\n if (validating) {\n containerExtra['data-validating'] = '';\n containerExtra['aria-busy'] = true;\n }\n\n // ---------- shorthand mode rendering ----------\n const renderShorthand = () => {\n // Determine if there's exactly one non-Field.* child we can auto-wrap.\n const childArray = Children.toArray(children);\n const controlChild =\n childArray.length === 1 && isValidElement(childArray[0]) ? (childArray[0] as ReactElement) : null;\n\n return (\n <>\n {label !== undefined && label !== null && label !== false ? <FieldLabel>{label}</FieldLabel> : null}\n {description !== undefined && description !== null && description !== false && description !== '' ? (\n <FieldDescription>{description}</FieldDescription>\n ) : null}\n {controlChild !== null ? <FieldControl>{controlChild}</FieldControl> : children}\n {error !== undefined && error !== null && error !== false && error !== '' ? (\n <FieldError>{error}</FieldError>\n ) : null}\n </>\n );\n };\n\n return (\n <FieldContext.Provider value={value}>\n <View style={containerStyle} {...(className !== undefined ? { className } : {})} {...containerExtra}>\n {isCompoundMode ? children : renderShorthand()}\n {validating ? <Spinner size=\"sm\" /> : null}\n </View>\n </FieldContext.Provider>\n );\n};\n\nconst FieldLabel = ({ children }: { children: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Label');\n const colors = useThemeColors();\n const { t } = useTranslation();\n const requiredIndicator = t('field.requiredIndicator');\n const requiredLabel = t('field.requiredLabel');\n\n const focusInput = () => {\n if (typeof document !== 'undefined') {\n const el = document.getElementById(ctx.fieldId);\n if (el && typeof (el as HTMLElement).focus === 'function') {\n (el as HTMLElement).focus();\n }\n }\n };\n\n return (\n <Pressable onPress={focusInput} accessibilityRole=\"none\" disabled={ctx.disabled}>\n <RNText\n nativeID={ctx.labelId}\n {...({ id: ctx.labelId } as Record<string, unknown>)}\n accessibilityRole=\"text\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.medium as '500',\n color: ctx.disabled ? colors.semantic.text.muted : colors.semantic.text.default,\n }}\n >\n {children}\n {ctx.required ? (\n <RNText\n accessibilityLabel={requiredLabel}\n {...({ 'aria-label': requiredLabel } as Record<string, unknown>)}\n style={{ color: colors.color.danger }}\n >\n {` ${requiredIndicator}`}\n </RNText>\n ) : null}\n </RNText>\n </Pressable>\n );\n};\nFieldLabel.displayName = 'Field.Label';\n\nconst FieldControl = ({ children }: { children: ReactElement }) => {\n const ctx = useFieldContextStrict('Field.Control');\n if (Children.count(children) !== 1 || !isValidElement(children)) {\n throw new Error('[Field.Control] expects exactly one child element.');\n }\n const child = children as ReactElement<Record<string, unknown>>;\n const merged: Record<string, unknown> = {\n id: child.props.id ?? ctx.fieldId,\n accessibilityLabelledBy: ctx.labelId,\n 'aria-labelledby': ctx.labelId,\n };\n if (ctx.name !== undefined && child.props.name === undefined) {\n merged.name = ctx.name;\n }\n if (ctx.describedBy !== undefined) {\n merged['aria-describedby'] = ctx.describedBy;\n merged.accessibilityDescribedBy = ctx.describedBy;\n }\n if (ctx.hasError) {\n merged['aria-invalid'] = true;\n }\n if (ctx.required) {\n merged['aria-required'] = true;\n }\n if (ctx.disabled || child.props.disabled) {\n merged.disabled = true;\n }\n return cloneElement(child, merged);\n};\nFieldControl.displayName = 'Field.Control';\n\nconst FieldDescription = ({ children }: { children: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Description');\n const colors = useThemeColors();\n return (\n <RNText\n nativeID={ctx.descriptionId}\n {...({ id: ctx.descriptionId } as Record<string, unknown>)}\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {children}\n </RNText>\n );\n};\nFieldDescription.displayName = 'Field.Description';\n\nconst FieldError = ({ children }: { children?: ReactNode }) => {\n const ctx = useFieldContextStrict('Field.Error');\n const colors = useThemeColors();\n const content = children ?? ctx.error;\n if (content === null || content === undefined || content === '' || content === false) {\n return null;\n }\n return (\n <RNText\n nativeID={ctx.errorId}\n {...({ id: ctx.errorId, role: 'alert' } as Record<string, unknown>)}\n accessibilityRole=\"text\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.color.danger,\n }}\n >\n {content}\n </RNText>\n );\n};\nFieldError.displayName = 'Field.Error';\n\nexport type FieldGroupProps = Omit<FieldProps, 'name'>;\n\nconst FieldGroup = (props: FieldGroupProps) => <FieldRoot {...(props as FieldProps)} isGroup />;\nFieldGroup.displayName = 'Field.Group';\n\nexport const Field = Object.assign(FieldRoot as (props: FieldProps) => ReactElement, {\n Label: FieldLabel,\n Description: FieldDescription,\n Control: FieldControl,\n Error: FieldError,\n Group: FieldGroup,\n});\n"]}
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React from 'react';
2
2
  import { ReactNode, ReactElement } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
@@ -33,7 +33,7 @@ declare const Field: ((props: FieldProps) => ReactElement) & {
33
33
  Control: {
34
34
  ({ children }: {
35
35
  children: ReactElement;
36
- }): ReactElement<Record<string, unknown>, string | react.JSXElementConstructor<any>>;
36
+ }): ReactElement<Record<string, unknown>, string | React.JSXElementConstructor<any>>;
37
37
  displayName: string;
38
38
  };
39
39
  Error: {
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React from 'react';
2
2
  import { ReactNode, ReactElement } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
@@ -33,7 +33,7 @@ declare const Field: ((props: FieldProps) => ReactElement) & {
33
33
  Control: {
34
34
  ({ children }: {
35
35
  children: ReactElement;
36
- }): ReactElement<Record<string, unknown>, string | react.JSXElementConstructor<any>>;
36
+ }): ReactElement<Record<string, unknown>, string | React.JSXElementConstructor<any>>;
37
37
  displayName: string;
38
38
  };
39
39
  Error: {
@@ -1,7 +1,7 @@
1
- export { Field } from '../../chunk-2UXKXUX2.js';
1
+ export { Field } from '../../chunk-CPIKN4BX.js';
2
2
  import '../../chunk-ACLHDHX3.js';
3
- import '../../chunk-MJ4AGXS7.js';
4
- import '../../chunk-6PO2IWB3.js';
3
+ import '../../chunk-GJMHNEQ3.js';
4
+ import '../../chunk-4UFAZLSZ.js';
5
5
  import '../../chunk-5A2QOOVN.js';
6
6
  import '../../chunk-R5JMDDCB.js';
7
7
  import '../../chunk-WCQVDF3K.js';
@@ -95,7 +95,9 @@ var defaultDictionary = {
95
95
  "switch.off": "Off",
96
96
  // field
97
97
  "field.requiredIndicator": "*",
98
- "field.requiredLabel": "required"
98
+ "field.requiredLabel": "required",
99
+ // table / dataTable
100
+ "table.empty": "No data"
99
101
  };
100
102
 
101
103
  // src/i18n/resolve.ts