@12-apps/ui 6.39.20 → 6.41.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 (923) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +43 -5
  3. package/components-guidelines.md +110 -0
  4. package/dist/_internal/components/data-display/Alert/Alert.js +3 -2
  5. package/dist/_internal/components/data-display/Alert/Alert.metrics.js +3 -2
  6. package/dist/_internal/components/data-display/Alert/Alert.styles.js +3 -2
  7. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  8. package/dist/_internal/components/data-display/Avatar/Avatar.js +3 -3
  9. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  10. package/dist/_internal/components/data-display/Badge/Badge.js +10 -8
  11. package/dist/_internal/components/data-display/Badge/Badge.styles.js +8 -6
  12. package/dist/_internal/components/data-display/Badge/BadgeContent.js +9 -7
  13. package/dist/_internal/components/data-display/Banner/Banner.js +3 -2
  14. package/dist/_internal/components/data-display/Banner/Banner.styles.js +3 -2
  15. package/dist/_internal/components/data-display/CardKit/CardKebab.js +9 -8
  16. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -2
  17. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +13 -12
  18. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +13 -12
  19. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +9 -7
  20. package/dist/_internal/components/data-display/Carousel/Carousel.js +13 -11
  21. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +8 -6
  22. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +8 -6
  23. package/dist/_internal/components/data-display/Chart/Chart.js +12 -10
  24. package/dist/_internal/components/data-display/Chart/SpecChart.js +15 -13
  25. package/dist/_internal/components/data-display/Chart/chart-context.js +9 -7
  26. package/dist/_internal/components/data-display/Chart/chart-internals.js +8 -6
  27. package/dist/_internal/components/data-display/Chart/chart-renderers.js +11 -9
  28. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  29. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
  30. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +6 -5
  31. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +70 -69
  32. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +87 -86
  33. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +13 -12
  34. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +17 -16
  35. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +17 -16
  36. package/dist/_internal/components/data-display/DataViews/base-card.js +7 -6
  37. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +11 -10
  38. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +10 -9
  39. package/dist/_internal/components/data-display/DataViews/base-list-card.js +15 -14
  40. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +4 -4
  41. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +20 -20
  42. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +6 -5
  43. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +10 -9
  44. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +4 -4
  45. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +16 -15
  46. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +8 -7
  47. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +11 -10
  48. package/dist/_internal/components/data-display/DataViews/data-views-export.js +11 -10
  49. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +26 -26
  50. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +20 -19
  51. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +9 -8
  52. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +66 -65
  53. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +6 -5
  54. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +37 -36
  55. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +2 -2
  56. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +20 -19
  57. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +24 -23
  58. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +4 -4
  59. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +6 -6
  60. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +8 -8
  61. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +3 -3
  62. package/dist/_internal/components/data-display/DataViews/data-views-search.js +4 -4
  63. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +11 -10
  64. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +27 -26
  65. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +30 -29
  66. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +26 -25
  67. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +11 -10
  68. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +3 -3
  69. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +6 -5
  70. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +13 -12
  71. package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +3 -3
  72. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +6 -5
  73. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  74. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +15 -15
  75. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +14 -14
  76. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  77. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +23 -21
  78. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  79. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +6 -6
  80. package/dist/_internal/components/data-display/MapPreview/MapDecorations.js +2 -2
  81. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +5 -5
  82. package/dist/_internal/components/data-display/MapPreview/MapPreview.hooks.js +2 -2
  83. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +13 -13
  84. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +4 -4
  85. package/dist/_internal/components/data-display/MapPreview/MapTiles.js +2 -2
  86. package/dist/_internal/components/data-display/MapPreview/StaticMapView.js +4 -4
  87. package/dist/_internal/components/data-display/MapPreview/useMapPreview.js +3 -3
  88. package/dist/_internal/components/data-display/Progress/Progress.js +6 -5
  89. package/dist/_internal/components/data-display/Progress/Progress.metrics.js +4 -3
  90. package/dist/_internal/components/data-display/Progress/Progress.styles.js +5 -4
  91. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
  92. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +7 -5
  93. package/dist/_internal/components/data-display/Sheet/Sheet.js +9 -7
  94. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +8 -6
  95. package/dist/_internal/components/data-display/Table/Table.js +5 -5
  96. package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
  97. package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
  98. package/dist/_internal/components/data-display/index.js +77 -75
  99. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +2 -2
  100. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +11 -10
  101. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +2 -2
  102. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  103. package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
  104. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +9 -8
  105. package/dist/_internal/components/feedback/index.js +19 -18
  106. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +10 -10
  107. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +7 -7
  108. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +5 -5
  109. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +5 -5
  110. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +4 -4
  111. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +5 -5
  112. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +4 -4
  113. package/dist/_internal/components/form/Button/Button.js +8 -7
  114. package/dist/_internal/components/form/Button/Button.styles.js +6 -5
  115. package/dist/_internal/components/form/Calendar/Calendar.js +4 -4
  116. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  117. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  118. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +10 -10
  119. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +5 -5
  120. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +5 -5
  121. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +7 -7
  122. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +6 -6
  123. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +12 -12
  124. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +4 -4
  125. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +5 -5
  126. package/dist/_internal/components/form/CepField/CepField.js +7 -7
  127. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +3 -3
  128. package/dist/_internal/components/form/Command/Command.js +9 -7
  129. package/dist/_internal/components/form/Command/Command.styles.js +8 -6
  130. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +4 -4
  131. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +6 -6
  132. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +13 -13
  133. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +5 -5
  134. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +6 -6
  135. package/dist/_internal/components/form/Input/Input.js +6 -6
  136. package/dist/_internal/components/form/Input/Input.metrics.js +2 -2
  137. package/dist/_internal/components/form/Input/Input.styles.js +5 -5
  138. package/dist/_internal/components/form/InputOTP/InputOTP.js +5 -5
  139. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +4 -4
  140. package/dist/_internal/components/form/Label/Label.js +9 -7
  141. package/dist/_internal/components/form/Label/Label.styles.js +8 -6
  142. package/dist/_internal/components/form/Menubar/Menubar.item.js +9 -7
  143. package/dist/_internal/components/form/Menubar/Menubar.js +11 -9
  144. package/dist/_internal/components/form/Menubar/Menubar.styles.js +8 -6
  145. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +10 -8
  146. package/dist/_internal/components/form/NumberField/NumberField.helpers.js +20 -0
  147. package/dist/_internal/components/form/NumberField/NumberField.js +28 -0
  148. package/dist/_internal/components/form/NumberField/NumberField.types.js +1 -0
  149. package/dist/_internal/components/form/NumberField/NumberField.types.js.map +1 -0
  150. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +4 -4
  151. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +6 -6
  152. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +4 -4
  153. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +5 -5
  154. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  155. package/dist/_internal/components/form/Select/Select.js +5 -5
  156. package/dist/_internal/components/form/Select/Select.metrics.js +2 -2
  157. package/dist/_internal/components/form/Switch/Switch.js +3 -2
  158. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -2
  159. package/dist/_internal/components/form/Switch/Switch.styles.js +3 -2
  160. package/dist/_internal/components/form/Textarea/Textarea.js +4 -4
  161. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +5 -5
  162. package/dist/_internal/components/form/Toggle/Toggle.js +5 -5
  163. package/dist/_internal/components/form/Toggle/Toggle.styles.js +4 -4
  164. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +4 -4
  165. package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
  166. package/dist/_internal/components/form/index.js +72 -64
  167. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +13 -13
  168. package/dist/_internal/components/form/total-form/Fields/CepField.js +8 -8
  169. package/dist/_internal/components/form/total-form/Fields/SelectField.js +6 -6
  170. package/dist/_internal/components/form/total-form/Fields/TextField.js +7 -7
  171. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +5 -5
  172. package/dist/_internal/components/form/total-form/Fields/index.js +27 -27
  173. package/dist/_internal/components/form/total-form/SubmitButton.js +9 -8
  174. package/dist/_internal/components/index.js +244 -203
  175. package/dist/_internal/components/layout/Box/Box.js +10 -8
  176. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +4 -4
  177. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +4 -4
  178. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +5 -5
  179. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +4 -4
  180. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +4 -4
  181. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +4 -4
  182. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +4 -4
  183. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  184. package/dist/_internal/components/layout/Separator/Separator.js +3 -3
  185. package/dist/_internal/components/layout/Separator/Separator.styles.js +2 -2
  186. package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js +19 -0
  187. package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js.map +1 -0
  188. package/dist/_internal/components/layout/SettingCard/SettingCard.js +54 -0
  189. package/dist/_internal/components/layout/SettingCard/SettingCard.js.map +1 -0
  190. package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js +12 -0
  191. package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js.map +1 -0
  192. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +59 -0
  193. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js.map +1 -0
  194. package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js +37 -0
  195. package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js.map +1 -0
  196. package/dist/_internal/components/layout/SettingCard/SettingCard.types.js +1 -0
  197. package/dist/_internal/components/layout/SettingCard/SettingCard.types.js.map +1 -0
  198. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +56 -0
  199. package/dist/_internal/components/layout/SettingCard/SettingGrid.js.map +1 -0
  200. package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js +10 -0
  201. package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js.map +1 -0
  202. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +65 -0
  203. package/dist/_internal/components/layout/SettingCard/SettingGroup.js.map +1 -0
  204. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +63 -0
  205. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js.map +1 -0
  206. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +65 -0
  207. package/dist/_internal/components/layout/SettingCard/SettingToggle.js.map +1 -0
  208. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +6 -6
  209. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +4 -4
  210. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
  211. package/dist/_internal/components/layout/Stack/Stack.js +11 -9
  212. package/dist/_internal/components/layout/TableFilter/TableFilter.js +4 -4
  213. package/dist/_internal/components/layout/index.js +87 -25
  214. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +15 -13
  215. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +8 -6
  216. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +3 -3
  217. package/dist/_internal/components/navigation/Pagination/Pagination.js +5 -5
  218. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +4 -4
  219. package/dist/_internal/components/navigation/Tabs/Tabs.js +5 -5
  220. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +4 -4
  221. package/dist/_internal/components/navigation/index.js +33 -31
  222. package/dist/_internal/components/typography/Heading/Heading.js +6 -5
  223. package/dist/_internal/components/typography/Heading/Heading.metrics.js +4 -3
  224. package/dist/_internal/components/typography/Heading/Heading.styles.js +5 -4
  225. package/dist/_internal/components/typography/Text/Text.js +5 -4
  226. package/dist/_internal/components/typography/Text/Text.metrics.js +4 -3
  227. package/dist/_internal/components/typography/index.js +12 -11
  228. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  229. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +7 -5
  230. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +7 -5
  231. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +7 -5
  232. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +7 -5
  233. package/dist/_internal/components/utility/index.js +20 -18
  234. package/dist/_internal/en-US.data-display.js +2 -2
  235. package/dist/_internal/en-US.layout.js +5 -1
  236. package/dist/_internal/icons/Icon.js +10 -8
  237. package/dist/_internal/provider/UiProvider.js +9 -7
  238. package/dist/_internal/provider/mui-bridge.js +8 -6
  239. package/dist/_internal/provider/use-ui-theme.js +9 -7
  240. package/dist/_internal/pt-BR.data-display.js +2 -2
  241. package/dist/_internal/pt-BR.layout.js +5 -1
  242. package/dist/_internal/social-login-button/social-login-button.js +16 -15
  243. package/dist/_internal/tokens/density.core.js +18 -0
  244. package/dist/_internal/tokens/density.core.js.map +1 -0
  245. package/dist/_internal/tokens/density.js +31 -0
  246. package/dist/_internal/tokens/density.js.map +1 -0
  247. package/dist/_internal/tokens/field-height.core.js +1 -1
  248. package/dist/_internal/tokens/field-height.js +7 -5
  249. package/dist/_internal/tokens/theme.js +3 -2
  250. package/dist/_internal/user-avatar/user-avatar.js +14 -13
  251. package/dist/charts.js +24 -22
  252. package/dist/chunk-2GTORM5E.js +1 -0
  253. package/dist/chunk-2GTORM5E.js.map +1 -0
  254. package/dist/{chunk-DFCQQN6P.js → chunk-2LKWJV65.js} +5 -5
  255. package/dist/{chunk-HVXIOIM5.js → chunk-2MLS6KU4.js} +2 -2
  256. package/dist/{chunk-IIUB4IOH.js → chunk-2XHIF3M3.js} +4 -4
  257. package/dist/chunk-33L26P4J.js +27 -0
  258. package/dist/chunk-33L26P4J.js.map +1 -0
  259. package/dist/{chunk-IASDP44E.js → chunk-3AOOI2NR.js} +6 -6
  260. package/dist/{chunk-TCV3N44E.js → chunk-3CLBGHTL.js} +2 -2
  261. package/dist/{chunk-KKN4LLVE.js → chunk-3CUWQXTG.js} +3 -3
  262. package/dist/{chunk-QXSW3CNN.js → chunk-3CYTVX4T.js} +5 -5
  263. package/dist/chunk-3DO5AJCG.js +117 -0
  264. package/dist/chunk-3DO5AJCG.js.map +1 -0
  265. package/dist/{chunk-I5ZVCY2N.js → chunk-3EPA2A4M.js} +8 -8
  266. package/dist/{chunk-DRSY37PB.js → chunk-3MJHHPRW.js} +2 -2
  267. package/dist/{chunk-NLYNRE7L.js → chunk-3RUCLKAK.js} +4 -4
  268. package/dist/chunk-3U7WKBMH.js +27 -0
  269. package/dist/chunk-3U7WKBMH.js.map +1 -0
  270. package/dist/{chunk-36JKV7CA.js → chunk-3UEZ6NUI.js} +3 -3
  271. package/dist/{chunk-EYZ6QBTV.js → chunk-3XS37SQT.js} +3 -3
  272. package/dist/{chunk-BSUG4KMP.js → chunk-44USLRMT.js} +11 -11
  273. package/dist/{chunk-DJYL2LC6.js → chunk-44Z72DDM.js} +2 -2
  274. package/dist/{chunk-4WCDMCIS.js → chunk-4CHYMTBT.js} +4 -4
  275. package/dist/{chunk-2LIRGFEK.js → chunk-4GN2RLYL.js} +2 -2
  276. package/dist/{chunk-HN3PZTUK.js → chunk-4MKVGSHX.js} +5 -5
  277. package/dist/{chunk-BRM3T4LQ.js → chunk-4S2LWZ7L.js} +5 -5
  278. package/dist/{chunk-OQRG34VG.js → chunk-4SHMSLFA.js} +2 -2
  279. package/dist/{chunk-62UAI62O.js → chunk-4UVFPORR.js} +5 -5
  280. package/dist/{chunk-YTINPQKU.js → chunk-4XHVGUOM.js} +2 -2
  281. package/dist/{chunk-7DK6YVJU.js → chunk-4Z7GEO2R.js} +2 -2
  282. package/dist/{chunk-A2TANYNR.js → chunk-53O2TNSR.js} +6 -6
  283. package/dist/{chunk-T6EKPFKZ.js → chunk-54HTXJJ2.js} +2 -2
  284. package/dist/{chunk-OHZU4IT3.js → chunk-5B7BTLN4.js} +2 -2
  285. package/dist/{chunk-K5V6TCYB.js → chunk-5ETBB2DG.js} +4 -4
  286. package/dist/{chunk-5752357K.js → chunk-5KGABAQB.js} +4 -4
  287. package/dist/{chunk-JKIKHWD2.js → chunk-5NT2M2JI.js} +4 -4
  288. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  289. package/dist/{chunk-7EH4D6FU.js → chunk-6H4TPEMO.js} +2 -2
  290. package/dist/{chunk-WB6ZU3B3.js → chunk-6JGATEOF.js} +6 -6
  291. package/dist/{chunk-TU5A2CV7.js → chunk-6L2FKTBO.js} +7 -7
  292. package/dist/{chunk-ME3WYPYK.js → chunk-6MD5QXXJ.js} +5 -5
  293. package/dist/{chunk-HQZRI7UX.js → chunk-6N2EDWMG.js} +4 -4
  294. package/dist/{chunk-H224XFFD.js → chunk-6REPQ352.js} +2 -2
  295. package/dist/{chunk-YZ2DMP23.js → chunk-6TPYT3UC.js} +5 -5
  296. package/dist/{chunk-I4MRBEWU.js → chunk-6ZD3FI5P.js} +11 -11
  297. package/dist/{chunk-PWZHCBG3.js → chunk-72FPUWD6.js} +2 -2
  298. package/dist/{chunk-VRPREI27.js → chunk-72S2RGWD.js} +2 -2
  299. package/dist/{chunk-OAW6GCS3.js → chunk-77BKKPCI.js} +3 -3
  300. package/dist/{chunk-67O4GPJJ.js → chunk-7FEXRMJE.js} +2 -2
  301. package/dist/{chunk-KN5J3NEZ.js → chunk-7KKMZJFT.js} +2 -2
  302. package/dist/{chunk-KJDBY2KN.js → chunk-7LILFS72.js} +2 -2
  303. package/dist/{chunk-SLDSWQVE.js → chunk-7TE4TMS3.js} +5 -5
  304. package/dist/{chunk-AG3DY5TH.js → chunk-ADSA76T7.js} +2 -2
  305. package/dist/chunk-AEMD6JHZ.js +1 -0
  306. package/dist/chunk-AEMD6JHZ.js.map +1 -0
  307. package/dist/{chunk-BKASAYQL.js → chunk-ALOUJ3CE.js} +8 -8
  308. package/dist/{chunk-VY2BMSHN.js → chunk-ANYOSBNA.js} +2 -2
  309. package/dist/{chunk-LNHYBA4B.js → chunk-AWG2AJHX.js} +5 -5
  310. package/dist/{chunk-7X7ZHJHM.js → chunk-B3QWQG62.js} +2 -2
  311. package/dist/{chunk-2S752BIJ.js → chunk-BA6Z52QN.js} +2 -2
  312. package/dist/{chunk-X4F32GUB.js → chunk-BM4KKGL7.js} +2 -2
  313. package/dist/chunk-BOWS4U6W.js +1 -0
  314. package/dist/chunk-BOWS4U6W.js.map +1 -0
  315. package/dist/{chunk-4T6UIYJB.js → chunk-BVSSEOLI.js} +2 -2
  316. package/dist/{chunk-3UABIEP3.js → chunk-C2TERIB4.js} +2 -2
  317. package/dist/{chunk-TEEJ4GNY.js → chunk-C6OVO6AT.js} +2 -2
  318. package/dist/{chunk-CYZZHWNK.js → chunk-CJ45OL7L.js} +2 -2
  319. package/dist/{chunk-N7LPVR7P.js → chunk-CKHFYTIX.js} +4 -4
  320. package/dist/{chunk-PA3AA55Q.js → chunk-CLK67TNH.js} +2 -2
  321. package/dist/{chunk-MQ277OLB.js → chunk-CM2Q7IH3.js} +5 -5
  322. package/dist/{chunk-ZXSWXE6U.js → chunk-CMFJQH6A.js} +5 -5
  323. package/dist/{chunk-NOKN4HRK.js → chunk-CMLIWUBW.js} +4 -4
  324. package/dist/{chunk-EA2UNEL6.js → chunk-CNR5RFKC.js} +2 -2
  325. package/dist/{chunk-P52LYD6S.js → chunk-DFI2RKVQ.js} +2 -2
  326. package/dist/{chunk-37USSARD.js → chunk-DH5UJD2I.js} +4 -4
  327. package/dist/{chunk-PCLKFR27.js → chunk-DH6SL3SY.js} +8 -8
  328. package/dist/chunk-DJKVSUXH.js +35 -0
  329. package/dist/chunk-DJKVSUXH.js.map +1 -0
  330. package/dist/{chunk-S6JHTEV4.js → chunk-DLWLIPCP.js} +3 -3
  331. package/dist/{chunk-KN4ZE2XZ.js → chunk-EIII4QU4.js} +19 -19
  332. package/dist/{chunk-L566FMDD.js → chunk-EO5IEWFI.js} +6 -6
  333. package/dist/{chunk-VY6L74JQ.js → chunk-EQXIW5MQ.js} +4 -4
  334. package/dist/{chunk-MWPXKZ7O.js → chunk-ERY6D2OV.js} +4 -4
  335. package/dist/{chunk-6PU3JYVY.js → chunk-F3AYISXT.js} +4 -4
  336. package/dist/{chunk-GY4NBSCN.js → chunk-FDMQ7H22.js} +2 -2
  337. package/dist/{chunk-IBGP3VSR.js → chunk-FHW3ATT7.js} +2 -2
  338. package/dist/{chunk-WL6N33AB.js → chunk-FIO55AKI.js} +4 -4
  339. package/dist/{chunk-5CQNBMLK.js → chunk-FTQBVZ7V.js} +4 -4
  340. package/dist/{chunk-J5UZB6Y6.js → chunk-FXWXBEOZ.js} +2 -2
  341. package/dist/{chunk-IGGXKT5B.js → chunk-G2WERTWZ.js} +2 -2
  342. package/dist/{chunk-DF4QODJ6.js → chunk-G4TKMUOL.js} +6 -6
  343. package/dist/{chunk-WY5PBZ7Q.js → chunk-G6ZPQHBL.js} +2 -2
  344. package/dist/{chunk-JYR6VV4Y.js → chunk-G7XHJPLO.js} +5 -5
  345. package/dist/{chunk-IQJCLFF4.js → chunk-GANW7FXQ.js} +2 -2
  346. package/dist/{chunk-3LSIFHQK.js → chunk-GE2CCITY.js} +2 -2
  347. package/dist/{chunk-G3XLFQ2Z.js → chunk-GG62LKA3.js} +6 -6
  348. package/dist/{chunk-YQCRQHVU.js → chunk-GI63FQEJ.js} +4 -4
  349. package/dist/{chunk-7ICK5MXV.js → chunk-GJFAI3J5.js} +10 -10
  350. package/dist/{chunk-2JNHWKQK.js → chunk-GPHURU2K.js} +12 -12
  351. package/dist/{chunk-5FAI25JQ.js → chunk-H72YKEGD.js} +3 -3
  352. package/dist/chunk-HALFOXSZ.js +1 -0
  353. package/dist/chunk-HALFOXSZ.js.map +1 -0
  354. package/dist/{chunk-J3XFUCCR.js → chunk-HKBJZX3C.js} +12 -12
  355. package/dist/{chunk-M4QXG5JP.js → chunk-HQWJUHR4.js} +4 -4
  356. package/dist/chunk-IC7GHPMK.js +22 -0
  357. package/dist/chunk-IC7GHPMK.js.map +1 -0
  358. package/dist/{chunk-4BNV5AAI.js → chunk-ITFFA3H2.js} +3 -3
  359. package/dist/{chunk-RB3X6CEE.js → chunk-IWGW2E35.js} +2 -2
  360. package/dist/{chunk-O25SH2MA.js → chunk-J6KLT7HP.js} +7 -7
  361. package/dist/{chunk-CRG24BGI.js → chunk-JAGAFEZL.js} +2 -2
  362. package/dist/{chunk-RDCHT2WN.js → chunk-JE5GEWTG.js} +5 -5
  363. package/dist/{chunk-FLDLUAHW.js → chunk-JE6GQB5J.js} +4 -4
  364. package/dist/{chunk-N23GCN5U.js → chunk-JFLFZLOA.js} +5 -5
  365. package/dist/{chunk-35443PF6.js → chunk-JIRZ27RI.js} +2 -2
  366. package/dist/{chunk-5MW7OYBM.js → chunk-JSGVYOMN.js} +2 -2
  367. package/dist/{chunk-RNIU447I.js → chunk-JU3FRRO2.js} +2 -2
  368. package/dist/{chunk-WOAXKWAB.js → chunk-K4A3JDYQ.js} +2 -2
  369. package/dist/{chunk-HM2JJNUE.js → chunk-K6LNHHSH.js} +5 -5
  370. package/dist/{chunk-NR5TW4AH.js → chunk-K7MQP2KT.js} +3 -3
  371. package/dist/{chunk-2OWKL4CC.js → chunk-KCDNOMMT.js} +9 -9
  372. package/dist/{chunk-O2DLEAUP.js → chunk-KHOAXZW2.js} +4 -4
  373. package/dist/{chunk-W5TI46QN.js → chunk-KQZGUHYZ.js} +3 -3
  374. package/dist/{chunk-2K7WPHI3.js → chunk-KW3H5FUS.js} +2 -2
  375. package/dist/{chunk-7D2C4LK2.js → chunk-LCWGNDTH.js} +4 -4
  376. package/dist/{chunk-FNRPQE2D.js → chunk-LF3EVXMF.js} +2 -2
  377. package/dist/{chunk-MCJRHF7Z.js → chunk-LGCRL7DK.js} +10 -10
  378. package/dist/{chunk-JK5UJM4Y.js → chunk-LODMNSLR.js} +9 -9
  379. package/dist/{chunk-CGO452DC.js → chunk-M47ZOUGF.js} +13 -10
  380. package/dist/{chunk-CGO452DC.js.map → chunk-M47ZOUGF.js.map} +1 -1
  381. package/dist/{chunk-YUXDVW62.js → chunk-M65ZNPLO.js} +2 -2
  382. package/dist/{chunk-URHX4FAQ.js → chunk-MKLIMY3D.js} +2 -2
  383. package/dist/{chunk-2FM5SUQV.js → chunk-MM5XSAVE.js} +2 -2
  384. package/dist/{chunk-LXT3X33C.js → chunk-NCB4GBRL.js} +2 -2
  385. package/dist/{chunk-FNO5TWBJ.js → chunk-NCEQWEXT.js} +4 -4
  386. package/dist/{chunk-FWPFCK4D.js → chunk-NDHDBOUH.js} +4 -4
  387. package/dist/{chunk-WRCLYSTX.js → chunk-NFGIA2ZV.js} +2 -2
  388. package/dist/{chunk-VPPIODKX.js → chunk-NQ7NMCRI.js} +2 -2
  389. package/dist/{chunk-YMTZN54Q.js → chunk-NRSVI23L.js} +2 -2
  390. package/dist/{chunk-2622YFM6.js → chunk-NSVSC6ZC.js} +6 -6
  391. package/dist/{chunk-Z43N7ASP.js → chunk-NU55QUMO.js} +2 -2
  392. package/dist/{chunk-66O55OZI.js → chunk-NYFGFELX.js} +2 -2
  393. package/dist/{chunk-PZBK3F52.js → chunk-O6MJWHU5.js} +3 -3
  394. package/dist/chunk-O6MJWHU5.js.map +1 -0
  395. package/dist/chunk-OJUORFGO.js +87 -0
  396. package/dist/chunk-OJUORFGO.js.map +1 -0
  397. package/dist/{chunk-JXECOCNA.js → chunk-P6Q2O3TU.js} +2 -2
  398. package/dist/{chunk-RTEY5COP.js → chunk-PAICZOL5.js} +4 -4
  399. package/dist/{chunk-ZN6YATOG.js → chunk-PAT2BQOQ.js} +2 -2
  400. package/dist/chunk-PEOOCQ2T.js +140 -0
  401. package/dist/chunk-PEOOCQ2T.js.map +1 -0
  402. package/dist/chunk-PGGGKYWG.js +1 -0
  403. package/dist/chunk-PGGGKYWG.js.map +1 -0
  404. package/dist/{chunk-TZBOWSAM.js → chunk-PICOOZLX.js} +6 -6
  405. package/dist/{chunk-JJJM75XF.js → chunk-PNDYAIKM.js} +2 -2
  406. package/dist/{chunk-EJYJLVPK.js → chunk-PRLYYKMG.js} +3 -3
  407. package/dist/{chunk-4GB46HLK.js → chunk-PTONBPZL.js} +2 -2
  408. package/dist/chunk-Q4JWWTL4.js +36 -0
  409. package/dist/chunk-Q4JWWTL4.js.map +1 -0
  410. package/dist/{chunk-FNG33MKA.js → chunk-QDELBNL3.js} +2 -2
  411. package/dist/{chunk-DSF4VT7L.js → chunk-QEI5DC6S.js} +6 -6
  412. package/dist/chunk-QGUNUXTT.js +1 -0
  413. package/dist/chunk-QGUNUXTT.js.map +1 -0
  414. package/dist/{chunk-VJ2BNJ5M.js → chunk-QMELMQPA.js} +4 -4
  415. package/dist/{chunk-HDJQDMHB.js → chunk-QMHS6ZDI.js} +2 -2
  416. package/dist/{chunk-2WVHZIWP.js → chunk-QSRZOXQI.js} +2 -2
  417. package/dist/{chunk-C3LZ3OGJ.js → chunk-R2FUQV24.js} +2 -2
  418. package/dist/{chunk-GOWBYHYW.js → chunk-R6SBP5M5.js} +4 -4
  419. package/dist/{chunk-HWSS6C7C.js → chunk-RDFPM2AQ.js} +8 -8
  420. package/dist/chunk-RDZGXJOD.js +74 -0
  421. package/dist/chunk-RDZGXJOD.js.map +1 -0
  422. package/dist/chunk-RN7UJI7S.js +1 -0
  423. package/dist/chunk-RN7UJI7S.js.map +1 -0
  424. package/dist/chunk-RPBGUWNF.js +168 -0
  425. package/dist/chunk-RPBGUWNF.js.map +1 -0
  426. package/dist/{chunk-4RPFI474.js → chunk-RSDYS5B3.js} +6 -6
  427. package/dist/{chunk-X53F33KA.js → chunk-RWXYND4H.js} +2 -2
  428. package/dist/{chunk-4NPPO63U.js → chunk-RZ2VZ7SL.js} +5 -5
  429. package/dist/{chunk-ORRI6FMN.js → chunk-S4IXC2V3.js} +3 -3
  430. package/dist/chunk-SALQ65SM.js +118 -0
  431. package/dist/chunk-SALQ65SM.js.map +1 -0
  432. package/dist/{chunk-MXCIUKTQ.js → chunk-SDBBJ6FG.js} +4 -4
  433. package/dist/{chunk-JRJCBDGN.js → chunk-SDKOOVEX.js} +6 -4
  434. package/dist/{chunk-JRJCBDGN.js.map → chunk-SDKOOVEX.js.map} +1 -1
  435. package/dist/{chunk-UMNXSQ7I.js → chunk-SNBAMWI5.js} +2 -2
  436. package/dist/{chunk-LP3JCXER.js → chunk-SNW5MJ6I.js} +2 -2
  437. package/dist/{chunk-5OBGW3FG.js → chunk-STTULW2K.js} +2 -2
  438. package/dist/{chunk-3CTQZDSD.js → chunk-TCNTIGMY.js} +4 -4
  439. package/dist/{chunk-Y6C4MYZE.js → chunk-TNQDSTIA.js} +7 -7
  440. package/dist/{chunk-6RLCBNDV.js → chunk-TPVSHO75.js} +7 -7
  441. package/dist/{chunk-BUPDBEBA.js → chunk-TTJTMDLI.js} +2 -2
  442. package/dist/{chunk-TU5EIKJA.js → chunk-U5SH3VRJ.js} +4 -4
  443. package/dist/chunk-U67ZQ6VM.js +82 -0
  444. package/dist/chunk-U67ZQ6VM.js.map +1 -0
  445. package/dist/{chunk-MLQYIJTO.js → chunk-U6W2RY3Z.js} +5 -5
  446. package/dist/{chunk-4WF6ZLIW.js → chunk-UGPRBJWB.js} +8 -8
  447. package/dist/chunk-VBP46YP4.js +42 -0
  448. package/dist/chunk-VBP46YP4.js.map +1 -0
  449. package/dist/{chunk-Y6G4I42P.js → chunk-VEEG4UXZ.js} +2 -2
  450. package/dist/{chunk-IRD45DRW.js → chunk-VOJBLBXE.js} +3 -3
  451. package/dist/{chunk-KHPL2J3B.js → chunk-VPAOVEI2.js} +3 -3
  452. package/dist/{chunk-DYGWKZ7T.js → chunk-VWJEM2ER.js} +3 -3
  453. package/dist/{chunk-FERUQ7OB.js → chunk-VYA4QWQL.js} +2 -2
  454. package/dist/chunk-VYM2GPR6.js +47 -0
  455. package/dist/chunk-VYM2GPR6.js.map +1 -0
  456. package/dist/{chunk-UKX3MPB7.js → chunk-VYV3JOV5.js} +2 -2
  457. package/dist/{chunk-B7CNP5HW.js → chunk-WV62BSWA.js} +2 -2
  458. package/dist/chunk-X3C3VTYS.js +85 -0
  459. package/dist/chunk-X3C3VTYS.js.map +1 -0
  460. package/dist/{chunk-IWEUSZY3.js → chunk-X66E5WSX.js} +3 -3
  461. package/dist/{chunk-OJ2XR3WH.js → chunk-XB7HYOMM.js} +2 -2
  462. package/dist/{chunk-H6AWKLOV.js → chunk-XBLFK2FL.js} +2 -2
  463. package/dist/{chunk-5HDYTTE7.js → chunk-XHA2NXLD.js} +2 -2
  464. package/dist/chunk-XJQNSMGA.js +10 -0
  465. package/dist/chunk-XJQNSMGA.js.map +1 -0
  466. package/dist/{chunk-F4KYBBTY.js → chunk-XLXMJ6X2.js} +3 -3
  467. package/dist/{chunk-SCZABICW.js → chunk-XO4ZUHVH.js} +2 -2
  468. package/dist/{chunk-PARTZ7XI.js → chunk-XP522FFM.js} +2 -2
  469. package/dist/{chunk-MBHWVRV5.js → chunk-XVZG52CM.js} +8 -8
  470. package/dist/{chunk-TGXCG62P.js → chunk-XXL4PM4M.js} +2 -2
  471. package/dist/{chunk-YKEO6UHN.js → chunk-XZJM6EPC.js} +4 -4
  472. package/dist/{chunk-YTY7TD7S.js → chunk-XZY7O7JJ.js} +5 -5
  473. package/dist/{chunk-WZNTZX5N.js → chunk-Y2UXX5IQ.js} +4 -4
  474. package/dist/{chunk-BLW6KLDR.js → chunk-YFODI4KT.js} +11 -4
  475. package/dist/chunk-YFODI4KT.js.map +1 -0
  476. package/dist/{chunk-QOLIBVGS.js → chunk-YGYQC7MT.js} +4 -4
  477. package/dist/{chunk-THMT3G3L.js → chunk-YLXQWYOG.js} +7 -7
  478. package/dist/{chunk-M4KVKQRN.js → chunk-YPIVLPXF.js} +3 -3
  479. package/dist/{chunk-57FZM6GH.js → chunk-YRUX7XMQ.js} +2 -2
  480. package/dist/{chunk-M2Q5CLPU.js → chunk-YTXZUTLF.js} +4 -4
  481. package/dist/{chunk-ZWCYSAI5.js → chunk-YWJDUJAR.js} +4 -4
  482. package/dist/{chunk-S36NC22G.js → chunk-Z2NN53E5.js} +2 -2
  483. package/dist/{chunk-GC56IWIZ.js → chunk-Z4DKVLYG.js} +9 -9
  484. package/dist/{chunk-U4QUDFPJ.js → chunk-Z4O3F6KU.js} +4 -4
  485. package/dist/{chunk-JC22FNFA.js → chunk-Z6T5SXST.js} +5 -5
  486. package/dist/{chunk-TXEN3QJ4.js → chunk-ZC5HDBQO.js} +2 -2
  487. package/dist/{chunk-LEHMWJNZ.js → chunk-ZEYUSS3W.js} +5 -5
  488. package/dist/{chunk-JH5BKA3Y.js → chunk-ZH2SZ6B3.js} +26 -8
  489. package/dist/chunk-ZH2SZ6B3.js.map +1 -0
  490. package/dist/{chunk-4WNFOBTH.js → chunk-ZKWVCSAB.js} +2 -2
  491. package/dist/{chunk-GEB4WSZH.js → chunk-ZNBLGS66.js} +3 -3
  492. package/dist/{chunk-TCAQOUIB.js → chunk-ZSTSISM6.js} +1 -1
  493. package/dist/chunk-ZSTSISM6.js.map +1 -0
  494. package/dist/data-display/Alert.js +3 -2
  495. package/dist/data-display/AsyncStateContainer.js +3 -3
  496. package/dist/data-display/Avatar.js +3 -3
  497. package/dist/data-display/Badge.js +10 -8
  498. package/dist/data-display/Banner.js +3 -2
  499. package/dist/data-display/CardKit.js +17 -16
  500. package/dist/data-display/Carousel.js +13 -11
  501. package/dist/data-display/Chart.js +24 -22
  502. package/dist/data-display/Chip.js +1 -0
  503. package/dist/data-display/DataGrid.js +3 -3
  504. package/dist/data-display/DataViews.js +107 -106
  505. package/dist/data-display/DescriptionItem.js +6 -5
  506. package/dist/data-display/EmptyState.js +2 -2
  507. package/dist/data-display/FleetMap.js +23 -21
  508. package/dist/data-display/InteractiveTooltip.js +2 -2
  509. package/dist/data-display/Lightbox.js +6 -6
  510. package/dist/data-display/MapPreview.js +13 -13
  511. package/dist/data-display/Progress.js +6 -5
  512. package/dist/data-display/SectionOnboarding.js +3 -3
  513. package/dist/data-display/Sheet.js +9 -7
  514. package/dist/data-display/Table.js +5 -5
  515. package/dist/en-US.js +15 -11
  516. package/dist/feedback/ConfirmAction.js +14 -13
  517. package/dist/feedback/Dialog.js +2 -2
  518. package/dist/feedback/Modal.js +2 -2
  519. package/dist/feedback/NotificationStatusNotice.js +9 -8
  520. package/dist/form/AddressAutocomplete.js +10 -10
  521. package/dist/form/Autocomplete.js +5 -5
  522. package/dist/form/Button.js +8 -7
  523. package/dist/form/Calendar.js +4 -4
  524. package/dist/form/CategorySelect.js +12 -12
  525. package/dist/form/CepField.js +7 -7
  526. package/dist/form/CodeEditor.js +4 -4
  527. package/dist/form/Command.js +9 -7
  528. package/dist/form/CreatableSelect.js +4 -4
  529. package/dist/form/DateRangePicker.js +13 -13
  530. package/dist/form/Input.js +6 -6
  531. package/dist/form/InputOTP.js +5 -5
  532. package/dist/form/Label.js +9 -7
  533. package/dist/form/Menubar.js +11 -9
  534. package/dist/form/NumberField.js +29 -0
  535. package/dist/form/NumberField.js.map +1 -0
  536. package/dist/form/PhoneInput.js +4 -4
  537. package/dist/form/RadioGroup.js +6 -6
  538. package/dist/form/RichTextEditor.js +2 -2
  539. package/dist/form/Select.js +5 -5
  540. package/dist/form/Switch.js +3 -2
  541. package/dist/form/Textarea.js +4 -4
  542. package/dist/form/Toggle.js +5 -5
  543. package/dist/form/ToggleGroup.js +4 -4
  544. package/dist/form/UploadButton.js +2 -2
  545. package/dist/form/total-form.js +31 -30
  546. package/dist/icons.js +11 -8
  547. package/dist/layout/Box.js +10 -8
  548. package/dist/layout/Collapsible.js +1 -0
  549. package/dist/layout/ContentToolbar.js +12 -12
  550. package/dist/layout/ScrollArea.js +2 -2
  551. package/dist/layout/Separator.js +3 -3
  552. package/dist/layout/SettingCard.js +80 -0
  553. package/dist/layout/SettingCard.js.map +1 -0
  554. package/dist/layout/SettingsLayout.js +7 -7
  555. package/dist/layout/Stack.js +11 -9
  556. package/dist/layout/TableFilter.js +4 -4
  557. package/dist/locales.js +37 -23
  558. package/dist/locales.js.map +1 -1
  559. package/dist/native/chunks/{chunk-ONXKFA5Z.js → chunk-A2QNZ4VK.js} +4 -4
  560. package/dist/native/chunks/{chunk-X6RQGKGF.js → chunk-BST5DUUD.js} +2 -2
  561. package/dist/native/chunks/{chunk-GUBTMR2K.js → chunk-EDYZEMVD.js} +2 -2
  562. package/dist/native/chunks/{chunk-SZF56GVJ.js → chunk-LECBJD35.js} +3 -3
  563. package/dist/native/chunks/{chunk-JBYDLWQA.js → chunk-MTRRGDBQ.js} +5 -5
  564. package/dist/native/chunks/{chunk-IMGBBIMT.js → chunk-PN7C2BEY.js} +2 -2
  565. package/dist/native/chunks/{chunk-R5XVZRDD.js → chunk-RADD26LG.js} +46 -5
  566. package/dist/native/chunks/chunk-RADD26LG.js.map +1 -0
  567. package/dist/native/chunks/{chunk-4ZAULIDG.js → chunk-S4F364X4.js} +3 -3
  568. package/dist/native/chunks/{chunk-5IASLIBI.js → chunk-VJFKRXY2.js} +2 -2
  569. package/dist/native/data-display/Alert.js +3 -3
  570. package/dist/native/data-display/Avatar.js +3 -3
  571. package/dist/native/data-display/Badge.js +3 -3
  572. package/dist/native/data-display/Chip.js +3 -3
  573. package/dist/native/data-display/EmptyState.js +6 -6
  574. package/dist/native/data-display/ErrorState.js +5 -5
  575. package/dist/native/data-display/FleetMap.js +7 -7
  576. package/dist/native/data-display/LoadingState.js +2 -2
  577. package/dist/native/data-display/Progress.js +2 -2
  578. package/dist/native/feedback/Dialog.js +3 -3
  579. package/dist/native/form/Button.js +4 -4
  580. package/dist/native/form/Checkbox.js +3 -3
  581. package/dist/native/form/Input.js +4 -4
  582. package/dist/native/form/Select.js +5 -5
  583. package/dist/native/form/Switch.js +2 -2
  584. package/dist/native/icons.js +3 -3
  585. package/dist/native/layout/Box.js +3 -3
  586. package/dist/native/layout/Card.js +2 -2
  587. package/dist/native/layout/Container.js +2 -2
  588. package/dist/native/layout/Skeleton.js +3 -3
  589. package/dist/native/layout/Spacer.js +2 -2
  590. package/dist/native/layout/Stack.js +3 -3
  591. package/dist/native/provider.js +2 -2
  592. package/dist/native/tokens.js +15 -3
  593. package/dist/native/typography/Heading.js +2 -2
  594. package/dist/native/typography/Paragraph.js +2 -2
  595. package/dist/native/typography/Text.js +2 -2
  596. package/dist/navigation/AppHeader.js +18 -16
  597. package/dist/navigation/CommandPalette.js +3 -3
  598. package/dist/navigation/Pagination.js +5 -5
  599. package/dist/navigation/Tabs.js +5 -5
  600. package/dist/provider.js +10 -8
  601. package/dist/pt-BR.js +12 -8
  602. package/dist/social-login-button.js +16 -15
  603. package/dist/tokens.js +30 -8
  604. package/dist/types/components/form/Input/Input.d.ts.map +1 -1
  605. package/dist/types/components/form/Input/Input.types.d.ts +10 -0
  606. package/dist/types/components/form/Input/Input.types.d.ts.map +1 -1
  607. package/dist/types/components/form/NumberField/NumberField.d.ts +21 -0
  608. package/dist/types/components/form/NumberField/NumberField.d.ts.map +1 -0
  609. package/dist/types/components/form/NumberField/NumberField.helpers.d.ts +48 -0
  610. package/dist/types/components/form/NumberField/NumberField.helpers.d.ts.map +1 -0
  611. package/dist/types/components/form/NumberField/NumberField.types.d.ts +31 -0
  612. package/dist/types/components/form/NumberField/NumberField.types.d.ts.map +1 -0
  613. package/dist/types/components/form/NumberField/index.d.ts +3 -0
  614. package/dist/types/components/form/NumberField/index.d.ts.map +1 -0
  615. package/dist/types/components/form/index.d.ts +1 -0
  616. package/dist/types/components/form/index.d.ts.map +1 -1
  617. package/dist/types/components/layout/SettingCard/SettingCard.d.ts +14 -0
  618. package/dist/types/components/layout/SettingCard/SettingCard.d.ts.map +1 -0
  619. package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts +79 -0
  620. package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts.map +1 -0
  621. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts +21 -0
  622. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts.map +1 -0
  623. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts +49 -0
  624. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts.map +1 -0
  625. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts +48 -0
  626. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts.map +1 -0
  627. package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts +127 -0
  628. package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts.map +1 -0
  629. package/dist/types/components/layout/SettingCard/SettingGrid.d.ts +33 -0
  630. package/dist/types/components/layout/SettingCard/SettingGrid.d.ts.map +1 -0
  631. package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts +13 -0
  632. package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts.map +1 -0
  633. package/dist/types/components/layout/SettingCard/SettingGroup.d.ts +18 -0
  634. package/dist/types/components/layout/SettingCard/SettingGroup.d.ts.map +1 -0
  635. package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts +28 -0
  636. package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts.map +1 -0
  637. package/dist/types/components/layout/SettingCard/SettingToggle.d.ts +13 -0
  638. package/dist/types/components/layout/SettingCard/SettingToggle.d.ts.map +1 -0
  639. package/dist/types/components/layout/SettingCard/index.d.ts +6 -0
  640. package/dist/types/components/layout/SettingCard/index.d.ts.map +1 -0
  641. package/dist/types/components/layout/index.d.ts +1 -0
  642. package/dist/types/components/layout/index.d.ts.map +1 -1
  643. package/dist/types/copy/layout.d.ts +27 -0
  644. package/dist/types/copy/layout.d.ts.map +1 -1
  645. package/dist/types/en-US.layout.d.ts +3 -1
  646. package/dist/types/en-US.layout.d.ts.map +1 -1
  647. package/dist/types/locales.d.ts +3 -1
  648. package/dist/types/locales.d.ts.map +1 -1
  649. package/dist/types/provider/mui-bridge.d.ts.map +1 -1
  650. package/dist/types/pt-BR.layout.d.ts +3 -1
  651. package/dist/types/pt-BR.layout.d.ts.map +1 -1
  652. package/dist/types/tokens/density.core.d.ts +73 -0
  653. package/dist/types/tokens/density.core.d.ts.map +1 -0
  654. package/dist/types/tokens/density.d.ts +95 -0
  655. package/dist/types/tokens/density.d.ts.map +1 -0
  656. package/dist/types/tokens/field-height.core.d.ts +7 -2
  657. package/dist/types/tokens/field-height.core.d.ts.map +1 -1
  658. package/dist/types/tokens/field-height.d.ts +9 -0
  659. package/dist/types/tokens/field-height.d.ts.map +1 -1
  660. package/dist/types/tokens/scales.d.ts +2 -1
  661. package/dist/types/tokens/scales.d.ts.map +1 -1
  662. package/dist/types/tokens/theme.d.ts +30 -0
  663. package/dist/types/tokens/theme.d.ts.map +1 -1
  664. package/dist/types-native/tokens/density.core.d.ts +73 -0
  665. package/dist/types-native/tokens/density.core.d.ts.map +1 -0
  666. package/dist/types-native/tokens/field-height.core.d.ts +7 -2
  667. package/dist/types-native/tokens/field-height.core.d.ts.map +1 -1
  668. package/dist/types-native/tokens/index.native.d.ts +1 -0
  669. package/dist/types-native/tokens/index.native.d.ts.map +1 -1
  670. package/dist/types-native/tokens/theme.d.ts +30 -0
  671. package/dist/types-native/tokens/theme.d.ts.map +1 -1
  672. package/dist/typography/Heading.js +6 -5
  673. package/dist/typography/Text.js +5 -4
  674. package/dist/user-avatar.js +14 -13
  675. package/dist/utility/InstallPrompt.js +2 -2
  676. package/dist/utility/WorkflowStep.js +7 -5
  677. package/package.json +9 -1
  678. package/src/components/form/Input/Input.tsx +2 -0
  679. package/src/components/form/Input/Input.types.ts +10 -0
  680. package/src/components/form/NumberField/NumberField.helpers.ts +77 -0
  681. package/src/components/form/NumberField/NumberField.md +86 -0
  682. package/src/components/form/NumberField/NumberField.tsx +88 -0
  683. package/src/components/form/NumberField/NumberField.types.ts +43 -0
  684. package/src/components/form/NumberField/index.ts +2 -0
  685. package/src/components/form/NumberField/tests.md +51 -0
  686. package/src/components/form/NumberField/track.md +42 -0
  687. package/src/components/form/index.ts +1 -0
  688. package/src/components/layout/SettingCard/SettingCard.hooks.ts +191 -0
  689. package/src/components/layout/SettingCard/SettingCard.md +121 -0
  690. package/src/components/layout/SettingCard/SettingCard.metrics.ts +22 -0
  691. package/src/components/layout/SettingCard/SettingCard.parts.tsx +162 -0
  692. package/src/components/layout/SettingCard/SettingCard.styles.ts +142 -0
  693. package/src/components/layout/SettingCard/SettingCard.tsx +197 -0
  694. package/src/components/layout/SettingCard/SettingCard.types.ts +140 -0
  695. package/src/components/layout/SettingCard/SettingGrid.md +65 -0
  696. package/src/components/layout/SettingCard/SettingGrid.tsx +105 -0
  697. package/src/components/layout/SettingCard/SettingGroup.context.ts +11 -0
  698. package/src/components/layout/SettingCard/SettingGroup.md +81 -0
  699. package/src/components/layout/SettingCard/SettingGroup.tsx +73 -0
  700. package/src/components/layout/SettingCard/SettingSwitch.tsx +92 -0
  701. package/src/components/layout/SettingCard/SettingToggle.md +61 -0
  702. package/src/components/layout/SettingCard/SettingToggle.tsx +43 -0
  703. package/src/components/layout/SettingCard/index.ts +18 -0
  704. package/src/components/layout/SettingCard/tests.md +68 -0
  705. package/src/components/layout/SettingCard/track.md +54 -0
  706. package/src/components/layout/index.ts +1 -0
  707. package/src/copy/layout.ts +29 -0
  708. package/src/en-US.layout.ts +16 -0
  709. package/src/locales.ts +10 -0
  710. package/src/provider/mui-bridge.ts +17 -3
  711. package/src/pt-BR.layout.ts +16 -0
  712. package/src/tokens/density.core.ts +118 -0
  713. package/src/tokens/density.ts +134 -0
  714. package/src/tokens/field-height.core.ts +8 -3
  715. package/src/tokens/field-height.ts +19 -8
  716. package/src/tokens/index.native.ts +11 -0
  717. package/src/tokens/scales.ts +15 -0
  718. package/src/tokens/theme.ts +43 -2
  719. package/dist/chunk-A7RIZOAL.js +0 -13
  720. package/dist/chunk-A7RIZOAL.js.map +0 -1
  721. package/dist/chunk-BLW6KLDR.js.map +0 -1
  722. package/dist/chunk-BY3JEK5T.js +0 -1
  723. package/dist/chunk-FZJ2FTGE.js +0 -1
  724. package/dist/chunk-GRHECKHU.js +0 -13
  725. package/dist/chunk-GRHECKHU.js.map +0 -1
  726. package/dist/chunk-JH5BKA3Y.js.map +0 -1
  727. package/dist/chunk-PZBK3F52.js.map +0 -1
  728. package/dist/chunk-TCAQOUIB.js.map +0 -1
  729. package/dist/native/chunks/chunk-R5XVZRDD.js.map +0 -1
  730. /package/dist/{chunk-BY3JEK5T.js.map → _internal/components/form/NumberField/NumberField.helpers.js.map} +0 -0
  731. /package/dist/{chunk-FZJ2FTGE.js.map → _internal/components/form/NumberField/NumberField.js.map} +0 -0
  732. /package/dist/{chunk-DFCQQN6P.js.map → chunk-2LKWJV65.js.map} +0 -0
  733. /package/dist/{chunk-HVXIOIM5.js.map → chunk-2MLS6KU4.js.map} +0 -0
  734. /package/dist/{chunk-IIUB4IOH.js.map → chunk-2XHIF3M3.js.map} +0 -0
  735. /package/dist/{chunk-IASDP44E.js.map → chunk-3AOOI2NR.js.map} +0 -0
  736. /package/dist/{chunk-TCV3N44E.js.map → chunk-3CLBGHTL.js.map} +0 -0
  737. /package/dist/{chunk-KKN4LLVE.js.map → chunk-3CUWQXTG.js.map} +0 -0
  738. /package/dist/{chunk-QXSW3CNN.js.map → chunk-3CYTVX4T.js.map} +0 -0
  739. /package/dist/{chunk-I5ZVCY2N.js.map → chunk-3EPA2A4M.js.map} +0 -0
  740. /package/dist/{chunk-DRSY37PB.js.map → chunk-3MJHHPRW.js.map} +0 -0
  741. /package/dist/{chunk-NLYNRE7L.js.map → chunk-3RUCLKAK.js.map} +0 -0
  742. /package/dist/{chunk-36JKV7CA.js.map → chunk-3UEZ6NUI.js.map} +0 -0
  743. /package/dist/{chunk-EYZ6QBTV.js.map → chunk-3XS37SQT.js.map} +0 -0
  744. /package/dist/{chunk-BSUG4KMP.js.map → chunk-44USLRMT.js.map} +0 -0
  745. /package/dist/{chunk-DJYL2LC6.js.map → chunk-44Z72DDM.js.map} +0 -0
  746. /package/dist/{chunk-4WCDMCIS.js.map → chunk-4CHYMTBT.js.map} +0 -0
  747. /package/dist/{chunk-2LIRGFEK.js.map → chunk-4GN2RLYL.js.map} +0 -0
  748. /package/dist/{chunk-HN3PZTUK.js.map → chunk-4MKVGSHX.js.map} +0 -0
  749. /package/dist/{chunk-BRM3T4LQ.js.map → chunk-4S2LWZ7L.js.map} +0 -0
  750. /package/dist/{chunk-OQRG34VG.js.map → chunk-4SHMSLFA.js.map} +0 -0
  751. /package/dist/{chunk-62UAI62O.js.map → chunk-4UVFPORR.js.map} +0 -0
  752. /package/dist/{chunk-YTINPQKU.js.map → chunk-4XHVGUOM.js.map} +0 -0
  753. /package/dist/{chunk-7DK6YVJU.js.map → chunk-4Z7GEO2R.js.map} +0 -0
  754. /package/dist/{chunk-A2TANYNR.js.map → chunk-53O2TNSR.js.map} +0 -0
  755. /package/dist/{chunk-T6EKPFKZ.js.map → chunk-54HTXJJ2.js.map} +0 -0
  756. /package/dist/{chunk-OHZU4IT3.js.map → chunk-5B7BTLN4.js.map} +0 -0
  757. /package/dist/{chunk-K5V6TCYB.js.map → chunk-5ETBB2DG.js.map} +0 -0
  758. /package/dist/{chunk-5752357K.js.map → chunk-5KGABAQB.js.map} +0 -0
  759. /package/dist/{chunk-JKIKHWD2.js.map → chunk-5NT2M2JI.js.map} +0 -0
  760. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  761. /package/dist/{chunk-7EH4D6FU.js.map → chunk-6H4TPEMO.js.map} +0 -0
  762. /package/dist/{chunk-WB6ZU3B3.js.map → chunk-6JGATEOF.js.map} +0 -0
  763. /package/dist/{chunk-TU5A2CV7.js.map → chunk-6L2FKTBO.js.map} +0 -0
  764. /package/dist/{chunk-ME3WYPYK.js.map → chunk-6MD5QXXJ.js.map} +0 -0
  765. /package/dist/{chunk-HQZRI7UX.js.map → chunk-6N2EDWMG.js.map} +0 -0
  766. /package/dist/{chunk-H224XFFD.js.map → chunk-6REPQ352.js.map} +0 -0
  767. /package/dist/{chunk-YZ2DMP23.js.map → chunk-6TPYT3UC.js.map} +0 -0
  768. /package/dist/{chunk-I4MRBEWU.js.map → chunk-6ZD3FI5P.js.map} +0 -0
  769. /package/dist/{chunk-PWZHCBG3.js.map → chunk-72FPUWD6.js.map} +0 -0
  770. /package/dist/{chunk-VRPREI27.js.map → chunk-72S2RGWD.js.map} +0 -0
  771. /package/dist/{chunk-OAW6GCS3.js.map → chunk-77BKKPCI.js.map} +0 -0
  772. /package/dist/{chunk-67O4GPJJ.js.map → chunk-7FEXRMJE.js.map} +0 -0
  773. /package/dist/{chunk-KN5J3NEZ.js.map → chunk-7KKMZJFT.js.map} +0 -0
  774. /package/dist/{chunk-KJDBY2KN.js.map → chunk-7LILFS72.js.map} +0 -0
  775. /package/dist/{chunk-SLDSWQVE.js.map → chunk-7TE4TMS3.js.map} +0 -0
  776. /package/dist/{chunk-AG3DY5TH.js.map → chunk-ADSA76T7.js.map} +0 -0
  777. /package/dist/{chunk-BKASAYQL.js.map → chunk-ALOUJ3CE.js.map} +0 -0
  778. /package/dist/{chunk-VY2BMSHN.js.map → chunk-ANYOSBNA.js.map} +0 -0
  779. /package/dist/{chunk-LNHYBA4B.js.map → chunk-AWG2AJHX.js.map} +0 -0
  780. /package/dist/{chunk-7X7ZHJHM.js.map → chunk-B3QWQG62.js.map} +0 -0
  781. /package/dist/{chunk-2S752BIJ.js.map → chunk-BA6Z52QN.js.map} +0 -0
  782. /package/dist/{chunk-X4F32GUB.js.map → chunk-BM4KKGL7.js.map} +0 -0
  783. /package/dist/{chunk-4T6UIYJB.js.map → chunk-BVSSEOLI.js.map} +0 -0
  784. /package/dist/{chunk-3UABIEP3.js.map → chunk-C2TERIB4.js.map} +0 -0
  785. /package/dist/{chunk-TEEJ4GNY.js.map → chunk-C6OVO6AT.js.map} +0 -0
  786. /package/dist/{chunk-CYZZHWNK.js.map → chunk-CJ45OL7L.js.map} +0 -0
  787. /package/dist/{chunk-N7LPVR7P.js.map → chunk-CKHFYTIX.js.map} +0 -0
  788. /package/dist/{chunk-PA3AA55Q.js.map → chunk-CLK67TNH.js.map} +0 -0
  789. /package/dist/{chunk-MQ277OLB.js.map → chunk-CM2Q7IH3.js.map} +0 -0
  790. /package/dist/{chunk-ZXSWXE6U.js.map → chunk-CMFJQH6A.js.map} +0 -0
  791. /package/dist/{chunk-NOKN4HRK.js.map → chunk-CMLIWUBW.js.map} +0 -0
  792. /package/dist/{chunk-EA2UNEL6.js.map → chunk-CNR5RFKC.js.map} +0 -0
  793. /package/dist/{chunk-P52LYD6S.js.map → chunk-DFI2RKVQ.js.map} +0 -0
  794. /package/dist/{chunk-37USSARD.js.map → chunk-DH5UJD2I.js.map} +0 -0
  795. /package/dist/{chunk-PCLKFR27.js.map → chunk-DH6SL3SY.js.map} +0 -0
  796. /package/dist/{chunk-S6JHTEV4.js.map → chunk-DLWLIPCP.js.map} +0 -0
  797. /package/dist/{chunk-KN4ZE2XZ.js.map → chunk-EIII4QU4.js.map} +0 -0
  798. /package/dist/{chunk-L566FMDD.js.map → chunk-EO5IEWFI.js.map} +0 -0
  799. /package/dist/{chunk-VY6L74JQ.js.map → chunk-EQXIW5MQ.js.map} +0 -0
  800. /package/dist/{chunk-MWPXKZ7O.js.map → chunk-ERY6D2OV.js.map} +0 -0
  801. /package/dist/{chunk-6PU3JYVY.js.map → chunk-F3AYISXT.js.map} +0 -0
  802. /package/dist/{chunk-GY4NBSCN.js.map → chunk-FDMQ7H22.js.map} +0 -0
  803. /package/dist/{chunk-IBGP3VSR.js.map → chunk-FHW3ATT7.js.map} +0 -0
  804. /package/dist/{chunk-WL6N33AB.js.map → chunk-FIO55AKI.js.map} +0 -0
  805. /package/dist/{chunk-5CQNBMLK.js.map → chunk-FTQBVZ7V.js.map} +0 -0
  806. /package/dist/{chunk-J5UZB6Y6.js.map → chunk-FXWXBEOZ.js.map} +0 -0
  807. /package/dist/{chunk-IGGXKT5B.js.map → chunk-G2WERTWZ.js.map} +0 -0
  808. /package/dist/{chunk-DF4QODJ6.js.map → chunk-G4TKMUOL.js.map} +0 -0
  809. /package/dist/{chunk-WY5PBZ7Q.js.map → chunk-G6ZPQHBL.js.map} +0 -0
  810. /package/dist/{chunk-JYR6VV4Y.js.map → chunk-G7XHJPLO.js.map} +0 -0
  811. /package/dist/{chunk-IQJCLFF4.js.map → chunk-GANW7FXQ.js.map} +0 -0
  812. /package/dist/{chunk-3LSIFHQK.js.map → chunk-GE2CCITY.js.map} +0 -0
  813. /package/dist/{chunk-G3XLFQ2Z.js.map → chunk-GG62LKA3.js.map} +0 -0
  814. /package/dist/{chunk-YQCRQHVU.js.map → chunk-GI63FQEJ.js.map} +0 -0
  815. /package/dist/{chunk-7ICK5MXV.js.map → chunk-GJFAI3J5.js.map} +0 -0
  816. /package/dist/{chunk-2JNHWKQK.js.map → chunk-GPHURU2K.js.map} +0 -0
  817. /package/dist/{chunk-5FAI25JQ.js.map → chunk-H72YKEGD.js.map} +0 -0
  818. /package/dist/{chunk-J3XFUCCR.js.map → chunk-HKBJZX3C.js.map} +0 -0
  819. /package/dist/{chunk-M4QXG5JP.js.map → chunk-HQWJUHR4.js.map} +0 -0
  820. /package/dist/{chunk-4BNV5AAI.js.map → chunk-ITFFA3H2.js.map} +0 -0
  821. /package/dist/{chunk-RB3X6CEE.js.map → chunk-IWGW2E35.js.map} +0 -0
  822. /package/dist/{chunk-O25SH2MA.js.map → chunk-J6KLT7HP.js.map} +0 -0
  823. /package/dist/{chunk-CRG24BGI.js.map → chunk-JAGAFEZL.js.map} +0 -0
  824. /package/dist/{chunk-RDCHT2WN.js.map → chunk-JE5GEWTG.js.map} +0 -0
  825. /package/dist/{chunk-FLDLUAHW.js.map → chunk-JE6GQB5J.js.map} +0 -0
  826. /package/dist/{chunk-N23GCN5U.js.map → chunk-JFLFZLOA.js.map} +0 -0
  827. /package/dist/{chunk-35443PF6.js.map → chunk-JIRZ27RI.js.map} +0 -0
  828. /package/dist/{chunk-5MW7OYBM.js.map → chunk-JSGVYOMN.js.map} +0 -0
  829. /package/dist/{chunk-RNIU447I.js.map → chunk-JU3FRRO2.js.map} +0 -0
  830. /package/dist/{chunk-WOAXKWAB.js.map → chunk-K4A3JDYQ.js.map} +0 -0
  831. /package/dist/{chunk-HM2JJNUE.js.map → chunk-K6LNHHSH.js.map} +0 -0
  832. /package/dist/{chunk-NR5TW4AH.js.map → chunk-K7MQP2KT.js.map} +0 -0
  833. /package/dist/{chunk-2OWKL4CC.js.map → chunk-KCDNOMMT.js.map} +0 -0
  834. /package/dist/{chunk-O2DLEAUP.js.map → chunk-KHOAXZW2.js.map} +0 -0
  835. /package/dist/{chunk-W5TI46QN.js.map → chunk-KQZGUHYZ.js.map} +0 -0
  836. /package/dist/{chunk-2K7WPHI3.js.map → chunk-KW3H5FUS.js.map} +0 -0
  837. /package/dist/{chunk-7D2C4LK2.js.map → chunk-LCWGNDTH.js.map} +0 -0
  838. /package/dist/{chunk-FNRPQE2D.js.map → chunk-LF3EVXMF.js.map} +0 -0
  839. /package/dist/{chunk-MCJRHF7Z.js.map → chunk-LGCRL7DK.js.map} +0 -0
  840. /package/dist/{chunk-JK5UJM4Y.js.map → chunk-LODMNSLR.js.map} +0 -0
  841. /package/dist/{chunk-YUXDVW62.js.map → chunk-M65ZNPLO.js.map} +0 -0
  842. /package/dist/{chunk-URHX4FAQ.js.map → chunk-MKLIMY3D.js.map} +0 -0
  843. /package/dist/{chunk-2FM5SUQV.js.map → chunk-MM5XSAVE.js.map} +0 -0
  844. /package/dist/{chunk-LXT3X33C.js.map → chunk-NCB4GBRL.js.map} +0 -0
  845. /package/dist/{chunk-FNO5TWBJ.js.map → chunk-NCEQWEXT.js.map} +0 -0
  846. /package/dist/{chunk-FWPFCK4D.js.map → chunk-NDHDBOUH.js.map} +0 -0
  847. /package/dist/{chunk-WRCLYSTX.js.map → chunk-NFGIA2ZV.js.map} +0 -0
  848. /package/dist/{chunk-VPPIODKX.js.map → chunk-NQ7NMCRI.js.map} +0 -0
  849. /package/dist/{chunk-YMTZN54Q.js.map → chunk-NRSVI23L.js.map} +0 -0
  850. /package/dist/{chunk-2622YFM6.js.map → chunk-NSVSC6ZC.js.map} +0 -0
  851. /package/dist/{chunk-Z43N7ASP.js.map → chunk-NU55QUMO.js.map} +0 -0
  852. /package/dist/{chunk-66O55OZI.js.map → chunk-NYFGFELX.js.map} +0 -0
  853. /package/dist/{chunk-JXECOCNA.js.map → chunk-P6Q2O3TU.js.map} +0 -0
  854. /package/dist/{chunk-RTEY5COP.js.map → chunk-PAICZOL5.js.map} +0 -0
  855. /package/dist/{chunk-ZN6YATOG.js.map → chunk-PAT2BQOQ.js.map} +0 -0
  856. /package/dist/{chunk-TZBOWSAM.js.map → chunk-PICOOZLX.js.map} +0 -0
  857. /package/dist/{chunk-JJJM75XF.js.map → chunk-PNDYAIKM.js.map} +0 -0
  858. /package/dist/{chunk-EJYJLVPK.js.map → chunk-PRLYYKMG.js.map} +0 -0
  859. /package/dist/{chunk-4GB46HLK.js.map → chunk-PTONBPZL.js.map} +0 -0
  860. /package/dist/{chunk-FNG33MKA.js.map → chunk-QDELBNL3.js.map} +0 -0
  861. /package/dist/{chunk-DSF4VT7L.js.map → chunk-QEI5DC6S.js.map} +0 -0
  862. /package/dist/{chunk-VJ2BNJ5M.js.map → chunk-QMELMQPA.js.map} +0 -0
  863. /package/dist/{chunk-HDJQDMHB.js.map → chunk-QMHS6ZDI.js.map} +0 -0
  864. /package/dist/{chunk-2WVHZIWP.js.map → chunk-QSRZOXQI.js.map} +0 -0
  865. /package/dist/{chunk-C3LZ3OGJ.js.map → chunk-R2FUQV24.js.map} +0 -0
  866. /package/dist/{chunk-GOWBYHYW.js.map → chunk-R6SBP5M5.js.map} +0 -0
  867. /package/dist/{chunk-HWSS6C7C.js.map → chunk-RDFPM2AQ.js.map} +0 -0
  868. /package/dist/{chunk-4RPFI474.js.map → chunk-RSDYS5B3.js.map} +0 -0
  869. /package/dist/{chunk-X53F33KA.js.map → chunk-RWXYND4H.js.map} +0 -0
  870. /package/dist/{chunk-4NPPO63U.js.map → chunk-RZ2VZ7SL.js.map} +0 -0
  871. /package/dist/{chunk-ORRI6FMN.js.map → chunk-S4IXC2V3.js.map} +0 -0
  872. /package/dist/{chunk-MXCIUKTQ.js.map → chunk-SDBBJ6FG.js.map} +0 -0
  873. /package/dist/{chunk-UMNXSQ7I.js.map → chunk-SNBAMWI5.js.map} +0 -0
  874. /package/dist/{chunk-LP3JCXER.js.map → chunk-SNW5MJ6I.js.map} +0 -0
  875. /package/dist/{chunk-5OBGW3FG.js.map → chunk-STTULW2K.js.map} +0 -0
  876. /package/dist/{chunk-3CTQZDSD.js.map → chunk-TCNTIGMY.js.map} +0 -0
  877. /package/dist/{chunk-Y6C4MYZE.js.map → chunk-TNQDSTIA.js.map} +0 -0
  878. /package/dist/{chunk-6RLCBNDV.js.map → chunk-TPVSHO75.js.map} +0 -0
  879. /package/dist/{chunk-BUPDBEBA.js.map → chunk-TTJTMDLI.js.map} +0 -0
  880. /package/dist/{chunk-TU5EIKJA.js.map → chunk-U5SH3VRJ.js.map} +0 -0
  881. /package/dist/{chunk-MLQYIJTO.js.map → chunk-U6W2RY3Z.js.map} +0 -0
  882. /package/dist/{chunk-4WF6ZLIW.js.map → chunk-UGPRBJWB.js.map} +0 -0
  883. /package/dist/{chunk-Y6G4I42P.js.map → chunk-VEEG4UXZ.js.map} +0 -0
  884. /package/dist/{chunk-IRD45DRW.js.map → chunk-VOJBLBXE.js.map} +0 -0
  885. /package/dist/{chunk-KHPL2J3B.js.map → chunk-VPAOVEI2.js.map} +0 -0
  886. /package/dist/{chunk-DYGWKZ7T.js.map → chunk-VWJEM2ER.js.map} +0 -0
  887. /package/dist/{chunk-FERUQ7OB.js.map → chunk-VYA4QWQL.js.map} +0 -0
  888. /package/dist/{chunk-UKX3MPB7.js.map → chunk-VYV3JOV5.js.map} +0 -0
  889. /package/dist/{chunk-B7CNP5HW.js.map → chunk-WV62BSWA.js.map} +0 -0
  890. /package/dist/{chunk-IWEUSZY3.js.map → chunk-X66E5WSX.js.map} +0 -0
  891. /package/dist/{chunk-OJ2XR3WH.js.map → chunk-XB7HYOMM.js.map} +0 -0
  892. /package/dist/{chunk-H6AWKLOV.js.map → chunk-XBLFK2FL.js.map} +0 -0
  893. /package/dist/{chunk-5HDYTTE7.js.map → chunk-XHA2NXLD.js.map} +0 -0
  894. /package/dist/{chunk-F4KYBBTY.js.map → chunk-XLXMJ6X2.js.map} +0 -0
  895. /package/dist/{chunk-SCZABICW.js.map → chunk-XO4ZUHVH.js.map} +0 -0
  896. /package/dist/{chunk-PARTZ7XI.js.map → chunk-XP522FFM.js.map} +0 -0
  897. /package/dist/{chunk-MBHWVRV5.js.map → chunk-XVZG52CM.js.map} +0 -0
  898. /package/dist/{chunk-TGXCG62P.js.map → chunk-XXL4PM4M.js.map} +0 -0
  899. /package/dist/{chunk-YKEO6UHN.js.map → chunk-XZJM6EPC.js.map} +0 -0
  900. /package/dist/{chunk-YTY7TD7S.js.map → chunk-XZY7O7JJ.js.map} +0 -0
  901. /package/dist/{chunk-WZNTZX5N.js.map → chunk-Y2UXX5IQ.js.map} +0 -0
  902. /package/dist/{chunk-QOLIBVGS.js.map → chunk-YGYQC7MT.js.map} +0 -0
  903. /package/dist/{chunk-THMT3G3L.js.map → chunk-YLXQWYOG.js.map} +0 -0
  904. /package/dist/{chunk-M4KVKQRN.js.map → chunk-YPIVLPXF.js.map} +0 -0
  905. /package/dist/{chunk-57FZM6GH.js.map → chunk-YRUX7XMQ.js.map} +0 -0
  906. /package/dist/{chunk-M2Q5CLPU.js.map → chunk-YTXZUTLF.js.map} +0 -0
  907. /package/dist/{chunk-ZWCYSAI5.js.map → chunk-YWJDUJAR.js.map} +0 -0
  908. /package/dist/{chunk-S36NC22G.js.map → chunk-Z2NN53E5.js.map} +0 -0
  909. /package/dist/{chunk-GC56IWIZ.js.map → chunk-Z4DKVLYG.js.map} +0 -0
  910. /package/dist/{chunk-U4QUDFPJ.js.map → chunk-Z4O3F6KU.js.map} +0 -0
  911. /package/dist/{chunk-JC22FNFA.js.map → chunk-Z6T5SXST.js.map} +0 -0
  912. /package/dist/{chunk-TXEN3QJ4.js.map → chunk-ZC5HDBQO.js.map} +0 -0
  913. /package/dist/{chunk-LEHMWJNZ.js.map → chunk-ZEYUSS3W.js.map} +0 -0
  914. /package/dist/{chunk-4WNFOBTH.js.map → chunk-ZKWVCSAB.js.map} +0 -0
  915. /package/dist/{chunk-GEB4WSZH.js.map → chunk-ZNBLGS66.js.map} +0 -0
  916. /package/dist/native/chunks/{chunk-ONXKFA5Z.js.map → chunk-A2QNZ4VK.js.map} +0 -0
  917. /package/dist/native/chunks/{chunk-X6RQGKGF.js.map → chunk-BST5DUUD.js.map} +0 -0
  918. /package/dist/native/chunks/{chunk-GUBTMR2K.js.map → chunk-EDYZEMVD.js.map} +0 -0
  919. /package/dist/native/chunks/{chunk-SZF56GVJ.js.map → chunk-LECBJD35.js.map} +0 -0
  920. /package/dist/native/chunks/{chunk-JBYDLWQA.js.map → chunk-MTRRGDBQ.js.map} +0 -0
  921. /package/dist/native/chunks/{chunk-IMGBBIMT.js.map → chunk-PN7C2BEY.js.map} +0 -0
  922. /package/dist/native/chunks/{chunk-4ZAULIDG.js.map → chunk-S4F364X4.js.map} +0 -0
  923. /package/dist/native/chunks/{chunk-5IASLIBI.js.map → chunk-VJFKRXY2.js.map} +0 -0
@@ -0,0 +1,54 @@
1
+ # SettingCard family
2
+
3
+ Four settings-screen building blocks under one subpath,
4
+ `@12-apps/ui/layout/SettingCard` (FUT-2823). `SettingCard` summarises a setting
5
+ while closed and edits it in place, with an async save that stays open on
6
+ failure and a focus round trip. `SettingToggle` is a switch that saves as it
7
+ flips. `SettingGroup` is one subject's main switch with dependent rows that dim
8
+ (never vanish) while it is off. `SettingGrid` lays them out in 1–3 columns by
9
+ container query, with equal-height rows and a full-row span for an open card.
10
+ App-agnostic: every word comes in through props (`SettingCardCopy`,
11
+ `SettingSwitchCopy`, titles, summaries, hints).
12
+
13
+ ## Props
14
+
15
+ - **SettingCard** — `copy`, `title`, `onSave` (may be async), `children` (the
16
+ form), `summary`, `status`, `learnMore`, `onCancel`, `open` / `defaultOpen` /
17
+ `onOpenChange`, `disabled`, `saveDisabled`, `formatError`, `headingLevel`,
18
+ `icon`, `dataTestId`, `className`, `sx`.
19
+ - **SettingToggle** — `copy`, `title`, `checked`, `onChange` (may be async),
20
+ `summary`, `variant` (`card` | `row`), `disabled`, `formatError`, `icon`,
21
+ `dataTestId`, `className`, `sx`.
22
+ - **SettingGroup** — `SettingToggle`'s switch props plus `inactiveHint` and
23
+ `children` (the dependent rows).
24
+ - **SettingGrid** — `children`, `minColumnWidth`, `maxColumns`, `gap`,
25
+ `aria-label`, `dataTestId`, `className`, `sx`.
26
+
27
+ ## Lint
28
+
29
+ - Clean (`pnpm lint:files src/components/layout/SettingCard`), plus the
30
+ complexity and flakiness gates.
31
+
32
+ ## Type Errors
33
+
34
+ - None (`pnpm typecheck`, `tsc -p tsconfig.stories.json`).
35
+
36
+ ## Testing Scenarios
37
+
38
+ - Closed/open rendering, in-place open, Escape, controlled mode, no focus steal
39
+ on mount; save pending / resolved / rejected / thrown / double-press /
40
+ `saveDisabled`; cancel discarding uncontrolled drafts; toggle optimistic flip,
41
+ revert, ignored second flip; group inert rows, hint, activation only after
42
+ the save lands; grid container-query CSS, row sizing, open-card span; layout
43
+ measured in Chromium by the test stories.
44
+
45
+ ## Storybook Tests List
46
+
47
+ - Layout/SettingCard/Tests → 8, Layout/SettingToggle/Tests → 4,
48
+ Layout/SettingGroup/Tests → 3, Layout/SettingGrid/Tests → 3.
49
+
50
+ ## Current
51
+
52
+ - 2026-09-26 16:40 BRT — v1: all four components, copy packs in both locales,
53
+ docs per component. Remaining TODO: first host adoption in the origin host
54
+ (FUT-1659 is the admin screens that would fold onto it).
@@ -8,6 +8,7 @@ export * from './Drawer';
8
8
  export * from './Resizable';
9
9
  export * from './ScrollArea';
10
10
  export * from './Separator';
11
+ export * from './SettingCard';
11
12
  export * from './Sidebar';
12
13
  export * from './Skeleton/Skeleton';
13
14
  export * from './TableFilter';
@@ -16,3 +16,32 @@ export interface TableFilterCopy {
16
16
  rangeMin: string;
17
17
  rangeMax: string;
18
18
  }
19
+
20
+ /**
21
+ * The chrome words of an editable `SettingCard`. The card's own title, summary
22
+ * and status are per-card props; these are the words every card repeats.
23
+ */
24
+ export interface SettingCardCopy {
25
+ /** The closed card's trigger. Its accessible name also carries the card's title. */
26
+ edit: string;
27
+ /** Discard the draft and close. */
28
+ cancel: string;
29
+ save: string;
30
+ /** Announced (and shown to sighted users as the Save label) while the save is pending. */
31
+ saving: string;
32
+ /** The disclosure that reveals the card's longer explanation. */
33
+ learnMore: string;
34
+ /** Shown when the save rejected and the host's `formatError` gave no sentence of its own. */
35
+ saveFailed: string;
36
+ }
37
+
38
+ /**
39
+ * What a switch that saves the moment it flips says about that save — shared
40
+ * by `SettingToggle` and `SettingGroup`'s main switch.
41
+ */
42
+ export interface SettingSwitchCopy {
43
+ /** Announced while the flip is being saved. */
44
+ saving: string;
45
+ /** Shown when the save rejected and the host's `formatError` gave no sentence of its own. */
46
+ saveFailed: string;
47
+ }
@@ -3,6 +3,8 @@
3
3
  * is — see `en-US.ts` for why the packs live in per-family files.
4
4
  */
5
5
  import type {
6
+ SettingCardCopy,
7
+ SettingSwitchCopy,
6
8
  TableFilterCopy,
7
9
  } from './copy';
8
10
 
@@ -13,3 +15,17 @@ export const EN_US_TABLE_FILTER_COPY: TableFilterCopy = {
13
15
  rangeMin: "Minimum",
14
16
  rangeMax: "Maximum",
15
17
  };
18
+
19
+ export const EN_US_SETTING_CARD_COPY: SettingCardCopy = {
20
+ edit: "Edit",
21
+ cancel: "Cancel",
22
+ save: "Save",
23
+ saving: "Saving…",
24
+ learnMore: "Learn more",
25
+ saveFailed: "Could not save. Please try again.",
26
+ };
27
+
28
+ export const EN_US_SETTING_SWITCH_COPY: SettingSwitchCopy = {
29
+ saving: "Saving…",
30
+ saveFailed: "Could not save. Please try again.",
31
+ };
package/src/locales.ts CHANGED
@@ -38,6 +38,8 @@ import type {
38
38
  PhoneInputCopy,
39
39
  RichEditorToolbarCopy,
40
40
  SectionOnboardingCopy,
41
+ SettingCardCopy,
42
+ SettingSwitchCopy,
41
43
  SocialLoginCopy,
42
44
  TableFilterCopy,
43
45
  TimingDiagramCopy,
@@ -115,6 +117,14 @@ export const TABLE_FILTER_COPY = pack<TableFilterCopy>(
115
117
  pt.PT_BR_TABLE_FILTER_COPY,
116
118
  en.EN_US_TABLE_FILTER_COPY,
117
119
  );
120
+ export const SETTING_CARD_COPY = pack<SettingCardCopy>(
121
+ pt.PT_BR_SETTING_CARD_COPY,
122
+ en.EN_US_SETTING_CARD_COPY,
123
+ );
124
+ export const SETTING_SWITCH_COPY = pack<SettingSwitchCopy>(
125
+ pt.PT_BR_SETTING_SWITCH_COPY,
126
+ en.EN_US_SETTING_SWITCH_COPY,
127
+ );
118
128
 
119
129
  // navigation
120
130
  export const COMMAND_PALETTE_COPY = pack<CommandPaletteCopy>(
@@ -1,8 +1,9 @@
1
1
  import type { PaletteColor, Theme, ThemeOptions } from '@mui/material/styles/index.js';
2
2
 
3
3
  import { cssLengthToPx, cssTrackingToEm } from '../tokens/css-units';
4
+ import { densityFontSize, resolveDensityFactor } from '../tokens/density';
4
5
  import { resolveFieldHeight } from '../tokens/field-height.core';
5
- import { fieldOverrides } from '../tokens/field-height';
6
+ import { fieldOverrides, mergeMuiComponents } from '../tokens/field-height';
6
7
  import { fieldRadius } from '../tokens/field-radius';
7
8
  import { accentFor } from '../tokens/scales';
8
9
  import {
@@ -102,6 +103,9 @@ export function uiThemeFromMui(theme: Theme): UiTheme {
102
103
  spacingUnit: unit,
103
104
  radius: { sm: md / 2, md, lg: md * 2, xl: md * 4, full: 9999, field: fieldRadius(theme) },
104
105
  fieldHeight: resolveFieldHeight(theme.fieldHeight),
106
+ // A bare MUI theme (never built through `createUiTheme`/`muiThemeOptionsFrom`)
107
+ // carries no `theme.density` — read back as `'normal'`, factor `1`.
108
+ density: theme.density ?? resolveDensityFactor(),
105
109
  typography: {
106
110
  fontFamily: theme.typography.fontFamily ?? WEB_FONT_FAMILY,
107
111
  monospaceFontFamily: WEB_MONOSPACE_FONT_FAMILY,
@@ -140,9 +144,19 @@ export function muiThemeOptionsFrom(ui: UiTheme): ThemeOptions {
140
144
  shape: { borderRadius: ui.radius.md },
141
145
  fieldRadius: ui.radius.field,
142
146
  fieldHeight: ui.fieldHeight,
143
- components: fieldOverrides(ui.radius.field, ui.fieldHeight),
147
+ // Additive: children 2–4 (FUT-2766–2768) each add one more source here as
148
+ // their own geometry overrides land — this PR wires the merge helper to
149
+ // `fieldOverrides` alone, since no geometry override exists yet.
150
+ components: mergeMuiComponents(fieldOverrides(ui.radius.field, ui.fieldHeight)),
144
151
  spacing: ui.spacingUnit,
145
- typography: { fontFamily: ui.typography.fontFamily ?? WEB_FONT_FAMILY },
152
+ density: ui.density,
153
+ typography: {
154
+ fontFamily: ui.typography.fontFamily ?? WEB_FONT_FAMILY,
155
+ // MUI multiplies every `pxToRem` size by `fontSize / 14` — the lever a
156
+ // density mode moves (`./tokens/relative.ts`). `htmlFontSize` stays
157
+ // untouched: that is a reader's own zoom/accessibility setting, not this.
158
+ fontSize: densityFontSize(ui.density.factor),
159
+ },
146
160
  zIndex: { ...ui.zIndex },
147
161
  };
148
162
  }
@@ -3,6 +3,8 @@
3
3
  * barrel over this folder — see that file for why.
4
4
  */
5
5
  import type {
6
+ SettingCardCopy,
7
+ SettingSwitchCopy,
6
8
  TableFilterCopy,
7
9
  } from './copy';
8
10
 
@@ -13,3 +15,17 @@ export const PT_BR_TABLE_FILTER_COPY: TableFilterCopy = {
13
15
  rangeMin: "Mínimo",
14
16
  rangeMax: "Máximo",
15
17
  };
18
+
19
+ export const PT_BR_SETTING_CARD_COPY: SettingCardCopy = {
20
+ edit: "Editar",
21
+ cancel: "Cancelar",
22
+ save: "Salvar",
23
+ saving: "Salvando…",
24
+ learnMore: "Saiba mais",
25
+ saveFailed: "Não foi possível salvar. Tente novamente.",
26
+ };
27
+
28
+ export const PT_BR_SETTING_SWITCH_COPY: SettingSwitchCopy = {
29
+ saving: "Salvando…",
30
+ saveFailed: "Não foi possível salvar. Tente novamente.",
31
+ };
@@ -0,0 +1,118 @@
1
+ /**
2
+ * THE ONE DENSITY KNOB, WITH NO RENDERER BEHIND IT.
3
+ *
4
+ * A host that wants a compact admin or a roomy kiosk should say so once, in
5
+ * the theme — not hunt through every component's own numbers. Because every
6
+ * size already goes through `rem(theme, px)` / `theme.spacing()` / `fieldHeight()`
7
+ * (FUT-2585, `./relative.ts`), moving the type scale, the spacing unit and the
8
+ * field height BY THE SAME FACTOR is enough to make the whole package denser
9
+ * or roomier — no `size` step is rewritten, no component is touched (FUT-2764
10
+ * Decision 3).
11
+ *
12
+ * Three named levels, or a raw factor for a repository the three names don't
13
+ * fit (a kiosk app, say). A repository can also redefine what a named level
14
+ * itself means (`densityFactors`). Precedence, highest first, ABOVE
15
+ * `resolveDensityFactor` itself — this file's own resolver has no notion of an
16
+ * "explicit option" to defer to, that is each CALLER's job:
17
+ *
18
+ * - On the `createUiTheme` path (`./theme.ts`): an explicit `spacingUnit` /
19
+ * `fieldHeight` option (`UiThemeOptions` carries no `typography.fontSize` —
20
+ * only `fontFamily`/`monospaceFontFamily`) still wins over EVERYTHING below,
21
+ * unchanged.
22
+ * - On the MUI-native path (`densityThemeOptions`'s output, or a host's own
23
+ * `createTheme()` options merged around it): whichever `typography.fontSize`
24
+ * / `spacing` a host's OWN object literal states last wins — plain
25
+ * JavaScript object-spread order, not a rule this package enforces. See
26
+ * `./density.ts` for exactly where to put it.
27
+ *
28
+ * Below that: a numeric `density` (used as the factor directly, no table
29
+ * lookup, and only when it is a USABLE one — see `resolveDensityFactor`) >
30
+ * `densityFactors[level]` (a repository's own override for a named level,
31
+ * same usability rule) > the built-in table below. No `density` at all
32
+ * resolves to `{ level: 'normal', factor: 1 }` — today, byte-for-byte.
33
+ *
34
+ * This file is the resolver alone, so the native renderer and `./theme.ts`
35
+ * read it without importing MUI. The web reader — `useDensity()`, the MUI
36
+ * theme channel, and the standalone `densityThemeOptions()` — is in
37
+ * `./density.ts`.
38
+ */
39
+
40
+ export type DensityLevel = 'compact' | 'normal' | 'comfortable';
41
+
42
+ export const DEFAULT_DENSITY: DensityLevel = 'normal';
43
+
44
+ /**
45
+ * The built-in factor table — the LOWEST-precedence source. A repository's
46
+ * own `densityFactors` entry for a level wins over it; a numeric `density`
47
+ * bypasses it entirely. Confirmed against screenshots before this PR merges
48
+ * (see the ticket's Done when) — `compact` 0.9, `normal` 1 (no-op),
49
+ * `comfortable` 1.1.
50
+ */
51
+ export const DENSITY_FACTOR: Record<DensityLevel, number> = {
52
+ compact: 0.9,
53
+ normal: 1,
54
+ comfortable: 1.1,
55
+ };
56
+
57
+ export interface ResolvedDensity {
58
+ /** Present only when a NAMED level was given; a raw numeric `density` has no name. */
59
+ level?: DensityLevel;
60
+ factor: number;
61
+ }
62
+
63
+ /**
64
+ * A usable factor — a positive, finite number. The same shape
65
+ * `resolveFieldHeight` (`./field-height.core`) already accepts for a `height`;
66
+ * a numeric `density` and a `densityFactors` entry are held to the same rule
67
+ * so an unusable one falls back exactly the way an unusable `fieldHeight`
68
+ * option already does, rather than baking a `0`, a negative or a `NaN`/
69
+ * `Infinity` into `spacingUnit`/`fieldHeight`/`typography.fontSize`.
70
+ */
71
+ function isUsableFactor(value: unknown): value is number {
72
+ return typeof value === 'number' && Number.isFinite(value) && value > 0;
73
+ }
74
+
75
+ /**
76
+ * Precedence (highest first): a numeric `density` IS the factor, no table lookup —
77
+ * but only when it is a usable one (a positive, finite number); `0`, a negative
78
+ * number, `NaN` or `Infinity` are not a density anyone meant, so they fall back
79
+ * to `'normal'`, factor `1`, exactly as no `density` at all does. A named
80
+ * `density` resolves through `factors?.[level] ?? DENSITY_FACTOR[level]` — a
81
+ * repository's own `densityFactors` override wins over the built-in table, but
82
+ * only when IT is usable too; an unusable entry falls back to the BUILT-IN
83
+ * table's value for that same level (not to `'normal'` — the level itself is
84
+ * still the one asked for, only its factor is unusable). No `density` at all
85
+ * resolves to `{ level: 'normal', factor: 1 }`.
86
+ */
87
+ export function resolveDensityFactor(
88
+ density?: DensityLevel | number,
89
+ factors?: Partial<Record<DensityLevel, number>>,
90
+ ): ResolvedDensity {
91
+ if (typeof density === 'number') {
92
+ if (isUsableFactor(density)) return { factor: density };
93
+ density = undefined; // not usable — fall through to 'normal', below
94
+ }
95
+ const level = density ?? DEFAULT_DENSITY;
96
+ const override = factors?.[level];
97
+ const factor = isUsableFactor(override) ? override : DENSITY_FACTOR[level];
98
+ return { level, factor };
99
+ }
100
+
101
+ const BASE_FONT_SIZE = 14; // MUI's own typography.fontSize baseline
102
+ const BASE_SPACING_UNIT = 8; // theme.ts's literal default
103
+ const BASE_FIELD_HEIGHT = 2.5; // field-height.core.ts's DEFAULT_FIELD_HEIGHT
104
+
105
+ /** MUI's own `typography.fontSize` at this factor. `htmlFontSize` is never touched. */
106
+ export function densityFontSize(factor: number): number {
107
+ return BASE_FONT_SIZE * factor;
108
+ }
109
+
110
+ /** The theme's `spacingUnit` at this factor. */
111
+ export function densitySpacingUnit(factor: number): number {
112
+ return BASE_SPACING_UNIT * factor;
113
+ }
114
+
115
+ /** The standard field height (multiples of the default font size) at this factor. */
116
+ export function densityFieldHeight(factor: number): number {
117
+ return BASE_FIELD_HEIGHT * factor;
118
+ }
@@ -0,0 +1,134 @@
1
+ import { useTheme } from '@mui/material/styles/index.js';
2
+ import type { ThemeOptions } from '@mui/material/styles/index.js';
3
+
4
+ import {
5
+ densityFieldHeight,
6
+ densityFontSize,
7
+ densitySpacingUnit,
8
+ resolveDensityFactor,
9
+ type DensityLevel,
10
+ type ResolvedDensity,
11
+ } from './density.core';
12
+ import { fieldOverrides, mergeMuiComponents } from './field-height';
13
+ import { DEFAULT_FIELD_RADIUS } from './field-radius.core';
14
+
15
+ /**
16
+ * DENSITY ON THE WEB: the MUI theme channel, the reader, and the standalone
17
+ * entry point for a host that never calls `createUiTheme`/`UiProvider`.
18
+ *
19
+ * The argument for one density knob, the factor table and its precedence are
20
+ * in `./density.core.ts`.
21
+ */
22
+
23
+ export {
24
+ DEFAULT_DENSITY,
25
+ DENSITY_FACTOR,
26
+ densityFieldHeight,
27
+ densityFontSize,
28
+ densitySpacingUnit,
29
+ resolveDensityFactor,
30
+ type DensityLevel,
31
+ type ResolvedDensity,
32
+ } from './density.core';
33
+
34
+ declare module '@mui/material/styles' {
35
+ interface Theme {
36
+ /** The density this theme renders at. See `@12-apps/ui/tokens`' `useDensity`. */
37
+ density?: ResolvedDensity;
38
+ }
39
+ interface ThemeOptions {
40
+ /** The density this theme renders at. See `@12-apps/ui/tokens`' `useDensity`. */
41
+ density?: ResolvedDensity;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * The theme's resolved density — a plain theme read, not a step-shifting
47
+ * resolver (`size` stays hierarchy; see `./density.core.ts`). A `styleOverrides`
48
+ * callback already gets `{ theme }` and can read `theme.density` directly;
49
+ * this is for a component that needs the level in its own render logic
50
+ * (`Table`/`DataGrid`/`DataViews` each read it once to source their own
51
+ * `density` prop's default).
52
+ *
53
+ * Falls back to `resolveDensityFactor()` (`'normal'`, factor `1`) for a bare
54
+ * MUI theme built without `createUiTheme`/`muiThemeOptionsFrom`.
55
+ */
56
+ export function useDensity(): ResolvedDensity {
57
+ return useTheme().density ?? resolveDensityFactor();
58
+ }
59
+
60
+ /**
61
+ * The density factor as a MUI `ThemeOptions` fragment, for a host that builds
62
+ * `createTheme()` directly and never calls `createUiTheme`/`UiProvider` — the
63
+ * same precedence `resolveDensityFactor` gives `createUiTheme`, so the two
64
+ * consumption paths agree on `typography`/`spacing`/`fieldHeight`/`components`
65
+ * (FUT-2764's Design section), not just the first two. `fieldHeight` matters
66
+ * on its own: `Input`/`Select`/`Button` each read `theme.fieldHeight` directly
67
+ * (`Input.tsx`, `Select.tsx`, `Button.styles.ts`'s `buttonSize`), so a fragment
68
+ * that carried only `typography`/`spacing` left every field standing at the
69
+ * DEFAULT height (2.5) at every density on this path — the two paths would
70
+ * agree on the type scale and disagree on the one number three components key
71
+ * their own layout off.
72
+ *
73
+ * `components` is the matching MUI-native override (`fieldOverrides`) for a
74
+ * HOST's own bare `TextField`/`Select`, mirroring `muiThemeOptionsFrom`'s own
75
+ * `components: mergeMuiComponents(fieldOverrides(...))`. It carries ONLY the
76
+ * field overrides this function knows about (`MuiOutlinedInput`'s `root`,
77
+ * `input` and `notchedOutline`; `MuiInputLabel`'s `outlined`) — a host with
78
+ * ITS OWN overrides for OTHER components merges them in with
79
+ * `mergeMuiComponents(densityThemeOptions(density).components, hostOverrides)`,
80
+ * which keeps a component only ONE side touches untouched. For a component
81
+ * BOTH sides style, the merge is by INNER key (`root`/`input`/…): a key only
82
+ * one side sets survives from that side, but a key BOTH set is replaced
83
+ * WHOLESALE by whichever source is passed LAST — not deep-merged — so a host
84
+ * wanting to ADD to, say, `MuiOutlinedInput`'s `root` alongside the radius
85
+ * override needs to write that one key's object out in full itself.
86
+ *
87
+ * `fieldRadius` (3rd argument, optional) exists because density does NOT touch
88
+ * the field's CORNER — this is only for a host that already draws its OWN,
89
+ * non-default radius and wants `components` to match it instead of clashing;
90
+ * it defaults
91
+ * to the same {@link DEFAULT_FIELD_RADIUS} `createUiTheme` itself falls back
92
+ * to when a host names no `fieldRadius`, so the two paths still agree with no
93
+ * argument passed at all — the existing 2-argument call keeps working
94
+ * unchanged.
95
+ *
96
+ * **Where to spread it — the first `createTheme()` call, not a later layering
97
+ * one.** `createTheme(options, ...args)` (`createThemeNoVars.js`) only runs
98
+ * `createSpacing`/`createTypography` on `options`, the FIRST argument; every
99
+ * later argument is deep-merged onto the theme those two already built, with
100
+ * no such reprocessing. So a host with a base theme and a SECOND, layering
101
+ * `createTheme()` call on top of it — exactly the shape a two-theme host uses,
102
+ * `createTheme(outer, { palette: { ... } })` — must apply density at the
103
+ * FIRST call (where the base itself is built), never spread onto `outer` in
104
+ * the second one:
105
+ *
106
+ * ```ts
107
+ * // RIGHT — density goes into the base's OWN construction. The second,
108
+ * // layering call is unaffected: it never restates spacing/typography/
109
+ * // fieldHeight/components itself, so `theme.spacing`/`pxToRem`/`fieldHeight`
110
+ * // carry over from `base` UNCHANGED, already correctly scaled.
111
+ * const base = createTheme({ palette: { primary: { main }, ... }, ...densityThemeOptions('compact') });
112
+ * const themed = createTheme(base, { palette: { primary: { main: brand } } });
113
+ *
114
+ * // WRONG — a second, layering argument onto an ALREADY-BUILT theme is
115
+ * // deepmerged with no reprocessing: `spacing`/`typography.fontSize` would
116
+ * // overwrite the already-resolved `theme.spacing` function/`pxToRem` ratio
117
+ * // instead of rescaling them.
118
+ * createTheme(outer, { ...densityThemeOptions('compact') });
119
+ * ```
120
+ */
121
+ export function densityThemeOptions(
122
+ density: DensityLevel | number,
123
+ factors?: Partial<Record<DensityLevel, number>>,
124
+ fieldRadius: number = DEFAULT_FIELD_RADIUS,
125
+ ): Pick<ThemeOptions, 'typography' | 'spacing' | 'fieldHeight' | 'components'> {
126
+ const { factor } = resolveDensityFactor(density, factors);
127
+ const fieldHeight = densityFieldHeight(factor);
128
+ return {
129
+ typography: { fontSize: densityFontSize(factor) },
130
+ spacing: densitySpacingUnit(factor),
131
+ fieldHeight,
132
+ components: mergeMuiComponents(fieldOverrides(fieldRadius, fieldHeight)),
133
+ };
134
+ }
@@ -44,9 +44,14 @@ export const FIELD_HEIGHT_SCALE: Record<SizeValue, number> = {
44
44
  xl: 1.4,
45
45
  };
46
46
 
47
- /** A usable standard height: the given one when it is a positive number, the default otherwise. */
48
- export function resolveFieldHeight(height: unknown): number {
49
- return typeof height === 'number' && Number.isFinite(height) && height > 0 ? height : DEFAULT_FIELD_HEIGHT;
47
+ /**
48
+ * A usable standard height: the given one when it is a positive number, a
49
+ * caller's own `fallback` otherwise — {@link DEFAULT_FIELD_HEIGHT} unless a
50
+ * density factor (`./density.core`) already worked out a denser or roomier
51
+ * one to fall back to instead.
52
+ */
53
+ export function resolveFieldHeight(height: unknown, fallback: number = DEFAULT_FIELD_HEIGHT): number {
54
+ return typeof height === 'number' && Number.isFinite(height) && height > 0 ? height : fallback;
50
55
  }
51
56
 
52
57
  /** A field's height for a size, in multiples of the default font size (`rem`). */
@@ -120,23 +120,34 @@ export function fieldHeightOverrides(height: number = DEFAULT_FIELD_HEIGHT): Com
120
120
  }
121
121
 
122
122
  /**
123
- * Both field overrides — the corner and the height — merged per component.
124
- * They meet on `MuiOutlinedInput` (`root` from the radius, `input` from the
125
- * height), so a plain spread would lose one of them.
123
+ * Several `Components<Theme>` override sets, merged per component name — a
124
+ * later source's `styleOverrides` win over an earlier one's for the SAME
125
+ * inner key, but neither erases the other's keys. A plain spread of the
126
+ * top-level objects would drop every override but the last source's for a
127
+ * component two sources both style (`fieldOverrides` below merges exactly
128
+ * two; density's geometry overrides, FUT-2766–2768, add more).
126
129
  */
127
- export function fieldOverrides(radius: number | undefined, height: number | undefined): Components<Theme> {
130
+ export function mergeMuiComponents(...sources: Components<Theme>[]): Components<Theme> {
128
131
  type Entry = { styleOverrides?: Record<string, unknown> };
129
- const corner = fieldRadiusOverrides(radius) as Record<string, Entry>;
130
- const tall = fieldHeightOverrides(height) as Record<string, Entry>;
131
- const names = new Set([...Object.keys(corner), ...Object.keys(tall)]);
132
+ const maps = sources as unknown as Record<string, Entry>[];
133
+ const names = new Set(maps.flatMap((map) => Object.keys(map)));
132
134
  return Object.fromEntries(
133
135
  [...names].map((name) => [
134
136
  name,
135
- { styleOverrides: { ...corner[name]?.styleOverrides, ...tall[name]?.styleOverrides } },
137
+ { styleOverrides: Object.assign({}, ...maps.map((map) => map[name]?.styleOverrides)) },
136
138
  ]),
137
139
  ) as Components<Theme>;
138
140
  }
139
141
 
142
+ /**
143
+ * Both field overrides — the corner and the height — merged per component.
144
+ * They meet on `MuiOutlinedInput` (`root` from the radius, `input` from the
145
+ * height), so a plain spread would lose one of them.
146
+ */
147
+ export function fieldOverrides(radius: number | undefined, height: number | undefined): Components<Theme> {
148
+ return mergeMuiComponents(fieldRadiusOverrides(radius), fieldHeightOverrides(height));
149
+ }
150
+
140
151
  /**
141
152
  * THE field standard on a MUI `TextField` / `Select` / `Autocomplete`, for a
142
153
  * composite that renders MUI's own: the field radius, the field height for
@@ -15,5 +15,16 @@ export {
15
15
  fieldHeightPx,
16
16
  fieldHeightRem,
17
17
  } from './field-height.core';
18
+ // The density knob's factor table and resolver (FUT-2764); `DensityLevel`/
19
+ // `ResolvedDensity` are already exported above, through `./theme`. NOT
20
+ // `useDensity`, which reads a MUI theme and belongs to the web build.
21
+ export {
22
+ DEFAULT_DENSITY,
23
+ DENSITY_FACTOR,
24
+ densityFieldHeight,
25
+ densityFontSize,
26
+ densitySpacingUnit,
27
+ resolveDensityFactor,
28
+ } from './density.core';
18
29
  // The named colour sets a *.metrics.ts table reads (FUT-2593); no MUI behind them.
19
30
  export * from './ink.core';
@@ -33,7 +33,22 @@ export {
33
33
  fieldHeightRem,
34
34
  fieldOverrides,
35
35
  fieldTextFieldStyles,
36
+ mergeMuiComponents,
36
37
  } from './field-height';
38
+ // The theme's density knob (FUT-2764): the factor table, the resolver, the
39
+ // per-repository override and the standalone entry for a host that builds
40
+ // `createTheme()` directly. `DensityLevel`/`ResolvedDensity` are already
41
+ // exported above, through `./theme`.
42
+ export {
43
+ DEFAULT_DENSITY,
44
+ DENSITY_FACTOR,
45
+ densityFieldHeight,
46
+ densityFontSize,
47
+ densitySpacingUnit,
48
+ densityThemeOptions,
49
+ resolveDensityFactor,
50
+ useDensity,
51
+ } from './density';
37
52
 
38
53
  export interface Accent {
39
54
  main: string;
@@ -8,12 +8,23 @@ import { contrastText, DARK_TEXT_PRIMARY, inkOver } from './ink-over';
8
8
  */
9
9
  export { contrastText, inkOver };
10
10
  import { cssLengthToPx, cssTrackingToEm } from './css-units';
11
+ import {
12
+ densityFieldHeight,
13
+ densitySpacingUnit,
14
+ resolveDensityFactor,
15
+ type DensityLevel,
16
+ type ResolvedDensity,
17
+ } from './density.core';
11
18
  import { resolveFieldHeight } from './field-height.core';
12
19
  import { DEFAULT_FIELD_RADIUS } from './field-radius.core';
13
20
  import { HEADING_SCALE, type HeadingLevel } from './heading-scale';
14
21
 
15
22
  import type { SizeValue } from './vocabulary';
16
23
 
24
+ // Re-exported so a caller of `@12-apps/ui/tokens` (or `./theme` directly) gets
25
+ // the density types alongside `UiThemeOptions.density` without a second import.
26
+ export type { DensityLevel, ResolvedDensity };
27
+
17
28
  /**
18
29
  * THE THEME BOTH RENDERERS READ.
19
30
  *
@@ -120,6 +131,14 @@ export interface UiTheme {
120
131
  * (`./field-height.core`) is the dp a field of `size` lays out at.
121
132
  */
122
133
  fieldHeight: number;
134
+ /**
135
+ * The resolved density (FUT-2764): `factor` scales the type scale, the
136
+ * spacing unit and `fieldHeight` together (see `./density.core`); `level`
137
+ * is present only when a NAMED level was given, absent for a raw numeric
138
+ * `density`. Always resolved — `factor` is never optional. Unset resolves
139
+ * to `{ level: 'normal', factor: 1 }`, today's numbers exactly.
140
+ */
141
+ density: ResolvedDensity;
123
142
  typography: UiTypography;
124
143
  zIndex: { appBar: number; drawer: number; modal: number; snackbar: number; tooltip: number };
125
144
  }
@@ -139,6 +158,26 @@ export interface UiThemeOptions {
139
158
  background: Partial<UiPalette['background']>;
140
159
  }>;
141
160
  typography?: Partial<Pick<UiTypography, 'fontFamily' | 'monospaceFontFamily'>>;
161
+ /**
162
+ * `spacingUnit` and `fieldHeight` below still win over EVERYTHING, including
163
+ * this — density only supplies THEIR fallback, the same `??` pattern those
164
+ * two already use. Precedence, highest first: an explicit `spacingUnit` /
165
+ * `fieldHeight` option > a numeric `density` (used as the factor directly,
166
+ * no table lookup) > `densityFactors[level]` (below) > the built-in table
167
+ * (`compact` 0.9 / `normal` 1 / `comfortable` 1.1). No `density` at all is
168
+ * `'normal'`, factor `1` — today, byte-for-byte. A numeric `density` that is
169
+ * not a positive, finite number (`0`, negative, `NaN`, `Infinity`) falls back
170
+ * to `'normal'` the same way; a `densityFactors` entry that isn't falls back
171
+ * to the built-in table's value for that level (see `./density.core`).
172
+ *
173
+ * A named level (`density: 'compact'`, e.g. a backoffice app), no
174
+ * `density` at all (`'normal'`, e.g. a storefront), or a raw factor
175
+ * (`density: 1.15`, e.g. a kiosk app whose own hardware needs a value
176
+ * none of the three names fit).
177
+ */
178
+ density?: DensityLevel | number;
179
+ /** A repository's own factor for a named level, overriding the built-in table above. */
180
+ densityFactors?: Partial<Record<DensityLevel, number>>;
142
181
  spacingUnit?: number;
143
182
  /** The radius every field is drawn with, in dp. Defaults to {@link DEFAULT_FIELD_RADIUS}. */
144
183
  fieldRadius?: number;
@@ -304,7 +343,8 @@ export function createUiTheme(options: UiThemeOptions = {}): UiTheme {
304
343
  const seeds = options.palette ?? {};
305
344
  const brand = DEFAULT_BRAND[mode];
306
345
  const defaults = MODE_DEFAULTS[mode];
307
- const spacingUnit = options.spacingUnit ?? 8;
346
+ const density = resolveDensityFactor(options.density, options.densityFactors);
347
+ const spacingUnit = options.spacingUnit ?? densitySpacingUnit(density.factor);
308
348
 
309
349
  const palette: UiPalette = {
310
350
  mode,
@@ -328,7 +368,8 @@ export function createUiTheme(options: UiThemeOptions = {}): UiTheme {
328
368
  spacing: (units: number) => units * spacingUnit,
329
369
  spacingUnit,
330
370
  radius: { sm: 2, md: 4, lg: 8, xl: 16, full: 9999, field: options.fieldRadius ?? DEFAULT_FIELD_RADIUS },
331
- fieldHeight: resolveFieldHeight(options.fieldHeight),
371
+ fieldHeight: resolveFieldHeight(options.fieldHeight, densityFieldHeight(density.factor)),
372
+ density,
332
373
  typography: {
333
374
  fontFamily: options.typography?.fontFamily,
334
375
  monospaceFontFamily: options.typography?.monospaceFontFamily,