@12-apps/ui 6.20.0 → 6.21.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 (768) hide show
  1. package/NATIVE.md +5 -1
  2. package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
  3. package/dist/_internal/components/data-display/Alert/Alert.styles.js +2 -2
  4. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +7 -7
  5. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  6. package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
  7. package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
  8. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
  9. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +10 -10
  10. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
  11. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  12. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  13. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  14. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  15. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  16. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  17. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +3 -3
  18. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +52 -51
  19. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +73 -69
  20. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +5 -5
  21. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
  22. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +16 -12
  23. package/dist/_internal/components/data-display/DataViews/base-card.js +7 -5
  24. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +7 -7
  25. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +10 -3
  26. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/base-list-card.js +14 -13
  28. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +17 -15
  29. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +3 -3
  30. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +8 -8
  32. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +3 -3
  33. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  34. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  35. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +21 -19
  36. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +12 -12
  37. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
  38. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +47 -46
  39. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +3 -3
  40. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +27 -26
  41. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +8 -8
  42. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +11 -11
  43. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  45. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +14 -14
  46. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +25 -21
  47. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +13 -13
  48. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  49. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  50. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +3 -3
  51. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +8 -8
  52. package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
  53. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +3 -3
  54. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +3 -3
  55. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  56. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
  57. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -3
  58. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
  59. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -3
  60. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
  61. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
  62. package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
  63. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +11 -11
  64. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
  65. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
  66. package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
  67. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +4 -4
  68. package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
  69. package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
  70. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  71. package/dist/_internal/components/data-display/index.js +59 -59
  72. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +4 -4
  73. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  74. package/dist/_internal/components/feedback/index.js +9 -9
  75. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
  76. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +12 -10
  77. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +7 -5
  78. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +5 -3
  79. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +5 -3
  80. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +4 -2
  81. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
  82. package/dist/_internal/components/form/Button/Button.js +3 -3
  83. package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
  84. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  85. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  86. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +10 -8
  87. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +5 -3
  88. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +5 -3
  89. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +7 -5
  90. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +6 -4
  91. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +14 -12
  92. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +4 -2
  93. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +5 -3
  94. package/dist/_internal/components/form/CepField/CepField.js +10 -4
  95. package/dist/_internal/components/form/Checkbox/Checkbox.base.js +1 -0
  96. package/dist/_internal/components/form/Checkbox/Checkbox.base.js.map +1 -0
  97. package/dist/_internal/components/form/Checkbox/Checkbox.helpers.js +2 -1
  98. package/dist/_internal/components/form/Checkbox/Checkbox.js +9 -2
  99. package/dist/_internal/components/form/Checkbox/Checkbox.metrics.js +34 -0
  100. package/dist/_internal/components/form/Checkbox/Checkbox.metrics.js.map +1 -0
  101. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +6 -4
  102. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +4 -2
  103. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -5
  104. package/dist/_internal/components/form/Input/Input.base.js +1 -0
  105. package/dist/_internal/components/form/Input/Input.base.js.map +1 -0
  106. package/dist/_internal/components/form/Input/Input.helpers.js +23 -0
  107. package/dist/_internal/components/form/Input/Input.helpers.js.map +1 -0
  108. package/dist/_internal/components/form/Input/Input.js +9 -3
  109. package/dist/_internal/components/form/Input/Input.metrics.js +53 -0
  110. package/dist/_internal/components/form/Input/Input.metrics.js.map +1 -0
  111. package/dist/_internal/components/form/Input/Input.styles.js +10 -4
  112. package/dist/_internal/components/form/InputOTP/InputOTP.js +5 -3
  113. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +4 -2
  114. package/dist/_internal/components/form/Menubar/Menubar.js +4 -4
  115. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +2 -2
  116. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +4 -2
  117. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +6 -4
  118. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +4 -2
  119. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +5 -3
  120. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +4 -2
  121. package/dist/_internal/components/form/Select/Select.base.js +1 -0
  122. package/dist/_internal/components/form/Select/Select.base.js.map +1 -0
  123. package/dist/_internal/components/form/Select/Select.helpers.js +48 -0
  124. package/dist/_internal/components/form/Select/Select.helpers.js.map +1 -0
  125. package/dist/_internal/components/form/Select/Select.js +10 -2
  126. package/dist/_internal/components/form/Select/Select.metrics.js +38 -0
  127. package/dist/_internal/components/form/Select/Select.metrics.js.map +1 -0
  128. package/dist/_internal/components/form/Switch/Switch.base.js +1 -0
  129. package/dist/_internal/components/form/Switch/Switch.base.js.map +1 -0
  130. package/dist/_internal/components/form/Switch/Switch.helpers.js +59 -0
  131. package/dist/_internal/components/form/Switch/Switch.helpers.js.map +1 -0
  132. package/dist/_internal/components/form/Switch/Switch.js +9 -3
  133. package/dist/_internal/components/form/Switch/Switch.metrics.js +83 -0
  134. package/dist/_internal/components/form/Switch/Switch.metrics.js.map +1 -0
  135. package/dist/_internal/components/form/Switch/Switch.parts.js +7 -2
  136. package/dist/_internal/components/form/Switch/Switch.styles.js +6 -1
  137. package/dist/_internal/components/form/Textarea/Textarea.js +5 -3
  138. package/dist/_internal/components/form/Textarea/Textarea.styles.js +4 -2
  139. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -2
  140. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  141. package/dist/_internal/components/form/Toggle/Toggle.js +5 -3
  142. package/dist/_internal/components/form/Toggle/Toggle.styles.js +4 -2
  143. package/dist/_internal/components/form/index.js +53 -47
  144. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +15 -13
  145. package/dist/_internal/components/form/total-form/Fields/CepField.js +11 -5
  146. package/dist/_internal/components/form/total-form/Fields/SelectField.js +11 -3
  147. package/dist/_internal/components/form/total-form/Fields/TextField.js +10 -4
  148. package/dist/_internal/components/form/total-form/Fields/index.js +29 -21
  149. package/dist/_internal/components/form/total-form/SubmitButton.js +4 -4
  150. package/dist/_internal/components/index.js +140 -134
  151. package/dist/_internal/components/layout/Box/Box.js +2 -2
  152. package/dist/_internal/components/layout/Container/Container.js +2 -2
  153. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +3 -3
  154. package/dist/_internal/components/layout/Skeleton/Skeleton.js +2 -2
  155. package/dist/_internal/components/layout/Spacer/Spacer.js +2 -2
  156. package/dist/_internal/components/layout/Stack/Stack.js +3 -3
  157. package/dist/_internal/components/layout/index.js +13 -13
  158. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
  159. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
  160. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +3 -3
  161. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +5 -5
  162. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
  163. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +3 -3
  164. package/dist/_internal/components/navigation/index.js +13 -13
  165. package/dist/_internal/components/typography/Heading/Heading.js +2 -2
  166. package/dist/_internal/components/typography/Paragraph/Paragraph.js +2 -2
  167. package/dist/_internal/components/typography/Text/Text.js +2 -2
  168. package/dist/_internal/components/typography/index.js +4 -4
  169. package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +2 -2
  170. package/dist/_internal/components/utility/index.js +2 -2
  171. package/dist/_internal/icons/Icon.js +3 -3
  172. package/dist/_internal/icons/paths.generated.js +1 -1
  173. package/dist/_internal/platform/aria.js +17 -1
  174. package/dist/_internal/platform/aria.js.map +1 -1
  175. package/dist/_internal/platform/test-id.js +3 -1
  176. package/dist/_internal/social-login-button/social-login-button.js +6 -6
  177. package/dist/_internal/tokens/field-edge.core.js +11 -0
  178. package/dist/_internal/tokens/field-edge.core.js.map +1 -0
  179. package/dist/_internal/tokens/field-edge.js +5 -2
  180. package/dist/_internal/user-avatar/user-avatar.js +7 -7
  181. package/dist/charts.js +13 -13
  182. package/dist/{chunk-2PCOC3PT.js → chunk-26Z7QWID.js} +2 -2
  183. package/dist/chunk-2ECT4IY2.js +250 -0
  184. package/dist/chunk-2ECT4IY2.js.map +1 -0
  185. package/dist/{chunk-IJIT5HQP.js → chunk-2QFTAGDH.js} +3 -3
  186. package/dist/{chunk-ENNW5SKT.js → chunk-2QLVUVVR.js} +2 -2
  187. package/dist/{chunk-W3FAKT3D.js → chunk-2SWQ6HIK.js} +4 -4
  188. package/dist/{chunk-7P2HZLEG.js → chunk-3UOHKHOT.js} +3 -3
  189. package/dist/{chunk-URWGRPL7.js → chunk-3W7IEWEL.js} +2 -2
  190. package/dist/{chunk-Z7JNCB5Q.js → chunk-426FTCMF.js} +2 -2
  191. package/dist/{chunk-46UPILLK.js → chunk-4ETQRBZC.js} +4 -4
  192. package/dist/{chunk-NQC6H7GY.js → chunk-4HYXEMBP.js} +2 -2
  193. package/dist/{chunk-43NEBUV3.js → chunk-4K7FDVAB.js} +2 -2
  194. package/dist/{chunk-LMJBINWN.js → chunk-4MLDWACO.js} +13 -13
  195. package/dist/{chunk-GGE7Y53F.js → chunk-4TXIZ5WI.js} +2 -2
  196. package/dist/{chunk-J6UFAMIC.js → chunk-5RQ7N63M.js} +2 -2
  197. package/dist/chunk-5ZNU2U4D.js +41 -0
  198. package/dist/chunk-5ZNU2U4D.js.map +1 -0
  199. package/dist/{chunk-AVGTTWTE.js → chunk-65DLYC4S.js} +4 -4
  200. package/dist/{chunk-QLWBQQW7.js → chunk-6F5IKY32.js} +5 -1
  201. package/dist/chunk-6F5IKY32.js.map +1 -0
  202. package/dist/{chunk-B2A4DG77.js → chunk-6RGWDKUL.js} +6 -6
  203. package/dist/{chunk-DCEMUZJQ.js → chunk-6WIDZGXE.js} +2 -2
  204. package/dist/{chunk-R7MX5KPJ.js → chunk-6YLAVHV4.js} +4 -4
  205. package/dist/{chunk-E27Y7FF2.js → chunk-6Z4H2Y77.js} +4 -4
  206. package/dist/{chunk-PNYXXLPU.js → chunk-736HP6BL.js} +2 -2
  207. package/dist/{chunk-C52BELLW.js → chunk-77F36LQQ.js} +3 -3
  208. package/dist/chunk-7FDU3FIN.js +13 -0
  209. package/dist/chunk-7FDU3FIN.js.map +1 -0
  210. package/dist/{chunk-RXSGHPCR.js → chunk-7FOOLP5H.js} +4 -4
  211. package/dist/{chunk-74OZ5KVR.js → chunk-7KTU6YMQ.js} +6 -6
  212. package/dist/{chunk-X5D3PTWI.js → chunk-7MAOQIWA.js} +2 -2
  213. package/dist/{chunk-5ZF3VASA.js → chunk-7ZH7ZB33.js} +7 -7
  214. package/dist/{chunk-FX5DY6VR.js → chunk-AD776JPA.js} +7 -4
  215. package/dist/chunk-AD776JPA.js.map +1 -0
  216. package/dist/{chunk-PQECNGDE.js → chunk-AGYGNNOM.js} +2 -2
  217. package/dist/{chunk-PU3AAKRR.js → chunk-AJ6XEO4E.js} +2 -2
  218. package/dist/{chunk-WX7VWW3W.js → chunk-B3BK2SNS.js} +2 -2
  219. package/dist/{chunk-VJK5FBNK.js → chunk-B5PYBEXO.js} +2 -2
  220. package/dist/{chunk-47UD6DZ4.js → chunk-BDVNAU2C.js} +4 -4
  221. package/dist/{chunk-FGLV6BXQ.js → chunk-BEGWE5O4.js} +5 -5
  222. package/dist/{chunk-6IUTT6BK.js → chunk-BEH4DN63.js} +4 -4
  223. package/dist/{chunk-HKV4MQ2W.js → chunk-BLBOYCOV.js} +5 -5
  224. package/dist/{chunk-24BUCMQA.js → chunk-BNNSO4MC.js} +5 -5
  225. package/dist/{chunk-CZJLWCEG.js → chunk-BPYPUEM5.js} +2 -2
  226. package/dist/{chunk-NHSMLVNC.js → chunk-BQQONDW5.js} +7 -7
  227. package/dist/{chunk-DQHC5P64.js → chunk-BRSF5NRT.js} +4 -4
  228. package/dist/{chunk-M7OHXNLF.js → chunk-CXVMD6FE.js} +3 -3
  229. package/dist/{chunk-LYSSO6WC.js → chunk-CZPU5TW3.js} +4 -4
  230. package/dist/{chunk-DOADQW7I.js → chunk-D4T646G4.js} +2 -2
  231. package/dist/{chunk-2W4CIWTW.js → chunk-DBYFC6CF.js} +3 -3
  232. package/dist/{chunk-76GZ55IC.js → chunk-DF2FFYZ7.js} +7 -7
  233. package/dist/chunk-DFK6QCXX.js +150 -0
  234. package/dist/chunk-DFK6QCXX.js.map +1 -0
  235. package/dist/{chunk-BILE3A7F.js → chunk-DH75UNF3.js} +2 -2
  236. package/dist/{chunk-MLOWPVVW.js → chunk-EPEJMTCQ.js} +16 -13
  237. package/dist/chunk-EPEJMTCQ.js.map +1 -0
  238. package/dist/{chunk-6D5WEZ2L.js → chunk-FB36IHCE.js} +8 -8
  239. package/dist/{chunk-OI3HOI74.js → chunk-FGUESLDX.js} +2 -2
  240. package/dist/{chunk-PC5FFEIY.js → chunk-FINCVAAR.js} +4 -4
  241. package/dist/{chunk-YK2PETUP.js → chunk-FRQ4HNGF.js} +2 -2
  242. package/dist/{chunk-WO52KYSU.js → chunk-G2IPK2XE.js} +10 -10
  243. package/dist/{chunk-E4FGKZID.js → chunk-GBNOYRLP.js} +8 -8
  244. package/dist/{chunk-UNF65XZW.js → chunk-GBRKP5GZ.js} +2 -2
  245. package/dist/{chunk-VLHGBFR6.js → chunk-GCXYCDOA.js} +2 -2
  246. package/dist/{chunk-EX3PSZLV.js → chunk-GDEXYUPF.js} +3 -3
  247. package/dist/{chunk-4N4ENTF7.js → chunk-GO4MVQGC.js} +2 -2
  248. package/dist/{chunk-HDNK7BAX.js → chunk-GT7C6TSM.js} +3 -3
  249. package/dist/chunk-GY6KNVMI.js +39 -0
  250. package/dist/chunk-GY6KNVMI.js.map +1 -0
  251. package/dist/{chunk-HBAPVB7T.js → chunk-HKKSZ7HG.js} +2 -2
  252. package/dist/{chunk-3AOOI2NR.js → chunk-HR7YTBR7.js} +4 -4
  253. package/dist/{chunk-AEGX66N7.js → chunk-I3MDKPGG.js} +2 -2
  254. package/dist/{chunk-7BYFC2MR.js → chunk-I7HYGIEJ.js} +6 -6
  255. package/dist/{chunk-D7FJ2GAD.js → chunk-IFNK5TPI.js} +2 -2
  256. package/dist/{chunk-PODGTNXS.js → chunk-IH4RSRQA.js} +4 -4
  257. package/dist/{chunk-UF27D35R.js → chunk-IIROZKW5.js} +2 -2
  258. package/dist/{chunk-PUBPZOQJ.js → chunk-IPE5FFFD.js} +2 -2
  259. package/dist/{chunk-37YPZHAG.js → chunk-JDMYD6QC.js} +2 -2
  260. package/dist/{chunk-HSAH5QUQ.js → chunk-JIINGMEB.js} +6 -6
  261. package/dist/{chunk-NRUYYGDZ.js → chunk-JXAYT6LX.js} +2 -2
  262. package/dist/{chunk-VMNSGE2G.js → chunk-KEVPUBOE.js} +5 -1
  263. package/dist/chunk-KEVPUBOE.js.map +1 -0
  264. package/dist/{chunk-ZBNTFWTG.js → chunk-KIHQE5YA.js} +2 -2
  265. package/dist/{chunk-DVUPIVI2.js → chunk-KT6HWAEN.js} +4 -4
  266. package/dist/{chunk-MY5VNNSP.js → chunk-MCRIT46W.js} +4 -4
  267. package/dist/chunk-MLCFODJO.js +135 -0
  268. package/dist/chunk-MLCFODJO.js.map +1 -0
  269. package/dist/{chunk-Q5EQC7NL.js → chunk-N5IVVLTH.js} +8 -5
  270. package/dist/chunk-N5IVVLTH.js.map +1 -0
  271. package/dist/{chunk-6XPNJLXE.js → chunk-NARIG5FL.js} +2 -2
  272. package/dist/{chunk-MBYO2F4Y.js → chunk-NUE774AN.js} +6 -6
  273. package/dist/{chunk-ZEBJT5JZ.js → chunk-OCXCH2ZW.js} +12 -12
  274. package/dist/{chunk-7TZ6OC5T.js → chunk-OH3YGJT5.js} +2 -2
  275. package/dist/{chunk-SM3NRN7L.js → chunk-ON2CMKTI.js} +2 -2
  276. package/dist/{chunk-VCTKJHXD.js → chunk-OOGEYCJH.js} +2 -2
  277. package/dist/{chunk-J54WH74M.js → chunk-P6IPJYCS.js} +6 -6
  278. package/dist/{chunk-23FCBIUN.js → chunk-P7FQUGED.js} +8 -8
  279. package/dist/{chunk-THBT56JE.js → chunk-PANMJFDS.js} +2 -2
  280. package/dist/{chunk-LZRURORY.js → chunk-PF5HDFYY.js} +3 -3
  281. package/dist/{chunk-YVW7VPK4.js → chunk-PFLKPNBU.js} +2 -2
  282. package/dist/{chunk-7EESF76V.js → chunk-PWXL3QQ6.js} +2 -2
  283. package/dist/{chunk-7DNQHMDO.js → chunk-PXH24VIP.js} +4 -4
  284. package/dist/{chunk-HBZIN6IQ.js → chunk-PZEC5CQA.js} +2 -2
  285. package/dist/{chunk-LAHDFBDE.js → chunk-QFHH2NU5.js} +3 -3
  286. package/dist/{chunk-GBB6XQ56.js → chunk-QGBMCB76.js} +2 -2
  287. package/dist/{chunk-SOCKK67R.js → chunk-QRX5BYUQ.js} +7 -7
  288. package/dist/{chunk-QZWKC3AP.js → chunk-QS7ZGRNS.js} +2 -2
  289. package/dist/{chunk-IH4CX43Q.js → chunk-QZDBWXZG.js} +2 -2
  290. package/dist/{chunk-PHCSPHDH.js → chunk-R6RVBYTU.js} +3 -3
  291. package/dist/{chunk-KZSKI2R3.js → chunk-RPQ3W2C6.js} +2 -2
  292. package/dist/{chunk-HEG7JIBM.js → chunk-RPWEXIAW.js} +5 -5
  293. package/dist/{chunk-JB67KPGM.js → chunk-RRO2EOJB.js} +4 -4
  294. package/dist/{chunk-BLT5ZBVL.js → chunk-RRX6ZTNX.js} +2 -2
  295. package/dist/{chunk-7RZ4WOQW.js → chunk-RRZBATXK.js} +3 -3
  296. package/dist/{chunk-RMSH2I3O.js → chunk-S6YY2WWK.js} +40 -50
  297. package/dist/chunk-S6YY2WWK.js.map +1 -0
  298. package/dist/{chunk-7JWXLDRH.js → chunk-SAHQLXNN.js} +4 -4
  299. package/dist/{chunk-LUMF63BM.js → chunk-SFAP5EH5.js} +4 -4
  300. package/dist/{chunk-EGRFMPGD.js → chunk-SHDIZSN5.js} +6 -6
  301. package/dist/{chunk-GJQYM3PM.js → chunk-SHQWIDD5.js} +4 -4
  302. package/dist/{chunk-BJ3J6FTN.js → chunk-STH66VLA.js} +40 -23
  303. package/dist/chunk-STH66VLA.js.map +1 -0
  304. package/dist/{chunk-FCOEJCUP.js → chunk-TFO6GBW7.js} +2 -2
  305. package/dist/{chunk-2ZDTGI5V.js → chunk-THZ2NAA4.js} +7 -7
  306. package/dist/{chunk-OQXOYHIV.js → chunk-TLX66HCW.js} +45 -37
  307. package/dist/chunk-TLX66HCW.js.map +1 -0
  308. package/dist/{chunk-VJFH2AXT.js → chunk-TP4N3X2Q.js} +2 -2
  309. package/dist/{chunk-B7BZAIHL.js → chunk-TPIBJP4S.js} +2 -2
  310. package/dist/{chunk-Q4NOI2CR.js → chunk-TVO5STZB.js} +5 -5
  311. package/dist/{chunk-JB7JE4QZ.js → chunk-TZ4SFX3M.js} +3 -3
  312. package/dist/{chunk-JD364H3Y.js → chunk-TZ633UZA.js} +6 -5
  313. package/dist/chunk-TZ633UZA.js.map +1 -0
  314. package/dist/{chunk-HEK4LQT6.js → chunk-UB76PBDF.js} +2 -2
  315. package/dist/{chunk-NFAKRI4S.js → chunk-UEIVXFUC.js} +2 -2
  316. package/dist/{chunk-DX527XPL.js → chunk-UOPQOBQZ.js} +3 -3
  317. package/dist/{chunk-X24P3ZYW.js → chunk-V5P5Q6HM.js} +10 -10
  318. package/dist/{chunk-7DBFEZRC.js → chunk-VIK3HAUQ.js} +2 -2
  319. package/dist/{chunk-74EZ565M.js → chunk-VPHOSIPB.js} +5 -5
  320. package/dist/{chunk-SX3V2DLV.js → chunk-VWBWKLXX.js} +4 -4
  321. package/dist/{chunk-VEFDL77X.js → chunk-VWGR5XUP.js} +2 -2
  322. package/dist/{chunk-SEH7KOVG.js → chunk-VXTYVJDK.js} +2 -2
  323. package/dist/{chunk-QYNCPS5W.js → chunk-WBKWIFXA.js} +6 -6
  324. package/dist/{chunk-YFHIESMD.js → chunk-WPZT2JD4.js} +2 -2
  325. package/dist/{chunk-GSFNH4C5.js → chunk-WROCSDVL.js} +5 -5
  326. package/dist/{chunk-VSLUFBMT.js → chunk-WTIOCG4M.js} +41 -27
  327. package/dist/chunk-WTIOCG4M.js.map +1 -0
  328. package/dist/{chunk-QZBUGUOY.js → chunk-XEE7PLDR.js} +6 -6
  329. package/dist/{chunk-Z4GWXTZV.js → chunk-XFU2S6XT.js} +7 -7
  330. package/dist/{chunk-RQDN4BN5.js → chunk-XLJJ2ZAP.js} +16 -16
  331. package/dist/{chunk-ACDYA5WC.js → chunk-XZTOIEKI.js} +2 -2
  332. package/dist/{chunk-LKVIZNUM.js → chunk-Y46RBFBV.js} +8 -8
  333. package/dist/{chunk-WBVHRLIS.js → chunk-YCCKY5VW.js} +5 -5
  334. package/dist/{chunk-SKZHOWTS.js → chunk-YDI6IJ6F.js} +2 -2
  335. package/dist/{chunk-V3SBJ3PB.js → chunk-Z5ABJLTM.js} +2 -2
  336. package/dist/{chunk-KQ74QU55.js → chunk-Z6UEOSL7.js} +3 -3
  337. package/dist/{chunk-G5ZVD5IJ.js → chunk-ZDWU52DJ.js} +2 -2
  338. package/dist/{chunk-2EKALM6P.js → chunk-ZFPJBKVZ.js} +4 -4
  339. package/dist/{chunk-FP4R47TM.js → chunk-ZGHIHEND.js} +2 -2
  340. package/dist/{chunk-F2DOTCF3.js → chunk-ZKFYBC6G.js} +2 -2
  341. package/dist/{chunk-4MGFUPQT.js → chunk-ZOUWHGV3.js} +4 -4
  342. package/dist/{chunk-4WK2RTVY.js → chunk-ZXLIWOXC.js} +5 -5
  343. package/dist/{chunk-UMDXGIRZ.js → chunk-ZZOOSKSV.js} +2 -2
  344. package/dist/data-display/Alert.js +4 -4
  345. package/dist/data-display/AsyncStateContainer.js +7 -7
  346. package/dist/data-display/Avatar.js +2 -2
  347. package/dist/data-display/Badge.js +3 -3
  348. package/dist/data-display/CardKit.js +18 -18
  349. package/dist/data-display/Carousel.js +3 -3
  350. package/dist/data-display/Chart.js +13 -13
  351. package/dist/data-display/DataGrid.js +2 -2
  352. package/dist/data-display/DataViews.js +89 -84
  353. package/dist/data-display/DescriptionItem.js +3 -3
  354. package/dist/data-display/EmptyState.js +3 -3
  355. package/dist/data-display/ErrorState.js +2 -2
  356. package/dist/data-display/HoverCard.js +1 -1
  357. package/dist/data-display/LazyImage.js +3 -3
  358. package/dist/data-display/Lightbox.js +5 -5
  359. package/dist/data-display/LoadingState.js +3 -3
  360. package/dist/data-display/MapPreview.js +11 -11
  361. package/dist/data-display/SectionOnboarding.js +4 -4
  362. package/dist/data-display/Sheet.js +2 -2
  363. package/dist/data-display/StatCard.js +3 -3
  364. package/dist/data-display/Table.js +3 -3
  365. package/dist/feedback/ConfirmAction.js +7 -7
  366. package/dist/feedback/TutorialOverlay.js +2 -2
  367. package/dist/form/AddressAutocomplete.js +12 -10
  368. package/dist/form/Autocomplete.js +2 -2
  369. package/dist/form/Button.js +3 -3
  370. package/dist/form/Calendar.js +4 -4
  371. package/dist/form/CategorySelect.js +14 -12
  372. package/dist/form/CepField.js +10 -4
  373. package/dist/form/Checkbox.js +9 -2
  374. package/dist/form/CodeEditor.js +6 -4
  375. package/dist/form/CreatableSelect.js +4 -2
  376. package/dist/form/DateRangePicker.js +5 -5
  377. package/dist/form/Input.js +9 -3
  378. package/dist/form/InputOTP.js +5 -3
  379. package/dist/form/Menubar.js +4 -4
  380. package/dist/form/PhoneInput.js +4 -2
  381. package/dist/form/RadioGroup.js +6 -4
  382. package/dist/form/RichTextEditor.js +4 -2
  383. package/dist/form/Select.js +10 -2
  384. package/dist/form/Switch.js +9 -3
  385. package/dist/form/Textarea.js +5 -3
  386. package/dist/form/Toggle.js +5 -3
  387. package/dist/form/total-form.js +33 -28
  388. package/dist/icons.js +3 -3
  389. package/dist/layout/Box.js +2 -2
  390. package/dist/layout/Container.js +2 -2
  391. package/dist/layout/ContentToolbar.js +6 -6
  392. package/dist/layout/ScrollArea.js +3 -3
  393. package/dist/layout/Skeleton.js +2 -2
  394. package/dist/layout/Spacer.js +2 -2
  395. package/dist/layout/Stack.js +3 -3
  396. package/dist/native/chunks/{chunk-Q52IDAF2.js → chunk-D4EYAXNG.js} +6 -2
  397. package/dist/native/chunks/chunk-D4EYAXNG.js.map +1 -0
  398. package/dist/native/chunks/{chunk-EKKNUEA6.js → chunk-OGWPPQL4.js} +2 -2
  399. package/dist/native/chunks/chunk-OXHZDFJZ.js +15 -0
  400. package/dist/native/chunks/chunk-OXHZDFJZ.js.map +1 -0
  401. package/dist/native/chunks/{chunk-M4DTJDWU.js → chunk-QZAUOHDQ.js} +1 -1
  402. package/dist/native/chunks/chunk-QZAUOHDQ.js.map +1 -0
  403. package/dist/native/chunks/{chunk-UKCCYP52.js → chunk-RJVM5YDE.js} +2 -2
  404. package/dist/native/chunks/chunk-T6BJPP3E.js +26 -0
  405. package/dist/native/chunks/chunk-T6BJPP3E.js.map +1 -0
  406. package/dist/native/chunks/chunk-WKMDCNIN.js +351 -0
  407. package/dist/native/chunks/chunk-WKMDCNIN.js.map +1 -0
  408. package/dist/native/data-display/Alert.js +3 -3
  409. package/dist/native/data-display/Avatar.js +2 -2
  410. package/dist/native/data-display/Badge.js +3 -3
  411. package/dist/native/data-display/Chip.js +2 -2
  412. package/dist/native/data-display/EmptyState.js +4 -4
  413. package/dist/native/data-display/ErrorState.js +4 -4
  414. package/dist/native/data-display/LoadingState.js +1 -1
  415. package/dist/native/form/Button.js +2 -2
  416. package/dist/native/form/Checkbox.js +233 -0
  417. package/dist/native/form/Checkbox.js.map +1 -0
  418. package/dist/native/form/Input.js +233 -0
  419. package/dist/native/form/Input.js.map +1 -0
  420. package/dist/native/form/Select.js +348 -0
  421. package/dist/native/form/Select.js.map +1 -0
  422. package/dist/native/form/Switch.js +511 -0
  423. package/dist/native/form/Switch.js.map +1 -0
  424. package/dist/native/icons.js +2 -2
  425. package/dist/native/layout/Box.js +2 -2
  426. package/dist/native/layout/Container.js +1 -1
  427. package/dist/native/layout/Skeleton.js +1 -1
  428. package/dist/native/layout/Spacer.js +1 -1
  429. package/dist/native/layout/Stack.js +2 -2
  430. package/dist/native/typography/Heading.js +1 -1
  431. package/dist/native/typography/Paragraph.js +1 -1
  432. package/dist/native/typography/Text.js +1 -1
  433. package/dist/navigation/AppHeader.js +6 -6
  434. package/dist/navigation/CommandPalette.js +2 -2
  435. package/dist/navigation/NavigationMenu.js +5 -5
  436. package/dist/social-login-button.js +6 -6
  437. package/dist/types/components/form/Checkbox/Checkbox.base.d.ts +36 -0
  438. package/dist/types/components/form/Checkbox/Checkbox.base.d.ts.map +1 -0
  439. package/dist/types/components/form/Checkbox/Checkbox.d.ts.map +1 -1
  440. package/dist/types/components/form/Checkbox/Checkbox.helpers.d.ts +9 -3
  441. package/dist/types/components/form/Checkbox/Checkbox.helpers.d.ts.map +1 -1
  442. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts +92 -0
  443. package/dist/types/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -0
  444. package/dist/types/components/form/Checkbox/Checkbox.types.d.ts +8 -10
  445. package/dist/types/components/form/Checkbox/Checkbox.types.d.ts.map +1 -1
  446. package/dist/types/components/form/Checkbox/index.d.ts +1 -1
  447. package/dist/types/components/form/Checkbox/index.d.ts.map +1 -1
  448. package/dist/types/components/form/Input/Input.base.d.ts +62 -0
  449. package/dist/types/components/form/Input/Input.base.d.ts.map +1 -0
  450. package/dist/types/components/form/Input/Input.d.ts.map +1 -1
  451. package/dist/types/components/form/Input/Input.helpers.d.ts +11 -0
  452. package/dist/types/components/form/Input/Input.helpers.d.ts.map +1 -0
  453. package/dist/types/components/form/Input/Input.metrics.d.ts +186 -0
  454. package/dist/types/components/form/Input/Input.metrics.d.ts.map +1 -0
  455. package/dist/types/components/form/Input/Input.styles.d.ts +1 -35
  456. package/dist/types/components/form/Input/Input.styles.d.ts.map +1 -1
  457. package/dist/types/components/form/Input/Input.types.d.ts +12 -17
  458. package/dist/types/components/form/Input/Input.types.d.ts.map +1 -1
  459. package/dist/types/components/form/Input/index.d.ts +1 -1
  460. package/dist/types/components/form/Input/index.d.ts.map +1 -1
  461. package/dist/types/components/form/Select/Select.base.d.ts +75 -0
  462. package/dist/types/components/form/Select/Select.base.d.ts.map +1 -0
  463. package/dist/types/components/form/Select/Select.d.ts.map +1 -1
  464. package/dist/types/components/form/Select/Select.helpers.d.ts +36 -0
  465. package/dist/types/components/form/Select/Select.helpers.d.ts.map +1 -0
  466. package/dist/types/components/form/Select/Select.metrics.d.ts +72 -0
  467. package/dist/types/components/form/Select/Select.metrics.d.ts.map +1 -0
  468. package/dist/types/components/form/Select/Select.types.d.ts +12 -49
  469. package/dist/types/components/form/Select/Select.types.d.ts.map +1 -1
  470. package/dist/types/components/form/Select/index.d.ts +1 -1
  471. package/dist/types/components/form/Select/index.d.ts.map +1 -1
  472. package/dist/types/components/form/Switch/Switch.base.d.ts +111 -0
  473. package/dist/types/components/form/Switch/Switch.base.d.ts.map +1 -0
  474. package/dist/types/components/form/Switch/Switch.d.ts.map +1 -1
  475. package/dist/types/components/form/Switch/Switch.helpers.d.ts +17 -0
  476. package/dist/types/components/form/Switch/Switch.helpers.d.ts.map +1 -0
  477. package/dist/types/components/form/Switch/Switch.metrics.d.ts +194 -0
  478. package/dist/types/components/form/Switch/Switch.metrics.d.ts.map +1 -0
  479. package/dist/types/components/form/Switch/Switch.parts.d.ts.map +1 -1
  480. package/dist/types/components/form/Switch/Switch.styles.d.ts +5 -3
  481. package/dist/types/components/form/Switch/Switch.styles.d.ts.map +1 -1
  482. package/dist/types/components/form/Switch/Switch.types.d.ts +9 -91
  483. package/dist/types/components/form/Switch/Switch.types.d.ts.map +1 -1
  484. package/dist/types/components/form/Switch/index.d.ts +1 -1
  485. package/dist/types/components/form/Switch/index.d.ts.map +1 -1
  486. package/dist/types/icons/paths.generated.d.ts +4 -0
  487. package/dist/types/icons/paths.generated.d.ts.map +1 -1
  488. package/dist/types/platform/aria.d.ts +59 -1
  489. package/dist/types/platform/aria.d.ts.map +1 -1
  490. package/dist/types/platform/test-id.d.ts +10 -0
  491. package/dist/types/platform/test-id.d.ts.map +1 -1
  492. package/dist/types/tokens/field-edge.core.d.ts +27 -0
  493. package/dist/types/tokens/field-edge.core.d.ts.map +1 -0
  494. package/dist/types/tokens/field-edge.d.ts +8 -9
  495. package/dist/types/tokens/field-edge.d.ts.map +1 -1
  496. package/dist/types-native/components/form/Checkbox/Checkbox.base.d.ts +36 -0
  497. package/dist/types-native/components/form/Checkbox/Checkbox.base.d.ts.map +1 -0
  498. package/dist/types-native/components/form/Checkbox/Checkbox.helpers.d.ts +13 -0
  499. package/dist/types-native/components/form/Checkbox/Checkbox.helpers.d.ts.map +1 -0
  500. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts +92 -0
  501. package/dist/types-native/components/form/Checkbox/Checkbox.metrics.d.ts.map +1 -0
  502. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts +21 -0
  503. package/dist/types-native/components/form/Checkbox/Checkbox.native.d.ts.map +1 -0
  504. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts +27 -0
  505. package/dist/types-native/components/form/Checkbox/Checkbox.types.native.d.ts.map +1 -0
  506. package/dist/types-native/components/form/Checkbox/index.native.d.ts +3 -0
  507. package/dist/types-native/components/form/Checkbox/index.native.d.ts.map +1 -0
  508. package/dist/types-native/components/form/Input/Input.base.d.ts +62 -0
  509. package/dist/types-native/components/form/Input/Input.base.d.ts.map +1 -0
  510. package/dist/types-native/components/form/Input/Input.helpers.d.ts +11 -0
  511. package/dist/types-native/components/form/Input/Input.helpers.d.ts.map +1 -0
  512. package/dist/types-native/components/form/Input/Input.look.native.d.ts +61 -0
  513. package/dist/types-native/components/form/Input/Input.look.native.d.ts.map +1 -0
  514. package/dist/types-native/components/form/Input/Input.metrics.d.ts +186 -0
  515. package/dist/types-native/components/form/Input/Input.metrics.d.ts.map +1 -0
  516. package/dist/types-native/components/form/Input/Input.native.d.ts +22 -0
  517. package/dist/types-native/components/form/Input/Input.native.d.ts.map +1 -0
  518. package/dist/types-native/components/form/Input/Input.types.native.d.ts +20 -0
  519. package/dist/types-native/components/form/Input/Input.types.native.d.ts.map +1 -0
  520. package/dist/types-native/components/form/Input/index.native.d.ts +3 -0
  521. package/dist/types-native/components/form/Input/index.native.d.ts.map +1 -0
  522. package/dist/types-native/components/form/Select/Select.base.d.ts +75 -0
  523. package/dist/types-native/components/form/Select/Select.base.d.ts.map +1 -0
  524. package/dist/types-native/components/form/Select/Select.helpers.d.ts +36 -0
  525. package/dist/types-native/components/form/Select/Select.helpers.d.ts.map +1 -0
  526. package/dist/types-native/components/form/Select/Select.look.native.d.ts +26 -0
  527. package/dist/types-native/components/form/Select/Select.look.native.d.ts.map +1 -0
  528. package/dist/types-native/components/form/Select/Select.metrics.d.ts +72 -0
  529. package/dist/types-native/components/form/Select/Select.metrics.d.ts.map +1 -0
  530. package/dist/types-native/components/form/Select/Select.native.d.ts +21 -0
  531. package/dist/types-native/components/form/Select/Select.native.d.ts.map +1 -0
  532. package/dist/types-native/components/form/Select/Select.types.native.d.ts +29 -0
  533. package/dist/types-native/components/form/Select/Select.types.native.d.ts.map +1 -0
  534. package/dist/types-native/components/form/Select/index.native.d.ts +3 -0
  535. package/dist/types-native/components/form/Select/index.native.d.ts.map +1 -0
  536. package/dist/types-native/components/form/Switch/Switch.base.d.ts +111 -0
  537. package/dist/types-native/components/form/Switch/Switch.base.d.ts.map +1 -0
  538. package/dist/types-native/components/form/Switch/Switch.helpers.d.ts +17 -0
  539. package/dist/types-native/components/form/Switch/Switch.helpers.d.ts.map +1 -0
  540. package/dist/types-native/components/form/Switch/Switch.look.native.d.ts +43 -0
  541. package/dist/types-native/components/form/Switch/Switch.look.native.d.ts.map +1 -0
  542. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts +194 -0
  543. package/dist/types-native/components/form/Switch/Switch.metrics.d.ts.map +1 -0
  544. package/dist/types-native/components/form/Switch/Switch.native.d.ts +20 -0
  545. package/dist/types-native/components/form/Switch/Switch.native.d.ts.map +1 -0
  546. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts +27 -0
  547. package/dist/types-native/components/form/Switch/Switch.types.native.d.ts.map +1 -0
  548. package/dist/types-native/components/form/Switch/index.native.d.ts +3 -0
  549. package/dist/types-native/components/form/Switch/index.native.d.ts.map +1 -0
  550. package/dist/types-native/components/form/field-pulse.native.d.ts +18 -0
  551. package/dist/types-native/components/form/field-pulse.native.d.ts.map +1 -0
  552. package/dist/types-native/icons/paths.generated.d.ts +4 -0
  553. package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
  554. package/dist/types-native/platform/aria.d.ts +59 -1
  555. package/dist/types-native/platform/aria.d.ts.map +1 -1
  556. package/dist/types-native/platform/test-id.d.ts +10 -0
  557. package/dist/types-native/platform/test-id.d.ts.map +1 -1
  558. package/dist/types-native/tokens/field-edge.core.d.ts +27 -0
  559. package/dist/types-native/tokens/field-edge.core.d.ts.map +1 -0
  560. package/dist/types-native/utils/withDefaults.d.ts +13 -0
  561. package/dist/types-native/utils/withDefaults.d.ts.map +1 -0
  562. package/dist/typography/Heading.js +2 -2
  563. package/dist/typography/Paragraph.js +2 -2
  564. package/dist/typography/Text.js +2 -2
  565. package/dist/user-avatar.js +7 -7
  566. package/dist/utility/InfiniteScroll.js +2 -2
  567. package/package.json +17 -1
  568. package/src/components/form/Checkbox/Checkbox.base.ts +36 -0
  569. package/src/components/form/Checkbox/Checkbox.helpers.ts +13 -13
  570. package/src/components/form/Checkbox/Checkbox.metrics.ts +73 -0
  571. package/src/components/form/Checkbox/Checkbox.native.tsx +246 -0
  572. package/src/components/form/Checkbox/Checkbox.tsx +34 -21
  573. package/src/components/form/Checkbox/Checkbox.types.native.ts +29 -0
  574. package/src/components/form/Checkbox/Checkbox.types.ts +12 -11
  575. package/src/components/form/Checkbox/NATIVE-NOTES.md +11 -0
  576. package/src/components/form/Checkbox/index.native.ts +8 -0
  577. package/src/components/form/Checkbox/index.ts +1 -1
  578. package/src/components/form/Input/Input.base.ts +84 -0
  579. package/src/components/form/Input/Input.helpers.ts +43 -0
  580. package/src/components/form/Input/Input.look.native.ts +246 -0
  581. package/src/components/form/Input/Input.metrics.ts +229 -0
  582. package/src/components/form/Input/Input.native.tsx +240 -0
  583. package/src/components/form/Input/Input.styles.ts +45 -51
  584. package/src/components/form/Input/Input.tsx +46 -42
  585. package/src/components/form/Input/Input.types.native.ts +29 -0
  586. package/src/components/form/Input/Input.types.ts +15 -17
  587. package/src/components/form/Input/NATIVE-NOTES.md +14 -0
  588. package/src/components/form/Input/index.native.ts +2 -0
  589. package/src/components/form/Input/index.ts +1 -1
  590. package/src/components/form/Select/NATIVE-NOTES.md +12 -0
  591. package/src/components/form/Select/Select.base.ts +78 -0
  592. package/src/components/form/Select/Select.helpers.ts +82 -0
  593. package/src/components/form/Select/Select.look.native.ts +99 -0
  594. package/src/components/form/Select/Select.metrics.ts +90 -0
  595. package/src/components/form/Select/Select.native.tsx +264 -0
  596. package/src/components/form/Select/Select.tsx +37 -25
  597. package/src/components/form/Select/Select.types.native.ts +30 -0
  598. package/src/components/form/Select/Select.types.ts +14 -51
  599. package/src/components/form/Select/index.native.ts +9 -0
  600. package/src/components/form/Select/index.ts +7 -1
  601. package/src/components/form/Switch/NATIVE-NOTES.md +12 -0
  602. package/src/components/form/Switch/Switch.base.ts +136 -0
  603. package/src/components/form/Switch/Switch.helpers.ts +61 -0
  604. package/src/components/form/Switch/Switch.look.native.ts +187 -0
  605. package/src/components/form/Switch/Switch.metrics.ts +191 -0
  606. package/src/components/form/Switch/Switch.native.tsx +360 -0
  607. package/src/components/form/Switch/Switch.parts.tsx +4 -4
  608. package/src/components/form/Switch/Switch.styles.ts +109 -147
  609. package/src/components/form/Switch/Switch.tsx +4 -2
  610. package/src/components/form/Switch/Switch.types.native.ts +34 -0
  611. package/src/components/form/Switch/Switch.types.ts +16 -117
  612. package/src/components/form/Switch/index.native.ts +8 -0
  613. package/src/components/form/Switch/index.ts +6 -1
  614. package/src/components/form/field-pulse.native.tsx +78 -0
  615. package/src/icons/glyphs.json +4 -0
  616. package/src/icons/paths.generated.ts +4 -0
  617. package/src/platform/aria.ts +72 -1
  618. package/src/platform/test-id.ts +13 -0
  619. package/src/tokens/field-edge.core.ts +87 -0
  620. package/src/tokens/field-edge.ts +10 -66
  621. package/dist/chunk-BJ3J6FTN.js.map +0 -1
  622. package/dist/chunk-FX5DY6VR.js.map +0 -1
  623. package/dist/chunk-JD364H3Y.js.map +0 -1
  624. package/dist/chunk-MLOWPVVW.js.map +0 -1
  625. package/dist/chunk-OQXOYHIV.js.map +0 -1
  626. package/dist/chunk-Q5EQC7NL.js.map +0 -1
  627. package/dist/chunk-QLWBQQW7.js.map +0 -1
  628. package/dist/chunk-RMSH2I3O.js.map +0 -1
  629. package/dist/chunk-TBWEIQUR.js +0 -263
  630. package/dist/chunk-TBWEIQUR.js.map +0 -1
  631. package/dist/chunk-VMNSGE2G.js.map +0 -1
  632. package/dist/chunk-VSLUFBMT.js.map +0 -1
  633. package/dist/native/chunks/chunk-4NK5ZQZ3.js +0 -10
  634. package/dist/native/chunks/chunk-4NK5ZQZ3.js.map +0 -1
  635. package/dist/native/chunks/chunk-M4DTJDWU.js.map +0 -1
  636. package/dist/native/chunks/chunk-Q52IDAF2.js.map +0 -1
  637. /package/dist/{chunk-2PCOC3PT.js.map → chunk-26Z7QWID.js.map} +0 -0
  638. /package/dist/{chunk-IJIT5HQP.js.map → chunk-2QFTAGDH.js.map} +0 -0
  639. /package/dist/{chunk-ENNW5SKT.js.map → chunk-2QLVUVVR.js.map} +0 -0
  640. /package/dist/{chunk-W3FAKT3D.js.map → chunk-2SWQ6HIK.js.map} +0 -0
  641. /package/dist/{chunk-7P2HZLEG.js.map → chunk-3UOHKHOT.js.map} +0 -0
  642. /package/dist/{chunk-URWGRPL7.js.map → chunk-3W7IEWEL.js.map} +0 -0
  643. /package/dist/{chunk-Z7JNCB5Q.js.map → chunk-426FTCMF.js.map} +0 -0
  644. /package/dist/{chunk-46UPILLK.js.map → chunk-4ETQRBZC.js.map} +0 -0
  645. /package/dist/{chunk-NQC6H7GY.js.map → chunk-4HYXEMBP.js.map} +0 -0
  646. /package/dist/{chunk-43NEBUV3.js.map → chunk-4K7FDVAB.js.map} +0 -0
  647. /package/dist/{chunk-LMJBINWN.js.map → chunk-4MLDWACO.js.map} +0 -0
  648. /package/dist/{chunk-GGE7Y53F.js.map → chunk-4TXIZ5WI.js.map} +0 -0
  649. /package/dist/{chunk-J6UFAMIC.js.map → chunk-5RQ7N63M.js.map} +0 -0
  650. /package/dist/{chunk-AVGTTWTE.js.map → chunk-65DLYC4S.js.map} +0 -0
  651. /package/dist/{chunk-B2A4DG77.js.map → chunk-6RGWDKUL.js.map} +0 -0
  652. /package/dist/{chunk-DCEMUZJQ.js.map → chunk-6WIDZGXE.js.map} +0 -0
  653. /package/dist/{chunk-R7MX5KPJ.js.map → chunk-6YLAVHV4.js.map} +0 -0
  654. /package/dist/{chunk-E27Y7FF2.js.map → chunk-6Z4H2Y77.js.map} +0 -0
  655. /package/dist/{chunk-PNYXXLPU.js.map → chunk-736HP6BL.js.map} +0 -0
  656. /package/dist/{chunk-C52BELLW.js.map → chunk-77F36LQQ.js.map} +0 -0
  657. /package/dist/{chunk-RXSGHPCR.js.map → chunk-7FOOLP5H.js.map} +0 -0
  658. /package/dist/{chunk-74OZ5KVR.js.map → chunk-7KTU6YMQ.js.map} +0 -0
  659. /package/dist/{chunk-X5D3PTWI.js.map → chunk-7MAOQIWA.js.map} +0 -0
  660. /package/dist/{chunk-5ZF3VASA.js.map → chunk-7ZH7ZB33.js.map} +0 -0
  661. /package/dist/{chunk-PQECNGDE.js.map → chunk-AGYGNNOM.js.map} +0 -0
  662. /package/dist/{chunk-PU3AAKRR.js.map → chunk-AJ6XEO4E.js.map} +0 -0
  663. /package/dist/{chunk-WX7VWW3W.js.map → chunk-B3BK2SNS.js.map} +0 -0
  664. /package/dist/{chunk-VJK5FBNK.js.map → chunk-B5PYBEXO.js.map} +0 -0
  665. /package/dist/{chunk-47UD6DZ4.js.map → chunk-BDVNAU2C.js.map} +0 -0
  666. /package/dist/{chunk-FGLV6BXQ.js.map → chunk-BEGWE5O4.js.map} +0 -0
  667. /package/dist/{chunk-6IUTT6BK.js.map → chunk-BEH4DN63.js.map} +0 -0
  668. /package/dist/{chunk-HKV4MQ2W.js.map → chunk-BLBOYCOV.js.map} +0 -0
  669. /package/dist/{chunk-24BUCMQA.js.map → chunk-BNNSO4MC.js.map} +0 -0
  670. /package/dist/{chunk-CZJLWCEG.js.map → chunk-BPYPUEM5.js.map} +0 -0
  671. /package/dist/{chunk-NHSMLVNC.js.map → chunk-BQQONDW5.js.map} +0 -0
  672. /package/dist/{chunk-DQHC5P64.js.map → chunk-BRSF5NRT.js.map} +0 -0
  673. /package/dist/{chunk-M7OHXNLF.js.map → chunk-CXVMD6FE.js.map} +0 -0
  674. /package/dist/{chunk-LYSSO6WC.js.map → chunk-CZPU5TW3.js.map} +0 -0
  675. /package/dist/{chunk-DOADQW7I.js.map → chunk-D4T646G4.js.map} +0 -0
  676. /package/dist/{chunk-2W4CIWTW.js.map → chunk-DBYFC6CF.js.map} +0 -0
  677. /package/dist/{chunk-76GZ55IC.js.map → chunk-DF2FFYZ7.js.map} +0 -0
  678. /package/dist/{chunk-BILE3A7F.js.map → chunk-DH75UNF3.js.map} +0 -0
  679. /package/dist/{chunk-6D5WEZ2L.js.map → chunk-FB36IHCE.js.map} +0 -0
  680. /package/dist/{chunk-OI3HOI74.js.map → chunk-FGUESLDX.js.map} +0 -0
  681. /package/dist/{chunk-PC5FFEIY.js.map → chunk-FINCVAAR.js.map} +0 -0
  682. /package/dist/{chunk-YK2PETUP.js.map → chunk-FRQ4HNGF.js.map} +0 -0
  683. /package/dist/{chunk-WO52KYSU.js.map → chunk-G2IPK2XE.js.map} +0 -0
  684. /package/dist/{chunk-E4FGKZID.js.map → chunk-GBNOYRLP.js.map} +0 -0
  685. /package/dist/{chunk-UNF65XZW.js.map → chunk-GBRKP5GZ.js.map} +0 -0
  686. /package/dist/{chunk-VLHGBFR6.js.map → chunk-GCXYCDOA.js.map} +0 -0
  687. /package/dist/{chunk-EX3PSZLV.js.map → chunk-GDEXYUPF.js.map} +0 -0
  688. /package/dist/{chunk-4N4ENTF7.js.map → chunk-GO4MVQGC.js.map} +0 -0
  689. /package/dist/{chunk-HDNK7BAX.js.map → chunk-GT7C6TSM.js.map} +0 -0
  690. /package/dist/{chunk-HBAPVB7T.js.map → chunk-HKKSZ7HG.js.map} +0 -0
  691. /package/dist/{chunk-3AOOI2NR.js.map → chunk-HR7YTBR7.js.map} +0 -0
  692. /package/dist/{chunk-AEGX66N7.js.map → chunk-I3MDKPGG.js.map} +0 -0
  693. /package/dist/{chunk-7BYFC2MR.js.map → chunk-I7HYGIEJ.js.map} +0 -0
  694. /package/dist/{chunk-D7FJ2GAD.js.map → chunk-IFNK5TPI.js.map} +0 -0
  695. /package/dist/{chunk-PODGTNXS.js.map → chunk-IH4RSRQA.js.map} +0 -0
  696. /package/dist/{chunk-UF27D35R.js.map → chunk-IIROZKW5.js.map} +0 -0
  697. /package/dist/{chunk-PUBPZOQJ.js.map → chunk-IPE5FFFD.js.map} +0 -0
  698. /package/dist/{chunk-37YPZHAG.js.map → chunk-JDMYD6QC.js.map} +0 -0
  699. /package/dist/{chunk-HSAH5QUQ.js.map → chunk-JIINGMEB.js.map} +0 -0
  700. /package/dist/{chunk-NRUYYGDZ.js.map → chunk-JXAYT6LX.js.map} +0 -0
  701. /package/dist/{chunk-ZBNTFWTG.js.map → chunk-KIHQE5YA.js.map} +0 -0
  702. /package/dist/{chunk-DVUPIVI2.js.map → chunk-KT6HWAEN.js.map} +0 -0
  703. /package/dist/{chunk-MY5VNNSP.js.map → chunk-MCRIT46W.js.map} +0 -0
  704. /package/dist/{chunk-6XPNJLXE.js.map → chunk-NARIG5FL.js.map} +0 -0
  705. /package/dist/{chunk-MBYO2F4Y.js.map → chunk-NUE774AN.js.map} +0 -0
  706. /package/dist/{chunk-ZEBJT5JZ.js.map → chunk-OCXCH2ZW.js.map} +0 -0
  707. /package/dist/{chunk-7TZ6OC5T.js.map → chunk-OH3YGJT5.js.map} +0 -0
  708. /package/dist/{chunk-SM3NRN7L.js.map → chunk-ON2CMKTI.js.map} +0 -0
  709. /package/dist/{chunk-VCTKJHXD.js.map → chunk-OOGEYCJH.js.map} +0 -0
  710. /package/dist/{chunk-J54WH74M.js.map → chunk-P6IPJYCS.js.map} +0 -0
  711. /package/dist/{chunk-23FCBIUN.js.map → chunk-P7FQUGED.js.map} +0 -0
  712. /package/dist/{chunk-THBT56JE.js.map → chunk-PANMJFDS.js.map} +0 -0
  713. /package/dist/{chunk-LZRURORY.js.map → chunk-PF5HDFYY.js.map} +0 -0
  714. /package/dist/{chunk-YVW7VPK4.js.map → chunk-PFLKPNBU.js.map} +0 -0
  715. /package/dist/{chunk-7EESF76V.js.map → chunk-PWXL3QQ6.js.map} +0 -0
  716. /package/dist/{chunk-7DNQHMDO.js.map → chunk-PXH24VIP.js.map} +0 -0
  717. /package/dist/{chunk-HBZIN6IQ.js.map → chunk-PZEC5CQA.js.map} +0 -0
  718. /package/dist/{chunk-LAHDFBDE.js.map → chunk-QFHH2NU5.js.map} +0 -0
  719. /package/dist/{chunk-GBB6XQ56.js.map → chunk-QGBMCB76.js.map} +0 -0
  720. /package/dist/{chunk-SOCKK67R.js.map → chunk-QRX5BYUQ.js.map} +0 -0
  721. /package/dist/{chunk-QZWKC3AP.js.map → chunk-QS7ZGRNS.js.map} +0 -0
  722. /package/dist/{chunk-IH4CX43Q.js.map → chunk-QZDBWXZG.js.map} +0 -0
  723. /package/dist/{chunk-PHCSPHDH.js.map → chunk-R6RVBYTU.js.map} +0 -0
  724. /package/dist/{chunk-KZSKI2R3.js.map → chunk-RPQ3W2C6.js.map} +0 -0
  725. /package/dist/{chunk-HEG7JIBM.js.map → chunk-RPWEXIAW.js.map} +0 -0
  726. /package/dist/{chunk-JB67KPGM.js.map → chunk-RRO2EOJB.js.map} +0 -0
  727. /package/dist/{chunk-BLT5ZBVL.js.map → chunk-RRX6ZTNX.js.map} +0 -0
  728. /package/dist/{chunk-7RZ4WOQW.js.map → chunk-RRZBATXK.js.map} +0 -0
  729. /package/dist/{chunk-7JWXLDRH.js.map → chunk-SAHQLXNN.js.map} +0 -0
  730. /package/dist/{chunk-LUMF63BM.js.map → chunk-SFAP5EH5.js.map} +0 -0
  731. /package/dist/{chunk-EGRFMPGD.js.map → chunk-SHDIZSN5.js.map} +0 -0
  732. /package/dist/{chunk-GJQYM3PM.js.map → chunk-SHQWIDD5.js.map} +0 -0
  733. /package/dist/{chunk-FCOEJCUP.js.map → chunk-TFO6GBW7.js.map} +0 -0
  734. /package/dist/{chunk-2ZDTGI5V.js.map → chunk-THZ2NAA4.js.map} +0 -0
  735. /package/dist/{chunk-VJFH2AXT.js.map → chunk-TP4N3X2Q.js.map} +0 -0
  736. /package/dist/{chunk-B7BZAIHL.js.map → chunk-TPIBJP4S.js.map} +0 -0
  737. /package/dist/{chunk-Q4NOI2CR.js.map → chunk-TVO5STZB.js.map} +0 -0
  738. /package/dist/{chunk-JB7JE4QZ.js.map → chunk-TZ4SFX3M.js.map} +0 -0
  739. /package/dist/{chunk-HEK4LQT6.js.map → chunk-UB76PBDF.js.map} +0 -0
  740. /package/dist/{chunk-NFAKRI4S.js.map → chunk-UEIVXFUC.js.map} +0 -0
  741. /package/dist/{chunk-DX527XPL.js.map → chunk-UOPQOBQZ.js.map} +0 -0
  742. /package/dist/{chunk-X24P3ZYW.js.map → chunk-V5P5Q6HM.js.map} +0 -0
  743. /package/dist/{chunk-7DBFEZRC.js.map → chunk-VIK3HAUQ.js.map} +0 -0
  744. /package/dist/{chunk-74EZ565M.js.map → chunk-VPHOSIPB.js.map} +0 -0
  745. /package/dist/{chunk-SX3V2DLV.js.map → chunk-VWBWKLXX.js.map} +0 -0
  746. /package/dist/{chunk-VEFDL77X.js.map → chunk-VWGR5XUP.js.map} +0 -0
  747. /package/dist/{chunk-SEH7KOVG.js.map → chunk-VXTYVJDK.js.map} +0 -0
  748. /package/dist/{chunk-QYNCPS5W.js.map → chunk-WBKWIFXA.js.map} +0 -0
  749. /package/dist/{chunk-YFHIESMD.js.map → chunk-WPZT2JD4.js.map} +0 -0
  750. /package/dist/{chunk-GSFNH4C5.js.map → chunk-WROCSDVL.js.map} +0 -0
  751. /package/dist/{chunk-QZBUGUOY.js.map → chunk-XEE7PLDR.js.map} +0 -0
  752. /package/dist/{chunk-Z4GWXTZV.js.map → chunk-XFU2S6XT.js.map} +0 -0
  753. /package/dist/{chunk-RQDN4BN5.js.map → chunk-XLJJ2ZAP.js.map} +0 -0
  754. /package/dist/{chunk-ACDYA5WC.js.map → chunk-XZTOIEKI.js.map} +0 -0
  755. /package/dist/{chunk-LKVIZNUM.js.map → chunk-Y46RBFBV.js.map} +0 -0
  756. /package/dist/{chunk-WBVHRLIS.js.map → chunk-YCCKY5VW.js.map} +0 -0
  757. /package/dist/{chunk-SKZHOWTS.js.map → chunk-YDI6IJ6F.js.map} +0 -0
  758. /package/dist/{chunk-V3SBJ3PB.js.map → chunk-Z5ABJLTM.js.map} +0 -0
  759. /package/dist/{chunk-KQ74QU55.js.map → chunk-Z6UEOSL7.js.map} +0 -0
  760. /package/dist/{chunk-G5ZVD5IJ.js.map → chunk-ZDWU52DJ.js.map} +0 -0
  761. /package/dist/{chunk-2EKALM6P.js.map → chunk-ZFPJBKVZ.js.map} +0 -0
  762. /package/dist/{chunk-FP4R47TM.js.map → chunk-ZGHIHEND.js.map} +0 -0
  763. /package/dist/{chunk-F2DOTCF3.js.map → chunk-ZKFYBC6G.js.map} +0 -0
  764. /package/dist/{chunk-4MGFUPQT.js.map → chunk-ZOUWHGV3.js.map} +0 -0
  765. /package/dist/{chunk-4WK2RTVY.js.map → chunk-ZXLIWOXC.js.map} +0 -0
  766. /package/dist/{chunk-UMDXGIRZ.js.map → chunk-ZZOOSKSV.js.map} +0 -0
  767. /package/dist/native/chunks/{chunk-EKKNUEA6.js.map → chunk-OGWPPQL4.js.map} +0 -0
  768. /package/dist/native/chunks/{chunk-UKCCYP52.js.map → chunk-RJVM5YDE.js.map} +0 -0
@@ -0,0 +1,233 @@
1
+ import {
2
+ ADORNMENT_GAP,
3
+ FieldPulse,
4
+ INPUT_GLOW,
5
+ INPUT_LOADING,
6
+ INPUT_PULSE,
7
+ fieldLook,
8
+ helperStyle,
9
+ labelStyle
10
+ } from "../chunks/chunk-WKMDCNIN.js";
11
+ import {
12
+ withDefaults
13
+ } from "../chunks/chunk-OXHZDFJZ.js";
14
+ import {
15
+ webAria,
16
+ webClick,
17
+ webDisabled
18
+ } from "../chunks/chunk-T6BJPP3E.js";
19
+ import {
20
+ childTestId,
21
+ resolveTestId,
22
+ withoutTestIdProps
23
+ } from "../chunks/chunk-QZAUOHDQ.js";
24
+ import "../chunks/chunk-5WLOVHKK.js";
25
+ import {
26
+ useUiTheme
27
+ } from "../chunks/chunk-YTHR4Y5P.js";
28
+ import "../chunks/chunk-P3PL4WBO.js";
29
+
30
+ // src/components/form/Input/Input.native.tsx
31
+ import * as React from "react";
32
+ import {
33
+ ActivityIndicator,
34
+ Platform,
35
+ StyleSheet,
36
+ Text as RNText,
37
+ TextInput as RNTextInput,
38
+ View
39
+ } from "react-native";
40
+
41
+ // src/components/form/Input/Input.helpers.ts
42
+ var INPUT_DEFAULTS = {
43
+ variant: "outlined",
44
+ size: "md",
45
+ error: false,
46
+ fullWidth: true,
47
+ floating: false,
48
+ glow: false,
49
+ pulse: false,
50
+ loading: false,
51
+ disabled: false,
52
+ required: false
53
+ };
54
+ var resolveInputProps = (props) => withDefaults(props, INPUT_DEFAULTS);
55
+
56
+ // src/components/form/Input/Input.native.tsx
57
+ import { jsx, jsxs } from "react/jsx-runtime";
58
+ var INPUT_MODE_FOR = {
59
+ text: "text",
60
+ search: "search",
61
+ email: "email",
62
+ tel: "tel",
63
+ url: "url",
64
+ number: "numeric"
65
+ };
66
+ function typeProps(type) {
67
+ if (type === "password") return { secureTextEntry: true };
68
+ const mode = type === void 0 ? void 0 : INPUT_MODE_FOR[type];
69
+ return mode === void 0 ? {} : { inputMode: mode };
70
+ }
71
+ function glowStyle(color, focused) {
72
+ const glow = focused ? INPUT_GLOW.focused : INPUT_GLOW.rest;
73
+ return Platform.select({
74
+ android: { elevation: glow.blur / 2 },
75
+ default: {
76
+ shadowColor: color,
77
+ shadowOpacity: glow.alpha,
78
+ shadowRadius: glow.blur,
79
+ shadowOffset: { width: 0, height: 0 }
80
+ }
81
+ });
82
+ }
83
+ function Slot({
84
+ children,
85
+ side
86
+ }) {
87
+ if (children == null) return null;
88
+ return /* @__PURE__ */ jsx(View, { style: [styles.slot, side === "start" ? { marginRight: ADORNMENT_GAP } : { marginLeft: ADORNMENT_GAP }], children });
89
+ }
90
+ function Line({
91
+ text,
92
+ style
93
+ }) {
94
+ if (text === void 0) return null;
95
+ return /* @__PURE__ */ jsx(RNText, { style, children: text });
96
+ }
97
+ function Spinner({ color, testID }) {
98
+ return /* @__PURE__ */ jsx(
99
+ ActivityIndicator,
100
+ {
101
+ testID,
102
+ size: Platform.OS === "ios" ? "small" : INPUT_LOADING.spinnerSize,
103
+ color,
104
+ accessibilityLabel: "loading"
105
+ }
106
+ );
107
+ }
108
+ function labelText(label, required) {
109
+ if (label === void 0) return void 0;
110
+ return required ? `${label} *` : label;
111
+ }
112
+ function useFocusState(onFocus, onBlur) {
113
+ const [focused, setFocused] = React.useState(false);
114
+ return {
115
+ focused,
116
+ handleFocus: (event) => {
117
+ setFocused(true);
118
+ onFocus?.(event);
119
+ },
120
+ handleBlur: (event) => {
121
+ setFocused(false);
122
+ onBlur?.(event);
123
+ }
124
+ };
125
+ }
126
+ var Input = React.forwardRef((rawProps, ref) => {
127
+ const {
128
+ variant,
129
+ size,
130
+ type,
131
+ label,
132
+ error,
133
+ helperText,
134
+ startAdornment,
135
+ endAdornment,
136
+ fullWidth,
137
+ floating: _floating,
138
+ glow,
139
+ pulse,
140
+ loading,
141
+ disabled,
142
+ required,
143
+ style,
144
+ inputStyle,
145
+ onClick,
146
+ onPress,
147
+ onFocus,
148
+ onBlur,
149
+ ...others
150
+ } = resolveInputProps(rawProps);
151
+ const theme = useUiTheme();
152
+ const { focused, handleFocus, handleBlur } = useFocusState(onFocus, onBlur);
153
+ const inactive = disabled || loading;
154
+ const state = { focused: focused && !inactive, error, disabled: inactive };
155
+ const look = fieldLook(theme, variant, size, state);
156
+ const idFor = (suffix) => childTestId(others, suffix, "input");
157
+ const handlePress = (event) => {
158
+ onClick?.(event);
159
+ onPress?.(event);
160
+ };
161
+ return /* @__PURE__ */ jsxs(
162
+ View,
163
+ {
164
+ style: [
165
+ styles.root,
166
+ fullWidth ? styles.fullWidth : styles.auto,
167
+ loading ? styles.loading : null,
168
+ style
169
+ ],
170
+ children: [
171
+ pulse ? /* @__PURE__ */ jsx(
172
+ FieldPulse,
173
+ {
174
+ color: theme.palette.primary.main,
175
+ radius: theme.spacing(INPUT_PULSE.radiusUnits),
176
+ testID: idFor("pulse")
177
+ }
178
+ ) : null,
179
+ /* @__PURE__ */ jsx(Line, { text: labelText(label, required), style: labelStyle(theme, variant, size, state) }),
180
+ /* @__PURE__ */ jsxs(View, { style: [look.box, glow ? glowStyle(theme.palette.primary.main, state.focused) : null], children: [
181
+ /* @__PURE__ */ jsx(Slot, { side: "start", children: startAdornment }),
182
+ /* @__PURE__ */ jsx(
183
+ RNTextInput,
184
+ {
185
+ ref,
186
+ testID: resolveTestId(others, "input"),
187
+ style: [look.value, inputStyle],
188
+ placeholderTextColor: look.placeholder,
189
+ editable: !inactive,
190
+ blurOnSubmit: false,
191
+ "aria-label": label,
192
+ "aria-disabled": inactive,
193
+ onFocus: handleFocus,
194
+ onBlur: handleBlur,
195
+ onPressIn: handlePress,
196
+ ...webClick(handlePress),
197
+ ...webDisabled(inactive),
198
+ ...webAria({ "aria-invalid": error, "aria-required": required }),
199
+ ...typeProps(type),
200
+ ...withoutTestIdProps(others)
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsx(Slot, { side: "end", children: loading ? /* @__PURE__ */ jsx(Spinner, { color: theme.palette.primary.main, testID: idFor("loading") }) : endAdornment })
204
+ ] }),
205
+ /* @__PURE__ */ jsx(Line, { text: helperText, style: helperStyle(theme, variant, size, state) })
206
+ ]
207
+ }
208
+ );
209
+ });
210
+ Input.displayName = "Input";
211
+ var styles = StyleSheet.create({
212
+ root: {
213
+ position: "relative"
214
+ },
215
+ fullWidth: {
216
+ alignSelf: "stretch",
217
+ width: "100%"
218
+ },
219
+ auto: {
220
+ alignSelf: "flex-start"
221
+ },
222
+ loading: {
223
+ opacity: INPUT_LOADING.opacity
224
+ },
225
+ slot: {
226
+ flexDirection: "row",
227
+ alignItems: "center"
228
+ }
229
+ });
230
+ export {
231
+ Input
232
+ };
233
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/form/Input/Input.native.tsx","../../../src/components/form/Input/Input.helpers.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n ActivityIndicator,\n Platform,\n StyleSheet,\n Text as RNText,\n TextInput as RNTextInput,\n View,\n type GestureResponderEvent,\n type InputModeOptions,\n type StyleProp,\n type TextInputProps as RNTextInputProps,\n type TextStyle,\n type ViewStyle,\n} from 'react-native';\n\nimport { resolveInputProps } from './Input.helpers';\nimport { FieldPulse } from '../field-pulse.native';\nimport { fieldLook, helperStyle, labelStyle, type FieldState } from './Input.look.native';\nimport { ADORNMENT_GAP, INPUT_GLOW, INPUT_LOADING, INPUT_PULSE } from './Input.metrics';\nimport type { InputProps } from './Input.types.native';\nimport { webAria, webClick, webDisabled } from '../../../platform/aria';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\n\n/**\n * The keyboard an HTML input `type` asks for.\n *\n * `password` is the only one that is not a keyboard at all — it is React\n * Native's `secureTextEntry`, which react-native-web turns back into\n * `type=\"password\"`. Everything the map does not name (`date`, `file`, `color`)\n * has no React Native equivalent and falls through to a plain text field.\n */\nconst INPUT_MODE_FOR: Record<string, InputModeOptions> = {\n text: 'text',\n search: 'search',\n email: 'email',\n tel: 'tel',\n url: 'url',\n number: 'numeric',\n};\n\nexport function typeProps(type: string | undefined): {\n inputMode?: InputModeOptions;\n secureTextEntry?: boolean;\n} {\n if (type === 'password') return { secureTextEntry: true };\n const mode = type === undefined ? undefined : INPUT_MODE_FOR[type];\n return mode === undefined ? {} : { inputMode: mode };\n}\n\n/** MUI's `0 0 15px` halo, 20px and stronger once the field is focused. */\nfunction glowStyle(color: string, focused: boolean): ViewStyle {\n const glow = focused ? INPUT_GLOW.focused : INPUT_GLOW.rest;\n return Platform.select<ViewStyle>({\n android: { elevation: glow.blur / 2 },\n default: {\n shadowColor: color,\n shadowOpacity: glow.alpha,\n shadowRadius: glow.blur,\n shadowOffset: { width: 0, height: 0 },\n },\n });\n}\n\n/**\n * An adornment in its own slot, 8px from the value as `InputAdornment` puts it.\n *\n * No `testID`: the web field names ONE element, the `<input>` itself, so the\n * native one names the same element and nothing else. A shared story that\n * counts fields by a test-id prefix (`getAllByTestId(/perf-input-/)`) counts\n * the same number on both renderers only if this holds — the two decorations\n * below keep an id because they exist only while asked for.\n */\nfunction Slot({\n children,\n side,\n}: {\n children: React.ReactNode;\n side: 'start' | 'end';\n}): React.JSX.Element | null {\n if (children == null) return null;\n return (\n <View style={[styles.slot, side === 'start' ? { marginRight: ADORNMENT_GAP } : { marginLeft: ADORNMENT_GAP }]}>\n {children}\n </View>\n );\n}\n\n/** One line of text under or over the field, or nothing at all. */\nfunction Line({\n text,\n style,\n}: {\n text: string | undefined;\n style: StyleProp<TextStyle>;\n}): React.JSX.Element | null {\n if (text === undefined) return null;\n return <RNText style={style}>{text}</RNText>;\n}\n\n/** MUI's 20px `CircularProgress` in the end slot; the platform's own arc on a device. */\nfunction Spinner({ color, testID }: { color: string; testID: string }): React.JSX.Element {\n return (\n <ActivityIndicator\n testID={testID}\n size={Platform.OS === 'ios' ? 'small' : INPUT_LOADING.spinnerSize}\n color={color}\n accessibilityLabel=\"loading\"\n />\n );\n}\n\n/** MUI's `FormLabel` appends an asterisk to a required field's label. */\nfunction labelText(label: string | undefined, required: boolean): string | undefined {\n if (label === undefined) return undefined;\n return required ? `${label} *` : label;\n}\n\n/** The focus flag the border and the label are drawn from, and the handlers that keep it. */\nfunction useFocusState(\n onFocus: RNTextInputProps['onFocus'],\n onBlur: RNTextInputProps['onBlur'],\n): {\n focused: boolean;\n handleFocus: NonNullable<RNTextInputProps['onFocus']>;\n handleBlur: NonNullable<RNTextInputProps['onBlur']>;\n} {\n const [focused, setFocused] = React.useState(false);\n return {\n focused,\n handleFocus: (event) => {\n setFocused(true);\n onFocus?.(event);\n },\n handleBlur: (event) => {\n setFocused(false);\n onBlur?.(event);\n },\n };\n}\n\n/**\n * The native `Input`.\n *\n * The label sits ABOVE the field rather than floating into a notch in its\n * border, because React Native cannot cut a notch in a border — see\n * `NATIVE-NOTES.md`. Everything else is the web field's arithmetic:\n * `Input.look.native.ts` decides the paint, `Input.metrics.ts` holds the\n * numbers, and both renderers read the same table.\n */\nexport const Input = React.forwardRef<RNTextInput, InputProps>((rawProps, ref) => {\n const {\n variant, size, type, label, error, helperText, startAdornment, endAdornment,\n fullWidth, floating: _floating, glow, pulse, loading, disabled, required,\n style, inputStyle, onClick, onPress, onFocus, onBlur, ...others\n } = resolveInputProps(rawProps);\n\n const theme = useUiTheme();\n const { focused, handleFocus, handleBlur } = useFocusState(onFocus, onBlur);\n const inactive = disabled || loading;\n const state: FieldState = { focused: focused && !inactive, error, disabled: inactive };\n const look = fieldLook(theme, variant, size, state);\n\n const idFor = (suffix: string): string => childTestId(others, suffix, 'input');\n const handlePress = (event: GestureResponderEvent): void => {\n onClick?.(event);\n onPress?.(event);\n };\n\n return (\n <View\n style={[\n styles.root,\n fullWidth ? styles.fullWidth : styles.auto,\n loading ? styles.loading : null,\n style,\n ]}\n >\n {pulse ? (\n <FieldPulse\n color={theme.palette.primary.main}\n radius={theme.spacing(INPUT_PULSE.radiusUnits)}\n testID={idFor('pulse')}\n />\n ) : null}\n <Line text={labelText(label, required)} style={labelStyle(theme, variant, size, state)} />\n <View style={[look.box, glow ? glowStyle(theme.palette.primary.main, state.focused) : null]}>\n <Slot side=\"start\">{startAdornment}</Slot>\n <RNTextInput\n ref={ref}\n testID={resolveTestId(others, 'input')}\n style={[look.value, inputStyle]}\n placeholderTextColor={look.placeholder}\n editable={!inactive}\n // The web input keeps focus on Enter (a form submits, the caret stays);\n // React Native dismisses the keyboard for a single-line field. A\n // caller wanting the platform behaviour passes its own.\n blurOnSubmit={false}\n aria-label={label}\n aria-disabled={inactive}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onPressIn={handlePress}\n {...webClick(handlePress)}\n {...webDisabled(inactive)}\n {...webAria({ 'aria-invalid': error, 'aria-required': required })}\n {...typeProps(type)}\n {...withoutTestIdProps(others)}\n />\n <Slot side=\"end\">\n {loading ? <Spinner color={theme.palette.primary.main} testID={idFor('loading')} /> : endAdornment}\n </Slot>\n </View>\n <Line text={helperText} style={helperStyle(theme, variant, size, state)} />\n </View>\n );\n});\n\nInput.displayName = 'Input';\n\nconst styles = StyleSheet.create({\n root: {\n position: 'relative',\n },\n fullWidth: {\n alignSelf: 'stretch',\n width: '100%',\n },\n auto: {\n alignSelf: 'flex-start',\n },\n loading: {\n opacity: INPUT_LOADING.opacity,\n },\n slot: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n","import type { InputBaseProps } from './Input.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype InputDefaultedKeys =\n | 'variant'\n | 'size'\n | 'error'\n | 'fullWidth'\n | 'floating'\n | 'glow'\n | 'pulse'\n | 'loading'\n | 'disabled'\n | 'required';\n\n/**\n * Generic over the renderer's own props, as `resolveButtonProps` is: the web\n * and the native `Input` pass different handler and `value` types through, and\n * both come back out untouched.\n */\nexport type ResolvedInputProps<P extends InputBaseProps> = P &\n Required<Pick<InputBaseProps, InputDefaultedKeys>>;\n\n/**\n * The defaults the web `Input` declares in its destructuring. `fullWidth` is\n * true here and false in MUI: a field in this package fills its column unless\n * it is told not to.\n */\nconst INPUT_DEFAULTS: Required<Pick<InputBaseProps, InputDefaultedKeys>> = {\n variant: 'outlined',\n size: 'md',\n error: false,\n fullWidth: true,\n floating: false,\n glow: false,\n pulse: false,\n loading: false,\n disabled: false,\n required: false,\n};\n\nexport const resolveInputProps = <P extends InputBaseProps>(props: P): ResolvedInputProps<P> =>\n withDefaults(props, INPUT_DEFAULTS as Partial<P>) as ResolvedInputProps<P>;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,348 @@
1
+ import {
2
+ FieldPulse,
3
+ INPUT_FONT_SIZE,
4
+ INPUT_GLOW,
5
+ INPUT_LINE_HEIGHT,
6
+ INPUT_PULSE,
7
+ fieldLook,
8
+ helperStyle,
9
+ horizontalBorderInset,
10
+ labelStyle
11
+ } from "../chunks/chunk-WKMDCNIN.js";
12
+ import {
13
+ withDefaults
14
+ } from "../chunks/chunk-OXHZDFJZ.js";
15
+ import {
16
+ webAria,
17
+ webKeyDown,
18
+ webRole
19
+ } from "../chunks/chunk-T6BJPP3E.js";
20
+ import {
21
+ ICON_SIZES,
22
+ Icon
23
+ } from "../chunks/chunk-D4EYAXNG.js";
24
+ import {
25
+ resolveTestId,
26
+ withoutTestIdProps
27
+ } from "../chunks/chunk-QZAUOHDQ.js";
28
+ import "../chunks/chunk-5WLOVHKK.js";
29
+ import {
30
+ useUiTheme
31
+ } from "../chunks/chunk-YTHR4Y5P.js";
32
+ import {
33
+ alpha
34
+ } from "../chunks/chunk-P3PL4WBO.js";
35
+
36
+ // src/components/form/Select/Select.native.tsx
37
+ import * as React from "react";
38
+ import {
39
+ Platform,
40
+ Pressable,
41
+ ScrollView,
42
+ StyleSheet,
43
+ Text as RNText,
44
+ View,
45
+ useWindowDimensions
46
+ } from "react-native";
47
+
48
+ // src/components/form/Select/Select.helpers.ts
49
+ var SELECT_DEFAULTS = {
50
+ variant: "default",
51
+ size: "md",
52
+ fullWidth: true,
53
+ error: false,
54
+ glow: false,
55
+ pulse: false,
56
+ disabled: false
57
+ };
58
+ var resolveSelectProps = (props) => withDefaults(props, SELECT_DEFAULTS);
59
+ function selectItems(options, placeholder) {
60
+ const items = options.map((option) => ({
61
+ value: option.value,
62
+ label: option.label,
63
+ disabled: option.disabled === true,
64
+ placeholder: false,
65
+ option
66
+ }));
67
+ if (placeholder === void 0 || placeholder === "") return items;
68
+ return [{ value: "", label: placeholder, disabled: true, placeholder: true }, ...items];
69
+ }
70
+ function displayLabel(items, value) {
71
+ let label = "";
72
+ for (const item of items) {
73
+ if (String(item.value) === String(value)) label = item.label;
74
+ }
75
+ return label;
76
+ }
77
+ function selectTestIds(id) {
78
+ return {
79
+ root: id,
80
+ trigger: id ? `${id}-select` : "select",
81
+ option: (value) => id ? `${id}-option-${value}` : `option-${value}`
82
+ };
83
+ }
84
+
85
+ // src/components/form/Select/Select.metrics.ts
86
+ var inputVariantFor = (variant) => variant === "default" ? "outlined" : variant;
87
+ var selectInputSize = (size) => size === "sm" ? "sm" : "md";
88
+ var SELECT_ICON = {
89
+ size: ICON_SIZES.md,
90
+ right: 7,
91
+ displayPaddingRight: 32,
92
+ openRotateDeg: 180
93
+ };
94
+ var SELECT_ICON_GAP = SELECT_ICON.displayPaddingRight - SELECT_ICON.size - SELECT_ICON.right;
95
+ var SELECT_DISPLAY_MIN_HEIGHT = 23;
96
+ var SELECT_MENU = {
97
+ itemMinHeight: 48,
98
+ itemPaddingVertical: 6,
99
+ itemPaddingHorizontal: 16,
100
+ listPaddingVertical: 8,
101
+ selectedAlpha: { light: 0.08, dark: 0.16 },
102
+ disabledOpacity: 0.38,
103
+ /** MUI's `Menu` paper is `calc(100% - 96px)` tall at most. */
104
+ maxHeightInset: 96
105
+ };
106
+ var MUI_MENU_SHADOW = "0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)";
107
+ var selectedWashAlpha = (theme) => theme.mode === "dark" ? SELECT_MENU.selectedAlpha.dark : SELECT_MENU.selectedAlpha.light;
108
+
109
+ // src/components/form/Select/Select.look.native.ts
110
+ function selectLook(theme, variant, size, state) {
111
+ const inputVariant = inputVariantFor(variant);
112
+ const look = fieldLook(theme, inputVariant, size, state);
113
+ const inset = horizontalBorderInset(inputVariant, state.focused);
114
+ return {
115
+ box: {
116
+ ...look.box,
117
+ // MUI's arrow is absolute at `right: 7`; laid out in flow it takes the
118
+ // row's right inset instead, and {@link SELECT_ICON_GAP} makes up the
119
+ // difference so the value still stops 32px from the edge.
120
+ paddingRight: SELECT_ICON.right - inset
121
+ },
122
+ display: {
123
+ ...look.value,
124
+ minHeight: SELECT_DISPLAY_MIN_HEIGHT,
125
+ fontSize: INPUT_FONT_SIZE,
126
+ lineHeight: INPUT_LINE_HEIGHT
127
+ },
128
+ iconGap: SELECT_ICON_GAP
129
+ };
130
+ }
131
+ function menuStyle(theme, maxHeight) {
132
+ return {
133
+ position: "absolute",
134
+ top: "100%",
135
+ left: 0,
136
+ right: 0,
137
+ zIndex: theme.zIndex.modal,
138
+ maxHeight,
139
+ paddingVertical: SELECT_MENU.listPaddingVertical,
140
+ backgroundColor: theme.palette.background.paper,
141
+ borderRadius: theme.radius.md,
142
+ boxShadow: MUI_MENU_SHADOW
143
+ };
144
+ }
145
+ function optionStyle(theme, selected, disabled) {
146
+ return {
147
+ minHeight: SELECT_MENU.itemMinHeight,
148
+ justifyContent: "center",
149
+ paddingVertical: SELECT_MENU.itemPaddingVertical,
150
+ paddingHorizontal: SELECT_MENU.itemPaddingHorizontal,
151
+ backgroundColor: selected ? alpha(theme.palette.primary.main, selectedWashAlpha(theme)) : "transparent",
152
+ opacity: disabled ? SELECT_MENU.disabledOpacity : 1
153
+ };
154
+ }
155
+ function optionTextStyle(theme) {
156
+ return {
157
+ color: theme.palette.text.primary,
158
+ fontFamily: theme.typography.fontFamily,
159
+ fontSize: INPUT_FONT_SIZE,
160
+ lineHeight: INPUT_LINE_HEIGHT
161
+ };
162
+ }
163
+
164
+ // src/components/form/Select/Select.native.tsx
165
+ import { jsx, jsxs } from "react/jsx-runtime";
166
+ function glowStyle(color) {
167
+ return Platform.select({
168
+ android: { elevation: INPUT_GLOW.rest.blur / 2 },
169
+ default: {
170
+ shadowColor: color,
171
+ shadowOpacity: INPUT_GLOW.rest.alpha,
172
+ shadowRadius: INPUT_GLOW.rest.blur,
173
+ shadowOffset: { width: 0, height: 0 }
174
+ }
175
+ });
176
+ }
177
+ function SelectMenu({ items, value, testIdFor, onPick }) {
178
+ const theme = useUiTheme();
179
+ const { height } = useWindowDimensions();
180
+ const textStyle = optionTextStyle(theme);
181
+ return /* @__PURE__ */ jsx(View, { style: menuStyle(theme, height - SELECT_MENU.maxHeightInset), ...webRole("listbox"), children: /* @__PURE__ */ jsx(ScrollView, { children: items.map((item) => {
182
+ const selected = String(item.value) === String(value);
183
+ return /* @__PURE__ */ jsx(
184
+ Pressable,
185
+ {
186
+ role: "option",
187
+ "aria-selected": selected,
188
+ "aria-disabled": item.disabled,
189
+ disabled: item.disabled,
190
+ testID: item.placeholder ? void 0 : testIdFor(item.value),
191
+ onPress: () => onPick(item),
192
+ style: optionStyle(theme, selected, item.disabled),
193
+ children: /* @__PURE__ */ jsx(RNText, { style: textStyle, children: item.label })
194
+ },
195
+ `${item.placeholder ? "placeholder" : "option"}-${item.value}`
196
+ );
197
+ }) }) });
198
+ }
199
+ function SelectTrigger(props) {
200
+ const theme = useUiTheme();
201
+ const { testID, look, open, disabled, error, glow, display, labelId, helperId } = props;
202
+ return /* @__PURE__ */ jsxs(
203
+ Pressable,
204
+ {
205
+ testID,
206
+ role: "combobox",
207
+ tabIndex: disabled ? -1 : 0,
208
+ "aria-expanded": open,
209
+ "aria-disabled": disabled,
210
+ disabled,
211
+ onPress: props.onToggle,
212
+ style: [look.box, glow ? glowStyle(theme.palette.primary.main) : null],
213
+ ...webAria({
214
+ "aria-haspopup": "listbox",
215
+ "aria-invalid": error,
216
+ ...labelId === void 0 ? {} : { "aria-labelledby": labelId },
217
+ ...helperId === void 0 ? {} : { "aria-describedby": helperId }
218
+ }),
219
+ ...webKeyDown(props.onKey),
220
+ children: [
221
+ /* @__PURE__ */ jsx(RNText, { style: look.display, numberOfLines: 1, children: display }),
222
+ /* @__PURE__ */ jsx(
223
+ Icon,
224
+ {
225
+ name: "ArrowDropDown",
226
+ size: SELECT_ICON.size,
227
+ color: disabled ? theme.palette.action.disabled : theme.palette.action.active,
228
+ testID: `${testID}-icon`,
229
+ style: [
230
+ { marginLeft: look.iconGap },
231
+ open ? { transform: [{ rotate: `${SELECT_ICON.openRotateDeg}deg` }] } : null
232
+ ]
233
+ }
234
+ )
235
+ ]
236
+ }
237
+ );
238
+ }
239
+ function useSelectValue(value, defaultValue) {
240
+ const [own, setOwn] = React.useState(defaultValue ?? "");
241
+ return [value ?? own, setOwn];
242
+ }
243
+ var Select = React.forwardRef((rawProps, ref) => {
244
+ const {
245
+ variant,
246
+ options,
247
+ label,
248
+ helperText,
249
+ fullWidth,
250
+ size,
251
+ placeholder,
252
+ error,
253
+ glow,
254
+ pulse,
255
+ disabled,
256
+ value,
257
+ defaultValue,
258
+ onChange,
259
+ onOpen,
260
+ onClose,
261
+ style,
262
+ ...others
263
+ } = resolveSelectProps(rawProps);
264
+ const theme = useUiTheme();
265
+ const [open, setOpen] = React.useState(false);
266
+ const [current, setCurrent] = useSelectValue(value, defaultValue);
267
+ const labelId = React.useId();
268
+ const helperId = React.useId();
269
+ const items = selectItems(options, placeholder);
270
+ const ids = selectTestIds(resolveTestId(others));
271
+ const state = { focused: open && !disabled, error, disabled };
272
+ const look = selectLook(theme, variant, size, state);
273
+ const setOpenState = (next) => {
274
+ if (next === open) return;
275
+ setOpen(next);
276
+ (next ? onOpen : onClose)?.();
277
+ };
278
+ const handleKey = (event) => {
279
+ if (event.key === "Escape") setOpenState(false);
280
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") setOpenState(true);
281
+ };
282
+ const pick = (item) => {
283
+ setOpenState(false);
284
+ if (item.option === void 0) return;
285
+ setCurrent(item.value);
286
+ onChange?.({ target: { value: item.value } }, item.option);
287
+ };
288
+ return /* @__PURE__ */ jsxs(
289
+ View,
290
+ {
291
+ ref,
292
+ testID: ids.root,
293
+ style: [styles.root, fullWidth ? styles.fullWidth : styles.auto, style],
294
+ ...withoutTestIdProps(others),
295
+ children: [
296
+ pulse ? /* @__PURE__ */ jsx(
297
+ FieldPulse,
298
+ {
299
+ color: theme.palette.primary.main,
300
+ radius: theme.spacing(INPUT_PULSE.radiusUnits),
301
+ testID: `${ids.trigger}-pulse`
302
+ }
303
+ ) : null,
304
+ label === void 0 ? null : /* @__PURE__ */ jsx(RNText, { id: labelId, style: labelStyle(theme, inputVariantFor(variant), size, state), children: label }),
305
+ /* @__PURE__ */ jsxs(View, { style: [styles.anchor, open ? { zIndex: theme.zIndex.modal } : null], children: [
306
+ /* @__PURE__ */ jsx(
307
+ SelectTrigger,
308
+ {
309
+ testID: ids.trigger,
310
+ look,
311
+ open,
312
+ disabled,
313
+ error,
314
+ glow,
315
+ display: displayLabel(items, current),
316
+ labelId: label === void 0 ? void 0 : labelId,
317
+ helperId: helperText === void 0 ? void 0 : helperId,
318
+ onToggle: () => setOpenState(!open),
319
+ onKey: handleKey
320
+ }
321
+ ),
322
+ open ? /* @__PURE__ */ jsx(SelectMenu, { items, value: current, testIdFor: ids.option, onPick: pick }) : null
323
+ ] }),
324
+ helperText === void 0 ? null : /* @__PURE__ */ jsx(RNText, { id: helperId, style: helperStyle(theme, inputVariantFor(variant), selectInputSize(size), state), children: helperText })
325
+ ]
326
+ }
327
+ );
328
+ });
329
+ Select.displayName = "Select";
330
+ var styles = StyleSheet.create({
331
+ root: {
332
+ position: "relative"
333
+ },
334
+ anchor: {
335
+ position: "relative"
336
+ },
337
+ fullWidth: {
338
+ alignSelf: "stretch",
339
+ width: "100%"
340
+ },
341
+ auto: {
342
+ alignSelf: "flex-start"
343
+ }
344
+ });
345
+ export {
346
+ Select
347
+ };
348
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/form/Select/Select.native.tsx","../../../src/components/form/Select/Select.helpers.ts","../../../src/components/form/Select/Select.metrics.ts","../../../src/components/form/Select/Select.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text as RNText,\n View,\n useWindowDimensions,\n type ViewStyle,\n} from 'react-native';\n\nimport {\n displayLabel,\n resolveSelectProps,\n selectItems,\n selectTestIds,\n type SelectItem,\n} from './Select.helpers';\nimport { menuStyle, optionStyle, optionTextStyle, selectLook, type SelectLook } from './Select.look.native';\nimport {\n SELECT_GLOW,\n SELECT_ICON,\n SELECT_MENU,\n SELECT_PULSE,\n inputVariantFor,\n selectInputSize,\n} from './Select.metrics';\nimport type { SelectProps, SelectValue } from './Select.types.native';\nimport { Icon } from '../../../icons/Icon.native';\nimport { webAria, webKeyDown, webRole, type WebKeyEvent } from '../../../platform/aria';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport { FieldPulse } from '../field-pulse.native';\nimport { helperStyle, labelStyle, type FieldState } from '../Input/Input.look.native';\n\n/** MUI's halo on the outlined input, painted as a shadow. */\nfunction glowStyle(color: string): ViewStyle {\n return Platform.select<ViewStyle>({\n android: { elevation: SELECT_GLOW.rest.blur / 2 },\n default: {\n shadowColor: color,\n shadowOpacity: SELECT_GLOW.rest.alpha,\n shadowRadius: SELECT_GLOW.rest.blur,\n shadowOffset: { width: 0, height: 0 },\n },\n });\n}\n\ninterface MenuProps {\n items: SelectItem[];\n value: SelectValue;\n testIdFor: (value: SelectValue) => string;\n onPick: (item: SelectItem) => void;\n}\n\n/** The option list: MUI's `Menu`, under the field rather than portalled over it. */\nfunction SelectMenu({ items, value, testIdFor, onPick }: MenuProps): React.JSX.Element {\n const theme = useUiTheme();\n const { height } = useWindowDimensions();\n const textStyle = optionTextStyle(theme);\n\n return (\n <View style={menuStyle(theme, height - SELECT_MENU.maxHeightInset)} {...webRole('listbox')}>\n <ScrollView>\n {items.map((item) => {\n const selected = String(item.value) === String(value);\n return (\n <Pressable\n key={`${item.placeholder ? 'placeholder' : 'option'}-${item.value}`}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n testID={item.placeholder ? undefined : testIdFor(item.value)}\n onPress={() => onPick(item)}\n style={optionStyle(theme, selected, item.disabled)}\n >\n <RNText style={textStyle}>{item.label}</RNText>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n );\n}\n\ninterface TriggerProps {\n testID: string;\n look: SelectLook;\n open: boolean;\n disabled: boolean;\n error: boolean;\n glow: boolean;\n display: string;\n labelId?: string;\n helperId?: string;\n onToggle: () => void;\n onKey: (event: WebKeyEvent) => void;\n}\n\n/**\n * The field itself: MUI's display slot and its arrow, under one `combobox`.\n *\n * `tabIndex` is spelled out because react-native-web only makes a handful of\n * roles focusable on its own, and `combobox` is not one of them — without it\n * the control would not be a tab stop. It goes to -1 when disabled, which is\n * what the web does by leaving the attribute off a disabled field entirely.\n */\nfunction SelectTrigger(props: TriggerProps): React.JSX.Element {\n const theme = useUiTheme();\n const { testID, look, open, disabled, error, glow, display, labelId, helperId } = props;\n\n return (\n <Pressable\n testID={testID}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={open}\n aria-disabled={disabled}\n disabled={disabled}\n onPress={props.onToggle}\n style={[look.box, glow ? glowStyle(theme.palette.primary.main) : null]}\n {...webAria({\n 'aria-haspopup': 'listbox',\n 'aria-invalid': error,\n ...(labelId === undefined ? {} : { 'aria-labelledby': labelId }),\n ...(helperId === undefined ? {} : { 'aria-describedby': helperId }),\n })}\n {...webKeyDown(props.onKey)}\n >\n <RNText style={look.display} numberOfLines={1}>\n {display}\n </RNText>\n <Icon\n name=\"ArrowDropDown\"\n size={SELECT_ICON.size}\n color={disabled ? theme.palette.action.disabled : theme.palette.action.active}\n testID={`${testID}-icon`}\n style={[\n { marginLeft: look.iconGap },\n open ? { transform: [{ rotate: `${SELECT_ICON.openRotateDeg}deg` }] } : null,\n ]}\n />\n </Pressable>\n );\n}\n\n/** The value the control shows, controlled by the caller or held here. */\nfunction useSelectValue(\n value: SelectValue | undefined,\n defaultValue: SelectValue | undefined,\n): [SelectValue, (next: SelectValue) => void] {\n const [own, setOwn] = React.useState<SelectValue>(defaultValue ?? '');\n return [value ?? own, setOwn];\n}\n\n/**\n * The native `Select`.\n *\n * The list is an absolutely positioned panel under the field rather than a\n * portal over the screen: React Native's `Modal` traps focus, which is right\n * for a dialog and wrong for a dropdown — and wrong for the shared stories,\n * which expect the trigger to keep focus while the list is open. The trade is\n * recorded in `NATIVE-NOTES.md`.\n */\nexport const Select = React.forwardRef<View, SelectProps>((rawProps, ref) => {\n const {\n variant, options, label, helperText, fullWidth, size, placeholder, error, glow, pulse,\n disabled, value, defaultValue, onChange, onOpen, onClose, style, ...others\n } = resolveSelectProps(rawProps);\n\n const theme = useUiTheme();\n const [open, setOpen] = React.useState(false);\n const [current, setCurrent] = useSelectValue(value, defaultValue);\n const labelId = React.useId();\n const helperId = React.useId();\n\n const items = selectItems(options, placeholder);\n const ids = selectTestIds(resolveTestId(others));\n const state: FieldState = { focused: open && !disabled, error, disabled };\n const look = selectLook(theme, variant, size, state);\n\n const setOpenState = (next: boolean): void => {\n if (next === open) return;\n setOpen(next);\n (next ? onOpen : onClose)?.();\n };\n\n const handleKey = (event: WebKeyEvent): void => {\n if (event.key === 'Escape') setOpenState(false);\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') setOpenState(true);\n };\n\n const pick = (item: SelectItem): void => {\n setOpenState(false);\n if (item.option === undefined) return;\n setCurrent(item.value);\n onChange?.({ target: { value: item.value } }, item.option);\n };\n\n return (\n <View\n ref={ref}\n testID={ids.root}\n style={[styles.root, fullWidth ? styles.fullWidth : styles.auto, style]}\n {...withoutTestIdProps(others)}\n >\n {pulse ? (\n <FieldPulse\n color={theme.palette.primary.main}\n radius={theme.spacing(SELECT_PULSE.radiusUnits)}\n testID={`${ids.trigger}-pulse`}\n />\n ) : null}\n {label === undefined ? null : (\n <RNText id={labelId} style={labelStyle(theme, inputVariantFor(variant), size, state)}>\n {label}\n </RNText>\n )}\n <View style={[styles.anchor, open ? { zIndex: theme.zIndex.modal } : null]}>\n <SelectTrigger\n testID={ids.trigger}\n look={look}\n open={open}\n disabled={disabled}\n error={error}\n glow={glow}\n display={displayLabel(items, current)}\n labelId={label === undefined ? undefined : labelId}\n helperId={helperText === undefined ? undefined : helperId}\n onToggle={() => setOpenState(!open)}\n onKey={handleKey}\n />\n {open ? (\n <SelectMenu items={items} value={current} testIdFor={ids.option} onPick={pick} />\n ) : null}\n </View>\n {helperText === undefined ? null : (\n <RNText id={helperId} style={helperStyle(theme, inputVariantFor(variant), selectInputSize(size), state)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSelect.displayName = 'Select';\n\nconst styles = StyleSheet.create({\n root: {\n position: 'relative',\n },\n anchor: {\n position: 'relative',\n },\n fullWidth: {\n alignSelf: 'stretch',\n width: '100%',\n },\n auto: {\n alignSelf: 'flex-start',\n },\n});\n","import type { SelectBaseProps, SelectOption, SelectValue } from './Select.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SelectDefaultedKeys = 'variant' | 'size' | 'fullWidth' | 'error' | 'glow' | 'pulse' | 'disabled';\n\nexport type ResolvedSelectProps<P extends SelectBaseProps> = P &\n Required<Pick<SelectBaseProps, SelectDefaultedKeys>>;\n\n/**\n * `Select.tsx` leaves `variant`, `size`, `glow` and `pulse` undefined on\n * purpose — undefined resolves to the default variant, MUI's medium and no\n * effects, which keeps its render function under the complexity budget. The\n * native renderer has to name them, so the same resolution happens here.\n */\nconst SELECT_DEFAULTS: Required<Pick<SelectBaseProps, SelectDefaultedKeys>> = {\n variant: 'default',\n size: 'md',\n fullWidth: true,\n error: false,\n glow: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSelectProps = <P extends SelectBaseProps>(props: P): ResolvedSelectProps<P> =>\n withDefaults(props, SELECT_DEFAULTS as Partial<P>) as ResolvedSelectProps<P>;\n\n/** One row of the list: an option, or the disabled placeholder above them. */\nexport interface SelectItem {\n value: SelectValue;\n label: string;\n disabled: boolean;\n /** The placeholder is not an option: it carries no test id and cannot be chosen. */\n placeholder: boolean;\n option?: SelectOption;\n}\n\n/**\n * The list MUI renders: the placeholder first when there is one, then the\n * options, in the order `renderMenuItems` builds them.\n */\nexport function selectItems(options: SelectOption[], placeholder?: string): SelectItem[] {\n const items: SelectItem[] = options.map((option) => ({\n value: option.value,\n label: option.label,\n disabled: option.disabled === true,\n placeholder: false,\n option,\n }));\n if (placeholder === undefined || placeholder === '') return items;\n return [{ value: '', label: placeholder, disabled: true, placeholder: true }, ...items];\n}\n\n/**\n * What the display slot shows.\n *\n * The LAST match wins, which is MUI's own answer: `SelectInput` walks its\n * children and overwrites the display for every child whose value matches, so\n * a list carrying both an empty placeholder and a real empty-valued option\n * shows the option. Values are compared as strings because the DOM stringifies\n * them anyway (MUI's `areEqualValues`).\n */\nexport function displayLabel(items: SelectItem[], value: SelectValue): string {\n let label = '';\n for (const item of items) {\n if (String(item.value) === String(value)) label = item.label;\n }\n return label;\n}\n\n/** The three ids the web puts on the control, spelled exactly as it spells them. */\nexport function selectTestIds(id: string | undefined): {\n root: string | undefined;\n trigger: string;\n option: (value: SelectValue) => string;\n} {\n return {\n root: id,\n trigger: id ? `${id}-select` : 'select',\n option: (value) => (id ? `${id}-option-${value}` : `option-${value}`),\n };\n}\n","import type { SelectVariant } from './Select.base';\nimport type { InputVariant } from '../Input/Input.base';\nimport { ICON_SIZES } from '../../../icons/Icon.types';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Select` RENDERERS DRAW WITH.\n *\n * A `Select` on the web IS an `OutlinedInput` with a display slot and an arrow\n * where the value would be typed, so the box's own numbers — the padding, the\n * border, the radius, the field edge — are `Input.metrics.ts`'s, read through\n * {@link inputVariantFor} rather than restated. What is here is what a select\n * has and a text field does not: the arrow, the option list, and the two\n * heights MUI's `FormControl` offers.\n */\n\n/** Our three variants onto the `Input` variant that draws the same box. */\nexport const inputVariantFor = (variant: SelectVariant): InputVariant =>\n variant === 'default' ? 'outlined' : variant;\n\n/**\n * The house scale as a `FormControl` size.\n *\n * Not `muiSize`: that collapses five onto MUI's three, and a FormControl takes\n * only two — `sm` draws small and EVERY other step, `xs` included, draws\n * medium. Restated from `Select.tsx`'s `formControlSize` so the native side\n * reads the same lossy map rather than inventing a kinder one.\n */\nexport const selectInputSize = (size: SizeValue | undefined): 'sm' | 'md' =>\n size === 'sm' ? 'sm' : 'md';\n\n/**\n * The arrow: MUI's `ArrowDropDown` at `SvgIcon`'s medium size, 7px from the\n * right edge, turned over while the list is open. The display slot reserves\n * 32px for it, so the flow-laid glyph takes the difference as a margin.\n */\nexport const SELECT_ICON = {\n size: ICON_SIZES.md,\n right: 7,\n displayPaddingRight: 32,\n openRotateDeg: 180,\n} as const;\n\n/** What the glyph leaves between itself and the value: 32 - 24 - 7. */\nexport const SELECT_ICON_GAP =\n SELECT_ICON.displayPaddingRight - SELECT_ICON.size - SELECT_ICON.right;\n\n/** `.MuiSelect-select`'s floor, MUI's `1.4375em` at the 16px body size. */\nexport const SELECT_DISPLAY_MIN_HEIGHT = 23;\n\n/**\n * The option list: MUI's `Menu` over a `MenuList` of `MenuItem`s.\n *\n * `selectedAlpha` is `palette.action.selectedOpacity`, which MUI doubles in\n * dark mode; `disabledOpacity` is `palette.action.disabledOpacity`. Neither is\n * on `UiTheme`, whose `action` carries colours rather than opacities.\n */\nexport const SELECT_MENU = {\n itemMinHeight: 48,\n itemPaddingVertical: 6,\n itemPaddingHorizontal: 16,\n listPaddingVertical: 8,\n selectedAlpha: { light: 0.08, dark: 0.16 },\n disabledOpacity: 0.38,\n /** MUI's `Menu` paper is `calc(100% - 96px)` tall at most. */\n maxHeightInset: 96,\n} as const;\n\n/** MUI's `theme.shadows[8]`, the elevation a `Menu` paper rests at. */\nexport const MUI_MENU_SHADOW =\n '0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12)';\n\n/** The wash behind the option the value currently names. */\nexport const selectedWashAlpha = (theme: UiTheme): number =>\n theme.mode === 'dark' ? SELECT_MENU.selectedAlpha.dark : SELECT_MENU.selectedAlpha.light;\n\n/**\n * The box a select draws IS the input's box, so these are the input's tables\n * under this component's names — the border widths, the glass and gradient\n * alphas, the halo and the pulse. Restating them here is how the two controls\n * would come to disagree about what an outlined field looks like.\n */\nexport {\n INPUT_BORDER as SELECT_BORDER,\n INPUT_GLASS as SELECT_GLASS,\n INPUT_GLOW as SELECT_GLOW,\n INPUT_GRADIENT as SELECT_GRADIENT,\n INPUT_PULSE as SELECT_PULSE,\n} from '../Input/Input.metrics';\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport {\n MUI_MENU_SHADOW,\n SELECT_DISPLAY_MIN_HEIGHT,\n SELECT_ICON,\n SELECT_ICON_GAP,\n SELECT_MENU,\n inputVariantFor,\n selectedWashAlpha,\n} from './Select.metrics';\nimport type { SelectVariant } from './Select.base';\nimport { INPUT_FONT_SIZE, INPUT_LINE_HEIGHT } from '../Input/Input.metrics';\nimport { fieldLook, horizontalBorderInset, type FieldState } from '../Input/Input.look.native';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Select` PAINTS.\n *\n * The box is the `Input`'s box: a select on the web is an `OutlinedInput` with\n * a display slot where the value would be typed, so `fieldLook` decides the\n * fill, the edges and the inset, and this file only says what a select adds —\n * room for the arrow, and the list under it.\n */\nexport interface SelectLook {\n box: ViewStyle;\n display: TextStyle;\n iconGap: number;\n}\n\nexport function selectLook(\n theme: UiTheme,\n variant: SelectVariant,\n size: SizeValue,\n state: FieldState,\n): SelectLook {\n const inputVariant = inputVariantFor(variant);\n const look = fieldLook(theme, inputVariant, size, state);\n const inset = horizontalBorderInset(inputVariant, state.focused);\n\n return {\n box: {\n ...look.box,\n // MUI's arrow is absolute at `right: 7`; laid out in flow it takes the\n // row's right inset instead, and {@link SELECT_ICON_GAP} makes up the\n // difference so the value still stops 32px from the edge.\n paddingRight: SELECT_ICON.right - inset,\n },\n display: {\n ...look.value,\n minHeight: SELECT_DISPLAY_MIN_HEIGHT,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n },\n iconGap: SELECT_ICON_GAP,\n };\n}\n\n/** The option list's paper: MUI's `Menu`, at elevation 8 on the theme's radius. */\nexport function menuStyle(theme: UiTheme, maxHeight: number): ViewStyle {\n return {\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: theme.zIndex.modal,\n maxHeight,\n paddingVertical: SELECT_MENU.listPaddingVertical,\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.radius.md,\n boxShadow: MUI_MENU_SHADOW,\n };\n}\n\n/** One `MenuItem`: 48px tall at least, 6px by 16px of padding, washed when selected. */\nexport function optionStyle(theme: UiTheme, selected: boolean, disabled: boolean): ViewStyle {\n return {\n minHeight: SELECT_MENU.itemMinHeight,\n justifyContent: 'center',\n paddingVertical: SELECT_MENU.itemPaddingVertical,\n paddingHorizontal: SELECT_MENU.itemPaddingHorizontal,\n backgroundColor: selected\n ? alpha(theme.palette.primary.main, selectedWashAlpha(theme))\n : 'transparent',\n opacity: disabled ? SELECT_MENU.disabledOpacity : 1,\n };\n}\n\n/** A `MenuItem`'s label: MUI's `body1`, the same type the display slot sets. */\nexport function optionTextStyle(theme: UiTheme): TextStyle {\n return {\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n };\n}\n"],"mappings":"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","names":[]}