@12-apps/ui 6.49.3 → 6.50.1

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 (492) hide show
  1. package/dist/_internal/components/data-display/Badge/Badge.js +5 -5
  2. package/dist/_internal/components/data-display/Badge/Badge.styles.js +5 -5
  3. package/dist/_internal/components/data-display/Badge/BadgeContent.js +5 -5
  4. package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
  5. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
  6. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +4 -4
  7. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +5 -5
  8. package/dist/_internal/components/data-display/Carousel/Carousel.js +5 -5
  9. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +5 -5
  10. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +5 -5
  11. package/dist/_internal/components/data-display/Chart/Chart.js +5 -5
  12. package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
  13. package/dist/_internal/components/data-display/Chart/chart-context.js +5 -5
  14. package/dist/_internal/components/data-display/Chart/chart-internals.js +5 -5
  15. package/dist/_internal/components/data-display/Chart/chart-renderers.js +5 -5
  16. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +7 -7
  17. package/dist/_internal/components/data-display/DataGrid/DataGrid.model.js +6 -6
  18. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +55 -55
  19. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +63 -63
  20. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -4
  21. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
  22. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +6 -6
  23. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +9 -9
  24. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +8 -8
  25. package/dist/_internal/components/data-display/DataViews/base-list-card.js +10 -10
  26. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +2 -2
  27. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +17 -17
  28. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
  29. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +2 -2
  30. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +11 -11
  31. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +7 -7
  32. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +4 -4
  33. package/dist/_internal/components/data-display/DataViews/data-views-export.js +4 -4
  34. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +22 -22
  35. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +14 -14
  36. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
  37. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +52 -52
  38. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +28 -28
  39. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +6 -6
  40. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +22 -22
  41. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +25 -25
  42. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +2 -2
  43. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +4 -4
  44. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
  45. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +7 -7
  46. package/dist/_internal/components/data-display/DataViews/data-views-search.js +2 -2
  47. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +4 -4
  48. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +22 -22
  49. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +16 -16
  50. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +21 -21
  51. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +4 -4
  52. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +7 -7
  53. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +6 -6
  54. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +6 -6
  55. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +5 -5
  56. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +11 -11
  57. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +2 -2
  58. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
  59. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +4 -4
  60. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +2 -2
  61. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +5 -5
  62. package/dist/_internal/components/data-display/Sheet/Sheet.js +5 -5
  63. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +5 -5
  64. package/dist/_internal/components/data-display/Table/Table.js +6 -6
  65. package/dist/_internal/components/data-display/index.js +15 -15
  66. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +4 -4
  67. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  68. package/dist/_internal/components/feedback/index.js +5 -5
  69. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +6 -6
  70. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -4
  71. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +3 -3
  72. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +3 -3
  73. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +2 -2
  74. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +3 -3
  75. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +2 -2
  76. package/dist/_internal/components/form/Button/Button.js +3 -3
  77. package/dist/_internal/components/form/Button/Button.styles.js +2 -2
  78. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +7 -7
  79. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +3 -3
  80. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +3 -3
  81. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +4 -4
  82. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +3 -3
  83. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +9 -9
  84. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +2 -2
  85. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +3 -3
  86. package/dist/_internal/components/form/CepField/CepField.js +4 -4
  87. package/dist/_internal/components/form/Command/Command.js +5 -5
  88. package/dist/_internal/components/form/Command/Command.styles.js +5 -5
  89. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +2 -2
  90. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +4 -4
  91. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +6 -6
  92. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +3 -3
  93. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +4 -4
  94. package/dist/_internal/components/form/Input/Input.js +3 -3
  95. package/dist/_internal/components/form/Input/Input.styles.js +2 -2
  96. package/dist/_internal/components/form/InputOTP/InputOTP.js +3 -3
  97. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +2 -2
  98. package/dist/_internal/components/form/Label/Label.js +5 -5
  99. package/dist/_internal/components/form/Label/Label.styles.js +5 -5
  100. package/dist/_internal/components/form/Menubar/Menubar.item.js +5 -5
  101. package/dist/_internal/components/form/Menubar/Menubar.js +5 -5
  102. package/dist/_internal/components/form/Menubar/Menubar.styles.js +5 -5
  103. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +5 -5
  104. package/dist/_internal/components/form/NumberField/NumberField.js +4 -4
  105. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +2 -2
  106. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +4 -4
  107. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +2 -2
  108. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +3 -3
  109. package/dist/_internal/components/form/Select/Select.js +5 -5
  110. package/dist/_internal/components/form/Select/Select.menu.js +3 -3
  111. package/dist/_internal/components/form/Select/Select.searchable.js +3 -3
  112. package/dist/_internal/components/form/Select/Select.styles.js +2 -2
  113. package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
  114. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +1 -1
  115. package/dist/_internal/components/form/Toggle/Toggle.js +3 -3
  116. package/dist/_internal/components/form/Toggle/Toggle.styles.js +2 -2
  117. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +2 -2
  118. package/dist/_internal/components/form/index.js +37 -37
  119. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +10 -10
  120. package/dist/_internal/components/form/total-form/Fields/CepField.js +5 -5
  121. package/dist/_internal/components/form/total-form/Fields/SelectField.js +6 -6
  122. package/dist/_internal/components/form/total-form/Fields/TextField.js +4 -4
  123. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +3 -3
  124. package/dist/_internal/components/form/total-form/Fields/index.js +23 -23
  125. package/dist/_internal/components/form/total-form/SubmitButton.js +4 -4
  126. package/dist/_internal/components/index.js +69 -69
  127. package/dist/_internal/components/layout/Box/Box.js +8 -8
  128. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +2 -2
  129. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +2 -2
  130. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +3 -3
  131. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +2 -2
  132. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +2 -2
  133. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +2 -2
  134. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +2 -2
  135. package/dist/_internal/components/layout/SettingCard/SettingCard.js +12 -12
  136. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +11 -11
  137. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +12 -12
  138. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +13 -13
  139. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +12 -12
  140. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +13 -13
  141. package/dist/_internal/components/layout/Stack/Stack.js +9 -9
  142. package/dist/_internal/components/layout/TableFilter/TableFilter.js +2 -2
  143. package/dist/_internal/components/layout/index.js +24 -24
  144. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -8
  145. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +5 -5
  146. package/dist/_internal/components/navigation/Pagination/Pagination.js +3 -3
  147. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +2 -2
  148. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +5 -5
  149. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +5 -5
  150. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +5 -5
  151. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +5 -5
  152. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  153. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +5 -5
  154. package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +5 -5
  155. package/dist/_internal/components/navigation/Tabs/Tabs.js +1 -1
  156. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +1 -1
  157. package/dist/_internal/components/navigation/index.js +10 -10
  158. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +5 -5
  159. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +5 -5
  160. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +5 -5
  161. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +5 -5
  162. package/dist/_internal/components/utility/index.js +5 -5
  163. package/dist/_internal/icons/Icon.js +8 -8
  164. package/dist/_internal/provider/UiProvider.js +7 -7
  165. package/dist/_internal/provider/mui-bridge.js +6 -6
  166. package/dist/_internal/provider/use-ui-theme.js +7 -7
  167. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  168. package/dist/_internal/tokens/density-overrides.js +5 -3
  169. package/dist/_internal/tokens/density-overrides.navigation.js +3 -1
  170. package/dist/_internal/tokens/density-overrides.selection.js +1 -1
  171. package/dist/_internal/tokens/density.js +5 -5
  172. package/dist/_internal/tokens/field-height.js +1 -1
  173. package/dist/_internal/user-avatar/user-avatar.js +4 -4
  174. package/dist/charts.js +5 -5
  175. package/dist/{chunk-XK77FY42.js → chunk-25MSGLNU.js} +4 -3
  176. package/dist/chunk-25MSGLNU.js.map +1 -0
  177. package/dist/{chunk-TPVSHO75.js → chunk-27L7H5AM.js} +3 -3
  178. package/dist/{chunk-7KJOODQB.js → chunk-2AMYHIA7.js} +2 -2
  179. package/dist/{chunk-ENFULRAR.js → chunk-2HGNCMRE.js} +2 -2
  180. package/dist/{chunk-NRSVI23L.js → chunk-2NIQSL7M.js} +2 -2
  181. package/dist/{chunk-3XS37SQT.js → chunk-2QUUCEDC.js} +3 -3
  182. package/dist/{chunk-M47ZOUGF.js → chunk-2TZ6X265.js} +23 -5
  183. package/dist/chunk-2TZ6X265.js.map +1 -0
  184. package/dist/{chunk-VYYFIESL.js → chunk-2VV6XZAU.js} +4 -4
  185. package/dist/{chunk-33NBMNTB.js → chunk-32K4DRE5.js} +2 -2
  186. package/dist/{chunk-6KLDYVRY.js → chunk-3GVMUASU.js} +2 -2
  187. package/dist/{chunk-XBLFK2FL.js → chunk-3IXMIFIT.js} +2 -2
  188. package/dist/{chunk-HJJNNRVM.js → chunk-3U45DRNS.js} +2 -2
  189. package/dist/{chunk-PXYL7QEA.js → chunk-3VFYTZ7I.js} +4 -4
  190. package/dist/{chunk-HKBJZX3C.js → chunk-4A535L3N.js} +3 -3
  191. package/dist/{chunk-GLERUZKH.js → chunk-4B5WSVS7.js} +2 -2
  192. package/dist/{chunk-SIHZBKWH.js → chunk-4BI5PCOM.js} +2 -2
  193. package/dist/{chunk-CFSUOXC3.js → chunk-4UYHS43I.js} +3 -3
  194. package/dist/{chunk-D4OFFRQI.js → chunk-5BV5DOW6.js} +2 -2
  195. package/dist/{chunk-GG62LKA3.js → chunk-5CS2KCQO.js} +2 -2
  196. package/dist/{chunk-SDPG5BXH.js → chunk-5N2UJOCT.js} +3 -3
  197. package/dist/{chunk-IAK37ABV.js → chunk-5ZBFADBL.js} +2 -2
  198. package/dist/{chunk-CYPBF3BI.js → chunk-6B5NOR2U.js} +2 -2
  199. package/dist/{chunk-GE2CCITY.js → chunk-6H73SHHN.js} +2 -2
  200. package/dist/{chunk-M65ZNPLO.js → chunk-6ZCFD4NT.js} +2 -2
  201. package/dist/{chunk-CE6K4FJY.js → chunk-742Z3VD3.js} +4 -4
  202. package/dist/{chunk-MA7WJHBS.js → chunk-ABPTS3XK.js} +4 -4
  203. package/dist/{chunk-6KFEDJOR.js → chunk-BHPLHGZP.js} +4 -4
  204. package/dist/{chunk-6JGATEOF.js → chunk-BSEZ33G6.js} +3 -3
  205. package/dist/{chunk-K7MQP2KT.js → chunk-C3YDWK5D.js} +3 -3
  206. package/dist/{chunk-OCQ6GDCF.js → chunk-CDVYJB7J.js} +2 -2
  207. package/dist/{chunk-HSKLX2NO.js → chunk-CHAWSXZX.js} +2 -2
  208. package/dist/{chunk-YRUX7XMQ.js → chunk-CMVEXPUV.js} +2 -2
  209. package/dist/{chunk-JBGCGYEC.js → chunk-CSDVRHUX.js} +2 -2
  210. package/dist/{chunk-DH6SL3SY.js → chunk-D4YPZILH.js} +2 -2
  211. package/dist/{chunk-FXWXBEOZ.js → chunk-DDJXV6EB.js} +2 -2
  212. package/dist/{chunk-GOPQEGSW.js → chunk-DJCAXJ2R.js} +2 -2
  213. package/dist/{chunk-N6DO4CPZ.js → chunk-DLO5V4AV.js} +2 -2
  214. package/dist/{chunk-S4IXC2V3.js → chunk-DZQEFBSG.js} +3 -3
  215. package/dist/{chunk-O6BOEUWN.js → chunk-EACVF3GX.js} +2 -2
  216. package/dist/{chunk-LPCIVG5D.js → chunk-EATBLXBP.js} +3 -3
  217. package/dist/{chunk-Z6T5SXST.js → chunk-EO7BGDLF.js} +2 -2
  218. package/dist/{chunk-KLOKBS77.js → chunk-ESW4Z5I7.js} +2 -2
  219. package/dist/{chunk-B3JAQMAN.js → chunk-FDJLYYDA.js} +4 -4
  220. package/dist/{chunk-NCB4GBRL.js → chunk-FM35LRNA.js} +2 -2
  221. package/dist/{chunk-VA2OKVF7.js → chunk-FM5RBGG7.js} +2 -2
  222. package/dist/{chunk-WHYVVKRS.js → chunk-FR6BUKSJ.js} +2 -2
  223. package/dist/{chunk-LCHDXLF4.js → chunk-FYTC4LOD.js} +2 -2
  224. package/dist/{chunk-4ELI2MM3.js → chunk-GAXHYRX6.js} +9 -6
  225. package/dist/chunk-GAXHYRX6.js.map +1 -0
  226. package/dist/{chunk-PTONBPZL.js → chunk-GFTZLQ2B.js} +2 -2
  227. package/dist/{chunk-7DSYQCRE.js → chunk-GNLNIEJD.js} +3 -3
  228. package/dist/{chunk-2AZZRWT6.js → chunk-GPROISHG.js} +2 -2
  229. package/dist/{chunk-MO55277P.js → chunk-GPTICJVN.js} +4 -4
  230. package/dist/{chunk-CMFJQH6A.js → chunk-GRZQM5JA.js} +2 -2
  231. package/dist/{chunk-CZPPAEWT.js → chunk-H556NMKE.js} +5 -5
  232. package/dist/{chunk-3ASNSGIY.js → chunk-HF7V3RI5.js} +2 -2
  233. package/dist/{chunk-LVXPAL2U.js → chunk-HGVWYKD4.js} +2 -2
  234. package/dist/{chunk-LJFHJZAH.js → chunk-HJUR6ZY6.js} +2 -2
  235. package/dist/{chunk-BEX3FLHB.js → chunk-HWJY7K2N.js} +2 -2
  236. package/dist/{chunk-VQXOWQCU.js → chunk-I2LF53MJ.js} +2 -2
  237. package/dist/{chunk-4UVFPORR.js → chunk-I32M7WNL.js} +2 -2
  238. package/dist/{chunk-BM4KKGL7.js → chunk-IC2M7O6A.js} +2 -2
  239. package/dist/{chunk-HLRLSCBF.js → chunk-II7Z5UB6.js} +4 -4
  240. package/dist/{chunk-YLXQWYOG.js → chunk-IIQEAN77.js} +2 -2
  241. package/dist/{chunk-72S2RGWD.js → chunk-IQZNWGIV.js} +2 -2
  242. package/dist/{chunk-4GN2RLYL.js → chunk-J4Z7BOQT.js} +2 -2
  243. package/dist/{chunk-PRMVDSTL.js → chunk-JLOMSSZD.js} +3 -3
  244. package/dist/{chunk-URDVXJUH.js → chunk-JMMFRTZP.js} +6 -6
  245. package/dist/{chunk-FDMQ7H22.js → chunk-JXTJI2YF.js} +2 -2
  246. package/dist/{chunk-CLK67TNH.js → chunk-K2E3UZUZ.js} +2 -2
  247. package/dist/{chunk-AOKLEE64.js → chunk-K4BLVDYH.js} +2 -2
  248. package/dist/{chunk-KQZGUHYZ.js → chunk-KOEKIMBT.js} +2 -2
  249. package/dist/{chunk-GUA7S6GD.js → chunk-KQUDD7UK.js} +3 -3
  250. package/dist/{chunk-NZIYHS6B.js → chunk-L3CQTVFU.js} +6 -6
  251. package/dist/{chunk-SDWOWB6F.js → chunk-LGXSGDVT.js} +2 -2
  252. package/dist/{chunk-PQS3IPMD.js → chunk-LH6SHG63.js} +2 -2
  253. package/dist/{chunk-ZKWVCSAB.js → chunk-LTE2QHBH.js} +2 -2
  254. package/dist/{chunk-QDELBNL3.js → chunk-LYNZ3XAJ.js} +2 -2
  255. package/dist/{chunk-UUJ7J7NE.js → chunk-MG3SRQ6N.js} +2 -2
  256. package/dist/{chunk-CKFZQQ6T.js → chunk-MKJ4FMEF.js} +2 -2
  257. package/dist/{chunk-FYWG2I6N.js → chunk-MT7XMJUJ.js} +11 -11
  258. package/dist/{chunk-7XKK2WOV.js → chunk-MYCR7FMI.js} +5 -5
  259. package/dist/{chunk-MVR4GURP.js → chunk-N2BVJAGH.js} +2 -2
  260. package/dist/{chunk-3CYTVX4T.js → chunk-NCHYYSGZ.js} +2 -2
  261. package/dist/{chunk-ZC5HDBQO.js → chunk-NLPKHLA6.js} +2 -2
  262. package/dist/{chunk-K3YHXOWZ.js → chunk-NP6SHLQ3.js} +11 -4
  263. package/dist/chunk-NP6SHLQ3.js.map +1 -0
  264. package/dist/{chunk-JE5GEWTG.js → chunk-NT62LREU.js} +2 -2
  265. package/dist/{chunk-AWG2AJHX.js → chunk-NXQKTMMQ.js} +2 -2
  266. package/dist/{chunk-C7GYSLPO.js → chunk-OBLTWZP2.js} +2 -2
  267. package/dist/{chunk-HGI56VCG.js → chunk-OWILUXWM.js} +2 -2
  268. package/dist/{chunk-T7BTVBOE.js → chunk-P7YUOH2E.js} +2 -2
  269. package/dist/{chunk-MSAAOQAD.js → chunk-PXDJQQ6X.js} +5 -5
  270. package/dist/{chunk-TWVRPT7J.js → chunk-QIUDYFKA.js} +2 -2
  271. package/dist/{chunk-K45ML7M7.js → chunk-QJUOWOE4.js} +2 -2
  272. package/dist/{chunk-6TPYT3UC.js → chunk-QTMMZ7QO.js} +2 -2
  273. package/dist/{chunk-NDOOZ5OS.js → chunk-QWTPK3FT.js} +3 -3
  274. package/dist/{chunk-PWPCFN62.js → chunk-RCJOTNIW.js} +2 -2
  275. package/dist/{chunk-K6LNHHSH.js → chunk-RIZRF5XR.js} +2 -2
  276. package/dist/{chunk-BOH4JG25.js → chunk-ROSYXRNN.js} +5 -5
  277. package/dist/{chunk-7KKMZJFT.js → chunk-S4GY5DXF.js} +2 -2
  278. package/dist/{chunk-3WWI75NM.js → chunk-SJ4IAZ3V.js} +11 -5
  279. package/dist/{chunk-3WWI75NM.js.map → chunk-SJ4IAZ3V.js.map} +1 -1
  280. package/dist/{chunk-EISPWFYO.js → chunk-SKZABRJN.js} +3 -3
  281. package/dist/{chunk-VYV3JOV5.js → chunk-SUH5QFAB.js} +2 -2
  282. package/dist/{chunk-QQPA3AH6.js → chunk-TH7RBREI.js} +2 -2
  283. package/dist/{chunk-BVSSEOLI.js → chunk-TIANJVF3.js} +2 -2
  284. package/dist/{chunk-V54LG3QG.js → chunk-UO3NDN45.js} +2 -2
  285. package/dist/{chunk-6GAZAJXB.js → chunk-UPCH5QOX.js} +3 -3
  286. package/dist/{chunk-NQ7NMCRI.js → chunk-UWCMMK2T.js} +2 -2
  287. package/dist/{chunk-ULPPKHRL.js → chunk-UXJUTMAY.js} +2 -2
  288. package/dist/{chunk-LF3EVXMF.js → chunk-UYOSEQNO.js} +2 -2
  289. package/dist/{chunk-7FEXRMJE.js → chunk-VEYP4EMO.js} +2 -2
  290. package/dist/{chunk-6KOR5VOT.js → chunk-VJBTFWDK.js} +4 -4
  291. package/dist/{chunk-2LKWJV65.js → chunk-VQ5GKEGO.js} +2 -2
  292. package/dist/{chunk-J77QXAKC.js → chunk-W6YR35UL.js} +6 -6
  293. package/dist/{chunk-XB7HYOMM.js → chunk-WGPG7XGD.js} +2 -2
  294. package/dist/{chunk-EKBUM7HK.js → chunk-WKB4VWKQ.js} +2 -2
  295. package/dist/{chunk-CC46BCK2.js → chunk-WLKCGWIV.js} +2 -2
  296. package/dist/{chunk-3CUWQXTG.js → chunk-WVIBQZGS.js} +3 -3
  297. package/dist/{chunk-WMKE2MAF.js → chunk-XMJ5AKDM.js} +4 -4
  298. package/dist/{chunk-WCATRYXC.js → chunk-XYHNXO6Q.js} +2 -2
  299. package/dist/{chunk-SNBAMWI5.js → chunk-YALCWIMX.js} +2 -2
  300. package/dist/{chunk-RVOEOJMZ.js → chunk-YDLJE654.js} +3 -3
  301. package/dist/{chunk-5QDBSQP5.js → chunk-YG46LIVW.js} +3 -3
  302. package/dist/{chunk-25ALEQUH.js → chunk-YK4ZG5Y4.js} +2 -2
  303. package/dist/{chunk-YTXZUTLF.js → chunk-YMCOQ2EZ.js} +2 -2
  304. package/dist/{chunk-GP4BJI3F.js → chunk-ZR33DDTI.js} +2 -2
  305. package/dist/{chunk-NFGIA2ZV.js → chunk-ZZXSBW5F.js} +2 -2
  306. package/dist/data-display/Badge.js +5 -5
  307. package/dist/data-display/CardKit.js +5 -5
  308. package/dist/data-display/Carousel.js +5 -5
  309. package/dist/data-display/Chart.js +5 -5
  310. package/dist/data-display/DataGrid.js +7 -7
  311. package/dist/data-display/DataViews.js +66 -66
  312. package/dist/data-display/FleetMap.js +11 -11
  313. package/dist/data-display/LazyImage.js +2 -2
  314. package/dist/data-display/MapPreview.js +4 -4
  315. package/dist/data-display/Sheet.js +5 -5
  316. package/dist/data-display/Table.js +6 -6
  317. package/dist/feedback/ConfirmAction.js +4 -4
  318. package/dist/feedback/NotificationStatusNotice.js +4 -4
  319. package/dist/form/AddressAutocomplete.js +6 -6
  320. package/dist/form/Autocomplete.js +3 -3
  321. package/dist/form/Button.js +3 -3
  322. package/dist/form/CategorySelect.js +9 -9
  323. package/dist/form/CepField.js +4 -4
  324. package/dist/form/Command.js +5 -5
  325. package/dist/form/CreatableSelect.js +2 -2
  326. package/dist/form/DateRangePicker.js +6 -6
  327. package/dist/form/Input.js +3 -3
  328. package/dist/form/InputOTP.js +3 -3
  329. package/dist/form/Label.js +5 -5
  330. package/dist/form/MenuSelect.js +3 -3
  331. package/dist/form/Menubar.js +5 -5
  332. package/dist/form/NumberField.js +4 -4
  333. package/dist/form/PhoneInput.js +2 -2
  334. package/dist/form/RadioGroup.js +4 -4
  335. package/dist/form/Select.js +5 -5
  336. package/dist/form/Textarea.js +2 -2
  337. package/dist/form/Toggle.js +3 -3
  338. package/dist/form/ToggleGroup.js +2 -2
  339. package/dist/form/total-form.js +26 -26
  340. package/dist/icons.js +8 -8
  341. package/dist/layout/Box.js +8 -8
  342. package/dist/layout/ContentToolbar.js +8 -8
  343. package/dist/layout/SettingCard.js +16 -16
  344. package/dist/layout/Stack.js +9 -9
  345. package/dist/layout/TableFilter.js +2 -2
  346. package/dist/navigation/AppHeader.js +8 -8
  347. package/dist/navigation/Pagination.js +3 -3
  348. package/dist/navigation/SectionNav.js +5 -5
  349. package/dist/navigation/Tabs.js +1 -1
  350. package/dist/provider.js +8 -8
  351. package/dist/social-login-button.js +4 -4
  352. package/dist/tokens.js +5 -5
  353. package/dist/types/tokens/density-overrides.d.ts.map +1 -1
  354. package/dist/types/tokens/density-overrides.navigation.d.ts.map +1 -1
  355. package/dist/types/tokens/density-overrides.selection.d.ts.map +1 -1
  356. package/dist/types/tokens/density.d.ts +1 -1
  357. package/dist/types/tokens/density.d.ts.map +1 -1
  358. package/dist/types/tokens/field-height.d.ts +24 -0
  359. package/dist/types/tokens/field-height.d.ts.map +1 -1
  360. package/dist/user-avatar.js +4 -4
  361. package/dist/utility/WorkflowStep.js +5 -5
  362. package/package.json +1 -1
  363. package/src/tokens/density-overrides.navigation.ts +43 -5
  364. package/src/tokens/density-overrides.selection.ts +31 -14
  365. package/src/tokens/density-overrides.ts +27 -11
  366. package/src/tokens/density.ts +7 -1
  367. package/src/tokens/field-height.ts +52 -5
  368. package/dist/chunk-4ELI2MM3.js.map +0 -1
  369. package/dist/chunk-K3YHXOWZ.js.map +0 -1
  370. package/dist/chunk-M47ZOUGF.js.map +0 -1
  371. package/dist/chunk-XK77FY42.js.map +0 -1
  372. /package/dist/{chunk-TPVSHO75.js.map → chunk-27L7H5AM.js.map} +0 -0
  373. /package/dist/{chunk-7KJOODQB.js.map → chunk-2AMYHIA7.js.map} +0 -0
  374. /package/dist/{chunk-ENFULRAR.js.map → chunk-2HGNCMRE.js.map} +0 -0
  375. /package/dist/{chunk-NRSVI23L.js.map → chunk-2NIQSL7M.js.map} +0 -0
  376. /package/dist/{chunk-3XS37SQT.js.map → chunk-2QUUCEDC.js.map} +0 -0
  377. /package/dist/{chunk-VYYFIESL.js.map → chunk-2VV6XZAU.js.map} +0 -0
  378. /package/dist/{chunk-33NBMNTB.js.map → chunk-32K4DRE5.js.map} +0 -0
  379. /package/dist/{chunk-6KLDYVRY.js.map → chunk-3GVMUASU.js.map} +0 -0
  380. /package/dist/{chunk-XBLFK2FL.js.map → chunk-3IXMIFIT.js.map} +0 -0
  381. /package/dist/{chunk-HJJNNRVM.js.map → chunk-3U45DRNS.js.map} +0 -0
  382. /package/dist/{chunk-PXYL7QEA.js.map → chunk-3VFYTZ7I.js.map} +0 -0
  383. /package/dist/{chunk-HKBJZX3C.js.map → chunk-4A535L3N.js.map} +0 -0
  384. /package/dist/{chunk-GLERUZKH.js.map → chunk-4B5WSVS7.js.map} +0 -0
  385. /package/dist/{chunk-SIHZBKWH.js.map → chunk-4BI5PCOM.js.map} +0 -0
  386. /package/dist/{chunk-CFSUOXC3.js.map → chunk-4UYHS43I.js.map} +0 -0
  387. /package/dist/{chunk-D4OFFRQI.js.map → chunk-5BV5DOW6.js.map} +0 -0
  388. /package/dist/{chunk-GG62LKA3.js.map → chunk-5CS2KCQO.js.map} +0 -0
  389. /package/dist/{chunk-SDPG5BXH.js.map → chunk-5N2UJOCT.js.map} +0 -0
  390. /package/dist/{chunk-IAK37ABV.js.map → chunk-5ZBFADBL.js.map} +0 -0
  391. /package/dist/{chunk-CYPBF3BI.js.map → chunk-6B5NOR2U.js.map} +0 -0
  392. /package/dist/{chunk-GE2CCITY.js.map → chunk-6H73SHHN.js.map} +0 -0
  393. /package/dist/{chunk-M65ZNPLO.js.map → chunk-6ZCFD4NT.js.map} +0 -0
  394. /package/dist/{chunk-CE6K4FJY.js.map → chunk-742Z3VD3.js.map} +0 -0
  395. /package/dist/{chunk-MA7WJHBS.js.map → chunk-ABPTS3XK.js.map} +0 -0
  396. /package/dist/{chunk-6KFEDJOR.js.map → chunk-BHPLHGZP.js.map} +0 -0
  397. /package/dist/{chunk-6JGATEOF.js.map → chunk-BSEZ33G6.js.map} +0 -0
  398. /package/dist/{chunk-K7MQP2KT.js.map → chunk-C3YDWK5D.js.map} +0 -0
  399. /package/dist/{chunk-OCQ6GDCF.js.map → chunk-CDVYJB7J.js.map} +0 -0
  400. /package/dist/{chunk-HSKLX2NO.js.map → chunk-CHAWSXZX.js.map} +0 -0
  401. /package/dist/{chunk-YRUX7XMQ.js.map → chunk-CMVEXPUV.js.map} +0 -0
  402. /package/dist/{chunk-JBGCGYEC.js.map → chunk-CSDVRHUX.js.map} +0 -0
  403. /package/dist/{chunk-DH6SL3SY.js.map → chunk-D4YPZILH.js.map} +0 -0
  404. /package/dist/{chunk-FXWXBEOZ.js.map → chunk-DDJXV6EB.js.map} +0 -0
  405. /package/dist/{chunk-GOPQEGSW.js.map → chunk-DJCAXJ2R.js.map} +0 -0
  406. /package/dist/{chunk-N6DO4CPZ.js.map → chunk-DLO5V4AV.js.map} +0 -0
  407. /package/dist/{chunk-S4IXC2V3.js.map → chunk-DZQEFBSG.js.map} +0 -0
  408. /package/dist/{chunk-O6BOEUWN.js.map → chunk-EACVF3GX.js.map} +0 -0
  409. /package/dist/{chunk-LPCIVG5D.js.map → chunk-EATBLXBP.js.map} +0 -0
  410. /package/dist/{chunk-Z6T5SXST.js.map → chunk-EO7BGDLF.js.map} +0 -0
  411. /package/dist/{chunk-KLOKBS77.js.map → chunk-ESW4Z5I7.js.map} +0 -0
  412. /package/dist/{chunk-B3JAQMAN.js.map → chunk-FDJLYYDA.js.map} +0 -0
  413. /package/dist/{chunk-NCB4GBRL.js.map → chunk-FM35LRNA.js.map} +0 -0
  414. /package/dist/{chunk-VA2OKVF7.js.map → chunk-FM5RBGG7.js.map} +0 -0
  415. /package/dist/{chunk-WHYVVKRS.js.map → chunk-FR6BUKSJ.js.map} +0 -0
  416. /package/dist/{chunk-LCHDXLF4.js.map → chunk-FYTC4LOD.js.map} +0 -0
  417. /package/dist/{chunk-PTONBPZL.js.map → chunk-GFTZLQ2B.js.map} +0 -0
  418. /package/dist/{chunk-7DSYQCRE.js.map → chunk-GNLNIEJD.js.map} +0 -0
  419. /package/dist/{chunk-2AZZRWT6.js.map → chunk-GPROISHG.js.map} +0 -0
  420. /package/dist/{chunk-MO55277P.js.map → chunk-GPTICJVN.js.map} +0 -0
  421. /package/dist/{chunk-CMFJQH6A.js.map → chunk-GRZQM5JA.js.map} +0 -0
  422. /package/dist/{chunk-CZPPAEWT.js.map → chunk-H556NMKE.js.map} +0 -0
  423. /package/dist/{chunk-3ASNSGIY.js.map → chunk-HF7V3RI5.js.map} +0 -0
  424. /package/dist/{chunk-LVXPAL2U.js.map → chunk-HGVWYKD4.js.map} +0 -0
  425. /package/dist/{chunk-LJFHJZAH.js.map → chunk-HJUR6ZY6.js.map} +0 -0
  426. /package/dist/{chunk-BEX3FLHB.js.map → chunk-HWJY7K2N.js.map} +0 -0
  427. /package/dist/{chunk-VQXOWQCU.js.map → chunk-I2LF53MJ.js.map} +0 -0
  428. /package/dist/{chunk-4UVFPORR.js.map → chunk-I32M7WNL.js.map} +0 -0
  429. /package/dist/{chunk-BM4KKGL7.js.map → chunk-IC2M7O6A.js.map} +0 -0
  430. /package/dist/{chunk-HLRLSCBF.js.map → chunk-II7Z5UB6.js.map} +0 -0
  431. /package/dist/{chunk-YLXQWYOG.js.map → chunk-IIQEAN77.js.map} +0 -0
  432. /package/dist/{chunk-72S2RGWD.js.map → chunk-IQZNWGIV.js.map} +0 -0
  433. /package/dist/{chunk-4GN2RLYL.js.map → chunk-J4Z7BOQT.js.map} +0 -0
  434. /package/dist/{chunk-PRMVDSTL.js.map → chunk-JLOMSSZD.js.map} +0 -0
  435. /package/dist/{chunk-URDVXJUH.js.map → chunk-JMMFRTZP.js.map} +0 -0
  436. /package/dist/{chunk-FDMQ7H22.js.map → chunk-JXTJI2YF.js.map} +0 -0
  437. /package/dist/{chunk-CLK67TNH.js.map → chunk-K2E3UZUZ.js.map} +0 -0
  438. /package/dist/{chunk-AOKLEE64.js.map → chunk-K4BLVDYH.js.map} +0 -0
  439. /package/dist/{chunk-KQZGUHYZ.js.map → chunk-KOEKIMBT.js.map} +0 -0
  440. /package/dist/{chunk-GUA7S6GD.js.map → chunk-KQUDD7UK.js.map} +0 -0
  441. /package/dist/{chunk-NZIYHS6B.js.map → chunk-L3CQTVFU.js.map} +0 -0
  442. /package/dist/{chunk-SDWOWB6F.js.map → chunk-LGXSGDVT.js.map} +0 -0
  443. /package/dist/{chunk-PQS3IPMD.js.map → chunk-LH6SHG63.js.map} +0 -0
  444. /package/dist/{chunk-ZKWVCSAB.js.map → chunk-LTE2QHBH.js.map} +0 -0
  445. /package/dist/{chunk-QDELBNL3.js.map → chunk-LYNZ3XAJ.js.map} +0 -0
  446. /package/dist/{chunk-UUJ7J7NE.js.map → chunk-MG3SRQ6N.js.map} +0 -0
  447. /package/dist/{chunk-CKFZQQ6T.js.map → chunk-MKJ4FMEF.js.map} +0 -0
  448. /package/dist/{chunk-FYWG2I6N.js.map → chunk-MT7XMJUJ.js.map} +0 -0
  449. /package/dist/{chunk-7XKK2WOV.js.map → chunk-MYCR7FMI.js.map} +0 -0
  450. /package/dist/{chunk-MVR4GURP.js.map → chunk-N2BVJAGH.js.map} +0 -0
  451. /package/dist/{chunk-3CYTVX4T.js.map → chunk-NCHYYSGZ.js.map} +0 -0
  452. /package/dist/{chunk-ZC5HDBQO.js.map → chunk-NLPKHLA6.js.map} +0 -0
  453. /package/dist/{chunk-JE5GEWTG.js.map → chunk-NT62LREU.js.map} +0 -0
  454. /package/dist/{chunk-AWG2AJHX.js.map → chunk-NXQKTMMQ.js.map} +0 -0
  455. /package/dist/{chunk-C7GYSLPO.js.map → chunk-OBLTWZP2.js.map} +0 -0
  456. /package/dist/{chunk-HGI56VCG.js.map → chunk-OWILUXWM.js.map} +0 -0
  457. /package/dist/{chunk-T7BTVBOE.js.map → chunk-P7YUOH2E.js.map} +0 -0
  458. /package/dist/{chunk-MSAAOQAD.js.map → chunk-PXDJQQ6X.js.map} +0 -0
  459. /package/dist/{chunk-TWVRPT7J.js.map → chunk-QIUDYFKA.js.map} +0 -0
  460. /package/dist/{chunk-K45ML7M7.js.map → chunk-QJUOWOE4.js.map} +0 -0
  461. /package/dist/{chunk-6TPYT3UC.js.map → chunk-QTMMZ7QO.js.map} +0 -0
  462. /package/dist/{chunk-NDOOZ5OS.js.map → chunk-QWTPK3FT.js.map} +0 -0
  463. /package/dist/{chunk-PWPCFN62.js.map → chunk-RCJOTNIW.js.map} +0 -0
  464. /package/dist/{chunk-K6LNHHSH.js.map → chunk-RIZRF5XR.js.map} +0 -0
  465. /package/dist/{chunk-BOH4JG25.js.map → chunk-ROSYXRNN.js.map} +0 -0
  466. /package/dist/{chunk-7KKMZJFT.js.map → chunk-S4GY5DXF.js.map} +0 -0
  467. /package/dist/{chunk-EISPWFYO.js.map → chunk-SKZABRJN.js.map} +0 -0
  468. /package/dist/{chunk-VYV3JOV5.js.map → chunk-SUH5QFAB.js.map} +0 -0
  469. /package/dist/{chunk-QQPA3AH6.js.map → chunk-TH7RBREI.js.map} +0 -0
  470. /package/dist/{chunk-BVSSEOLI.js.map → chunk-TIANJVF3.js.map} +0 -0
  471. /package/dist/{chunk-V54LG3QG.js.map → chunk-UO3NDN45.js.map} +0 -0
  472. /package/dist/{chunk-6GAZAJXB.js.map → chunk-UPCH5QOX.js.map} +0 -0
  473. /package/dist/{chunk-NQ7NMCRI.js.map → chunk-UWCMMK2T.js.map} +0 -0
  474. /package/dist/{chunk-ULPPKHRL.js.map → chunk-UXJUTMAY.js.map} +0 -0
  475. /package/dist/{chunk-LF3EVXMF.js.map → chunk-UYOSEQNO.js.map} +0 -0
  476. /package/dist/{chunk-7FEXRMJE.js.map → chunk-VEYP4EMO.js.map} +0 -0
  477. /package/dist/{chunk-6KOR5VOT.js.map → chunk-VJBTFWDK.js.map} +0 -0
  478. /package/dist/{chunk-2LKWJV65.js.map → chunk-VQ5GKEGO.js.map} +0 -0
  479. /package/dist/{chunk-J77QXAKC.js.map → chunk-W6YR35UL.js.map} +0 -0
  480. /package/dist/{chunk-XB7HYOMM.js.map → chunk-WGPG7XGD.js.map} +0 -0
  481. /package/dist/{chunk-EKBUM7HK.js.map → chunk-WKB4VWKQ.js.map} +0 -0
  482. /package/dist/{chunk-CC46BCK2.js.map → chunk-WLKCGWIV.js.map} +0 -0
  483. /package/dist/{chunk-3CUWQXTG.js.map → chunk-WVIBQZGS.js.map} +0 -0
  484. /package/dist/{chunk-WMKE2MAF.js.map → chunk-XMJ5AKDM.js.map} +0 -0
  485. /package/dist/{chunk-WCATRYXC.js.map → chunk-XYHNXO6Q.js.map} +0 -0
  486. /package/dist/{chunk-SNBAMWI5.js.map → chunk-YALCWIMX.js.map} +0 -0
  487. /package/dist/{chunk-RVOEOJMZ.js.map → chunk-YDLJE654.js.map} +0 -0
  488. /package/dist/{chunk-5QDBSQP5.js.map → chunk-YG46LIVW.js.map} +0 -0
  489. /package/dist/{chunk-25ALEQUH.js.map → chunk-YK4ZG5Y4.js.map} +0 -0
  490. /package/dist/{chunk-YTXZUTLF.js.map → chunk-YMCOQ2EZ.js.map} +0 -0
  491. /package/dist/{chunk-GP4BJI3F.js.map → chunk-ZR33DDTI.js.map} +0 -0
  492. /package/dist/{chunk-NFGIA2ZV.js.map → chunk-ZZXSBW5F.js.map} +0 -0
package/dist/tokens.js CHANGED
@@ -11,15 +11,15 @@ import {
11
11
  import {
12
12
  densityThemeOptions,
13
13
  useDensity
14
- } from "./chunk-3WWI75NM.js";
14
+ } from "./chunk-SJ4IAZ3V.js";
15
15
  import {
16
16
  chipDensityOverrides,
17
17
  iconButtonDensityOverrides
18
- } from "./chunk-XK77FY42.js";
18
+ } from "./chunk-25MSGLNU.js";
19
19
  import {
20
20
  checkboxRadioDensityOverrides,
21
21
  switchDensityOverrides
22
- } from "./chunk-4ELI2MM3.js";
22
+ } from "./chunk-GAXHYRX6.js";
23
23
  import {
24
24
  paginationItemDensityOverrides,
25
25
  sliderDensityOverrides,
@@ -27,7 +27,7 @@ import {
27
27
  tableCellDensityOverrides,
28
28
  tabsIndicatorDensityOverrides,
29
29
  toggleButtonDensityOverrides
30
- } from "./chunk-K3YHXOWZ.js";
30
+ } from "./chunk-NP6SHLQ3.js";
31
31
  import {
32
32
  headingMetrics
33
33
  } from "./chunk-PT6TCWIW.js";
@@ -40,7 +40,7 @@ import {
40
40
  fieldOverrides,
41
41
  fieldTextFieldStyles,
42
42
  mergeMuiComponents
43
- } from "./chunk-M47ZOUGF.js";
43
+ } from "./chunk-2TZ6X265.js";
44
44
  import "./chunk-7FDU3FIN.js";
45
45
  import "./chunk-EPEJMTCQ.js";
46
46
  import {
@@ -1 +1 @@
1
- {"version":3,"file":"density-overrides.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAQlF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA8GtG,4DAA4D;AAC5D,wBAAgB,0BAA0B,IAAI,UAAU,CAAC,KAAK,CAAC,CAU9D;AAwCD,2FAA2F;AAC3F,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,KAAK,CAAC,CAWxD"}
1
+ {"version":3,"file":"density-overrides.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAQlF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AA4HtG,4DAA4D;AAC5D,wBAAgB,0BAA0B,IAAI,UAAU,CAAC,KAAK,CAAC,CAU9D;AA0CD,2FAA2F;AAC3F,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,KAAK,CAAC,CAWxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"density-overrides.navigation.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.navigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAsDlF,8DAA8D;AAC9D,wBAAgB,4BAA4B,IAAI,UAAU,CAAC,KAAK,CAAC,CAUhE;AAYD,iFAAiF;AACjF,wBAAgB,mBAAmB,IAAI,UAAU,CAAC,KAAK,CAAC,CASvD;AAoBD,oEAAoE;AACpE,wBAAgB,yBAAyB,IAAI,UAAU,CAAC,KAAK,CAAC,CAS7D;AA0BD;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,UAAU,CAAC,KAAK,CAAC,CAUlE;AAwBD,8FAA8F;AAC9F,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,KAAK,CAAC,CAW1D;AAsBD,0DAA0D;AAC1D,wBAAgB,6BAA6B,IAAI,UAAU,CAAC,KAAK,CAAC,CAQjE"}
1
+ {"version":3,"file":"density-overrides.navigation.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.navigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AA+ElF,8DAA8D;AAC9D,wBAAgB,4BAA4B,IAAI,UAAU,CAAC,KAAK,CAAC,CAUhE;AAYD,iFAAiF;AACjF,wBAAgB,mBAAmB,IAAI,UAAU,CAAC,KAAK,CAAC,CASvD;AAiCD,oEAAoE;AACpE,wBAAgB,yBAAyB,IAAI,UAAU,CAAC,KAAK,CAAC,CAS7D;AA0BD;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,UAAU,CAAC,KAAK,CAAC,CAUlE;AAwBD,8FAA8F;AAC9F,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,KAAK,CAAC,CAW1D;AAsBD,0DAA0D;AAC1D,wBAAgB,6BAA6B,IAAI,UAAU,CAAC,KAAK,CAAC,CAQjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"density-overrides.selection.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAoIlF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,IAAI,UAAU,CAAC,KAAK,CAAC,CAKjE;AAgDD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,KAAK,CAAC,CAW1D"}
1
+ {"version":3,"file":"density-overrides.selection.d.ts","sourceRoot":"","sources":["../../../src/tokens/density-overrides.selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAuIlF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,IAAI,UAAU,CAAC,KAAK,CAAC,CAKjE;AA8DD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,KAAK,CAAC,CAW1D"}
@@ -104,5 +104,5 @@ export declare function useDensity(): ResolvedDensity;
104
104
  * createTheme(outer, { ...densityThemeOptions('compact') });
105
105
  * ```
106
106
  */
107
- export declare function densityThemeOptions(density: DensityLevel | number, factors?: Partial<Record<DensityLevel, number>>, fieldRadius?: number): Pick<ThemeOptions, 'typography' | 'spacing' | 'fieldHeight' | 'components'>;
107
+ export declare function densityThemeOptions(density: DensityLevel | number, factors?: Partial<Record<DensityLevel, number>>, fieldRadius?: number): Pick<ThemeOptions, 'typography' | 'spacing' | 'fieldHeight' | 'fieldRadius' | 'components'>;
108
108
  //# sourceMappingURL=density.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"density.d.ts","sourceRoot":"","sources":["../../../src/tokens/density.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAgBxB;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,KAAK;QACb,iFAAiF;QACjF,OAAO,CAAC,EAAE,eAAe,CAAC;KAC3B;IACD,UAAU,YAAY;QACpB,iFAAiF;QACjF,OAAO,CAAC,EAAE,eAAe,CAAC;KAC3B;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAE5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,GAAG,MAAM,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAC/C,WAAW,GAAE,MAA6B,GACzC,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC,CAqB7E"}
1
+ {"version":3,"file":"density.d.ts","sourceRoot":"","sources":["../../../src/tokens/density.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAgBxB;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,KAAK;QACb,iFAAiF;QACjF,OAAO,CAAC,EAAE,eAAe,CAAC;KAC3B;IACD,UAAU,YAAY;QACpB,iFAAiF;QACjF,OAAO,CAAC,EAAE,eAAe,CAAC;KAC3B;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAE5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,GAAG,MAAM,EAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAC/C,WAAW,GAAE,MAA6B,GACzC,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC,CA2B7F"}
@@ -49,6 +49,30 @@ export declare function fieldHeightOverrides(height?: number): Components<Theme>
49
49
  * top-level objects would drop every override but the last source's for a
50
50
  * component two sources both style (`fieldOverrides` below merges exactly
51
51
  * two; density's geometry overrides, FUT-2766–2768, add more).
52
+ *
53
+ * `styleOverrides` keeps the rule above, wholesale by inner slot key, with NO
54
+ * new closures — a slot's value is taken by reference from whichever source
55
+ * set it last, never wrapped, so two theme builds from the same options still
56
+ * compare equal (see `mergeMuiComponents`'s own suite).
57
+ *
58
+ * Three more keys survive the merge (FUT-2967), where they used to be
59
+ * silently dropped the moment a SECOND source styled the same component —
60
+ * exactly the shape density (FUT-2766–2768) and a host's own `components`
61
+ * both touching one component now takes:
62
+ *
63
+ * - `defaultProps` — a SHALLOW merge, the later source winning per key
64
+ * (the same precedence `styleOverrides` uses per slot, one level up);
65
+ * - `variants` — every source's array CONCATENATED, earlier first, so a
66
+ * host's own variant and a density/base one coexist rather than one
67
+ * replacing the other;
68
+ * - any OTHER top-level key on a component entry — taken from the later
69
+ * source, the same "later wins" rule `styleOverrides` applies per slot,
70
+ * just one level up, for a component key this function does not know the
71
+ * shape of.
72
+ *
73
+ * A component only ONE source names keeps whatever that source gave it
74
+ * unchanged — `styleOverrides` alone if that is all it had, `defaultProps`/
75
+ * `variants` alone if that is all it had.
52
76
  */
53
77
  export declare function mergeMuiComponents(...sources: Components<Theme>[]): Components<Theme>;
54
78
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"field-height.d.ts","sourceRoot":"","sources":["../../../src/tokens/field-height.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAYlF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,KAAK;QACb,iHAAiH;QACjH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IACD,UAAU,YAAY;QACpB,kHAAkH;QAClH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CACF;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE/D;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,MAAM,CAExE;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAQD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,SAAS,CAgBlF;AASD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAA6B,GAAG,UAAU,CAAC,KAAK,CAAC,CAgB7F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAUrF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,SAAS,CAMpF"}
1
+ {"version":3,"file":"field-height.d.ts","sourceRoot":"","sources":["../../../src/tokens/field-height.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAYlF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,KAAK;QACb,iHAAiH;QACjH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IACD,UAAU,YAAY;QACpB,kHAAkH;QAClH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CACF;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE/D;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,MAAM,CAExE;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAQD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,SAAS,CAgBlF;AASD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAA6B,GAAG,UAAU,CAAC,KAAK,CAAC,CAgB7F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAiCrF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAExG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,SAAgB,GAAG,SAAS,CAMpF"}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-UUJ7J7NE.js";
4
+ } from "./chunk-MG3SRQ6N.js";
5
5
  import "./chunk-UDQSIRAP.js";
6
6
  import "./chunk-PGPPN63I.js";
7
7
  import "./chunk-TNQDSTIA.js";
@@ -15,14 +15,14 @@ import "./chunk-76X6JRVI.js";
15
15
  import "./chunk-FKUYRQSP.js";
16
16
  import "./chunk-JH7EEJEQ.js";
17
17
  import "./chunk-BA4RHQ3B.js";
18
- import "./chunk-K6LNHHSH.js";
19
- import "./chunk-ZKWVCSAB.js";
18
+ import "./chunk-RIZRF5XR.js";
19
+ import "./chunk-LTE2QHBH.js";
20
20
  import "./chunk-LN46DSMF.js";
21
21
  import "./chunk-TAMIZE4Q.js";
22
22
  import "./chunk-YZHX2HTC.js";
23
23
  import "./chunk-6IWO7CM2.js";
24
24
  import "./chunk-TYJR4GOF.js";
25
- import "./chunk-M47ZOUGF.js";
25
+ import "./chunk-2TZ6X265.js";
26
26
  import "./chunk-7FDU3FIN.js";
27
27
  import "./chunk-EPEJMTCQ.js";
28
28
  import "./chunk-GDN2LUTZ.js";
@@ -7,12 +7,12 @@ import "../chunk-KNWG77FB.js";
7
7
  import "../chunk-TM5QQJTF.js";
8
8
  import "../chunk-3IPPMWUA.js";
9
9
  import "../chunk-7ZPUN7TV.js";
10
- import "../chunk-3WWI75NM.js";
11
- import "../chunk-XK77FY42.js";
12
- import "../chunk-4ELI2MM3.js";
13
- import "../chunk-K3YHXOWZ.js";
10
+ import "../chunk-SJ4IAZ3V.js";
11
+ import "../chunk-25MSGLNU.js";
12
+ import "../chunk-GAXHYRX6.js";
13
+ import "../chunk-NP6SHLQ3.js";
14
14
  import "../chunk-PT6TCWIW.js";
15
- import "../chunk-M47ZOUGF.js";
15
+ import "../chunk-2TZ6X265.js";
16
16
  import "../chunk-7FDU3FIN.js";
17
17
  import "../chunk-EPEJMTCQ.js";
18
18
  import "../chunk-GDN2LUTZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.49.3",
3
+ "version": "6.50.1",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -1,6 +1,7 @@
1
- import { tableCellClasses } from '@mui/material/TableCell/index.js';
1
+ import generateUtilityClass from '@mui/material/generateUtilityClass/index.js';
2
2
  import type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';
3
3
 
4
+ import { fieldRadius } from './field-radius';
4
5
  import { rem, rems } from './relative';
5
6
 
6
7
  /**
@@ -16,7 +17,9 @@ import { rem, rems } from './relative';
16
17
  * them outright:
17
18
  *
18
19
  * - `ToggleButton`: `padding: 11/7/15` at medium(root)/small/large — same
19
- * `root`/`sizeSmall`/`sizeLarge` shape as `iconButtonDensityOverrides`.
20
+ * `root`/`sizeSmall`/`sizeLarge` shape as `iconButtonDensityOverrides`. The
21
+ * `root` slot ALSO carries `theme.fieldRadius` (FUT-2967, `field-radius.ts`)
22
+ * — see the note at the end of this docblock.
20
23
  * - `Tab`: `minHeight: 48`, `padding: '12px 16px'` on the root (via `rems()`).
21
24
  * The icon+label combo (`minHeight: 72`, `paddingTop`/`Bottom: 9`) is a
22
25
  * SEPARATE MUI variant, exposed as the `labelIcon` key.
@@ -46,10 +49,32 @@ import { rem, rems } from './relative';
46
49
  * `rem(theme, boxPx(size))` (`40` at `md`) — higher specificity than any
47
50
  * `MuiAvatar.styleOverrides.root`, dead code here, so it ships none.
48
51
  *
49
- * Geometry-neutral at `normal`; each slot a MODULE-LEVEL function, as above.
52
+ * PADDING is geometry-neutral at `normal` — the same 11/7/15 literals
53
+ * `ToggleButton.js` hard-codes; each slot a MODULE-LEVEL function, as above.
54
+ *
55
+ * `MuiToggleButton.root` is the one exception, and it is NOT neutral even at
56
+ * `normal` (FUT-2967): `fieldRadiusOverrides` (`field-radius.ts`) and this
57
+ * callback both style `MuiToggleButton.root` — the radius override's own
58
+ * `{ borderRadius }` and this one's `{ padding }` — and a `styleOverrides`
59
+ * slot two sources touch is replaced WHOLESALE by whichever is spread last
60
+ * (`mergeMuiComponents`), so a theme built with density silently dropped the
61
+ * field radius off a bare `<ToggleButton>` the moment density's `root`
62
+ * callback (this one) was the later source. Fixed AT THE SOURCE rather than
63
+ * in the merge: this MODULE-LEVEL callback (still a single, stable reference,
64
+ * so two builds still compare equal) reads `theme.fieldRadius` itself and
65
+ * returns the corner alongside the padding, so there is no second `root`
66
+ * value for a later merge to lose. The consequence is deliberate and worth
67
+ * naming: a host that applies ONLY `toggleButtonDensityOverrides()` to a
68
+ * plain MUI theme now gets the FIELD radius (8px, `DEFAULT_FIELD_RADIUS`) on
69
+ * `<ToggleButton>`, not MUI's own `shape.borderRadius` (4px) — matching the
70
+ * fields beside it, not a MUI default nothing else in this package still
71
+ * draws with.
50
72
  */
51
73
 
52
- const toggleButtonRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 11) });
74
+ const toggleButtonRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({
75
+ padding: rem(theme, 11),
76
+ borderRadius: fieldRadius(theme),
77
+ });
53
78
  const toggleButtonSmallPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 7) });
54
79
  const toggleButtonLargePadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 15) });
55
80
 
@@ -98,9 +123,22 @@ const isDefaultTableCellPadding = (padding: TableCellOwnerStateForOverrides['pad
98
123
  const tableCellRootPadding: TableCellStyleFn = ({ theme, ownerState }) =>
99
124
  isDefaultTableCellPadding(ownerState?.padding) ? { padding: rem(theme, 16) } : {};
100
125
 
126
+ /**
127
+ * Built with `generateUtilityClass`, not imported from
128
+ * `@mui/material/TableCell`'s own `tableCellClasses` — the same generated
129
+ * string (`TableCell.js` builds `tableCellClasses` from this exact helper),
130
+ * but without pulling `MuiTableCell` onto the critical path of every host
131
+ * that imports `densityThemeOptions`, the same reason `density-overrides.ts`'s
132
+ * `CHIP_LABEL` and `density-overrides.selection.ts`'s `SWITCH_*` constants
133
+ * are built this way instead of read off the component's own classes module
134
+ * (FUT-2993). It also honours a host's own `ClassNameGenerator.configure`,
135
+ * which a hand-typed `.MuiTableCell-paddingCheckbox` string would not.
136
+ */
137
+ const TABLE_CELL_PADDING_CHECKBOX = generateUtilityClass('MuiTableCell', 'paddingCheckbox');
138
+
101
139
  const tableCellSmallPadding: TableCellStyleFn = ({ theme, ownerState }) => {
102
140
  const style: CSSObject = {
103
- [`&.${tableCellClasses.paddingCheckbox}`]: { padding: rems(theme, 0, 12, 0, 16) },
141
+ [`&.${TABLE_CELL_PADDING_CHECKBOX}`]: { padding: rems(theme, 0, 12, 0, 16) },
104
142
  };
105
143
  if (isDefaultTableCellPadding(ownerState?.padding)) style.padding = rems(theme, 6, 16);
106
144
  return style;
@@ -1,4 +1,4 @@
1
- import { switchClasses } from '@mui/material/Switch/index.js';
1
+ import generateUtilityClass from '@mui/material/generateUtilityClass/index.js';
2
2
  import type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';
3
3
 
4
4
  import { rem, rems } from './relative';
@@ -94,14 +94,17 @@ import { rem, rems } from './relative';
94
94
  * (one class) cannot out-specificity it, so at `size="small"` it would
95
95
  * silently keep rendering MUI's unthemed `4px`/`16×16` at every density,
96
96
  * the click target and thumb staying full-size while the track around them
97
- * shrank. Fixed the same way: `sizeSmall`'s OWN nested `& .${switchClasses
98
- * .switchBase}` / `& .${switchClasses.thumb}` rules, read through
99
- * `switchClasses` (not a hand-typed selector string) for the same
100
- * `ClassNameGenerator.configure` reason `chipClasses` is above, inserted
101
- * as part of the SAME `sizeSmall` override object so they land AFTER
102
- * `SwitchRoot`'s own baked-in small variant in the generated class's CSS
103
- * text (later wins at matching two-class specificity) rather than trying
104
- * to out-specificity it from a different slot.
97
+ * shrank. Fixed the same way: `sizeSmall`'s OWN nested `& .${SWITCH_SWITCH_
98
+ * BASE}` / `& .${SWITCH_THUMB}` rules, built with `generateUtilityClass`
99
+ * (not a hand-typed selector string) for the same `ClassNameGenerator
100
+ * .configure` reason `density-overrides.ts`'s `CHIP_LABEL` is — and, unlike
101
+ * reading `switchClasses` off `@mui/material/Switch` itself, without
102
+ * putting `MuiSwitch` on the critical path of every host that imports
103
+ * `densityThemeOptions` (FUT-2993) — inserted as part of the SAME
104
+ * `sizeSmall` override object so they land AFTER `SwitchRoot`'s own baked-in
105
+ * small variant in the generated class's CSS text (later wins at matching
106
+ * two-class specificity) rather than trying to out-specificity it from a
107
+ * different slot.
105
108
  *
106
109
  * **The checked thumb's own travel distance is a FOURTH literal, found only
107
110
  * on adversarial review of the PR this doc comment first shipped in.**
@@ -111,7 +114,7 @@ import { rem, rems } from './relative';
111
114
  * `density: 'compact'` the checked thumb kept travelling the FULL, unscaled
112
115
  * distance while the track around it shrank ×0.9 — a visible overshoot.
113
116
  * `switchSwitchBasePadding`/`switchSizeSmall` each now carry their own
114
- * `&.${switchClasses.checked}` rule (`translateX(rem(theme, 20))`/`rem(theme,
117
+ * `&.${SWITCH_CHECKED}` rule (`translateX(rem(theme, 20))`/`rem(theme,
115
118
  * 16)`), composed onto the SAME generated class, in the SAME position
116
119
  * `padding` already occupies — so it wins by the identical mechanism, not a
117
120
  * new one. Proven at the pixel level, both sizes/densities: `switch-md-
@@ -146,6 +149,20 @@ export function checkboxRadioDensityOverrides(): Components<Theme> {
146
149
  };
147
150
  }
148
151
 
152
+ /**
153
+ * Built with `generateUtilityClass`, not imported from `@mui/material/Switch`'s
154
+ * own `switchClasses` — the same generated strings (`Switch.js` builds
155
+ * `switchClasses` from this exact helper), but without pulling `MuiSwitch`
156
+ * onto the critical path of every host that imports `densityThemeOptions`
157
+ * (see the module doc comment, and FUT-2993). `SWITCH_CHECKED` is a GLOBAL
158
+ * state slot (`generateUtilityClass`'s `globalStateClasses` table), so it
159
+ * resolves to `Mui-checked`, not `MuiSwitch-checked` — the same string
160
+ * `switchClasses.checked` gives.
161
+ */
162
+ const SWITCH_SWITCH_BASE = generateUtilityClass('MuiSwitch', 'switchBase');
163
+ const SWITCH_THUMB = generateUtilityClass('MuiSwitch', 'thumb');
164
+ const SWITCH_CHECKED = generateUtilityClass('MuiSwitch', 'checked');
165
+
149
166
  const switchRootGeometry = ({ theme }: { theme: Theme }): CSSObject => ({
150
167
  width: rems(theme, 34 + 12 * 2),
151
168
  height: rems(theme, 14 + 12 * 2),
@@ -163,7 +180,7 @@ const switchSwitchBasePadding = ({ theme }: { theme: Theme }): CSSObject => ({
163
180
  // own base/variants — see the module doc comment), so this nested rule
164
181
  // wins at the SAME (two-class, `.<hash>.Mui-checked`) specificity, the same
165
182
  // mechanism this function's own `padding` line already relies on.
166
- [`&.${switchClasses.checked}`]: { transform: `translateX(${rem(theme, 20)})` },
183
+ [`&.${SWITCH_CHECKED}`]: { transform: `translateX(${rem(theme, 20)})` },
167
184
  });
168
185
  const switchThumbSize = ({ theme }: { theme: Theme }): CSSObject => ({
169
186
  width: rem(theme, 20),
@@ -177,7 +194,7 @@ const switchSizeSmall = ({ theme }: { theme: Theme }): CSSObject => ({
177
194
  // overrides above, inserted as part of THIS SAME generated class — see the
178
195
  // module doc comment for why a flat override cannot reach these at
179
196
  // `size="small"` on its own.
180
- [`& .${switchClasses.switchBase}`]: {
197
+ [`& .${SWITCH_SWITCH_BASE}`]: {
181
198
  padding: rem(theme, 4),
182
199
  // Same overshoot as medium's, at `size="small"`'s OWN literal
183
200
  // (`SwitchRoot`'s baked-in `size: 'small'` variant, `Switch.js`:
@@ -187,9 +204,9 @@ const switchSizeSmall = ({ theme }: { theme: Theme }): CSSObject => ({
187
204
  // this rule, composed after it in the same generated class, so it wins
188
205
  // at matching specificity the same way the sibling `padding: rem(theme,
189
206
  // 4)` line above already does.
190
- [`&.${switchClasses.checked}`]: { transform: `translateX(${rem(theme, 16)})` },
207
+ [`&.${SWITCH_CHECKED}`]: { transform: `translateX(${rem(theme, 16)})` },
191
208
  },
192
- [`& .${switchClasses.thumb}`]: { width: rem(theme, 16), height: rem(theme, 16) },
209
+ [`& .${SWITCH_THUMB}`]: { width: rem(theme, 16), height: rem(theme, 16) },
193
210
  });
194
211
 
195
212
  /**
@@ -1,4 +1,4 @@
1
- import { chipClasses } from '@mui/material/Chip/index.js';
1
+ import generateUtilityClass from '@mui/material/generateUtilityClass/index.js';
2
2
  import type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';
3
3
 
4
4
  import { rem } from './relative';
@@ -81,8 +81,13 @@ interface ChipOwnerStateForOverrides {
81
81
  * own single-class rule (`0,1,0`), so it wins regardless of source order —
82
82
  * the same technique `ChipRoot`'s OWN style already uses for its avatar/
83
83
  * icon/delete-icon sub-parts (`& .${chipClasses.avatar}`, etc., in
84
- * `Chip.js`), and read through the SAME `chipClasses` MUI's own `Chip.js`
85
- * generates the real DOM class from, not a hand-typed copy of it.
84
+ * `Chip.js`), and built the same way `Chip.js` itself builds that class:
85
+ * `generateUtilityClass('MuiChip', 'label')`, MUI's own public helper
86
+ * (`@mui/material/generateUtilityClass`), not a hand-typed copy of it and not
87
+ * `chipClasses` — importing `chipClasses` pulls in `@mui/material/Chip`
88
+ * itself, which puts `MuiChip` on the critical path of every host that
89
+ * imports `densityThemeOptions`, including one that never renders a density
90
+ * at all (FUT-2993).
86
91
  *
87
92
  * **That same higher specificity also outranks a HOST's own theming.** A
88
93
  * host writing `theme.components.MuiChip.styleOverrides.label` for its own
@@ -121,6 +126,15 @@ interface ChipOwnerStateForOverrides {
121
126
  * make them differ on nothing but identity.
122
127
  */
123
128
 
129
+ /**
130
+ * Built with `generateUtilityClass`, not imported from `@mui/material/Chip`'s
131
+ * own `chipClasses` — the same generated string (`Chip.js` builds
132
+ * `chipClasses` from this exact helper), but without pulling `MuiChip` onto
133
+ * the critical path of every host that imports `densityThemeOptions` (see the
134
+ * module doc comment, and FUT-2993).
135
+ */
136
+ const CHIP_LABEL = generateUtilityClass('MuiChip', 'label');
137
+
124
138
  const iconButtonRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 8) });
125
139
  const iconButtonSmallPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 5) });
126
140
  const iconButtonLargePadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 12) });
@@ -155,14 +169,16 @@ const chipRootHeight = ({
155
169
  // (two classes vs one) — wins over `chipLabelPadding`/`chipLabelSmallPadding`
156
170
  // below regardless of stylesheet insertion order. See the module doc
157
171
  // comment for why this must live here and not on the label slot itself.
158
- // `chipClasses.label`, not a hand-typed `.MuiChip-label` string — the same
159
- // module `Chip.js`'s own root style reads for its avatar/icon/delete-icon
160
- // selectors, so this tracks whatever `Chip.js` itself puts on the label
161
- // element rather than a separately-maintained copy of it. A host that
162
- // calls `ClassNameGenerator.configure` before any `MuiChip` module loads
163
- // renames the real class; a literal string would silently stop matching
164
- // it, `chipClasses.label` cannot.
165
- style[`& .${chipClasses.label}`] = { paddingLeft: rem(theme, px), paddingRight: rem(theme, px) };
172
+ // `CHIP_LABEL` (`generateUtilityClass('MuiChip', 'label')`), not a
173
+ // hand-typed `.MuiChip-label` string — the same helper `Chip.js`'s own
174
+ // root style reads for its avatar/icon/delete-icon selectors (via
175
+ // `chipClasses`), so this tracks whatever `Chip.js` itself puts on the
176
+ // label element rather than a separately-maintained copy of it. A host
177
+ // that calls `ClassNameGenerator.configure` before any `MuiChip` module
178
+ // loads renames the real class; a literal string would silently stop
179
+ // matching it, `generateUtilityClass` cannot — and unlike `chipClasses`,
180
+ // it does so without importing `@mui/material/Chip` at all (FUT-2993).
181
+ style[`& .${CHIP_LABEL}`] = { paddingLeft: rem(theme, px), paddingRight: rem(theme, px) };
166
182
  }
167
183
  return style;
168
184
  };
@@ -147,13 +147,19 @@ export function densityThemeOptions(
147
147
  density: DensityLevel | number,
148
148
  factors?: Partial<Record<DensityLevel, number>>,
149
149
  fieldRadius: number = DEFAULT_FIELD_RADIUS,
150
- ): Pick<ThemeOptions, 'typography' | 'spacing' | 'fieldHeight' | 'components'> {
150
+ ): Pick<ThemeOptions, 'typography' | 'spacing' | 'fieldHeight' | 'fieldRadius' | 'components'> {
151
151
  const { factor } = resolveDensityFactor(density, factors);
152
152
  const fieldHeight = densityFieldHeight(factor);
153
153
  return {
154
154
  typography: { fontSize: densityFontSize(factor) },
155
155
  spacing: densitySpacingUnit(factor),
156
156
  fieldHeight,
157
+ // A standalone host (never `createUiTheme`/`UiProvider`) that draws its
158
+ // OWN, non-default radius states it through this 3rd argument; reporting
159
+ // it back here (FUT-2967) lets `@12-apps/app-shell`'s `createAppTheme`
160
+ // spread this object's OWN `fieldRadius` into its `createTheme()` call
161
+ // instead of tracking the number separately — the two can never disagree.
162
+ fieldRadius,
157
163
  components: mergeMuiComponents(
158
164
  fieldOverrides(fieldRadius, fieldHeight),
159
165
  iconButtonDensityOverrides(),
@@ -126,16 +126,63 @@ export function fieldHeightOverrides(height: number = DEFAULT_FIELD_HEIGHT): Com
126
126
  * top-level objects would drop every override but the last source's for a
127
127
  * component two sources both style (`fieldOverrides` below merges exactly
128
128
  * two; density's geometry overrides, FUT-2766–2768, add more).
129
+ *
130
+ * `styleOverrides` keeps the rule above, wholesale by inner slot key, with NO
131
+ * new closures — a slot's value is taken by reference from whichever source
132
+ * set it last, never wrapped, so two theme builds from the same options still
133
+ * compare equal (see `mergeMuiComponents`'s own suite).
134
+ *
135
+ * Three more keys survive the merge (FUT-2967), where they used to be
136
+ * silently dropped the moment a SECOND source styled the same component —
137
+ * exactly the shape density (FUT-2766–2768) and a host's own `components`
138
+ * both touching one component now takes:
139
+ *
140
+ * - `defaultProps` — a SHALLOW merge, the later source winning per key
141
+ * (the same precedence `styleOverrides` uses per slot, one level up);
142
+ * - `variants` — every source's array CONCATENATED, earlier first, so a
143
+ * host's own variant and a density/base one coexist rather than one
144
+ * replacing the other;
145
+ * - any OTHER top-level key on a component entry — taken from the later
146
+ * source, the same "later wins" rule `styleOverrides` applies per slot,
147
+ * just one level up, for a component key this function does not know the
148
+ * shape of.
149
+ *
150
+ * A component only ONE source names keeps whatever that source gave it
151
+ * unchanged — `styleOverrides` alone if that is all it had, `defaultProps`/
152
+ * `variants` alone if that is all it had.
129
153
  */
130
154
  export function mergeMuiComponents(...sources: Components<Theme>[]): Components<Theme> {
131
- type Entry = { styleOverrides?: Record<string, unknown> };
155
+ type Entry = {
156
+ styleOverrides?: Record<string, unknown>;
157
+ defaultProps?: Record<string, unknown>;
158
+ variants?: unknown[];
159
+ [key: string]: unknown;
160
+ };
132
161
  const maps = sources as unknown as Record<string, Entry>[];
133
162
  const names = new Set(maps.flatMap((map) => Object.keys(map)));
134
163
  return Object.fromEntries(
135
- [...names].map((name) => [
136
- name,
137
- { styleOverrides: Object.assign({}, ...maps.map((map) => map[name]?.styleOverrides)) },
138
- ]),
164
+ [...names].map((name) => {
165
+ const entries = maps.map((map) => map[name]).filter((entry): entry is Entry => entry !== undefined);
166
+ const styleOverrides = Object.assign({}, ...entries.map((entry) => entry.styleOverrides));
167
+ const defaultProps = Object.assign({}, ...entries.map((entry) => entry.defaultProps));
168
+ const variants = entries.flatMap((entry) => entry.variants ?? []);
169
+ const rest = entries.reduce<Record<string, unknown>>((acc, entry) => {
170
+ for (const key of Object.keys(entry)) {
171
+ if (key === 'styleOverrides' || key === 'defaultProps' || key === 'variants') continue;
172
+ acc[key] = entry[key];
173
+ }
174
+ return acc;
175
+ }, {});
176
+ return [
177
+ name,
178
+ {
179
+ ...rest,
180
+ styleOverrides,
181
+ ...(Object.keys(defaultProps).length > 0 ? { defaultProps } : {}),
182
+ ...(variants.length > 0 ? { variants } : {}),
183
+ },
184
+ ];
185
+ }),
139
186
  ) as Components<Theme>;
140
187
  }
141
188
 
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tokens/density-overrides.selection.ts"],"sourcesContent":["import { switchClasses } from '@mui/material/Switch/index.js';\nimport type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { rem, rems } from './relative';\n\n/**\n * CHECKBOX / RADIO / SWITCH GEOMETRY, DENSITY-AWARE (FUT-2767).\n *\n * `Checkbox`/`Radio`/`Switch` are MUI's own components, unwrapped — but\n * **only two of the three `@12-apps/ui` wrappers actually forward their\n * geometry to MUI**, corrected here after an earlier revision of this doc\n * comment claimed all three did.\n *\n * - `Checkbox.tsx`'s `StyledCheckbox` and `RadioGroup.variants.tsx`'s\n * `DefaultRadios` (the ONLY variant rendering a raw `<Radio>` — `cards`/\n * `buttons`/`segments` draw custom controls, outside this ticket) set NO\n * `padding` of their own, so `checkboxRadioDensityOverrides()` reaches\n * both directly — confirmed by a real render, same computed padding as\n * raw `MuiCheckbox`/`MuiRadio` at both densities\n * (`density-overrides.test.stories.tsx`'s `ui-checkbox`/`ui-radio-group`).\n * - `Switch.styles.ts`'s `switchSx` is DIFFERENT: it draws root/switchBase/\n * thumb geometry itself, per instance, from its own `SWITCH_SIZES` table\n * (`Switch.metrics.ts`), every number already through `rem(theme, px)`.\n * `Switch.parts.tsx`'s `StyledSwitch = styled(MuiSwitch, {...})(...)`\n * composes these as an OUTER wrapper class whose nested `& .MuiSwitch-\n * switchBase`/`& .MuiSwitch-thumb` selectors are a TWO-class compound —\n * higher specificity than this file's `MuiSwitch.styleOverrides.\n * switchBase`/`thumb`, which compose onto a single-class generated class.\n * `switchDensityOverrides()` therefore has **NO effect on `@12-apps/ui`'s\n * own `<Switch>`** — it only reaches a raw `@mui/material/Switch` consumer\n * (a host's own `Table.tsx` density-toggle column, say). Not a gap:\n * `switchSx` already reacts to `theme.typography.fontSize` on its own —\n * including the CHECKED thumb's own travel distance, computed as\n * `rem(theme, width - thumbSize - padding * 2)` from the SAME per-instance\n * geometry, so it moves consistently with no help from this file.\n * Confirmed by measurement, both sizes, both states, both densities\n * (`ui-switch-*` cases); documented at `Switch.md`'s \"Density\" section.\n *\n * **The ticket's open question — does a `MuiSwitchBase` theme override reach\n * `Checkbox`/`Radio` at all? — is NO, verified two ways.** `Checkbox`/`Radio`\n * both render through `internal/SwitchBase.js`'s `SwitchBaseRoot`, which is\n * `styled(ButtonBase, { name: 'MuiSwitchBase' })({ padding: 9, ... })` — with\n * NO `slot` key. `@mui/system`'s `createStyled.js` computes\n * `overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(slot))`,\n * and `defaultOverridesResolver` (`if (!slot) return null`) returns `null`\n * for an absent slot; the styled call itself then only pushes its\n * `styleThemeOverrides` expression `if (componentName && overridesResolver)`\n * — `null` is falsy, so for THIS styled call `theme.components.MuiSwitchBase\n * .styleOverrides` is never read at all. (`variants` is a SEPARATE check,\n * gated on `skipVariantsResolver` rather than `overridesResolver`, which is\n * why the ticket's own two-part specificity proof for Chip's label — probing\n * with `variants` — does not transfer here; `styleOverrides` is what dies.)\n * A render-level probe confirms it: a theme with `components.MuiSwitchBase\n * .styleOverrides.root = { padding: '999px' }`, rendering `<Switch />`,\n * `<Checkbox />` and `<Radio />` through it, leaves EVERY ONE of `.MuiSwitch-\n * switchBase`, `.MuiCheckbox-root` and `.MuiRadio-root` at their unthemed\n * padding (`9px`/`4px` — see below), never `999px`. The Decision's own\n * suggested `MuiSwitchBase` route is therefore the ticket's documented\n * fallback in disguise: this file skips straight to duplicating the override\n * under `MuiCheckbox` and `MuiRadio`, each independently confirmed LIVE by\n * the same probe (`components.MuiCheckbox.styleOverrides.root.padding` DOES\n * reach `.MuiCheckbox-root`, and the same for `MuiRadio`).\n *\n * - `Checkbox`/`Radio` (`internal/SwitchBase.js`, `Checkbox.js`, `Radio.js`):\n * `padding: 9` — constant across `size=\"small\"`/`\"medium\"` today (neither\n * `CheckboxRoot` nor `RadioRoot` carries a size-conditional padding rule),\n * so ONE `root` override, no `sizeSmall`/`sizeMedium` split, covers both\n * sizes without disturbing the glyph-driven size difference FUT-2585 left\n * alone.\n * - `Switch` (`Switch.js`): root (the track) `width: 34+12*2`, `height:\n * 14+12*2`, `padding: 12` (medium); `switchBase` (the thumb's absolutely-\n * positioned wrapper) — its OWN literal is NOT the `12` the ticket's\n * Decision sketch names (that `12` is `SwitchRoot`'s own padding, a\n * DIFFERENT slot); `switchBase` inherits `internal/SwitchBase.js`'s generic\n * `padding: 9` unmodified at medium (`SwitchSwitchBase`'s own styles never\n * set `padding`), confirmed by the same render probe with NO theme\n * override at all (`.MuiSwitch-switchBase` computed padding: `9px`). This\n * file overrides `MuiSwitch.styleOverrides.switchBase` (a LIVE key —\n * `SwitchSwitchBase = styled(SwitchBase, { name: 'MuiSwitch', slot:\n * 'SwitchBase', ... })` DOES pass a `slot`) with `rem(theme, 9)`, the\n * MEASURED default, not the ticket's `12` — using `12` here would move\n * today's real 9px to 12px at `density: 'normal'`, failing the Done-when's\n * own pixel-identical requirement, so the number is corrected against the\n * probe rather than the sketch. `thumb`: `20×20`, unconditional.\n * - `Switch` `size=\"small\"` (`:82-100`, a `variants` entry on `SwitchRoot`\n * itself): root `width: 40`, `height: 24`, `padding: 7`; a NESTED `&\n * .${switchClasses.switchBase}` selector sets `padding: 4` (not 9); a\n * NESTED `& .${switchClasses.thumb}` selector sets `20×20` down to\n * `16×16`. Both nested rules are baked into `SwitchRoot`'s OWN generated\n * class at TWO-class specificity (the size-small instance's unique class,\n * plus `.MuiSwitch-switchBase`/`.MuiSwitch-thumb`) — exactly the Chip\n * outlined-label shape this file already has above, and the SAME failure\n * mode Lesson 1 warns about: a FLAT `styleOverrides.switchBase`/`thumb`\n * (one class) cannot out-specificity it, so at `size=\"small\"` it would\n * silently keep rendering MUI's unthemed `4px`/`16×16` at every density,\n * the click target and thumb staying full-size while the track around them\n * shrank. Fixed the same way: `sizeSmall`'s OWN nested `& .${switchClasses\n * .switchBase}` / `& .${switchClasses.thumb}` rules, read through\n * `switchClasses` (not a hand-typed selector string) for the same\n * `ClassNameGenerator.configure` reason `chipClasses` is above, inserted\n * as part of the SAME `sizeSmall` override object so they land AFTER\n * `SwitchRoot`'s own baked-in small variant in the generated class's CSS\n * text (later wins at matching two-class specificity) rather than trying\n * to out-specificity it from a different slot.\n *\n * **The checked thumb's own travel distance is a FOURTH literal, found only\n * on adversarial review of the PR this doc comment first shipped in.**\n * `SwitchSwitchBase`'s base style bakes in `&.Mui-checked { transform:\n * translateX(20px) }` (medium), and `SwitchRoot`'s `size: 'small'` variant\n * nests the same at `16px` — both bare, never run through `pxToRem`, so at\n * `density: 'compact'` the checked thumb kept travelling the FULL, unscaled\n * distance while the track around it shrank ×0.9 — a visible overshoot.\n * `switchSwitchBasePadding`/`switchSizeSmall` each now carry their own\n * `&.${switchClasses.checked}` rule (`translateX(rem(theme, 20))`/`rem(theme,\n * 16)`), composed onto the SAME generated class, in the SAME position\n * `padding` already occupies — so it wins by the identical mechanism, not a\n * new one. Proven at the pixel level, both sizes/densities: `switch-md-\n * checked`/`switch-sm-checked` measure the thumb's final position against\n * the track's own edge, not just the transform string.\n *\n * At `density: 'normal'` every number above computes back to the literal it\n * replaces (`rem(theme, 9)` is `0.5625rem`, `9px` at the 16px root — no\n * visible change), the same geometry-neutral guarantee `iconButtonDensity\n * Overrides`/`chipDensityOverrides` give above. The same non-default-\n * `fontSize` caveat those two give applies here unchanged: `rem()` only ever\n * reads `theme.typography.fontSize`, so a host adopting\n * `checkboxRadioDensityOverrides`/`switchDensityOverrides` standalone moves\n * every number here by that one coefficient, same as everything else `rem()`\n * touches.\n */\n\nconst checkboxRadioRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 9) });\n\n/**\n * `MuiCheckbox`/`MuiRadio`'s own padding — duplicated under both component\n * keys, the ticket's own documented fallback, since `MuiSwitchBase` cannot\n * reach either (see the module doc comment above). One module-level function\n * shared by both keys, and by `checkboxRadioDensityOverrides()`'s own two\n * calls across the two theme-build paths, for the same identity reason the\n * rest of this file's slots are module-level.\n */\nexport function checkboxRadioDensityOverrides(): Components<Theme> {\n return {\n MuiCheckbox: { styleOverrides: { root: checkboxRadioRootPadding } },\n MuiRadio: { styleOverrides: { root: checkboxRadioRootPadding } },\n };\n}\n\nconst switchRootGeometry = ({ theme }: { theme: Theme }): CSSObject => ({\n width: rems(theme, 34 + 12 * 2),\n height: rems(theme, 14 + 12 * 2),\n padding: rem(theme, 12),\n});\nconst switchSwitchBasePadding = ({ theme }: { theme: Theme }): CSSObject => ({\n padding: rem(theme, 9),\n // FUT-2767 (adversarial-review fix) — `SwitchSwitchBase`'s OWN base style\n // (`Switch.js`, medium) bakes in `&.Mui-checked { transform:\n // translateX(20px) }`, a bare literal never run through `pxToRem` — at\n // `density: 'compact'` the track/padding/thumb above all shrink ×0.9 but\n // this offset stayed at a full 20px, so the checked thumb overshot the now-\n // smaller track. Composed onto the SAME generated class as that base style,\n // AFTER it (`createStyled` composes `styleThemeOverrides` after a slot's\n // own base/variants — see the module doc comment), so this nested rule\n // wins at the SAME (two-class, `.<hash>.Mui-checked`) specificity, the same\n // mechanism this function's own `padding` line already relies on.\n [`&.${switchClasses.checked}`]: { transform: `translateX(${rem(theme, 20)})` },\n});\nconst switchThumbSize = ({ theme }: { theme: Theme }): CSSObject => ({\n width: rem(theme, 20),\n height: rem(theme, 20),\n});\nconst switchSizeSmall = ({ theme }: { theme: Theme }): CSSObject => ({\n width: rem(theme, 40),\n height: rem(theme, 24),\n padding: rem(theme, 7),\n // Higher (two-class) specificity than the flat `switchBase`/`thumb`\n // overrides above, inserted as part of THIS SAME generated class — see the\n // module doc comment for why a flat override cannot reach these at\n // `size=\"small\"` on its own.\n [`& .${switchClasses.switchBase}`]: {\n padding: rem(theme, 4),\n // Same overshoot as medium's, at `size=\"small\"`'s OWN literal\n // (`SwitchRoot`'s baked-in `size: 'small'` variant, `Switch.js`:\n // `translateX(16px)`). Nested one level deeper so the compiled selector\n // is `.<root-hash> .MuiSwitch-switchBase.Mui-checked` — the same THREE-\n // class descendant compound MUI's own baked-in small variant uses for\n // this rule, composed after it in the same generated class, so it wins\n // at matching specificity the same way the sibling `padding: rem(theme,\n // 4)` line above already does.\n [`&.${switchClasses.checked}`]: { transform: `translateX(${rem(theme, 16)})` },\n },\n [`& .${switchClasses.thumb}`]: { width: rem(theme, 16), height: rem(theme, 16) },\n});\n\n/**\n * `MuiSwitch`'s own track (root), thumb wrapper (switchBase) and thumb\n * (thumb) geometry, at both sizes MUI has.\n */\nexport function switchDensityOverrides(): Components<Theme> {\n return {\n MuiSwitch: {\n styleOverrides: {\n root: switchRootGeometry,\n switchBase: switchSwitchBasePadding,\n thumb: switchThumbSize,\n sizeSmall: switchSizeSmall,\n },\n },\n };\n}\n"],"mappings":";;;;;;AAAA,SAAS,qBAAqB;AAmI9B,IAAM,2BAA2B,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AAUhG,SAAS,gCAAmD;AACjE,SAAO;AAAA,IACL,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,EAAE;AAAA,IAClE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,EAAE;AAAA,EACjE;AACF;AAEA,IAAM,qBAAqB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACtE,OAAO,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EAC9B,QAAQ,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EAC/B,SAAS,IAAI,OAAO,EAAE;AACxB;AACA,IAAM,0BAA0B,CAAC,EAAE,MAAM,OAAoC;AAAA,EAC3E,SAAS,IAAI,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWrB,CAAC,KAAK,cAAc,OAAO,EAAE,GAAG,EAAE,WAAW,cAAc,IAAI,OAAO,EAAE,CAAC,IAAI;AAC/E;AACA,IAAM,kBAAkB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACnE,OAAO,IAAI,OAAO,EAAE;AAAA,EACpB,QAAQ,IAAI,OAAO,EAAE;AACvB;AACA,IAAM,kBAAkB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACnE,OAAO,IAAI,OAAO,EAAE;AAAA,EACpB,QAAQ,IAAI,OAAO,EAAE;AAAA,EACrB,SAAS,IAAI,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,CAAC,MAAM,cAAc,UAAU,EAAE,GAAG;AAAA,IAClC,SAAS,IAAI,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASrB,CAAC,KAAK,cAAc,OAAO,EAAE,GAAG,EAAE,WAAW,cAAc,IAAI,OAAO,EAAE,CAAC,IAAI;AAAA,EAC/E;AAAA,EACA,CAAC,MAAM,cAAc,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,OAAO,EAAE,GAAG,QAAQ,IAAI,OAAO,EAAE,EAAE;AACjF;AAMO,SAAS,yBAA4C;AAC1D,SAAO;AAAA,IACL,WAAW;AAAA,MACT,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tokens/density-overrides.navigation.ts"],"sourcesContent":["import { tableCellClasses } from '@mui/material/TableCell/index.js';\nimport type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { rem, rems } from './relative';\n\n/**\n * TOGGLEBUTTON / TAB / TABLECELL / PAGINATIONITEM / SLIDER GEOMETRY,\n * DENSITY-AWARE (FUT-2768).\n *\n * The remainder of the fixed-px geometry the density audit catalogued, none\n * of it hard-coded in `@12-apps/ui`'s own source. Verified against the\n * installed `@mui/material@6.5.0` source; each goes through the SAME\n * per-size/per-slot `overridesResolver` key MUI itself resolves\n * (`iconButtonDensityOverrides`/`chipDensityOverrides`'s own mechanism), so a\n * theme value composes with MUI's baked-in `variants` instead of replacing\n * them outright:\n *\n * - `ToggleButton`: `padding: 11/7/15` at medium(root)/small/large — same\n * `root`/`sizeSmall`/`sizeLarge` shape as `iconButtonDensityOverrides`.\n * - `Tab`: `minHeight: 48`, `padding: '12px 16px'` on the root (via `rems()`).\n * The icon+label combo (`minHeight: 72`, `paddingTop`/`Bottom: 9`) is a\n * SEPARATE MUI variant, exposed as the `labelIcon` key.\n * - `TableCell`: `padding: 16` on the root, `'6px 16px'` at small, nested\n * inside it `'0 12px 0 16px'` on the small+checkbox combo — all gated on\n * `ownerState.padding === 'normal'` (MUI's default): `checkbox`/`none` are\n * separate variants with their OWN unscaled padding (`'0 0 0 4px'`/`0`) an\n * unconditional rule clobbered at every size but small (FUT-2861 review —\n * the SAME Lesson-1 clobber the ellipsis fix above avoids, missed here).\n * `@12-apps/ui`'s own `Table` (FUT-2769) wins regardless (two classes deep\n * under its styled root); this reaches a BARE `<TableCell>`.\n * - `PaginationItem`: `minWidth/height: 32/26/40` at medium(root)/small/large.\n * The ellipsis shares the SAME slot and `minWidth` but has NO `height` of\n * its own (`'auto'`), gated on `ownerState.type` being neither\n * `'start-ellipsis'` nor `'end-ellipsis'` — skipping it would force a\n * height onto the ellipsis (Lesson 1).\n * - `Slider`: rail `height: 4/2` at `orientation=\"horizontal\"`/`size=\"small\"`\n * — gated on `ownerState.orientation` since the SAME key answers for either\n * axis (MUI sets `height` horizontal / `width` vertical, leaving the other\n * `'100%'`). Thumb `20×20`/`12×12` needs no gate. `@12-apps/ui`'s own\n * `Slider` already sets rail/thumb size through `rem()` and never forwards\n * `size` — a no-op THERE, reaches a BARE `<Slider>`. The thumb's ring and\n * the value-label offset were checked and left OUT — that story's own doc.\n *\n * `Avatar` is NOT in this file: `@12-apps/ui`'s own `Avatar` wraps `MuiAvatar`\n * in a `StyledAvatar` that ALREADY sets `width`/`height` through\n * `rem(theme, boxPx(size))` (`40` at `md`) — higher specificity than any\n * `MuiAvatar.styleOverrides.root`, dead code here, so it ships none.\n *\n * Geometry-neutral at `normal`; each slot a MODULE-LEVEL function, as above.\n */\n\nconst toggleButtonRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 11) });\nconst toggleButtonSmallPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 7) });\nconst toggleButtonLargePadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 15) });\n\n/** `MuiToggleButton`'s own padding, at every size MUI has. */\nexport function toggleButtonDensityOverrides(): Components<Theme> {\n return {\n MuiToggleButton: {\n styleOverrides: {\n root: toggleButtonRootPadding,\n sizeSmall: toggleButtonSmallPadding,\n sizeLarge: toggleButtonLargePadding,\n },\n },\n };\n}\n\nconst tabRootGeometry = ({ theme }: { theme: Theme }): CSSObject => ({\n minHeight: rem(theme, 48),\n padding: rems(theme, 12, 16),\n});\nconst tabLabelIconGeometry = ({ theme }: { theme: Theme }): CSSObject => ({\n minHeight: rem(theme, 72),\n paddingTop: rem(theme, 9),\n paddingBottom: rem(theme, 9),\n});\n\n/** `MuiTab`'s own root height/padding, and the icon+label combo's taller box. */\nexport function tabDensityOverrides(): Components<Theme> {\n return {\n MuiTab: {\n styleOverrides: {\n root: tabRootGeometry,\n labelIcon: tabLabelIconGeometry,\n },\n },\n };\n}\n\ninterface TableCellOwnerStateForOverrides {\n padding?: 'normal' | 'checkbox' | 'none';\n}\ntype TableCellStyleFn = (props: { theme: Theme; ownerState?: TableCellOwnerStateForOverrides }) => CSSObject;\nconst isDefaultTableCellPadding = (padding: TableCellOwnerStateForOverrides['padding']): boolean =>\n padding === undefined || padding === 'normal';\n\nconst tableCellRootPadding: TableCellStyleFn = ({ theme, ownerState }) =>\n isDefaultTableCellPadding(ownerState?.padding) ? { padding: rem(theme, 16) } : {};\n\nconst tableCellSmallPadding: TableCellStyleFn = ({ theme, ownerState }) => {\n const style: CSSObject = {\n [`&.${tableCellClasses.paddingCheckbox}`]: { padding: rems(theme, 0, 12, 0, 16) },\n };\n if (isDefaultTableCellPadding(ownerState?.padding)) style.padding = rems(theme, 6, 16);\n return style;\n};\n\n/** Reaches a BARE `<TableCell>` only — module doc comment above. */\nexport function tableCellDensityOverrides(): Components<Theme> {\n return {\n MuiTableCell: {\n styleOverrides: {\n root: tableCellRootPadding,\n sizeSmall: tableCellSmallPadding,\n },\n },\n };\n}\n\n/** The `ownerState` field that tells the ellipsis item apart from a real button. */\ninterface PaginationItemOwnerStateForOverrides {\n type?: 'page' | 'first' | 'last' | 'start-ellipsis' | 'end-ellipsis' | 'previous' | 'next';\n}\ntype PaginationItemStyleFn = (props: {\n theme: Theme;\n ownerState?: PaginationItemOwnerStateForOverrides;\n}) => CSSObject;\n\nconst isPaginationEllipsis = (type: PaginationItemOwnerStateForOverrides['type']): boolean =>\n type === 'start-ellipsis' || type === 'end-ellipsis';\n\n/** `minWidth` always; `height` only off the ellipsis, which has none of its own. */\nfunction paginationItemGeometryAt(px: number): PaginationItemStyleFn {\n return ({ theme, ownerState }) => {\n const style: CSSObject = { minWidth: rem(theme, px) };\n if (!isPaginationEllipsis(ownerState?.type)) style.height = rem(theme, px);\n return style;\n };\n}\nconst paginationItemRootGeometry = paginationItemGeometryAt(32);\nconst paginationItemSmallGeometry = paginationItemGeometryAt(26);\nconst paginationItemLargeGeometry = paginationItemGeometryAt(40);\n\n/**\n * `MuiPaginationItem`'s own `minWidth`/`height`, at every size MUI has —\n * `height` skipped on the ellipsis item, which has none of its own (`auto`).\n */\nexport function paginationItemDensityOverrides(): Components<Theme> {\n return {\n MuiPaginationItem: {\n styleOverrides: {\n root: paginationItemRootGeometry,\n sizeSmall: paginationItemSmallGeometry,\n sizeLarge: paginationItemLargeGeometry,\n },\n },\n };\n}\n\n/** The `ownerState` field that tells which axis the rail's `height`/`4` reads as. */\ninterface SliderOwnerStateForOverrides {\n orientation?: 'horizontal' | 'vertical';\n}\ntype SliderStyleFn = (props: { theme: Theme; ownerState?: SliderOwnerStateForOverrides }) => CSSObject;\n\n/** The rail's `4`/`2` reads as `height` for a horizontal slider, `width` for a vertical one. */\nfunction sliderRailAxisAt(px: number): SliderStyleFn {\n return ({ theme, ownerState }) =>\n ownerState?.orientation === 'vertical' ? { width: rem(theme, px) } : { height: rem(theme, px) };\n}\nconst sliderRootGeometry = sliderRailAxisAt(4);\nconst sliderSmallGeometry = sliderRailAxisAt(2);\nconst sliderThumbGeometry = ({ theme }: { theme: Theme }): CSSObject => ({\n width: rem(theme, 20),\n height: rem(theme, 20),\n});\nconst sliderThumbSmallGeometry = ({ theme }: { theme: Theme }): CSSObject => ({\n width: rem(theme, 12),\n height: rem(theme, 12),\n});\n\n/** `MuiSlider`'s own rail thickness (root/sizeSmall) and thumb box (thumb/thumbSizeSmall). */\nexport function sliderDensityOverrides(): Components<Theme> {\n return {\n MuiSlider: {\n styleOverrides: {\n root: sliderRootGeometry,\n sizeSmall: sliderSmallGeometry,\n thumb: sliderThumbGeometry,\n thumbSizeSmall: sliderThumbSmallGeometry,\n },\n },\n };\n}\n\n/**\n * `MuiTabs`' own indicator thickness (`height: 2` horizontal, `width: 2`\n * vertical) — one short of `Tab` in the ticket's own literal list, added\n * after a FUT-2767-review pass over state/orientation-gated literals; same\n * orientation gate as the Slider rail. `@12-apps/ui`'s own `Tabs` draws its\n * OWN 3px indicator through `rem()` already, blocking THIS override there —\n * `tabDensityOverrides` reaches `Tab.root`'s `minHeight` instead (both\n * measured in `density-wrapper-reach.test.stories.tsx`).\n */\ninterface TabsIndicatorOwnerStateForOverrides {\n orientation?: 'horizontal' | 'vertical';\n}\ntype TabsIndicatorStyleFn = (props: {\n theme: Theme;\n ownerState?: TabsIndicatorOwnerStateForOverrides;\n}) => CSSObject;\n\nconst tabsIndicatorAxisAt: TabsIndicatorStyleFn = ({ theme, ownerState }) =>\n ownerState?.orientation === 'vertical' ? { width: rem(theme, 2) } : { height: rem(theme, 2) };\n\n/** `MuiTabs`' own indicator thickness, by orientation. */\nexport function tabsIndicatorDensityOverrides(): Components<Theme> {\n return {\n MuiTabs: {\n styleOverrides: {\n indicator: tabsIndicatorAxisAt,\n },\n },\n };\n}\n"],"mappings":";;;;;;AAAA,SAAS,wBAAwB;AAmDjC,IAAM,0BAA0B,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,EAAE,EAAE;AACvG,IAAM,2BAA2B,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AACvG,IAAM,2BAA2B,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,EAAE,EAAE;AAGjG,SAAS,+BAAkD;AAChE,SAAO;AAAA,IACL,iBAAiB;AAAA,MACf,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACnE,WAAW,IAAI,OAAO,EAAE;AAAA,EACxB,SAAS,KAAK,OAAO,IAAI,EAAE;AAC7B;AACA,IAAM,uBAAuB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACxE,WAAW,IAAI,OAAO,EAAE;AAAA,EACxB,YAAY,IAAI,OAAO,CAAC;AAAA,EACxB,eAAe,IAAI,OAAO,CAAC;AAC7B;AAGO,SAAS,sBAAyC;AACvD,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAMA,IAAM,4BAA4B,CAAC,YACjC,YAAY,UAAa,YAAY;AAEvC,IAAM,uBAAyC,CAAC,EAAE,OAAO,WAAW,MAClE,0BAA0B,YAAY,OAAO,IAAI,EAAE,SAAS,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC;AAElF,IAAM,wBAA0C,CAAC,EAAE,OAAO,WAAW,MAAM;AACzE,QAAM,QAAmB;AAAA,IACvB,CAAC,KAAK,iBAAiB,eAAe,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,IAAI,GAAG,EAAE,EAAE;AAAA,EAClF;AACA,MAAI,0BAA0B,YAAY,OAAO,EAAG,OAAM,UAAU,KAAK,OAAO,GAAG,EAAE;AACrF,SAAO;AACT;AAGO,SAAS,4BAA+C;AAC7D,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAWA,IAAM,uBAAuB,CAAC,SAC5B,SAAS,oBAAoB,SAAS;AAGxC,SAAS,yBAAyB,IAAmC;AACnE,SAAO,CAAC,EAAE,OAAO,WAAW,MAAM;AAChC,UAAM,QAAmB,EAAE,UAAU,IAAI,OAAO,EAAE,EAAE;AACpD,QAAI,CAAC,qBAAqB,YAAY,IAAI,EAAG,OAAM,SAAS,IAAI,OAAO,EAAE;AACzE,WAAO;AAAA,EACT;AACF;AACA,IAAM,6BAA6B,yBAAyB,EAAE;AAC9D,IAAM,8BAA8B,yBAAyB,EAAE;AAC/D,IAAM,8BAA8B,yBAAyB,EAAE;AAMxD,SAAS,iCAAoD;AAClE,SAAO;AAAA,IACL,mBAAmB;AAAA,MACjB,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AASA,SAAS,iBAAiB,IAA2B;AACnD,SAAO,CAAC,EAAE,OAAO,WAAW,MAC1B,YAAY,gBAAgB,aAAa,EAAE,OAAO,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO,EAAE,EAAE;AAClG;AACA,IAAM,qBAAqB,iBAAiB,CAAC;AAC7C,IAAM,sBAAsB,iBAAiB,CAAC;AAC9C,IAAM,sBAAsB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACvE,OAAO,IAAI,OAAO,EAAE;AAAA,EACpB,QAAQ,IAAI,OAAO,EAAE;AACvB;AACA,IAAM,2BAA2B,CAAC,EAAE,MAAM,OAAoC;AAAA,EAC5E,OAAO,IAAI,OAAO,EAAE;AAAA,EACpB,QAAQ,IAAI,OAAO,EAAE;AACvB;AAGO,SAAS,yBAA4C;AAC1D,SAAO;AAAA,IACL,WAAW;AAAA,MACT,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AAmBA,IAAM,sBAA4C,CAAC,EAAE,OAAO,WAAW,MACrE,YAAY,gBAAgB,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,EAAE;AAGvF,SAAS,gCAAmD;AACjE,SAAO;AAAA,IACL,SAAS;AAAA,MACP,gBAAgB;AAAA,QACd,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tokens/field-height.ts"],"sourcesContent":["import type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { fieldEdge } from './field-edge';\nimport { fieldRadiusOverrides, fieldRootStyles } from './field-radius';\nimport {\n DEFAULT_FIELD_HEIGHT,\n FIELD_BORDER_WIDTH,\n FIELD_HEIGHT_SCALE,\n fieldHeightRem,\n resolveFieldHeight,\n} from './field-height.core';\n\nimport type { SizeValue } from './vocabulary';\n\n/**\n * THE FIELD HEIGHT AND BORDER ON THE WEB: the theme channel, the readers, and\n * the styles that put a MUI text field or select on them.\n *\n * The argument for one height is in `./field-height.core.ts`. It is a top-level\n * theme key for the reason `fieldRadius` is (`./field-radius.ts`): MUI types\n * `shape` in `@mui/system`, which this package does not depend on.\n */\n\nexport {\n DEFAULT_FIELD_HEIGHT,\n FIELD_BORDER_WIDTH,\n FIELD_HEIGHT_SCALE,\n fieldHeightPx,\n fieldHeightRem,\n} from './field-height.core';\n\ndeclare module '@mui/material/styles' {\n interface Theme {\n /** The standard field height, in multiples of the default font size. See `@12-apps/ui/tokens`' `fieldHeight`. */\n fieldHeight?: number;\n }\n interface ThemeOptions {\n /** The standard field height, in multiples of the default font size. Defaults to {@link DEFAULT_FIELD_HEIGHT}. */\n fieldHeight?: number;\n }\n}\n\n/** A component's own size string as a step of the field scale — `md` when it is not one. */\nexport function asFieldSize(size: string | undefined): SizeValue {\n return size !== undefined && size in FIELD_HEIGHT_SCALE ? (size as SizeValue) : 'md';\n}\n\n/** A field's height for a size, as CSS — `2.5rem` for the default. */\nexport function fieldHeight(theme: Theme, size: SizeValue = 'md'): string {\n return `${fieldHeightRem(resolveFieldHeight(theme.fieldHeight), size)}rem`;\n}\n\n/** The resting border every field draws: 1px in {@link fieldEdge}'s colour. */\nexport function fieldBorder(theme: Theme, surface?: string): string {\n return `${FIELD_BORDER_WIDTH}px solid ${fieldEdge(theme, surface)}`;\n}\n\n/**\n * The vertical padding that makes a one-line box `height` tall around MUI's\n * `1.4375em` line — in `em`, so it is measured against the field's own type.\n */\nconst verticalInset = (height: string): string => `calc((${height} - 1.4375em) / 2)`;\n\n/**\n * A MUI `TextField` / `Select` / `Autocomplete` (outlined, one line) at the\n * field height for `size`: the root's own vertical padding goes, the input\n * takes the inset, and the resting label sits on the new centre line.\n *\n * Multiline fields are left alone — their height is their content's — and so\n * are `filled` and `standard`, whose label sits inside the box and which draw\n * their own heights as variants.\n */\nexport function fieldControlStyles(theme: Theme, size: SizeValue = 'md'): CSSObject {\n const inset = verticalInset(fieldHeight(theme, size));\n return {\n '& .MuiOutlinedInput-root:not(.MuiInputBase-multiline)': {\n paddingTop: 0,\n paddingBottom: 0,\n '& .MuiOutlinedInput-input, & .MuiSelect-select': { paddingTop: inset, paddingBottom: inset },\n // A select's display box inherits the ROOT's line height as an absolute\n // length, so at a smaller font (0.875rem) it outgrew the inset measured in\n // its own `em` — 42.88px in a 40px row. Its line follows its own type now.\n '& .MuiSelect-select': { lineHeight: '1.4375em' },\n },\n '& .MuiInputLabel-outlined:not(.MuiInputLabel-shrink)': {\n transform: `translate(14px, ${inset}) scale(1)`,\n },\n };\n}\n\n/**\n * The notched outline's resting colour, as a MUI style-override callback. One\n * function, not one per call: two themes built from the same options must\n * compare equal, and a fresh closure each time would make them differ.\n */\nconst restingEdge = ({ theme }: { theme: Theme }): CSSObject => ({ borderColor: fieldEdge(theme) });\n\n/**\n * MUI component overrides that put MUI's OWN outlined fields on the standard\n * height and the one resting border — for a host's bare `TextField` / `Select`,\n * the way `fieldRadiusOverrides` rounds them. Every size MUI has maps to the standard:\n * a host that wants another density asks this package's fields for a `size`.\n */\nexport function fieldHeightOverrides(height: number = DEFAULT_FIELD_HEIGHT): Components<Theme> {\n const inset = verticalInset(`${fieldHeightRem(height)}rem`);\n return {\n MuiOutlinedInput: {\n styleOverrides: {\n input: { '&:not(.MuiInputBase-inputMultiline)': { paddingTop: inset, paddingBottom: inset } },\n // The one resting border; MUI's hover, focus and error rules outrank it.\n notchedOutline: restingEdge,\n },\n },\n MuiInputLabel: {\n styleOverrides: {\n outlined: { '&:not(.MuiInputLabel-shrink)': { transform: `translate(14px, ${inset}) scale(1)` } },\n },\n },\n };\n}\n\n/**\n * Several `Components<Theme>` override sets, merged per component name — a\n * later source's `styleOverrides` win over an earlier one's for the SAME\n * inner key, but neither erases the other's keys. A plain spread of the\n * top-level objects would drop every override but the last source's for a\n * component two sources both style (`fieldOverrides` below merges exactly\n * two; density's geometry overrides, FUT-2766–2768, add more).\n */\nexport function mergeMuiComponents(...sources: Components<Theme>[]): Components<Theme> {\n type Entry = { styleOverrides?: Record<string, unknown> };\n const maps = sources as unknown as Record<string, Entry>[];\n const names = new Set(maps.flatMap((map) => Object.keys(map)));\n return Object.fromEntries(\n [...names].map((name) => [\n name,\n { styleOverrides: Object.assign({}, ...maps.map((map) => map[name]?.styleOverrides)) },\n ]),\n ) as Components<Theme>;\n}\n\n/**\n * Both field overrides — the corner and the height — merged per component.\n * They meet on `MuiOutlinedInput` (`root` from the radius, `input` from the\n * height), so a plain spread would lose one of them.\n */\nexport function fieldOverrides(radius: number | undefined, height: number | undefined): Components<Theme> {\n return mergeMuiComponents(fieldRadiusOverrides(radius), fieldHeightOverrides(height));\n}\n\n/**\n * THE field standard on a MUI `TextField` / `Select` / `Autocomplete`, for a\n * composite that renders MUI's own: the field radius, the field height for\n * `size`, and the one resting border ({@link fieldEdge}). MUI's own hover,\n * focus and error borders outrank the resting one, so they still show.\n */\nexport function fieldTextFieldStyles(theme: Theme, size: SizeValue = 'md'): CSSObject {\n return {\n ...fieldRootStyles(theme),\n ...fieldControlStyles(theme, size),\n '& .MuiOutlinedInput-notchedOutline': { borderColor: fieldEdge(theme) },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA2CO,SAAS,YAAY,MAAqC;AAC/D,SAAO,SAAS,UAAa,QAAQ,qBAAsB,OAAqB;AAClF;AAGO,SAAS,YAAY,OAAc,OAAkB,MAAc;AACxE,SAAO,GAAG,eAAe,mBAAmB,MAAM,WAAW,GAAG,IAAI,CAAC;AACvE;AAGO,SAAS,YAAY,OAAc,SAA0B;AAClE,SAAO,GAAG,kBAAkB,YAAY,UAAU,OAAO,OAAO,CAAC;AACnE;AAMA,IAAM,gBAAgB,CAAC,WAA2B,SAAS,MAAM;AAW1D,SAAS,mBAAmB,OAAc,OAAkB,MAAiB;AAClF,QAAM,QAAQ,cAAc,YAAY,OAAO,IAAI,CAAC;AACpD,SAAO;AAAA,IACL,yDAAyD;AAAA,MACvD,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,kDAAkD,EAAE,YAAY,OAAO,eAAe,MAAM;AAAA;AAAA;AAAA;AAAA,MAI5F,uBAAuB,EAAE,YAAY,WAAW;AAAA,IAClD;AAAA,IACA,wDAAwD;AAAA,MACtD,WAAW,mBAAmB,KAAK;AAAA,IACrC;AAAA,EACF;AACF;AAOA,IAAM,cAAc,CAAC,EAAE,MAAM,OAAoC,EAAE,aAAa,UAAU,KAAK,EAAE;AAQ1F,SAAS,qBAAqB,SAAiB,sBAAyC;AAC7F,QAAM,QAAQ,cAAc,GAAG,eAAe,MAAM,CAAC,KAAK;AAC1D,SAAO;AAAA,IACL,kBAAkB;AAAA,MAChB,gBAAgB;AAAA,QACd,OAAO,EAAE,uCAAuC,EAAE,YAAY,OAAO,eAAe,MAAM,EAAE;AAAA;AAAA,QAE5F,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,eAAe;AAAA,MACb,gBAAgB;AAAA,QACd,UAAU,EAAE,gCAAgC,EAAE,WAAW,mBAAmB,KAAK,aAAa,EAAE;AAAA,MAClG;AAAA,IACF;AAAA,EACF;AACF;AAUO,SAAS,sBAAsB,SAAiD;AAErF,QAAM,OAAO;AACb,QAAM,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC,CAAC;AAC7D,SAAO,OAAO;AAAA,IACZ,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS;AAAA,MACvB;AAAA,MACA,EAAE,gBAAgB,OAAO,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,cAAc,CAAC,EAAE;AAAA,IACvF,CAAC;AAAA,EACH;AACF;AAOO,SAAS,eAAe,QAA4B,QAA+C;AACxG,SAAO,mBAAmB,qBAAqB,MAAM,GAAG,qBAAqB,MAAM,CAAC;AACtF;AAQO,SAAS,qBAAqB,OAAc,OAAkB,MAAiB;AACpF,SAAO;AAAA,IACL,GAAG,gBAAgB,KAAK;AAAA,IACxB,GAAG,mBAAmB,OAAO,IAAI;AAAA,IACjC,sCAAsC,EAAE,aAAa,UAAU,KAAK,EAAE;AAAA,EACxE;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tokens/density-overrides.ts"],"sourcesContent":["import { chipClasses } from '@mui/material/Chip/index.js';\nimport type { Components, CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { rem } from './relative';\n\n// Re-exported so every existing import site (`./density`, `./scales`,\n// `../provider/mui-bridge`) keeps resolving `from './density-overrides'`\n// unchanged — the split below is purely a file-layout move to stay under\n// the 400-line `quality:complexity` cap, not a public-API change.\nexport {\n toggleButtonDensityOverrides,\n tabDensityOverrides,\n tabsIndicatorDensityOverrides,\n tableCellDensityOverrides,\n paginationItemDensityOverrides,\n sliderDensityOverrides,\n} from './density-overrides.navigation';\nexport { checkboxRadioDensityOverrides, switchDensityOverrides } from './density-overrides.selection';\n\n/** The `ownerState` fields `MuiChip`'s two styled slots (root, label) both receive. */\ninterface ChipOwnerStateForOverrides {\n variant?: 'filled' | 'outlined';\n size?: 'small' | 'medium';\n}\n\n/**\n * ICONBUTTON / CHIP GEOMETRY, DENSITY-AWARE (FUT-2766).\n *\n * Both are MUI's own components, unwrapped: `@12-apps/ui` has no\n * `components/*` subpath for `IconButton`, and its `Chip` wrapper\n * (`components/data-display/Chip`) hands the drawing to `MuiChip` and adds\n * only hover/selection/transition `sx` — no geometry of its own (unlike\n * `Button`, which already draws every dimension through `rem()`,\n * `components/form/Button/Button.styles.ts`). So both draw MUI's OWN fixed-px\n * padding/height, verified against the installed `@mui/material@6.5.0` source:\n *\n * - `IconButton` (`node_modules/@mui/material/IconButton/IconButton.js`):\n * `padding: 8` on the root (medium, the default), `padding: 5` at\n * `size=\"small\"`, `padding: 12` at `size=\"large\"`. The icon's own `fontSize`\n * is already relative (`pxToRem(18/24/28)`) — only `padding` was the gap.\n * - `Chip` (`node_modules/@mui/material/Chip/Chip.js`): `height: 32` on the\n * root (medium, the default), `height: 24` at `size=\"small\"`. The label's\n * own side padding is a SEPARATE slot (`name: 'MuiChip', slot: 'Label'`,\n * override key `label`/`labelSmall`) at `paddingLeft`/`paddingRight: 12`\n * default, `8` at `size=\"small\"` — restated in this package's own\n * `Chip.metrics.ts` (`CHIP_SIZES`), which both renderers already read.\n *\n * Neither dimension moved when `theme.typography.fontSize` changed (they are\n * not written through `pxToRem`), so at `density: 'compact'` an\n * `IconButton`/`Chip` next to a now-smaller `Button` looked unchanged — the\n * visual regression FUT-2764 exists to fix. `rem(theme, px)` is the same\n * helper `Button.styles.ts` already uses, so `padding`/`height` move exactly\n * as far as `theme.typography.fontSize`'s coefficient does, and are\n * geometry-neutral at `density: 'normal'`: `rem(theme, 8)` at the unchanged\n * `fontSize: 14` renders to the same computed px as the literal `8` it\n * replaces.\n *\n * **The OUTLINED chip's own label padding (`11`/`7`, one px tighter than\n * filled's `12`/`8`) is a SEPARATE number this file must not clobber** — a\n * bug an earlier revision of this file had (a `styleOverrides.label`/\n * `labelSmall` of `12`/`8` unconditionally wins for EVERY variant, because\n * `ChipLabel`'s own `overridesResolver` (`Chip.js`) returns\n * `[styles.label, styles[label${size}]]` with no variant check at all, and\n * `@mui/system`'s `createStyled` composes `styleThemeOverrides` AFTER the\n * slot's own base styles/variants — so a theme `styleOverrides.label` always\n * outranks `ChipLabel`'s own baked-in `{ props: { variant: 'outlined' },\n * style: { paddingLeft: 11, ... } }`, at ANY density, not just a scaled one).\n * Fixed by putting the outlined fix on the ROOT slot instead, as a nested\n * `.MuiChip-label` selector inside `styleOverrides.root` itself, keyed on\n * `ownerState.variant`/`.size` — proven correct two ways: (1) a probe render\n * confirmed the naive `components.MuiChip.variants` route CANNOT reach the\n * label slot at all — `createStyled`'s `skipVariantsResolver` defaults to\n * `true` for every slot but `'Root'`, so a theme-level `variants` entry is\n * simply never evaluated for `ChipLabel`, proven by rendering an outlined\n * Chip against a `components.MuiChip.variants` entry set to an absurd\n * `999px` and reading `.MuiChip-label`'s OWN computed style: still `11px`,\n * untouched — while the SAME entry DOES leak onto `.MuiChip-root` (`999px`),\n * confirming theme `variants` is a ROOT-slot-only mechanism for this\n * component; (2) a nested `.MuiChip-label` selector written from the ROOT\n * slot is a HIGHER-specificity rule (two classes, `0,2,0`) than the label's\n * own single-class rule (`0,1,0`), so it wins regardless of source order —\n * the same technique `ChipRoot`'s OWN style already uses for its avatar/\n * icon/delete-icon sub-parts (`& .${chipClasses.avatar}`, etc., in\n * `Chip.js`), and read through the SAME `chipClasses` MUI's own `Chip.js`\n * generates the real DOM class from, not a hand-typed copy of it.\n *\n * **That same higher specificity also outranks a HOST's own theming.** A\n * host writing `theme.components.MuiChip.styleOverrides.label` for its own\n * reasons (`0,1,0`) does not win against the outlined rule here (`0,2,0`) —\n * not a bug specific to this file, `ChipLabel`'s OWN baked-in outlined\n * variant already outranked a plain `styleOverrides.label` the same way,\n * before this file existed. A host that needs to change OUTLINED label\n * padding specifically cannot do it through `styleOverrides.label`/\n * `labelSmall` at all; it reaches it through `sx` (a per-instance override,\n * highest specificity of all) or its OWN `MuiChip.styleOverrides.root`\n * function written out in full — `mergeMuiComponents` replaces `root`\n * WHOLESALE when both sides set it (see `./density.ts`'s own doc comment),\n * so a host adding to it must restate `chipRootHeight`'s own height logic\n * alongside its outlined-label change, not merely add a sibling key.\n *\n * The avatar/icon/delete-icon sub-slots (margins, sizes) and IconButton's\n * `edge=\"start\"`/`\"end\"` negative margins are DELIBERATELY untouched by this\n * file — real override keys exist, but none is in the ticket's Done-when nor\n * exercised by a call site this initiative is chasing, so they stay MUI's\n * own literals at every density (including `compact`/`comfortable` — they do\n * NOT scale here; a future ticket that needs them scaled adds its own\n * override, the way `field-height.ts`'s siblings each own one slot).\n *\n * A host that adopts `iconButtonDensityOverrides`/`chipDensityOverrides`\n * standalone (the `@12-apps/ui/tokens` export, no density channel involved)\n * sees the SAME scaling from its own `typography.fontSize` alone — `rem()`\n * only ever reads that one theme number, so a theme with a non-default\n * `fontSize` (set directly, with no `density` in the picture at all) moves\n * these numbers exactly as it moves everything else written through `rem()`.\n *\n * Each slot below is a MODULE-LEVEL function, not a closure built fresh inside\n * `iconButtonDensityOverrides`/`chipDensityOverrides` — the same reason\n * `field-height.ts`'s `restingEdge` is one: two themes built from the same\n * options (the `muiThemeOptionsFrom` and `densityThemeOptions` paths, in\n * particular) must compare equal, and a fresh arrow function per call would\n * make them differ on nothing but identity.\n */\n\nconst iconButtonRootPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 8) });\nconst iconButtonSmallPadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 5) });\nconst iconButtonLargePadding = ({ theme }: { theme: Theme }): CSSObject => ({ padding: rem(theme, 12) });\n\n/** `MuiIconButton`'s own padding, at every size MUI has. */\nexport function iconButtonDensityOverrides(): Components<Theme> {\n return {\n MuiIconButton: {\n styleOverrides: {\n root: iconButtonRootPadding,\n sizeSmall: iconButtonSmallPadding,\n sizeLarge: iconButtonLargePadding,\n },\n },\n };\n}\n\n/** MUI's own outlined-label paddings (`ChipLabel`'s baked-in `variants`, `Chip.js`). */\nconst CHIP_OUTLINED_LABEL_PADDING = { medium: 11, small: 7 } as const;\n\nconst chipRootHeight = ({\n theme,\n ownerState,\n}: {\n theme: Theme;\n ownerState?: ChipOwnerStateForOverrides;\n}): CSSObject => {\n const style: CSSObject = { height: rem(theme, 32) };\n if (ownerState?.variant === 'outlined') {\n const px = CHIP_OUTLINED_LABEL_PADDING[ownerState.size === 'small' ? 'small' : 'medium'];\n // Higher CSS specificity than `.MuiChip-label`'s own single-class rule\n // (two classes vs one) — wins over `chipLabelPadding`/`chipLabelSmallPadding`\n // below regardless of stylesheet insertion order. See the module doc\n // comment for why this must live here and not on the label slot itself.\n // `chipClasses.label`, not a hand-typed `.MuiChip-label` string — the same\n // module `Chip.js`'s own root style reads for its avatar/icon/delete-icon\n // selectors, so this tracks whatever `Chip.js` itself puts on the label\n // element rather than a separately-maintained copy of it. A host that\n // calls `ClassNameGenerator.configure` before any `MuiChip` module loads\n // renames the real class; a literal string would silently stop matching\n // it, `chipClasses.label` cannot.\n style[`& .${chipClasses.label}`] = { paddingLeft: rem(theme, px), paddingRight: rem(theme, px) };\n }\n return style;\n};\nconst chipSmallHeight = ({ theme }: { theme: Theme }): CSSObject => ({ height: rem(theme, 24) });\nconst chipLabelPadding = ({ theme }: { theme: Theme }): CSSObject => ({\n paddingLeft: rem(theme, 12),\n paddingRight: rem(theme, 12),\n});\nconst chipLabelSmallPadding = ({ theme }: { theme: Theme }): CSSObject => ({\n paddingLeft: rem(theme, 8),\n paddingRight: rem(theme, 8),\n});\n\n/** `MuiChip`'s own height (root) and label side padding (label), at both sizes MUI has. */\nexport function chipDensityOverrides(): Components<Theme> {\n return {\n MuiChip: {\n styleOverrides: {\n root: chipRootHeight,\n sizeSmall: chipSmallHeight,\n label: chipLabelPadding,\n labelSmall: chipLabelSmallPadding,\n },\n },\n };\n}\n"],"mappings":";;;;;AAAA,SAAS,mBAAmB;AA2H5B,IAAM,wBAAwB,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AACpG,IAAM,yBAAyB,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,CAAC,EAAE;AACrG,IAAM,yBAAyB,CAAC,EAAE,MAAM,OAAoC,EAAE,SAAS,IAAI,OAAO,EAAE,EAAE;AAG/F,SAAS,6BAAgD;AAC9D,SAAO;AAAA,IACL,eAAe;AAAA,MACb,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAM,8BAA8B,EAAE,QAAQ,IAAI,OAAO,EAAE;AAE3D,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AACF,MAGiB;AACf,QAAM,QAAmB,EAAE,QAAQ,IAAI,OAAO,EAAE,EAAE;AAClD,MAAI,YAAY,YAAY,YAAY;AACtC,UAAM,KAAK,4BAA4B,WAAW,SAAS,UAAU,UAAU,QAAQ;AAYvF,UAAM,MAAM,YAAY,KAAK,EAAE,IAAI,EAAE,aAAa,IAAI,OAAO,EAAE,GAAG,cAAc,IAAI,OAAO,EAAE,EAAE;AAAA,EACjG;AACA,SAAO;AACT;AACA,IAAM,kBAAkB,CAAC,EAAE,MAAM,OAAoC,EAAE,QAAQ,IAAI,OAAO,EAAE,EAAE;AAC9F,IAAM,mBAAmB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACpE,aAAa,IAAI,OAAO,EAAE;AAAA,EAC1B,cAAc,IAAI,OAAO,EAAE;AAC7B;AACA,IAAM,wBAAwB,CAAC,EAAE,MAAM,OAAoC;AAAA,EACzE,aAAa,IAAI,OAAO,CAAC;AAAA,EACzB,cAAc,IAAI,OAAO,CAAC;AAC5B;AAGO,SAAS,uBAA0C;AACxD,SAAO;AAAA,IACL,SAAS;AAAA,MACP,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACF;","names":[]}