@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,65 @@
1
+ # SettingGrid
2
+
3
+ ## Purpose
4
+
5
+ Lays setting cards out in **one, two or three columns by the width it is
6
+ given**. Part of the `layout/SettingCard` family.
7
+
8
+ - **Container queries, not media queries.** A settings grid lives beside a
9
+ navigation rail, inside a drawer, in half a split view; the viewport says
10
+ nothing about how wide any of those are. The grid asks its own width.
11
+ - **Equal-height rows, without measuring.** Each row is as tall as its tallest
12
+ card and every card in it stretches to match (`grid-auto-rows: auto` with
13
+ `align-items: stretch`). Not `1fr` rows — those make *every* row as tall as the
14
+ tallest one on the page.
15
+ - **An open card spans the row.** A [`SettingCard`](./SettingCard.md) mid-edit
16
+ takes the whole row, wherever it sat, so its form has room.
17
+
18
+ ## Usage
19
+
20
+ ```tsx
21
+ import { SettingCard, SettingGrid, SettingToggle } from '@12-apps/ui/layout/SettingCard';
22
+
23
+ <SettingGrid aria-label="Security">
24
+ <SettingCard … />
25
+ <SettingToggle … />
26
+ <SettingGroup … />
27
+ </SettingGrid>
28
+ ```
29
+
30
+ ## Props
31
+
32
+ | prop | type | default | effect |
33
+ |---|---|---|---|
34
+ | `children` | `ReactNode` | **required** | The cards. |
35
+ | `minColumnWidth` | `number` | `320` | The narrowest a column may get, in design px (scaled through the type scale). A column is added each time the grid's own width fits one more. |
36
+ | `maxColumns` | `1 \| 2 \| 3` | `3` | The most columns laid out. |
37
+ | `gap` | `number` | `2` | Gap between cards, in theme spacing units. |
38
+ | `aria-label` | `string` | — | When set, the grid is a labelled `region`. |
39
+ | `dataTestId` | `string` | — | On the container; the inner grid is `<id>-grid`. |
40
+ | `className`, `sx` | | | On the container. |
41
+
42
+ ## How the columns are decided
43
+
44
+ The outer element is an `inline-size` container named `setting-grid`
45
+ (`SETTING_GRID_CONTAINER`); the inner element is the grid, because a container
46
+ query is answered by an **ancestor**. `n` columns apply from
47
+
48
+ ```
49
+ calc(n × minColumnWidth + (n − 1) × gap)
50
+ ```
51
+
52
+ so a column is never narrower than `minColumnWidth`. Nested grids each answer
53
+ to their own container.
54
+
55
+ ## The open-card span
56
+
57
+ `SettingCard` sets `grid-column: 1 / -1` on itself while open and carries
58
+ `data-setting-card-open`. The grid also gives the whole row to a direct child
59
+ that **contains** an open card (`:has()`), so a host that wraps each card in an
60
+ element of its own keeps the behaviour.
61
+
62
+ ## Accessibility
63
+
64
+ Layout only: reading and tab order are the children's source order at every
65
+ width — the grid never reorders them.
@@ -0,0 +1,105 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import { useTheme, type CSSObject, type Theme } from '@mui/material/styles/index.js';
3
+ import { forwardRef } from 'react';
4
+
5
+ import { rem } from '../../../tokens/relative';
6
+
7
+ import { SETTING_CARD, SETTING_GRID_GAP_UNITS } from './SettingCard.metrics';
8
+ import { partTestId } from './SettingCard.parts';
9
+ import { SETTING_CARD_OPEN_ATTR, withCallerSx } from './SettingCard.styles';
10
+ import type { SettingGridColumns, SettingGridProps } from './SettingCard.types';
11
+
12
+ /** The container the grid's own queries are asked of. Named, so a nested grid answers to its own. */
13
+ export const SETTING_GRID_CONTAINER = 'setting-grid';
14
+
15
+ /** The track list for `n` equal columns. `minmax(0, …)` so a long word cannot widen its column. */
16
+ const tracks = (n: SettingGridColumns): string => `repeat(${n}, minmax(0, 1fr))`;
17
+
18
+ /**
19
+ * The narrowest the container can be and still fit `n` columns of
20
+ * `minColumnWidth` with the gaps between them. A `calc()` because the gap is a
21
+ * spacing unit and the width a type-scale length: two scales, one sum.
22
+ */
23
+ const threshold = (theme: Theme, n: number, minColumnPx: number, gapUnits: number): string =>
24
+ `calc(${n} * ${rem(theme, minColumnPx)} + ${n - 1} * ${theme.spacing(gapUnits)})`;
25
+
26
+ /**
27
+ * The grid itself.
28
+ *
29
+ * - Columns come from CONTAINER queries, not viewport ones: a settings grid
30
+ * lives beside a rail, inside a drawer, in half a split view, and the
31
+ * viewport says nothing about how wide any of those are.
32
+ * - `grid-auto-rows: auto` with `align-items: stretch` is the equal-height
33
+ * rule: each row is as tall as its tallest card and every card in it
34
+ * stretches to match. Not `1fr` rows — those would make EVERY row as tall as
35
+ * the tallest, so one open card would inflate the whole page.
36
+ * - An open card spans the row. The card sets `grid-column` on itself; the
37
+ * `:has()` rule covers a card the host wrapped in an element of its own.
38
+ */
39
+ export interface SettingGridLayout {
40
+ /** The narrowest column, in DESIGN px (drawn through `rem`). */
41
+ minColumnPx: number;
42
+ maxColumns: SettingGridColumns;
43
+ /** The gap, in theme SPACING units. */
44
+ gapUnits: number;
45
+ }
46
+
47
+ export function settingGridStyles(theme: Theme, { minColumnPx, maxColumns, gapUnits }: SettingGridLayout): CSSObject {
48
+ const styles: CSSObject = {
49
+ display: 'grid',
50
+ gap: theme.spacing(gapUnits),
51
+ gridTemplateColumns: tracks(1),
52
+ gridAutoRows: 'auto',
53
+ alignItems: 'stretch',
54
+ [`& > [${SETTING_CARD_OPEN_ATTR}], & > :has([${SETTING_CARD_OPEN_ATTR}])`]: { gridColumn: '1 / -1' },
55
+ };
56
+ for (const n of [2, 3] as const) {
57
+ if (n > maxColumns) break;
58
+ styles[`@container ${SETTING_GRID_CONTAINER} (min-width: ${threshold(theme, n, minColumnPx, gapUnits)})`] = {
59
+ gridTemplateColumns: tracks(n),
60
+ };
61
+ }
62
+ return styles;
63
+ }
64
+
65
+ /**
66
+ * Lays setting cards out in one, two or three columns by the width it is
67
+ * GIVEN — see {@link settingGridStyles}. Two elements, because a container
68
+ * query is answered by an ANCESTOR: the outer one is the container, the inner
69
+ * one the grid.
70
+ */
71
+ export const SettingGrid = forwardRef<HTMLDivElement, SettingGridProps>(function SettingGrid(props, ref) {
72
+ const {
73
+ children,
74
+ minColumnWidth = SETTING_CARD.gridMinColumnWidth,
75
+ maxColumns = 3,
76
+ gap = SETTING_GRID_GAP_UNITS,
77
+ 'aria-label': ariaLabel,
78
+ dataTestId,
79
+ className,
80
+ sx,
81
+ } = props;
82
+ const theme = useTheme();
83
+ const gridStyles = settingGridStyles(theme, { minColumnPx: minColumnWidth, maxColumns, gapUnits: gap });
84
+
85
+ return (
86
+ <Box
87
+ ref={ref}
88
+ role={ariaLabel ? 'region' : undefined}
89
+ aria-label={ariaLabel}
90
+ data-testid={dataTestId}
91
+ className={className}
92
+ sx={withCallerSx({ containerType: 'inline-size', containerName: SETTING_GRID_CONTAINER, minWidth: 0 }, sx)}
93
+ >
94
+ <Box
95
+ sx={gridStyles}
96
+ data-max-columns={maxColumns}
97
+ data-testid={partTestId(dataTestId, 'grid')}
98
+ >
99
+ {children}
100
+ </Box>
101
+ </Box>
102
+ );
103
+ });
104
+
105
+ SettingGrid.displayName = 'SettingGrid';
@@ -0,0 +1,11 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ /**
4
+ * What a `SettingGroup` tells the rows inside it: whether its main switch is
5
+ * off. `inert` on the rows' container already makes every descendant
6
+ * unreachable; this is for the family's own rows (`SettingToggle`) to ALSO
7
+ * draw and announce themselves as disabled, which `inert` does not do.
8
+ */
9
+ export const SettingGroupContext = createContext<{ inactive: boolean }>({ inactive: false });
10
+
11
+ export const useSettingGroup = (): { inactive: boolean } => useContext(SettingGroupContext);
@@ -0,0 +1,81 @@
1
+ # SettingGroup
2
+
3
+ ## Purpose
4
+
5
+ **One subject**: a main switch, plus the settings that only mean something
6
+ while it is on, indented beneath it. "Notifications" on or off, and — while on —
7
+ which notifications and when.
8
+
9
+ When the main switch is off the dependent rows **stay where they are**: dimmed,
10
+ disabled, and explained by a short hint. They are not removed. A reader
11
+ deciding whether to turn a feature on is helped by seeing what it would let
12
+ them configure, and a layout that jumps when a switch flips moves the thing
13
+ they were about to press.
14
+
15
+ Part of the `layout/SettingCard` family.
16
+
17
+ ## One group per subject — not a container for a page
18
+
19
+ A `SettingGroup` is for several settings of **the same subject**, where the
20
+ main switch decides whether the others apply at all. It is not a way to put
21
+ several unrelated settings in one box.
22
+
23
+ | these are… | use |
24
+ |---|---|
25
+ | Notifications (main switch) + digest, mentions, quiet hours | **one** `SettingGroup` — the rows mean nothing with notifications off |
26
+ | Session timeout, two-step sign-in, language | **three** cards — a `SettingCard`, a `SettingToggle`, a `SettingCard` — laid out by a `SettingGrid` |
27
+ | Backups (main switch) + frequency, retention | **one** `SettingGroup` |
28
+ | Backups and notifications | **two** groups, never one |
29
+
30
+ The test: if turning the main switch off would **not** make a row meaningless,
31
+ that row is a different subject and belongs in its own card. Squeezing two
32
+ subjects into one group gives one of them a main switch it does not have, and a
33
+ hint ("inactive until X is on") that is false for it.
34
+
35
+ ## Usage
36
+
37
+ ```tsx
38
+ import { SettingGroup, SettingToggle } from '@12-apps/ui/layout/SettingCard';
39
+
40
+ <SettingGroup
41
+ copy={switchCopy}
42
+ title="Notifications"
43
+ summary="What we tell you about, and when."
44
+ inactiveHint="Turn notifications on to choose which ones you get."
45
+ checked={settings.notifications}
46
+ onChange={(next) => api.setNotifications(next)}
47
+ >
48
+ <SettingToggle variant="row" copy={switchCopy} title="Weekly digest" checked={settings.digest} onChange={api.setDigest} />
49
+ <SettingToggle variant="row" copy={switchCopy} title="Mentions" checked={settings.mentions} onChange={api.setMentions} />
50
+ <NumberField label="Quiet hours from" value={quietFrom} onChange={setQuietFrom} min={0} max={23} suffix="h" />
51
+ </SettingGroup>
52
+ ```
53
+
54
+ ## Props
55
+
56
+ | prop | type | default | effect |
57
+ |---|---|---|---|
58
+ | `copy` | `SettingSwitchCopy` | **required** | The main switch's "saving" announcement and fallback error. |
59
+ | `title` | `string` | **required** | The subject. Names the main switch and the dependent rows' group. |
60
+ | `checked` | `boolean` | **required** | The main switch's persisted value. |
61
+ | `onChange` | `(checked: boolean) => void \| Promise<unknown>` | **required** | Persist the main switch — same async contract as [`SettingToggle`](./SettingToggle.md). |
62
+ | `inactiveHint` | `string` | **required** | Why the rows are inactive. Shown only while they are. |
63
+ | `children` | `ReactNode` | **required** | The dependent rows — `SettingToggle variant="row"`, fields, anything. |
64
+ | `summary` | `ReactNode` | — | Explanation under the title. |
65
+ | `disabled` | `boolean` | `false` | Disables the main switch; the rows are then inactive too. |
66
+ | `formatError`, `icon`, `dataTestId`, `className`, `sx` | | | As on `SettingToggle`. Parts add `-dependents` and `-hint`. |
67
+
68
+ ## When the rows are active
69
+
70
+ Only while the main switch is on **and saved**: turning it on lights the rows
71
+ once the save lands (so nobody edits rows a failed save then disables), and
72
+ turning it off dims them at once.
73
+
74
+ ## Accessibility
75
+
76
+ - The dependent rows are a `role="group"` named by the subject.
77
+ - Inactive, the group is `inert` — nothing in it is focusable or clickable,
78
+ whatever the host put there — and `aria-disabled`, described by the hint.
79
+ - The family's own rows (`SettingToggle`) also render `disabled`, so they read
80
+ as disabled rather than merely unreachable.
81
+ - Opacity alone never carries "inactive"; the hint says it in words.
@@ -0,0 +1,73 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import { useTheme } from '@mui/material/styles/index.js';
3
+ import { forwardRef, useId, useMemo } from 'react';
4
+
5
+ import { Icon } from '../../../icons';
6
+
7
+ import { useAsyncSwitch } from './SettingCard.hooks';
8
+ import { partTestId } from './SettingCard.parts';
9
+ import { dependentsStyles, hintStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';
10
+ import type { SettingGroupProps } from './SettingCard.types';
11
+ import { SettingGroupContext } from './SettingGroup.context';
12
+ import { SettingSwitchBlock, useSettingSwitchIds } from './SettingSwitch';
13
+
14
+ /**
15
+ * ONE subject: a main switch, and the settings that only mean something while
16
+ * it is on, indented beneath it.
17
+ *
18
+ * With the main switch off the dependent rows stay where they are — dimmed,
19
+ * `inert`, and explained by `inactiveHint` — rather than disappearing. A
20
+ * reader deciding whether to turn a feature on is helped by seeing what it
21
+ * would let them configure, and a layout that jumps when a switch flips moves
22
+ * the thing they were about to press.
23
+ *
24
+ * The rows are active only while the main switch is on AND saved: turning it
25
+ * on lights them once the save lands; turning it off dims them at once.
26
+ *
27
+ * Several subjects are several cards, never one group — see `SettingGroup.md`.
28
+ */
29
+ export const SettingGroup = forwardRef<HTMLElement, SettingGroupProps>(function SettingGroup(props, ref) {
30
+ const {
31
+ checked, onChange, copy, formatError, inactiveHint, children, disabled = false, dataTestId, className, sx,
32
+ } = props;
33
+ const theme = useTheme();
34
+ const ids = useSettingSwitchIds();
35
+ const hintId = `${useId()}-hint`;
36
+ const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });
37
+ const active = checked && state.shown && !disabled;
38
+ const context = useMemo(() => ({ inactive: !active }), [active]);
39
+
40
+ return (
41
+ <Box
42
+ component="section"
43
+ ref={ref}
44
+ aria-labelledby={ids.titleId}
45
+ aria-busy={state.saving || undefined}
46
+ data-active={active}
47
+ data-testid={dataTestId}
48
+ className={className}
49
+ sx={withCallerSx((t) => surfaceStyles(t, false), sx)}
50
+ >
51
+ <SettingSwitchBlock {...props} disabled={disabled} ids={ids} state={state} />
52
+ {!active && (
53
+ <Box component="p" id={hintId} sx={hintStyles(theme)} data-testid={partTestId(dataTestId, 'hint')}>
54
+ <Icon name="InfoOutlined" size="xs" />
55
+ <span>{inactiveHint}</span>
56
+ </Box>
57
+ )}
58
+ <Box
59
+ role="group"
60
+ aria-labelledby={ids.titleId}
61
+ aria-describedby={active ? undefined : hintId}
62
+ aria-disabled={active ? undefined : true}
63
+ inert={!active}
64
+ sx={dependentsStyles(theme, active)}
65
+ data-testid={partTestId(dataTestId, 'dependents')}
66
+ >
67
+ <SettingGroupContext.Provider value={context}>{children}</SettingGroupContext.Provider>
68
+ </Box>
69
+ </Box>
70
+ );
71
+ });
72
+
73
+ SettingGroup.displayName = 'SettingGroup';
@@ -0,0 +1,92 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import { useTheme } from '@mui/material/styles/index.js';
3
+ import React, { useId } from 'react';
4
+
5
+ import { Switch } from '../../form/Switch';
6
+ import { SR_ONLY_SX } from '../../form/Label/Label.styles';
7
+
8
+ import { useAsyncSwitch } from './SettingCard.hooks';
9
+ import { PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';
10
+ import { descriptionStyles } from './SettingCard.styles';
11
+ import type { SettingToggleProps } from './SettingCard.types';
12
+
13
+ /** Everything the switch-driven cards share, minus the surface each draws around it. */
14
+ export type SettingSwitchBlockProps = Pick<
15
+ SettingToggleProps,
16
+ 'title' | 'headingLevel' | 'icon' | 'summary' | 'checked' | 'onChange' | 'copy' | 'formatError' | 'dataTestId'
17
+ > & { disabled: boolean };
18
+
19
+ /** The ids one switch block wires its label, description and failure line with. */
20
+ export interface SettingSwitchIds {
21
+ titleId: string;
22
+ inputId: string;
23
+ summaryId: string;
24
+ errorId: string;
25
+ }
26
+
27
+ export const useSettingSwitchIds = (): SettingSwitchIds => {
28
+ const base = useId();
29
+ return {
30
+ titleId: `${base}-title`,
31
+ inputId: `${base}-switch`,
32
+ summaryId: `${base}-summary`,
33
+ errorId: `${base}-error`,
34
+ };
35
+ };
36
+
37
+ /**
38
+ * Title-as-label, the switch, its explanation and the failure line.
39
+ *
40
+ * The switch is never `disabled` while it saves, for the reason Save is not
41
+ * (`SettingCard.tsx`): a disabled control drops keyboard focus. It says
42
+ * `aria-busy` instead, ignores flips until the save settles (see
43
+ * `useAsyncSwitch`), shows a spinner, and a polite live region says the words.
44
+ */
45
+ export const SettingSwitchBlock: React.FC<
46
+ SettingSwitchBlockProps & { ids: SettingSwitchIds; state: ReturnType<typeof useAsyncSwitch> }
47
+ > = ({ title, headingLevel = 'h3', icon, summary, copy, disabled, dataTestId, ids, state }) => {
48
+ const theme = useTheme();
49
+ const { shown, saving, error, flip } = state;
50
+ const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null]
51
+ .filter(Boolean)
52
+ .join(' ');
53
+
54
+ const control = (
55
+ <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 1, flexShrink: 0 }}>
56
+ {saving && <PendingSpinner dataTestId={dataTestId} />}
57
+ <Switch
58
+ id={ids.inputId}
59
+ checked={shown}
60
+ onChange={(event) => void flip(event.target.checked)}
61
+ disabled={disabled}
62
+ error={Boolean(error)}
63
+ aria-describedby={describedBy || undefined}
64
+ inputProps={{ role: 'switch', 'aria-busy': saving }}
65
+ dataTestId={partTestId(dataTestId, 'switch')}
66
+ />
67
+ </Box>
68
+ );
69
+
70
+ return (
71
+ <>
72
+ <SettingHeader
73
+ titleId={ids.titleId}
74
+ title={title}
75
+ headingLevel={headingLevel}
76
+ icon={icon}
77
+ labelFor={ids.inputId}
78
+ trailing={control}
79
+ dataTestId={dataTestId}
80
+ />
81
+ {summary != null && (
82
+ <Box component="p" id={ids.summaryId} sx={descriptionStyles(theme)} data-testid={partTestId(dataTestId, 'summary')}>
83
+ {summary}
84
+ </Box>
85
+ )}
86
+ <SaveError id={ids.errorId} message={error} dataTestId={dataTestId} />
87
+ <Box role="status" aria-live="polite" sx={SR_ONLY_SX}>
88
+ {saving ? copy.saving : ''}
89
+ </Box>
90
+ </>
91
+ );
92
+ };
@@ -0,0 +1,61 @@
1
+ # SettingToggle
2
+
3
+ ## Purpose
4
+
5
+ A setting that is **one switch and nothing else**. There is no edit state:
6
+ flipping the switch is the edit, and it saves at once. Part of the
7
+ `layout/SettingCard` family.
8
+
9
+ ## Usage
10
+
11
+ ```tsx
12
+ import { SettingToggle } from '@12-apps/ui/layout/SettingCard';
13
+
14
+ <SettingToggle
15
+ copy={copy} // SettingSwitchCopy — saving + saveFailed
16
+ title="Two-step sign-in"
17
+ summary="Ask for a code on a new device."
18
+ checked={settings.twoStep}
19
+ onChange={(next) => api.setTwoStep(next)} // may return a promise
20
+ />
21
+ ```
22
+
23
+ ## Props
24
+
25
+ | prop | type | default | effect |
26
+ |---|---|---|---|
27
+ | `copy` | `SettingSwitchCopy` | **required** | The "saving" announcement and the fallback error. No shipped default. |
28
+ | `title` | `string` | **required** | The switch's `<label>` — its accessible name, and a tap target far larger than the track. |
29
+ | `checked` | `boolean` | **required** | The persisted value. |
30
+ | `onChange` | `(checked: boolean) => void \| Promise<unknown>` | **required** | Persist a flip. See below. |
31
+ | `summary` | `ReactNode` | — | Explanation under the title; the switch is `aria-describedby` it. |
32
+ | `variant` | `'card' \| 'row'` | `'card'` | `row` drops the surface — for a dependent row inside a [`SettingGroup`](./SettingGroup.md). |
33
+ | `disabled` | `boolean` | `false` | Disables the switch. Also disabled inside a `SettingGroup` whose main switch is off. |
34
+ | `formatError` | `(error: unknown) => string \| undefined` | — | The sentence for a rejected save; `undefined` falls back to `copy.saveFailed`. |
35
+ | `icon`, `dataTestId`, `className`, `sx` | | | As on `SettingCard`. Parts: `-switch`, `-title`, `-summary`, `-saving`, `-error`. |
36
+
37
+ ## Saving
38
+
39
+ - The switch shows the new value **at once** and holds it while the promise is
40
+ pending, with a spinner beside it, `aria-busy` on the input, and
41
+ `copy.saving` in a polite live region.
42
+ - **Resolved:** the switch hands back to `checked`, which the host has updated.
43
+ - **Rejected:** the switch returns to `checked` (the value actually saved) and
44
+ the error appears under it in a `role="alert"` line the switch is described
45
+ by.
46
+ - A flip while a save is pending is **ignored**, not queued: two racing writes
47
+ of a boolean have no right answer.
48
+ - The switch is never `disabled` while saving, so keyboard focus stays on it.
49
+
50
+ ## Accessibility
51
+
52
+ - `role="switch"` on the input, named by the title, described by the summary
53
+ (and the error, when there is one).
54
+ - The whole title is a `<label for>` the switch — clicking the words flips it.
55
+
56
+ ## Best practices
57
+
58
+ - Use it only when the setting is **exactly** one boolean. Anything with a
59
+ value to type or pick is a [`SettingCard`](./SettingCard.md).
60
+ - Several switches about one subject belong in a
61
+ [`SettingGroup`](./SettingGroup.md) with `variant="row"`.
@@ -0,0 +1,43 @@
1
+ import Box from '@mui/material/Box/index.js';
2
+ import { forwardRef } from 'react';
3
+
4
+ import { useAsyncSwitch } from './SettingCard.hooks';
5
+ import { flatStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';
6
+ import type { SettingToggleProps } from './SettingCard.types';
7
+ import { useSettingGroup } from './SettingGroup.context';
8
+ import { SettingSwitchBlock, useSettingSwitchIds } from './SettingSwitch';
9
+
10
+ /**
11
+ * A setting that is one switch and nothing else. There is no edit state:
12
+ * flipping it IS the edit, and it saves at once.
13
+ *
14
+ * `onChange` may be async. The switch shows the new value while the promise is
15
+ * pending, with a spinner and an announced "saving"; a rejection flips it back
16
+ * to `checked` and shows the error under it.
17
+ *
18
+ * Inside a `SettingGroup` whose main switch is off, it renders disabled.
19
+ */
20
+ export const SettingToggle = forwardRef<HTMLElement, SettingToggleProps>(function SettingToggle(props, ref) {
21
+ const { checked, onChange, copy, formatError, disabled = false, variant = 'card', dataTestId, className, sx } = props;
22
+ const group = useSettingGroup();
23
+ const ids = useSettingSwitchIds();
24
+ const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });
25
+ const card = variant === 'card';
26
+
27
+ return (
28
+ <Box
29
+ component={card ? 'section' : 'div'}
30
+ ref={ref}
31
+ aria-labelledby={ids.titleId}
32
+ aria-busy={state.saving || undefined}
33
+ data-variant={variant}
34
+ data-testid={dataTestId}
35
+ className={className}
36
+ sx={withCallerSx((theme) => (card ? surfaceStyles(theme, false) : flatStyles(theme)), sx)}
37
+ >
38
+ <SettingSwitchBlock {...props} disabled={disabled || group.inactive} ids={ids} state={state} />
39
+ </Box>
40
+ );
41
+ });
42
+
43
+ SettingToggle.displayName = 'SettingToggle';
@@ -0,0 +1,18 @@
1
+ export { SettingCard } from './SettingCard';
2
+ export { SettingToggle } from './SettingToggle';
3
+ export { SettingGroup } from './SettingGroup';
4
+ export { SettingGrid, SETTING_GRID_CONTAINER } from './SettingGrid';
5
+ export type {
6
+ SettingCardCopy,
7
+ SettingCardProps,
8
+ SettingErrorFormatter,
9
+ SettingGridColumns,
10
+ SettingGridProps,
11
+ SettingGroupProps,
12
+ SettingHeadingLevel,
13
+ SettingSaveResult,
14
+ SettingStatus,
15
+ SettingSwitchCopy,
16
+ SettingToggleProps,
17
+ SettingToggleVariant,
18
+ } from './SettingCard.types';
@@ -0,0 +1,68 @@
1
+ # SettingCard family Test Status Tracking
2
+
3
+ `SettingCard`, `SettingToggle`, `SettingGroup` and `SettingGrid` share this
4
+ folder and this file.
5
+
6
+ ## Test Files Status
7
+
8
+ - [x] SettingCard.test.stories.tsx, SettingToggle.test.stories.tsx, SettingGroup.test.stories.tsx, SettingGrid.test.stories.tsx created
9
+ - [x] `__tests__/` Vitest suites for all four
10
+ - [x] Core categories implemented (interaction, keyboard, screen reader, focus, responsive/layout, visual states, edge cases)
11
+
12
+ ## Storybook Tests Status
13
+
14
+ ### Test Results
15
+
16
+ | Test Name | Status | Pass/Fail | Notes |
17
+ | ------------------------------------------- | ------ | --------- | ------------------------------------------------------ |
18
+ | SettingCard › Opens in place | PASS | Pass | form inside the same card; no dialog |
19
+ | SettingCard › Focus round trip | PASS | Pass | first field on open, Edit on close |
20
+ | SettingCard › Keyboard only | PASS | Pass | Tab to Edit, Enter opens, Escape cancels |
21
+ | SettingCard › Save resolves | PASS | Pass | "Saving…", `aria-busy`, then new summary + focus |
22
+ | SettingCard › Save rejects | PASS | Pass | stays open, draft intact, focus stays on Save |
23
+ | SettingCard › Cancel discards | PASS | Pass | reopened form shows the saved value |
24
+ | SettingCard › Accessible names | PASS | Pass | region, heading, "Edit <title>" |
25
+ | SettingCard › Learn more disclosure | PASS | Pass | `aria-expanded` toggles, content visible |
26
+ | SettingToggle › Flip saves | PASS | Pass | optimistic value, busy but enabled, then settles |
27
+ | SettingToggle › Reject reverts | PASS | Pass | back to saved value, error shown |
28
+ | SettingToggle › Keyboard flip | PASS | Pass | Space flips; focus stays on the switch while saving |
29
+ | SettingToggle › Label is the tap target | PASS | Pass | clicking the title flips |
30
+ | SettingGroup › Off dims and disables | PASS | Pass | rows rendered, `inert`, opacity < 1, hint shown |
31
+ | SettingGroup › Off rows skipped by Tab | PASS | Pass | focus never enters the inert rows |
32
+ | SettingGroup › Turn on activates | PASS | Pass | rows live, hint gone, fields accept input |
33
+ | SettingGrid › Columns follow the container | PASS | Pass | 1 / 2 / 3 columns at 360 / 720 / 1080 px containers |
34
+ | SettingGrid › Rows share height | PASS | Pass | three cards of different content, one height |
35
+ | SettingGrid › Open card spans the row | PASS | Pass | open card width equals the grid's; back on cancel |
36
+
37
+ Legend: Pending | Running | PASS | FAIL
38
+
39
+ ## Static Stories Status
40
+
41
+ - [x] Default story (each component)
42
+ - [x] Open, Saving, SaveRejected, HostErrorMessage (SettingCard)
43
+ - [x] Saving, SaveRejected, Rows (SettingToggle)
44
+ - [x] Off (dimmed), On, Disabled, OneSubjectPerGroup (SettingGroup)
45
+ - [x] ResponsiveByContainer, OpenCardSpansRow, TwoColumnsMax, Empty (SettingGrid)
46
+ - [x] Disabled state stories
47
+ - [x] Loading (saving) state stories
48
+ - [x] Error state stories
49
+ - [x] Long content / edge cases
50
+ - [x] Dark theme (SettingCard)
51
+
52
+ ## Lint Status
53
+
54
+ - [x] No lint errors
55
+ - [x] No warnings
56
+
57
+ ## TypeCheck Status
58
+
59
+ - [x] No type errors
60
+ - [x] All props properly typed
61
+
62
+ ## Overall Component Status
63
+
64
+ - [x] All tests passing
65
+ - [x] Lint clean
66
+ - [x] TypeCheck clean
67
+ - [x] Stories working
68
+ - [ ] Ready for production (pending review)