@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,12 @@
1
+ # Select on React Native
2
+
3
+ Known rendering gaps, one bullet each; `pnpm native:ledger` reads them.
4
+
5
+ - The option list is an absolutely positioned panel under the field, not a portal over the screen: React Native's `Modal` traps focus and covers the viewport, which is right for a dialog and wrong for a dropdown. So the list is clipped by any ancestor that hides its overflow, it cannot escape a `ScrollView`, and there is no backdrop — the list closes on a pick, on Escape, or when the field is pressed again, never by a tap elsewhere.
6
+ - Arrow keys open the list and Escape closes it, through react-native-web's DOM key events; `Enter` toggles it, because react-native-web's `Pressable` already answers `Enter` as a press. None of the three exists on a device, where the list is a touch surface — so there is no highlighted option to walk.
7
+ - The label sits above the field rather than floating into a notch in its border, and the arrow is laid out in flow rather than absolutely at `right: 7`; the 1px difference that costs is taken out of the gap before the glyph, so the value still stops 32px from the edge. Both follow from React Native having no notched outline and no `position: absolute` inside a text run.
8
+ - `glass` paints its 0.1 paper wash without the 20px backdrop blur (React Native has no backdrop filter), and `gradient` paints the first stop of its 135° fill flat inside a 2px ring of the gradient's first hue — React Native core has no gradient fill and no masked pseudo-element border.
9
+ - Hover has no touch equivalent: the web's hover border, its brighter glass wash and the `action.hover` wash under a menu row are not drawn. `glow` is a shadow on iOS and an elevation on Android, so its halo is not symmetrical there, and it does not brighten on focus the way the web's does.
10
+ - `defaultValue` selects an option here and does nothing on the web, where `Select.tsx` passes `value={value ?? ''}` and MUI's controlled value wins over it. Fixing that is a web change.
11
+ - The list is rendered in full inside a `ScrollView` capped at the window height less 96px, where MUI's `Menu` measures the anchor and flips or shifts to stay on screen; a list opened near the bottom of a device screen runs off it.
12
+ - The display slot, the option labels, the label and the helper text are set in MUI's own numbers (`body1` at 16px on a 23px line, the 0.75 shrunk label, `caption` at 12px); a host that re-themes MUI's typography variants moves the web only.
@@ -0,0 +1,78 @@
1
+ import type { SizeValue } from '../../../tokens/vocabulary';
2
+
3
+ /**
4
+ * THE CONTRACT BOTH RENDERERS HONOUR — and nothing else.
5
+ *
6
+ * No MUI and no react-native here: this file is in BOTH declaration outputs,
7
+ * and a native consumer has no `@mui/material` to resolve a type import
8
+ * against. See `Button.base.ts`.
9
+ */
10
+ export type SelectVariant = 'default' | 'glass' | 'gradient';
11
+
12
+ /** What a value can be. The DOM stringifies either, so the two are compared as strings. */
13
+ export type SelectValue = string | number;
14
+
15
+ export interface SelectOption {
16
+ value: SelectValue;
17
+ label: string;
18
+ disabled?: boolean;
19
+ }
20
+
21
+ /**
22
+ * The contract both renderers honour.
23
+ *
24
+ * `value`, `defaultValue` and `onChange` are NOT here: MUI types the value as
25
+ * `unknown` and the change as its own `SelectChangeEvent`, while the native
26
+ * side takes a `SelectValue` and synthesises the `{ target: { value } }` shape
27
+ * the web handlers already read.
28
+ */
29
+ export interface SelectBaseProps {
30
+ /**
31
+ * Visual variant of the select component
32
+ * @default 'default'
33
+ */
34
+ variant?: SelectVariant;
35
+ /**
36
+ * Array of options to display in the select
37
+ */
38
+ options: SelectOption[];
39
+ /**
40
+ * Label for the select field
41
+ */
42
+ label?: string;
43
+ /**
44
+ * Helper text to display below the select
45
+ */
46
+ helperText?: string;
47
+ /**
48
+ * Whether the select should take full width
49
+ * @default true
50
+ */
51
+ fullWidth?: boolean;
52
+ /**
53
+ * Size of the select component
54
+ * @default 'medium'
55
+ */
56
+ size?: SizeValue;
57
+ /**
58
+ * Placeholder text when no option is selected
59
+ */
60
+ placeholder?: string;
61
+ /**
62
+ * Paints the field, the label and the helper text in the danger hue
63
+ */
64
+ error?: boolean;
65
+ /**
66
+ * Whether to show a glow effect
67
+ * @default false
68
+ */
69
+ glow?: boolean;
70
+ /**
71
+ * Whether to show a pulse animation
72
+ * @default false
73
+ */
74
+ pulse?: boolean;
75
+ disabled?: boolean;
76
+ testID?: string;
77
+ dataTestId?: string;
78
+ }
@@ -0,0 +1,82 @@
1
+ import type { SelectBaseProps, SelectOption, SelectValue } from './Select.base';
2
+ import { withDefaults } from '../../../utils/withDefaults';
3
+
4
+ type SelectDefaultedKeys = 'variant' | 'size' | 'fullWidth' | 'error' | 'glow' | 'pulse' | 'disabled';
5
+
6
+ export type ResolvedSelectProps<P extends SelectBaseProps> = P &
7
+ Required<Pick<SelectBaseProps, SelectDefaultedKeys>>;
8
+
9
+ /**
10
+ * `Select.tsx` leaves `variant`, `size`, `glow` and `pulse` undefined on
11
+ * purpose — undefined resolves to the default variant, MUI's medium and no
12
+ * effects, which keeps its render function under the complexity budget. The
13
+ * native renderer has to name them, so the same resolution happens here.
14
+ */
15
+ const SELECT_DEFAULTS: Required<Pick<SelectBaseProps, SelectDefaultedKeys>> = {
16
+ variant: 'default',
17
+ size: 'md',
18
+ fullWidth: true,
19
+ error: false,
20
+ glow: false,
21
+ pulse: false,
22
+ disabled: false,
23
+ };
24
+
25
+ export const resolveSelectProps = <P extends SelectBaseProps>(props: P): ResolvedSelectProps<P> =>
26
+ withDefaults(props, SELECT_DEFAULTS as Partial<P>) as ResolvedSelectProps<P>;
27
+
28
+ /** One row of the list: an option, or the disabled placeholder above them. */
29
+ export interface SelectItem {
30
+ value: SelectValue;
31
+ label: string;
32
+ disabled: boolean;
33
+ /** The placeholder is not an option: it carries no test id and cannot be chosen. */
34
+ placeholder: boolean;
35
+ option?: SelectOption;
36
+ }
37
+
38
+ /**
39
+ * The list MUI renders: the placeholder first when there is one, then the
40
+ * options, in the order `renderMenuItems` builds them.
41
+ */
42
+ export function selectItems(options: SelectOption[], placeholder?: string): SelectItem[] {
43
+ const items: SelectItem[] = options.map((option) => ({
44
+ value: option.value,
45
+ label: option.label,
46
+ disabled: option.disabled === true,
47
+ placeholder: false,
48
+ option,
49
+ }));
50
+ if (placeholder === undefined || placeholder === '') return items;
51
+ return [{ value: '', label: placeholder, disabled: true, placeholder: true }, ...items];
52
+ }
53
+
54
+ /**
55
+ * What the display slot shows.
56
+ *
57
+ * The LAST match wins, which is MUI's own answer: `SelectInput` walks its
58
+ * children and overwrites the display for every child whose value matches, so
59
+ * a list carrying both an empty placeholder and a real empty-valued option
60
+ * shows the option. Values are compared as strings because the DOM stringifies
61
+ * them anyway (MUI's `areEqualValues`).
62
+ */
63
+ export function displayLabel(items: SelectItem[], value: SelectValue): string {
64
+ let label = '';
65
+ for (const item of items) {
66
+ if (String(item.value) === String(value)) label = item.label;
67
+ }
68
+ return label;
69
+ }
70
+
71
+ /** The three ids the web puts on the control, spelled exactly as it spells them. */
72
+ export function selectTestIds(id: string | undefined): {
73
+ root: string | undefined;
74
+ trigger: string;
75
+ option: (value: SelectValue) => string;
76
+ } {
77
+ return {
78
+ root: id,
79
+ trigger: id ? `${id}-select` : 'select',
80
+ option: (value) => (id ? `${id}-option-${value}` : `option-${value}`),
81
+ };
82
+ }
@@ -0,0 +1,99 @@
1
+ import type { TextStyle, ViewStyle } from 'react-native';
2
+
3
+ import {
4
+ MUI_MENU_SHADOW,
5
+ SELECT_DISPLAY_MIN_HEIGHT,
6
+ SELECT_ICON,
7
+ SELECT_ICON_GAP,
8
+ SELECT_MENU,
9
+ inputVariantFor,
10
+ selectedWashAlpha,
11
+ } from './Select.metrics';
12
+ import type { SelectVariant } from './Select.base';
13
+ import { INPUT_FONT_SIZE, INPUT_LINE_HEIGHT } from '../Input/Input.metrics';
14
+ import { fieldLook, horizontalBorderInset, type FieldState } from '../Input/Input.look.native';
15
+ import { alpha } from '../../../tokens/color';
16
+ import type { UiTheme } from '../../../tokens/theme';
17
+ import type { SizeValue } from '../../../tokens/vocabulary';
18
+
19
+ /**
20
+ * WHAT A NATIVE `Select` PAINTS.
21
+ *
22
+ * The box is the `Input`'s box: a select on the web is an `OutlinedInput` with
23
+ * a display slot where the value would be typed, so `fieldLook` decides the
24
+ * fill, the edges and the inset, and this file only says what a select adds —
25
+ * room for the arrow, and the list under it.
26
+ */
27
+ export interface SelectLook {
28
+ box: ViewStyle;
29
+ display: TextStyle;
30
+ iconGap: number;
31
+ }
32
+
33
+ export function selectLook(
34
+ theme: UiTheme,
35
+ variant: SelectVariant,
36
+ size: SizeValue,
37
+ state: FieldState,
38
+ ): SelectLook {
39
+ const inputVariant = inputVariantFor(variant);
40
+ const look = fieldLook(theme, inputVariant, size, state);
41
+ const inset = horizontalBorderInset(inputVariant, state.focused);
42
+
43
+ return {
44
+ box: {
45
+ ...look.box,
46
+ // MUI's arrow is absolute at `right: 7`; laid out in flow it takes the
47
+ // row's right inset instead, and {@link SELECT_ICON_GAP} makes up the
48
+ // difference so the value still stops 32px from the edge.
49
+ paddingRight: SELECT_ICON.right - inset,
50
+ },
51
+ display: {
52
+ ...look.value,
53
+ minHeight: SELECT_DISPLAY_MIN_HEIGHT,
54
+ fontSize: INPUT_FONT_SIZE,
55
+ lineHeight: INPUT_LINE_HEIGHT,
56
+ },
57
+ iconGap: SELECT_ICON_GAP,
58
+ };
59
+ }
60
+
61
+ /** The option list's paper: MUI's `Menu`, at elevation 8 on the theme's radius. */
62
+ export function menuStyle(theme: UiTheme, maxHeight: number): ViewStyle {
63
+ return {
64
+ position: 'absolute',
65
+ top: '100%',
66
+ left: 0,
67
+ right: 0,
68
+ zIndex: theme.zIndex.modal,
69
+ maxHeight,
70
+ paddingVertical: SELECT_MENU.listPaddingVertical,
71
+ backgroundColor: theme.palette.background.paper,
72
+ borderRadius: theme.radius.md,
73
+ boxShadow: MUI_MENU_SHADOW,
74
+ };
75
+ }
76
+
77
+ /** One `MenuItem`: 48px tall at least, 6px by 16px of padding, washed when selected. */
78
+ export function optionStyle(theme: UiTheme, selected: boolean, disabled: boolean): ViewStyle {
79
+ return {
80
+ minHeight: SELECT_MENU.itemMinHeight,
81
+ justifyContent: 'center',
82
+ paddingVertical: SELECT_MENU.itemPaddingVertical,
83
+ paddingHorizontal: SELECT_MENU.itemPaddingHorizontal,
84
+ backgroundColor: selected
85
+ ? alpha(theme.palette.primary.main, selectedWashAlpha(theme))
86
+ : 'transparent',
87
+ opacity: disabled ? SELECT_MENU.disabledOpacity : 1,
88
+ };
89
+ }
90
+
91
+ /** A `MenuItem`'s label: MUI's `body1`, the same type the display slot sets. */
92
+ export function optionTextStyle(theme: UiTheme): TextStyle {
93
+ return {
94
+ color: theme.palette.text.primary,
95
+ fontFamily: theme.typography.fontFamily,
96
+ fontSize: INPUT_FONT_SIZE,
97
+ lineHeight: INPUT_LINE_HEIGHT,
98
+ };
99
+ }
@@ -0,0 +1,90 @@
1
+ import type { SelectVariant } from './Select.base';
2
+ import type { InputVariant } from '../Input/Input.base';
3
+ import { ICON_SIZES } from '../../../icons/Icon.types';
4
+ import type { UiTheme } from '../../../tokens/theme';
5
+ import type { SizeValue } from '../../../tokens/vocabulary';
6
+
7
+ /**
8
+ * THE NUMBERS BOTH `Select` RENDERERS DRAW WITH.
9
+ *
10
+ * A `Select` on the web IS an `OutlinedInput` with a display slot and an arrow
11
+ * where the value would be typed, so the box's own numbers — the padding, the
12
+ * border, the radius, the field edge — are `Input.metrics.ts`'s, read through
13
+ * {@link inputVariantFor} rather than restated. What is here is what a select
14
+ * has and a text field does not: the arrow, the option list, and the two
15
+ * heights MUI's `FormControl` offers.
16
+ */
17
+
18
+ /** Our three variants onto the `Input` variant that draws the same box. */
19
+ export const inputVariantFor = (variant: SelectVariant): InputVariant =>
20
+ variant === 'default' ? 'outlined' : variant;
21
+
22
+ /**
23
+ * The house scale as a `FormControl` size.
24
+ *
25
+ * Not `muiSize`: that collapses five onto MUI's three, and a FormControl takes
26
+ * only two — `sm` draws small and EVERY other step, `xs` included, draws
27
+ * medium. Restated from `Select.tsx`'s `formControlSize` so the native side
28
+ * reads the same lossy map rather than inventing a kinder one.
29
+ */
30
+ export const selectInputSize = (size: SizeValue | undefined): 'sm' | 'md' =>
31
+ size === 'sm' ? 'sm' : 'md';
32
+
33
+ /**
34
+ * The arrow: MUI's `ArrowDropDown` at `SvgIcon`'s medium size, 7px from the
35
+ * right edge, turned over while the list is open. The display slot reserves
36
+ * 32px for it, so the flow-laid glyph takes the difference as a margin.
37
+ */
38
+ export const SELECT_ICON = {
39
+ size: ICON_SIZES.md,
40
+ right: 7,
41
+ displayPaddingRight: 32,
42
+ openRotateDeg: 180,
43
+ } as const;
44
+
45
+ /** What the glyph leaves between itself and the value: 32 - 24 - 7. */
46
+ export const SELECT_ICON_GAP =
47
+ SELECT_ICON.displayPaddingRight - SELECT_ICON.size - SELECT_ICON.right;
48
+
49
+ /** `.MuiSelect-select`'s floor, MUI's `1.4375em` at the 16px body size. */
50
+ export const SELECT_DISPLAY_MIN_HEIGHT = 23;
51
+
52
+ /**
53
+ * The option list: MUI's `Menu` over a `MenuList` of `MenuItem`s.
54
+ *
55
+ * `selectedAlpha` is `palette.action.selectedOpacity`, which MUI doubles in
56
+ * dark mode; `disabledOpacity` is `palette.action.disabledOpacity`. Neither is
57
+ * on `UiTheme`, whose `action` carries colours rather than opacities.
58
+ */
59
+ export const SELECT_MENU = {
60
+ itemMinHeight: 48,
61
+ itemPaddingVertical: 6,
62
+ itemPaddingHorizontal: 16,
63
+ listPaddingVertical: 8,
64
+ selectedAlpha: { light: 0.08, dark: 0.16 },
65
+ disabledOpacity: 0.38,
66
+ /** MUI's `Menu` paper is `calc(100% - 96px)` tall at most. */
67
+ maxHeightInset: 96,
68
+ } as const;
69
+
70
+ /** MUI's `theme.shadows[8]`, the elevation a `Menu` paper rests at. */
71
+ export const MUI_MENU_SHADOW =
72
+ '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)';
73
+
74
+ /** The wash behind the option the value currently names. */
75
+ export const selectedWashAlpha = (theme: UiTheme): number =>
76
+ theme.mode === 'dark' ? SELECT_MENU.selectedAlpha.dark : SELECT_MENU.selectedAlpha.light;
77
+
78
+ /**
79
+ * The box a select draws IS the input's box, so these are the input's tables
80
+ * under this component's names — the border widths, the glass and gradient
81
+ * alphas, the halo and the pulse. Restating them here is how the two controls
82
+ * would come to disagree about what an outlined field looks like.
83
+ */
84
+ export {
85
+ INPUT_BORDER as SELECT_BORDER,
86
+ INPUT_GLASS as SELECT_GLASS,
87
+ INPUT_GLOW as SELECT_GLOW,
88
+ INPUT_GRADIENT as SELECT_GRADIENT,
89
+ INPUT_PULSE as SELECT_PULSE,
90
+ } from '../Input/Input.metrics';
@@ -0,0 +1,264 @@
1
+ import * as React from 'react';
2
+ import {
3
+ Platform,
4
+ Pressable,
5
+ ScrollView,
6
+ StyleSheet,
7
+ Text as RNText,
8
+ View,
9
+ useWindowDimensions,
10
+ type ViewStyle,
11
+ } from 'react-native';
12
+
13
+ import {
14
+ displayLabel,
15
+ resolveSelectProps,
16
+ selectItems,
17
+ selectTestIds,
18
+ type SelectItem,
19
+ } from './Select.helpers';
20
+ import { menuStyle, optionStyle, optionTextStyle, selectLook, type SelectLook } from './Select.look.native';
21
+ import {
22
+ SELECT_GLOW,
23
+ SELECT_ICON,
24
+ SELECT_MENU,
25
+ SELECT_PULSE,
26
+ inputVariantFor,
27
+ selectInputSize,
28
+ } from './Select.metrics';
29
+ import type { SelectProps, SelectValue } from './Select.types.native';
30
+ import { Icon } from '../../../icons/Icon.native';
31
+ import { webAria, webKeyDown, webRole, type WebKeyEvent } from '../../../platform/aria';
32
+ import { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';
33
+ import { useUiTheme } from '../../../provider/use-ui-theme.native';
34
+ import { FieldPulse } from '../field-pulse.native';
35
+ import { helperStyle, labelStyle, type FieldState } from '../Input/Input.look.native';
36
+
37
+ /** MUI's halo on the outlined input, painted as a shadow. */
38
+ function glowStyle(color: string): ViewStyle {
39
+ return Platform.select<ViewStyle>({
40
+ android: { elevation: SELECT_GLOW.rest.blur / 2 },
41
+ default: {
42
+ shadowColor: color,
43
+ shadowOpacity: SELECT_GLOW.rest.alpha,
44
+ shadowRadius: SELECT_GLOW.rest.blur,
45
+ shadowOffset: { width: 0, height: 0 },
46
+ },
47
+ });
48
+ }
49
+
50
+ interface MenuProps {
51
+ items: SelectItem[];
52
+ value: SelectValue;
53
+ testIdFor: (value: SelectValue) => string;
54
+ onPick: (item: SelectItem) => void;
55
+ }
56
+
57
+ /** The option list: MUI's `Menu`, under the field rather than portalled over it. */
58
+ function SelectMenu({ items, value, testIdFor, onPick }: MenuProps): React.JSX.Element {
59
+ const theme = useUiTheme();
60
+ const { height } = useWindowDimensions();
61
+ const textStyle = optionTextStyle(theme);
62
+
63
+ return (
64
+ <View style={menuStyle(theme, height - SELECT_MENU.maxHeightInset)} {...webRole('listbox')}>
65
+ <ScrollView>
66
+ {items.map((item) => {
67
+ const selected = String(item.value) === String(value);
68
+ return (
69
+ <Pressable
70
+ key={`${item.placeholder ? 'placeholder' : 'option'}-${item.value}`}
71
+ role="option"
72
+ aria-selected={selected}
73
+ aria-disabled={item.disabled}
74
+ disabled={item.disabled}
75
+ testID={item.placeholder ? undefined : testIdFor(item.value)}
76
+ onPress={() => onPick(item)}
77
+ style={optionStyle(theme, selected, item.disabled)}
78
+ >
79
+ <RNText style={textStyle}>{item.label}</RNText>
80
+ </Pressable>
81
+ );
82
+ })}
83
+ </ScrollView>
84
+ </View>
85
+ );
86
+ }
87
+
88
+ interface TriggerProps {
89
+ testID: string;
90
+ look: SelectLook;
91
+ open: boolean;
92
+ disabled: boolean;
93
+ error: boolean;
94
+ glow: boolean;
95
+ display: string;
96
+ labelId?: string;
97
+ helperId?: string;
98
+ onToggle: () => void;
99
+ onKey: (event: WebKeyEvent) => void;
100
+ }
101
+
102
+ /**
103
+ * The field itself: MUI's display slot and its arrow, under one `combobox`.
104
+ *
105
+ * `tabIndex` is spelled out because react-native-web only makes a handful of
106
+ * roles focusable on its own, and `combobox` is not one of them — without it
107
+ * the control would not be a tab stop. It goes to -1 when disabled, which is
108
+ * what the web does by leaving the attribute off a disabled field entirely.
109
+ */
110
+ function SelectTrigger(props: TriggerProps): React.JSX.Element {
111
+ const theme = useUiTheme();
112
+ const { testID, look, open, disabled, error, glow, display, labelId, helperId } = props;
113
+
114
+ return (
115
+ <Pressable
116
+ testID={testID}
117
+ role="combobox"
118
+ tabIndex={disabled ? -1 : 0}
119
+ aria-expanded={open}
120
+ aria-disabled={disabled}
121
+ disabled={disabled}
122
+ onPress={props.onToggle}
123
+ style={[look.box, glow ? glowStyle(theme.palette.primary.main) : null]}
124
+ {...webAria({
125
+ 'aria-haspopup': 'listbox',
126
+ 'aria-invalid': error,
127
+ ...(labelId === undefined ? {} : { 'aria-labelledby': labelId }),
128
+ ...(helperId === undefined ? {} : { 'aria-describedby': helperId }),
129
+ })}
130
+ {...webKeyDown(props.onKey)}
131
+ >
132
+ <RNText style={look.display} numberOfLines={1}>
133
+ {display}
134
+ </RNText>
135
+ <Icon
136
+ name="ArrowDropDown"
137
+ size={SELECT_ICON.size}
138
+ color={disabled ? theme.palette.action.disabled : theme.palette.action.active}
139
+ testID={`${testID}-icon`}
140
+ style={[
141
+ { marginLeft: look.iconGap },
142
+ open ? { transform: [{ rotate: `${SELECT_ICON.openRotateDeg}deg` }] } : null,
143
+ ]}
144
+ />
145
+ </Pressable>
146
+ );
147
+ }
148
+
149
+ /** The value the control shows, controlled by the caller or held here. */
150
+ function useSelectValue(
151
+ value: SelectValue | undefined,
152
+ defaultValue: SelectValue | undefined,
153
+ ): [SelectValue, (next: SelectValue) => void] {
154
+ const [own, setOwn] = React.useState<SelectValue>(defaultValue ?? '');
155
+ return [value ?? own, setOwn];
156
+ }
157
+
158
+ /**
159
+ * The native `Select`.
160
+ *
161
+ * The list is an absolutely positioned panel under the field rather than a
162
+ * portal over the screen: React Native's `Modal` traps focus, which is right
163
+ * for a dialog and wrong for a dropdown — and wrong for the shared stories,
164
+ * which expect the trigger to keep focus while the list is open. The trade is
165
+ * recorded in `NATIVE-NOTES.md`.
166
+ */
167
+ export const Select = React.forwardRef<View, SelectProps>((rawProps, ref) => {
168
+ const {
169
+ variant, options, label, helperText, fullWidth, size, placeholder, error, glow, pulse,
170
+ disabled, value, defaultValue, onChange, onOpen, onClose, style, ...others
171
+ } = resolveSelectProps(rawProps);
172
+
173
+ const theme = useUiTheme();
174
+ const [open, setOpen] = React.useState(false);
175
+ const [current, setCurrent] = useSelectValue(value, defaultValue);
176
+ const labelId = React.useId();
177
+ const helperId = React.useId();
178
+
179
+ const items = selectItems(options, placeholder);
180
+ const ids = selectTestIds(resolveTestId(others));
181
+ const state: FieldState = { focused: open && !disabled, error, disabled };
182
+ const look = selectLook(theme, variant, size, state);
183
+
184
+ const setOpenState = (next: boolean): void => {
185
+ if (next === open) return;
186
+ setOpen(next);
187
+ (next ? onOpen : onClose)?.();
188
+ };
189
+
190
+ const handleKey = (event: WebKeyEvent): void => {
191
+ if (event.key === 'Escape') setOpenState(false);
192
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') setOpenState(true);
193
+ };
194
+
195
+ const pick = (item: SelectItem): void => {
196
+ setOpenState(false);
197
+ if (item.option === undefined) return;
198
+ setCurrent(item.value);
199
+ onChange?.({ target: { value: item.value } }, item.option);
200
+ };
201
+
202
+ return (
203
+ <View
204
+ ref={ref}
205
+ testID={ids.root}
206
+ style={[styles.root, fullWidth ? styles.fullWidth : styles.auto, style]}
207
+ {...withoutTestIdProps(others)}
208
+ >
209
+ {pulse ? (
210
+ <FieldPulse
211
+ color={theme.palette.primary.main}
212
+ radius={theme.spacing(SELECT_PULSE.radiusUnits)}
213
+ testID={`${ids.trigger}-pulse`}
214
+ />
215
+ ) : null}
216
+ {label === undefined ? null : (
217
+ <RNText id={labelId} style={labelStyle(theme, inputVariantFor(variant), size, state)}>
218
+ {label}
219
+ </RNText>
220
+ )}
221
+ <View style={[styles.anchor, open ? { zIndex: theme.zIndex.modal } : null]}>
222
+ <SelectTrigger
223
+ testID={ids.trigger}
224
+ look={look}
225
+ open={open}
226
+ disabled={disabled}
227
+ error={error}
228
+ glow={glow}
229
+ display={displayLabel(items, current)}
230
+ labelId={label === undefined ? undefined : labelId}
231
+ helperId={helperText === undefined ? undefined : helperId}
232
+ onToggle={() => setOpenState(!open)}
233
+ onKey={handleKey}
234
+ />
235
+ {open ? (
236
+ <SelectMenu items={items} value={current} testIdFor={ids.option} onPick={pick} />
237
+ ) : null}
238
+ </View>
239
+ {helperText === undefined ? null : (
240
+ <RNText id={helperId} style={helperStyle(theme, inputVariantFor(variant), selectInputSize(size), state)}>
241
+ {helperText}
242
+ </RNText>
243
+ )}
244
+ </View>
245
+ );
246
+ });
247
+
248
+ Select.displayName = 'Select';
249
+
250
+ const styles = StyleSheet.create({
251
+ root: {
252
+ position: 'relative',
253
+ },
254
+ anchor: {
255
+ position: 'relative',
256
+ },
257
+ fullWidth: {
258
+ alignSelf: 'stretch',
259
+ width: '100%',
260
+ },
261
+ auto: {
262
+ alignSelf: 'flex-start',
263
+ },
264
+ });