@12-apps/ui 6.100.0 → 6.102.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 (371) hide show
  1. package/NATIVE.md +2 -1
  2. package/components-catalog.md +3 -2
  3. package/dist/_internal/components/data-display/Alert/Alert.content.js +2 -2
  4. package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
  5. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  6. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  7. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
  8. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +6 -6
  9. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  10. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  11. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  12. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  13. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  14. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +45 -45
  16. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +60 -60
  17. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -4
  18. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +4 -4
  19. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +4 -4
  20. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
  21. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +4 -4
  22. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
  24. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +8 -8
  25. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
  26. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +20 -20
  27. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
  28. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +42 -42
  29. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +24 -24
  30. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +21 -21
  31. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +22 -22
  32. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +9 -9
  33. package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +6 -6
  34. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +11 -11
  35. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
  36. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +4 -4
  37. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +10 -10
  38. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +3 -3
  39. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +3 -3
  40. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  41. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +3 -3
  42. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +10 -10
  43. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +2 -2
  44. package/dist/_internal/components/data-display/DayRuler/DayRuler.labels.js +2 -2
  45. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +3 -3
  46. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +2 -2
  47. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
  48. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +9 -9
  49. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
  50. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
  51. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
  52. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  53. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  54. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
  55. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
  56. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
  57. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +8 -8
  58. package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
  59. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +1 -1
  60. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +8 -8
  61. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +3 -3
  62. package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
  63. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  64. package/dist/_internal/components/data-display/index.js +72 -72
  65. package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
  66. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  67. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +5 -5
  68. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +8 -8
  69. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js +4 -4
  70. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +16 -16
  71. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +6 -6
  72. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +5 -5
  73. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  74. package/dist/_internal/components/feedback/UsableModal/UsableModal.js +1 -1
  75. package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js +2 -2
  76. package/dist/_internal/components/feedback/index.js +21 -21
  77. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +2 -2
  78. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
  79. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
  80. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +1 -1
  81. package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
  82. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +3 -3
  83. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +4 -4
  84. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +7 -7
  85. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
  86. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +8 -8
  87. package/dist/_internal/components/form/InputOTP/InputOTP.base.js +1 -0
  88. package/dist/_internal/components/form/InputOTP/InputOTP.base.js.map +1 -0
  89. package/dist/_internal/components/form/InputOTP/InputOTP.core.js +16 -0
  90. package/dist/_internal/components/form/InputOTP/InputOTP.core.js.map +1 -0
  91. package/dist/_internal/components/form/InputOTP/InputOTP.hooks.js +2 -1
  92. package/dist/_internal/components/form/InputOTP/InputOTP.js +5 -3
  93. package/dist/_internal/components/form/InputOTP/InputOTP.metrics.js +20 -0
  94. package/dist/_internal/components/form/InputOTP/InputOTP.metrics.js.map +1 -0
  95. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +2 -1
  96. package/dist/_internal/components/form/index.js +25 -23
  97. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +8 -8
  98. package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
  99. package/dist/_internal/components/index.js +120 -118
  100. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
  101. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  102. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  103. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  104. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  105. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  106. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  107. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  108. package/dist/_internal/components/navigation/index.js +15 -15
  109. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  110. package/dist/charts.js +6 -6
  111. package/dist/{chunk-37MJZLQU.js → chunk-24OFA44S.js} +4 -4
  112. package/dist/{chunk-R775ISK6.js → chunk-2L6TANRY.js} +5 -5
  113. package/dist/{chunk-B4OZU7J4.js → chunk-423A7NUP.js} +7 -7
  114. package/dist/{chunk-LFECE4R7.js → chunk-4EDCF7TC.js} +2 -2
  115. package/dist/{chunk-HI7JPDD6.js → chunk-5357QUVE.js} +2 -2
  116. package/dist/{chunk-F7JRQ2EI.js → chunk-5YX2VQFP.js} +7 -7
  117. package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
  118. package/dist/{chunk-PGJIWCQR.js → chunk-6EZQLNPK.js} +4 -4
  119. package/dist/{chunk-YQMJJ7AL.js → chunk-6G2RAZTS.js} +5 -5
  120. package/dist/{chunk-KNW63H63.js → chunk-6PQZIZMN.js} +5 -5
  121. package/dist/{chunk-FZZMNKVF.js → chunk-6TAPAIRR.js} +8 -8
  122. package/dist/{chunk-ERAMSYPR.js → chunk-7N4O632I.js} +2 -2
  123. package/dist/{chunk-XFOKLWJZ.js → chunk-7S5PXEO7.js} +2 -2
  124. package/dist/{chunk-UIJLDAV7.js → chunk-AA6YMOEK.js} +2 -2
  125. package/dist/{chunk-CRD2WCU7.js → chunk-AFWUQJ4P.js} +8 -8
  126. package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
  127. package/dist/{chunk-3I7KE2N6.js → chunk-BNV7P52K.js} +2 -2
  128. package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
  129. package/dist/{chunk-3V7OTBUZ.js → chunk-BQ2SFA27.js} +2 -2
  130. package/dist/{chunk-Q5SCBQLY.js → chunk-BXLC3TBQ.js} +8 -8
  131. package/dist/{chunk-Z5V5E3JW.js → chunk-COKPPU42.js} +11 -11
  132. package/dist/{chunk-QADTI63U.js → chunk-CZVAVX5L.js} +4 -4
  133. package/dist/{chunk-WDEVKND3.js → chunk-D2YJPZMU.js} +9 -9
  134. package/dist/{chunk-OA6T2ME3.js → chunk-DYHOBKPU.js} +5 -5
  135. package/dist/{chunk-6WAP7BJS.js → chunk-E6SPWZRN.js} +2 -2
  136. package/dist/{chunk-UTIYB6VE.js → chunk-E73PAU4U.js} +19 -19
  137. package/dist/{chunk-XR474YYX.js → chunk-EDVAFY76.js} +2 -2
  138. package/dist/{chunk-MEMVZW64.js → chunk-EPNZQWS4.js} +3 -3
  139. package/dist/{chunk-GZITNT7O.js → chunk-FGZIEZEP.js} +11 -11
  140. package/dist/{chunk-4X2TOMK6.js → chunk-FKUVFPQZ.js} +4 -4
  141. package/dist/{chunk-UN5WU2OX.js → chunk-GDWU7WF4.js} +4 -4
  142. package/dist/{chunk-643YFWNK.js → chunk-GPWDP5FF.js} +3 -3
  143. package/dist/{chunk-XA5ES25V.js → chunk-HKQWFICM.js} +2 -2
  144. package/dist/chunk-IH6DZXTG.js +22 -0
  145. package/dist/chunk-IH6DZXTG.js.map +1 -0
  146. package/dist/{chunk-255WTBZ5.js → chunk-IWSTMVCA.js} +4 -4
  147. package/dist/{chunk-QZOQVJ5L.js → chunk-J3WJEUD2.js} +19 -5
  148. package/dist/chunk-J3WJEUD2.js.map +1 -0
  149. package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
  150. package/dist/{chunk-7MLT66DE.js → chunk-K33X3PDT.js} +2 -2
  151. package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
  152. package/dist/{chunk-HOWAMSUY.js → chunk-KAWVH3AA.js} +3 -3
  153. package/dist/{chunk-IJVBLU25.js → chunk-KJZ4PINO.js} +3 -3
  154. package/dist/{chunk-REHGWN5M.js → chunk-KXDLLS62.js} +4 -4
  155. package/dist/{chunk-YQ5GQ32T.js → chunk-KZP5YTE7.js} +2 -2
  156. package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
  157. package/dist/{chunk-UKUGSU3Y.js → chunk-L4V7FZJI.js} +2 -2
  158. package/dist/{chunk-W56KN53D.js → chunk-L6IDPTNX.js} +6 -6
  159. package/dist/{chunk-24HHUCWB.js → chunk-LDCZPZPD.js} +2 -2
  160. package/dist/{chunk-KV7LTOWC.js → chunk-M225SD4H.js} +13 -13
  161. package/dist/{chunk-R6L376KR.js → chunk-M6R32IBO.js} +8 -13
  162. package/dist/chunk-M6R32IBO.js.map +1 -0
  163. package/dist/{chunk-FQMLTCXT.js → chunk-MAHY7PK3.js} +4 -4
  164. package/dist/{chunk-Z2J4MRTF.js → chunk-MKNW4FRR.js} +4 -4
  165. package/dist/{chunk-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
  166. package/dist/{chunk-FYJL432J.js → chunk-MQPUS773.js} +6 -6
  167. package/dist/{chunk-VRSW7PIO.js → chunk-NKBSWAP3.js} +4 -4
  168. package/dist/{chunk-ULC4SCFC.js → chunk-NLJ7LL6H.js} +4 -4
  169. package/dist/{chunk-RAQD5QCM.js → chunk-NQ6JP5CC.js} +6 -6
  170. package/dist/{chunk-IFOHCY4O.js → chunk-OF3KG5EV.js} +2 -2
  171. package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
  172. package/dist/{chunk-CWRQGA2T.js → chunk-POIENBXE.js} +7 -7
  173. package/dist/{chunk-FW5GTAUY.js → chunk-Q4AX4FOK.js} +11 -11
  174. package/dist/{chunk-XQAFSC66.js → chunk-Q4FNCT4C.js} +2 -2
  175. package/dist/{chunk-PIELY4BJ.js → chunk-Q5Z66LKI.js} +1 -1
  176. package/dist/{chunk-4Y3QLISA.js → chunk-Q7AONB4G.js} +4 -4
  177. package/dist/{chunk-EZBBLLEU.js → chunk-QQBYZ3B3.js} +4 -4
  178. package/dist/{chunk-FT3LJZWZ.js → chunk-RWUXMBSO.js} +4 -4
  179. package/dist/{chunk-KWBMM6MJ.js → chunk-RZKKWIGQ.js} +9 -9
  180. package/dist/{chunk-RVBLOR32.js → chunk-S7CXVIEF.js} +2 -2
  181. package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
  182. package/dist/{chunk-OFRQMFWD.js → chunk-T5D3DYVN.js} +2 -2
  183. package/dist/{chunk-O4UXH7BM.js → chunk-TP6KZ2YR.js} +7 -7
  184. package/dist/{chunk-HAWOS4SF.js → chunk-TPDN3B5T.js} +2 -2
  185. package/dist/{chunk-54DOLCJ3.js → chunk-TXIIJW6C.js} +5 -5
  186. package/dist/{chunk-HN36UVOE.js → chunk-U4Z6GZDW.js} +4 -4
  187. package/dist/{chunk-J2IQ6FJ5.js → chunk-UKLNLWTP.js} +3 -3
  188. package/dist/{chunk-NQYC7V5N.js → chunk-VJ6ZLMQ3.js} +18 -13
  189. package/dist/chunk-VJ6ZLMQ3.js.map +1 -0
  190. package/dist/{chunk-MKHNLRVX.js → chunk-VPPD2AJN.js} +7 -7
  191. package/dist/{chunk-TIM4PXWN.js → chunk-VWRXSBT2.js} +2 -2
  192. package/dist/{chunk-KVP5A3YK.js → chunk-WDWZKTGA.js} +2 -2
  193. package/dist/{chunk-FYSS2PYA.js → chunk-WH5ZEBKS.js} +7 -7
  194. package/dist/{chunk-KAGXV3ID.js → chunk-WMMXOSZG.js} +7 -7
  195. package/dist/{chunk-4RSFYS2V.js → chunk-X6D5JEUV.js} +6 -6
  196. package/dist/{chunk-GFYDOH7D.js → chunk-XEPNAU3T.js} +2 -2
  197. package/dist/{chunk-VMACQT3T.js → chunk-XH7UDC5Y.js} +3 -3
  198. package/dist/{chunk-PDWQJFMK.js → chunk-XHMHHP7B.js} +10 -10
  199. package/dist/chunk-XHPL5VI2.js +31 -0
  200. package/dist/chunk-XHPL5VI2.js.map +1 -0
  201. package/dist/{chunk-SA3KLZDZ.js → chunk-XNAI7QGU.js} +5 -5
  202. package/dist/{chunk-7TENMQNQ.js → chunk-XZMSRHFD.js} +4 -4
  203. package/dist/{chunk-HBHBRRSW.js → chunk-YBAK2WN5.js} +7 -7
  204. package/dist/{chunk-QLKUWDMQ.js → chunk-YDJ5GAGL.js} +13 -13
  205. package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
  206. package/dist/data-display/Alert.js +4 -4
  207. package/dist/data-display/Avatar.js +2 -2
  208. package/dist/data-display/Badge.js +2 -2
  209. package/dist/data-display/CardKit.js +14 -14
  210. package/dist/data-display/Carousel.js +3 -3
  211. package/dist/data-display/Chart.js +6 -6
  212. package/dist/data-display/DataGrid.js +3 -3
  213. package/dist/data-display/DataViews.js +74 -74
  214. package/dist/data-display/DayRuler.js +12 -12
  215. package/dist/data-display/FleetMap.js +12 -12
  216. package/dist/data-display/HoverCard.js +2 -2
  217. package/dist/data-display/Lightbox.js +7 -7
  218. package/dist/data-display/MapPreview.js +8 -8
  219. package/dist/data-display/Progress.js +2 -2
  220. package/dist/data-display/RegionMap.js +4 -4
  221. package/dist/data-display/ScheduleGrid.js +10 -10
  222. package/dist/data-display/Sheet.js +2 -2
  223. package/dist/data-display/Table.js +3 -3
  224. package/dist/feedback/Dialog.js +3 -3
  225. package/dist/feedback/Modal.js +2 -2
  226. package/dist/feedback/NotificationStatusNotice.js +5 -5
  227. package/dist/feedback/SequenceResolver.js +16 -16
  228. package/dist/feedback/TutorialOverlay.js +2 -2
  229. package/dist/feedback/UsableModal.js +1 -1
  230. package/dist/form/AddressAutocomplete.js +7 -7
  231. package/dist/form/Autocomplete.js +1 -1
  232. package/dist/form/Calendar.js +5 -5
  233. package/dist/form/CategorySelect.js +7 -7
  234. package/dist/form/CodeEditor.js +2 -2
  235. package/dist/form/DateRangePicker.js +10 -10
  236. package/dist/form/InputOTP.js +5 -3
  237. package/dist/form/total-form.js +9 -9
  238. package/dist/native/form/InputOTP.js +241 -0
  239. package/dist/native/form/InputOTP.js.map +1 -0
  240. package/dist/navigation/AppHeader.js +6 -6
  241. package/dist/navigation/SectionNav.js +9 -9
  242. package/dist/types/components/form/InputOTP/InputOTP.base.d.ts +77 -0
  243. package/dist/types/components/form/InputOTP/InputOTP.base.d.ts.map +1 -0
  244. package/dist/types/components/form/InputOTP/InputOTP.core.d.ts +38 -0
  245. package/dist/types/components/form/InputOTP/InputOTP.core.d.ts.map +1 -0
  246. package/dist/types/components/form/InputOTP/InputOTP.d.ts +1 -2
  247. package/dist/types/components/form/InputOTP/InputOTP.d.ts.map +1 -1
  248. package/dist/types/components/form/InputOTP/InputOTP.hooks.d.ts.map +1 -1
  249. package/dist/types/components/form/InputOTP/InputOTP.metrics.d.ts +40 -0
  250. package/dist/types/components/form/InputOTP/InputOTP.metrics.d.ts.map +1 -0
  251. package/dist/types/components/form/InputOTP/InputOTP.styles.d.ts +2 -0
  252. package/dist/types/components/form/InputOTP/InputOTP.styles.d.ts.map +1 -1
  253. package/dist/types/components/form/InputOTP/InputOTP.types.d.ts +3 -56
  254. package/dist/types/components/form/InputOTP/InputOTP.types.d.ts.map +1 -1
  255. package/dist/types-native/components/form/InputOTP/InputOTP.base.d.ts +77 -0
  256. package/dist/types-native/components/form/InputOTP/InputOTP.base.d.ts.map +1 -0
  257. package/dist/types-native/components/form/InputOTP/InputOTP.core.d.ts +38 -0
  258. package/dist/types-native/components/form/InputOTP/InputOTP.core.d.ts.map +1 -0
  259. package/dist/types-native/components/form/InputOTP/InputOTP.hooks.native.d.ts +28 -0
  260. package/dist/types-native/components/form/InputOTP/InputOTP.hooks.native.d.ts.map +1 -0
  261. package/dist/types-native/components/form/InputOTP/InputOTP.metrics.d.ts +40 -0
  262. package/dist/types-native/components/form/InputOTP/InputOTP.metrics.d.ts.map +1 -0
  263. package/dist/types-native/components/form/InputOTP/InputOTP.native.d.ts +14 -0
  264. package/dist/types-native/components/form/InputOTP/InputOTP.native.d.ts.map +1 -0
  265. package/dist/types-native/components/form/InputOTP/InputOTP.types.native.d.ts +14 -0
  266. package/dist/types-native/components/form/InputOTP/InputOTP.types.native.d.ts.map +1 -0
  267. package/dist/types-native/components/form/InputOTP/index.native.d.ts +3 -0
  268. package/dist/types-native/components/form/InputOTP/index.native.d.ts.map +1 -0
  269. package/dist/user-avatar.js +3 -3
  270. package/package.json +5 -1
  271. package/src/components/form/InputOTP/InputOTP.base.ts +91 -0
  272. package/src/components/form/InputOTP/InputOTP.core.ts +51 -0
  273. package/src/components/form/InputOTP/InputOTP.hooks.native.ts +84 -0
  274. package/src/components/form/InputOTP/InputOTP.hooks.ts +1 -46
  275. package/src/components/form/InputOTP/InputOTP.md +35 -0
  276. package/src/components/form/InputOTP/InputOTP.metrics.ts +51 -0
  277. package/src/components/form/InputOTP/InputOTP.native.tsx +217 -0
  278. package/src/components/form/InputOTP/InputOTP.styles.ts +35 -16
  279. package/src/components/form/InputOTP/InputOTP.tsx +17 -3
  280. package/src/components/form/InputOTP/InputOTP.types.native.ts +15 -0
  281. package/src/components/form/InputOTP/InputOTP.types.ts +3 -68
  282. package/src/components/form/InputOTP/NATIVE-NOTES.md +8 -0
  283. package/src/components/form/InputOTP/index.native.ts +2 -0
  284. package/dist/chunk-NQYC7V5N.js.map +0 -1
  285. package/dist/chunk-QZOQVJ5L.js.map +0 -1
  286. package/dist/chunk-R6L376KR.js.map +0 -1
  287. /package/dist/{chunk-37MJZLQU.js.map → chunk-24OFA44S.js.map} +0 -0
  288. /package/dist/{chunk-R775ISK6.js.map → chunk-2L6TANRY.js.map} +0 -0
  289. /package/dist/{chunk-B4OZU7J4.js.map → chunk-423A7NUP.js.map} +0 -0
  290. /package/dist/{chunk-LFECE4R7.js.map → chunk-4EDCF7TC.js.map} +0 -0
  291. /package/dist/{chunk-HI7JPDD6.js.map → chunk-5357QUVE.js.map} +0 -0
  292. /package/dist/{chunk-F7JRQ2EI.js.map → chunk-5YX2VQFP.js.map} +0 -0
  293. /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
  294. /package/dist/{chunk-PGJIWCQR.js.map → chunk-6EZQLNPK.js.map} +0 -0
  295. /package/dist/{chunk-YQMJJ7AL.js.map → chunk-6G2RAZTS.js.map} +0 -0
  296. /package/dist/{chunk-KNW63H63.js.map → chunk-6PQZIZMN.js.map} +0 -0
  297. /package/dist/{chunk-FZZMNKVF.js.map → chunk-6TAPAIRR.js.map} +0 -0
  298. /package/dist/{chunk-ERAMSYPR.js.map → chunk-7N4O632I.js.map} +0 -0
  299. /package/dist/{chunk-XFOKLWJZ.js.map → chunk-7S5PXEO7.js.map} +0 -0
  300. /package/dist/{chunk-UIJLDAV7.js.map → chunk-AA6YMOEK.js.map} +0 -0
  301. /package/dist/{chunk-CRD2WCU7.js.map → chunk-AFWUQJ4P.js.map} +0 -0
  302. /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
  303. /package/dist/{chunk-3I7KE2N6.js.map → chunk-BNV7P52K.js.map} +0 -0
  304. /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
  305. /package/dist/{chunk-3V7OTBUZ.js.map → chunk-BQ2SFA27.js.map} +0 -0
  306. /package/dist/{chunk-Q5SCBQLY.js.map → chunk-BXLC3TBQ.js.map} +0 -0
  307. /package/dist/{chunk-Z5V5E3JW.js.map → chunk-COKPPU42.js.map} +0 -0
  308. /package/dist/{chunk-QADTI63U.js.map → chunk-CZVAVX5L.js.map} +0 -0
  309. /package/dist/{chunk-WDEVKND3.js.map → chunk-D2YJPZMU.js.map} +0 -0
  310. /package/dist/{chunk-OA6T2ME3.js.map → chunk-DYHOBKPU.js.map} +0 -0
  311. /package/dist/{chunk-6WAP7BJS.js.map → chunk-E6SPWZRN.js.map} +0 -0
  312. /package/dist/{chunk-UTIYB6VE.js.map → chunk-E73PAU4U.js.map} +0 -0
  313. /package/dist/{chunk-XR474YYX.js.map → chunk-EDVAFY76.js.map} +0 -0
  314. /package/dist/{chunk-MEMVZW64.js.map → chunk-EPNZQWS4.js.map} +0 -0
  315. /package/dist/{chunk-GZITNT7O.js.map → chunk-FGZIEZEP.js.map} +0 -0
  316. /package/dist/{chunk-4X2TOMK6.js.map → chunk-FKUVFPQZ.js.map} +0 -0
  317. /package/dist/{chunk-UN5WU2OX.js.map → chunk-GDWU7WF4.js.map} +0 -0
  318. /package/dist/{chunk-643YFWNK.js.map → chunk-GPWDP5FF.js.map} +0 -0
  319. /package/dist/{chunk-XA5ES25V.js.map → chunk-HKQWFICM.js.map} +0 -0
  320. /package/dist/{chunk-255WTBZ5.js.map → chunk-IWSTMVCA.js.map} +0 -0
  321. /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.js.map} +0 -0
  322. /package/dist/{chunk-7MLT66DE.js.map → chunk-K33X3PDT.js.map} +0 -0
  323. /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
  324. /package/dist/{chunk-HOWAMSUY.js.map → chunk-KAWVH3AA.js.map} +0 -0
  325. /package/dist/{chunk-IJVBLU25.js.map → chunk-KJZ4PINO.js.map} +0 -0
  326. /package/dist/{chunk-REHGWN5M.js.map → chunk-KXDLLS62.js.map} +0 -0
  327. /package/dist/{chunk-YQ5GQ32T.js.map → chunk-KZP5YTE7.js.map} +0 -0
  328. /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
  329. /package/dist/{chunk-UKUGSU3Y.js.map → chunk-L4V7FZJI.js.map} +0 -0
  330. /package/dist/{chunk-W56KN53D.js.map → chunk-L6IDPTNX.js.map} +0 -0
  331. /package/dist/{chunk-24HHUCWB.js.map → chunk-LDCZPZPD.js.map} +0 -0
  332. /package/dist/{chunk-KV7LTOWC.js.map → chunk-M225SD4H.js.map} +0 -0
  333. /package/dist/{chunk-FQMLTCXT.js.map → chunk-MAHY7PK3.js.map} +0 -0
  334. /package/dist/{chunk-Z2J4MRTF.js.map → chunk-MKNW4FRR.js.map} +0 -0
  335. /package/dist/{chunk-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
  336. /package/dist/{chunk-FYJL432J.js.map → chunk-MQPUS773.js.map} +0 -0
  337. /package/dist/{chunk-VRSW7PIO.js.map → chunk-NKBSWAP3.js.map} +0 -0
  338. /package/dist/{chunk-ULC4SCFC.js.map → chunk-NLJ7LL6H.js.map} +0 -0
  339. /package/dist/{chunk-RAQD5QCM.js.map → chunk-NQ6JP5CC.js.map} +0 -0
  340. /package/dist/{chunk-IFOHCY4O.js.map → chunk-OF3KG5EV.js.map} +0 -0
  341. /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
  342. /package/dist/{chunk-CWRQGA2T.js.map → chunk-POIENBXE.js.map} +0 -0
  343. /package/dist/{chunk-FW5GTAUY.js.map → chunk-Q4AX4FOK.js.map} +0 -0
  344. /package/dist/{chunk-XQAFSC66.js.map → chunk-Q4FNCT4C.js.map} +0 -0
  345. /package/dist/{chunk-PIELY4BJ.js.map → chunk-Q5Z66LKI.js.map} +0 -0
  346. /package/dist/{chunk-4Y3QLISA.js.map → chunk-Q7AONB4G.js.map} +0 -0
  347. /package/dist/{chunk-EZBBLLEU.js.map → chunk-QQBYZ3B3.js.map} +0 -0
  348. /package/dist/{chunk-FT3LJZWZ.js.map → chunk-RWUXMBSO.js.map} +0 -0
  349. /package/dist/{chunk-KWBMM6MJ.js.map → chunk-RZKKWIGQ.js.map} +0 -0
  350. /package/dist/{chunk-RVBLOR32.js.map → chunk-S7CXVIEF.js.map} +0 -0
  351. /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
  352. /package/dist/{chunk-OFRQMFWD.js.map → chunk-T5D3DYVN.js.map} +0 -0
  353. /package/dist/{chunk-O4UXH7BM.js.map → chunk-TP6KZ2YR.js.map} +0 -0
  354. /package/dist/{chunk-HAWOS4SF.js.map → chunk-TPDN3B5T.js.map} +0 -0
  355. /package/dist/{chunk-54DOLCJ3.js.map → chunk-TXIIJW6C.js.map} +0 -0
  356. /package/dist/{chunk-HN36UVOE.js.map → chunk-U4Z6GZDW.js.map} +0 -0
  357. /package/dist/{chunk-J2IQ6FJ5.js.map → chunk-UKLNLWTP.js.map} +0 -0
  358. /package/dist/{chunk-MKHNLRVX.js.map → chunk-VPPD2AJN.js.map} +0 -0
  359. /package/dist/{chunk-TIM4PXWN.js.map → chunk-VWRXSBT2.js.map} +0 -0
  360. /package/dist/{chunk-KVP5A3YK.js.map → chunk-WDWZKTGA.js.map} +0 -0
  361. /package/dist/{chunk-FYSS2PYA.js.map → chunk-WH5ZEBKS.js.map} +0 -0
  362. /package/dist/{chunk-KAGXV3ID.js.map → chunk-WMMXOSZG.js.map} +0 -0
  363. /package/dist/{chunk-4RSFYS2V.js.map → chunk-X6D5JEUV.js.map} +0 -0
  364. /package/dist/{chunk-GFYDOH7D.js.map → chunk-XEPNAU3T.js.map} +0 -0
  365. /package/dist/{chunk-VMACQT3T.js.map → chunk-XH7UDC5Y.js.map} +0 -0
  366. /package/dist/{chunk-PDWQJFMK.js.map → chunk-XHMHHP7B.js.map} +0 -0
  367. /package/dist/{chunk-SA3KLZDZ.js.map → chunk-XNAI7QGU.js.map} +0 -0
  368. /package/dist/{chunk-7TENMQNQ.js.map → chunk-XZMSRHFD.js.map} +0 -0
  369. /package/dist/{chunk-HBHBRRSW.js.map → chunk-YBAK2WN5.js.map} +0 -0
  370. /package/dist/{chunk-QLKUWDMQ.js.map → chunk-YDJ5GAGL.js.map} +0 -0
  371. /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
@@ -1,35 +1,35 @@
1
1
  import "../chunk-TWAKMV5B.js";
2
2
  import {
3
3
  SequenceResolver
4
- } from "../chunk-QLKUWDMQ.js";
5
- import "../chunk-643YFWNK.js";
6
- import "../chunk-XQAFSC66.js";
7
- import "../chunk-3I7KE2N6.js";
8
- import "../chunk-CWRQGA2T.js";
9
- import "../chunk-2ORD2FMN.js";
4
+ } from "../chunk-YDJ5GAGL.js";
5
+ import "../chunk-GPWDP5FF.js";
6
+ import "../chunk-POIENBXE.js";
10
7
  import "../chunk-2SRWPNQ7.js";
11
- import "../chunk-ALDS5ISD.js";
12
8
  import "../chunk-QMRR35W2.js";
13
9
  import "../chunk-KZ5F52D6.js";
10
+ import "../chunk-Q4FNCT4C.js";
11
+ import "../chunk-BNV7P52K.js";
12
+ import "../chunk-2ORD2FMN.js";
13
+ import "../chunk-ALDS5ISD.js";
14
14
  import "../chunk-QOB473HS.js";
15
- import "../chunk-3V3Z4EML.js";
16
- import "../chunk-5JEOLUWJ.js";
15
+ import "../chunk-L4FWEI2P.js";
17
16
  import "../chunk-2L7GNARR.js";
18
17
  import "../chunk-IFUWFCPJ.js";
18
+ import "../chunk-5JEOLUWJ.js";
19
19
  import "../chunk-KFJKOVDD.js";
20
- import "../chunk-KWBMM6MJ.js";
20
+ import "../chunk-RZKKWIGQ.js";
21
+ import "../chunk-GYXUCS37.js";
21
22
  import "../chunk-5UX5QAFJ.js";
22
- import "../chunk-Z2JH5KW5.js";
23
23
  import "../chunk-AL5E624U.js";
24
- import "../chunk-GYXUCS37.js";
24
+ import "../chunk-Z2JH5KW5.js";
25
25
  import "../chunk-LV7LSPBF.js";
26
26
  import "../chunk-AG4F6NVT.js";
27
- import "../chunk-Q5SCBQLY.js";
28
- import "../chunk-UN5WU2OX.js";
29
- import "../chunk-YBF2WUGQ.js";
30
- import "../chunk-L7VH6IMR.js";
27
+ import "../chunk-BXLC3TBQ.js";
31
28
  import "../chunk-QXUXO22M.js";
29
+ import "../chunk-GDWU7WF4.js";
32
30
  import "../chunk-LNZJJFZQ.js";
31
+ import "../chunk-YBF2WUGQ.js";
32
+ import "../chunk-L7VH6IMR.js";
33
33
  import "../chunk-TBQR5VCN.js";
34
34
  import "../chunk-BA4RHQ3B.js";
35
35
  import "../chunk-YOXYSAUI.js";
@@ -1,10 +1,10 @@
1
1
  import "../chunk-QJCZ3IQP.js";
2
2
  import {
3
3
  TutorialOverlay
4
- } from "../chunk-PGJIWCQR.js";
4
+ } from "../chunk-6EZQLNPK.js";
5
+ import "../chunk-DE7E2GBP.js";
5
6
  import "../chunk-34643ATX.js";
6
7
  import "../chunk-RXJQA3FQ.js";
7
- import "../chunk-DE7E2GBP.js";
8
8
  import "../chunk-ETSASQXI.js";
9
9
  import "../chunk-XJAD6E3V.js";
10
10
  import "../chunk-F5H2ZXST.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  UsableModal
3
- } from "../chunk-PIELY4BJ.js";
3
+ } from "../chunk-Q5Z66LKI.js";
4
4
  import "../chunk-IQDPMLDM.js";
5
5
  import "../chunk-PZ5AY32C.js";
6
6
  export {
@@ -1,21 +1,21 @@
1
1
  import "../chunk-573PQ6C6.js";
2
2
  import {
3
3
  AddressAutocomplete
4
- } from "../chunk-R775ISK6.js";
4
+ } from "../chunk-2L6TANRY.js";
5
+ import "../chunk-FKUVFPQZ.js";
5
6
  import "../chunk-IU2WSJ4F.js";
6
- import "../chunk-4RSFYS2V.js";
7
- import "../chunk-4X2TOMK6.js";
7
+ import "../chunk-X6D5JEUV.js";
8
+ import "../chunk-EIOGJBJ5.js";
9
+ import "../chunk-P5JCOFK3.js";
10
+ import "../chunk-NYA26GV2.js";
11
+ import "../chunk-L7N4AFZD.js";
8
12
  import "../chunk-44FY2YZL.js";
9
13
  import "../chunk-6JKECOZ2.js";
10
14
  import "../chunk-6HLWZR3X.js";
11
15
  import "../chunk-QVYBRD6U.js";
12
16
  import "../chunk-NNKIM73H.js";
13
17
  import "../chunk-O7QPPJAK.js";
14
- import "../chunk-EIOGJBJ5.js";
15
- import "../chunk-P5JCOFK3.js";
16
- import "../chunk-NYA26GV2.js";
17
18
  import "../chunk-DDNUPFPE.js";
18
- import "../chunk-L7N4AFZD.js";
19
19
  import "../chunk-LL2BWQPM.js";
20
20
  import "../chunk-DVRNW33K.js";
21
21
  import "../chunk-RGVNXES5.js";
@@ -4,8 +4,8 @@ import {
4
4
  Autocomplete_default
5
5
  } from "../chunk-CFDWKQZT.js";
6
6
  import "../chunk-SY5FYBAF.js";
7
- import "../chunk-SAKSIN7E.js";
8
7
  import "../chunk-PELRSZFU.js";
8
+ import "../chunk-SAKSIN7E.js";
9
9
  import "../chunk-JXS56EW5.js";
10
10
  import "../chunk-RGVNXES5.js";
11
11
  import "../chunk-GDN2LUTZ.js";
@@ -1,20 +1,20 @@
1
1
  import "../chunk-BO6S47KI.js";
2
2
  import {
3
3
  Calendar
4
- } from "../chunk-YQMJJ7AL.js";
5
- import "../chunk-ZDLC4BN4.js";
4
+ } from "../chunk-6G2RAZTS.js";
6
5
  import "../chunk-ZZGG6AUD.js";
7
6
  import "../chunk-4I2SDWSF.js";
8
7
  import "../chunk-LZOCNAUA.js";
9
- import "../chunk-F7JRQ2EI.js";
10
- import "../chunk-J6LIZXSF.js";
8
+ import "../chunk-ZDLC4BN4.js";
9
+ import "../chunk-5YX2VQFP.js";
11
10
  import "../chunk-66TCKXOB.js";
12
- import "../chunk-WQEGPSGD.js";
13
11
  import "../chunk-WN6LR4HX.js";
14
12
  import "../chunk-UXYCBPCE.js";
15
13
  import "../chunk-X5GCAXZS.js";
16
14
  import "../chunk-3PWDVJWD.js";
15
+ import "../chunk-WQEGPSGD.js";
17
16
  import "../chunk-JV2JIUDT.js";
17
+ import "../chunk-J6LIZXSF.js";
18
18
  import "../chunk-QWOI5BZV.js";
19
19
  import "../chunk-LL2BWQPM.js";
20
20
  import "../chunk-VWKMN3ZZ.js";
@@ -1,19 +1,19 @@
1
1
  import "../chunk-N5ZWC6CB.js";
2
2
  import {
3
3
  CategorySelect
4
- } from "../chunk-MKHNLRVX.js";
5
- import "../chunk-FZZMNKVF.js";
6
- import "../chunk-WDSJ6SVY.js";
7
- import "../chunk-PGGYZU7Q.js";
4
+ } from "../chunk-VPPD2AJN.js";
8
5
  import "../chunk-QYY37ECA.js";
6
+ import "../chunk-6TAPAIRR.js";
9
7
  import "../chunk-5F7HYYGM.js";
10
- import "../chunk-S5VIN3EB.js";
11
8
  import "../chunk-Y46R26TE.js";
9
+ import "../chunk-WDSJ6SVY.js";
10
+ import "../chunk-GHP5JLL3.js";
11
+ import "../chunk-S5VIN3EB.js";
12
+ import "../chunk-PGGYZU7Q.js";
12
13
  import "../chunk-RZVUY2MO.js";
13
14
  import "../chunk-USJPZ5Q7.js";
14
- import "../chunk-XHHR6G35.js";
15
15
  import "../chunk-R2AZOWEZ.js";
16
- import "../chunk-GHP5JLL3.js";
16
+ import "../chunk-XHHR6G35.js";
17
17
  import "../chunk-VPGDYI63.js";
18
18
  import "../chunk-DMNZD3Q7.js";
19
19
  import {
@@ -1,13 +1,13 @@
1
1
  import "../chunk-IDMG332I.js";
2
2
  import {
3
3
  CodeEditor
4
- } from "../chunk-Z2J4MRTF.js";
4
+ } from "../chunk-MKNW4FRR.js";
5
+ import "../chunk-3TVUW7QE.js";
5
6
  import "../chunk-OXXIGHZK.js";
6
7
  import {
7
8
  configureCodeEditor
8
9
  } from "../chunk-EYDQV55H.js";
9
10
  import "../chunk-X3OWMTLO.js";
10
- import "../chunk-3TVUW7QE.js";
11
11
  import "../chunk-GDN2LUTZ.js";
12
12
  import "../chunk-7ZADLRLP.js";
13
13
  import "../chunk-3NGE6NE6.js";
@@ -1,7 +1,8 @@
1
1
  import "../chunk-BN6POCYF.js";
2
2
  import {
3
3
  DateRangePicker
4
- } from "../chunk-KNW63H63.js";
4
+ } from "../chunk-6PQZIZMN.js";
5
+ import "../chunk-EASEJDBQ.js";
5
6
  import {
6
7
  DEFAULT_QUICK_RANGES,
7
8
  DEFAULT_QUICK_RANGE_LABELS,
@@ -9,30 +10,29 @@ import {
9
10
  createQuickRanges
10
11
  } from "../chunk-R26WP22N.js";
11
12
  import "../chunk-K62L5JFC.js";
12
- import "../chunk-SIY64A6O.js";
13
- import "../chunk-QAF76E6U.js";
14
- import "../chunk-6KKQHJE7.js";
15
- import "../chunk-EASEJDBQ.js";
16
13
  import {
17
14
  resolveDayRange
18
15
  } from "../chunk-IXXB7CTR.js";
16
+ import "../chunk-SIY64A6O.js";
17
+ import "../chunk-QAF76E6U.js";
18
+ import "../chunk-6KKQHJE7.js";
19
19
  import "../chunk-VCYYL23C.js";
20
20
  import "../chunk-SUTOAW7I.js";
21
21
  import "../chunk-BO6S47KI.js";
22
- import "../chunk-YQMJJ7AL.js";
23
- import "../chunk-ZDLC4BN4.js";
22
+ import "../chunk-6G2RAZTS.js";
24
23
  import "../chunk-ZZGG6AUD.js";
25
24
  import "../chunk-4I2SDWSF.js";
26
25
  import "../chunk-LZOCNAUA.js";
27
- import "../chunk-F7JRQ2EI.js";
28
- import "../chunk-J6LIZXSF.js";
26
+ import "../chunk-ZDLC4BN4.js";
27
+ import "../chunk-5YX2VQFP.js";
29
28
  import "../chunk-66TCKXOB.js";
30
- import "../chunk-WQEGPSGD.js";
31
29
  import "../chunk-WN6LR4HX.js";
32
30
  import "../chunk-UXYCBPCE.js";
33
31
  import "../chunk-X5GCAXZS.js";
34
32
  import "../chunk-3PWDVJWD.js";
33
+ import "../chunk-WQEGPSGD.js";
35
34
  import "../chunk-JV2JIUDT.js";
35
+ import "../chunk-J6LIZXSF.js";
36
36
  import "../chunk-QWOI5BZV.js";
37
37
  import "../chunk-LL2BWQPM.js";
38
38
  import "../chunk-HDBP55R3.js";
@@ -1,9 +1,11 @@
1
1
  import "../chunk-3VMXOGGI.js";
2
2
  import {
3
3
  InputOTP
4
- } from "../chunk-QZOQVJ5L.js";
5
- import "../chunk-NQYC7V5N.js";
6
- import "../chunk-R6L376KR.js";
4
+ } from "../chunk-J3WJEUD2.js";
5
+ import "../chunk-VJ6ZLMQ3.js";
6
+ import "../chunk-XHPL5VI2.js";
7
+ import "../chunk-M6R32IBO.js";
8
+ import "../chunk-IH6DZXTG.js";
7
9
  import "../chunk-HPK33ACY.js";
8
10
  import "../chunk-RGVNXES5.js";
9
11
  import "../chunk-GDN2LUTZ.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "../chunk-CPAJYJUD.js";
10
10
  import {
11
11
  Fields_exports
12
- } from "../chunk-HAWOS4SF.js";
12
+ } from "../chunk-TPDN3B5T.js";
13
13
  import "../chunk-RLTYBV4N.js";
14
14
  import {
15
15
  TextField
@@ -20,7 +20,7 @@ import {
20
20
  import "../chunk-QZRWOF4R.js";
21
21
  import {
22
22
  CategoryField
23
- } from "../chunk-ERAMSYPR.js";
23
+ } from "../chunk-7N4O632I.js";
24
24
  import {
25
25
  FormContext,
26
26
  useFormContext
@@ -42,19 +42,19 @@ import "../chunk-QYKDY4EI.js";
42
42
  import "../chunk-ZJY7OK6H.js";
43
43
  import "../chunk-ZLMKGVB2.js";
44
44
  import "../chunk-N5ZWC6CB.js";
45
- import "../chunk-MKHNLRVX.js";
46
- import "../chunk-FZZMNKVF.js";
47
- import "../chunk-WDSJ6SVY.js";
48
- import "../chunk-PGGYZU7Q.js";
45
+ import "../chunk-VPPD2AJN.js";
49
46
  import "../chunk-QYY37ECA.js";
47
+ import "../chunk-6TAPAIRR.js";
50
48
  import "../chunk-5F7HYYGM.js";
51
- import "../chunk-S5VIN3EB.js";
52
49
  import "../chunk-Y46R26TE.js";
50
+ import "../chunk-WDSJ6SVY.js";
51
+ import "../chunk-GHP5JLL3.js";
52
+ import "../chunk-S5VIN3EB.js";
53
+ import "../chunk-PGGYZU7Q.js";
53
54
  import "../chunk-RZVUY2MO.js";
54
55
  import "../chunk-USJPZ5Q7.js";
55
- import "../chunk-XHHR6G35.js";
56
56
  import "../chunk-R2AZOWEZ.js";
57
- import "../chunk-GHP5JLL3.js";
57
+ import "../chunk-XHHR6G35.js";
58
58
  import "../chunk-VPGDYI63.js";
59
59
  import "../chunk-DMNZD3Q7.js";
60
60
  import "../chunk-PN4HVM43.js";
@@ -0,0 +1,241 @@
1
+ import {
2
+ resolveFieldEdge
3
+ } from "../chunks/chunk-3JBZE4I6.js";
4
+ import {
5
+ webAria,
6
+ webDisabled
7
+ } from "../chunks/chunk-DN73KYIZ.js";
8
+ import {
9
+ useUiTheme
10
+ } from "../chunks/chunk-ZYSOBULX.js";
11
+ import {
12
+ fieldHeightPx
13
+ } from "../chunks/chunk-DNTO2D5M.js";
14
+
15
+ // src/components/form/InputOTP/InputOTP.native.tsx
16
+ import * as React from "react";
17
+ import {
18
+ Platform,
19
+ StyleSheet,
20
+ TextInput,
21
+ View
22
+ } from "react-native";
23
+
24
+ // src/components/form/InputOTP/InputOTP.hooks.native.ts
25
+ import { useCallback, useEffect, useRef, useState } from "react";
26
+
27
+ // src/components/form/InputOTP/InputOTP.core.ts
28
+ var PATTERNS = {
29
+ numeric: /^\d*$/,
30
+ alphanumeric: /^[a-zA-Z0-9]*$/
31
+ };
32
+ var isAllowed = (variant, text) => (PATTERNS[variant] ?? /.*/).test(text);
33
+ var padTo = (digits, length) => Array.from({ length }, (_, i) => digits[i] ?? "");
34
+ function firstSlotFill(variant, index, inputValue, current) {
35
+ if (variant !== "numeric" || index !== 0 || inputValue.length < 2) return null;
36
+ const overtype = inputValue.length === 2 && current !== "" && inputValue.includes(current);
37
+ return overtype ? "overtype" : "code";
38
+ }
39
+ var codeOfFill = (inputValue, current, length) => inputValue.length > length && current !== "" && inputValue.startsWith(current) ? inputValue.slice(1) : inputValue;
40
+
41
+ // src/components/form/InputOTP/InputOTP.hooks.native.ts
42
+ var useNativeOtpDigits = ({ variant, length, value, onChange, onComplete }) => {
43
+ const [digits, setDigits] = useState(() => padTo([], length));
44
+ const boxRefs = useRef([]);
45
+ useEffect(() => {
46
+ setDigits(padTo(value.split("").slice(0, length), length));
47
+ }, [value, length]);
48
+ const focusBox = useCallback((index) => boxRefs.current[index]?.focus(), []);
49
+ const publish = useCallback(
50
+ (next) => {
51
+ onChange?.(next);
52
+ if (next.length === length) onComplete?.(next);
53
+ },
54
+ [length, onChange, onComplete]
55
+ );
56
+ const spread = useCallback(
57
+ (text) => {
58
+ const code = text.slice(0, length);
59
+ if (!code || !isAllowed(variant, code)) return;
60
+ setDigits(padTo(code.split(""), length));
61
+ publish(code);
62
+ focusBox(Math.min(code.length, length - 1));
63
+ },
64
+ [variant, length, publish, focusBox]
65
+ );
66
+ const handleChangeText = useCallback(
67
+ (index, text) => {
68
+ const fill = firstSlotFill(variant === "alphanumeric" ? "numeric" : variant, index, text, digits[0] ?? "");
69
+ if (fill) return fill === "code" ? spread(codeOfFill(text, digits[0] ?? "", length)) : void 0;
70
+ if (!isAllowed(variant, text)) return;
71
+ const next = [...digits];
72
+ next[index] = text.slice(-1);
73
+ setDigits(next);
74
+ publish(next.join(""));
75
+ if (text && index < length - 1) focusBox(index + 1);
76
+ },
77
+ [variant, digits, length, publish, focusBox, spread]
78
+ );
79
+ const handleKey = useCallback(
80
+ (index, key) => {
81
+ if (key === "Backspace" && !digits[index] && index > 0) focusBox(index - 1);
82
+ },
83
+ [digits, focusBox]
84
+ );
85
+ return { digits, boxRefs, handleChangeText, handleKey };
86
+ };
87
+
88
+ // src/components/form/InputOTP/InputOTP.metrics.ts
89
+ var OTP_FONT_PX = {
90
+ xs: 12,
91
+ sm: 14,
92
+ md: 16,
93
+ lg: 18,
94
+ xl: 20
95
+ };
96
+ var OTP_GAP_PX = 8;
97
+ var OTP_BORDER = { rest: 1, focused: 2 };
98
+ var OTP_FIT_GAP_PX = 6;
99
+ var OTP_FIT_MIN_WIDTH_PX = 32;
100
+ var OTP_FIT_MIN_HEIGHT_PX = 40;
101
+ function otpFitBox(rowWidth, side, length) {
102
+ const height = Math.max(side, OTP_FIT_MIN_HEIGHT_PX);
103
+ const count = Math.max(1, Math.floor(length));
104
+ const share = Math.floor((rowWidth - (count - 1) * OTP_FIT_GAP_PX) / count);
105
+ const width = Math.min(height, Math.max(OTP_FIT_MIN_WIDTH_PX, Number.isFinite(share) ? share : height));
106
+ return { width, height };
107
+ }
108
+
109
+ // src/components/form/InputOTP/InputOTP.native.tsx
110
+ import { jsx } from "react/jsx-runtime";
111
+ var PALETTE_KEYS = ["primary", "secondary", "success", "warning", "info", "danger", "neutral"];
112
+ function accentOf(theme, color) {
113
+ const key = PALETTE_KEYS.find((candidate) => candidate === color) ?? "primary";
114
+ return theme.palette[key].main;
115
+ }
116
+ function keypadProps(variant, index) {
117
+ if (variant !== "numeric") return { autoCapitalize: "none", autoCorrect: false, spellCheck: false };
118
+ const fill = index === 0 ? Platform.select({
119
+ ios: { textContentType: "oneTimeCode", autoComplete: "one-time-code" },
120
+ android: { autoComplete: "sms-otp" },
121
+ default: { autoComplete: "one-time-code" }
122
+ }) : {};
123
+ return { keyboardType: "number-pad", inputMode: "numeric", ...fill };
124
+ }
125
+ var boxMaxLength = (variant, index, length) => variant !== "masked" && index === 0 ? length + 1 : 1;
126
+ function fitFootprint(side, length, rowWidth) {
127
+ if (rowWidth !== null) return otpFitBox(rowWidth, side, length);
128
+ const height = Math.max(side, OTP_FIT_MIN_HEIGHT_PX);
129
+ return { height, flexGrow: 1, flexShrink: 1, flexBasis: 0, minWidth: OTP_FIT_MIN_WIDTH_PX, maxWidth: height };
130
+ }
131
+ function useFitWidth(fit, side, length) {
132
+ const [rowWidth, setRowWidth] = React.useState(null);
133
+ if (fit !== "width") return { footprint: void 0, rowLayout: {}, rowStyles: [] };
134
+ return {
135
+ footprint: fitFootprint(side, length, rowWidth),
136
+ rowLayout: { onLayout: (event) => setRowWidth(event.nativeEvent.layout.width) },
137
+ rowStyles: [styles.fitRow]
138
+ };
139
+ }
140
+ function boxStyle(theme, size, accent, state, footprint) {
141
+ const side = fieldHeightPx(theme.fieldHeight, size);
142
+ const edge = resolveFieldEdge(theme.palette.divider, theme.palette.background.paper);
143
+ const borderColor = state.error ? theme.palette.danger.main : state.disabled ? theme.palette.action.disabled : state.focused ? accent : edge;
144
+ return {
145
+ ...footprint ?? { width: side, height: side },
146
+ borderRadius: theme.radius.field,
147
+ borderWidth: state.focused ? OTP_BORDER.focused : OTP_BORDER.rest,
148
+ borderColor,
149
+ backgroundColor: theme.palette.background.paper,
150
+ color: state.disabled ? theme.palette.text.disabled : theme.palette.text.primary,
151
+ fontFamily: theme.typography.fontFamily,
152
+ fontSize: OTP_FONT_PX[size],
153
+ fontWeight: "600",
154
+ textAlign: "center",
155
+ padding: 0
156
+ };
157
+ }
158
+ var InputOTP = React.forwardRef((props, ref) => {
159
+ const {
160
+ variant = "numeric",
161
+ color = "primary",
162
+ size = "md",
163
+ length = 6,
164
+ value = "",
165
+ onChange,
166
+ onComplete,
167
+ autoFocus = false,
168
+ error = false,
169
+ disabled = false,
170
+ dataTestId,
171
+ fit,
172
+ style,
173
+ "aria-label": ariaLabel
174
+ } = props;
175
+ const theme = useUiTheme();
176
+ const accent = accentOf(theme, color);
177
+ const [focusedIndex, setFocusedIndex] = React.useState(null);
178
+ const { footprint, rowLayout, rowStyles } = useFitWidth(fit, fieldHeightPx(theme.fieldHeight, size), length);
179
+ const { digits, boxRefs, handleChangeText, handleKey } = useNativeOtpDigits({
180
+ variant,
181
+ length,
182
+ value,
183
+ onChange,
184
+ onComplete
185
+ });
186
+ return /* @__PURE__ */ jsx(
187
+ View,
188
+ {
189
+ ref,
190
+ testID: dataTestId,
191
+ role: "group",
192
+ "aria-label": ariaLabel,
193
+ ...rowLayout,
194
+ style: [styles.row, ...rowStyles, style],
195
+ children: digits.map((digit, index) => /* @__PURE__ */ jsx(
196
+ TextInput,
197
+ {
198
+ ref: (element) => {
199
+ boxRefs.current[index] = element;
200
+ },
201
+ testID: dataTestId ? `${dataTestId}-slot-${index}` : void 0,
202
+ value: variant === "masked" ? digit ? "\u2022" : "" : digit,
203
+ onChangeText: (text) => handleChangeText(index, text),
204
+ onKeyPress: (event) => handleKey(index, event.nativeEvent.key),
205
+ onFocus: () => setFocusedIndex(index),
206
+ onBlur: () => setFocusedIndex((current) => current === index ? null : current),
207
+ autoFocus: autoFocus && index === 0,
208
+ editable: !disabled,
209
+ "aria-disabled": disabled,
210
+ ...webAria({ "aria-invalid": error }),
211
+ maxLength: boxMaxLength(variant, index, length),
212
+ style: boxStyle(theme, size, accent, { focused: focusedIndex === index && !disabled, error, disabled }, footprint),
213
+ ...webDisabled(disabled),
214
+ ...keypadProps(variant, index)
215
+ },
216
+ index
217
+ ))
218
+ }
219
+ );
220
+ });
221
+ InputOTP.displayName = "InputOTP";
222
+ var styles = StyleSheet.create({
223
+ row: {
224
+ flexDirection: "row",
225
+ justifyContent: "center",
226
+ alignItems: "center",
227
+ gap: OTP_GAP_PX
228
+ },
229
+ /** `fit="width"`: the parent's whole width, in a column or a row parent, shared at the prototype's gap. */
230
+ fitRow: {
231
+ // Both: `stretch` alone spans a column parent but not a row parent, where
232
+ // the row would shrink to its boxes and collapse them to their minimum.
233
+ alignSelf: "stretch",
234
+ width: "100%",
235
+ gap: OTP_FIT_GAP_PX
236
+ }
237
+ });
238
+ export {
239
+ InputOTP
240
+ };
241
+ //# sourceMappingURL=InputOTP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/form/InputOTP/InputOTP.native.tsx","../../../src/components/form/InputOTP/InputOTP.hooks.native.ts","../../../src/components/form/InputOTP/InputOTP.core.ts","../../../src/components/form/InputOTP/InputOTP.metrics.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n StyleSheet,\n TextInput,\n View,\n type LayoutChangeEvent,\n type TextInputProps,\n type TextStyle,\n type ViewStyle,\n} from 'react-native';\n\nimport { useNativeOtpDigits } from './InputOTP.hooks.native';\nimport {\n OTP_BORDER,\n OTP_FIT_GAP_PX,\n OTP_FIT_MIN_HEIGHT_PX,\n OTP_FIT_MIN_WIDTH_PX,\n OTP_FONT_PX,\n OTP_GAP_PX,\n otpFitBox,\n} from './InputOTP.metrics';\nimport type { InputOTPProps } from './InputOTP.types.native';\nimport { webAria, webDisabled } from '../../../platform/aria';\nimport { resolveFieldEdge } from '../../../tokens/field-edge.core';\nimport { fieldHeightPx } from '../../../tokens/field-height.core';\nimport type { UiPaletteKey, UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\nconst PALETTE_KEYS: readonly UiPaletteKey[] = ['primary', 'secondary', 'success', 'warning', 'info', 'danger', 'neutral'];\n\n/** The palette slot a `color` names; anything else is `primary`, as on the web. */\nfunction accentOf(theme: UiTheme, color: string): string {\n const key = PALETTE_KEYS.find((candidate) => candidate === color) ?? 'primary';\n return theme.palette[key].main;\n}\n\n/**\n * The keypad and the one-time-code fill, the web's `keypadProps` in React\n * Native's words: digits only for `numeric`, and on the FIRST box the hint that\n * lets the phone offer the code from an SMS — `oneTimeCode` on iOS,\n * `sms-otp` on Android.\n */\nfunction keypadProps(variant: string, index: number): Partial<TextInputProps> {\n // A code is not prose: no capital on the first letter, no autocorrect.\n if (variant !== 'numeric') return { autoCapitalize: 'none', autoCorrect: false, spellCheck: false };\n const fill: Partial<TextInputProps> =\n index === 0\n ? Platform.select<Partial<TextInputProps>>({\n ios: { textContentType: 'oneTimeCode', autoComplete: 'one-time-code' },\n android: { autoComplete: 'sms-otp' },\n default: { autoComplete: 'one-time-code' },\n })\n : {};\n return { keyboardType: 'number-pad', inputMode: 'numeric', ...fill };\n}\n\n/** The first box takes a whole code in one change (see the web's `slotMaxLength`), except `masked`'s. */\nconst boxMaxLength = (variant: string, index: number, length: number): number =>\n variant !== 'masked' && index === 0 ? length + 1 : 1;\n\ninterface BoxState {\n focused: boolean;\n error: boolean;\n disabled: boolean;\n}\n\n/**\n * A box's footprint under `fit=\"width\"`: the measured share of the row once\n * the row has been laid out, and until then a flex share bounded by the same\n * limits, so the first frame already fits the row.\n */\nfunction fitFootprint(side: number, length: number, rowWidth: number | null): TextStyle {\n if (rowWidth !== null) return otpFitBox(rowWidth, side, length);\n const height = Math.max(side, OTP_FIT_MIN_HEIGHT_PX);\n return { height, flexGrow: 1, flexShrink: 1, flexBasis: 0, minWidth: OTP_FIT_MIN_WIDTH_PX, maxWidth: height };\n}\n\n/**\n * `fit=\"width\"`'s state: the row's width once laid out (the row takes its\n * parent's whole width), the boxes' footprint from it, and what the row adds —\n * its `onLayout` and the fit style. Without the option, nothing: the boxes keep\n * their square and the row's props are exactly the default's.\n *\n * The share is of the row's OUTER width, so under `fit` the row's `style`\n * should set no horizontal padding and no gap: pad the parent instead.\n */\nfunction useFitWidth(fit: InputOTPProps['fit'], side: number, length: number) {\n const [rowWidth, setRowWidth] = React.useState<number | null>(null);\n if (fit !== 'width') return { footprint: undefined, rowLayout: {}, rowStyles: [] };\n return {\n footprint: fitFootprint(side, length, rowWidth),\n rowLayout: { onLayout: (event: LayoutChangeEvent) => setRowWidth(event.nativeEvent.layout.width) },\n rowStyles: [styles.fitRow],\n };\n}\n\n/** One box's paint: the web slot's square, border and type, from the same numbers. */\nfunction boxStyle(theme: UiTheme, size: SizeValue, accent: string, state: BoxState, footprint?: TextStyle): TextStyle {\n const side = fieldHeightPx(theme.fieldHeight, size);\n const edge = resolveFieldEdge(theme.palette.divider, theme.palette.background.paper);\n // Error and disabled outrank focus, as in MUI's outlined input (and the native `Input`).\n const borderColor = state.error\n ? theme.palette.danger.main\n : state.disabled\n ? theme.palette.action.disabled\n : state.focused\n ? accent\n : edge;\n return {\n ...(footprint ?? { width: side, height: side }),\n borderRadius: theme.radius.field,\n borderWidth: state.focused ? OTP_BORDER.focused : OTP_BORDER.rest,\n borderColor,\n backgroundColor: theme.palette.background.paper,\n color: state.disabled ? theme.palette.text.disabled : theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: OTP_FONT_PX[size],\n fontWeight: '600',\n textAlign: 'center',\n padding: 0,\n };\n}\n\n/**\n * The native `InputOTP`: one row of boxes, one character each, that moves\n * forward as it is typed, steps back on Backspace in an empty box, and spreads\n * a code the phone fills (or a paste) across every box from the first.\n *\n * The same props as the web one; the row is a `group` named by `aria-label`,\n * each box is `${dataTestId}-slot-${index}`. Gaps against the web:\n * `NATIVE-NOTES.md`.\n */\nexport const InputOTP = React.forwardRef<View, InputOTPProps>((props, ref) => {\n const {\n variant = 'numeric',\n color = 'primary',\n size = 'md',\n length = 6,\n value = '',\n onChange,\n onComplete,\n autoFocus = false,\n error = false,\n disabled = false,\n dataTestId,\n fit,\n style,\n 'aria-label': ariaLabel,\n } = props;\n\n const theme = useUiTheme();\n const accent = accentOf(theme, color);\n const [focusedIndex, setFocusedIndex] = React.useState<number | null>(null);\n const { footprint, rowLayout, rowStyles } = useFitWidth(fit, fieldHeightPx(theme.fieldHeight, size), length);\n const { digits, boxRefs, handleChangeText, handleKey } = useNativeOtpDigits({\n variant,\n length,\n value,\n onChange,\n onComplete,\n });\n\n return (\n <View\n ref={ref}\n testID={dataTestId}\n role=\"group\"\n aria-label={ariaLabel}\n {...rowLayout}\n style={[styles.row, ...rowStyles, style]}\n >\n {digits.map((digit, index) => (\n <TextInput\n key={index}\n ref={(element) => {\n boxRefs.current[index] = element;\n }}\n testID={dataTestId ? `${dataTestId}-slot-${index}` : undefined}\n value={variant === 'masked' ? (digit ? '•' : '') : digit}\n onChangeText={(text) => handleChangeText(index, text)}\n onKeyPress={(event) => handleKey(index, event.nativeEvent.key)}\n onFocus={() => setFocusedIndex(index)}\n onBlur={() => setFocusedIndex((current) => (current === index ? null : current))}\n autoFocus={autoFocus && index === 0}\n editable={!disabled}\n aria-disabled={disabled}\n {...webAria({ 'aria-invalid': error })}\n maxLength={boxMaxLength(variant, index, length)}\n style={boxStyle(theme, size, accent, { focused: focusedIndex === index && !disabled, error, disabled }, footprint)}\n {...webDisabled(disabled)}\n {...keypadProps(variant, index)}\n />\n ))}\n </View>\n );\n});\n\nInputOTP.displayName = 'InputOTP';\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: OTP_GAP_PX,\n },\n /** `fit=\"width\"`: the parent's whole width, in a column or a row parent, shared at the prototype's gap. */\n fitRow: {\n // Both: `stretch` alone spans a column parent but not a row parent, where\n // the row would shrink to its boxes and collapse them to their minimum.\n alignSelf: 'stretch',\n width: '100%',\n gap: OTP_FIT_GAP_PX,\n } satisfies ViewStyle,\n});\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { codeOfFill, firstSlotFill, isAllowed, padTo } from './InputOTP.core';\n\n/** What a box needs from the element behind it: to take the focus. */\ninterface Focusable {\n focus: () => void;\n}\n\ninterface NativeOtpInput {\n variant: string;\n length: number;\n value: string;\n onChange?: (value: string) => void;\n onComplete?: (value: string) => void;\n}\n\n/**\n * The native boxes' digits — the web hook's rules (`InputOTP.hooks.ts`) over\n * React Native's events: `onChangeText` carries the box's whole new text and\n * `onKeyPress` carries only the key's name, and there is no paste event at\n * all. A pasted or SMS-filled code arrives as a change of the FIRST box, whose\n * `maxLength` is the code's length plus one for exactly that reason, and is\n * spread across the boxes by the same `firstSlotFill` / `codeOfFill` the web\n * uses.\n */\nexport const useNativeOtpDigits = ({ variant, length, value, onChange, onComplete }: NativeOtpInput) => {\n const [digits, setDigits] = useState<string[]>(() => padTo([], length));\n const boxRefs = useRef<(Focusable | null)[]>([]);\n\n useEffect(() => {\n setDigits(padTo(value.split('').slice(0, length), length));\n }, [value, length]);\n\n const focusBox = useCallback((index: number) => boxRefs.current[index]?.focus(), []);\n\n const publish = useCallback(\n (next: string) => {\n onChange?.(next);\n if (next.length === length) onComplete?.(next);\n },\n [length, onChange, onComplete],\n );\n\n /** A whole code laid across the boxes from the first one. */\n const spread = useCallback(\n (text: string) => {\n const code = text.slice(0, length);\n if (!code || !isAllowed(variant, code)) return;\n setDigits(padTo(code.split(''), length));\n publish(code);\n focusBox(Math.min(code.length, length - 1));\n },\n [variant, length, publish, focusBox],\n );\n\n const handleChangeText = useCallback(\n (index: number, text: string) => {\n // The web's paste spreads a code for EVERY variant; React Native has no\n // paste event, so a code arrives as a change of the first box, read by\n // the numeric rule for `alphanumeric` too (`masked` shows a bullet, whose\n // text no longer holds the digit it hides: it keeps one character a box).\n const fill = firstSlotFill(variant === 'alphanumeric' ? 'numeric' : variant, index, text, digits[0] ?? '');\n if (fill) return fill === 'code' ? spread(codeOfFill(text, digits[0] ?? '', length)) : undefined;\n if (!isAllowed(variant, text)) return;\n const next = [...digits];\n next[index] = text.slice(-1);\n setDigits(next);\n publish(next.join(''));\n if (text && index < length - 1) focusBox(index + 1);\n },\n [variant, digits, length, publish, focusBox, spread],\n );\n\n /** Backspace in a box that is already empty steps back to the one before. */\n const handleKey = useCallback(\n (index: number, key: string) => {\n if (key === 'Backspace' && !digits[index] && index > 0) focusBox(index - 1);\n },\n [digits, focusBox],\n );\n\n return { digits, boxRefs, handleChangeText, handleKey };\n};\n","/**\n * The digits' arithmetic, shared by both renderers' hooks (`InputOTP.hooks.ts`\n * on the web, `InputOTP.hooks.native.ts` on React Native). Pure: no React, no\n * DOM, no react-native.\n */\n\n/**\n * What each variant accepts. `masked` constrains nothing — it only changes what\n * is drawn — so it has no pattern here.\n */\nexport const PATTERNS: Record<string, RegExp> = {\n numeric: /^\\d*$/,\n alphanumeric: /^[a-zA-Z0-9]*$/,\n};\n\n/** Whether `text` is something this variant will take. */\nexport const isAllowed = (variant: string, text: string) => (PATTERNS[variant] ?? /.*/).test(text);\n\n/** The digit array is always `length` long, blank-padded on the right. */\nexport const padTo = (digits: string[], length: number) =>\n Array.from({ length }, (_, i) => digits[i] ?? '');\n\n/**\n * What a change to the numeric FIRST slot is, now that its `maxLength` is the\n * code's length rather than 1 (FUT-4144).\n *\n * That slot carries `one-time-code`, and the phone's SMS fill (or a password\n * manager) writes the WHOLE code into it as one change, not a paste — kept to\n * one character, the code lost every digit but the last. So:\n *\n * - `overtype`: a keystroke into the already-filled slot (its old character\n * plus the new one). Ignored, exactly as `maxLength={1}` refused it before.\n * - `code`: anything else longer than one character, written in one go.\n * Spread across the slots like a paste.\n *\n * Every other slot and variant keeps `maxLength={1}` and never gets here.\n */\nexport function firstSlotFill(variant: string, index: number, inputValue: string, current: string) {\n if (variant !== 'numeric' || index !== 0 || inputValue.length < 2) return null;\n const overtype = inputValue.length === 2 && current !== '' && inputValue.includes(current);\n return overtype ? 'overtype' : 'code';\n}\n\n/**\n * The code inside a first-slot fill. A phone that INSERTS the SMS code at the\n * caret rather than replacing the slot leaves the digit already there in\n * front: `4` + `482913` arrives as `4482913`, which spread as-is would give\n * `448291`. Longer than the code and led by that digit: the digit is dropped.\n */\nexport const codeOfFill = (inputValue: string, current: string, length: number): string =>\n inputValue.length > length && current !== '' && inputValue.startsWith(current) ? inputValue.slice(1) : inputValue;\n","/**\n * The numbers both renderers read (see `NATIVE.md`, \"Numbers\").\n *\n * Each box's type size, in design px, per size step; its side is the theme's\n * field height for that step (a square), its weight 600.\n */\nexport const OTP_FONT_PX: Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', number> = {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n};\n\n/** The gap between two boxes: MUI's `gap: 1`, one 8px spacing unit. */\nexport const OTP_GAP_PX = 8;\n\n/** The border: 1px at rest, 2px focused (MUI's focused outline). */\nexport const OTP_BORDER = { rest: 1, focused: 2 } as const;\n\n/**\n * `fit=\"width\"` (FUT-4585): the gap between two boxes when they share the row's\n * width — the approved prototype's 6px, a little tighter than the default 8px\n * so six portrait boxes stay at least 40 wide on a 320 phone.\n */\nexport const OTP_FIT_GAP_PX = 6;\n\n/** `fit=\"width\"`: no box is narrower than this, however narrow the row. */\nexport const OTP_FIT_MIN_WIDTH_PX = 32;\n\n/** `fit=\"width\"`: no box is shorter than the 40px touch floor, whatever its size. */\nexport const OTP_FIT_MIN_HEIGHT_PX = 40;\n\n/**\n * One box's size under `fit=\"width\"`, for a row `rowWidth` wide holding\n * `length` boxes whose size step draws a field `side` tall.\n *\n * The box keeps the field's height (never under {@link OTP_FIT_MIN_HEIGHT_PX})\n * and takes an equal share of the row, less the gaps, for its width: floored\n * to a whole pixel so six of them never overflow the row, never wider than it\n * is tall (a wide row keeps squares) and never under\n * {@link OTP_FIT_MIN_WIDTH_PX}. A narrow row therefore draws PORTRAIT boxes\n * rather than dropping to a smaller size and its smaller type.\n */\nexport function otpFitBox(rowWidth: number, side: number, length: number): { width: number; height: number } {\n const height = Math.max(side, OTP_FIT_MIN_HEIGHT_PX);\n const count = Math.max(1, Math.floor(length));\n const share = Math.floor((rowWidth - (count - 1) * OTP_FIT_GAP_PX) / count);\n const width = Math.min(height, Math.max(OTP_FIT_MIN_WIDTH_PX, Number.isFinite(share) ? share : height));\n return { width, height };\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import "../chunk-5CUKSNWG.js";
2
2
  import {
3
3
  AppHeaderDetails
4
- } from "../chunk-VMACQT3T.js";
4
+ } from "../chunk-XH7UDC5Y.js";
5
5
  import {
6
6
  AppHeader,
7
7
  AppHeader_default
@@ -18,19 +18,19 @@ import {
18
18
  highlightOf,
19
19
  initialsOf
20
20
  } from "../chunk-IQU4HKND.js";
21
- import "../chunk-7TENMQNQ.js";
21
+ import "../chunk-XZMSRHFD.js";
22
+ import "../chunk-3ROCD7XF.js";
22
23
  import "../chunk-LYVTJLCF.js";
23
24
  import "../chunk-CRN4KKNI.js";
24
25
  import "../chunk-OHA2PAAA.js";
25
- import "../chunk-3ROCD7XF.js";
26
26
  import "../chunk-ABZJNKR6.js";
27
27
  import "../chunk-IM4DMKH4.js";
28
28
  import "../chunk-MDU5Q2HW.js";
29
- import "../chunk-KWBMM6MJ.js";
29
+ import "../chunk-RZKKWIGQ.js";
30
+ import "../chunk-GYXUCS37.js";
30
31
  import "../chunk-5UX5QAFJ.js";
31
- import "../chunk-Z2JH5KW5.js";
32
32
  import "../chunk-AL5E624U.js";
33
- import "../chunk-GYXUCS37.js";
33
+ import "../chunk-Z2JH5KW5.js";
34
34
  import "../chunk-LV7LSPBF.js";
35
35
  import "../chunk-YOXYSAUI.js";
36
36
  import "../chunk-PPEHBI5O.js";
@@ -1,27 +1,27 @@
1
1
  import "../chunk-R26KYJHK.js";
2
2
  import {
3
3
  SectionNav
4
- } from "../chunk-IJVBLU25.js";
4
+ } from "../chunk-KJZ4PINO.js";
5
5
  import {
6
6
  sectionNavBarInset
7
- } from "../chunk-ULC4SCFC.js";
8
- import "../chunk-7MLT66DE.js";
9
- import "../chunk-SNWCT6JN.js";
10
- import "../chunk-ILJ3FXIC.js";
7
+ } from "../chunk-NLJ7LL6H.js";
8
+ import "../chunk-K33X3PDT.js";
9
+ import "../chunk-AMIUZRDQ.js";
10
+ import "../chunk-MM3QESLI.js";
11
11
  import {
12
12
  RaisedActionButton
13
- } from "../chunk-UKUGSU3Y.js";
14
- import "../chunk-24HHUCWB.js";
13
+ } from "../chunk-L4V7FZJI.js";
14
+ import "../chunk-LDCZPZPD.js";
15
15
  import "../chunk-YCCWJ5XQ.js";
16
16
  import "../chunk-TMSWLFL4.js";
17
17
  import "../chunk-JJTJ7DCV.js";
18
18
  import "../chunk-PUFA7FQ7.js";
19
19
  import "../chunk-5AK2EZG5.js";
20
- import "../chunk-N5PVD4J5.js";
21
- import "../chunk-6C5D6O3D.js";
20
+ import "../chunk-6DO672AG.js";
22
21
  import "../chunk-ZNCYCE7L.js";
23
22
  import "../chunk-2L3VRVRE.js";
24
23
  import "../chunk-BJE3XHD4.js";
24
+ import "../chunk-6C5D6O3D.js";
25
25
  import "../chunk-3UIDKLML.js";
26
26
  import "../chunk-PYC4CWCQ.js";
27
27
  import "../chunk-VWKMN3ZZ.js";