@12-apps/ui 6.40.0 → 6.41.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 (650) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +43 -5
  3. package/dist/_internal/components/data-display/Badge/Badge.js +3 -3
  4. package/dist/_internal/components/data-display/Badge/Badge.styles.js +3 -3
  5. package/dist/_internal/components/data-display/Badge/BadgeContent.js +3 -3
  6. package/dist/_internal/components/data-display/CardKit/CardKebab.js +5 -5
  7. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
  8. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
  9. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +3 -3
  10. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  11. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -3
  12. package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +3 -3
  13. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  14. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  15. package/dist/_internal/components/data-display/Chart/chart-context.js +3 -3
  16. package/dist/_internal/components/data-display/Chart/chart-internals.js +3 -3
  17. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  18. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +49 -49
  19. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +64 -64
  20. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +7 -7
  21. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +8 -8
  22. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +14 -14
  23. package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
  24. package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
  25. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +18 -18
  27. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +6 -6
  28. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +3 -3
  29. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +6 -6
  30. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-export.js +5 -5
  32. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +23 -23
  33. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +7 -7
  34. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +5 -5
  35. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +46 -46
  36. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +29 -29
  37. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +37 -14
  38. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +38 -17
  39. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +3 -3
  40. package/dist/_internal/components/data-display/DataViews/data-views-overflow.js +1 -1
  41. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +5 -5
  42. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +6 -6
  43. package/dist/_internal/components/data-display/DataViews/data-views-search.js +3 -3
  44. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +5 -5
  45. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -17
  46. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +24 -24
  47. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -16
  48. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +5 -5
  49. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +7 -7
  50. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +7 -7
  51. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
  52. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -2
  53. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
  54. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +4 -4
  55. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
  56. package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +3 -3
  57. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -3
  58. package/dist/_internal/components/data-display/Sheet/Sheet.js +3 -3
  59. package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +3 -3
  60. package/dist/_internal/components/data-display/index.js +9 -9
  61. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  62. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  63. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +5 -5
  64. package/dist/_internal/components/feedback/index.js +8 -8
  65. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
  66. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +5 -5
  67. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +4 -4
  68. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +4 -4
  69. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +3 -3
  70. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +5 -5
  71. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +3 -3
  72. package/dist/_internal/components/form/Autocomplete/useAutocomplete.js +1 -1
  73. package/dist/_internal/components/form/Button/Button.js +4 -4
  74. package/dist/_internal/components/form/Button/Button.styles.js +3 -3
  75. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +8 -8
  76. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +4 -4
  77. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +4 -4
  78. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +5 -5
  79. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +4 -4
  80. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
  81. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +3 -3
  82. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +4 -4
  83. package/dist/_internal/components/form/CepField/CepField.js +5 -5
  84. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
  85. package/dist/_internal/components/form/Command/Command.js +3 -3
  86. package/dist/_internal/components/form/Command/Command.styles.js +3 -3
  87. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +3 -3
  88. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +5 -5
  89. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +7 -7
  90. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +4 -4
  91. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +5 -5
  92. package/dist/_internal/components/form/Input/Input.js +4 -4
  93. package/dist/_internal/components/form/Input/Input.styles.js +3 -3
  94. package/dist/_internal/components/form/InputOTP/InputOTP.js +4 -4
  95. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +3 -3
  96. package/dist/_internal/components/form/Label/Label.js +3 -3
  97. package/dist/_internal/components/form/Label/Label.styles.js +3 -3
  98. package/dist/_internal/components/form/Menubar/Menubar.item.js +3 -3
  99. package/dist/_internal/components/form/Menubar/Menubar.js +3 -3
  100. package/dist/_internal/components/form/Menubar/Menubar.styles.js +3 -3
  101. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
  102. package/dist/_internal/components/form/NumberField/NumberField.helpers.js +20 -0
  103. package/dist/_internal/components/form/NumberField/NumberField.js +28 -0
  104. package/dist/_internal/components/form/NumberField/NumberField.types.js +1 -0
  105. package/dist/_internal/components/form/NumberField/NumberField.types.js.map +1 -0
  106. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +3 -3
  107. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +5 -5
  108. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +3 -3
  109. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +4 -4
  110. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +3 -3
  111. package/dist/_internal/components/form/Select/Select.js +3 -3
  112. package/dist/_internal/components/form/Switch/Switch.js +5 -5
  113. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
  114. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  115. package/dist/_internal/components/form/Textarea/Textarea.js +3 -3
  116. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +4 -4
  117. package/dist/_internal/components/form/Toggle/Toggle.js +4 -4
  118. package/dist/_internal/components/form/Toggle/Toggle.styles.js +3 -3
  119. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +3 -3
  120. package/dist/_internal/components/form/index.js +54 -48
  121. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
  122. package/dist/_internal/components/form/total-form/Fields/CepField.js +6 -6
  123. package/dist/_internal/components/form/total-form/Fields/SelectField.js +4 -4
  124. package/dist/_internal/components/form/total-form/Fields/TextField.js +5 -5
  125. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +4 -4
  126. package/dist/_internal/components/form/total-form/Fields/index.js +24 -24
  127. package/dist/_internal/components/form/total-form/SubmitButton.js +5 -5
  128. package/dist/_internal/components/index.js +156 -117
  129. package/dist/_internal/components/layout/Box/Box.js +6 -6
  130. package/dist/_internal/components/layout/Card/Card.js +2 -2
  131. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +3 -3
  132. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +3 -3
  133. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +4 -4
  134. package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +3 -3
  135. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +3 -3
  136. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +3 -3
  137. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +3 -3
  138. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
  139. package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js +19 -0
  140. package/dist/_internal/components/layout/SettingCard/SettingCard.hooks.js.map +1 -0
  141. package/dist/_internal/components/layout/SettingCard/SettingCard.js +54 -0
  142. package/dist/_internal/components/layout/SettingCard/SettingCard.js.map +1 -0
  143. package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js +12 -0
  144. package/dist/_internal/components/layout/SettingCard/SettingCard.metrics.js.map +1 -0
  145. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +59 -0
  146. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js.map +1 -0
  147. package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js +37 -0
  148. package/dist/_internal/components/layout/SettingCard/SettingCard.styles.js.map +1 -0
  149. package/dist/_internal/components/layout/SettingCard/SettingCard.types.js +1 -0
  150. package/dist/_internal/components/layout/SettingCard/SettingCard.types.js.map +1 -0
  151. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +56 -0
  152. package/dist/_internal/components/layout/SettingCard/SettingGrid.js.map +1 -0
  153. package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js +10 -0
  154. package/dist/_internal/components/layout/SettingCard/SettingGroup.context.js.map +1 -0
  155. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +65 -0
  156. package/dist/_internal/components/layout/SettingCard/SettingGroup.js.map +1 -0
  157. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +63 -0
  158. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js.map +1 -0
  159. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +65 -0
  160. package/dist/_internal/components/layout/SettingCard/SettingToggle.js.map +1 -0
  161. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
  162. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
  163. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
  164. package/dist/_internal/components/layout/Stack/Stack.js +7 -7
  165. package/dist/_internal/components/layout/TableFilter/TableFilter.js +3 -3
  166. package/dist/_internal/components/layout/index.js +88 -26
  167. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -8
  168. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +3 -3
  169. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
  170. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
  171. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  172. package/dist/_internal/components/navigation/Pagination/Pagination.js +4 -4
  173. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +3 -3
  174. package/dist/_internal/components/navigation/Tabs/Tabs.js +4 -4
  175. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +2 -2
  176. package/dist/_internal/components/navigation/index.js +27 -27
  177. package/dist/_internal/components/typography/index.js +4 -4
  178. package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
  179. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +3 -3
  180. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
  181. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +3 -3
  182. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +3 -3
  183. package/dist/_internal/components/utility/index.js +16 -16
  184. package/dist/_internal/en-US.data-display.js +2 -2
  185. package/dist/_internal/en-US.layout.js +5 -1
  186. package/dist/_internal/icons/Icon.js +6 -6
  187. package/dist/_internal/provider/UiProvider.js +5 -5
  188. package/dist/_internal/provider/mui-bridge.js +4 -4
  189. package/dist/_internal/provider/use-ui-theme.js +5 -5
  190. package/dist/_internal/pt-BR.data-display.js +2 -2
  191. package/dist/_internal/pt-BR.layout.js +5 -1
  192. package/dist/_internal/social-login-button/social-login-button.js +7 -7
  193. package/dist/_internal/tokens/density.js +3 -3
  194. package/dist/_internal/tokens/field-height.js +2 -2
  195. package/dist/_internal/user-avatar/user-avatar.js +7 -7
  196. package/dist/charts.js +3 -3
  197. package/dist/chunk-2GTORM5E.js +1 -0
  198. package/dist/chunk-2GTORM5E.js.map +1 -0
  199. package/dist/{chunk-3PGFMBEI.js → chunk-2LKWJV65.js} +5 -5
  200. package/dist/{chunk-IIUB4IOH.js → chunk-2XHIF3M3.js} +4 -4
  201. package/dist/chunk-33L26P4J.js +27 -0
  202. package/dist/chunk-33L26P4J.js.map +1 -0
  203. package/dist/{chunk-CKPFLEOL.js → chunk-3CUWQXTG.js} +3 -3
  204. package/dist/{chunk-GVFPOKJW.js → chunk-3CYTVX4T.js} +5 -5
  205. package/dist/chunk-3DO5AJCG.js +117 -0
  206. package/dist/chunk-3DO5AJCG.js.map +1 -0
  207. package/dist/{chunk-TJPQIFI4.js → chunk-3EPA2A4M.js} +8 -8
  208. package/dist/{chunk-HDELNMZC.js → chunk-3MJHHPRW.js} +2 -2
  209. package/dist/chunk-3U7WKBMH.js +27 -0
  210. package/dist/chunk-3U7WKBMH.js.map +1 -0
  211. package/dist/{chunk-RNC574FS.js → chunk-3UEZ6NUI.js} +2 -2
  212. package/dist/{chunk-OXLOC6TC.js → chunk-3XS37SQT.js} +3 -3
  213. package/dist/{chunk-2Q5QHSU2.js → chunk-44USLRMT.js} +8 -8
  214. package/dist/{chunk-O7OQZJ3D.js → chunk-4GN2RLYL.js} +2 -2
  215. package/dist/{chunk-QUFKPCWD.js → chunk-4S2LWZ7L.js} +2 -2
  216. package/dist/{chunk-LPWIAVGP.js → chunk-4UVFPORR.js} +5 -5
  217. package/dist/{chunk-3B4YMZD5.js → chunk-4Z7GEO2R.js} +2 -2
  218. package/dist/{chunk-XXPEFK4V.js → chunk-53O2TNSR.js} +5 -5
  219. package/dist/{chunk-G3SKAI6S.js → chunk-54HTXJJ2.js} +2 -2
  220. package/dist/{chunk-JE6RZ5L6.js → chunk-5ZOJLYD2.js} +4 -4
  221. package/dist/{chunk-JDUIWHJ3.js → chunk-6H4TPEMO.js} +2 -2
  222. package/dist/{chunk-FYZJEME4.js → chunk-6JGATEOF.js} +3 -3
  223. package/dist/{chunk-ZFUOLLZS.js → chunk-6L2FKTBO.js} +5 -5
  224. package/dist/{chunk-BDBI4W77.js → chunk-6MD5QXXJ.js} +3 -3
  225. package/dist/{chunk-ODW2D5PN.js → chunk-6QYKZMEE.js} +5 -2
  226. package/dist/{chunk-ODW2D5PN.js.map → chunk-6QYKZMEE.js.map} +1 -1
  227. package/dist/{chunk-LJSKF43D.js → chunk-6TPYT3UC.js} +5 -5
  228. package/dist/{chunk-KZT5JC3E.js → chunk-6ZD3FI5P.js} +2 -2
  229. package/dist/{chunk-SBV62CSC.js → chunk-72FPUWD6.js} +2 -2
  230. package/dist/{chunk-L75CZ3SI.js → chunk-72S2RGWD.js} +2 -2
  231. package/dist/{chunk-WUFTDJ2L.js → chunk-77BKKPCI.js} +2 -2
  232. package/dist/{chunk-5A4XPYNK.js → chunk-7FEXRMJE.js} +2 -2
  233. package/dist/{chunk-AW336SO7.js → chunk-7KKMZJFT.js} +2 -2
  234. package/dist/{chunk-4SSWJRC4.js → chunk-7TE4TMS3.js} +3 -3
  235. package/dist/chunk-AEMD6JHZ.js +1 -0
  236. package/dist/chunk-AEMD6JHZ.js.map +1 -0
  237. package/dist/{chunk-5XWCKCHP.js → chunk-ALOUJ3CE.js} +4 -4
  238. package/dist/{chunk-UFUMYNKS.js → chunk-AWG2AJHX.js} +5 -5
  239. package/dist/{chunk-DDVNYVJH.js → chunk-B3QWQG62.js} +2 -2
  240. package/dist/{chunk-CKI33CN2.js → chunk-BA6Z52QN.js} +2 -2
  241. package/dist/{chunk-53TDQYA3.js → chunk-BKZERHNC.js} +4 -4
  242. package/dist/{chunk-RSWHKOUN.js → chunk-BM4KKGL7.js} +2 -2
  243. package/dist/chunk-BOWS4U6W.js +1 -0
  244. package/dist/chunk-BOWS4U6W.js.map +1 -0
  245. package/dist/{chunk-M4P7NS2L.js → chunk-BR2T72JI.js} +23 -15
  246. package/dist/chunk-BR2T72JI.js.map +1 -0
  247. package/dist/{chunk-OZGJ3YCN.js → chunk-BVSSEOLI.js} +2 -2
  248. package/dist/{chunk-FI6BL4UU.js → chunk-C2TERIB4.js} +2 -2
  249. package/dist/{chunk-DUITNU72.js → chunk-C6OVO6AT.js} +2 -2
  250. package/dist/{chunk-WL2S2YB3.js → chunk-CKHFYTIX.js} +4 -4
  251. package/dist/{chunk-GBEHJBYM.js → chunk-CLK67TNH.js} +2 -2
  252. package/dist/{chunk-T2HZ3GVA.js → chunk-CM2Q7IH3.js} +4 -4
  253. package/dist/{chunk-GE26GVHM.js → chunk-CMFJQH6A.js} +2 -2
  254. package/dist/{chunk-6PPHALM3.js → chunk-CMLIWUBW.js} +4 -4
  255. package/dist/{chunk-AU3GV6UL.js → chunk-DH5UJD2I.js} +3 -3
  256. package/dist/{chunk-BKT2KJ56.js → chunk-DH6SL3SY.js} +2 -2
  257. package/dist/{chunk-APPIPQFT.js → chunk-DH77PLFF.js} +8 -8
  258. package/dist/{chunk-TRTX4BDI.js → chunk-DJKVSUXH.js} +2 -2
  259. package/dist/{chunk-VE3P77TV.js → chunk-DLWLIPCP.js} +2 -2
  260. package/dist/{chunk-MWPXKZ7O.js → chunk-ERY6D2OV.js} +4 -4
  261. package/dist/{chunk-TJ7NQG7E.js → chunk-FBUCXTA4.js} +4 -4
  262. package/dist/{chunk-SE6TW72O.js → chunk-FDMQ7H22.js} +2 -2
  263. package/dist/{chunk-E2FMNY6B.js → chunk-FXWXBEOZ.js} +2 -2
  264. package/dist/{chunk-UI5O6J6R.js → chunk-FY6PONLA.js} +4 -4
  265. package/dist/{chunk-QUIHOPOC.js → chunk-G4TKMUOL.js} +2 -2
  266. package/dist/{chunk-6BS2RBW4.js → chunk-G7XHJPLO.js} +3 -3
  267. package/dist/{chunk-4RXPIHJG.js → chunk-GE2CCITY.js} +2 -2
  268. package/dist/{chunk-WRHBXOGN.js → chunk-GG62LKA3.js} +5 -5
  269. package/dist/{chunk-YQCRQHVU.js → chunk-GI63FQEJ.js} +4 -4
  270. package/dist/{chunk-WUQKXAYF.js → chunk-GPHURU2K.js} +5 -5
  271. package/dist/{chunk-GPT673YL.js → chunk-H72YKEGD.js} +2 -2
  272. package/dist/chunk-HALFOXSZ.js +1 -0
  273. package/dist/chunk-HALFOXSZ.js.map +1 -0
  274. package/dist/{chunk-AJVFSUC4.js → chunk-HFVYWHJT.js} +10 -10
  275. package/dist/{chunk-UP6RO2PR.js → chunk-HKBJZX3C.js} +3 -3
  276. package/dist/chunk-IC7GHPMK.js +22 -0
  277. package/dist/chunk-IC7GHPMK.js.map +1 -0
  278. package/dist/{chunk-V3RQFWL6.js → chunk-IUD6N52Q.js} +3 -3
  279. package/dist/{chunk-N4D5V3AA.js → chunk-JAGAFEZL.js} +2 -2
  280. package/dist/{chunk-CLTK76ZF.js → chunk-JE5GEWTG.js} +5 -5
  281. package/dist/{chunk-23XBBGWD.js → chunk-JFLFZLOA.js} +5 -5
  282. package/dist/{chunk-BLUURKCY.js → chunk-K6LNHHSH.js} +2 -2
  283. package/dist/{chunk-HSNOWYEE.js → chunk-K7FSTB2K.js} +2 -2
  284. package/dist/{chunk-SXVCXLKU.js → chunk-K7MQP2KT.js} +3 -3
  285. package/dist/{chunk-QQ46JX5H.js → chunk-KHOAXZW2.js} +4 -4
  286. package/dist/{chunk-SCVBGQFO.js → chunk-KQZGUHYZ.js} +2 -2
  287. package/dist/{chunk-GJ7GIGDS.js → chunk-LCWGNDTH.js} +2 -2
  288. package/dist/{chunk-4D2IVVHR.js → chunk-LF3EVXMF.js} +2 -2
  289. package/dist/{chunk-2XTBGZSR.js → chunk-LGCRL7DK.js} +2 -2
  290. package/dist/{chunk-WY35GCHY.js → chunk-LODMNSLR.js} +3 -3
  291. package/dist/{chunk-EXFX3JRN.js → chunk-M47ZOUGF.js} +4 -4
  292. package/dist/{chunk-AQCQ2USS.js → chunk-M65ZNPLO.js} +2 -2
  293. package/dist/{chunk-COUFRGD6.js → chunk-MEBQKYH4.js} +4 -4
  294. package/dist/{chunk-JZ5IGO5G.js → chunk-NCB4GBRL.js} +2 -2
  295. package/dist/{chunk-SE4WZIKD.js → chunk-NFGIA2ZV.js} +2 -2
  296. package/dist/{chunk-D455V3BW.js → chunk-NOLSQK4J.js} +28 -30
  297. package/dist/chunk-NOLSQK4J.js.map +1 -0
  298. package/dist/{chunk-WTXPGASQ.js → chunk-NPPJ3IJP.js} +4 -4
  299. package/dist/chunk-NPPJ3IJP.js.map +1 -0
  300. package/dist/{chunk-H772ZSAI.js → chunk-NQ7NMCRI.js} +2 -2
  301. package/dist/{chunk-P7JF6XT7.js → chunk-NRSVI23L.js} +2 -2
  302. package/dist/{chunk-FRTEU7ZO.js → chunk-NU55QUMO.js} +2 -2
  303. package/dist/chunk-OJUORFGO.js +87 -0
  304. package/dist/chunk-OJUORFGO.js.map +1 -0
  305. package/dist/{chunk-JB56E4XQ.js → chunk-PAICZOL5.js} +6 -6
  306. package/dist/chunk-PEOOCQ2T.js +140 -0
  307. package/dist/chunk-PEOOCQ2T.js.map +1 -0
  308. package/dist/chunk-PGGGKYWG.js +1 -0
  309. package/dist/chunk-PGGGKYWG.js.map +1 -0
  310. package/dist/{chunk-QX3CXOJ3.js → chunk-PTONBPZL.js} +2 -2
  311. package/dist/chunk-Q4JWWTL4.js +36 -0
  312. package/dist/chunk-Q4JWWTL4.js.map +1 -0
  313. package/dist/{chunk-4UASV6VL.js → chunk-QDELBNL3.js} +2 -2
  314. package/dist/{chunk-ZE56GK5C.js → chunk-QEI5DC6S.js} +5 -5
  315. package/dist/chunk-QGUNUXTT.js +1 -0
  316. package/dist/chunk-QGUNUXTT.js.map +1 -0
  317. package/dist/{chunk-3UXBIUJF.js → chunk-RDFPM2AQ.js} +5 -5
  318. package/dist/chunk-RDZGXJOD.js +74 -0
  319. package/dist/chunk-RDZGXJOD.js.map +1 -0
  320. package/dist/chunk-RN7UJI7S.js +1 -0
  321. package/dist/chunk-RN7UJI7S.js.map +1 -0
  322. package/dist/chunk-RPBGUWNF.js +168 -0
  323. package/dist/chunk-RPBGUWNF.js.map +1 -0
  324. package/dist/{chunk-BKHO4RSF.js → chunk-RZ2VZ7SL.js} +2 -2
  325. package/dist/{chunk-MT7QJRP7.js → chunk-S4IXC2V3.js} +3 -3
  326. package/dist/chunk-SALQ65SM.js +118 -0
  327. package/dist/chunk-SALQ65SM.js.map +1 -0
  328. package/dist/{chunk-XOZYUJQ5.js → chunk-SDKOOVEX.js} +5 -3
  329. package/dist/{chunk-XOZYUJQ5.js.map → chunk-SDKOOVEX.js.map} +1 -1
  330. package/dist/{chunk-5K4G2XYS.js → chunk-SNBAMWI5.js} +2 -2
  331. package/dist/{chunk-MKJHDHLF.js → chunk-TCNTIGMY.js} +2 -2
  332. package/dist/{chunk-EKM7C4X2.js → chunk-TJ3334AJ.js} +3 -3
  333. package/dist/{chunk-RUZVK4FV.js → chunk-TPVSHO75.js} +3 -3
  334. package/dist/{chunk-I72PREY7.js → chunk-TTJTMDLI.js} +2 -2
  335. package/dist/{chunk-TU5EIKJA.js → chunk-U5SH3VRJ.js} +4 -4
  336. package/dist/chunk-U67ZQ6VM.js +82 -0
  337. package/dist/chunk-U67ZQ6VM.js.map +1 -0
  338. package/dist/{chunk-DOLDAAXH.js → chunk-UT73NGRS.js} +3 -3
  339. package/dist/chunk-VYM2GPR6.js +47 -0
  340. package/dist/chunk-VYM2GPR6.js.map +1 -0
  341. package/dist/{chunk-BXEMC4YH.js → chunk-VYV3JOV5.js} +2 -2
  342. package/dist/{chunk-OTWMG7B2.js → chunk-WN5PNP6F.js} +4 -4
  343. package/dist/chunk-X3C3VTYS.js +85 -0
  344. package/dist/chunk-X3C3VTYS.js.map +1 -0
  345. package/dist/{chunk-HZBRXLV7.js → chunk-XB7HYOMM.js} +2 -2
  346. package/dist/{chunk-C6FVXX7Y.js → chunk-XBLFK2FL.js} +2 -2
  347. package/dist/{chunk-EDBVMLNX.js → chunk-XHA2NXLD.js} +2 -2
  348. package/dist/chunk-XJQNSMGA.js +10 -0
  349. package/dist/chunk-XJQNSMGA.js.map +1 -0
  350. package/dist/{chunk-ZO4NO77T.js → chunk-XO4ZUHVH.js} +2 -2
  351. package/dist/{chunk-OPT7X3Y6.js → chunk-XXL4PM4M.js} +2 -2
  352. package/dist/{chunk-3HKUOLPD.js → chunk-XZY7O7JJ.js} +4 -4
  353. package/dist/{chunk-743SY4WQ.js → chunk-YLXQWYOG.js} +5 -5
  354. package/dist/{chunk-Q33JWFSA.js → chunk-YPIVLPXF.js} +2 -2
  355. package/dist/{chunk-T7UUP7VD.js → chunk-YRUX7XMQ.js} +2 -2
  356. package/dist/{chunk-4JEXYOSN.js → chunk-YTXZUTLF.js} +2 -2
  357. package/dist/{chunk-V7A5ZAAF.js → chunk-YWJDUJAR.js} +3 -3
  358. package/dist/{chunk-ZK7YERPQ.js → chunk-Z2NN53E5.js} +2 -2
  359. package/dist/{chunk-CLSC36JS.js → chunk-Z4DKVLYG.js} +3 -3
  360. package/dist/{chunk-NFJ3VVD3.js → chunk-Z6T5SXST.js} +5 -5
  361. package/dist/{chunk-IITZA6U2.js → chunk-ZBVU2YWV.js} +9 -9
  362. package/dist/{chunk-IEWAFD6L.js → chunk-ZC5HDBQO.js} +2 -2
  363. package/dist/{chunk-KQS4ZJGS.js → chunk-ZGCPDA3F.js} +5 -5
  364. package/dist/{chunk-AHDNANID.js → chunk-ZH2SZ6B3.js} +2 -2
  365. package/dist/{chunk-KOX2AEFW.js → chunk-ZKWVCSAB.js} +2 -2
  366. package/dist/{chunk-K2U4BNHQ.js → chunk-ZNBLGS66.js} +2 -2
  367. package/dist/{chunk-WGUY7EIB.js → chunk-ZUME25DS.js} +5 -5
  368. package/dist/data-display/Badge.js +3 -3
  369. package/dist/data-display/CardKit.js +6 -6
  370. package/dist/data-display/Carousel.js +3 -3
  371. package/dist/data-display/Chart.js +3 -3
  372. package/dist/data-display/Chip.js +1 -0
  373. package/dist/data-display/DataViews.js +68 -68
  374. package/dist/data-display/FleetMap.js +9 -9
  375. package/dist/data-display/MapPreview.js +5 -5
  376. package/dist/data-display/Sheet.js +3 -3
  377. package/dist/en-US.js +15 -11
  378. package/dist/feedback/ConfirmAction.js +5 -5
  379. package/dist/feedback/Dialog.js +2 -2
  380. package/dist/feedback/NotificationStatusNotice.js +5 -5
  381. package/dist/form/AddressAutocomplete.js +7 -7
  382. package/dist/form/Autocomplete.js +5 -5
  383. package/dist/form/Button.js +4 -4
  384. package/dist/form/CategorySelect.js +10 -10
  385. package/dist/form/CepField.js +5 -5
  386. package/dist/form/CodeEditor.js +2 -2
  387. package/dist/form/Command.js +3 -3
  388. package/dist/form/CreatableSelect.js +3 -3
  389. package/dist/form/DateRangePicker.js +7 -7
  390. package/dist/form/Input.js +4 -4
  391. package/dist/form/InputOTP.js +4 -4
  392. package/dist/form/Label.js +3 -3
  393. package/dist/form/Menubar.js +3 -3
  394. package/dist/form/NumberField.js +29 -0
  395. package/dist/form/NumberField.js.map +1 -0
  396. package/dist/form/PhoneInput.js +3 -3
  397. package/dist/form/RadioGroup.js +5 -5
  398. package/dist/form/RichTextEditor.js +3 -3
  399. package/dist/form/Select.js +3 -3
  400. package/dist/form/Switch.js +5 -5
  401. package/dist/form/Textarea.js +3 -3
  402. package/dist/form/Toggle.js +4 -4
  403. package/dist/form/ToggleGroup.js +3 -3
  404. package/dist/form/total-form.js +30 -30
  405. package/dist/icons.js +7 -6
  406. package/dist/layout/Box.js +6 -6
  407. package/dist/layout/Card.js +2 -2
  408. package/dist/layout/Collapsible.js +1 -0
  409. package/dist/layout/ContentToolbar.js +13 -13
  410. package/dist/layout/ScrollArea.js +2 -2
  411. package/dist/layout/SettingCard.js +80 -0
  412. package/dist/layout/SettingCard.js.map +1 -0
  413. package/dist/layout/SettingsLayout.js +4 -4
  414. package/dist/layout/Stack.js +7 -7
  415. package/dist/layout/TableFilter.js +3 -3
  416. package/dist/locales.js +37 -23
  417. package/dist/locales.js.map +1 -1
  418. package/dist/navigation/AppHeader.js +12 -12
  419. package/dist/navigation/NavigationMenu.js +4 -4
  420. package/dist/navigation/Pagination.js +4 -4
  421. package/dist/navigation/Tabs.js +4 -4
  422. package/dist/provider.js +6 -6
  423. package/dist/pt-BR.js +12 -8
  424. package/dist/social-login-button.js +7 -7
  425. package/dist/tokens.js +4 -4
  426. package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts +6 -1
  427. package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
  428. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts +0 -11
  429. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  430. package/dist/types/components/data-display/DataViews/data-views-overflow.d.ts.map +1 -1
  431. package/dist/types/components/form/Autocomplete/useAutocomplete.d.ts +9 -0
  432. package/dist/types/components/form/Autocomplete/useAutocomplete.d.ts.map +1 -1
  433. package/dist/types/components/form/Input/Input.d.ts.map +1 -1
  434. package/dist/types/components/form/Input/Input.types.d.ts +10 -0
  435. package/dist/types/components/form/Input/Input.types.d.ts.map +1 -1
  436. package/dist/types/components/form/NumberField/NumberField.d.ts +21 -0
  437. package/dist/types/components/form/NumberField/NumberField.d.ts.map +1 -0
  438. package/dist/types/components/form/NumberField/NumberField.helpers.d.ts +48 -0
  439. package/dist/types/components/form/NumberField/NumberField.helpers.d.ts.map +1 -0
  440. package/dist/types/components/form/NumberField/NumberField.types.d.ts +31 -0
  441. package/dist/types/components/form/NumberField/NumberField.types.d.ts.map +1 -0
  442. package/dist/types/components/form/NumberField/index.d.ts +3 -0
  443. package/dist/types/components/form/NumberField/index.d.ts.map +1 -0
  444. package/dist/types/components/form/index.d.ts +1 -0
  445. package/dist/types/components/form/index.d.ts.map +1 -1
  446. package/dist/types/components/layout/SettingCard/SettingCard.d.ts +14 -0
  447. package/dist/types/components/layout/SettingCard/SettingCard.d.ts.map +1 -0
  448. package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts +79 -0
  449. package/dist/types/components/layout/SettingCard/SettingCard.hooks.d.ts.map +1 -0
  450. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts +21 -0
  451. package/dist/types/components/layout/SettingCard/SettingCard.metrics.d.ts.map +1 -0
  452. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts +49 -0
  453. package/dist/types/components/layout/SettingCard/SettingCard.parts.d.ts.map +1 -0
  454. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts +48 -0
  455. package/dist/types/components/layout/SettingCard/SettingCard.styles.d.ts.map +1 -0
  456. package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts +127 -0
  457. package/dist/types/components/layout/SettingCard/SettingCard.types.d.ts.map +1 -0
  458. package/dist/types/components/layout/SettingCard/SettingGrid.d.ts +33 -0
  459. package/dist/types/components/layout/SettingCard/SettingGrid.d.ts.map +1 -0
  460. package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts +13 -0
  461. package/dist/types/components/layout/SettingCard/SettingGroup.context.d.ts.map +1 -0
  462. package/dist/types/components/layout/SettingCard/SettingGroup.d.ts +18 -0
  463. package/dist/types/components/layout/SettingCard/SettingGroup.d.ts.map +1 -0
  464. package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts +28 -0
  465. package/dist/types/components/layout/SettingCard/SettingSwitch.d.ts.map +1 -0
  466. package/dist/types/components/layout/SettingCard/SettingToggle.d.ts +13 -0
  467. package/dist/types/components/layout/SettingCard/SettingToggle.d.ts.map +1 -0
  468. package/dist/types/components/layout/SettingCard/index.d.ts +6 -0
  469. package/dist/types/components/layout/SettingCard/index.d.ts.map +1 -0
  470. package/dist/types/components/layout/index.d.ts +1 -0
  471. package/dist/types/components/layout/index.d.ts.map +1 -1
  472. package/dist/types/copy/layout.d.ts +27 -0
  473. package/dist/types/copy/layout.d.ts.map +1 -1
  474. package/dist/types/en-US.layout.d.ts +3 -1
  475. package/dist/types/en-US.layout.d.ts.map +1 -1
  476. package/dist/types/locales.d.ts +3 -1
  477. package/dist/types/locales.d.ts.map +1 -1
  478. package/dist/types/pt-BR.layout.d.ts +3 -1
  479. package/dist/types/pt-BR.layout.d.ts.map +1 -1
  480. package/dist/user-avatar.js +7 -7
  481. package/dist/utility/InstallPrompt.js +2 -2
  482. package/dist/utility/WorkflowStep.js +3 -3
  483. package/package.json +9 -1
  484. package/src/components/data-display/DataViews/data-views-category-pill.tsx +6 -1
  485. package/src/components/data-display/DataViews/data-views-more-fields.tsx +43 -37
  486. package/src/components/data-display/DataViews/data-views-overflow.ts +12 -1
  487. package/src/components/form/Autocomplete/useAutocomplete.ts +46 -16
  488. package/src/components/form/Input/Input.tsx +2 -0
  489. package/src/components/form/Input/Input.types.ts +10 -0
  490. package/src/components/form/NumberField/NumberField.helpers.ts +77 -0
  491. package/src/components/form/NumberField/NumberField.md +86 -0
  492. package/src/components/form/NumberField/NumberField.tsx +88 -0
  493. package/src/components/form/NumberField/NumberField.types.ts +43 -0
  494. package/src/components/form/NumberField/index.ts +2 -0
  495. package/src/components/form/NumberField/tests.md +51 -0
  496. package/src/components/form/NumberField/track.md +42 -0
  497. package/src/components/form/index.ts +1 -0
  498. package/src/components/layout/SettingCard/SettingCard.hooks.ts +191 -0
  499. package/src/components/layout/SettingCard/SettingCard.md +121 -0
  500. package/src/components/layout/SettingCard/SettingCard.metrics.ts +22 -0
  501. package/src/components/layout/SettingCard/SettingCard.parts.tsx +162 -0
  502. package/src/components/layout/SettingCard/SettingCard.styles.ts +142 -0
  503. package/src/components/layout/SettingCard/SettingCard.tsx +197 -0
  504. package/src/components/layout/SettingCard/SettingCard.types.ts +140 -0
  505. package/src/components/layout/SettingCard/SettingGrid.md +65 -0
  506. package/src/components/layout/SettingCard/SettingGrid.tsx +105 -0
  507. package/src/components/layout/SettingCard/SettingGroup.context.ts +11 -0
  508. package/src/components/layout/SettingCard/SettingGroup.md +81 -0
  509. package/src/components/layout/SettingCard/SettingGroup.tsx +73 -0
  510. package/src/components/layout/SettingCard/SettingSwitch.tsx +92 -0
  511. package/src/components/layout/SettingCard/SettingToggle.md +61 -0
  512. package/src/components/layout/SettingCard/SettingToggle.tsx +43 -0
  513. package/src/components/layout/SettingCard/index.ts +18 -0
  514. package/src/components/layout/SettingCard/tests.md +68 -0
  515. package/src/components/layout/SettingCard/track.md +54 -0
  516. package/src/components/layout/index.ts +1 -0
  517. package/src/copy/layout.ts +29 -0
  518. package/src/en-US.layout.ts +16 -0
  519. package/src/locales.ts +10 -0
  520. package/src/pt-BR.layout.ts +16 -0
  521. package/dist/chunk-A7RIZOAL.js +0 -13
  522. package/dist/chunk-A7RIZOAL.js.map +0 -1
  523. package/dist/chunk-BY3JEK5T.js +0 -1
  524. package/dist/chunk-D455V3BW.js.map +0 -1
  525. package/dist/chunk-FZJ2FTGE.js +0 -1
  526. package/dist/chunk-GRHECKHU.js +0 -13
  527. package/dist/chunk-GRHECKHU.js.map +0 -1
  528. package/dist/chunk-M4P7NS2L.js.map +0 -1
  529. package/dist/chunk-WTXPGASQ.js.map +0 -1
  530. /package/dist/{chunk-BY3JEK5T.js.map → _internal/components/form/NumberField/NumberField.helpers.js.map} +0 -0
  531. /package/dist/{chunk-FZJ2FTGE.js.map → _internal/components/form/NumberField/NumberField.js.map} +0 -0
  532. /package/dist/{chunk-3PGFMBEI.js.map → chunk-2LKWJV65.js.map} +0 -0
  533. /package/dist/{chunk-IIUB4IOH.js.map → chunk-2XHIF3M3.js.map} +0 -0
  534. /package/dist/{chunk-CKPFLEOL.js.map → chunk-3CUWQXTG.js.map} +0 -0
  535. /package/dist/{chunk-GVFPOKJW.js.map → chunk-3CYTVX4T.js.map} +0 -0
  536. /package/dist/{chunk-TJPQIFI4.js.map → chunk-3EPA2A4M.js.map} +0 -0
  537. /package/dist/{chunk-HDELNMZC.js.map → chunk-3MJHHPRW.js.map} +0 -0
  538. /package/dist/{chunk-RNC574FS.js.map → chunk-3UEZ6NUI.js.map} +0 -0
  539. /package/dist/{chunk-OXLOC6TC.js.map → chunk-3XS37SQT.js.map} +0 -0
  540. /package/dist/{chunk-2Q5QHSU2.js.map → chunk-44USLRMT.js.map} +0 -0
  541. /package/dist/{chunk-O7OQZJ3D.js.map → chunk-4GN2RLYL.js.map} +0 -0
  542. /package/dist/{chunk-QUFKPCWD.js.map → chunk-4S2LWZ7L.js.map} +0 -0
  543. /package/dist/{chunk-LPWIAVGP.js.map → chunk-4UVFPORR.js.map} +0 -0
  544. /package/dist/{chunk-3B4YMZD5.js.map → chunk-4Z7GEO2R.js.map} +0 -0
  545. /package/dist/{chunk-XXPEFK4V.js.map → chunk-53O2TNSR.js.map} +0 -0
  546. /package/dist/{chunk-G3SKAI6S.js.map → chunk-54HTXJJ2.js.map} +0 -0
  547. /package/dist/{chunk-JE6RZ5L6.js.map → chunk-5ZOJLYD2.js.map} +0 -0
  548. /package/dist/{chunk-JDUIWHJ3.js.map → chunk-6H4TPEMO.js.map} +0 -0
  549. /package/dist/{chunk-FYZJEME4.js.map → chunk-6JGATEOF.js.map} +0 -0
  550. /package/dist/{chunk-ZFUOLLZS.js.map → chunk-6L2FKTBO.js.map} +0 -0
  551. /package/dist/{chunk-BDBI4W77.js.map → chunk-6MD5QXXJ.js.map} +0 -0
  552. /package/dist/{chunk-LJSKF43D.js.map → chunk-6TPYT3UC.js.map} +0 -0
  553. /package/dist/{chunk-KZT5JC3E.js.map → chunk-6ZD3FI5P.js.map} +0 -0
  554. /package/dist/{chunk-SBV62CSC.js.map → chunk-72FPUWD6.js.map} +0 -0
  555. /package/dist/{chunk-L75CZ3SI.js.map → chunk-72S2RGWD.js.map} +0 -0
  556. /package/dist/{chunk-WUFTDJ2L.js.map → chunk-77BKKPCI.js.map} +0 -0
  557. /package/dist/{chunk-5A4XPYNK.js.map → chunk-7FEXRMJE.js.map} +0 -0
  558. /package/dist/{chunk-AW336SO7.js.map → chunk-7KKMZJFT.js.map} +0 -0
  559. /package/dist/{chunk-4SSWJRC4.js.map → chunk-7TE4TMS3.js.map} +0 -0
  560. /package/dist/{chunk-5XWCKCHP.js.map → chunk-ALOUJ3CE.js.map} +0 -0
  561. /package/dist/{chunk-UFUMYNKS.js.map → chunk-AWG2AJHX.js.map} +0 -0
  562. /package/dist/{chunk-DDVNYVJH.js.map → chunk-B3QWQG62.js.map} +0 -0
  563. /package/dist/{chunk-CKI33CN2.js.map → chunk-BA6Z52QN.js.map} +0 -0
  564. /package/dist/{chunk-53TDQYA3.js.map → chunk-BKZERHNC.js.map} +0 -0
  565. /package/dist/{chunk-RSWHKOUN.js.map → chunk-BM4KKGL7.js.map} +0 -0
  566. /package/dist/{chunk-OZGJ3YCN.js.map → chunk-BVSSEOLI.js.map} +0 -0
  567. /package/dist/{chunk-FI6BL4UU.js.map → chunk-C2TERIB4.js.map} +0 -0
  568. /package/dist/{chunk-DUITNU72.js.map → chunk-C6OVO6AT.js.map} +0 -0
  569. /package/dist/{chunk-WL2S2YB3.js.map → chunk-CKHFYTIX.js.map} +0 -0
  570. /package/dist/{chunk-GBEHJBYM.js.map → chunk-CLK67TNH.js.map} +0 -0
  571. /package/dist/{chunk-T2HZ3GVA.js.map → chunk-CM2Q7IH3.js.map} +0 -0
  572. /package/dist/{chunk-GE26GVHM.js.map → chunk-CMFJQH6A.js.map} +0 -0
  573. /package/dist/{chunk-6PPHALM3.js.map → chunk-CMLIWUBW.js.map} +0 -0
  574. /package/dist/{chunk-AU3GV6UL.js.map → chunk-DH5UJD2I.js.map} +0 -0
  575. /package/dist/{chunk-BKT2KJ56.js.map → chunk-DH6SL3SY.js.map} +0 -0
  576. /package/dist/{chunk-APPIPQFT.js.map → chunk-DH77PLFF.js.map} +0 -0
  577. /package/dist/{chunk-TRTX4BDI.js.map → chunk-DJKVSUXH.js.map} +0 -0
  578. /package/dist/{chunk-VE3P77TV.js.map → chunk-DLWLIPCP.js.map} +0 -0
  579. /package/dist/{chunk-MWPXKZ7O.js.map → chunk-ERY6D2OV.js.map} +0 -0
  580. /package/dist/{chunk-TJ7NQG7E.js.map → chunk-FBUCXTA4.js.map} +0 -0
  581. /package/dist/{chunk-SE6TW72O.js.map → chunk-FDMQ7H22.js.map} +0 -0
  582. /package/dist/{chunk-E2FMNY6B.js.map → chunk-FXWXBEOZ.js.map} +0 -0
  583. /package/dist/{chunk-UI5O6J6R.js.map → chunk-FY6PONLA.js.map} +0 -0
  584. /package/dist/{chunk-QUIHOPOC.js.map → chunk-G4TKMUOL.js.map} +0 -0
  585. /package/dist/{chunk-6BS2RBW4.js.map → chunk-G7XHJPLO.js.map} +0 -0
  586. /package/dist/{chunk-4RXPIHJG.js.map → chunk-GE2CCITY.js.map} +0 -0
  587. /package/dist/{chunk-WRHBXOGN.js.map → chunk-GG62LKA3.js.map} +0 -0
  588. /package/dist/{chunk-YQCRQHVU.js.map → chunk-GI63FQEJ.js.map} +0 -0
  589. /package/dist/{chunk-WUQKXAYF.js.map → chunk-GPHURU2K.js.map} +0 -0
  590. /package/dist/{chunk-GPT673YL.js.map → chunk-H72YKEGD.js.map} +0 -0
  591. /package/dist/{chunk-AJVFSUC4.js.map → chunk-HFVYWHJT.js.map} +0 -0
  592. /package/dist/{chunk-UP6RO2PR.js.map → chunk-HKBJZX3C.js.map} +0 -0
  593. /package/dist/{chunk-V3RQFWL6.js.map → chunk-IUD6N52Q.js.map} +0 -0
  594. /package/dist/{chunk-N4D5V3AA.js.map → chunk-JAGAFEZL.js.map} +0 -0
  595. /package/dist/{chunk-CLTK76ZF.js.map → chunk-JE5GEWTG.js.map} +0 -0
  596. /package/dist/{chunk-23XBBGWD.js.map → chunk-JFLFZLOA.js.map} +0 -0
  597. /package/dist/{chunk-BLUURKCY.js.map → chunk-K6LNHHSH.js.map} +0 -0
  598. /package/dist/{chunk-HSNOWYEE.js.map → chunk-K7FSTB2K.js.map} +0 -0
  599. /package/dist/{chunk-SXVCXLKU.js.map → chunk-K7MQP2KT.js.map} +0 -0
  600. /package/dist/{chunk-QQ46JX5H.js.map → chunk-KHOAXZW2.js.map} +0 -0
  601. /package/dist/{chunk-SCVBGQFO.js.map → chunk-KQZGUHYZ.js.map} +0 -0
  602. /package/dist/{chunk-GJ7GIGDS.js.map → chunk-LCWGNDTH.js.map} +0 -0
  603. /package/dist/{chunk-4D2IVVHR.js.map → chunk-LF3EVXMF.js.map} +0 -0
  604. /package/dist/{chunk-2XTBGZSR.js.map → chunk-LGCRL7DK.js.map} +0 -0
  605. /package/dist/{chunk-WY35GCHY.js.map → chunk-LODMNSLR.js.map} +0 -0
  606. /package/dist/{chunk-EXFX3JRN.js.map → chunk-M47ZOUGF.js.map} +0 -0
  607. /package/dist/{chunk-AQCQ2USS.js.map → chunk-M65ZNPLO.js.map} +0 -0
  608. /package/dist/{chunk-COUFRGD6.js.map → chunk-MEBQKYH4.js.map} +0 -0
  609. /package/dist/{chunk-JZ5IGO5G.js.map → chunk-NCB4GBRL.js.map} +0 -0
  610. /package/dist/{chunk-SE4WZIKD.js.map → chunk-NFGIA2ZV.js.map} +0 -0
  611. /package/dist/{chunk-H772ZSAI.js.map → chunk-NQ7NMCRI.js.map} +0 -0
  612. /package/dist/{chunk-P7JF6XT7.js.map → chunk-NRSVI23L.js.map} +0 -0
  613. /package/dist/{chunk-FRTEU7ZO.js.map → chunk-NU55QUMO.js.map} +0 -0
  614. /package/dist/{chunk-JB56E4XQ.js.map → chunk-PAICZOL5.js.map} +0 -0
  615. /package/dist/{chunk-QX3CXOJ3.js.map → chunk-PTONBPZL.js.map} +0 -0
  616. /package/dist/{chunk-4UASV6VL.js.map → chunk-QDELBNL3.js.map} +0 -0
  617. /package/dist/{chunk-ZE56GK5C.js.map → chunk-QEI5DC6S.js.map} +0 -0
  618. /package/dist/{chunk-3UXBIUJF.js.map → chunk-RDFPM2AQ.js.map} +0 -0
  619. /package/dist/{chunk-BKHO4RSF.js.map → chunk-RZ2VZ7SL.js.map} +0 -0
  620. /package/dist/{chunk-MT7QJRP7.js.map → chunk-S4IXC2V3.js.map} +0 -0
  621. /package/dist/{chunk-5K4G2XYS.js.map → chunk-SNBAMWI5.js.map} +0 -0
  622. /package/dist/{chunk-MKJHDHLF.js.map → chunk-TCNTIGMY.js.map} +0 -0
  623. /package/dist/{chunk-EKM7C4X2.js.map → chunk-TJ3334AJ.js.map} +0 -0
  624. /package/dist/{chunk-RUZVK4FV.js.map → chunk-TPVSHO75.js.map} +0 -0
  625. /package/dist/{chunk-I72PREY7.js.map → chunk-TTJTMDLI.js.map} +0 -0
  626. /package/dist/{chunk-TU5EIKJA.js.map → chunk-U5SH3VRJ.js.map} +0 -0
  627. /package/dist/{chunk-DOLDAAXH.js.map → chunk-UT73NGRS.js.map} +0 -0
  628. /package/dist/{chunk-BXEMC4YH.js.map → chunk-VYV3JOV5.js.map} +0 -0
  629. /package/dist/{chunk-OTWMG7B2.js.map → chunk-WN5PNP6F.js.map} +0 -0
  630. /package/dist/{chunk-HZBRXLV7.js.map → chunk-XB7HYOMM.js.map} +0 -0
  631. /package/dist/{chunk-C6FVXX7Y.js.map → chunk-XBLFK2FL.js.map} +0 -0
  632. /package/dist/{chunk-EDBVMLNX.js.map → chunk-XHA2NXLD.js.map} +0 -0
  633. /package/dist/{chunk-ZO4NO77T.js.map → chunk-XO4ZUHVH.js.map} +0 -0
  634. /package/dist/{chunk-OPT7X3Y6.js.map → chunk-XXL4PM4M.js.map} +0 -0
  635. /package/dist/{chunk-3HKUOLPD.js.map → chunk-XZY7O7JJ.js.map} +0 -0
  636. /package/dist/{chunk-743SY4WQ.js.map → chunk-YLXQWYOG.js.map} +0 -0
  637. /package/dist/{chunk-Q33JWFSA.js.map → chunk-YPIVLPXF.js.map} +0 -0
  638. /package/dist/{chunk-T7UUP7VD.js.map → chunk-YRUX7XMQ.js.map} +0 -0
  639. /package/dist/{chunk-4JEXYOSN.js.map → chunk-YTXZUTLF.js.map} +0 -0
  640. /package/dist/{chunk-V7A5ZAAF.js.map → chunk-YWJDUJAR.js.map} +0 -0
  641. /package/dist/{chunk-ZK7YERPQ.js.map → chunk-Z2NN53E5.js.map} +0 -0
  642. /package/dist/{chunk-CLSC36JS.js.map → chunk-Z4DKVLYG.js.map} +0 -0
  643. /package/dist/{chunk-NFJ3VVD3.js.map → chunk-Z6T5SXST.js.map} +0 -0
  644. /package/dist/{chunk-IITZA6U2.js.map → chunk-ZBVU2YWV.js.map} +0 -0
  645. /package/dist/{chunk-IEWAFD6L.js.map → chunk-ZC5HDBQO.js.map} +0 -0
  646. /package/dist/{chunk-KQS4ZJGS.js.map → chunk-ZGCPDA3F.js.map} +0 -0
  647. /package/dist/{chunk-AHDNANID.js.map → chunk-ZH2SZ6B3.js.map} +0 -0
  648. /package/dist/{chunk-KOX2AEFW.js.map → chunk-ZKWVCSAB.js.map} +0 -0
  649. /package/dist/{chunk-K2U4BNHQ.js.map → chunk-ZNBLGS66.js.map} +0 -0
  650. /package/dist/{chunk-WGUY7EIB.js.map → chunk-ZUME25DS.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-more-fields.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * ONE FIELD, RENDERED INSIDE THE \"MAIS\" PANEL.\n *\n * Split from `data-views-more-filters` at the file-size gate, along the seam\n * that was already there: that module is the trigger, the panel and its\n * footer — the chrome — and this is what goes in it.\n *\n * A field with one or two options renders FLAT: inside a panel there is no\n * space to win back, and two labelled checkboxes are faster than a dropdown\n * needing a second click. Past that — or whenever the field asks for a tree or\n * a search — it is the bar's own {@link PillControl}; see `sharesBarControl`.\n */\nimport Checkbox from \"@mui/material/Checkbox/index.js\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport { PillControl } from \"./data-views-category-pill\";\nimport type { OverflowField } from \"./data-views-overflow\";\nimport { RangeBounds } from \"./data-views-range-pill\";\nimport { isRangeSet } from \"./data-views-range-values\";\nimport type { RangeValue } from \"./data-views-types\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { fieldRadiusPx } from \"../../../tokens/field-radius\";\nimport { fieldHeight } from \"../../../tokens/field-height\";\nimport { fieldEdge } from \"../../../tokens/field-edge\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/** What each field's control needs, minus the panel's own chrome. */\nexport interface MoreFieldProps {\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n testIdPrefix: string;\n}\n\n/**\n * Above this many options a field is a DROPDOWN rather than a flat row of\n * checkboxes. Two options cost two lines and read faster laid out; a \"Cliente\"\n * with a dozen turns the panel into a scrolling wall and buries every field\n * under it, which is exactly what the overflow was meant to avoid.\n */\nconst INLINE_OPTION_LIMIT = 2;\n\n/**\n * Whether an overflowed pill keeps the SAME control it has on the bar.\n *\n * The panel used to build its own flat dropdown for every field past two\n * options, so a field's config only held while it fitted: `control:\n * \"category\"` lost its tree (subcategories flattened into one list, no\n * \"Marcar tudo\", no count footer) and `searchEnabled` lost its search, on\n * exactly the phone widths where most filters live in here. Anything the bar\n * would render as a dropdown now renders as the bar's own {@link PillControl};\n * only a plain two-option field — one that did not ask for a dropdown, a tree\n * or a search — stays a flat checkbox row, which is a panel layout rather than\n * a different control (the filter panel draws the same line).\n */\nfunction sharesBarControl<T extends Record<string, unknown>>(field: OverflowField<T>): boolean {\n const pill = field.pill;\n if (!pill) return false;\n return (\n pill.control === \"category\" ||\n pill.control === \"multiselect\" ||\n pill.searchEnabled === true ||\n pill.options.length > INLINE_OPTION_LIMIT\n );\n}\n\n/** One overflowed pill: the bar's control, or its options as checkboxes. */\nfunction OverflowPill<T extends Record<string, unknown>>({\n field,\n values,\n onTogglePill,\n onClear,\n testIdPrefix,\n}: {\n field: OverflowField<T>;\n values: string[];\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onClear: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const testId = `${testIdPrefix}-more-${field.id}`;\n if (field.pill && sharesBarControl(field)) {\n return (\n <PillControl\n fieldId={field.id}\n pill={field.pill}\n selected={values}\n onTogglePill={onTogglePill}\n onClearField={onClear}\n testIdPrefix={testIdPrefix}\n testId={testId}\n />\n );\n }\n const onToggle = (value: string, checked: boolean) => onTogglePill(field.id, value, checked);\n return (\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.75 }}>\n {(field.pill?.options ?? []).map((option) => {\n const checked = values.includes(option.value);\n return (\n <Box\n key={option.value}\n component=\"label\"\n data-testid={`${testId}-${option.value}`}\n sx={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 0.25,\n pr: 1,\n border: 1,\n borderStyle: \"solid\",\n minHeight: fieldHeight,\n borderColor: (theme) => (checked ? theme.palette.primary.main : fieldEdge(theme)),\n bgcolor: checked ? \"action.selected\" : \"transparent\",\n borderRadius: fieldRadiusPx,\n cursor: \"pointer\",\n fontSize: sxRem(13),\n color: checked ? \"primary.main\" : \"text.secondary\",\n }}\n >\n <Checkbox\n size=\"small\"\n checked={checked}\n onChange={(event) => onToggle(option.value, event.target.checked)}\n inputProps={{ \"aria-label\": `${field.label}: ${option.label}` }}\n />\n {option.label}\n </Box>\n );\n })}\n </Box>\n );\n}\n\n\n/**\n * One overflowed range: its presets and its two bounds, as the same controls\n * the pill uses.\n *\n * The whole control DELEGATES to {@link RangeBounds} rather than being built\n * here, which is the point — this panel used to render a raw\n * `<input type=\"date\">`, so the masked `dd/mm/aaaa` field existed only while\n * the filter FITTED on the bar. The moment \"Data\" overflowed it reverted to the\n * native control the mask replaced, and a merchant on a narrow screen never saw\n * the fix at all (FUT-744). `Valor` had the twin bug: a bare `type=\"number\"`\n * plus `Number(raw)` dropped the decimal comma this panel is meant to accept.\n *\n * That also retires the intrinsic-width workaround this pair used to need — a\n * native date input reports a wide minimum (its own mask plus the picker\n * glyph), which is what made two of them refuse to shrink and scrolled the\n * panel sideways. A text input has no such minimum.\n *\n * `RangeBounds` renders the preset chips ITSELF, above the inputs. This panel\n * must NOT render its own row as well: when the delegation above landed, the\n * chips it used to draw by hand stayed behind, and \"Data\" showed Hoje/Ontem/\n * Esta semana/Este mês/Este ano twice — two rows, duplicated test ids, and half\n * the panel's height spent saying the same thing (FUT-751).\n */\nfunction OverflowRange<T extends Record<string, unknown>>({\n field,\n value,\n onChange,\n testIdPrefix,\n}: {\n field: OverflowField<T>;\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testIdPrefix: string;\n}): React.JSX.Element | null {\n // `group === \"range\"` is what selects this component, so `range` is always\n // set; the guard is for the type, not for a state the caller can reach.\n if (!field.range) return null;\n return (\n <RangeBounds\n field={field.range}\n value={value}\n onChange={onChange}\n testId={`${testIdPrefix}-more-${field.id}`}\n />\n );\n}\n\n/**\n * Whether a field has anything applied, and how to unapply it — the two shapes\n * (a pill's selected values, a range's bounds) answered in one place so the\n * group that renders them stays a renderer.\n */\nexport function fieldClearing<T extends Record<string, unknown>>({\n field,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n}: {\n field: OverflowField<T>;\n} & Pick<MoreFieldProps, \"pills\" | \"ranges\" | \"onTogglePill\" | \"onChangeRange\">): {\n applied: boolean;\n clear: () => void;\n} {\n if (field.group === \"range\") {\n return {\n applied: isRangeSet(ranges[field.id] ?? {}),\n clear: () => onChangeRange(field.id, {}),\n };\n }\n const values = pills[field.id] ?? [];\n return {\n applied: values.length > 0,\n clear: () => values.forEach((value) => onTogglePill(field.id, value, false)),\n };\n}\n\n\n/** One labelled group in the panel: the field's name, then its control. */\nexport function MoreGroup<T extends Record<string, unknown>>({\n field,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n testIdPrefix,\n}: {\n field: OverflowField<T>;\n} & MoreFieldProps): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { applied, clear } = fieldClearing({ field, pills, ranges, onTogglePill, onChangeRange });\n return (\n <Box sx={{ mb: 1.5, \"&:last-of-type\": { mb: 0 } }}>\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, mb: 0.5 }}>\n <Text variant=\"caption\" as=\"span\">\n <Box component=\"span\" sx={{ color: \"text.secondary\" }}>\n {field.label}\n {field.group === \"range\" && isRangeSet(ranges[field.id] ?? {}) ? \" •\" : \"\"}\n </Box>\n </Text>\n {/* The panel's equivalent of the pill's ✕. Without it a field applied\n in here could only be cleared by finding it again on the bar —\n which is where it goes the moment it becomes active, so the\n operator has to close this panel to undo what they just did. */}\n {applied && (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={clear}\n data-testid={`${testIdPrefix}-more-${field.id}-clear`}\n sx={{\n ml: \"auto\",\n border: 0,\n p: 0,\n bgcolor: \"transparent\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(12),\n color: \"primary.main\",\n \"&:hover\": { textDecoration: \"underline\" },\n }}\n >\n {copy.filters.clear}\n </Box>\n )}\n </Box>\n {field.group === \"pill\" ? (\n <OverflowPill\n field={field}\n values={pills[field.id] ?? []}\n onTogglePill={onTogglePill}\n onClear={() => (pills[field.id] ?? []).forEach((v) => onTogglePill(field.id, v, false))}\n testIdPrefix={testIdPrefix}\n />\n ) : (\n <OverflowRange\n field={field}\n value={ranges[field.id] ?? {}}\n onChange={(range) => onChangeRange(field.id, range)}\n testIdPrefix={testIdPrefix}\n />\n )}\n </Box>\n );\n}\n\n"],"mappings":"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","names":["default"]}
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-KHG57NAE.js";
4
4
  import {
5
5
  MultiSelectDropdown
6
- } from "./chunk-OXLOC6TC.js";
6
+ } from "./chunk-3XS37SQT.js";
7
7
  import {
8
8
  CategorySelect
9
- } from "./chunk-5XWCKCHP.js";
9
+ } from "./chunk-ALOUJ3CE.js";
10
10
 
11
11
  // src/components/data-display/DataViews/data-views-category-pill.tsx
12
12
  import { jsx } from "react/jsx-runtime";
@@ -33,10 +33,10 @@ function PillControl({
33
33
  onClearField,
34
34
  onOpenChange,
35
35
  testIdPrefix,
36
+ testId = `${testIdPrefix}-filter-${fieldId}`,
36
37
  layout = "pill"
37
38
  }) {
38
39
  const copy = useDataViewsCopy();
39
- const testId = `${testIdPrefix}-filter-${fieldId}`;
40
40
  if (pill.control === "category") {
41
41
  return /* @__PURE__ */ jsx(
42
42
  CategorySelect,
@@ -79,4 +79,4 @@ export {
79
79
  emitPillDiff,
80
80
  PillControl
81
81
  };
82
- //# sourceMappingURL=chunk-WTXPGASQ.js.map
82
+ //# sourceMappingURL=chunk-NPPJ3IJP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-category-pill.tsx"],"sourcesContent":["\"use client\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { CategorySelect } from \"../../form/CategorySelect\";\nimport { MultiSelectDropdown } from \"../../layout/ContentToolbar\";\n\nimport type { FilterFieldConfig, FilterOption } from \"./data-views-types\";\n\n/**\n * Diff a whole-array selection back into per-value toggles.\n *\n * The filter state's only channel is `onTogglePill(field, value, checked)`, but\n * a tree hands back the entire selection at once. Diffing here keeps that one\n * channel the single way a pill ever changes, rather than giving the\n * hierarchical control a private path into the state.\n */\nexport function emitPillDiff(\n fieldId: string,\n before: readonly string[],\n after: readonly string[],\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void,\n): void {\n const had = new Set(before);\n const wants = new Set(after);\n after.forEach((value) => {\n if (!had.has(value)) onTogglePill(fieldId, value, true);\n });\n before.forEach((value) => {\n if (!wants.has(value)) onTogglePill(fieldId, value, false);\n });\n}\n\n/** A filter option as the category tree wants it. */\nconst toCategoryOption = (option: FilterOption) => ({\n id: option.value,\n name: option.label,\n parentId: option.parentId ?? null,\n});\n\ninterface PillControlProps<T extends Record<string, unknown>> {\n fieldId: string;\n pill: FilterFieldConfig<T>;\n selected: string[];\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onClearField: (fieldId: string) => void;\n onOpenChange?: (open: boolean) => void;\n testIdPrefix: string;\n /**\n * Overrides the `<prefix>-filter-<id>` test id — the \"Mais\" panel keys its\n * fields `<prefix>-more-<id>` so a spec can tell which surface it drove.\n */\n testId?: string;\n /** `stacked` in the filter panel, `pill` on the inline bar. */\n layout?: \"stacked\" | \"pill\";\n}\n\n/**\n * One filter pill: the hierarchical category tree, or the flat multi-select.\n *\n * A category set nests, and flattening it into one list is what made \"Massas\"\n * (mercearia) indistinguishable from \"Massas\" (pratos principais). `control:\n * \"category\"` opts a field into the tree, which shows each hit under its parent.\n *\n * {@link FilterFieldConfig.allowParentSelection} decides whether a parent row is\n * itself tickable. It is forwarded rather than fixed here because it is a\n * per-SCREEN question: a filter over a catalogue where products sit on leaves\n * wants \"the whole category\" as one click, while one whose parents are pure\n * grouping would only offer a tick that means nothing.\n */\nexport function PillControl<T extends Record<string, unknown>>({\n fieldId,\n pill,\n selected,\n onTogglePill,\n onClearField,\n onOpenChange,\n testIdPrefix,\n testId = `${testIdPrefix}-filter-${fieldId}`,\n layout = \"pill\",\n}: PillControlProps<T>): React.JSX.Element {\n const copy = useDataViewsCopy();\n if (pill.control === \"category\") {\n return (\n <CategorySelect\n copy={copy.categorySelect}\n placeholder={pill.label}\n label={layout === \"stacked\" ? pill.label : undefined}\n fullWidth={layout === \"stacked\"}\n options={pill.options.map(toCategoryOption)}\n allowParentSelection={pill.allowParentSelection ?? false}\n value={selected}\n onChange={(next) => emitPillDiff(fieldId, selected, next, onTogglePill)}\n dataTestId={testId}\n />\n );\n }\n return (\n <MultiSelectDropdown\n extraOptionsHeading={copy.filters.optionsHeading}\n clearText={copy.filters.clear}\n clearLabel={copy.filters.clearRange(pill.label)}\n label={pill.label}\n options={pill.options}\n selected={new Set(selected)}\n onToggle={(value, checked) => onTogglePill(fieldId, value, checked)}\n onClear={() => onClearField(fieldId)}\n allLabel={copy.filters.allOption}\n searchable={pill.searchEnabled ? true : undefined}\n searchPlaceholder={copy.filters.optionSearchPlaceholder}\n noResultsLabel={copy.filters.optionsEmpty}\n layout={layout}\n onOpenChange={onOpenChange}\n data-testid={testId}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;AAmFM;AAnEC,SAAS,aACd,SACA,QACA,OACA,cACM;AACN,QAAM,MAAM,IAAI,IAAI,MAAM;AAC1B,QAAM,QAAQ,IAAI,IAAI,KAAK;AAC3B,QAAM,QAAQ,CAAC,UAAU;AACvB,QAAI,CAAC,IAAI,IAAI,KAAK,EAAG,cAAa,SAAS,OAAO,IAAI;AAAA,EACxD,CAAC;AACD,SAAO,QAAQ,CAAC,UAAU;AACxB,QAAI,CAAC,MAAM,IAAI,KAAK,EAAG,cAAa,SAAS,OAAO,KAAK;AAAA,EAC3D,CAAC;AACH;AAGA,IAAM,mBAAmB,CAAC,YAA0B;AAAA,EAClD,IAAI,OAAO;AAAA,EACX,MAAM,OAAO;AAAA,EACb,UAAU,OAAO,YAAY;AAC/B;AAgCO,SAAS,YAA+C;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,GAAG,YAAY,WAAW,OAAO;AAAA,EAC1C,SAAS;AACX,GAA2C;AACzC,QAAM,OAAO,iBAAiB;AAC9B,MAAI,KAAK,YAAY,YAAY;AAC/B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,OAAO,WAAW,YAAY,KAAK,QAAQ;AAAA,QAC3C,WAAW,WAAW;AAAA,QACtB,SAAS,KAAK,QAAQ,IAAI,gBAAgB;AAAA,QAC1C,sBAAsB,KAAK,wBAAwB;AAAA,QACnD,OAAO;AAAA,QACP,UAAU,CAAC,SAAS,aAAa,SAAS,UAAU,MAAM,YAAY;AAAA,QACtE,YAAY;AAAA;AAAA,IACd;AAAA,EAEJ;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,qBAAqB,KAAK,QAAQ;AAAA,MAClC,WAAW,KAAK,QAAQ;AAAA,MACxB,YAAY,KAAK,QAAQ,WAAW,KAAK,KAAK;AAAA,MAC9C,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,MACd,UAAU,IAAI,IAAI,QAAQ;AAAA,MAC1B,UAAU,CAAC,OAAO,YAAY,aAAa,SAAS,OAAO,OAAO;AAAA,MAClE,SAAS,MAAM,aAAa,OAAO;AAAA,MACnC,UAAU,KAAK,QAAQ;AAAA,MACvB,YAAY,KAAK,gBAAgB,OAAO;AAAA,MACxC,mBAAmB,KAAK,QAAQ;AAAA,MAChC,gBAAgB,KAAK,QAAQ;AAAA,MAC7B;AAAA,MACA;AAAA,MACA,eAAa;AAAA;AAAA,EACf;AAEJ;","names":[]}
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-6DPAWXZ3.js";
10
10
  import {
11
11
  Button
12
- } from "./chunk-BLUURKCY.js";
12
+ } from "./chunk-K6LNHHSH.js";
13
13
  import {
14
14
  rem,
15
15
  sxRem
@@ -166,4 +166,4 @@ export {
166
166
  togglePillValues,
167
167
  cardGridTracks
168
168
  };
169
- //# sourceMappingURL=chunk-H772ZSAI.js.map
169
+ //# sourceMappingURL=chunk-NQ7NMCRI.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-U3DBQXPI.js";
4
4
  import {
5
5
  Button
6
- } from "./chunk-BLUURKCY.js";
6
+ } from "./chunk-K6LNHHSH.js";
7
7
 
8
8
  // src/components/data-display/CardKit/CardKebab.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -25,4 +25,4 @@ function CardKebab({
25
25
  export {
26
26
  CardKebab
27
27
  };
28
- //# sourceMappingURL=chunk-P7JF6XT7.js.map
28
+ //# sourceMappingURL=chunk-NRSVI23L.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4XK6JQ4D.js";
4
4
  import {
5
5
  Input
6
- } from "./chunk-XOZYUJQ5.js";
6
+ } from "./chunk-SDKOOVEX.js";
7
7
  import {
8
8
  FormControl,
9
9
  FormLabel,
@@ -38,4 +38,4 @@ function TextField({ name, label, type = "text", placeholder }) {
38
38
  export {
39
39
  TextField
40
40
  };
41
- //# sourceMappingURL=chunk-FRTEU7ZO.js.map
41
+ //# sourceMappingURL=chunk-NU55QUMO.js.map
@@ -0,0 +1,87 @@
1
+ import {
2
+ SettingGroupContext
3
+ } from "./chunk-XJQNSMGA.js";
4
+ import {
5
+ useAsyncSwitch
6
+ } from "./chunk-SALQ65SM.js";
7
+ import {
8
+ SettingSwitchBlock,
9
+ useSettingSwitchIds
10
+ } from "./chunk-RDZGXJOD.js";
11
+ import {
12
+ partTestId
13
+ } from "./chunk-PEOOCQ2T.js";
14
+ import {
15
+ dependentsStyles,
16
+ hintStyles,
17
+ surfaceStyles,
18
+ withCallerSx
19
+ } from "./chunk-3DO5AJCG.js";
20
+ import {
21
+ Icon
22
+ } from "./chunk-JAGAFEZL.js";
23
+
24
+ // src/components/layout/SettingCard/SettingGroup.tsx
25
+ import Box from "@mui/material/Box/index.js";
26
+ import { useTheme } from "@mui/material/styles/index.js";
27
+ import { forwardRef, useId, useMemo } from "react";
28
+ import { jsx, jsxs } from "react/jsx-runtime";
29
+ var SettingGroup = forwardRef(function SettingGroup2(props, ref) {
30
+ const {
31
+ checked,
32
+ onChange,
33
+ copy,
34
+ formatError,
35
+ inactiveHint,
36
+ children,
37
+ disabled = false,
38
+ dataTestId,
39
+ className,
40
+ sx
41
+ } = props;
42
+ const theme = useTheme();
43
+ const ids = useSettingSwitchIds();
44
+ const hintId = `${useId()}-hint`;
45
+ const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });
46
+ const active = checked && state.shown && !disabled;
47
+ const context = useMemo(() => ({ inactive: !active }), [active]);
48
+ return /* @__PURE__ */ jsxs(
49
+ Box,
50
+ {
51
+ component: "section",
52
+ ref,
53
+ "aria-labelledby": ids.titleId,
54
+ "aria-busy": state.saving || void 0,
55
+ "data-active": active,
56
+ "data-testid": dataTestId,
57
+ className,
58
+ sx: withCallerSx((t) => surfaceStyles(t, false), sx),
59
+ children: [
60
+ /* @__PURE__ */ jsx(SettingSwitchBlock, { ...props, disabled, ids, state }),
61
+ !active && /* @__PURE__ */ jsxs(Box, { component: "p", id: hintId, sx: hintStyles(theme), "data-testid": partTestId(dataTestId, "hint"), children: [
62
+ /* @__PURE__ */ jsx(Icon, { name: "InfoOutlined", size: "xs" }),
63
+ /* @__PURE__ */ jsx("span", { children: inactiveHint })
64
+ ] }),
65
+ /* @__PURE__ */ jsx(
66
+ Box,
67
+ {
68
+ role: "group",
69
+ "aria-labelledby": ids.titleId,
70
+ "aria-describedby": active ? void 0 : hintId,
71
+ "aria-disabled": active ? void 0 : true,
72
+ inert: !active,
73
+ sx: dependentsStyles(theme, active),
74
+ "data-testid": partTestId(dataTestId, "dependents"),
75
+ children: /* @__PURE__ */ jsx(SettingGroupContext.Provider, { value: context, children })
76
+ }
77
+ )
78
+ ]
79
+ }
80
+ );
81
+ });
82
+ SettingGroup.displayName = "SettingGroup";
83
+
84
+ export {
85
+ SettingGroup
86
+ };
87
+ //# sourceMappingURL=chunk-OJUORFGO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/SettingCard/SettingGroup.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport { forwardRef, useId, useMemo } from 'react';\n\nimport { Icon } from '../../../icons';\n\nimport { useAsyncSwitch } from './SettingCard.hooks';\nimport { partTestId } from './SettingCard.parts';\nimport { dependentsStyles, hintStyles, surfaceStyles, withCallerSx } from './SettingCard.styles';\nimport type { SettingGroupProps } from './SettingCard.types';\nimport { SettingGroupContext } from './SettingGroup.context';\nimport { SettingSwitchBlock, useSettingSwitchIds } from './SettingSwitch';\n\n/**\n * ONE subject: a main switch, and the settings that only mean something while\n * it is on, indented beneath it.\n *\n * With the main switch off the dependent rows stay where they are — dimmed,\n * `inert`, and explained by `inactiveHint` — rather than disappearing. A\n * reader deciding whether to turn a feature on is helped by seeing what it\n * would let them configure, and a layout that jumps when a switch flips moves\n * the thing they were about to press.\n *\n * The rows are active only while the main switch is on AND saved: turning it\n * on lights them once the save lands; turning it off dims them at once.\n *\n * Several subjects are several cards, never one group — see `SettingGroup.md`.\n */\nexport const SettingGroup = forwardRef<HTMLElement, SettingGroupProps>(function SettingGroup(props, ref) {\n const {\n checked, onChange, copy, formatError, inactiveHint, children, disabled = false, dataTestId, className, sx,\n } = props;\n const theme = useTheme();\n const ids = useSettingSwitchIds();\n const hintId = `${useId()}-hint`;\n const state = useAsyncSwitch({ checked, onChange, formatError, fallback: copy.saveFailed });\n const active = checked && state.shown && !disabled;\n const context = useMemo(() => ({ inactive: !active }), [active]);\n\n return (\n <Box\n component=\"section\"\n ref={ref}\n aria-labelledby={ids.titleId}\n aria-busy={state.saving || undefined}\n data-active={active}\n data-testid={dataTestId}\n className={className}\n sx={withCallerSx((t) => surfaceStyles(t, false), sx)}\n >\n <SettingSwitchBlock {...props} disabled={disabled} ids={ids} state={state} />\n {!active && (\n <Box component=\"p\" id={hintId} sx={hintStyles(theme)} data-testid={partTestId(dataTestId, 'hint')}>\n <Icon name=\"InfoOutlined\" size=\"xs\" />\n <span>{inactiveHint}</span>\n </Box>\n )}\n <Box\n role=\"group\"\n aria-labelledby={ids.titleId}\n aria-describedby={active ? undefined : hintId}\n aria-disabled={active ? undefined : true}\n inert={!active}\n sx={dependentsStyles(theme, active)}\n data-testid={partTestId(dataTestId, 'dependents')}\n >\n <SettingGroupContext.Provider value={context}>{children}</SettingGroupContext.Provider>\n </Box>\n </Box>\n );\n});\n\nSettingGroup.displayName = 'SettingGroup';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAS,YAAY,OAAO,eAAe;AAgDrC,cAEE,YAFF;AAtBC,IAAM,eAAe,WAA2C,SAASA,cAAa,OAAO,KAAK;AACvG,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAU;AAAA,IAAM;AAAA,IAAa;AAAA,IAAc;AAAA,IAAU,WAAW;AAAA,IAAO;AAAA,IAAY;AAAA,IAAW;AAAA,EACzG,IAAI;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,MAAM,oBAAoB;AAChC,QAAM,SAAS,GAAG,MAAM,CAAC;AACzB,QAAM,QAAQ,eAAe,EAAE,SAAS,UAAU,aAAa,UAAU,KAAK,WAAW,CAAC;AAC1F,QAAM,SAAS,WAAW,MAAM,SAAS,CAAC;AAC1C,QAAM,UAAU,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC;AAE/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACA,mBAAiB,IAAI;AAAA,MACrB,aAAW,MAAM,UAAU;AAAA,MAC3B,eAAa;AAAA,MACb,eAAa;AAAA,MACb;AAAA,MACA,IAAI,aAAa,CAAC,MAAM,cAAc,GAAG,KAAK,GAAG,EAAE;AAAA,MAEnD;AAAA,4BAAC,sBAAoB,GAAG,OAAO,UAAoB,KAAU,OAAc;AAAA,QAC1E,CAAC,UACA,qBAAC,OAAI,WAAU,KAAI,IAAI,QAAQ,IAAI,WAAW,KAAK,GAAG,eAAa,WAAW,YAAY,MAAM,GAC9F;AAAA,8BAAC,QAAK,MAAK,gBAAe,MAAK,MAAK;AAAA,UACpC,oBAAC,UAAM,wBAAa;AAAA,WACtB;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,mBAAiB,IAAI;AAAA,YACrB,oBAAkB,SAAS,SAAY;AAAA,YACvC,iBAAe,SAAS,SAAY;AAAA,YACpC,OAAO,CAAC;AAAA,YACR,IAAI,iBAAiB,OAAO,MAAM;AAAA,YAClC,eAAa,WAAW,YAAY,YAAY;AAAA,YAEhD,8BAAC,oBAAoB,UAApB,EAA6B,OAAO,SAAU,UAAS;AAAA;AAAA,QAC1D;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,aAAa,cAAc;","names":["SettingGroup"]}
@@ -1,15 +1,15 @@
1
- import {
2
- RichTextEditorToolbar
3
- } from "./chunk-WVZBYTIK.js";
4
1
  import {
5
2
  useRichTextEditor
6
3
  } from "./chunk-EUACQR6N.js";
7
4
  import {
8
- fieldRadiusPx
9
- } from "./chunk-GDN2LUTZ.js";
5
+ RichTextEditorToolbar
6
+ } from "./chunk-WVZBYTIK.js";
10
7
  import {
11
8
  fieldEdge
12
9
  } from "./chunk-7FDU3FIN.js";
10
+ import {
11
+ fieldRadiusPx
12
+ } from "./chunk-GDN2LUTZ.js";
13
13
  import {
14
14
  rem
15
15
  } from "./chunk-YKCAJ2TN.js";
@@ -174,4 +174,4 @@ export {
174
174
  RichTextEditor,
175
175
  RichTextEditor_default
176
176
  };
177
- //# sourceMappingURL=chunk-JB56E4XQ.js.map
177
+ //# sourceMappingURL=chunk-PAICZOL5.js.map
@@ -0,0 +1,140 @@
1
+ import {
2
+ errorStyles,
3
+ headerStyles,
4
+ iconStyles,
5
+ titleStyles
6
+ } from "./chunk-3DO5AJCG.js";
7
+ import {
8
+ SETTING_CARD
9
+ } from "./chunk-IC7GHPMK.js";
10
+ import {
11
+ Collapsible
12
+ } from "./chunk-JYWF76Z5.js";
13
+ import {
14
+ Chip
15
+ } from "./chunk-OZPLAOI4.js";
16
+ import {
17
+ Icon
18
+ } from "./chunk-JAGAFEZL.js";
19
+ import {
20
+ Button
21
+ } from "./chunk-K6LNHHSH.js";
22
+ import {
23
+ BUTTON_SIZES
24
+ } from "./chunk-LN46DSMF.js";
25
+ import {
26
+ rem
27
+ } from "./chunk-YKCAJ2TN.js";
28
+
29
+ // src/components/layout/SettingCard/SettingCard.parts.tsx
30
+ import Box from "@mui/material/Box/index.js";
31
+ import CircularProgress from "@mui/material/CircularProgress/index.js";
32
+ import { useTheme } from "@mui/material/styles/index.js";
33
+ import { useId, useState } from "react";
34
+ import { jsx, jsxs } from "react/jsx-runtime";
35
+ var partTestId = (root, part) => root ? `${root}-${part}` : void 0;
36
+ var SettingHeader = ({
37
+ titleId,
38
+ title,
39
+ headingLevel,
40
+ icon,
41
+ status,
42
+ trailing,
43
+ labelFor,
44
+ dataTestId
45
+ }) => {
46
+ const theme = useTheme();
47
+ return /* @__PURE__ */ jsxs(Box, { sx: headerStyles(theme), children: [
48
+ icon && /* @__PURE__ */ jsx(Box, { component: "span", "aria-hidden": true, sx: iconStyles(theme), children: icon }),
49
+ /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center", flexWrap: "wrap", gap: 1, minWidth: 0, flex: 1 }, children: [
50
+ /* @__PURE__ */ jsx(
51
+ Box,
52
+ {
53
+ component: labelFor ? "label" : headingLevel,
54
+ id: titleId,
55
+ htmlFor: labelFor,
56
+ sx: { ...titleStyles(theme), ...labelFor ? { cursor: "pointer" } : {} },
57
+ "data-testid": partTestId(dataTestId, "title"),
58
+ children: title
59
+ }
60
+ ),
61
+ status && /* @__PURE__ */ jsx(
62
+ Chip,
63
+ {
64
+ label: status.label,
65
+ color: status.color ?? "neutral",
66
+ size: "sm",
67
+ variant: "outlined",
68
+ dataTestId: partTestId(dataTestId, "status")
69
+ }
70
+ )
71
+ ] }),
72
+ trailing
73
+ ] });
74
+ };
75
+ var SaveError = ({
76
+ id,
77
+ message,
78
+ dataTestId
79
+ }) => {
80
+ const theme = useTheme();
81
+ if (!message) return null;
82
+ return /* @__PURE__ */ jsx(Box, { component: "p", id, role: "alert", sx: errorStyles(theme), "data-testid": partTestId(dataTestId, "error"), children: message });
83
+ };
84
+ var PendingSpinner = ({ dataTestId }) => {
85
+ const theme = useTheme();
86
+ return /* @__PURE__ */ jsx(
87
+ CircularProgress,
88
+ {
89
+ size: rem(theme, SETTING_CARD.spinnerSize),
90
+ color: "inherit",
91
+ "aria-hidden": true,
92
+ "data-testid": partTestId(dataTestId, "saving")
93
+ }
94
+ );
95
+ };
96
+ var LearnMore = ({ label, children, dataTestId }) => {
97
+ const [expanded, setExpanded] = useState(false);
98
+ const regionId = useId();
99
+ const theme = useTheme();
100
+ return (
101
+ // Pulled out by the button's own padding, so the words line up with the form above.
102
+ /* @__PURE__ */ jsxs(Box, { sx: { marginLeft: `-${rem(theme, BUTTON_SIZES.sm.paddingHorizontal)}` }, children: [
103
+ /* @__PURE__ */ jsx(
104
+ Button,
105
+ {
106
+ variant: "text",
107
+ size: "sm",
108
+ "aria-expanded": expanded,
109
+ "aria-controls": regionId,
110
+ onClick: () => setExpanded((was) => !was),
111
+ icon: /* @__PURE__ */ jsx(
112
+ Box,
113
+ {
114
+ component: "span",
115
+ sx: {
116
+ display: "inline-flex",
117
+ transform: expanded ? "rotate(180deg)" : "none",
118
+ transition: theme.transitions.create("transform")
119
+ },
120
+ children: /* @__PURE__ */ jsx(Icon, { name: "ExpandMore", size: "xs" })
121
+ }
122
+ ),
123
+ iconPosition: "right",
124
+ dataTestId: partTestId(dataTestId, "learn-more"),
125
+ children: label
126
+ }
127
+ ),
128
+ /* @__PURE__ */ jsx(Collapsible, { open: expanded, keepMounted: true, sx: { marginLeft: rem(theme, BUTTON_SIZES.sm.paddingHorizontal) }, dataTestId: partTestId(dataTestId, "learn-more-content"), children: /* @__PURE__ */ jsx(Box, { id: regionId, sx: { ...theme.typography.body2, color: "text.secondary", pt: 1 }, children }) })
129
+ ] })
130
+ );
131
+ };
132
+
133
+ export {
134
+ partTestId,
135
+ SettingHeader,
136
+ SaveError,
137
+ PendingSpinner,
138
+ LearnMore
139
+ };
140
+ //# sourceMappingURL=chunk-PEOOCQ2T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/SettingCard/SettingCard.parts.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useId, useState } from 'react';\n\nimport { Icon } from '../../../icons';\nimport { rem } from '../../../tokens/relative';\nimport { Chip } from '../../data-display/Chip';\nimport { Button } from '../../form/Button';\nimport { BUTTON_SIZES } from '../../form/Button/Button.metrics';\nimport { Collapsible } from '../Collapsible';\n\nimport { SETTING_CARD } from './SettingCard.metrics';\nimport { errorStyles, headerStyles, iconStyles, titleStyles } from './SettingCard.styles';\nimport type { SettingHeadingLevel, SettingStatus } from './SettingCard.types';\n\n/** `<root>-<part>` when the host gave a root test id, else nothing. */\nexport const partTestId = (root: string | undefined, part: string): string | undefined =>\n root ? `${root}-${part}` : undefined;\n\ninterface HeaderProps {\n titleId: string;\n title: string;\n headingLevel: SettingHeadingLevel;\n icon?: React.ReactNode;\n status?: SettingStatus;\n /** Rendered at the row's far end — the Edit trigger, or a switch. */\n trailing?: React.ReactNode;\n /** Renders the title as a `<label>` for this control instead of a heading. */\n labelFor?: string;\n dataTestId?: string;\n}\n\n/**\n * Icon, title, status pill, and whatever the row ends with.\n *\n * A switch card's title is the switch's `<label>`, so the words are both its\n * accessible name and a tap target far larger than the track. An editable\n * card's title is a heading, so the page outline lists every setting.\n */\nexport const SettingHeader: React.FC<HeaderProps> = ({\n titleId,\n title,\n headingLevel,\n icon,\n status,\n trailing,\n labelFor,\n dataTestId,\n}) => {\n const theme = useTheme();\n return (\n <Box sx={headerStyles(theme)}>\n {icon && (\n <Box component=\"span\" aria-hidden sx={iconStyles(theme)}>\n {icon}\n </Box>\n )}\n <Box sx={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 1, minWidth: 0, flex: 1 }}>\n <Box\n component={labelFor ? 'label' : headingLevel}\n id={titleId}\n htmlFor={labelFor}\n sx={{ ...titleStyles(theme), ...(labelFor ? { cursor: 'pointer' } : {}) }}\n data-testid={partTestId(dataTestId, 'title')}\n >\n {title}\n </Box>\n {status && (\n <Chip\n label={status.label}\n color={status.color ?? 'neutral'}\n size=\"sm\"\n variant=\"outlined\"\n dataTestId={partTestId(dataTestId, 'status')}\n />\n )}\n </Box>\n {trailing}\n </Box>\n );\n};\n\n/**\n * The failure line. `role=\"alert\"` so it is announced the moment it appears,\n * without anyone having to move focus to find it.\n */\nexport const SaveError: React.FC<{ id: string; message: string | null; dataTestId?: string }> = ({\n id,\n message,\n dataTestId,\n}) => {\n const theme = useTheme();\n if (!message) return null;\n return (\n <Box component=\"p\" id={id} role=\"alert\" sx={errorStyles(theme)} data-testid={partTestId(dataTestId, 'error')}>\n {message}\n </Box>\n );\n};\n\n/** The spinner that rides beside a pending control; decorative — the words are announced separately. */\nexport const PendingSpinner: React.FC<{ dataTestId?: string }> = ({ dataTestId }) => {\n const theme = useTheme();\n return (\n <CircularProgress\n size={rem(theme, SETTING_CARD.spinnerSize)}\n color=\"inherit\"\n aria-hidden\n data-testid={partTestId(dataTestId, 'saving')}\n />\n );\n};\n\n/**\n * The \"learn more\" disclosure: a text button that owns `aria-expanded`, and\n * the collapsible region it controls. Closed by default — it is the longer\n * explanation, and the form is what the reader came for.\n */\nexport const LearnMore: React.FC<{\n label: string;\n children: React.ReactNode;\n dataTestId?: string;\n}> = ({ label, children, dataTestId }) => {\n const [expanded, setExpanded] = useState(false);\n const regionId = useId();\n const theme = useTheme();\n return (\n // Pulled out by the button's own padding, so the words line up with the form above.\n <Box sx={{ marginLeft: `-${rem(theme, BUTTON_SIZES.sm.paddingHorizontal)}` }}>\n <Button\n variant=\"text\"\n size=\"sm\"\n aria-expanded={expanded}\n aria-controls={regionId}\n onClick={() => setExpanded((was) => !was)}\n icon={\n <Box\n component=\"span\"\n sx={{\n display: 'inline-flex',\n transform: expanded ? 'rotate(180deg)' : 'none',\n transition: theme.transitions.create('transform'),\n }}\n >\n <Icon name=\"ExpandMore\" size=\"xs\" />\n </Box>\n }\n iconPosition=\"right\"\n dataTestId={partTestId(dataTestId, 'learn-more')}\n >\n {label}\n </Button>\n {/* Kept mounted so `aria-controls` always names an element that exists. */}\n <Collapsible open={expanded} keepMounted sx={{ marginLeft: rem(theme, BUTTON_SIZES.sm.paddingHorizontal) }} dataTestId={partTestId(dataTestId, 'learn-more-content')}>\n <Box id={regionId} sx={{ ...theme.typography.body2, color: 'text.secondary', pt: 1 }}>\n {children}\n </Box>\n </Collapsible>\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-PGGGKYWG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  asFieldSize,
6
6
  fieldTextFieldStyles
7
- } from "./chunk-EXFX3JRN.js";
7
+ } from "./chunk-M47ZOUGF.js";
8
8
  import {
9
9
  rem,
10
10
  sxRem
@@ -73,4 +73,4 @@ export {
73
73
  ItemsPerPageSelect,
74
74
  PageInfo
75
75
  };
76
- //# sourceMappingURL=chunk-QX3CXOJ3.js.map
76
+ //# sourceMappingURL=chunk-PTONBPZL.js.map
@@ -0,0 +1,36 @@
1
+ // src/components/form/NumberField/NumberField.helpers.ts
2
+ var MAX_DIGITS = 15;
3
+ function digitsOf(raw) {
4
+ return raw.replace(/\D+/g, "").slice(0, MAX_DIGITS);
5
+ }
6
+ function parseDigits(raw) {
7
+ const digits = digitsOf(raw);
8
+ return digits === "" ? null : Number(digits);
9
+ }
10
+ function formatValue(value) {
11
+ return value === null || !Number.isFinite(value) ? "" : String(value);
12
+ }
13
+ function clamp(value, { min, max }) {
14
+ if (max !== void 0 && value > max) return max;
15
+ if (min !== void 0 && value < min) return min;
16
+ return value;
17
+ }
18
+ function stepValue(value, direction, step, bounds) {
19
+ if (value === null) return clamp(bounds.min ?? 0, bounds);
20
+ return clamp(value + direction * step, bounds);
21
+ }
22
+ function isRefusedKey(event) {
23
+ if (event.ctrlKey || event.metaKey || event.altKey) return false;
24
+ return event.key.length === 1 && !/\d/.test(event.key);
25
+ }
26
+
27
+ export {
28
+ MAX_DIGITS,
29
+ digitsOf,
30
+ parseDigits,
31
+ formatValue,
32
+ clamp,
33
+ stepValue,
34
+ isRefusedKey
35
+ };
36
+ //# sourceMappingURL=chunk-Q4JWWTL4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/NumberField/NumberField.helpers.ts"],"sourcesContent":["/**\n * The pure half of `NumberField`: what a keystroke may add, what a string of\n * digits is worth, and where an arrow key lands. Kept apart from the component\n * so every rule is a plain function a unit test can hold.\n */\n\n/**\n * The most digits the field keeps. Fifteen is the longest run that is always\n * a safe integer (`Number.MAX_SAFE_INTEGER` has sixteen, but not every\n * sixteen-digit number is below it), so a pasted serial number can never turn\n * into a rounded float.\n */\nexport const MAX_DIGITS = 15;\n\nexport interface NumberBounds {\n min?: number;\n max?: number;\n}\n\n/** Everything that is not a digit, removed; then cut to {@link MAX_DIGITS}. */\nexport function digitsOf(raw: string): string {\n return raw.replace(/\\D+/g, '').slice(0, MAX_DIGITS);\n}\n\n/**\n * What the field's text is worth. An empty field is `null` — never `0`, and\n * never `NaN` — so \"cleared\" and \"zero\" stay two different answers.\n */\nexport function parseDigits(raw: string): number | null {\n const digits = digitsOf(raw);\n return digits === '' ? null : Number(digits);\n}\n\n/** The text a value shows as. */\nexport function formatValue(value: number | null): string {\n return value === null || !Number.isFinite(value) ? '' : String(value);\n}\n\n/** `value`, held inside whichever bounds are set. */\nexport function clamp(value: number, { min, max }: NumberBounds): number {\n if (max !== undefined && value > max) return max;\n if (min !== undefined && value < min) return min;\n return value;\n}\n\n/**\n * Where ArrowUp (`+1`) or ArrowDown (`-1`) takes the value.\n *\n * From empty, either arrow lands on the floor (`min`, else 0) rather than\n * stepping past it: the first press says \"give me a number\", and the floor is\n * the only one both directions agree on.\n */\nexport function stepValue(\n value: number | null,\n direction: 1 | -1,\n step: number,\n bounds: NumberBounds,\n): number {\n if (value === null) return clamp(bounds.min ?? 0, bounds);\n return clamp(value + direction * step, bounds);\n}\n\n/**\n * A key that would type a character the field refuses. Shortcuts (Ctrl/Cmd +\n * a letter — copy, paste, select all) and the named keys (`Backspace`,\n * `ArrowLeft`, `Tab`) are left alone: only a single printable character that\n * is not a digit is blocked.\n */\nexport function isRefusedKey(event: {\n key: string;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n}): boolean {\n if (event.ctrlKey || event.metaKey || event.altKey) return false;\n return event.key.length === 1 && !/\\d/.test(event.key);\n}\n"],"mappings":";AAYO,IAAM,aAAa;AAQnB,SAAS,SAAS,KAAqB;AAC5C,SAAO,IAAI,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG,UAAU;AACpD;AAMO,SAAS,YAAY,KAA4B;AACtD,QAAM,SAAS,SAAS,GAAG;AAC3B,SAAO,WAAW,KAAK,OAAO,OAAO,MAAM;AAC7C;AAGO,SAAS,YAAY,OAA8B;AACxD,SAAO,UAAU,QAAQ,CAAC,OAAO,SAAS,KAAK,IAAI,KAAK,OAAO,KAAK;AACtE;AAGO,SAAS,MAAM,OAAe,EAAE,KAAK,IAAI,GAAyB;AACvE,MAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,MAAI,QAAQ,UAAa,QAAQ,IAAK,QAAO;AAC7C,SAAO;AACT;AASO,SAAS,UACd,OACA,WACA,MACA,QACQ;AACR,MAAI,UAAU,KAAM,QAAO,MAAM,OAAO,OAAO,GAAG,MAAM;AACxD,SAAO,MAAM,QAAQ,YAAY,MAAM,MAAM;AAC/C;AAQO,SAAS,aAAa,OAKjB;AACV,MAAI,MAAM,WAAW,MAAM,WAAW,MAAM,OAAQ,QAAO;AAC3D,SAAO,MAAM,IAAI,WAAW,KAAK,CAAC,KAAK,KAAK,MAAM,GAAG;AACvD;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4XK6JQ4D.js";
4
4
  import {
5
5
  ToggleGroup
6
- } from "./chunk-SCVBGQFO.js";
6
+ } from "./chunk-KQZGUHYZ.js";
7
7
  import {
8
8
  FormControl,
9
9
  FormLabel,
@@ -38,4 +38,4 @@ function ToggleField({ name, options, label }) {
38
38
  export {
39
39
  ToggleField
40
40
  };
41
- //# sourceMappingURL=chunk-4UASV6VL.js.map
41
+ //# sourceMappingURL=chunk-QDELBNL3.js.map
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-4RDJMIWL.js";
5
5
  import {
6
6
  fieldBorder
7
- } from "./chunk-EXFX3JRN.js";
8
- import {
9
- fieldRadius
10
- } from "./chunk-GDN2LUTZ.js";
7
+ } from "./chunk-M47ZOUGF.js";
11
8
  import {
12
9
  fieldEdge
13
10
  } from "./chunk-7FDU3FIN.js";
11
+ import {
12
+ fieldRadius
13
+ } from "./chunk-GDN2LUTZ.js";
14
14
  import {
15
15
  FIELD_BORDER_WIDTH
16
16
  } from "./chunk-O6MJWHU5.js";
@@ -225,4 +225,4 @@ Textarea.displayName = "Textarea";
225
225
  export {
226
226
  Textarea
227
227
  };
228
- //# sourceMappingURL=chunk-ZE56GK5C.js.map
228
+ //# sourceMappingURL=chunk-QEI5DC6S.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-QGUNUXTT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  DataViewsExportMenu
3
- } from "./chunk-VE3P77TV.js";
3
+ } from "./chunk-DLWLIPCP.js";
4
4
  import {
5
5
  DataViewsDisplayPanel
6
- } from "./chunk-BDBI4W77.js";
6
+ } from "./chunk-6MD5QXXJ.js";
7
7
  import {
8
8
  renderBulkActions
9
- } from "./chunk-H772ZSAI.js";
9
+ } from "./chunk-NQ7NMCRI.js";
10
10
  import {
11
11
  useDataViewsCopy
12
12
  } from "./chunk-KHG57NAE.js";
13
13
  import {
14
14
  FilterTrigger
15
- } from "./chunk-5K4G2XYS.js";
15
+ } from "./chunk-SNBAMWI5.js";
16
16
  import {
17
17
  ContentToolbar
18
18
  } from "./chunk-TZFBJ47T.js";
@@ -136,4 +136,4 @@ function GridToolbar(props) {
136
136
  export {
137
137
  GridToolbar
138
138
  };
139
- //# sourceMappingURL=chunk-3UXBIUJF.js.map
139
+ //# sourceMappingURL=chunk-RDFPM2AQ.js.map
@@ -0,0 +1,74 @@
1
+ import {
2
+ PendingSpinner,
3
+ SaveError,
4
+ SettingHeader,
5
+ partTestId
6
+ } from "./chunk-PEOOCQ2T.js";
7
+ import {
8
+ descriptionStyles
9
+ } from "./chunk-3DO5AJCG.js";
10
+ import {
11
+ Switch
12
+ } from "./chunk-ZGCPDA3F.js";
13
+ import {
14
+ SR_ONLY_SX
15
+ } from "./chunk-ANYOSBNA.js";
16
+
17
+ // src/components/layout/SettingCard/SettingSwitch.tsx
18
+ import Box from "@mui/material/Box/index.js";
19
+ import { useTheme } from "@mui/material/styles/index.js";
20
+ import { useId } from "react";
21
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
+ var useSettingSwitchIds = () => {
23
+ const base = useId();
24
+ return {
25
+ titleId: `${base}-title`,
26
+ inputId: `${base}-switch`,
27
+ summaryId: `${base}-summary`,
28
+ errorId: `${base}-error`
29
+ };
30
+ };
31
+ var SettingSwitchBlock = ({ title, headingLevel = "h3", icon, summary, copy, disabled, dataTestId, ids, state }) => {
32
+ const theme = useTheme();
33
+ const { shown, saving, error, flip } = state;
34
+ const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null].filter(Boolean).join(" ");
35
+ const control = /* @__PURE__ */ jsxs(Box, { sx: { display: "inline-flex", alignItems: "center", gap: 1, flexShrink: 0 }, children: [
36
+ saving && /* @__PURE__ */ jsx(PendingSpinner, { dataTestId }),
37
+ /* @__PURE__ */ jsx(
38
+ Switch,
39
+ {
40
+ id: ids.inputId,
41
+ checked: shown,
42
+ onChange: (event) => void flip(event.target.checked),
43
+ disabled,
44
+ error: Boolean(error),
45
+ "aria-describedby": describedBy || void 0,
46
+ inputProps: { role: "switch", "aria-busy": saving },
47
+ dataTestId: partTestId(dataTestId, "switch")
48
+ }
49
+ )
50
+ ] });
51
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
52
+ /* @__PURE__ */ jsx(
53
+ SettingHeader,
54
+ {
55
+ titleId: ids.titleId,
56
+ title,
57
+ headingLevel,
58
+ icon,
59
+ labelFor: ids.inputId,
60
+ trailing: control,
61
+ dataTestId
62
+ }
63
+ ),
64
+ summary != null && /* @__PURE__ */ jsx(Box, { component: "p", id: ids.summaryId, sx: descriptionStyles(theme), "data-testid": partTestId(dataTestId, "summary"), children: summary }),
65
+ /* @__PURE__ */ jsx(SaveError, { id: ids.errorId, message: error, dataTestId }),
66
+ /* @__PURE__ */ jsx(Box, { role: "status", "aria-live": "polite", sx: SR_ONLY_SX, children: saving ? copy.saving : "" })
67
+ ] });
68
+ };
69
+
70
+ export {
71
+ useSettingSwitchIds,
72
+ SettingSwitchBlock
73
+ };
74
+ //# sourceMappingURL=chunk-RDZGXJOD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/SettingCard/SettingSwitch.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useId } from 'react';\n\nimport { Switch } from '../../form/Switch';\nimport { SR_ONLY_SX } from '../../form/Label/Label.styles';\n\nimport { useAsyncSwitch } from './SettingCard.hooks';\nimport { PendingSpinner, SaveError, SettingHeader, partTestId } from './SettingCard.parts';\nimport { descriptionStyles } from './SettingCard.styles';\nimport type { SettingToggleProps } from './SettingCard.types';\n\n/** Everything the switch-driven cards share, minus the surface each draws around it. */\nexport type SettingSwitchBlockProps = Pick<\n SettingToggleProps,\n 'title' | 'headingLevel' | 'icon' | 'summary' | 'checked' | 'onChange' | 'copy' | 'formatError' | 'dataTestId'\n> & { disabled: boolean };\n\n/** The ids one switch block wires its label, description and failure line with. */\nexport interface SettingSwitchIds {\n titleId: string;\n inputId: string;\n summaryId: string;\n errorId: string;\n}\n\nexport const useSettingSwitchIds = (): SettingSwitchIds => {\n const base = useId();\n return {\n titleId: `${base}-title`,\n inputId: `${base}-switch`,\n summaryId: `${base}-summary`,\n errorId: `${base}-error`,\n };\n};\n\n/**\n * Title-as-label, the switch, its explanation and the failure line.\n *\n * The switch is never `disabled` while it saves, for the reason Save is not\n * (`SettingCard.tsx`): a disabled control drops keyboard focus. It says\n * `aria-busy` instead, ignores flips until the save settles (see\n * `useAsyncSwitch`), shows a spinner, and a polite live region says the words.\n */\nexport const SettingSwitchBlock: React.FC<\n SettingSwitchBlockProps & { ids: SettingSwitchIds; state: ReturnType<typeof useAsyncSwitch> }\n> = ({ title, headingLevel = 'h3', icon, summary, copy, disabled, dataTestId, ids, state }) => {\n const theme = useTheme();\n const { shown, saving, error, flip } = state;\n const describedBy = [summary != null ? ids.summaryId : null, error ? ids.errorId : null]\n .filter(Boolean)\n .join(' ');\n\n const control = (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 1, flexShrink: 0 }}>\n {saving && <PendingSpinner dataTestId={dataTestId} />}\n <Switch\n id={ids.inputId}\n checked={shown}\n onChange={(event) => void flip(event.target.checked)}\n disabled={disabled}\n error={Boolean(error)}\n aria-describedby={describedBy || undefined}\n inputProps={{ role: 'switch', 'aria-busy': saving }}\n dataTestId={partTestId(dataTestId, 'switch')}\n />\n </Box>\n );\n\n return (\n <>\n <SettingHeader\n titleId={ids.titleId}\n title={title}\n headingLevel={headingLevel}\n icon={icon}\n labelFor={ids.inputId}\n trailing={control}\n dataTestId={dataTestId}\n />\n {summary != null && (\n <Box component=\"p\" id={ids.summaryId} sx={descriptionStyles(theme)} data-testid={partTestId(dataTestId, 'summary')}>\n {summary}\n </Box>\n )}\n <SaveError id={ids.errorId} message={error} dataTestId={dataTestId} />\n <Box role=\"status\" aria-live=\"polite\" sx={SR_ONLY_SX}>\n {saving ? copy.saving : ''}\n </Box>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AACzB,SAAgB,aAAa;AAoDzB,SAgBA,UAfa,KADb;AA5BG,IAAM,sBAAsB,MAAwB;AACzD,QAAM,OAAO,MAAM;AACnB,SAAO;AAAA,IACL,SAAS,GAAG,IAAI;AAAA,IAChB,SAAS,GAAG,IAAI;AAAA,IAChB,WAAW,GAAG,IAAI;AAAA,IAClB,SAAS,GAAG,IAAI;AAAA,EAClB;AACF;AAUO,IAAM,qBAET,CAAC,EAAE,OAAO,eAAe,MAAM,MAAM,SAAS,MAAM,UAAU,YAAY,KAAK,MAAM,MAAM;AAC7F,QAAM,QAAQ,SAAS;AACvB,QAAM,EAAE,OAAO,QAAQ,OAAO,KAAK,IAAI;AACvC,QAAM,cAAc,CAAC,WAAW,OAAO,IAAI,YAAY,MAAM,QAAQ,IAAI,UAAU,IAAI,EACpF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,QAAM,UACJ,qBAAC,OAAI,IAAI,EAAE,SAAS,eAAe,YAAY,UAAU,KAAK,GAAG,YAAY,EAAE,GAC5E;AAAA,cAAU,oBAAC,kBAAe,YAAwB;AAAA,IACnD;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,IAAI;AAAA,QACR,SAAS;AAAA,QACT,UAAU,CAAC,UAAU,KAAK,KAAK,MAAM,OAAO,OAAO;AAAA,QACnD;AAAA,QACA,OAAO,QAAQ,KAAK;AAAA,QACpB,oBAAkB,eAAe;AAAA,QACjC,YAAY,EAAE,MAAM,UAAU,aAAa,OAAO;AAAA,QAClD,YAAY,WAAW,YAAY,QAAQ;AAAA;AAAA,IAC7C;AAAA,KACF;AAGF,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,IAAI;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,IAAI;AAAA,QACd,UAAU;AAAA,QACV;AAAA;AAAA,IACF;AAAA,IACC,WAAW,QACV,oBAAC,OAAI,WAAU,KAAI,IAAI,IAAI,WAAW,IAAI,kBAAkB,KAAK,GAAG,eAAa,WAAW,YAAY,SAAS,GAC9G,mBACH;AAAA,IAEF,oBAAC,aAAU,IAAI,IAAI,SAAS,SAAS,OAAO,YAAwB;AAAA,IACpE,oBAAC,OAAI,MAAK,UAAS,aAAU,UAAS,IAAI,YACvC,mBAAS,KAAK,SAAS,IAC1B;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-RN7UJI7S.js.map