@nori-ui/core 1.4.0 → 1.6.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 (176) 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-HZKXPN6B.js → chunk-2HMQDJ22.js} +4 -4
  4. package/dist/{chunk-HZKXPN6B.js.map → chunk-2HMQDJ22.js.map} +1 -1
  5. package/dist/{chunk-KCLWPSV5.js → chunk-2RL6WCFC.js} +4 -4
  6. package/dist/{chunk-KCLWPSV5.js.map → chunk-2RL6WCFC.js.map} +1 -1
  7. package/dist/{chunk-FDBQOQMW.js → chunk-3BDDPFCI.js} +3 -3
  8. package/dist/{chunk-FDBQOQMW.js.map → chunk-3BDDPFCI.js.map} +1 -1
  9. package/dist/{chunk-WOF67PKT.js → chunk-3CEJ5TB4.js} +3 -3
  10. package/dist/{chunk-WOF67PKT.js.map → chunk-3CEJ5TB4.js.map} +1 -1
  11. package/dist/{chunk-BNDUQNG7.js → chunk-3OIWAS2P.js} +3 -3
  12. package/dist/{chunk-BNDUQNG7.js.map → chunk-3OIWAS2P.js.map} +1 -1
  13. package/dist/{chunk-6JVUVBZH.js → chunk-4PUPKWEP.js} +5 -5
  14. package/dist/{chunk-6JVUVBZH.js.map → chunk-4PUPKWEP.js.map} +1 -1
  15. package/dist/{chunk-6PO2IWB3.js → chunk-4UFAZLSZ.js} +5 -3
  16. package/dist/chunk-4UFAZLSZ.js.map +1 -0
  17. package/dist/{chunk-V2AWSDDZ.js → chunk-5PSC5HT4.js} +8 -125
  18. package/dist/chunk-5PSC5HT4.js.map +1 -0
  19. package/dist/{chunk-LWQZ257T.js → chunk-5XEGZFG5.js} +3 -3
  20. package/dist/{chunk-LWQZ257T.js.map → chunk-5XEGZFG5.js.map} +1 -1
  21. package/dist/{chunk-WAKKQROH.js → chunk-6AD6KCVB.js} +3 -3
  22. package/dist/{chunk-WAKKQROH.js.map → chunk-6AD6KCVB.js.map} +1 -1
  23. package/dist/chunk-73CUV7MW.js +125 -0
  24. package/dist/chunk-73CUV7MW.js.map +1 -0
  25. package/dist/{chunk-GRDVE3IR.js → chunk-BZLT6R62.js} +3 -3
  26. package/dist/{chunk-GRDVE3IR.js.map → chunk-BZLT6R62.js.map} +1 -1
  27. package/dist/{chunk-Y4ZRSW35.js → chunk-CCUXO2HN.js} +3 -3
  28. package/dist/{chunk-Y4ZRSW35.js.map → chunk-CCUXO2HN.js.map} +1 -1
  29. package/dist/{chunk-2UXKXUX2.js → chunk-CPIKN4BX.js} +3 -3
  30. package/dist/{chunk-2UXKXUX2.js.map → chunk-CPIKN4BX.js.map} +1 -1
  31. package/dist/{chunk-46OT4PA6.js → chunk-DDGMLLS3.js} +3 -3
  32. package/dist/{chunk-46OT4PA6.js.map → chunk-DDGMLLS3.js.map} +1 -1
  33. package/dist/{chunk-XP55RZ3D.js → chunk-FEPTH5RV.js} +3 -3
  34. package/dist/{chunk-XP55RZ3D.js.map → chunk-FEPTH5RV.js.map} +1 -1
  35. package/dist/{chunk-MJ4AGXS7.js → chunk-GJMHNEQ3.js} +3 -3
  36. package/dist/{chunk-MJ4AGXS7.js.map → chunk-GJMHNEQ3.js.map} +1 -1
  37. package/dist/{chunk-VCJF75T2.js → chunk-JQQ3FBN7.js} +3 -3
  38. package/dist/{chunk-VCJF75T2.js.map → chunk-JQQ3FBN7.js.map} +1 -1
  39. package/dist/chunk-JXLEMBDB.js +11 -0
  40. package/dist/chunk-JXLEMBDB.js.map +1 -0
  41. package/dist/{chunk-W3HMOOON.js → chunk-JZ774T7U.js} +3 -3
  42. package/dist/{chunk-W3HMOOON.js.map → chunk-JZ774T7U.js.map} +1 -1
  43. package/dist/{chunk-SINLREQV.js → chunk-MKSDYRWQ.js} +3 -3
  44. package/dist/{chunk-SINLREQV.js.map → chunk-MKSDYRWQ.js.map} +1 -1
  45. package/dist/{chunk-AFQIK6JI.js → chunk-MRJWPRCX.js} +3 -3
  46. package/dist/{chunk-AFQIK6JI.js.map → chunk-MRJWPRCX.js.map} +1 -1
  47. package/dist/{chunk-EFK7726V.js → chunk-NF7XG2FG.js} +3 -3
  48. package/dist/{chunk-EFK7726V.js.map → chunk-NF7XG2FG.js.map} +1 -1
  49. package/dist/{chunk-WTNDPO2V.js → chunk-NNFJKRXZ.js} +3 -3
  50. package/dist/{chunk-WTNDPO2V.js.map → chunk-NNFJKRXZ.js.map} +1 -1
  51. package/dist/{chunk-CGQIVFCN.js → chunk-NRYWNOG5.js} +3 -3
  52. package/dist/{chunk-CGQIVFCN.js.map → chunk-NRYWNOG5.js.map} +1 -1
  53. package/dist/{chunk-HTF6FDB6.js → chunk-OMU4R4Y5.js} +3 -3
  54. package/dist/{chunk-HTF6FDB6.js.map → chunk-OMU4R4Y5.js.map} +1 -1
  55. package/dist/{chunk-C6TRLHMW.js → chunk-PABG3IJ6.js} +3 -3
  56. package/dist/{chunk-C6TRLHMW.js.map → chunk-PABG3IJ6.js.map} +1 -1
  57. package/dist/{chunk-RM5TSXVE.js → chunk-PNP7L4TA.js} +3 -3
  58. package/dist/{chunk-RM5TSXVE.js.map → chunk-PNP7L4TA.js.map} +1 -1
  59. package/dist/{chunk-L5X4SYJ4.js → chunk-PZS4A4VQ.js} +3 -3
  60. package/dist/{chunk-L5X4SYJ4.js.map → chunk-PZS4A4VQ.js.map} +1 -1
  61. package/dist/{chunk-4I37QSEM.js → chunk-QJVS2VXS.js} +5 -5
  62. package/dist/{chunk-4I37QSEM.js.map → chunk-QJVS2VXS.js.map} +1 -1
  63. package/dist/{chunk-H7MFAFV4.js → chunk-RUWD35UI.js} +4 -4
  64. package/dist/{chunk-H7MFAFV4.js.map → chunk-RUWD35UI.js.map} +1 -1
  65. package/dist/{chunk-5BM6H2CD.js → chunk-SFNDR6DI.js} +3 -3
  66. package/dist/{chunk-5BM6H2CD.js.map → chunk-SFNDR6DI.js.map} +1 -1
  67. package/dist/{chunk-UF5OENHV.js → chunk-TLS54G6Y.js} +3 -3
  68. package/dist/{chunk-UF5OENHV.js.map → chunk-TLS54G6Y.js.map} +1 -1
  69. package/dist/{chunk-UUXWRDWW.js → chunk-UJWCEGQY.js} +3 -3
  70. package/dist/{chunk-UUXWRDWW.js.map → chunk-UJWCEGQY.js.map} +1 -1
  71. package/dist/{chunk-UJ5KFRDE.js → chunk-UZD77M3J.js} +3 -3
  72. package/dist/{chunk-UJ5KFRDE.js.map → chunk-UZD77M3J.js.map} +1 -1
  73. package/dist/chunk-VP7DRJUZ.js +3 -0
  74. package/dist/chunk-VP7DRJUZ.js.map +1 -0
  75. package/dist/{chunk-UPVNZPFV.js → chunk-VYRJ7OE5.js} +3 -3
  76. package/dist/{chunk-UPVNZPFV.js.map → chunk-VYRJ7OE5.js.map} +1 -1
  77. package/dist/{chunk-IGLMPAWE.js → chunk-WGT345SV.js} +3 -3
  78. package/dist/{chunk-IGLMPAWE.js.map → chunk-WGT345SV.js.map} +1 -1
  79. package/dist/{chunk-XXBN6CIK.js → chunk-WP2Z2ATO.js} +5 -5
  80. package/dist/{chunk-XXBN6CIK.js.map → chunk-WP2Z2ATO.js.map} +1 -1
  81. package/dist/chunk-WYPGQVDV.js +145 -0
  82. package/dist/chunk-WYPGQVDV.js.map +1 -0
  83. package/dist/{chunk-GELLSU64.js → chunk-XALU6LOT.js} +3 -3
  84. package/dist/{chunk-GELLSU64.js.map → chunk-XALU6LOT.js.map} +1 -1
  85. package/dist/{chunk-VMAGFYHG.js → chunk-Y5TJ7CAX.js} +3 -3
  86. package/dist/{chunk-VMAGFYHG.js.map → chunk-Y5TJ7CAX.js.map} +1 -1
  87. package/dist/chunk-YZ27OS2R.js +202 -0
  88. package/dist/chunk-YZ27OS2R.js.map +1 -0
  89. package/dist/client.cjs +453 -119
  90. package/dist/client.cjs.map +1 -1
  91. package/dist/client.d.cts +4 -0
  92. package/dist/client.d.ts +4 -0
  93. package/dist/client.js +50 -45
  94. package/dist/client.js.map +1 -1
  95. package/dist/components/Accordion/index.js +2 -2
  96. package/dist/components/Alert/index.js +2 -2
  97. package/dist/components/AlertDialog/index.js +2 -2
  98. package/dist/components/Avatar/index.js +2 -2
  99. package/dist/components/Badge/index.js +2 -2
  100. package/dist/components/Box/index.js +4 -4
  101. package/dist/components/Breadcrumb/index.cjs +3 -1
  102. package/dist/components/Breadcrumb/index.cjs.map +1 -1
  103. package/dist/components/Breadcrumb/index.js +5 -5
  104. package/dist/components/Button/index.js +2 -2
  105. package/dist/components/Calendar/index.cjs +3 -1
  106. package/dist/components/Calendar/index.cjs.map +1 -1
  107. package/dist/components/Calendar/index.js +5 -5
  108. package/dist/components/Card/index.js +2 -2
  109. package/dist/components/Checkbox/index.js +2 -2
  110. package/dist/components/Combobox/index.cjs +1374 -0
  111. package/dist/components/Combobox/index.cjs.map +1 -0
  112. package/dist/components/Combobox/index.d.cts +17 -0
  113. package/dist/components/Combobox/index.d.ts +17 -0
  114. package/dist/components/Combobox/index.js +9 -0
  115. package/dist/components/Combobox/index.js.map +1 -0
  116. package/dist/components/ContextMenu/index.js +4 -4
  117. package/dist/components/DataTable/index.cjs +770 -0
  118. package/dist/components/DataTable/index.cjs.map +1 -0
  119. package/dist/components/DataTable/index.d.cts +53 -0
  120. package/dist/components/DataTable/index.d.ts +53 -0
  121. package/dist/components/DataTable/index.js +8 -0
  122. package/dist/components/DataTable/index.js.map +1 -0
  123. package/dist/components/DatePicker/index.cjs +3 -1
  124. package/dist/components/DatePicker/index.cjs.map +1 -1
  125. package/dist/components/DatePicker/index.js +7 -7
  126. package/dist/components/Dialog/index.js +2 -2
  127. package/dist/components/DropdownMenu/index.js +3 -3
  128. package/dist/components/Field/index.cjs +3 -1
  129. package/dist/components/Field/index.cjs.map +1 -1
  130. package/dist/components/Field/index.d.cts +2 -2
  131. package/dist/components/Field/index.d.ts +2 -2
  132. package/dist/components/Field/index.js +3 -3
  133. package/dist/components/FloatButton/index.cjs +3 -1
  134. package/dist/components/FloatButton/index.cjs.map +1 -1
  135. package/dist/components/FloatButton/index.js +5 -5
  136. package/dist/components/HStack/index.js +4 -4
  137. package/dist/components/InputGroup/index.js +2 -2
  138. package/dist/components/Label/index.cjs +3 -1
  139. package/dist/components/Label/index.cjs.map +1 -1
  140. package/dist/components/Label/index.js +3 -3
  141. package/dist/components/Pagination/index.cjs +3 -1
  142. package/dist/components/Pagination/index.cjs.map +1 -1
  143. package/dist/components/Pagination/index.js +6 -5
  144. package/dist/components/Popover/index.js +2 -2
  145. package/dist/components/Progress/index.js +2 -2
  146. package/dist/components/Radio/index.js +2 -2
  147. package/dist/components/SegmentedControl/index.js +2 -2
  148. package/dist/components/Select/index.js +2 -2
  149. package/dist/components/Sheet/index.js +2 -2
  150. package/dist/components/Switch/index.js +2 -2
  151. package/dist/components/Table/index.cjs +461 -0
  152. package/dist/components/Table/index.cjs.map +1 -0
  153. package/dist/components/Table/index.d.cts +16 -0
  154. package/dist/components/Table/index.d.ts +16 -0
  155. package/dist/components/Table/index.js +7 -0
  156. package/dist/components/Table/index.js.map +1 -0
  157. package/dist/components/Tabs/index.js +2 -2
  158. package/dist/components/Text/index.js +2 -2
  159. package/dist/components/TextArea/index.js +3 -3
  160. package/dist/components/TextInput/index.js +2 -2
  161. package/dist/components/Toggle/index.js +2 -2
  162. package/dist/components/Tooltip/index.js +2 -2
  163. package/dist/components/VStack/index.js +4 -4
  164. package/dist/i18n/index.cjs +3 -1
  165. package/dist/i18n/index.cjs.map +1 -1
  166. package/dist/i18n/index.js +1 -1
  167. package/dist/index.cjs +453 -119
  168. package/dist/index.cjs.map +1 -1
  169. package/dist/index.d.cts +4 -0
  170. package/dist/index.d.ts +4 -0
  171. package/dist/index.js +47 -42
  172. package/dist/slot/index.d.cts +2 -2
  173. package/dist/slot/index.d.ts +2 -2
  174. package/package.json +1 -1
  175. package/dist/chunk-6PO2IWB3.js.map +0 -1
  176. package/dist/chunk-V2AWSDDZ.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -9,7 +9,9 @@ export { Button, ButtonProps, ButtonSize, ButtonVariant } from './components/But
9
9
  export { Calendar, CalendarBehavior, CalendarCaption, CalendarCaptionProps, CalendarChangeMeta, CalendarMode, CalendarProps, CalendarValue, CalendarView, CaptionContextValue, CaptionOption, DateRange, DayContext, useCalendarCaption } from './components/Calendar/index.cjs';
10
10
  export { Card, CardProps, CardSectionProps, CardTextProps } from './components/Card/index.cjs';
11
11
  export { Checkbox, CheckboxProps } from './components/Checkbox/index.cjs';
12
+ export { Combobox } from './components/Combobox/index.cjs';
12
13
  export { ContextMenu, ContextMenuContentProps, ContextMenuProps, ContextMenuTriggerProps } from './components/ContextMenu/index.cjs';
14
+ export { Column, DataTable, DataTableProps, SortDirection, SortState } from './components/DataTable/index.cjs';
13
15
  export { DatePicker, DatePickerProps, DatePickerRangeProps, DateRangeValue } from './components/DatePicker/index.cjs';
14
16
  export { Dialog, DialogCloseProps, DialogContentProps, DialogFooterProps, DialogProps, DialogTextProps, DialogTriggerProps } from './components/Dialog/index.cjs';
15
17
  export { DropdownMenu, DropdownMenuContentProps, DropdownMenuProps, DropdownMenuTriggerProps, MenuContent, MenuContentProps, MenuItem, MenuItemProps, MenuLabel, MenuLabelProps, MenuSeparator, MenuSeparatorProps } from './components/DropdownMenu/index.cjs';
@@ -30,6 +32,8 @@ export { Skeleton, SkeletonProps } from './components/Skeleton/index.cjs';
30
32
  export { Slider, SliderDirection, SliderGestureProvider, SliderOrientation, SliderProps, useSliderInteractionActive } from './components/Slider/index.cjs';
31
33
  export { Spinner, SpinnerProps, SpinnerSize } from './components/Spinner/index.cjs';
32
34
  export { Switch, SwitchProps } from './components/Switch/index.cjs';
35
+ export { T as TableAlign, a as TableCaptionProps, b as TableCellProps, c as TableHeaderCellProps, d as TableProps, e as TableRowProps, f as TableSectionProps } from './Table.shared-BymRgTnY.cjs';
36
+ export { Table } from './components/Table/index.cjs';
33
37
  export { Tabs, TabsActivation, TabsContentProps, TabsListProps, TabsOrientation, TabsProps, TabsTriggerProps } from './components/Tabs/index.cjs';
34
38
  export { Text, TextProps, TextVariant } from './components/Text/index.cjs';
35
39
  export { TextArea, TextAreaProps } from './components/TextArea/index.cjs';
package/dist/index.d.ts CHANGED
@@ -9,7 +9,9 @@ export { Button, ButtonProps, ButtonSize, ButtonVariant } from './components/But
9
9
  export { Calendar, CalendarBehavior, CalendarCaption, CalendarCaptionProps, CalendarChangeMeta, CalendarMode, CalendarProps, CalendarValue, CalendarView, CaptionContextValue, CaptionOption, DateRange, DayContext, useCalendarCaption } from './components/Calendar/index.js';
10
10
  export { Card, CardProps, CardSectionProps, CardTextProps } from './components/Card/index.js';
11
11
  export { Checkbox, CheckboxProps } from './components/Checkbox/index.js';
12
+ export { Combobox } from './components/Combobox/index.js';
12
13
  export { ContextMenu, ContextMenuContentProps, ContextMenuProps, ContextMenuTriggerProps } from './components/ContextMenu/index.js';
14
+ export { Column, DataTable, DataTableProps, SortDirection, SortState } from './components/DataTable/index.js';
13
15
  export { DatePicker, DatePickerProps, DatePickerRangeProps, DateRangeValue } from './components/DatePicker/index.js';
14
16
  export { Dialog, DialogCloseProps, DialogContentProps, DialogFooterProps, DialogProps, DialogTextProps, DialogTriggerProps } from './components/Dialog/index.js';
15
17
  export { DropdownMenu, DropdownMenuContentProps, DropdownMenuProps, DropdownMenuTriggerProps, MenuContent, MenuContentProps, MenuItem, MenuItemProps, MenuLabel, MenuLabelProps, MenuSeparator, MenuSeparatorProps } from './components/DropdownMenu/index.js';
@@ -30,6 +32,8 @@ export { Skeleton, SkeletonProps } from './components/Skeleton/index.js';
30
32
  export { Slider, SliderDirection, SliderGestureProvider, SliderOrientation, SliderProps, useSliderInteractionActive } from './components/Slider/index.js';
31
33
  export { Spinner, SpinnerProps, SpinnerSize } from './components/Spinner/index.js';
32
34
  export { Switch, SwitchProps } from './components/Switch/index.js';
35
+ export { T as TableAlign, a as TableCaptionProps, b as TableCellProps, c as TableHeaderCellProps, d as TableProps, e as TableRowProps, f as TableSectionProps } from './Table.shared-BymRgTnY.js';
36
+ export { Table } from './components/Table/index.js';
33
37
  export { Tabs, TabsActivation, TabsContentProps, TabsListProps, TabsOrientation, TabsProps, TabsTriggerProps } from './components/Tabs/index.js';
34
38
  export { Text, TextProps, TextVariant } from './components/Text/index.js';
35
39
  export { TextArea, TextAreaProps } from './components/TextArea/index.js';
package/dist/index.js CHANGED
@@ -1,59 +1,64 @@
1
1
  import './chunk-BRCCWMGJ.js';
2
- export { Tooltip } from './chunk-CGQIVFCN.js';
3
- export { VStack } from './chunk-AFQIK6JI.js';
2
+ export { Toaster, toast } from './chunk-LWLK6HSW.js';
3
+ export { Toggle } from './chunk-MKSDYRWQ.js';
4
+ export { Tooltip } from './chunk-NRYWNOG5.js';
5
+ export { VStack } from './chunk-MRJWPRCX.js';
4
6
  import './chunk-MDOZGILD.js';
5
7
  import './chunk-QI6646JZ.js';
6
8
  export { Icon } from './chunk-33S7ADWM.js';
7
- export { Switch } from './chunk-VMAGFYHG.js';
8
- export { Tabs } from './chunk-GELLSU64.js';
9
- export { TextArea } from './chunk-UPVNZPFV.js';
10
- export { TextInput } from './chunk-EFK7726V.js';
11
- export { Toaster, toast } from './chunk-LWLK6HSW.js';
12
- export { Toggle } from './chunk-SINLREQV.js';
13
- export { Progress } from './chunk-XP55RZ3D.js';
14
- export { Radio } from './chunk-C6TRLHMW.js';
15
- export { SegmentedControl } from './chunk-WAKKQROH.js';
16
- export { Separator } from './chunk-7UKRN73P.js';
17
- export { Drawer, Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetTitle, SheetTrigger } from './chunk-BNDUQNG7.js';
18
9
  export { Skeleton } from './chunk-JSAG5YO7.js';
19
10
  export { Slider, SliderGestureProvider, useSliderInteractionActive } from './chunk-ZMSIYLSI.js';
11
+ export { Switch } from './chunk-Y5TJ7CAX.js';
12
+ import './chunk-VP7DRJUZ.js';
13
+ export { Tabs } from './chunk-XALU6LOT.js';
14
+ export { TextArea } from './chunk-VYRJ7OE5.js';
15
+ export { TextInput } from './chunk-NF7XG2FG.js';
16
+ export { PAGINATION_COMPACT_BREAKPOINT, Pagination } from './chunk-5PSC5HT4.js';
17
+ export { Progress } from './chunk-FEPTH5RV.js';
18
+ export { Radio } from './chunk-PABG3IJ6.js';
19
+ export { SegmentedControl } from './chunk-6AD6KCVB.js';
20
+ export { Separator } from './chunk-7UKRN73P.js';
21
+ export { Drawer, Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetTitle, SheetTrigger } from './chunk-3OIWAS2P.js';
22
+ export { DatePicker } from './chunk-WP2Z2ATO.js';
23
+ export { Dialog } from './chunk-WGT345SV.js';
20
24
  import './chunk-2PESUXE3.js';
21
- export { Field } from './chunk-2UXKXUX2.js';
22
- export { FloatButton } from './chunk-6JVUVBZH.js';
23
- export { HStack } from './chunk-GRDVE3IR.js';
24
- export { InputGroup } from './chunk-UUXWRDWW.js';
25
- export { Label } from './chunk-WOF67PKT.js';
26
- export { PAGINATION_COMPACT_BREAKPOINT, Pagination, usePagination } from './chunk-V2AWSDDZ.js';
27
- export { Breadcrumb, getBreadcrumbJsonLd } from './chunk-4I37QSEM.js';
28
- export { Button } from './chunk-LWQZ257T.js';
29
- export { Spinner } from './chunk-ACLHDHX3.js';
30
- export { Card } from './chunk-HTF6FDB6.js';
31
- export { Checkbox } from './chunk-WTNDPO2V.js';
32
- export { ContextMenu } from './chunk-KCLWPSV5.js';
33
- export { DropdownMenu, MenuContent, MenuItem, MenuLabel, MenuSeparator } from './chunk-H7MFAFV4.js';
34
- export { DatePicker } from './chunk-XXBN6CIK.js';
25
+ export { Field } from './chunk-CPIKN4BX.js';
26
+ export { FloatButton } from './chunk-4PUPKWEP.js';
27
+ export { HStack } from './chunk-BZLT6R62.js';
28
+ export { InputGroup } from './chunk-UJWCEGQY.js';
29
+ export { Label } from './chunk-3CEJ5TB4.js';
30
+ export { Breadcrumb, getBreadcrumbJsonLd } from './chunk-QJVS2VXS.js';
35
31
  import './chunk-ZPUYNM37.js';
36
- export { Calendar, useCalendarCaption } from './chunk-HZKXPN6B.js';
37
- export { Select } from './chunk-UJ5KFRDE.js';
38
- import './chunk-MJ4AGXS7.js';
39
- export { defaultDictionary, resolveI18n } from './chunk-6PO2IWB3.js';
40
- export { Popover, usePopoverContext } from './chunk-L5X4SYJ4.js';
41
- export { Dialog } from './chunk-IGLMPAWE.js';
42
- export { Accordion } from './chunk-Y4ZRSW35.js';
32
+ export { Button } from './chunk-5XEGZFG5.js';
33
+ export { Spinner } from './chunk-ACLHDHX3.js';
34
+ export { Calendar, useCalendarCaption } from './chunk-2HMQDJ22.js';
35
+ import './chunk-GJMHNEQ3.js';
36
+ export { defaultDictionary, resolveI18n } from './chunk-4UFAZLSZ.js';
37
+ export { Card } from './chunk-OMU4R4Y5.js';
38
+ export { Checkbox } from './chunk-NNFJKRXZ.js';
39
+ export { Combobox } from './chunk-JXLEMBDB.js';
40
+ export { Select } from './chunk-UZD77M3J.js';
41
+ export { ContextMenu } from './chunk-2RL6WCFC.js';
42
+ export { DropdownMenu, MenuContent, MenuItem, MenuLabel, MenuSeparator } from './chunk-RUWD35UI.js';
43
+ export { Popover, usePopoverContext } from './chunk-PZS4A4VQ.js';
44
+ export { DataTable } from './chunk-YZ27OS2R.js';
45
+ export { Table } from './chunk-WYPGQVDV.js';
46
+ export { usePagination } from './chunk-73CUV7MW.js';
47
+ export { Accordion } from './chunk-CCUXO2HN.js';
43
48
  import './chunk-RB3YBWQ4.js';
44
49
  import './chunk-RGJ3NBKE.js';
45
- export { Alert } from './chunk-46OT4PA6.js';
50
+ export { Alert } from './chunk-DDGMLLS3.js';
46
51
  export { defaultSemanticIcons } from './chunk-7Z4NMNX6.js';
47
- export { AlertDialog } from './chunk-5BM6H2CD.js';
52
+ export { AlertDialog } from './chunk-SFNDR6DI.js';
48
53
  import './chunk-KWRDJPP3.js';
49
54
  export { Slot, composeRefs } from './chunk-ZIBNLXIV.js';
50
- export { Avatar } from './chunk-RM5TSXVE.js';
51
- export { Badge } from './chunk-FDBQOQMW.js';
52
- export { Box } from './chunk-UF5OENHV.js';
53
- import './chunk-VCJF75T2.js';
54
- export { Text } from './chunk-W3HMOOON.js';
55
- export { cn } from './chunk-CHXHRJNZ.js';
55
+ export { Avatar } from './chunk-PNP7L4TA.js';
56
+ export { Badge } from './chunk-3BDDPFCI.js';
57
+ export { Box } from './chunk-TLS54G6Y.js';
58
+ import './chunk-JQQ3FBN7.js';
59
+ export { Text } from './chunk-JZ774T7U.js';
56
60
  import './chunk-5A2QOOVN.js';
61
+ export { cn } from './chunk-CHXHRJNZ.js';
57
62
  export { theme, themeDark } from './chunk-R5JMDDCB.js';
58
63
  import './chunk-WCQVDF3K.js';
59
64
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React$1 from 'react';
2
2
  import { Ref, RefCallback } from 'react';
3
3
 
4
4
  type PossibleRef<T> = Ref<T> | undefined;
@@ -8,6 +8,6 @@ type AnyProps = Record<string, unknown>;
8
8
  type SlotProps = {
9
9
  children?: React.ReactNode;
10
10
  } & AnyProps;
11
- declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
11
+ declare const Slot: React$1.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & React$1.RefAttributes<unknown>>;
12
12
 
13
13
  export { Slot, type SlotProps, composeRefs };
@@ -1,4 +1,4 @@
1
- import * as react from 'react';
1
+ import * as React$1 from 'react';
2
2
  import { Ref, RefCallback } from 'react';
3
3
 
4
4
  type PossibleRef<T> = Ref<T> | undefined;
@@ -8,6 +8,6 @@ type AnyProps = Record<string, unknown>;
8
8
  type SlotProps = {
9
9
  children?: React.ReactNode;
10
10
  } & AnyProps;
11
- declare const Slot: react.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & react.RefAttributes<unknown>>;
11
+ declare const Slot: React$1.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & React$1.RefAttributes<unknown>>;
12
12
 
13
13
  export { Slot, type SlotProps, composeRefs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nori-ui/core",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "React Native + React Native Web UI component library. Expo-first, NativeWind v4, Figma design tokens, AI-queryable docs.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n/default-dictionary.ts","../src/i18n/resolve.ts"],"names":[],"mappings":"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","file":"chunk-6PO2IWB3.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","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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Pagination/use-pagination.ts","../src/components/Pagination/Pagination.tsx"],"names":["next","RNText","useState","useMemo","useRef","useCallback","RNTextInput"],"mappings":"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","file":"chunk-V2AWSDDZ.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","'use client';\n\nimport {\n type ComponentProps,\n createContext,\n type FC,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Platform, Pressable, Text as RNText, TextInput as RNTextInput, useWindowDimensions, View } from 'react-native';\nimport { useTranslation } from '../../i18n/use-translation';\nimport { Slot } from '../../slot';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport { Select, type SelectOption } from '../Select';\nimport { type PaginationItemDescriptor, type PaginationItemType, usePagination } from './use-pagination';\n\n// =============================================================================\n// Public types\n// =============================================================================\n\nexport { type UsePaginationArgs, type UsePaginationReturn, usePagination } from './use-pagination';\nexport type { PaginationItemDescriptor, PaginationItemType };\n\nexport type PaginationVariant = 'auto' | 'numbered' | 'compact';\n\nexport type PaginationRenderItemArgs = {\n type: PaginationItemType;\n page?: number;\n selected: boolean;\n disabled: boolean;\n ariaLabel: string;\n ariaCurrent?: 'page';\n children: ReactNode;\n onPress: () => void;\n};\n\nexport type PaginationOnPageChange = (page: number, meta?: { pageSize?: number }) => void;\n\nexport type PaginationProps = {\n /** Controlled current page (1-indexed). */\n page?: number;\n /** Initial page when uncontrolled (1-indexed). @defaultValue 1 */\n defaultPage?: number;\n /** Total number of pages. Required. */\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 /** Show first/last buttons. @defaultValue false */\n showFirstLast?: boolean;\n /** Hide the entire component when `pageCount <= 1`. @defaultValue true */\n hideOnSinglePage?: boolean;\n /**\n * Force a UI variant. `auto` swaps to `compact` on viewports under\n * `PAGINATION_COMPACT_BREAKPOINT` px wide.\n * @defaultValue 'auto'\n */\n variant?: PaginationVariant;\n /** Render the \"Showing X–Y of Z\" range automatically. @defaultValue false */\n showRange?: boolean;\n /** Total item count — needed by `Pagination.Range` and `Pagination.PageSize`. */\n itemCount?: number;\n /** Items per page — needed by `Pagination.Range` and `Pagination.PageSize`. */\n pageSize?: number;\n /** Fired on every page (or page-size) change. */\n onPageChange?: PaginationOnPageChange;\n /** Render-prop slot for each item. Same signature on web + native. */\n renderItem?: (args: PaginationRenderItemArgs) => ReactNode;\n /** RTL override. @defaultValue 'ltr' */\n dir?: 'ltr' | 'rtl';\n /** Override individual labels (otherwise sourced from `useTranslation`). */\n previousLabel?: string;\n nextLabel?: string;\n firstLabel?: string;\n lastLabel?: string;\n /** Override the nav landmark label. */\n ariaLabel?: string;\n className?: string;\n testID?: string;\n /** Provide compound children to opt out of the items-array shorthand. */\n children?: ReactNode;\n};\n\n/** Viewport width below which `variant=\"auto\"` switches to `compact`. */\nexport const PAGINATION_COMPACT_BREAKPOINT = 480;\n\n// =============================================================================\n// Context (used by both compound parts and the shorthand's internal layout)\n// =============================================================================\n\ntype PaginationContextValue = {\n page: number;\n pageCount: number;\n pageSize: number | undefined;\n itemCount: number | undefined;\n siblingCount: number;\n boundaryCount: number;\n showFirstLast: boolean;\n dir: 'ltr' | 'rtl';\n labels: {\n prev: string;\n next: string;\n first: string;\n last: string;\n gotoPage: (page: number) => string;\n ellipsis: string;\n currentPage: string;\n rangeFmt: (from: number, to: number, total: number) => string;\n pageOfFmt: (page: number, total: number) => string;\n pageSize: string;\n jumperLabel: string;\n jumperPlaceholder: string;\n };\n renderItem?: (args: PaginationRenderItemArgs) => ReactNode;\n goToPage: (page: number) => void;\n setPageSize: (next: number) => void;\n};\n\nconst PaginationContext = createContext<PaginationContextValue | null>(null);\n\nconst usePaginationContext = (label: string): PaginationContextValue => {\n const ctx = useContext(PaginationContext);\n if (!ctx) {\n throw new Error(`<${label}> must be rendered inside a <Pagination> or <Pagination.Root>.`);\n }\n return ctx;\n};\n\n// =============================================================================\n// Default item button (used when `renderItem` is not provided)\n// =============================================================================\n\ntype ItemButtonProps = {\n type: PaginationItemType;\n page?: number;\n selected: boolean;\n disabled: boolean;\n ariaLabel: string;\n ariaCurrent?: 'page';\n label: ReactNode;\n onPress: () => void;\n testID?: string;\n};\n\nconst ItemButton = ({ type, selected, disabled, ariaLabel, ariaCurrent, label, onPress, testID }: ItemButtonProps) => {\n const colors = useThemeColors();\n const isChevron = type === 'prev' || type === 'next' || type === 'first' || type === 'last';\n const isInteractive = !disabled && type !== 'ellipsis';\n const size = px(colors.spacing['8']); // 32px — minimum touch target\n\n if (type === 'ellipsis') {\n // Ellipsis is presentational; no button chrome, no padding — just a\n // balanced spacer that keeps the row's rhythm intact.\n return (\n <View\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n minWidth: size,\n minHeight: size,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n // Optical adjust so the dots sit on the row baseline.\n marginTop: -2,\n letterSpacing: 1,\n }}\n >\n {label}\n </RNText>\n </View>\n );\n }\n\n // Pre-compute the static style so the Pressable's function form only has\n // to overlay press/hover deltas. This is more robust on native, where\n // some renderers were observed to drop properties from the function-form\n // result intermittently — especially the selected pill's `backgroundColor`,\n // producing white text on a white background.\n const baseStyle: ViewStyle = {\n minWidth: size,\n height: size,\n paddingHorizontal: px(colors.spacing['2']),\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: px(colors.radius.md),\n // Selected: filled pill in primary. Default: transparent. Press/hover\n // deltas overlay this in the style fn below.\n backgroundColor: selected ? colors.semantic.interactive.primary : 'transparent',\n // A 1px transparent border is reserved on every item so the layout\n // stays stable when the selected one shows its accent border.\n borderWidth: 1,\n borderColor: selected ? colors.semantic.interactive.primary : 'transparent',\n opacity: disabled ? 0.35 : 1,\n };\n\n // Web-only CSS transitions; merged into the static base on web.\n const webExtras =\n Platform.OS === 'web'\n ? ({\n transitionProperty: 'background-color, color, border-color',\n transitionDuration: '120ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n } as unknown as ViewStyle)\n : null;\n const staticStyle: ViewStyle = { ...baseStyle, ...(webExtras ?? {}) };\n\n return (\n <Pressable\n {...(testID !== undefined ? { testID } : {})}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityLabel={ariaLabel}\n aria-label={ariaLabel}\n {...(ariaCurrent ? { 'aria-current': ariaCurrent } : {})}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n onPress={isInteractive ? onPress : undefined}\n // Use a function form ONLY on web so Pressable can read `hovered`.\n // On native the function form was observed to occasionally drop\n // its returned style block on iOS — so we pass a plain object,\n // which renders reliably.\n style={\n Platform.OS === 'web'\n ? (state) => {\n const { pressed, hovered } = state as { pressed: boolean; hovered?: boolean };\n const interactive =\n !selected && (pressed || hovered)\n ? colors.semantic.background.subtle\n : staticStyle.backgroundColor;\n return { ...staticStyle, backgroundColor: interactive };\n }\n : staticStyle\n }\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: isChevron ? px(colors.fontSize.md) : px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.md),\n color: selected\n ? colors.semantic.text.inverted\n : disabled\n ? colors.semantic.text.muted\n : colors.semantic.text.default,\n fontWeight: selected ? (colors.fontWeight.semibold as '600') : (colors.fontWeight.medium as '500'),\n fontVariant: ['tabular-nums'],\n // Chevron glyphs sit a hair high in most fonts.\n marginTop: isChevron ? -1 : 0,\n }}\n >\n {label}\n </RNText>\n </Pressable>\n );\n};\n\n// =============================================================================\n// Live region for screen readers (web only — RN announces via accessibilityLiveRegion)\n// =============================================================================\n\nconst LiveRegion = ({ message }: { message: string }) => {\n if (Platform.OS === 'web') {\n return (\n <View\n style={{\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n }}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic\n >\n <RNText accessibilityLiveRegion=\"polite\">{message}</RNText>\n </View>\n );\n }\n return (\n <View accessibilityLiveRegion=\"polite\" style={{ width: 0, height: 0 }}>\n <RNText>{message}</RNText>\n </View>\n );\n};\n\n// =============================================================================\n// Items renderer (the shorthand UI)\n// =============================================================================\n\ntype ItemsRendererProps = {\n items: ReadonlyArray<PaginationItemDescriptor>;\n onItemPress: (item: PaginationItemDescriptor) => void;\n};\n\nconst ItemsRenderer = ({ items, onItemPress }: ItemsRendererProps) => {\n const { labels, renderItem, dir } = usePaginationContext('Pagination.Items');\n\n const elements = items.map((item, idx) => {\n const key = `${item.type}-${item.page ?? idx}-${idx}`;\n const ariaLabel = ariaLabelFor(item, labels);\n const ariaCurrent = item.selected ? ('page' as const) : undefined;\n const display = displayLabelFor(item, labels, dir);\n const onPress = () => onItemPress(item);\n\n if (renderItem && item.type !== 'ellipsis') {\n return (\n <View key={key}>\n {renderItem({\n type: item.type,\n ...(item.page !== undefined ? { page: item.page } : {}),\n selected: item.selected ?? false,\n disabled: item.disabled ?? false,\n ariaLabel,\n ...(ariaCurrent ? { ariaCurrent } : {}),\n children: display,\n onPress,\n })}\n </View>\n );\n }\n\n return (\n <ItemButton\n key={key}\n type={item.type}\n {...(item.page !== undefined ? { page: item.page } : {})}\n selected={item.selected ?? false}\n disabled={item.disabled ?? false}\n ariaLabel={ariaLabel}\n {...(ariaCurrent ? { ariaCurrent } : {})}\n label={display}\n onPress={onPress}\n />\n );\n });\n\n return <>{elements}</>;\n};\n\nfunction ariaLabelFor(item: PaginationItemDescriptor, labels: PaginationContextValue['labels']): string {\n switch (item.type) {\n case 'first':\n return labels.first;\n case 'prev':\n return labels.prev;\n case 'next':\n return labels.next;\n case 'last':\n return labels.last;\n case 'ellipsis':\n return labels.ellipsis;\n case 'page':\n return item.selected ? labels.currentPage : labels.gotoPage(item.page ?? 0);\n }\n}\n\nfunction displayLabelFor(\n item: PaginationItemDescriptor,\n labels: PaginationContextValue['labels'],\n dir: 'ltr' | 'rtl'\n): ReactNode {\n const flip = dir === 'rtl';\n switch (item.type) {\n case 'first':\n return flip ? '»' : '«';\n case 'last':\n return flip ? '«' : '»';\n case 'prev':\n return flip ? '›' : '‹';\n case 'next':\n return flip ? '‹' : '›';\n case 'ellipsis':\n return '…';\n case 'page':\n return String(item.page ?? '');\n }\n}\n\n// =============================================================================\n// Compact variant\n// =============================================================================\n\nconst CompactView = ({\n onPrev,\n onNext,\n canPrev,\n canNext,\n pageLabel,\n}: {\n onPrev: () => void;\n onNext: () => void;\n canPrev: boolean;\n canNext: boolean;\n pageLabel: string;\n}) => {\n const colors = useThemeColors();\n const { labels, dir } = usePaginationContext('Pagination(compact)');\n const flip = dir === 'rtl';\n\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: px(colors.spacing['1']),\n flexGrow: 1,\n }}\n >\n <ItemButton\n type=\"prev\"\n selected={false}\n disabled={!canPrev}\n ariaLabel={labels.prev}\n label={flip ? '›' : '‹'}\n onPress={onPrev}\n />\n <View\n style={{\n flexGrow: 1,\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: px(colors.spacing['3']),\n }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.default,\n fontWeight: colors.fontWeight.medium as '500',\n fontVariant: ['tabular-nums'],\n }}\n >\n {pageLabel}\n </RNText>\n </View>\n <ItemButton\n type=\"next\"\n selected={false}\n disabled={!canNext}\n ariaLabel={labels.next}\n label={flip ? '‹' : '›'}\n onPress={onNext}\n />\n </View>\n );\n};\n\n// =============================================================================\n// Root (the `<Pagination>` symbol — also serves as the shorthand)\n// =============================================================================\n\nconst ANNOUNCE_DEBOUNCE_MS = 150;\n\nconst PaginationRoot = (props: PaginationProps) => {\n const {\n page: controlledPage,\n defaultPage = 1,\n pageCount,\n siblingCount = 1,\n boundaryCount = 1,\n showFirstLast = false,\n hideOnSinglePage = true,\n variant = 'auto',\n showRange = false,\n itemCount,\n pageSize: pageSizeProp,\n onPageChange,\n renderItem,\n dir = 'ltr',\n previousLabel,\n nextLabel,\n firstLabel,\n lastLabel,\n ariaLabel,\n className,\n testID,\n children,\n } = props;\n\n const { t } = useTranslation();\n const colors = useThemeColors();\n const { width } = useWindowDimensions();\n\n const [internalPageSize, setInternalPageSize] = useState<number | undefined>(pageSizeProp);\n useEffect(() => {\n setInternalPageSize(pageSizeProp);\n }, [pageSizeProp]);\n const effectivePageSize = pageSizeProp ?? internalPageSize;\n\n const labels = useMemo<PaginationContextValue['labels']>(\n () => ({\n prev: previousLabel ?? t('pagination.previous', { defaultValue: 'Previous page' }),\n next: nextLabel ?? t('pagination.next', { defaultValue: 'Next page' }),\n first: firstLabel ?? t('pagination.first', { defaultValue: 'First page' }),\n last: lastLabel ?? t('pagination.last', { defaultValue: 'Last page' }),\n ellipsis: t('pagination.ellipsis', { defaultValue: 'More pages' }),\n currentPage: t('pagination.currentPage', { defaultValue: 'Current page' }),\n gotoPage: (n) => t('pagination.gotoPage', { page: n, defaultValue: `Go to page ${n}` }),\n rangeFmt: (from, to, total) =>\n t('pagination.range', {\n from,\n to,\n total,\n defaultValue: `Showing ${from}–${to} of ${total}`,\n }),\n pageOfFmt: (p, total) => t('pagination.pageOf', { page: p, total, defaultValue: `Page ${p} of ${total}` }),\n pageSize: t('pagination.pageSizeLabel', { defaultValue: 'Items per page' }),\n jumperLabel: t('pagination.jumperLabel', { defaultValue: 'Go to page' }),\n jumperPlaceholder: t('pagination.jumperPlaceholder', { defaultValue: '#' }),\n }),\n [t, previousLabel, nextLabel, firstLabel, lastLabel]\n );\n\n // Live-region message — debounced so rapid clicks don't spam SR.\n const [announcement, setAnnouncement] = useState('');\n const announceTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(() => {\n return () => {\n if (announceTimer.current) {\n clearTimeout(announceTimer.current);\n }\n };\n }, []);\n\n const handlePageChange = useCallback(\n (next: number) => {\n onPageChange?.(next, effectivePageSize !== undefined ? { pageSize: effectivePageSize } : undefined);\n if (announceTimer.current) {\n clearTimeout(announceTimer.current);\n }\n announceTimer.current = setTimeout(() => {\n setAnnouncement(labels.pageOfFmt(next, Math.max(1, pageCount)));\n }, ANNOUNCE_DEBOUNCE_MS);\n },\n [onPageChange, effectivePageSize, labels, pageCount]\n );\n\n const setPageSize = useCallback(\n (next: number) => {\n if (pageSizeProp === undefined) {\n setInternalPageSize(next);\n }\n onPageChange?.(1, { pageSize: next });\n },\n [onPageChange, pageSizeProp]\n );\n\n const pagination = usePagination({\n ...(controlledPage !== undefined ? { page: controlledPage } : {}),\n defaultPage,\n pageCount,\n siblingCount,\n boundaryCount,\n showFirstLast,\n onPageChange: handlePageChange,\n });\n\n if (hideOnSinglePage && Math.max(1, pageCount) <= 1) {\n return null;\n }\n\n const ctxValue: PaginationContextValue = {\n page: pagination.page,\n pageCount: Math.max(1, pageCount),\n pageSize: effectivePageSize,\n itemCount,\n siblingCount,\n boundaryCount,\n showFirstLast,\n dir,\n labels,\n ...(renderItem ? { renderItem } : {}),\n goToPage: pagination.goToPage,\n setPageSize,\n };\n\n // Compound mode — caller supplies the layout. We still wrap children in\n // a flex-row that wraps on overflow so a long compound chain\n // (Items + Range + PageSize + Jumper) doesn't blow off the right edge\n // of a phone-width container.\n if (children !== undefined) {\n return (\n <PaginationContext.Provider value={ctxValue}>\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={ariaLabel ?? t('pagination.ariaLabel', { defaultValue: 'Pagination' })}\n accessibilityLabel={ariaLabel ?? t('pagination.ariaLabel', { defaultValue: 'Pagination' })}\n accessible\n className={cn('flex-row items-center flex-wrap', className)}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n flexWrap: 'wrap',\n rowGap: px(colors.spacing['2']),\n columnGap: px(colors.spacing['1']),\n direction: dir as ViewStyle['direction'],\n }}\n >\n {children}\n </View>\n <LiveRegion message={announcement} />\n </PaginationContext.Provider>\n );\n }\n\n // Shorthand mode — pick variant + render the items row.\n const isCompact =\n variant === 'compact' || (variant === 'auto' && width > 0 && width < PAGINATION_COMPACT_BREAKPOINT);\n\n const onItemPress = (item: PaginationItemDescriptor) => {\n if (item.disabled) {\n return;\n }\n switch (item.type) {\n case 'first':\n pagination.first();\n return;\n case 'prev':\n pagination.prev();\n return;\n case 'next':\n pagination.next();\n return;\n case 'last':\n pagination.last();\n return;\n case 'page':\n if (item.page !== undefined) {\n pagination.goToPage(item.page);\n }\n return;\n case 'ellipsis':\n return;\n }\n };\n\n const showRangeBlock = showRange && itemCount !== undefined && effectivePageSize !== undefined;\n\n return (\n <PaginationContext.Provider value={ctxValue}>\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={ariaLabel ?? t('pagination.ariaLabel', { defaultValue: 'Pagination' })}\n accessibilityLabel={ariaLabel ?? t('pagination.ariaLabel', { defaultValue: 'Pagination' })}\n accessible\n className={cn(isCompact ? 'flex-col items-stretch' : 'flex-row items-center flex-wrap', className)}\n style={{\n // Compact mode lays out as a column so the Range/PageSize\n // block falls below the controls instead of overflowing\n // a phone-width row. Numbered mode wraps on overflow.\n flexDirection: isCompact ? 'column' : 'row',\n alignItems: isCompact ? 'stretch' : 'center',\n flexWrap: isCompact ? 'nowrap' : 'wrap',\n rowGap: px(colors.spacing['2']),\n columnGap: px(colors.spacing['1']),\n direction: dir as ViewStyle['direction'],\n }}\n >\n {isCompact ? (\n <CompactView\n onPrev={pagination.prev}\n onNext={pagination.next}\n canPrev={pagination.canPrev}\n canNext={pagination.canNext}\n pageLabel={labels.pageOfFmt(pagination.page, Math.max(1, pageCount))}\n />\n ) : (\n <ItemsRenderer items={pagination.pages} onItemPress={onItemPress} />\n )}\n {showRangeBlock ? <PaginationRange /> : null}\n </View>\n <LiveRegion message={announcement} />\n </PaginationContext.Provider>\n );\n};\n\n// =============================================================================\n// Compound parts\n// =============================================================================\n\ntype CompoundButtonProps = {\n asChild?: boolean;\n children?: ReactNode;\n testID?: string;\n};\n\nconst CompoundActionButton = ({\n actionType,\n asChild,\n children,\n testID,\n}: CompoundButtonProps & { actionType: 'prev' | 'next' | 'first' | 'last' }) => {\n const ctx = usePaginationContext(`Pagination.${actionType[0]!.toUpperCase() + actionType.slice(1)}`);\n const disabled = actionType === 'prev' || actionType === 'first' ? ctx.page <= 1 : ctx.page >= ctx.pageCount;\n const onPress = () => {\n if (disabled) {\n return;\n }\n switch (actionType) {\n case 'first':\n ctx.goToPage(1);\n return;\n case 'prev':\n ctx.goToPage(ctx.page - 1);\n return;\n case 'next':\n ctx.goToPage(ctx.page + 1);\n return;\n case 'last':\n ctx.goToPage(ctx.pageCount);\n return;\n }\n };\n const ariaLabel =\n actionType === 'prev'\n ? ctx.labels.prev\n : actionType === 'next'\n ? ctx.labels.next\n : actionType === 'first'\n ? ctx.labels.first\n : ctx.labels.last;\n\n if (asChild) {\n return (\n <Slot\n aria-label={ariaLabel}\n aria-disabled={disabled || undefined}\n onPress={onPress}\n onClick={onPress as unknown as ComponentProps<'button'>['onClick']}\n >\n {children}\n </Slot>\n );\n }\n const fallbackGlyph =\n actionType === 'prev' ? '‹' : actionType === 'next' ? '›' : actionType === 'first' ? '«' : '»';\n return (\n <ItemButton\n type={actionType}\n selected={false}\n disabled={disabled}\n ariaLabel={ariaLabel}\n label={children ?? fallbackGlyph}\n onPress={onPress}\n {...(testID !== undefined ? { testID } : {})}\n />\n );\n};\n\nconst PaginationPrev: FC<CompoundButtonProps> = ({ asChild, children, testID }) =>\n CompoundActionButton({\n actionType: 'prev',\n ...(asChild !== undefined ? { asChild } : {}),\n ...(children !== undefined ? { children } : {}),\n ...(testID !== undefined ? { testID } : {}),\n });\nconst PaginationNext: FC<CompoundButtonProps> = ({ asChild, children, testID }) =>\n CompoundActionButton({\n actionType: 'next',\n ...(asChild !== undefined ? { asChild } : {}),\n ...(children !== undefined ? { children } : {}),\n ...(testID !== undefined ? { testID } : {}),\n });\nconst PaginationFirst: FC<CompoundButtonProps> = ({ asChild, children, testID }) =>\n CompoundActionButton({\n actionType: 'first',\n ...(asChild !== undefined ? { asChild } : {}),\n ...(children !== undefined ? { children } : {}),\n ...(testID !== undefined ? { testID } : {}),\n });\nconst PaginationLast: FC<CompoundButtonProps> = ({ asChild, children, testID }) =>\n CompoundActionButton({\n actionType: 'last',\n ...(asChild !== undefined ? { asChild } : {}),\n ...(children !== undefined ? { children } : {}),\n ...(testID !== undefined ? { testID } : {}),\n });\n\nconst PaginationItem: FC<{ page: number; asChild?: boolean; children?: ReactNode; testID?: string }> = ({\n page,\n asChild,\n children,\n testID,\n}) => {\n const ctx = usePaginationContext('Pagination.Item');\n const selected = page === ctx.page;\n const onPress = () => ctx.goToPage(page);\n const ariaLabel = selected ? ctx.labels.currentPage : ctx.labels.gotoPage(page);\n\n if (asChild) {\n return (\n <Slot\n aria-label={ariaLabel}\n {...(selected ? { 'aria-current': 'page' as const } : {})}\n onPress={onPress}\n onClick={onPress as unknown as ComponentProps<'button'>['onClick']}\n >\n {children}\n </Slot>\n );\n }\n return (\n <ItemButton\n type=\"page\"\n page={page}\n selected={selected}\n disabled={false}\n ariaLabel={ariaLabel}\n {...(selected ? { ariaCurrent: 'page' as const } : {})}\n label={children ?? String(page)}\n onPress={onPress}\n {...(testID !== undefined ? { testID } : {})}\n />\n );\n};\n\nconst PaginationItems: FC<{ children?: ReactNode }> = ({ children }) => {\n const ctx = usePaginationContext('Pagination.Items');\n // Always run the hook so React's call order is stable across renders;\n // the result is discarded when explicit `children` were supplied.\n const result = usePagination({\n page: ctx.page,\n pageCount: ctx.pageCount,\n siblingCount: ctx.siblingCount,\n boundaryCount: ctx.boundaryCount,\n showFirstLast: false,\n showPrevNext: false,\n });\n if (children !== undefined) {\n return <>{children}</>;\n }\n return (\n <ItemsRenderer\n items={result.pages}\n onItemPress={(item) => {\n if (item.type === 'page' && item.page !== undefined) {\n ctx.goToPage(item.page);\n }\n }}\n />\n );\n};\n\nconst PaginationEllipsis: FC<{ children?: ReactNode }> = ({ children }) => {\n const ctx = usePaginationContext('Pagination.Ellipsis');\n return (\n <ItemButton\n type=\"ellipsis\"\n selected={false}\n disabled\n label={children ?? '…'}\n ariaLabel={ctx.labels.ellipsis}\n onPress={() => {}}\n />\n );\n};\n\nconst PaginationRange: FC = () => {\n const ctx = usePaginationContext('Pagination.Range');\n const colors = useThemeColors();\n if (ctx.itemCount === undefined || ctx.pageSize === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('<Pagination.Range> requires both `itemCount` and `pageSize` on <Pagination>.');\n }\n return null;\n }\n const from = (ctx.page - 1) * ctx.pageSize + 1;\n const to = Math.min(ctx.itemCount, ctx.page * ctx.pageSize);\n const message = ctx.labels.rangeFmt(from, to, ctx.itemCount);\n return (\n <RNText\n role=\"status\"\n aria-live=\"polite\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n fontVariant: ['tabular-nums'],\n paddingHorizontal: px(colors.spacing['2']),\n // Sits on the same baseline as the 32px buttons.\n lineHeight: px(colors.spacing['8']),\n }}\n >\n {message}\n </RNText>\n );\n};\n\nconst PaginationPageSize: FC<{ options: ReadonlyArray<number>; testID?: string }> = ({ options, testID }) => {\n const ctx = usePaginationContext('Pagination.PageSize');\n const colors = useThemeColors();\n const value = ctx.pageSize !== undefined ? String(ctx.pageSize) : '';\n const selectOptions = useMemo<SelectOption[]>(\n () => options.map((n) => ({ value: String(n), label: String(n) })),\n [options]\n );\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['2']),\n }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {ctx.labels.pageSize}\n </RNText>\n <Select\n {...(testID !== undefined ? { testID } : {})}\n aria-label={ctx.labels.pageSize}\n options={selectOptions}\n value={value}\n onChange={(v) => {\n const n = Number(v);\n if (Number.isFinite(n) && n > 0) {\n ctx.setPageSize(n);\n }\n }}\n />\n </View>\n );\n};\n\ntype PaginationJumperProps = {\n /** Show a separate visible \"Go to page\" label before the input. The aria-label is always set regardless. @defaultValue false */\n showLabel?: boolean;\n /** Override the visible label / accessible name. */\n label?: string;\n /** Override the input placeholder. @defaultValue the localized \"Go to\" hint */\n placeholder?: string;\n /** Width of the input in px. @defaultValue 56 */\n inputWidth?: number;\n testID?: string;\n};\n\n/**\n * Compact, purpose-built jumper. Built directly from RN's `TextInput`\n * primitive so we can render the exact 32px-tall borderless-then-focused\n * treatment that fits in a pagination row, instead of inheriting the full\n * form-field chrome (label, helper text, error slot) of `<TextInput>`.\n */\nconst PaginationJumper: FC<PaginationJumperProps> = ({\n showLabel = false,\n label,\n placeholder,\n inputWidth = 56,\n testID,\n}) => {\n const ctx = usePaginationContext('Pagination.Jumper');\n const colors = useThemeColors();\n const [draft, setDraft] = useState('');\n const [focused, setFocused] = useState(false);\n const [hovered, setHovered] = useState(false);\n const visibleLabel = label ?? ctx.labels.jumperLabel;\n const placeholderText = placeholder ?? ctx.labels.jumperPlaceholder;\n\n const submit = () => {\n const trimmed = draft.trim();\n if (trimmed === '') {\n return;\n }\n const n = Number(trimmed);\n if (!Number.isFinite(n) || n < 1) {\n setDraft('');\n return;\n }\n const clamped = Math.min(Math.max(1, Math.floor(n)), ctx.pageCount);\n ctx.goToPage(clamped);\n setDraft('');\n };\n\n const borderColor = focused\n ? colors.semantic.interactive.primary\n : hovered\n ? colors.semantic.border.strong\n : colors.semantic.border.default;\n\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['2']),\n }}\n >\n {showLabel ? (\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n {visibleLabel}\n </RNText>\n ) : null}\n <View\n // The wrapper carries the visual chrome so the bare TextInput\n // can stay completely unstyled — it's just text + caret.\n onPointerEnter={Platform.OS === 'web' ? () => setHovered(true) : undefined}\n onPointerLeave={Platform.OS === 'web' ? () => setHovered(false) : undefined}\n style={\n {\n width: inputWidth,\n height: px(colors.spacing['8']),\n borderWidth: 1,\n borderColor,\n borderRadius: px(colors.radius.md),\n backgroundColor: colors.semantic.background.elevated,\n paddingHorizontal: px(colors.spacing['2']),\n justifyContent: 'center',\n // Web-only properties (silently dropped on native).\n ...(focused\n ? {\n boxShadow: `0 0 0 3px ${withAlpha(colors.semantic.interactive.primary, 0.15)}`,\n }\n : null),\n transitionProperty: 'border-color, box-shadow',\n transitionDuration: '120ms',\n transitionTimingFunction: 'cubic-bezier(0.2, 0, 0, 1)',\n } as unknown as ViewStyle\n }\n >\n <RNTextInput\n {...(testID !== undefined ? { testID } : {})}\n value={draft}\n onChangeText={setDraft}\n onSubmitEditing={submit}\n onBlur={() => {\n setFocused(false);\n submit();\n }}\n onFocus={() => setFocused(true)}\n keyboardType=\"number-pad\"\n inputMode=\"numeric\"\n placeholder={placeholderText}\n placeholderTextColor={colors.semantic.text.muted}\n aria-label={visibleLabel}\n accessibilityLabel={visibleLabel}\n returnKeyType=\"go\"\n selectTextOnFocus\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.default,\n fontVariant: ['tabular-nums'],\n textAlign: 'center',\n // Strip the browser's default outline — we draw our own\n // focus ring on the wrapper.\n ...(Platform.OS === 'web' ? ({ outline: 'none' } as object) : null),\n }}\n />\n </View>\n </View>\n );\n};\n\n/**\n * Apply an alpha channel to any of our token color strings (hex / rgb / hsl).\n * Cheap, zero-dep helper just for the focus glow.\n */\nfunction withAlpha(color: string, alpha: number): string {\n if (color.startsWith('#') && (color.length === 7 || color.length === 4)) {\n const expanded =\n color.length === 4 ? `#${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}` : color;\n const r = Number.parseInt(expanded.slice(1, 3), 16);\n const g = Number.parseInt(expanded.slice(3, 5), 16);\n const b = Number.parseInt(expanded.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n return color;\n}\n\nexport type { PaginationJumperProps };\n\n// =============================================================================\n// Public symbol — Pagination + compound parts\n// =============================================================================\n\nexport const Pagination = Object.assign(PaginationRoot, {\n Items: PaginationItems,\n Item: PaginationItem,\n Prev: PaginationPrev,\n Next: PaginationNext,\n First: PaginationFirst,\n Last: PaginationLast,\n Ellipsis: PaginationEllipsis,\n Range: PaginationRange,\n PageSize: PaginationPageSize,\n Jumper: PaginationJumper,\n});\n\n// Suppress unused — ReactElement / KeyboardEvent are reserved for future kbd-nav extension.\ntype _Unused = ReactElement | KeyboardEvent;\n"]}