@12-apps/ui 6.36.0 → 6.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1103) hide show
  1. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +4 -4
  2. package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
  3. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +3 -3
  4. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +3 -3
  5. package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +2 -2
  6. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +58 -58
  7. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +73 -74
  8. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +6 -7
  9. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -8
  10. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +13 -14
  11. package/dist/_internal/components/data-display/DataViews/base-card.js +5 -6
  12. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +9 -9
  13. package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +2 -2
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +8 -8
  15. package/dist/_internal/components/data-display/DataViews/base-list-card.js +14 -15
  16. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +18 -18
  17. package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +2 -2
  18. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
  19. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +11 -11
  20. package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +6 -6
  21. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +4 -4
  22. package/dist/_internal/components/data-display/DataViews/data-views-export.js +4 -4
  23. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +24 -24
  24. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +13 -13
  25. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
  26. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +55 -55
  27. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +2 -2
  28. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +26 -26
  29. package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +4 -4
  30. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +11 -11
  31. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +14 -14
  32. package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +4 -4
  33. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  34. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +5 -5
  35. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +4 -4
  36. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +23 -23
  37. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +23 -24
  38. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +22 -22
  39. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +4 -4
  40. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +5 -5
  41. package/dist/_internal/components/data-display/DataViews/save-view-preview.js +2 -2
  42. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +6 -6
  43. package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +2 -2
  44. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +4 -4
  45. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +6 -6
  46. package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -3
  47. package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -3
  48. package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -3
  49. package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
  50. package/dist/_internal/components/data-display/index.js +12 -12
  51. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +3 -3
  52. package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
  53. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +2 -2
  54. package/dist/_internal/components/feedback/Modal/Modal.js +3 -2
  55. package/dist/_internal/components/feedback/Modal/Modal.styles.js +2 -1
  56. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
  57. package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
  58. package/dist/_internal/components/feedback/Sonner/SonnerToast.js +1 -1
  59. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -3
  60. package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +3 -2
  61. package/dist/_internal/components/feedback/StackedModal/StackedModal.styles.js +2 -1
  62. package/dist/_internal/components/feedback/Toast/Toast.js +2 -1
  63. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.geometry.js +1 -1
  64. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.hooks.js +3 -2
  65. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +5 -4
  66. package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +2 -1
  67. package/dist/_internal/components/feedback/index.js +18 -19
  68. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +6 -6
  69. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +4 -4
  70. package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +3 -2
  71. package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +3 -2
  72. package/dist/_internal/components/form/AddressAutocomplete/AddressSuggestionsPaper.js +2 -1
  73. package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +2 -1
  74. package/dist/_internal/components/form/Autocomplete/Autocomplete.js +3 -2
  75. package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +2 -1
  76. package/dist/_internal/components/form/Button/Button.js +2 -2
  77. package/dist/_internal/components/form/Button/Button.styles.js +1 -1
  78. package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +6 -6
  79. package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +2 -2
  80. package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +2 -2
  81. package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
  82. package/dist/_internal/components/form/CategorySelect/CategoryPanelSurface.js +2 -1
  83. package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
  84. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +10 -10
  85. package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +1 -1
  86. package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +2 -2
  87. package/dist/_internal/components/form/CepField/CepField.js +4 -4
  88. package/dist/_internal/components/form/Checkbox/Checkbox.js +1 -1
  89. package/dist/_internal/components/form/CodeEditor/CodeEditor.helpers.js +1 -1
  90. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
  91. package/dist/_internal/components/form/Command/Command.hooks.js +1 -1
  92. package/dist/_internal/components/form/Command/Command.js +4 -4
  93. package/dist/_internal/components/form/Command/Command.parts.js +2 -1
  94. package/dist/_internal/components/form/Command/Command.styles.js +1 -1
  95. package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +2 -2
  96. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +2 -2
  97. package/dist/_internal/components/form/DateRangePicker/DateRangePickerQuickList.js +1 -1
  98. package/dist/_internal/components/form/Form/Form.js +1 -1
  99. package/dist/_internal/components/form/HeaderActions/HeaderActions.js +1 -1
  100. package/dist/_internal/components/form/Input/Input.js +3 -2
  101. package/dist/_internal/components/form/Input/Input.styles.js +2 -1
  102. package/dist/_internal/components/form/InputOTP/InputOTP.js +2 -2
  103. package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +1 -1
  104. package/dist/_internal/components/form/Label/Label.js +2 -2
  105. package/dist/_internal/components/form/Label/Label.styles.js +1 -1
  106. package/dist/_internal/components/form/Menubar/Menubar.item.js +2 -2
  107. package/dist/_internal/components/form/Menubar/Menubar.js +4 -4
  108. package/dist/_internal/components/form/Menubar/Menubar.styles.js +1 -1
  109. package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +3 -3
  110. package/dist/_internal/components/form/PasswordStrength/PasswordStrength.js +1 -1
  111. package/dist/_internal/components/form/PhoneInput/PhoneInput.js +1 -1
  112. package/dist/_internal/components/form/RadioGroup/RadioGroup.animations.js +2 -1
  113. package/dist/_internal/components/form/RadioGroup/RadioGroup.js +4 -4
  114. package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +2 -2
  115. package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +3 -3
  116. package/dist/_internal/components/form/RichTextEditor/RichTextEditor.js +2 -2
  117. package/dist/_internal/components/form/RichTextEditor/RichTextEditorToolbar.js +2 -1
  118. package/dist/_internal/components/form/SearchPalette/SearchPalette.js +2 -2
  119. package/dist/_internal/components/form/SearchPalette/SearchPalette.parts.js +1 -1
  120. package/dist/_internal/components/form/Select/Select.js +2 -1
  121. package/dist/_internal/components/form/Slider/Slider.animations.js +2 -1
  122. package/dist/_internal/components/form/Slider/Slider.js +3 -3
  123. package/dist/_internal/components/form/Slider/Slider.styles.js +2 -2
  124. package/dist/_internal/components/form/Switch/Switch.animations.js +2 -1
  125. package/dist/_internal/components/form/Switch/Switch.js +4 -4
  126. package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
  127. package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
  128. package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
  129. package/dist/_internal/components/form/Textarea/Textarea.styles.js +2 -1
  130. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +12 -11
  131. package/dist/_internal/components/form/Textarea/TextareaRichEditor.js.map +1 -1
  132. package/dist/_internal/components/form/Toggle/Toggle.js +2 -2
  133. package/dist/_internal/components/form/Toggle/Toggle.styles.js +1 -1
  134. package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +1 -1
  135. package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
  136. package/dist/_internal/components/form/UploadButton/UploadButton.parts.js +1 -1
  137. package/dist/_internal/components/form/index.js +56 -56
  138. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +11 -11
  139. package/dist/_internal/components/form/total-form/Fields/CepField.js +5 -5
  140. package/dist/_internal/components/form/total-form/Fields/SelectField.js +3 -3
  141. package/dist/_internal/components/form/total-form/Fields/TextField.js +4 -4
  142. package/dist/_internal/components/form/total-form/Fields/ToggleField.js +3 -3
  143. package/dist/_internal/components/form/total-form/Fields/index.js +21 -21
  144. package/dist/_internal/components/form/total-form/FormContainer.js +2 -2
  145. package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -2
  146. package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
  147. package/dist/_internal/components/index.js +142 -143
  148. package/dist/_internal/components/layout/Accordion/Accordion.js +3 -2
  149. package/dist/_internal/components/layout/Accordion/Accordion.styles.js +2 -1
  150. package/dist/_internal/components/layout/Box/Box.js +1 -1
  151. package/dist/_internal/components/layout/Card/Card.js +3 -3
  152. package/dist/_internal/components/layout/Card/Card.styles.js +2 -2
  153. package/dist/_internal/components/layout/Collapsible/Collapsible.helpers.js +2 -1
  154. package/dist/_internal/components/layout/Collapsible/Collapsible.js +3 -2
  155. package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
  156. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  157. package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
  158. package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
  159. package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
  160. package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
  161. package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
  162. package/dist/_internal/components/layout/Dashboard/Dashboard.js +3 -3
  163. package/dist/_internal/components/layout/Dashboard/DashboardParts.js +2 -2
  164. package/dist/_internal/components/layout/Drawer/Drawer.js +2 -1
  165. package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +5 -4
  166. package/dist/_internal/components/layout/ScrollArea/ScrollArea.styles.js +6 -3
  167. package/dist/_internal/components/layout/ScrollArea/ScrollAreaContent.js +2 -1
  168. package/dist/_internal/components/layout/ScrollArea/ScrollViewport.js +3 -2
  169. package/dist/_internal/components/layout/Separator/Separator.js +4 -2
  170. package/dist/_internal/components/layout/Separator/Separator.styles.js +3 -1
  171. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.items.js +3 -3
  172. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +8 -8
  173. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.rail.js +4 -4
  174. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.styles.js +6 -5
  175. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +5 -5
  176. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +3 -3
  177. package/dist/_internal/components/layout/SettingsLayout/SettingsSectionHeader.js +2 -2
  178. package/dist/_internal/components/layout/SettingsLayout/SettingsStatusMarker.js +2 -2
  179. package/dist/_internal/components/layout/Sidebar/Sidebar.js +2 -1
  180. package/dist/_internal/components/layout/Skeleton/Skeleton.js +3 -2
  181. package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +6 -3
  182. package/dist/_internal/components/layout/Spacer/Spacer.js +2 -1
  183. package/dist/_internal/components/layout/Stack/Stack.js +2 -2
  184. package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
  185. package/dist/_internal/components/layout/index.js +28 -29
  186. package/dist/_internal/components/navigation/AppHeader/AppHeader.brand.js +1 -1
  187. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +5 -6
  188. package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
  189. package/dist/_internal/components/navigation/AppHeader/AppHeader.js +1 -1
  190. package/dist/_internal/components/navigation/Breadcrumbs/BreadcrumbEntry.js +2 -2
  191. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +3 -3
  192. package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.styles.js +1 -1
  193. package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +3 -3
  194. package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +2 -2
  195. package/dist/_internal/components/navigation/CommandPalette/ShortcutChip.js +1 -1
  196. package/dist/_internal/components/navigation/ContextMenu/ContextMenu.js +1 -1
  197. package/dist/_internal/components/navigation/DropdownMenu/DropdownMenu.js +1 -1
  198. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +4 -4
  199. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +6 -6
  200. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +2 -2
  201. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.styles.js +1 -1
  202. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
  203. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +4 -4
  204. package/dist/_internal/components/navigation/Pagination/Pagination.js +3 -3
  205. package/dist/_internal/components/navigation/Pagination/Pagination.styles.js +1 -1
  206. package/dist/_internal/components/navigation/Pagination/PaginationParts.js +2 -1
  207. package/dist/_internal/components/navigation/Tabs/Tabs.js +10 -3
  208. package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +8 -1
  209. package/dist/_internal/components/navigation/Tabs/TabsPanel.js +2 -1
  210. package/dist/_internal/components/navigation/index.js +28 -29
  211. package/dist/_internal/components/typography/Blockquote/Blockquote.js +1 -1
  212. package/dist/_internal/components/typography/Code/Code.js +1 -1
  213. package/dist/_internal/components/typography/Text/Text.js +1 -1
  214. package/dist/_internal/components/typography/index.js +3 -3
  215. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.animations.js +2 -1
  216. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +3 -3
  217. package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.styles.js +2 -2
  218. package/dist/_internal/components/utility/AspectRatio/AspectRatio.js +2 -1
  219. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
  220. package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +1 -1
  221. package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +2 -2
  222. package/dist/_internal/components/utility/index.js +7 -7
  223. package/dist/_internal/social-login-button/social-login-button.js +8 -9
  224. package/dist/_internal/tokens/shadow.js +19 -8
  225. package/dist/_internal/tokens/shadow.js.map +1 -1
  226. package/dist/_internal/user-avatar/user-avatar.js +6 -7
  227. package/dist/{chunk-BLJDCMFU.js → chunk-2ARVNCVU.js} +7 -7
  228. package/dist/chunk-2ARVNCVU.js.map +1 -0
  229. package/dist/{chunk-KH25WUSX.js → chunk-2EAAWOZ2.js} +4 -4
  230. package/dist/chunk-2EAAWOZ2.js.map +1 -0
  231. package/dist/{chunk-PNLM35GU.js → chunk-2JNHWKQK.js} +5 -5
  232. package/dist/{chunk-PWF32ILG.js → chunk-2OYFTSG4.js} +4 -4
  233. package/dist/{chunk-CRZXSZ5O.js → chunk-2S752BIJ.js} +2 -2
  234. package/dist/{chunk-IYTBTK2M.js → chunk-2WU52FLP.js} +19 -30
  235. package/dist/chunk-2WU52FLP.js.map +1 -0
  236. package/dist/{chunk-IWOVENC3.js → chunk-2XX45PC5.js} +2 -2
  237. package/dist/{chunk-RSQMPCCR.js → chunk-34643ATX.js} +10 -4
  238. package/dist/chunk-34643ATX.js.map +1 -0
  239. package/dist/{chunk-ZW5K4XCQ.js → chunk-34BZXJGT.js} +6 -6
  240. package/dist/{chunk-6GRZ77IS.js → chunk-3AIRFAI3.js} +13 -12
  241. package/dist/chunk-3AIRFAI3.js.map +1 -0
  242. package/dist/{chunk-KCAW6HRO.js → chunk-3AOQBR7N.js} +2 -2
  243. package/dist/{chunk-I62ALI7F.js → chunk-3FNXOCBD.js} +25 -13
  244. package/dist/chunk-3FNXOCBD.js.map +1 -0
  245. package/dist/{chunk-JFBEZXNL.js → chunk-3KREF4ZF.js} +3 -3
  246. package/dist/{chunk-EL7CMURV.js → chunk-3LSIFHQK.js} +3 -3
  247. package/dist/chunk-3LSIFHQK.js.map +1 -0
  248. package/dist/{chunk-MP4VSWHK.js → chunk-3NJMNMWB.js} +12 -2
  249. package/dist/chunk-3NJMNMWB.js.map +1 -0
  250. package/dist/{chunk-N52O2OKZ.js → chunk-3NNO6YIH.js} +8 -3
  251. package/dist/chunk-3NNO6YIH.js.map +1 -0
  252. package/dist/{chunk-SQYC57ZN.js → chunk-3RMDIO4G.js} +4 -4
  253. package/dist/{chunk-MJ3BVWPZ.js → chunk-43G3WMYN.js} +12 -7
  254. package/dist/chunk-43G3WMYN.js.map +1 -0
  255. package/dist/{chunk-E7MSDXED.js → chunk-43H66TVT.js} +12 -5
  256. package/dist/chunk-43H66TVT.js.map +1 -0
  257. package/dist/{chunk-IL7JZKXY.js → chunk-442FSG7G.js} +3 -3
  258. package/dist/{chunk-GVLZZCSX.js → chunk-4B5XUQQS.js} +3 -3
  259. package/dist/{chunk-DYVAOEW4.js → chunk-4D4LLSQC.js} +6 -5
  260. package/dist/chunk-4D4LLSQC.js.map +1 -0
  261. package/dist/{chunk-NEGCJNGJ.js → chunk-4G47KBTP.js} +9 -9
  262. package/dist/chunk-4G47KBTP.js.map +1 -0
  263. package/dist/{chunk-MVXFMIVZ.js → chunk-4GB46HLK.js} +8 -4
  264. package/dist/chunk-4GB46HLK.js.map +1 -0
  265. package/dist/{chunk-SN2YMCTL.js → chunk-4GWHYLEB.js} +3 -3
  266. package/dist/{chunk-J4NXTSJY.js → chunk-4JFL62K3.js} +4 -4
  267. package/dist/chunk-4JFL62K3.js.map +1 -0
  268. package/dist/{chunk-XLYFOBBT.js → chunk-4PRZLII7.js} +19 -16
  269. package/dist/chunk-4PRZLII7.js.map +1 -0
  270. package/dist/{chunk-AMTFP7QA.js → chunk-4RDJMIWL.js} +16 -13
  271. package/dist/chunk-4RDJMIWL.js.map +1 -0
  272. package/dist/{chunk-PYIASGI7.js → chunk-4RWPGWJW.js} +39 -39
  273. package/dist/chunk-4RWPGWJW.js.map +1 -0
  274. package/dist/chunk-4T6UIYJB.js +77 -0
  275. package/dist/chunk-4T6UIYJB.js.map +1 -0
  276. package/dist/{chunk-4OEKIFBC.js → chunk-4VMFS3VJ.js} +6 -3
  277. package/dist/chunk-4VMFS3VJ.js.map +1 -0
  278. package/dist/{chunk-HBICO6AX.js → chunk-4WNFOBTH.js} +26 -24
  279. package/dist/chunk-4WNFOBTH.js.map +1 -0
  280. package/dist/{chunk-6CTPDNNX.js → chunk-52G2KRL4.js} +14 -14
  281. package/dist/chunk-52G2KRL4.js.map +1 -0
  282. package/dist/{chunk-ZZM3DOEK.js → chunk-5HDYTTE7.js} +2 -2
  283. package/dist/{chunk-E7T3A4IR.js → chunk-5JCGBCFJ.js} +2 -2
  284. package/dist/{chunk-GEXM6DNR.js → chunk-5KGABAQB.js} +2 -2
  285. package/dist/{chunk-FC7NQ6XM.js → chunk-5MW7OYBM.js} +2 -2
  286. package/dist/{chunk-5TJRJSJY.js → chunk-5OBXEMQO.js} +3 -3
  287. package/dist/{chunk-MK4CH4VT.js → chunk-5OUEKIWQ.js} +14 -12
  288. package/dist/chunk-5OUEKIWQ.js.map +1 -0
  289. package/dist/{chunk-GW64UQXI.js → chunk-5QAJ3Y5F.js} +3 -3
  290. package/dist/{chunk-GW64UQXI.js.map → chunk-5QAJ3Y5F.js.map} +1 -1
  291. package/dist/{chunk-3A22SBIU.js → chunk-67O4GPJJ.js} +8 -4
  292. package/dist/chunk-67O4GPJJ.js.map +1 -0
  293. package/dist/{chunk-D5X4FRYX.js → chunk-6JNQLW5L.js} +2 -2
  294. package/dist/{chunk-CPTY6UZ6.js → chunk-6KEXHOIF.js} +5 -4
  295. package/dist/chunk-6KEXHOIF.js.map +1 -0
  296. package/dist/{chunk-NSJVQ5YJ.js → chunk-6KKQHJE7.js} +9 -4
  297. package/dist/chunk-6KKQHJE7.js.map +1 -0
  298. package/dist/{chunk-D2HKCPEH.js → chunk-6LOGBWLG.js} +9 -5
  299. package/dist/chunk-6LOGBWLG.js.map +1 -0
  300. package/dist/{chunk-RKI3MRKX.js → chunk-6N4AA2Y7.js} +3 -3
  301. package/dist/{chunk-EFHIMCJN.js → chunk-6P2OFMBX.js} +11 -9
  302. package/dist/chunk-6P2OFMBX.js.map +1 -0
  303. package/dist/{chunk-TOXTJ7MU.js → chunk-6RLCBNDV.js} +8 -5
  304. package/dist/chunk-6RLCBNDV.js.map +1 -0
  305. package/dist/{chunk-GUW5BUK7.js → chunk-6WBKOM5K.js} +15 -7
  306. package/dist/chunk-6WBKOM5K.js.map +1 -0
  307. package/dist/{chunk-K7WSPGI7.js → chunk-6WLHEZXI.js} +7 -7
  308. package/dist/chunk-6WLHEZXI.js.map +1 -0
  309. package/dist/{chunk-7EIOXZWL.js → chunk-74P3YX7R.js} +4 -4
  310. package/dist/{chunk-VYSFKR32.js → chunk-75CGLX6Q.js} +3 -3
  311. package/dist/{chunk-VYSFKR32.js.map → chunk-75CGLX6Q.js.map} +1 -1
  312. package/dist/{chunk-LVEG6XQL.js → chunk-76X6JRVI.js} +19 -33
  313. package/dist/chunk-76X6JRVI.js.map +1 -0
  314. package/dist/{chunk-2NLYGZP3.js → chunk-77JL5XVD.js} +13 -9
  315. package/dist/chunk-77JL5XVD.js.map +1 -0
  316. package/dist/{chunk-A6AKFPIQ.js → chunk-7EH4D6FU.js} +2 -2
  317. package/dist/{chunk-6SKXV236.js → chunk-7EM4THID.js} +9 -8
  318. package/dist/chunk-7EM4THID.js.map +1 -0
  319. package/dist/{chunk-7ZG7T2YN.js → chunk-7GHYCQCJ.js} +3 -3
  320. package/dist/{chunk-U4H6MGVE.js → chunk-A5UYPUS2.js} +7 -5
  321. package/dist/chunk-A5UYPUS2.js.map +1 -0
  322. package/dist/{chunk-2PBT2HQH.js → chunk-AUSUCZYR.js} +25 -24
  323. package/dist/chunk-AUSUCZYR.js.map +1 -0
  324. package/dist/{chunk-T3WHW7ZC.js → chunk-BAZXVFLR.js} +10 -6
  325. package/dist/chunk-BAZXVFLR.js.map +1 -0
  326. package/dist/{chunk-7F7TTOYN.js → chunk-BEGTLELZ.js} +7 -6
  327. package/dist/chunk-BEGTLELZ.js.map +1 -0
  328. package/dist/{chunk-4WQ3YXQL.js → chunk-BFMDA6UO.js} +4 -4
  329. package/dist/{chunk-RQ5HZDBV.js → chunk-BN742L2M.js} +14 -8
  330. package/dist/chunk-BN742L2M.js.map +1 -0
  331. package/dist/{chunk-R75DZ3AK.js → chunk-BVLMKSHX.js} +2 -2
  332. package/dist/{chunk-PMP6WJJS.js → chunk-BWMHGENX.js} +20 -19
  333. package/dist/chunk-BWMHGENX.js.map +1 -0
  334. package/dist/{chunk-7EQCZO56.js → chunk-C3LZ3OGJ.js} +11 -11
  335. package/dist/chunk-C3LZ3OGJ.js.map +1 -0
  336. package/dist/{chunk-ST4YYVUK.js → chunk-C5RQBTRZ.js} +7 -3
  337. package/dist/chunk-C5RQBTRZ.js.map +1 -0
  338. package/dist/{chunk-QAP3FW33.js → chunk-C66RGVAS.js} +30 -20
  339. package/dist/chunk-C66RGVAS.js.map +1 -0
  340. package/dist/{chunk-B7BNNSM2.js → chunk-CNQUCNEA.js} +7 -7
  341. package/dist/{chunk-GGWICBJD.js → chunk-CPAJYJUD.js} +2 -2
  342. package/dist/{chunk-DMWSXWCZ.js → chunk-CZIX4BW2.js} +4 -4
  343. package/dist/{chunk-CAHWCSRE.js → chunk-D46SLMCX.js} +22 -8
  344. package/dist/chunk-D46SLMCX.js.map +1 -0
  345. package/dist/{chunk-2HVNPWFV.js → chunk-D6KL74KI.js} +4 -10
  346. package/dist/chunk-D6KL74KI.js.map +1 -0
  347. package/dist/{chunk-2OIP3T5O.js → chunk-DBFRCTI5.js} +4 -4
  348. package/dist/{chunk-2OIP3T5O.js.map → chunk-DBFRCTI5.js.map} +1 -1
  349. package/dist/{chunk-TTAP5XFX.js → chunk-DJYL2LC6.js} +8 -3
  350. package/dist/chunk-DJYL2LC6.js.map +1 -0
  351. package/dist/{chunk-SYVNWXVW.js → chunk-DUBTI4DI.js} +4 -4
  352. package/dist/{chunk-TQ2557I5.js → chunk-DUNG7D4B.js} +23 -25
  353. package/dist/chunk-DUNG7D4B.js.map +1 -0
  354. package/dist/{chunk-RMCNEKBZ.js → chunk-DW6F7354.js} +2 -2
  355. package/dist/{chunk-Q4BQYYPU.js → chunk-E2QIKJX2.js} +11 -5
  356. package/dist/chunk-E2QIKJX2.js.map +1 -0
  357. package/dist/{chunk-LWRI6HGT.js → chunk-ECNJGROX.js} +21 -19
  358. package/dist/chunk-ECNJGROX.js.map +1 -0
  359. package/dist/{chunk-XJUEHG72.js → chunk-EERUSI52.js} +2 -2
  360. package/dist/{chunk-NPP44TQG.js → chunk-EYZ6QBTV.js} +2 -2
  361. package/dist/{chunk-NPP44TQG.js.map → chunk-EYZ6QBTV.js.map} +1 -1
  362. package/dist/{chunk-FXNYV5Z6.js → chunk-F6D6HXZU.js} +3 -3
  363. package/dist/{chunk-7DN4UXJ3.js → chunk-FERUQ7OB.js} +14 -14
  364. package/dist/chunk-FERUQ7OB.js.map +1 -0
  365. package/dist/{chunk-UL7L6MFT.js → chunk-FFCJ7NR2.js} +4 -4
  366. package/dist/{chunk-GXCOXJS3.js → chunk-FNG33MKA.js} +3 -3
  367. package/dist/{chunk-YH37X6JT.js → chunk-FNRPQE2D.js} +26 -25
  368. package/dist/chunk-FNRPQE2D.js.map +1 -0
  369. package/dist/{chunk-U342T7ZR.js → chunk-FOCU4QT5.js} +13 -10
  370. package/dist/chunk-FOCU4QT5.js.map +1 -0
  371. package/dist/{chunk-FYTLKHEN.js → chunk-FYKFQPVT.js} +19 -18
  372. package/dist/chunk-FYKFQPVT.js.map +1 -0
  373. package/dist/{chunk-5SJWDABY.js → chunk-G3XLFQ2Z.js} +44 -43
  374. package/dist/chunk-G3XLFQ2Z.js.map +1 -0
  375. package/dist/{chunk-TVL5V2JK.js → chunk-GGMB6LJH.js} +7 -3
  376. package/dist/chunk-GGMB6LJH.js.map +1 -0
  377. package/dist/{chunk-4CTLEUK3.js → chunk-GLFTIGOF.js} +4 -4
  378. package/dist/{chunk-7UZ2TFIK.js → chunk-GNCSDUGY.js} +12 -4
  379. package/dist/chunk-GNCSDUGY.js.map +1 -0
  380. package/dist/{chunk-6SS5C74Q.js → chunk-GS3RP2QE.js} +2 -2
  381. package/dist/{chunk-L4UP5VYS.js → chunk-GVH7C2PT.js} +2 -2
  382. package/dist/{chunk-MBSYD3ZU.js → chunk-GWFAINQ7.js} +3 -3
  383. package/dist/chunk-GWFAINQ7.js.map +1 -0
  384. package/dist/{chunk-B2VXP2B2.js → chunk-GZT7MLLO.js} +2 -2
  385. package/dist/{chunk-AK2HOD6B.js → chunk-H5BEWPEY.js} +2 -2
  386. package/dist/{chunk-QIKPGMMO.js → chunk-H67EL3CG.js} +6 -6
  387. package/dist/{chunk-3D6HXKZM.js → chunk-HDJQDMHB.js} +18 -13
  388. package/dist/chunk-HDJQDMHB.js.map +1 -0
  389. package/dist/{chunk-WNUZK7NS.js → chunk-HVXIOIM5.js} +10 -8
  390. package/dist/chunk-HVXIOIM5.js.map +1 -0
  391. package/dist/{chunk-JJSZP3TW.js → chunk-I4QA2F4L.js} +6 -6
  392. package/dist/{chunk-L7SFH3ED.js → chunk-I7GSRTGQ.js} +37 -28
  393. package/dist/chunk-I7GSRTGQ.js.map +1 -0
  394. package/dist/{chunk-Q4CAZ2TP.js → chunk-IG23YZZR.js} +6 -5
  395. package/dist/chunk-IG23YZZR.js.map +1 -0
  396. package/dist/{chunk-5W4BLTDI.js → chunk-IWFENXST.js} +7 -6
  397. package/dist/chunk-IWFENXST.js.map +1 -0
  398. package/dist/{chunk-HXEBKOSM.js → chunk-J5UZB6Y6.js} +2 -2
  399. package/dist/chunk-J5UZB6Y6.js.map +1 -0
  400. package/dist/{chunk-BXAL7OIS.js → chunk-JC22FNFA.js} +89 -88
  401. package/dist/chunk-JC22FNFA.js.map +1 -0
  402. package/dist/{chunk-AJ5SDHX5.js → chunk-JCL7WK4G.js} +2 -2
  403. package/dist/{chunk-ZMC3N23A.js → chunk-JSD5TFDK.js} +6 -6
  404. package/dist/{chunk-NE6XUN5Z.js → chunk-JU4MSYYH.js} +2 -2
  405. package/dist/{chunk-5CKDRLRN.js → chunk-JXECOCNA.js} +35 -19
  406. package/dist/chunk-JXECOCNA.js.map +1 -0
  407. package/dist/{chunk-WUTHROII.js → chunk-JYWF76Z5.js} +11 -5
  408. package/dist/chunk-JYWF76Z5.js.map +1 -0
  409. package/dist/{chunk-B76QCDCE.js → chunk-K4L42FF6.js} +6 -3
  410. package/dist/chunk-K4L42FF6.js.map +1 -0
  411. package/dist/{chunk-X2AKLDPW.js → chunk-KE473LK6.js} +3 -3
  412. package/dist/{chunk-TBF2CPJW.js → chunk-KIHGTL2D.js} +21 -11
  413. package/dist/chunk-KIHGTL2D.js.map +1 -0
  414. package/dist/{chunk-3T5Z5HXF.js → chunk-KM3Y5TCG.js} +40 -36
  415. package/dist/chunk-KM3Y5TCG.js.map +1 -0
  416. package/dist/{chunk-OWA7GPWR.js → chunk-KN5J3NEZ.js} +6 -5
  417. package/dist/chunk-KN5J3NEZ.js.map +1 -0
  418. package/dist/{chunk-RWTFZ7J5.js → chunk-L4G5BZFF.js} +22 -13
  419. package/dist/chunk-L4G5BZFF.js.map +1 -0
  420. package/dist/{chunk-HB7ISSLK.js → chunk-L5RQIQIP.js} +26 -22
  421. package/dist/chunk-L5RQIQIP.js.map +1 -0
  422. package/dist/{chunk-5UTAEHSB.js → chunk-L7NQCLFU.js} +3 -3
  423. package/dist/{chunk-4GYEIWQP.js → chunk-LNHYBA4B.js} +11 -10
  424. package/dist/chunk-LNHYBA4B.js.map +1 -0
  425. package/dist/{chunk-QY4XNTNG.js → chunk-LP3JCXER.js} +4 -4
  426. package/dist/chunk-LP3JCXER.js.map +1 -0
  427. package/dist/{chunk-WVC3BG6J.js → chunk-LXT3X33C.js} +11 -6
  428. package/dist/chunk-LXT3X33C.js.map +1 -0
  429. package/dist/{chunk-RZ2C5CAW.js → chunk-M2JTIH5M.js} +4 -4
  430. package/dist/{chunk-OATHOXIU.js → chunk-MC4KYGSX.js} +8 -8
  431. package/dist/chunk-MC4KYGSX.js.map +1 -0
  432. package/dist/{chunk-6KL2CJBO.js → chunk-MNHIK2OR.js} +2 -2
  433. package/dist/{chunk-343OLRFT.js → chunk-MR2HKBHS.js} +7 -7
  434. package/dist/{chunk-YVUD3MY4.js → chunk-N23GCN5U.js} +7 -4
  435. package/dist/chunk-N23GCN5U.js.map +1 -0
  436. package/dist/{chunk-CWDV64TD.js → chunk-N5GVW6RO.js} +5 -4
  437. package/dist/chunk-N5GVW6RO.js.map +1 -0
  438. package/dist/{chunk-JFEEV3XI.js → chunk-NB3FGWU4.js} +2 -2
  439. package/dist/{chunk-2TJOCI54.js → chunk-NCEQWEXT.js} +3 -3
  440. package/dist/{chunk-2TJOCI54.js.map → chunk-NCEQWEXT.js.map} +1 -1
  441. package/dist/{chunk-IVIHRZEY.js → chunk-NDMPXMW2.js} +12 -8
  442. package/dist/chunk-NDMPXMW2.js.map +1 -0
  443. package/dist/{chunk-5IXHJXJX.js → chunk-NIF4IXQU.js} +5 -2
  444. package/dist/chunk-NIF4IXQU.js.map +1 -0
  445. package/dist/{chunk-UUUMNJPP.js → chunk-NLYNRE7L.js} +10 -10
  446. package/dist/chunk-NLYNRE7L.js.map +1 -0
  447. package/dist/{chunk-KLWW67WP.js → chunk-NOKN4HRK.js} +12 -11
  448. package/dist/chunk-NOKN4HRK.js.map +1 -0
  449. package/dist/{chunk-LIG7TKIB.js → chunk-NYFNF7I5.js} +11 -6
  450. package/dist/chunk-NYFNF7I5.js.map +1 -0
  451. package/dist/{chunk-KK57AHWS.js → chunk-OAEYCKBN.js} +2 -2
  452. package/dist/{chunk-JGRE56GQ.js → chunk-OB56SZGL.js} +2 -2
  453. package/dist/{chunk-VRDNUY4H.js → chunk-OHC3F7GJ.js} +4 -4
  454. package/dist/chunk-OHC3F7GJ.js.map +1 -0
  455. package/dist/{chunk-E4TNDTWV.js → chunk-OL2BEJZR.js} +2 -2
  456. package/dist/{chunk-EFV5QJNM.js → chunk-ORRI6FMN.js} +17 -14
  457. package/dist/chunk-ORRI6FMN.js.map +1 -0
  458. package/dist/{chunk-DZNMS2SH.js → chunk-OS6KPL4D.js} +6 -6
  459. package/dist/{chunk-ZTYUKEN3.js → chunk-OVXSQQDK.js} +12 -7
  460. package/dist/chunk-OVXSQQDK.js.map +1 -0
  461. package/dist/{chunk-ZQL5RXVE.js → chunk-PA3AA55Q.js} +2 -2
  462. package/dist/{chunk-ZQL5RXVE.js.map → chunk-PA3AA55Q.js.map} +1 -1
  463. package/dist/{chunk-UFLTL2RJ.js → chunk-PH36XEB3.js} +2 -2
  464. package/dist/{chunk-4LQZH4PU.js → chunk-PMOEG36E.js} +2 -2
  465. package/dist/{chunk-KJK2Q35C.js → chunk-PPRV4LTM.js} +3 -3
  466. package/dist/{chunk-EXZSHZRS.js → chunk-PWZHCBG3.js} +3 -3
  467. package/dist/{chunk-EFVOT3G5.js → chunk-PZ7PU4AP.js} +2 -2
  468. package/dist/{chunk-YBTC4XNO.js → chunk-QA2ZGCRL.js} +5 -5
  469. package/dist/{chunk-2E2WOBID.js → chunk-QGFBIUOK.js} +5 -5
  470. package/dist/chunk-QGFBIUOK.js.map +1 -0
  471. package/dist/{chunk-7LIXQZBG.js → chunk-QI5CRSOW.js} +3 -3
  472. package/dist/{chunk-HAQMKV5P.js → chunk-QXSW3CNN.js} +15 -9
  473. package/dist/chunk-QXSW3CNN.js.map +1 -0
  474. package/dist/{chunk-LMXWI3DD.js → chunk-QYY37ECA.js} +5 -2
  475. package/dist/chunk-QYY37ECA.js.map +1 -0
  476. package/dist/{chunk-ROT57BP4.js → chunk-R2XVTUVR.js} +2 -2
  477. package/dist/{chunk-V74PXUQN.js → chunk-R6SN73RX.js} +12 -12
  478. package/dist/{chunk-VECWMANF.js → chunk-RDCHT2WN.js} +7 -4
  479. package/dist/chunk-RDCHT2WN.js.map +1 -0
  480. package/dist/{chunk-35ETD7ML.js → chunk-RIEV4VXF.js} +9 -5
  481. package/dist/chunk-RIEV4VXF.js.map +1 -0
  482. package/dist/{chunk-MVKYNDT2.js → chunk-RKROWJVF.js} +11 -9
  483. package/dist/chunk-RKROWJVF.js.map +1 -0
  484. package/dist/{chunk-NYZO3JNB.js → chunk-RXJQA3FQ.js} +2 -3
  485. package/dist/chunk-RXJQA3FQ.js.map +1 -0
  486. package/dist/{chunk-WPA26LXA.js → chunk-RZYSKQTS.js} +3 -3
  487. package/dist/{chunk-2UCLUDEB.js → chunk-SKT2V2OX.js} +4 -4
  488. package/dist/{chunk-EOW2ECB3.js → chunk-SNURSSTN.js} +2 -2
  489. package/dist/{chunk-TU3EGIKB.js → chunk-SSS64KYB.js} +3 -3
  490. package/dist/{chunk-L3B36HA5.js → chunk-SV6JGFHG.js} +10 -6
  491. package/dist/chunk-SV6JGFHG.js.map +1 -0
  492. package/dist/{chunk-CZBND7AY.js → chunk-T7DE44SP.js} +2 -2
  493. package/dist/{chunk-DHBYO7AO.js → chunk-TCV3N44E.js} +2 -2
  494. package/dist/{chunk-E6RYO4QZ.js → chunk-THMT3G3L.js} +21 -15
  495. package/dist/chunk-THMT3G3L.js.map +1 -0
  496. package/dist/{chunk-DB2ZFZVW.js → chunk-TKC6WHGB.js} +2 -2
  497. package/dist/{chunk-3CVTQZQJ.js → chunk-TNYKM4UU.js} +13 -9
  498. package/dist/chunk-TNYKM4UU.js.map +1 -0
  499. package/dist/{chunk-JCBIPBGZ.js → chunk-TU5A2CV7.js} +19 -12
  500. package/dist/chunk-TU5A2CV7.js.map +1 -0
  501. package/dist/{chunk-YESTO24O.js → chunk-TXEN3QJ4.js} +8 -3
  502. package/dist/chunk-TXEN3QJ4.js.map +1 -0
  503. package/dist/{chunk-3VMGE7CU.js → chunk-TZFBJ47T.js} +3 -3
  504. package/dist/chunk-TZFBJ47T.js.map +1 -0
  505. package/dist/{chunk-VFHGILXI.js → chunk-U3DBQXPI.js} +20 -17
  506. package/dist/chunk-U3DBQXPI.js.map +1 -0
  507. package/dist/{chunk-DVGBFT6O.js → chunk-UAVSBSV5.js} +2 -2
  508. package/dist/{chunk-ZAFFKQQU.js → chunk-UEVHI62V.js} +3 -3
  509. package/dist/{chunk-ADHMNIWS.js → chunk-UFJYJHQI.js} +3 -3
  510. package/dist/{chunk-V3LOHY4N.js → chunk-UFNIS7KC.js} +3 -3
  511. package/dist/chunk-UFNIS7KC.js.map +1 -0
  512. package/dist/{chunk-BNEWMFVB.js → chunk-UGGJ3KDT.js} +2 -2
  513. package/dist/{chunk-L4QCIUTJ.js → chunk-UMNXSQ7I.js} +3 -3
  514. package/dist/{chunk-L4QCIUTJ.js.map → chunk-UMNXSQ7I.js.map} +1 -1
  515. package/dist/{chunk-2CTTASUD.js → chunk-V5EWCJBT.js} +7 -4
  516. package/dist/chunk-V5EWCJBT.js.map +1 -0
  517. package/dist/{chunk-236V2GRH.js → chunk-VCBV5JM7.js} +49 -41
  518. package/dist/chunk-VCBV5JM7.js.map +1 -0
  519. package/dist/{chunk-KREWQAEV.js → chunk-VIRYHNEM.js} +2 -2
  520. package/dist/{chunk-PT2XADGH.js → chunk-VPRNKJHP.js} +9 -6
  521. package/dist/chunk-VPRNKJHP.js.map +1 -0
  522. package/dist/{chunk-JXUWWPZR.js → chunk-VQYR64QB.js} +14 -8
  523. package/dist/chunk-VQYR64QB.js.map +1 -0
  524. package/dist/{chunk-72DKEBJM.js → chunk-VRPREI27.js} +3 -3
  525. package/dist/chunk-VRPREI27.js.map +1 -0
  526. package/dist/{chunk-IBGX6H4J.js → chunk-VURQZBFH.js} +8 -4
  527. package/dist/chunk-VURQZBFH.js.map +1 -0
  528. package/dist/{chunk-7BZTZ2WG.js → chunk-VY2BMSHN.js} +8 -7
  529. package/dist/chunk-VY2BMSHN.js.map +1 -0
  530. package/dist/{chunk-SX3MEC3Q.js → chunk-VZIB5W5L.js} +2 -2
  531. package/dist/{chunk-HC5ZSCRG.js → chunk-W5TI46QN.js} +18 -14
  532. package/dist/chunk-W5TI46QN.js.map +1 -0
  533. package/dist/{chunk-N6CSXHFJ.js → chunk-WN5PNP6F.js} +2 -2
  534. package/dist/{chunk-SE6ERQY5.js → chunk-WVZBYTIK.js} +6 -2
  535. package/dist/chunk-WVZBYTIK.js.map +1 -0
  536. package/dist/{chunk-CSSCGM27.js → chunk-X3OWMTLO.js} +1 -2
  537. package/dist/chunk-X3OWMTLO.js.map +1 -0
  538. package/dist/{chunk-6QLPSMTA.js → chunk-XEWMY4ZM.js} +52 -47
  539. package/dist/chunk-XEWMY4ZM.js.map +1 -0
  540. package/dist/{chunk-FZ4YTEP2.js → chunk-XIG3DXXX.js} +3 -3
  541. package/dist/{chunk-CHFHILTM.js → chunk-XJJXBUPN.js} +2 -2
  542. package/dist/{chunk-CMK4DJDR.js → chunk-XLTHZI5W.js} +28 -20
  543. package/dist/chunk-XLTHZI5W.js.map +1 -0
  544. package/dist/{chunk-GHTBUJ6E.js → chunk-XRUW7DMH.js} +2 -2
  545. package/dist/{chunk-CSTAQX2B.js → chunk-XWZJLXJT.js} +7 -6
  546. package/dist/chunk-XWZJLXJT.js.map +1 -0
  547. package/dist/{chunk-MBC55H6M.js → chunk-Y5UTYBZW.js} +12 -6
  548. package/dist/chunk-Y5UTYBZW.js.map +1 -0
  549. package/dist/{chunk-DY4BP5WA.js → chunk-Y7F5JBAT.js} +5 -5
  550. package/dist/{chunk-CJHP6E34.js → chunk-YAFBUYVW.js} +9 -6
  551. package/dist/chunk-YAFBUYVW.js.map +1 -0
  552. package/dist/{chunk-WTOYEWW6.js → chunk-YBH4SPMM.js} +4 -3
  553. package/dist/chunk-YBH4SPMM.js.map +1 -0
  554. package/dist/{chunk-5QWQR7XT.js → chunk-YHGOPZXW.js} +11 -8
  555. package/dist/chunk-YHGOPZXW.js.map +1 -0
  556. package/dist/{chunk-6DN4ZULV.js → chunk-YOKUDQIJ.js} +1 -2
  557. package/dist/chunk-YOKUDQIJ.js.map +1 -0
  558. package/dist/{chunk-6BDYC4RA.js → chunk-YRSR5LVZ.js} +3 -3
  559. package/dist/{chunk-57JY4OI2.js → chunk-YUXDVW62.js} +3 -3
  560. package/dist/chunk-YUXDVW62.js.map +1 -0
  561. package/dist/{chunk-GE2EKMDT.js → chunk-YZ2DMP23.js} +4 -4
  562. package/dist/{chunk-GE2EKMDT.js.map → chunk-YZ2DMP23.js.map} +1 -1
  563. package/dist/{chunk-RNEYZTE4.js → chunk-Z6MCTGIK.js} +2 -2
  564. package/dist/{chunk-RNEYZTE4.js.map → chunk-Z6MCTGIK.js.map} +1 -1
  565. package/dist/{chunk-65CEXQ4L.js → chunk-Z6WSW6B4.js} +11 -7
  566. package/dist/chunk-Z6WSW6B4.js.map +1 -0
  567. package/dist/{chunk-TQBRWZA4.js → chunk-ZAY6OA6F.js} +2 -2
  568. package/dist/{chunk-XWWFBH2G.js → chunk-ZXSWXE6U.js} +8 -5
  569. package/dist/chunk-ZXSWXE6U.js.map +1 -0
  570. package/dist/data-display/AsyncStateContainer.js +4 -4
  571. package/dist/data-display/CardKit.js +5 -5
  572. package/dist/data-display/DataViews.js +82 -83
  573. package/dist/data-display/DescriptionItem.js +2 -2
  574. package/dist/data-display/FleetMap.js +6 -6
  575. package/dist/data-display/LazyImage.js +3 -3
  576. package/dist/data-display/LoadingState.js +3 -3
  577. package/dist/data-display/StatCard.js +3 -3
  578. package/dist/feedback/ConfirmAction.js +3 -3
  579. package/dist/feedback/Dialog.js +3 -3
  580. package/dist/feedback/Modal.js +3 -2
  581. package/dist/feedback/NotificationStatusNotice.js +3 -3
  582. package/dist/feedback/Sonner.js +2 -2
  583. package/dist/feedback/StackedModal.js +4 -3
  584. package/dist/feedback/Toast.js +2 -1
  585. package/dist/feedback/TutorialOverlay.js +5 -4
  586. package/dist/form/AddressAutocomplete.js +6 -6
  587. package/dist/form/Autocomplete.js +3 -2
  588. package/dist/form/Button.js +2 -2
  589. package/dist/form/CategorySelect.js +10 -10
  590. package/dist/form/CepField.js +4 -4
  591. package/dist/form/Checkbox.js +1 -1
  592. package/dist/form/CodeEditor.js +2 -2
  593. package/dist/form/Command.js +4 -4
  594. package/dist/form/CreatableSelect.js +2 -2
  595. package/dist/form/DateRangePicker.js +2 -2
  596. package/dist/form/Form.js +1 -1
  597. package/dist/form/HeaderActions.js +1 -1
  598. package/dist/form/Input.js +3 -2
  599. package/dist/form/InputOTP.js +2 -2
  600. package/dist/form/Label.js +2 -2
  601. package/dist/form/Menubar.js +4 -4
  602. package/dist/form/PasswordStrength.js +1 -1
  603. package/dist/form/PhoneInput.js +1 -1
  604. package/dist/form/RadioGroup.js +4 -4
  605. package/dist/form/RichTextEditor.js +2 -2
  606. package/dist/form/SearchPalette.js +2 -2
  607. package/dist/form/Select.js +2 -1
  608. package/dist/form/Slider.js +3 -3
  609. package/dist/form/Switch.js +4 -4
  610. package/dist/form/Textarea.js +2 -2
  611. package/dist/form/Toggle.js +2 -2
  612. package/dist/form/ToggleGroup.js +1 -1
  613. package/dist/form/UploadButton.js +2 -2
  614. package/dist/form/total-form.js +27 -27
  615. package/dist/layout/Accordion.js +3 -2
  616. package/dist/layout/Box.js +1 -1
  617. package/dist/layout/Card.js +3 -3
  618. package/dist/layout/Collapsible.js +3 -2
  619. package/dist/layout/ContentToolbar.js +7 -7
  620. package/dist/layout/Dashboard.js +3 -3
  621. package/dist/layout/Drawer.js +2 -1
  622. package/dist/layout/ScrollArea.js +5 -4
  623. package/dist/layout/Separator.js +4 -2
  624. package/dist/layout/SettingsLayout.js +8 -8
  625. package/dist/layout/Sidebar.js +2 -1
  626. package/dist/layout/Skeleton.js +3 -2
  627. package/dist/layout/Spacer.js +2 -1
  628. package/dist/layout/Stack.js +2 -2
  629. package/dist/layout/TableFilter.js +1 -1
  630. package/dist/navigation/AppHeader.js +8 -9
  631. package/dist/navigation/Breadcrumbs.js +3 -3
  632. package/dist/navigation/CommandPalette.js +3 -3
  633. package/dist/navigation/ContextMenu.js +1 -1
  634. package/dist/navigation/DropdownMenu.js +1 -1
  635. package/dist/navigation/NavigationMenu.js +6 -6
  636. package/dist/navigation/Pagination.js +3 -3
  637. package/dist/navigation/Tabs.js +10 -3
  638. package/dist/social-login-button.js +8 -9
  639. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  640. package/dist/types/components/feedback/Modal/Modal.d.ts.map +1 -1
  641. package/dist/types/components/feedback/Modal/Modal.styles.d.ts.map +1 -1
  642. package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
  643. package/dist/types/components/feedback/StackedModal/StackedModal.styles.d.ts.map +1 -1
  644. package/dist/types/components/feedback/Toast/Toast.d.ts.map +1 -1
  645. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
  646. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.geometry.d.ts +3 -1
  647. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.geometry.d.ts.map +1 -1
  648. package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.hooks.d.ts.map +1 -1
  649. package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
  650. package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts.map +1 -1
  651. package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts.map +1 -1
  652. package/dist/types/components/form/AddressAutocomplete/AddressSuggestionsPaper.d.ts.map +1 -1
  653. package/dist/types/components/form/AddressAutocomplete/AddressTextField.d.ts.map +1 -1
  654. package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
  655. package/dist/types/components/form/Button/Button.styles.d.ts +1 -1
  656. package/dist/types/components/form/Button/Button.styles.d.ts.map +1 -1
  657. package/dist/types/components/form/CategorySelect/CategoryPanelFoot.d.ts.map +1 -1
  658. package/dist/types/components/form/CategorySelect/CategoryPanelHead.d.ts.map +1 -1
  659. package/dist/types/components/form/CategorySelect/CategoryPanelList.d.ts.map +1 -1
  660. package/dist/types/components/form/CategorySelect/CategoryPanelSurface.d.ts.map +1 -1
  661. package/dist/types/components/form/CategorySelect/CategoryRows.d.ts.map +1 -1
  662. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts +26 -24
  663. package/dist/types/components/form/CategorySelect/CategorySelect.styles.d.ts.map +1 -1
  664. package/dist/types/components/form/CategorySelect/CategoryTrigger.d.ts.map +1 -1
  665. package/dist/types/components/form/Checkbox/Checkbox.d.ts.map +1 -1
  666. package/dist/types/components/form/CodeEditor/CodeEditor.helpers.d.ts +1 -1
  667. package/dist/types/components/form/CodeEditor/CodeEditor.helpers.d.ts.map +1 -1
  668. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts +1 -1
  669. package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts.map +1 -1
  670. package/dist/types/components/form/Command/Command.d.ts.map +1 -1
  671. package/dist/types/components/form/Command/Command.hooks.d.ts +1 -1
  672. package/dist/types/components/form/Command/Command.hooks.d.ts.map +1 -1
  673. package/dist/types/components/form/Command/Command.parts.d.ts.map +1 -1
  674. package/dist/types/components/form/CreatableSelect/CreatableSelect.d.ts.map +1 -1
  675. package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  676. package/dist/types/components/form/DateRangePicker/DateRangePickerQuickList.d.ts.map +1 -1
  677. package/dist/types/components/form/Form/Form.d.ts.map +1 -1
  678. package/dist/types/components/form/HeaderActions/HeaderActions.d.ts.map +1 -1
  679. package/dist/types/components/form/Input/Input.d.ts.map +1 -1
  680. package/dist/types/components/form/Input/Input.styles.d.ts.map +1 -1
  681. package/dist/types/components/form/Label/Label.styles.d.ts +2 -2
  682. package/dist/types/components/form/Label/Label.styles.d.ts.map +1 -1
  683. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts +1 -1
  684. package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts.map +1 -1
  685. package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
  686. package/dist/types/components/form/RadioGroup/RadioGroup.animations.d.ts +3 -2
  687. package/dist/types/components/form/RadioGroup/RadioGroup.animations.d.ts.map +1 -1
  688. package/dist/types/components/form/RadioGroup/RadioGroup.styles.d.ts.map +1 -1
  689. package/dist/types/components/form/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  690. package/dist/types/components/form/RichTextEditor/RichTextEditorToolbar.d.ts.map +1 -1
  691. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts +1 -1
  692. package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
  693. package/dist/types/components/form/Select/Select.d.ts.map +1 -1
  694. package/dist/types/components/form/Slider/Slider.animations.d.ts +2 -1
  695. package/dist/types/components/form/Slider/Slider.animations.d.ts.map +1 -1
  696. package/dist/types/components/form/Slider/Slider.styles.d.ts.map +1 -1
  697. package/dist/types/components/form/Switch/Switch.animations.d.ts +2 -1
  698. package/dist/types/components/form/Switch/Switch.animations.d.ts.map +1 -1
  699. package/dist/types/components/form/Switch/Switch.styles.d.ts.map +1 -1
  700. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  701. package/dist/types/components/form/Textarea/Textarea.styles.d.ts +1 -1
  702. package/dist/types/components/form/Textarea/Textarea.styles.d.ts.map +1 -1
  703. package/dist/types/components/form/Toggle/Toggle.d.ts.map +1 -1
  704. package/dist/types/components/form/Toggle/Toggle.styles.d.ts.map +1 -1
  705. package/dist/types/components/form/ToggleGroup/ToggleGroup.d.ts.map +1 -1
  706. package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
  707. package/dist/types/components/layout/Accordion/Accordion.d.ts.map +1 -1
  708. package/dist/types/components/layout/Accordion/Accordion.styles.d.ts.map +1 -1
  709. package/dist/types/components/layout/Box/Box.d.ts +2 -1
  710. package/dist/types/components/layout/Box/Box.d.ts.map +1 -1
  711. package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
  712. package/dist/types/components/layout/Collapsible/Collapsible.d.ts.map +1 -1
  713. package/dist/types/components/layout/Collapsible/Collapsible.helpers.d.ts +1 -1
  714. package/dist/types/components/layout/Collapsible/Collapsible.helpers.d.ts.map +1 -1
  715. package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
  716. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
  717. package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts +6 -0
  718. package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts.map +1 -1
  719. package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
  720. package/dist/types/components/layout/Separator/Separator.d.ts.map +1 -1
  721. package/dist/types/components/layout/Separator/Separator.styles.d.ts +7 -4
  722. package/dist/types/components/layout/Separator/Separator.styles.d.ts.map +1 -1
  723. package/dist/types/components/layout/SettingsLayout/SettingsLayout.items.d.ts.map +1 -1
  724. package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts.map +1 -1
  725. package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts +4 -4
  726. package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts.map +1 -1
  727. package/dist/types/components/layout/Sidebar/Sidebar.d.ts.map +1 -1
  728. package/dist/types/components/layout/Skeleton/Skeleton.d.ts.map +1 -1
  729. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts +8 -1
  730. package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
  731. package/dist/types/components/layout/Spacer/Spacer.d.ts.map +1 -1
  732. package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
  733. package/dist/types/components/navigation/AppHeader/AppHeader.d.ts.map +1 -1
  734. package/dist/types/components/navigation/AppHeader/AppHeader.details.d.ts.map +1 -1
  735. package/dist/types/components/navigation/AppHeader/AppHeader.identity.d.ts.map +1 -1
  736. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts +2 -2
  737. package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts.map +1 -1
  738. package/dist/types/components/navigation/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  739. package/dist/types/components/navigation/NavigationMenu/NavigationMegaSection.d.ts.map +1 -1
  740. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.d.ts.map +1 -1
  741. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
  742. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts +2 -2
  743. package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts.map +1 -1
  744. package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts.map +1 -1
  745. package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
  746. package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
  747. package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
  748. package/dist/types/components/navigation/Tabs/Tabs.styles.d.ts.map +1 -1
  749. package/dist/types/components/navigation/Tabs/TabsPanel.d.ts.map +1 -1
  750. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.animations.d.ts +9 -8
  751. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.animations.d.ts.map +1 -1
  752. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts +1 -1
  753. package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts.map +1 -1
  754. package/dist/types/components/utility/AspectRatio/AspectRatio.d.ts.map +1 -1
  755. package/dist/types/social-login-button/social-login-button.d.ts.map +1 -1
  756. package/dist/typography/Blockquote.js +1 -1
  757. package/dist/typography/Code.js +1 -1
  758. package/dist/typography/Text.js +1 -1
  759. package/dist/user-avatar.js +6 -7
  760. package/dist/utility/AnimatedIcon.js +3 -3
  761. package/dist/utility/AspectRatio.js +2 -1
  762. package/dist/utility/WorkflowStep.js +3 -3
  763. package/package.json +1 -1
  764. package/src/components/feedback/Dialog/Dialog.styles.ts +16 -28
  765. package/src/components/feedback/Modal/Modal.styles.ts +9 -8
  766. package/src/components/feedback/Modal/Modal.tsx +3 -2
  767. package/src/components/feedback/Sonner/Sonner.tsx +4 -4
  768. package/src/components/feedback/Sonner/SonnerToast.tsx +9 -9
  769. package/src/components/feedback/StackedModal/StackedModal.parts.tsx +26 -19
  770. package/src/components/feedback/StackedModal/StackedModal.styles.ts +11 -9
  771. package/src/components/feedback/Toast/Toast.tsx +11 -7
  772. package/src/components/feedback/TutorialOverlay/TutorialOverlay.geometry.ts +2 -3
  773. package/src/components/feedback/TutorialOverlay/TutorialOverlay.hooks.ts +6 -1
  774. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +43 -37
  775. package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +3 -2
  776. package/src/components/form/AddressAutocomplete/AddressFallbackField.tsx +5 -1
  777. package/src/components/form/AddressAutocomplete/AddressInputField.tsx +36 -29
  778. package/src/components/form/AddressAutocomplete/AddressSuggestionsPaper.tsx +4 -2
  779. package/src/components/form/AddressAutocomplete/AddressTextField.tsx +4 -3
  780. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +10 -7
  781. package/src/components/form/Button/Button.styles.ts +28 -25
  782. package/src/components/form/Button/Button.tsx +2 -2
  783. package/src/components/form/CategorySelect/CategoryPanelFoot.tsx +5 -4
  784. package/src/components/form/CategorySelect/CategoryPanelHead.tsx +13 -12
  785. package/src/components/form/CategorySelect/CategoryPanelList.tsx +3 -2
  786. package/src/components/form/CategorySelect/CategoryPanelSurface.tsx +2 -1
  787. package/src/components/form/CategorySelect/CategoryRows.tsx +4 -3
  788. package/src/components/form/CategorySelect/CategorySelect.styles.ts +98 -96
  789. package/src/components/form/CategorySelect/CategoryTrigger.tsx +5 -2
  790. package/src/components/form/Checkbox/Checkbox.tsx +21 -15
  791. package/src/components/form/CodeEditor/CodeEditor.helpers.ts +0 -2
  792. package/src/components/form/CodeEditor/CodeEditor.md +1 -1
  793. package/src/components/form/CodeEditor/CodeEditor.tsx +5 -5
  794. package/src/components/form/CodeEditor/CodeEditor.types.ts +1 -1
  795. package/src/components/form/Command/Command.hooks.ts +0 -2
  796. package/src/components/form/Command/Command.parts.tsx +7 -2
  797. package/src/components/form/Command/Command.styles.ts +11 -11
  798. package/src/components/form/Command/Command.tsx +14 -5
  799. package/src/components/form/CreatableSelect/CreatableSelect.tsx +12 -8
  800. package/src/components/form/DateRangePicker/DateRangePicker.tsx +10 -8
  801. package/src/components/form/DateRangePicker/DateRangePickerQuickList.tsx +8 -4
  802. package/src/components/form/Form/Form.tsx +6 -10
  803. package/src/components/form/HeaderActions/HeaderActions.tsx +2 -1
  804. package/src/components/form/Input/Input.styles.ts +17 -16
  805. package/src/components/form/Input/Input.tsx +4 -2
  806. package/src/components/form/InputOTP/InputOTP.styles.ts +3 -3
  807. package/src/components/form/Label/Label.styles.ts +8 -8
  808. package/src/components/form/Menubar/Menubar.item.tsx +2 -2
  809. package/src/components/form/Menubar/Menubar.styles.ts +13 -13
  810. package/src/components/form/Menubar/Menubar.toolbar.tsx +4 -2
  811. package/src/components/form/PasswordStrength/PasswordStrength.tsx +19 -18
  812. package/src/components/form/PhoneInput/PhoneInput.tsx +9 -9
  813. package/src/components/form/RadioGroup/RadioGroup.animations.ts +9 -6
  814. package/src/components/form/RadioGroup/RadioGroup.styles.ts +45 -43
  815. package/src/components/form/RichTextEditor/RichTextEditor.tsx +7 -6
  816. package/src/components/form/RichTextEditor/RichTextEditorToolbar.tsx +3 -1
  817. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +8 -6
  818. package/src/components/form/Select/Select.tsx +14 -12
  819. package/src/components/form/Slider/Slider.animations.ts +7 -4
  820. package/src/components/form/Slider/Slider.styles.ts +43 -42
  821. package/src/components/form/Switch/Switch.animations.ts +7 -4
  822. package/src/components/form/Switch/Switch.parts.tsx +2 -2
  823. package/src/components/form/Switch/Switch.styles.ts +26 -22
  824. package/src/components/form/Textarea/Textarea.styles.ts +13 -12
  825. package/src/components/form/Textarea/Textarea.tsx +28 -22
  826. package/src/components/form/Textarea/TextareaRichEditor.tsx +10 -10
  827. package/src/components/form/Toggle/Toggle.styles.ts +29 -26
  828. package/src/components/form/Toggle/Toggle.tsx +5 -2
  829. package/src/components/form/ToggleGroup/ToggleGroup.tsx +18 -15
  830. package/src/components/form/UploadButton/UploadButton.parts.tsx +6 -5
  831. package/src/components/layout/Accordion/Accordion.styles.ts +8 -6
  832. package/src/components/layout/Accordion/Accordion.tsx +10 -8
  833. package/src/components/layout/Box/Box.tsx +18 -5
  834. package/src/components/layout/Card/Card.styles.ts +22 -30
  835. package/src/components/layout/Collapsible/Collapsible.helpers.ts +4 -2
  836. package/src/components/layout/Collapsible/Collapsible.tsx +8 -4
  837. package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +1 -1
  838. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +2 -2
  839. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +2 -2
  840. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +1 -1
  841. package/src/components/layout/ContentToolbar/SavedViewsMenu.tsx +2 -2
  842. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +2 -2
  843. package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -2
  844. package/src/components/layout/Dashboard/Dashboard.tsx +1 -1
  845. package/src/components/layout/Dashboard/DashboardParts.tsx +1 -1
  846. package/src/components/layout/Drawer/Drawer.tsx +23 -10
  847. package/src/components/layout/ScrollArea/ScrollArea.styles.ts +45 -32
  848. package/src/components/layout/ScrollArea/ScrollArea.tsx +31 -16
  849. package/src/components/layout/ScrollArea/ScrollAreaContent.tsx +2 -2
  850. package/src/components/layout/ScrollArea/ScrollViewport.tsx +6 -4
  851. package/src/components/layout/Separator/Separator.styles.ts +30 -9
  852. package/src/components/layout/Separator/Separator.tsx +4 -3
  853. package/src/components/layout/SettingsLayout/SettingsLayout.items.tsx +4 -2
  854. package/src/components/layout/SettingsLayout/SettingsLayout.rail.tsx +6 -5
  855. package/src/components/layout/SettingsLayout/SettingsLayout.styles.ts +9 -7
  856. package/src/components/layout/SettingsLayout/SettingsLayout.tsx +2 -2
  857. package/src/components/layout/SettingsLayout/SettingsPanel.tsx +1 -1
  858. package/src/components/layout/SettingsLayout/SettingsSectionChips.tsx +3 -3
  859. package/src/components/layout/SettingsLayout/SettingsSectionHeader.tsx +3 -3
  860. package/src/components/layout/SettingsLayout/SettingsStatusMarker.tsx +2 -2
  861. package/src/components/layout/Sidebar/Sidebar.tsx +16 -6
  862. package/src/components/layout/Skeleton/Skeleton.styles.ts +13 -3
  863. package/src/components/layout/Skeleton/Skeleton.tsx +6 -4
  864. package/src/components/layout/Spacer/Spacer.tsx +16 -1
  865. package/src/components/layout/TableFilter/TableFilter.tsx +2 -1
  866. package/src/components/navigation/AppHeader/AppHeader.brand.tsx +2 -2
  867. package/src/components/navigation/AppHeader/AppHeader.details.tsx +9 -7
  868. package/src/components/navigation/AppHeader/AppHeader.identity.tsx +28 -15
  869. package/src/components/navigation/AppHeader/AppHeader.tsx +18 -6
  870. package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +4 -4
  871. package/src/components/navigation/Breadcrumbs/Breadcrumbs.styles.tsx +15 -15
  872. package/src/components/navigation/CommandPalette/CommandPalette.tsx +7 -7
  873. package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -5
  874. package/src/components/navigation/CommandPalette/ShortcutChip.tsx +1 -1
  875. package/src/components/navigation/ContextMenu/ContextMenu.tsx +8 -8
  876. package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +25 -16
  877. package/src/components/navigation/NavigationMenu/NavigationMegaSection.tsx +5 -4
  878. package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +22 -20
  879. package/src/components/navigation/NavigationMenu/NavigationMenu.styles.ts +11 -11
  880. package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +7 -2
  881. package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +12 -12
  882. package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +3 -2
  883. package/src/components/navigation/Pagination/Pagination.styles.ts +18 -18
  884. package/src/components/navigation/Pagination/Pagination.tsx +2 -1
  885. package/src/components/navigation/Pagination/PaginationParts.tsx +4 -3
  886. package/src/components/navigation/Tabs/Tabs.styles.ts +14 -12
  887. package/src/components/navigation/Tabs/Tabs.tsx +11 -9
  888. package/src/components/navigation/Tabs/TabsPanel.tsx +10 -3
  889. package/src/components/typography/Blockquote/Blockquote.tsx +8 -8
  890. package/src/components/typography/Code/Code.tsx +17 -17
  891. package/src/components/typography/Text/Text.tsx +2 -2
  892. package/src/components/utility/AnimatedIcon/AnimatedIcon.animations.ts +38 -35
  893. package/src/components/utility/AnimatedIcon/AnimatedIcon.styles.ts +51 -46
  894. package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +1 -1
  895. package/src/components/utility/AspectRatio/AspectRatio.tsx +13 -2
  896. package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +7 -7
  897. package/src/social-login-button/social-login-button.tsx +25 -8
  898. package/dist/chunk-236V2GRH.js.map +0 -1
  899. package/dist/chunk-2CTTASUD.js.map +0 -1
  900. package/dist/chunk-2E2WOBID.js.map +0 -1
  901. package/dist/chunk-2HVNPWFV.js.map +0 -1
  902. package/dist/chunk-2NLYGZP3.js.map +0 -1
  903. package/dist/chunk-2PBT2HQH.js.map +0 -1
  904. package/dist/chunk-35ETD7ML.js.map +0 -1
  905. package/dist/chunk-3A22SBIU.js.map +0 -1
  906. package/dist/chunk-3CVTQZQJ.js.map +0 -1
  907. package/dist/chunk-3D6HXKZM.js.map +0 -1
  908. package/dist/chunk-3T5Z5HXF.js.map +0 -1
  909. package/dist/chunk-3VMGE7CU.js.map +0 -1
  910. package/dist/chunk-4GYEIWQP.js.map +0 -1
  911. package/dist/chunk-4OEKIFBC.js.map +0 -1
  912. package/dist/chunk-57JY4OI2.js.map +0 -1
  913. package/dist/chunk-5CKDRLRN.js.map +0 -1
  914. package/dist/chunk-5IXHJXJX.js.map +0 -1
  915. package/dist/chunk-5QWQR7XT.js.map +0 -1
  916. package/dist/chunk-5SJWDABY.js.map +0 -1
  917. package/dist/chunk-5W4BLTDI.js.map +0 -1
  918. package/dist/chunk-65CEXQ4L.js.map +0 -1
  919. package/dist/chunk-6CTPDNNX.js.map +0 -1
  920. package/dist/chunk-6DN4ZULV.js.map +0 -1
  921. package/dist/chunk-6GRZ77IS.js.map +0 -1
  922. package/dist/chunk-6M33XQLZ.js +0 -70
  923. package/dist/chunk-6M33XQLZ.js.map +0 -1
  924. package/dist/chunk-6QLPSMTA.js.map +0 -1
  925. package/dist/chunk-6SKXV236.js.map +0 -1
  926. package/dist/chunk-72DKEBJM.js.map +0 -1
  927. package/dist/chunk-73BEVJCS.js +0 -28
  928. package/dist/chunk-73BEVJCS.js.map +0 -1
  929. package/dist/chunk-7BZTZ2WG.js.map +0 -1
  930. package/dist/chunk-7DN4UXJ3.js.map +0 -1
  931. package/dist/chunk-7EQCZO56.js.map +0 -1
  932. package/dist/chunk-7F7TTOYN.js.map +0 -1
  933. package/dist/chunk-7UZ2TFIK.js.map +0 -1
  934. package/dist/chunk-AMTFP7QA.js.map +0 -1
  935. package/dist/chunk-B76QCDCE.js.map +0 -1
  936. package/dist/chunk-BLJDCMFU.js.map +0 -1
  937. package/dist/chunk-BXAL7OIS.js.map +0 -1
  938. package/dist/chunk-CAHWCSRE.js.map +0 -1
  939. package/dist/chunk-CJHP6E34.js.map +0 -1
  940. package/dist/chunk-CMK4DJDR.js.map +0 -1
  941. package/dist/chunk-CPTY6UZ6.js.map +0 -1
  942. package/dist/chunk-CSSCGM27.js.map +0 -1
  943. package/dist/chunk-CSTAQX2B.js.map +0 -1
  944. package/dist/chunk-CWDV64TD.js.map +0 -1
  945. package/dist/chunk-D2HKCPEH.js.map +0 -1
  946. package/dist/chunk-DYVAOEW4.js.map +0 -1
  947. package/dist/chunk-E6RYO4QZ.js.map +0 -1
  948. package/dist/chunk-E7MSDXED.js.map +0 -1
  949. package/dist/chunk-EFHIMCJN.js.map +0 -1
  950. package/dist/chunk-EFV5QJNM.js.map +0 -1
  951. package/dist/chunk-EL7CMURV.js.map +0 -1
  952. package/dist/chunk-FYTLKHEN.js.map +0 -1
  953. package/dist/chunk-GUW5BUK7.js.map +0 -1
  954. package/dist/chunk-HAQMKV5P.js.map +0 -1
  955. package/dist/chunk-HB7ISSLK.js.map +0 -1
  956. package/dist/chunk-HBICO6AX.js.map +0 -1
  957. package/dist/chunk-HC5ZSCRG.js.map +0 -1
  958. package/dist/chunk-HXEBKOSM.js.map +0 -1
  959. package/dist/chunk-I62ALI7F.js.map +0 -1
  960. package/dist/chunk-IBGX6H4J.js.map +0 -1
  961. package/dist/chunk-IVIHRZEY.js.map +0 -1
  962. package/dist/chunk-IYTBTK2M.js.map +0 -1
  963. package/dist/chunk-J4NXTSJY.js.map +0 -1
  964. package/dist/chunk-JCBIPBGZ.js.map +0 -1
  965. package/dist/chunk-JXUWWPZR.js.map +0 -1
  966. package/dist/chunk-K7WSPGI7.js.map +0 -1
  967. package/dist/chunk-KH25WUSX.js.map +0 -1
  968. package/dist/chunk-KLWW67WP.js.map +0 -1
  969. package/dist/chunk-L3B36HA5.js.map +0 -1
  970. package/dist/chunk-L7SFH3ED.js.map +0 -1
  971. package/dist/chunk-LIG7TKIB.js.map +0 -1
  972. package/dist/chunk-LMXWI3DD.js.map +0 -1
  973. package/dist/chunk-LVEG6XQL.js.map +0 -1
  974. package/dist/chunk-LWRI6HGT.js.map +0 -1
  975. package/dist/chunk-MBC55H6M.js.map +0 -1
  976. package/dist/chunk-MBSYD3ZU.js.map +0 -1
  977. package/dist/chunk-MJ3BVWPZ.js.map +0 -1
  978. package/dist/chunk-MK4CH4VT.js.map +0 -1
  979. package/dist/chunk-MP4VSWHK.js.map +0 -1
  980. package/dist/chunk-MVKYNDT2.js.map +0 -1
  981. package/dist/chunk-MVXFMIVZ.js.map +0 -1
  982. package/dist/chunk-N52O2OKZ.js.map +0 -1
  983. package/dist/chunk-NEGCJNGJ.js.map +0 -1
  984. package/dist/chunk-NSJVQ5YJ.js.map +0 -1
  985. package/dist/chunk-NYZO3JNB.js.map +0 -1
  986. package/dist/chunk-OATHOXIU.js.map +0 -1
  987. package/dist/chunk-OWA7GPWR.js.map +0 -1
  988. package/dist/chunk-PMP6WJJS.js.map +0 -1
  989. package/dist/chunk-PT2XADGH.js.map +0 -1
  990. package/dist/chunk-PYIASGI7.js.map +0 -1
  991. package/dist/chunk-Q4BQYYPU.js.map +0 -1
  992. package/dist/chunk-Q4CAZ2TP.js.map +0 -1
  993. package/dist/chunk-QAP3FW33.js.map +0 -1
  994. package/dist/chunk-QY4XNTNG.js.map +0 -1
  995. package/dist/chunk-RQ5HZDBV.js.map +0 -1
  996. package/dist/chunk-RSQMPCCR.js.map +0 -1
  997. package/dist/chunk-RWTFZ7J5.js.map +0 -1
  998. package/dist/chunk-SE6ERQY5.js.map +0 -1
  999. package/dist/chunk-ST4YYVUK.js.map +0 -1
  1000. package/dist/chunk-T3WHW7ZC.js.map +0 -1
  1001. package/dist/chunk-TBF2CPJW.js.map +0 -1
  1002. package/dist/chunk-TOXTJ7MU.js.map +0 -1
  1003. package/dist/chunk-TQ2557I5.js.map +0 -1
  1004. package/dist/chunk-TTAP5XFX.js.map +0 -1
  1005. package/dist/chunk-TVL5V2JK.js.map +0 -1
  1006. package/dist/chunk-U342T7ZR.js.map +0 -1
  1007. package/dist/chunk-U4H6MGVE.js.map +0 -1
  1008. package/dist/chunk-UUUMNJPP.js.map +0 -1
  1009. package/dist/chunk-V3LOHY4N.js.map +0 -1
  1010. package/dist/chunk-VECWMANF.js.map +0 -1
  1011. package/dist/chunk-VFHGILXI.js.map +0 -1
  1012. package/dist/chunk-VRDNUY4H.js.map +0 -1
  1013. package/dist/chunk-WNUZK7NS.js.map +0 -1
  1014. package/dist/chunk-WTOYEWW6.js.map +0 -1
  1015. package/dist/chunk-WUTHROII.js.map +0 -1
  1016. package/dist/chunk-WVC3BG6J.js.map +0 -1
  1017. package/dist/chunk-XLYFOBBT.js.map +0 -1
  1018. package/dist/chunk-XWWFBH2G.js.map +0 -1
  1019. package/dist/chunk-YESTO24O.js.map +0 -1
  1020. package/dist/chunk-YH37X6JT.js.map +0 -1
  1021. package/dist/chunk-YVUD3MY4.js.map +0 -1
  1022. package/dist/chunk-ZTYUKEN3.js.map +0 -1
  1023. /package/dist/{chunk-PNLM35GU.js.map → chunk-2JNHWKQK.js.map} +0 -0
  1024. /package/dist/{chunk-PWF32ILG.js.map → chunk-2OYFTSG4.js.map} +0 -0
  1025. /package/dist/{chunk-CRZXSZ5O.js.map → chunk-2S752BIJ.js.map} +0 -0
  1026. /package/dist/{chunk-IWOVENC3.js.map → chunk-2XX45PC5.js.map} +0 -0
  1027. /package/dist/{chunk-ZW5K4XCQ.js.map → chunk-34BZXJGT.js.map} +0 -0
  1028. /package/dist/{chunk-KCAW6HRO.js.map → chunk-3AOQBR7N.js.map} +0 -0
  1029. /package/dist/{chunk-JFBEZXNL.js.map → chunk-3KREF4ZF.js.map} +0 -0
  1030. /package/dist/{chunk-SQYC57ZN.js.map → chunk-3RMDIO4G.js.map} +0 -0
  1031. /package/dist/{chunk-IL7JZKXY.js.map → chunk-442FSG7G.js.map} +0 -0
  1032. /package/dist/{chunk-GVLZZCSX.js.map → chunk-4B5XUQQS.js.map} +0 -0
  1033. /package/dist/{chunk-SN2YMCTL.js.map → chunk-4GWHYLEB.js.map} +0 -0
  1034. /package/dist/{chunk-ZZM3DOEK.js.map → chunk-5HDYTTE7.js.map} +0 -0
  1035. /package/dist/{chunk-E7T3A4IR.js.map → chunk-5JCGBCFJ.js.map} +0 -0
  1036. /package/dist/{chunk-GEXM6DNR.js.map → chunk-5KGABAQB.js.map} +0 -0
  1037. /package/dist/{chunk-FC7NQ6XM.js.map → chunk-5MW7OYBM.js.map} +0 -0
  1038. /package/dist/{chunk-5TJRJSJY.js.map → chunk-5OBXEMQO.js.map} +0 -0
  1039. /package/dist/{chunk-D5X4FRYX.js.map → chunk-6JNQLW5L.js.map} +0 -0
  1040. /package/dist/{chunk-RKI3MRKX.js.map → chunk-6N4AA2Y7.js.map} +0 -0
  1041. /package/dist/{chunk-7EIOXZWL.js.map → chunk-74P3YX7R.js.map} +0 -0
  1042. /package/dist/{chunk-A6AKFPIQ.js.map → chunk-7EH4D6FU.js.map} +0 -0
  1043. /package/dist/{chunk-7ZG7T2YN.js.map → chunk-7GHYCQCJ.js.map} +0 -0
  1044. /package/dist/{chunk-4WQ3YXQL.js.map → chunk-BFMDA6UO.js.map} +0 -0
  1045. /package/dist/{chunk-R75DZ3AK.js.map → chunk-BVLMKSHX.js.map} +0 -0
  1046. /package/dist/{chunk-B7BNNSM2.js.map → chunk-CNQUCNEA.js.map} +0 -0
  1047. /package/dist/{chunk-GGWICBJD.js.map → chunk-CPAJYJUD.js.map} +0 -0
  1048. /package/dist/{chunk-DMWSXWCZ.js.map → chunk-CZIX4BW2.js.map} +0 -0
  1049. /package/dist/{chunk-SYVNWXVW.js.map → chunk-DUBTI4DI.js.map} +0 -0
  1050. /package/dist/{chunk-RMCNEKBZ.js.map → chunk-DW6F7354.js.map} +0 -0
  1051. /package/dist/{chunk-XJUEHG72.js.map → chunk-EERUSI52.js.map} +0 -0
  1052. /package/dist/{chunk-FXNYV5Z6.js.map → chunk-F6D6HXZU.js.map} +0 -0
  1053. /package/dist/{chunk-UL7L6MFT.js.map → chunk-FFCJ7NR2.js.map} +0 -0
  1054. /package/dist/{chunk-GXCOXJS3.js.map → chunk-FNG33MKA.js.map} +0 -0
  1055. /package/dist/{chunk-4CTLEUK3.js.map → chunk-GLFTIGOF.js.map} +0 -0
  1056. /package/dist/{chunk-6SS5C74Q.js.map → chunk-GS3RP2QE.js.map} +0 -0
  1057. /package/dist/{chunk-L4UP5VYS.js.map → chunk-GVH7C2PT.js.map} +0 -0
  1058. /package/dist/{chunk-B2VXP2B2.js.map → chunk-GZT7MLLO.js.map} +0 -0
  1059. /package/dist/{chunk-AK2HOD6B.js.map → chunk-H5BEWPEY.js.map} +0 -0
  1060. /package/dist/{chunk-QIKPGMMO.js.map → chunk-H67EL3CG.js.map} +0 -0
  1061. /package/dist/{chunk-JJSZP3TW.js.map → chunk-I4QA2F4L.js.map} +0 -0
  1062. /package/dist/{chunk-AJ5SDHX5.js.map → chunk-JCL7WK4G.js.map} +0 -0
  1063. /package/dist/{chunk-ZMC3N23A.js.map → chunk-JSD5TFDK.js.map} +0 -0
  1064. /package/dist/{chunk-NE6XUN5Z.js.map → chunk-JU4MSYYH.js.map} +0 -0
  1065. /package/dist/{chunk-X2AKLDPW.js.map → chunk-KE473LK6.js.map} +0 -0
  1066. /package/dist/{chunk-5UTAEHSB.js.map → chunk-L7NQCLFU.js.map} +0 -0
  1067. /package/dist/{chunk-RZ2C5CAW.js.map → chunk-M2JTIH5M.js.map} +0 -0
  1068. /package/dist/{chunk-6KL2CJBO.js.map → chunk-MNHIK2OR.js.map} +0 -0
  1069. /package/dist/{chunk-343OLRFT.js.map → chunk-MR2HKBHS.js.map} +0 -0
  1070. /package/dist/{chunk-JFEEV3XI.js.map → chunk-NB3FGWU4.js.map} +0 -0
  1071. /package/dist/{chunk-KK57AHWS.js.map → chunk-OAEYCKBN.js.map} +0 -0
  1072. /package/dist/{chunk-JGRE56GQ.js.map → chunk-OB56SZGL.js.map} +0 -0
  1073. /package/dist/{chunk-E4TNDTWV.js.map → chunk-OL2BEJZR.js.map} +0 -0
  1074. /package/dist/{chunk-DZNMS2SH.js.map → chunk-OS6KPL4D.js.map} +0 -0
  1075. /package/dist/{chunk-UFLTL2RJ.js.map → chunk-PH36XEB3.js.map} +0 -0
  1076. /package/dist/{chunk-4LQZH4PU.js.map → chunk-PMOEG36E.js.map} +0 -0
  1077. /package/dist/{chunk-KJK2Q35C.js.map → chunk-PPRV4LTM.js.map} +0 -0
  1078. /package/dist/{chunk-EXZSHZRS.js.map → chunk-PWZHCBG3.js.map} +0 -0
  1079. /package/dist/{chunk-EFVOT3G5.js.map → chunk-PZ7PU4AP.js.map} +0 -0
  1080. /package/dist/{chunk-YBTC4XNO.js.map → chunk-QA2ZGCRL.js.map} +0 -0
  1081. /package/dist/{chunk-7LIXQZBG.js.map → chunk-QI5CRSOW.js.map} +0 -0
  1082. /package/dist/{chunk-ROT57BP4.js.map → chunk-R2XVTUVR.js.map} +0 -0
  1083. /package/dist/{chunk-V74PXUQN.js.map → chunk-R6SN73RX.js.map} +0 -0
  1084. /package/dist/{chunk-WPA26LXA.js.map → chunk-RZYSKQTS.js.map} +0 -0
  1085. /package/dist/{chunk-2UCLUDEB.js.map → chunk-SKT2V2OX.js.map} +0 -0
  1086. /package/dist/{chunk-EOW2ECB3.js.map → chunk-SNURSSTN.js.map} +0 -0
  1087. /package/dist/{chunk-TU3EGIKB.js.map → chunk-SSS64KYB.js.map} +0 -0
  1088. /package/dist/{chunk-CZBND7AY.js.map → chunk-T7DE44SP.js.map} +0 -0
  1089. /package/dist/{chunk-DHBYO7AO.js.map → chunk-TCV3N44E.js.map} +0 -0
  1090. /package/dist/{chunk-DB2ZFZVW.js.map → chunk-TKC6WHGB.js.map} +0 -0
  1091. /package/dist/{chunk-DVGBFT6O.js.map → chunk-UAVSBSV5.js.map} +0 -0
  1092. /package/dist/{chunk-ZAFFKQQU.js.map → chunk-UEVHI62V.js.map} +0 -0
  1093. /package/dist/{chunk-ADHMNIWS.js.map → chunk-UFJYJHQI.js.map} +0 -0
  1094. /package/dist/{chunk-BNEWMFVB.js.map → chunk-UGGJ3KDT.js.map} +0 -0
  1095. /package/dist/{chunk-KREWQAEV.js.map → chunk-VIRYHNEM.js.map} +0 -0
  1096. /package/dist/{chunk-SX3MEC3Q.js.map → chunk-VZIB5W5L.js.map} +0 -0
  1097. /package/dist/{chunk-N6CSXHFJ.js.map → chunk-WN5PNP6F.js.map} +0 -0
  1098. /package/dist/{chunk-FZ4YTEP2.js.map → chunk-XIG3DXXX.js.map} +0 -0
  1099. /package/dist/{chunk-CHFHILTM.js.map → chunk-XJJXBUPN.js.map} +0 -0
  1100. /package/dist/{chunk-GHTBUJ6E.js.map → chunk-XRUW7DMH.js.map} +0 -0
  1101. /package/dist/{chunk-DY4BP5WA.js.map → chunk-Y7F5JBAT.js.map} +0 -0
  1102. /package/dist/{chunk-6BDYC4RA.js.map → chunk-YRSR5LVZ.js.map} +0 -0
  1103. /package/dist/{chunk-TQBRWZA4.js.map → chunk-ZAY6OA6F.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/feedback/StackedModal/StackedModal.parts.tsx"],"sourcesContent":["import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport DialogActions from '@mui/material/DialogActions/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport DialogTitle from '@mui/material/DialogTitle/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Skeleton from '@mui/material/Skeleton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport type { FC, ReactNode } from 'react';\nimport React from 'react';\nimport { safeAreaBottom } from '../../../utils/viewport';\nimport {\n loadingOverlayStyles,\n modalContentStyles,\n titleLeftStyles,\n titleRightStyles,\n titleStyles,\n} from './StackedModal.styles';\n\nconst StyledDialogTitle = styled(DialogTitle, {\n shouldForwardProp: (prop) => prop !== 'rtl',\n})<{ rtl?: boolean }>(({ theme, rtl }) => titleStyles(theme, rtl));\n\nconst DialogTitleLeft = styled(Box)(({ theme }) => titleLeftStyles(theme));\nconst DialogTitleRight = styled(Box)(({ theme }) => titleRightStyles(theme));\nconst LoadingOverlay = styled(Box)(({ theme }) => loadingOverlayStyles(theme));\n\n/**\n * The padded content wrapper callers put inside a StackedModal. The explicit\n * `typeof DialogContent` annotation keeps its type nameable across package\n * boundaries (TS2742) now that it is re-exported from the barrel.\n */\nexport const StackedModalContent: typeof DialogContent = styled(DialogContent)(({ theme }) =>\n modalContentStyles(theme),\n) as typeof DialogContent;\n\n/** Sub-element test IDs derive from the modal's own, or stay off when it has none. */\nexport const testId = (base: string | undefined, suffix: string): string | undefined =>\n base ? `${base}-${suffix}` : undefined;\n\n/**\n * A wrapper marking the subtree that should render as modal actions — the\n * StackedModal pulls it out of `children` and places it by device.\n */\nexport const StackedModalActions: FC<{ children?: ReactNode }> = ({ children }) => <>{children}</>;\n\n/** Separates the `StackedModalActions` subtree from the rest of the content. */\nconst splitModalChildren = (children: ReactNode): { content: ReactNode; actions: ReactNode } => {\n let actions: ReactNode = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement<{ children?: ReactNode }>(child) && child.type === StackedModalActions) {\n actions = child.props.children;\n }\n });\n\n const content = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === StackedModalActions),\n );\n\n return { content, actions };\n};\n\n/**\n * Works out what renders where: a `StackedModalActions` child wins over the\n * `actions` prop, and on phones those actions move out of the header into a\n * pinned bottom bar.\n */\nexport const resolveModalContent = (\n children: ReactNode,\n actions: ReactNode,\n isMobile: boolean,\n): {\n content: ReactNode;\n modalActions: ReactNode;\n headerActions: ReactNode;\n hasMobileActions: boolean;\n} => {\n const { content, actions: childActions } = splitModalChildren(children);\n const modalActions = childActions ?? actions;\n return {\n content,\n modalActions,\n headerActions: isMobile ? null : modalActions,\n hasMobileActions: Boolean(isMobile && modalActions),\n };\n};\n\n/** The panel's own ARIA ids, unless the caller wired it to its own labels. */\nexport const modalAriaIds = (\n modalId: string,\n ariaLabelledBy?: string,\n ariaDescribedBy?: string,\n): { titleId: string; descId: string } => ({\n titleId: ariaLabelledBy || `modal-title-${modalId}`,\n descId: ariaDescribedBy || `modal-desc-${modalId}`,\n});\n\nexport const ModalLoadingOverlay: FC<{ loadingText?: string; dataTestId?: string }> = ({\n loadingText,\n dataTestId,\n}) => (\n <LoadingOverlay data-testid={testId(dataTestId, 'loading-overlay')}>\n <CircularProgress size={40} data-testid={testId(dataTestId, 'loading-spinner')} />\n {loadingText && (\n <Typography variant=\"body2\" sx={{ mt: 2 }} data-testid={testId(dataTestId, 'loading-text')}>\n {loadingText}\n </Typography>\n )}\n </LoadingOverlay>\n);\n\ninterface ModalHeaderProps {\n titleId: string;\n navigationTitle?: ReactNode;\n /** Deeper than the first panel, so the leading button goes back instead of closing. */\n canGoBack: boolean;\n onBack: () => void;\n /** The back arrow's accessible name — it carries a glyph only. REQUIRED. */\n backLabel: string;\n onClose: () => void;\n /** Renders the bar without its ✕ — the panel's content owns the dismiss. */\n hideClose?: boolean;\n /** Header actions — desktop only; on phones they move to the footer. */\n headerActions?: ReactNode;\n rtl?: boolean;\n dataTestId?: string;\n}\n\n/**\n * The bar's leading control: back at depth ≥2, otherwise close — and nothing at\n * all when the panel's content carries its own ✕ (`hideClose`).\n */\nconst HeaderLeadingButton: FC<\n Pick<\n ModalHeaderProps,\n 'canGoBack' | 'onBack' | 'backLabel' | 'onClose' | 'hideClose' | 'rtl' | 'dataTestId'\n >\n> = ({ canGoBack, onBack, backLabel, onClose, hideClose, rtl, dataTestId }) => {\n if (canGoBack) {\n return (\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={onBack}\n aria-label={backLabel}\n size=\"small\"\n sx={{ transform: rtl ? 'rotate(180deg)' : 'none' }}\n data-testid={testId(dataTestId, 'back-button')}\n >\n <ChevronLeftIcon />\n </IconButton>\n );\n }\n if (hideClose) return null;\n return (\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={onClose}\n aria-label=\"close\"\n size=\"small\"\n data-testid={testId(dataTestId, 'close-button')}\n >\n <CloseIcon />\n </IconButton>\n );\n};\n\nexport const ModalHeader: FC<ModalHeaderProps> = ({\n titleId,\n navigationTitle,\n canGoBack,\n onBack,\n onClose,\n hideClose,\n backLabel,\n headerActions,\n rtl,\n dataTestId,\n}) => (\n <StyledDialogTitle id={titleId} rtl={rtl} data-testid={testId(dataTestId, 'header')}>\n <DialogTitleLeft>\n <HeaderLeadingButton\n canGoBack={canGoBack}\n onBack={onBack}\n backLabel={backLabel}\n onClose={onClose}\n hideClose={hideClose}\n rtl={rtl}\n dataTestId={dataTestId}\n />\n {navigationTitle && (\n <Typography\n variant=\"h6\"\n component=\"h2\"\n noWrap\n sx={{ ml: canGoBack || !hideClose ? 1 : 0 }}\n data-testid={testId(dataTestId, 'title')}\n >\n {navigationTitle}\n </Typography>\n )}\n </DialogTitleLeft>\n <DialogTitleRight data-testid={testId(dataTestId, 'header-actions')}>\n {headerActions}\n </DialogTitleRight>\n </StyledDialogTitle>\n);\n\nconst ContentSkeleton: FC = () => (\n <Box sx={{ p: 3 }}>\n <Skeleton variant=\"text\" width=\"60%\" height={32} />\n <Skeleton variant=\"text\" width=\"100%\" />\n <Skeleton variant=\"text\" width=\"100%\" />\n <Skeleton variant=\"rectangular\" height={200} sx={{ mt: 2 }} />\n </Box>\n);\n\ninterface ModalBodyProps {\n descId: string;\n showSkeleton: boolean;\n /** When there is no action bar, the body is what reaches the bottom of the panel. */\n endsPanel: boolean;\n dataTestId?: string;\n children?: ReactNode;\n}\n\nexport const ModalBody: FC<ModalBodyProps> = ({\n descId,\n showSkeleton,\n endsPanel,\n dataTestId,\n children,\n}) => (\n <Box\n id={descId}\n sx={{\n position: 'relative',\n flex: 1,\n overflow: 'auto',\n // iOS momentum scrolling, and no scroll-chaining to the page behind —\n // without `contain`, an overscroll at the end of the list rubber-bands the\n // whole panel and springs back before the last row can be tapped.\n WebkitOverflowScrolling: 'touch',\n overscrollBehavior: 'contain',\n // The content itself ends the panel when there is no action bar, so it has\n // to clear the home indicator on its own.\n ...(endsPanel ? safeAreaBottom(0) : {}),\n }}\n data-testid={testId(dataTestId, 'content')}\n >\n {showSkeleton ? <ContentSkeleton /> : children}\n </Box>\n);\n\n/** The phone-only pinned action bar; on desktop the actions live in the header. */\nexport const ModalFooter: FC<{ dataTestId?: string; children?: ReactNode }> = ({\n dataTestId,\n children,\n}) => (\n <DialogActions\n sx={{\n borderTop: (theme) => `1px solid ${theme.palette.divider}`,\n padding: 2,\n // Never let the action row sit under the iOS home indicator.\n flexShrink: 0,\n ...safeAreaBottom(16),\n }}\n data-testid={testId(dataTestId, 'footer')}\n >\n {children}\n </DialogActions>\n);\n\ninterface PanelContentsProps extends ModalHeaderProps {\n showSkeleton: boolean;\n loadingText?: string;\n descId: string;\n content: ReactNode;\n /** The resolved actions, already placed in the header or destined for the footer. */\n modalActions: ReactNode;\n hasMobileActions: boolean;\n}\n\n/** Everything inside the sliding panel: the loading veil, header, body and action bar. */\nexport const ModalPanelContents: FC<PanelContentsProps> = ({\n showSkeleton,\n loadingText,\n descId,\n content,\n modalActions,\n hasMobileActions,\n ...header\n}) => (\n <>\n {showSkeleton && (\n <ModalLoadingOverlay loadingText={loadingText} dataTestId={header.dataTestId} />\n )}\n <ModalHeader {...header} />\n <ModalBody\n descId={descId}\n showSkeleton={showSkeleton}\n endsPanel={!hasMobileActions}\n dataTestId={header.dataTestId}\n >\n {content}\n </ModalBody>\n {hasMobileActions && (\n <ModalFooter dataTestId={header.dataTestId}>{modalActions}</ModalFooter>\n )}\n </>\n);\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/RichTextEditor/RichTextEditorToolbar.tsx"],"sourcesContent":["import Code from '@mui/icons-material/Code';\nimport FormatBold from '@mui/icons-material/FormatBold';\nimport FormatItalic from '@mui/icons-material/FormatItalic';\nimport FormatListBulleted from '@mui/icons-material/FormatListBulleted';\nimport FormatListNumbered from '@mui/icons-material/FormatListNumbered';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\nimport FormatStrikethrough from '@mui/icons-material/FormatStrikethrough';\nimport FormatUnderlined from '@mui/icons-material/FormatUnderlined';\nimport Image from '@mui/icons-material/Image';\nimport Link from '@mui/icons-material/Link';\nimport Box from '@mui/material/Box/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Toolbar from '@mui/material/Toolbar/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha } from '@mui/material/styles/index.js';\nimport type { FC, ReactElement } from 'react';\nimport React from 'react';\n\nimport type { ToolbarConfig } from './RichTextEditor.types';\n\ntype ResolvedToolbar = Required<Omit<ToolbarConfig, 'customItems'>> &\n Pick<ToolbarConfig, 'customItems'>;\n\n// The button groups, in render order. A separator is drawn between two groups\n// only when both actually have something switched on.\nconst GROUPS: Array<Array<{ key: keyof ResolvedToolbar; icon: ReactElement; tooltip: string; command: string; commandValue?: string }>> = [\n [\n { key: 'bold', icon: <FormatBold />, tooltip: 'Bold', command: 'bold' },\n { key: 'italic', icon: <FormatItalic />, tooltip: 'Italic', command: 'italic' },\n { key: 'underline', icon: <FormatUnderlined />, tooltip: 'Underline', command: 'underline' },\n {\n key: 'strikethrough',\n icon: <FormatStrikethrough />,\n tooltip: 'Strikethrough',\n command: 'strikethrough',\n },\n ],\n [\n {\n key: 'orderedList',\n icon: <FormatListNumbered />,\n tooltip: 'Numbered List',\n command: 'insertOrderedList',\n },\n {\n key: 'unorderedList',\n icon: <FormatListBulleted />,\n tooltip: 'Bulleted List',\n command: 'insertUnorderedList',\n },\n ],\n [\n { key: 'link', icon: <Link />, tooltip: 'Insert Link', command: 'createLink' },\n { key: 'image', icon: <Image />, tooltip: 'Insert Image', command: 'insertImage' },\n {\n key: 'codeBlock',\n icon: <Code />,\n tooltip: 'Code Block',\n command: 'formatBlock',\n commandValue: 'pre',\n },\n {\n key: 'quote',\n icon: <FormatQuote />,\n tooltip: 'Quote',\n command: 'formatBlock',\n commandValue: 'blockquote',\n },\n ],\n];\n\n// Link and image need a target before they can run.\nconst PROMPTS: Record<string, { message: string; initial?: string }> = {\n createLink: { message: 'Enter URL:', initial: 'https://' },\n insertImage: { message: 'Enter image URL:' },\n};\n\nconst Separator: FC = () => <Divider orientation=\"vertical\" flexItem sx={{ mx: 0.5 }} />;\n\nexport interface RichTextEditorToolbarProps {\n config: ResolvedToolbar;\n disabled: boolean;\n readOnly: boolean;\n maxLength?: number;\n characterCount: number;\n editorRef: React.RefObject<HTMLDivElement | null>;\n onFormat: (command: string, value?: string) => void;\n}\n\nconst ToolbarGroups: FC<{\n config: ResolvedToolbar;\n disabled: boolean;\n readOnly: boolean;\n onRun: (command: string, commandValue?: string) => void;\n}> = ({ config, disabled, readOnly, onRun }) => {\n const groupIsActive = (group: (typeof GROUPS)[number]) => group.some((item) => config[item.key]);\n\n return (\n <>\n {GROUPS.map((group, groupIndex) => (\n <React.Fragment key={group[0]?.key ?? groupIndex}>\n {groupIsActive(group) && GROUPS.slice(0, groupIndex).some(groupIsActive) && <Separator />}\n {group\n .filter((item) => config[item.key])\n .map((item) => (\n <Tooltip key={item.key} title={item.tooltip}>\n <IconButton\n size=\"small\"\n onClick={() => onRun(item.command, item.commandValue)}\n disabled={disabled || readOnly}\n aria-label={item.tooltip}\n data-testid={`toolbar-${item.key}`}\n >\n {item.icon}\n </IconButton>\n </Tooltip>\n ))}\n </React.Fragment>\n ))}\n </>\n );\n};\n\nexport const RichTextEditorToolbar: FC<RichTextEditorToolbarProps> = ({\n config,\n disabled,\n readOnly,\n maxLength,\n characterCount,\n editorRef,\n onFormat,\n}) => {\n const run = (command: string, commandValue?: string) => {\n const prompt = PROMPTS[command];\n if (!prompt) {\n onFormat(command, commandValue);\n return;\n }\n\n const answer = window.prompt(prompt.message, prompt.initial);\n if (answer) onFormat(command, answer);\n };\n\n return (\n <Toolbar\n variant=\"dense\"\n data-testid=\"editor-toolbar\"\n sx={{\n minHeight: 48,\n px: 1,\n borderBottom: (theme) => `1px solid ${theme.palette.divider}`,\n backgroundColor: (theme) => alpha(theme.palette.background.paper, 0.8),\n }}\n >\n <ToolbarGroups config={config} disabled={disabled} readOnly={readOnly} onRun={run} />\n\n {config.customItems && config.customItems.length > 0 && (\n <>\n <Separator />\n {config.customItems.map((item) => (\n <Tooltip key={item.id} title={item.label}>\n <IconButton\n size=\"small\"\n onClick={() => item.action(editorRef.current)}\n disabled={item.disabled || disabled || readOnly}\n aria-label={item.label}\n data-testid={`toolbar-custom-${item.id}`}\n >\n {item.icon}\n </IconButton>\n </Tooltip>\n ))}\n </>\n )}\n\n <Box sx={{ flexGrow: 1 }} />\n\n {maxLength && (\n <Typography\n variant=\"caption\"\n // Turns red in the last fifth of the allowance.\n color={characterCount > maxLength * 0.8 ? 'error' : 'text.secondary'}\n sx={{ mr: 1 }}\n data-testid=\"editor-counter\"\n >\n {characterCount}/{maxLength}\n </Typography>\n )}\n </Toolbar>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/AddressAutocomplete/AddressSuggestionsPaper.tsx"],"sourcesContent":["import type { PaperProps } from '@mui/material/Paper/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\n// The dropdown surface, frosted to match the glass field.\nexport const AddressSuggestionsPaper: FC<PaperProps> = (props) => {\n const theme = useTheme();\n\n return (\n <Paper\n {...props}\n elevation={8}\n data-testid=\"address-suggestions-dropdown\"\n sx={{\n mt: 1,\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.98)} 0%, ${alpha(theme.palette.background.paper, 0.95)} 100%)`,\n backdropFilter: 'blur(20px)',\n WebkitBackdropFilter: 'blur(20px)',\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n }}\n />\n );\n};\n"],"mappings":";AACA,OAAO,WAAW;AAClB,SAAS,OAAO,gBAAgB;AAS5B;AAJG,IAAM,0BAA0C,CAAC,UAAU;AAChE,QAAM,QAAQ,SAAS;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,MACX,eAAY;AAAA,MACZ,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,YAAY,2BAA2B,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI,CAAC,QAAQ,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI,CAAC;AAAA,QACrI,gBAAgB;AAAA,QAChB,sBAAsB;AAAA,QACtB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,MACzD;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/ScrollArea/ScrollViewport.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport type { FC, ReactNode, UIEvent } from 'react';\nimport React from 'react';\n\nimport { getOverflowStyle, getVariantStyles } from './ScrollArea.styles';\nimport type { ResolvedScrollAreaProps } from './ScrollArea.helpers';\n\nexport interface ScrollViewportProps\n extends Pick<\n ResolvedScrollAreaProps,\n | 'height'\n | 'maxHeight'\n | 'orientation'\n | 'scrollbarSize'\n | 'scrollbarColor'\n | 'scrollbarTrackColor'\n | 'contentPadding'\n | 'variant'\n | 'disabled'\n | 'loading'\n | 'smoothScroll'\n > {\n /** The scroll region's accessible name. REQUIRED. */\n regionLabel: string;\n children: ReactNode;\n shouldShowScrollbar: boolean;\n setScrollRef: (node: HTMLDivElement | null) => void;\n onScroll: (event: UIEvent<HTMLDivElement>) => void;\n}\n\n// The element that actually scrolls: its own overflow and scrollbar styling,\n// plus the disabled and loading treatments.\nexport const ScrollViewport: FC<ScrollViewportProps> = ({\n regionLabel,\n children,\n height,\n maxHeight,\n orientation,\n scrollbarSize,\n scrollbarColor,\n scrollbarTrackColor,\n contentPadding,\n variant,\n disabled,\n loading,\n smoothScroll,\n shouldShowScrollbar,\n setScrollRef,\n onScroll,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n ref={setScrollRef}\n onScroll={onScroll}\n role=\"region\"\n aria-label={regionLabel}\n aria-busy={loading}\n tabIndex={disabled ? -1 : 0}\n sx={{\n width: '100%',\n height: '100%',\n // Use an explicit maxHeight when height is 'auto', else inherit.\n maxHeight: height === 'auto' && maxHeight ? maxHeight : '100%',\n padding: contentPadding,\n opacity: loading ? 0.5 : 1,\n pointerEvents: disabled || loading ? 'none' : 'auto',\n transition: 'opacity 0.3s ease',\n '&:focus': {\n outline: 'none',\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n },\n ...getOverflowStyle({ disabled, orientation }),\n ...getVariantStyles({\n theme,\n variant,\n orientation,\n scrollbarSize,\n scrollbarColor,\n scrollbarTrackColor,\n shouldShowScrollbar,\n }),\n }}\n style={{ scrollBehavior: smoothScroll ? 'smooth' : 'auto' }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":";;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AAqDrB;AArBG,IAAM,iBAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,aAAW;AAAA,MACX,UAAU,WAAW,KAAK;AAAA,MAC1B,IAAI;AAAA,QACF,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,QAER,WAAW,WAAW,UAAU,YAAY,YAAY;AAAA,QACxD,SAAS;AAAA,QACT,SAAS,UAAU,MAAM;AAAA,QACzB,eAAe,YAAY,UAAU,SAAS;AAAA,QAC9C,YAAY;AAAA,QACZ,WAAW;AAAA,UACT,SAAS;AAAA,UACT,mBAAmB;AAAA,YACjB,SAAS,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,YAChD,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,QACA,GAAG,iBAAiB,EAAE,UAAU,YAAY,CAAC;AAAA,QAC7C,GAAG,iBAAiB;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,EAAE,gBAAgB,eAAe,WAAW,OAAO;AAAA,MAEzD;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Drawer/Drawer.tsx"],"sourcesContent":["import Close from '@mui/icons-material/Close';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport MuiDrawer from '@mui/material/Drawer/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type { DrawerContentProps,DrawerHeaderProps, DrawerProps } from './Drawer.types';\nimport { shadowInk } from '../../../tokens/ink';\n\ntype DrawerAnchor = 'left' | 'right' | 'top' | 'bottom';\n\n// `variant` doubles as a position preset, but an explicit `anchor` always wins.\nconst resolveAnchor = (\n anchor: DrawerProps['anchor'],\n variant: DrawerProps['variant'],\n): DrawerAnchor => {\n if (anchor) return anchor;\n\n // Map variant to anchor position\n switch (variant) {\n case 'right':\n return 'right';\n case 'top':\n return 'top';\n case 'bottom':\n return 'bottom';\n case 'glass':\n return 'right';\n case 'left':\n default:\n return 'left';\n }\n};\n\nconst buildDrawerStyles = (\n theme: Theme,\n anchor: DrawerAnchor,\n variant: DrawerProps['variant'],\n width: DrawerProps['width'],\n height: DrawerProps['height'],\n // Merged LAST into the surface's own rules, so a caller can shape the sliding\n // surface itself (rounded corners on a bottom sheet, a docked panel's offset)\n // without reaching for the MUI paper class from outside. Undefined by default:\n // omit it and the drawer styles exactly as it always has.\n paperSx?: DrawerProps['paperSx'],\n) => {\n const baseStyles = {\n width: ['left', 'right'].includes(anchor) ? width : '100%',\n height: ['top', 'bottom'].includes(anchor) ? height : '100%',\n flexShrink: 0,\n };\n\n if (variant === 'glass') {\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width,\n height: '100%',\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: 'blur(20px)',\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n boxShadow: `0 8px 32px ${shadowInk(theme, 0.1)}`,\n ...paperSx,\n },\n };\n }\n\n return {\n ...baseStyles,\n '& .MuiDrawer-paper': {\n width: ['left', 'right'].includes(anchor) ? width : '100%',\n height: ['top', 'bottom'].includes(anchor) ? height : '100%',\n boxSizing: 'border-box',\n ...paperSx,\n },\n };\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n children,\n open,\n onClose,\n variant = 'left',\n anchor,\n width = 280,\n height = '100%',\n persistent = false,\n backdrop = true,\n hideBackdrop = false,\n keepMounted = false,\n paperSx,\n className,\n dataTestId,\n ...rest\n}) => {\n const theme = useTheme();\n const drawerAnchor = resolveAnchor(anchor, variant);\n\n return (\n <MuiDrawer\n anchor={drawerAnchor}\n open={open}\n onClose={onClose}\n variant={persistent ? 'persistent' : 'temporary'}\n ModalProps={{\n keepMounted,\n hideBackdrop,\n BackdropProps: {\n invisible: !backdrop,\n },\n }}\n sx={buildDrawerStyles(theme, drawerAnchor, variant, width, height, paperSx)}\n className={className}\n data-testid={dataTestId || 'drawer'}\n {...rest}\n >\n {children}\n </MuiDrawer>\n );\n};\n\nexport const DrawerHeader: React.FC<DrawerHeaderProps> = ({\n children,\n onClose,\n showCloseButton = true,\n closeLabel,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-header'}\n sx={{\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n minHeight: 64,\n justifyContent: 'space-between',\n }}\n >\n <Box sx={{ flex: 1 }} data-testid={dataTestId ? `${dataTestId}-title` : 'drawer-title'}>\n {typeof children === 'string' ? <Typography variant=\"h6\">{children}</Typography> : children}\n </Box>\n {showCloseButton && onClose && (\n <IconButton\n onClick={onClose}\n edge=\"end\"\n aria-label={closeLabel ?? 'Close drawer'}\n data-testid={dataTestId ? `${dataTestId}-close` : 'drawer-close'}\n >\n <Close />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport const DrawerContent: React.FC<DrawerContentProps> = ({ children, padding = true, dataTestId }) => {\n const theme = useTheme();\n\n return (\n <Box\n data-testid={dataTestId || 'drawer-content'}\n sx={{\n flex: 1,\n overflow: 'auto',\n padding: padding ? theme.spacing(2) : 0,\n }}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/CategorySelect/CategoryPanelList.tsx"],"sourcesContent":["'use client';\n\nimport type { CategorySelectCopy } from \"../../../copy\";\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Skeleton from '@mui/material/Skeleton/index.js';\n\nimport { categoryCheckState, isLeafCategory, leavesOf } from './category-tree';\nimport { CategorySectionHeading, CategoryTreeRow } from './CategoryRows';\nimport { emptySx, listSx, skeletonSx } from './CategorySelect.styles';\nimport type { CategoryGroup } from './CategorySelect.types';\n\n/** The design sets these labels in sentence case, not MUI's default caps. */\nconst SENTENCE_CASE = { textTransform: 'none' } as const;\n\n/** How many skeleton rows stand in for the catalogue while it loads. */\nconst SKELETON_ROWS = 6;\n\ninterface PanelListProps {\n /** The words this panel renders. REQUIRED — no default copy. */\n copy: CategorySelectCopy;\n groups: CategoryGroup[];\n query: string;\n draft: ReadonlySet<string>;\n rowIds: string[];\n activeIndex: number;\n sheet: boolean;\n single: boolean;\n loading: boolean;\n showCounts: boolean;\n allowParentSelection: boolean;\n /**\n * True when the tree has a level BELOW the subcategories. It turns the\n * section-heading treatment off — see {@link CategoryNodeRows}. Derived from\n * the options the panel state already holds, never a caller's decision.\n */\n deepTree: boolean;\n isExpanded: (categoryId: string) => boolean;\n onToggleExpanded: (categoryId: string) => void;\n onActivateCategory: (group: CategoryGroup) => void;\n onActivateSubcategory: (id: string) => void;\n onClearQuery: () => void;\n onCreateCategory?: (name?: string) => void;\n listRef: React.RefObject<HTMLDivElement | null>;\n dataTestId: string;\n}\n\nfunction LoadingRows(): React.JSX.Element {\n return (\n <>\n {Array.from({ length: SKELETON_ROWS }, (_unused, index) => (\n <Skeleton key={index} variant=\"rounded\" sx={skeletonSx} />\n ))}\n </>\n );\n}\n\n/** No categories exist at all — an onboarding moment, not an error. */\nfunction EmptyCatalogue({\n onCreateCategory,\n dataTestId,\n copy,\n}: {\n onCreateCategory?: (name?: string) => void;\n dataTestId: string;\n copy: CategorySelectCopy;\n}): React.JSX.Element {\n return (\n <Box sx={emptySx} data-testid={`${dataTestId}-empty-catalogue`}>\n <strong>{copy.emptyTitle}</strong>\n <p>{copy.purpose}</p>\n {onCreateCategory && (\n <Button variant=\"contained\" size=\"small\" sx={SENTENCE_CASE} onClick={() => onCreateCategory()}>\n {copy.createCategory}\n </Button>\n )}\n </Box>\n );\n}\n\n/** The search found nothing — offer creation, or the way back. */\nfunction NoResults({\n query,\n onClearQuery,\n onCreateCategory,\n dataTestId,\n copy,\n}: {\n query: string;\n onClearQuery: () => void;\n onCreateCategory?: (name?: string) => void;\n dataTestId: string;\n copy: CategorySelectCopy;\n}): React.JSX.Element {\n return (\n <Box sx={emptySx} data-testid={`${dataTestId}-no-results`}>\n <strong>{copy.noResults.title(query)}</strong>\n <p>{copy.noResults.hint}</p>\n <Box sx={{ display: 'flex', gap: '6px', justifyContent: 'center' }}>\n <Button variant=\"outlined\" size=\"small\" sx={SENTENCE_CASE} onClick={onClearQuery}>\n {copy.noResults.clearSearch}\n </Button>\n {onCreateCategory && (\n <Button\n variant=\"contained\"\n size=\"small\"\n sx={SENTENCE_CASE}\n data-testid={`${dataTestId}-create`}\n onClick={() => onCreateCategory(query.trim())}\n >\n {copy.noResults.create(query.trim())}\n </Button>\n )}\n </Box>\n </Box>\n );\n}\n\n/**\n * One node: its heading or its row, then whichever children are visible.\n *\n * The SECTION-HEADING treatment — an inert uppercase label with its children\n * always on show — belongs to a two-level tree and only there. It is what makes\n * the \"mover para…\" picker read as \"category, then the subcategory you pick\",\n * and it works because a two-level category has nothing to fold TO: everything\n * under it is already the thing you came for. A third level breaks both halves\n * at once — the heading has no chevron, so the panel opens onto every item in\n * the catalogue, which is the flat list this component exists to replace. So a\n * deep tree drops the treatment and every frame becomes a foldable row instead.\n */\nfunction CategoryNodeRows({\n node,\n depth,\n props,\n}: {\n node: CategoryGroup;\n depth: number;\n props: PanelListProps;\n}): React.JSX.Element {\n const { draft, query, single, allowParentSelection, rowIds, activeIndex, sheet } = props;\n const categoryId = node.category.id;\n const leaf = isLeafCategory(node);\n const expanded = props.isExpanded(categoryId);\n // A childless category is the leaf, so it is selectable whatever the mode says\n // — the heading reading has no subcategory to point at, and would leave the\n // row inert.\n const selectable = allowParentSelection || leaf;\n const asHeading = single && !selectable && !props.deepTree;\n const selectedCount = leaf ? 0 : leavesOf(node).filter((id) => draft.has(id)).length;\n\n return (\n <>\n {asHeading ? (\n <CategorySectionHeading option={node.category} query={query} />\n ) : (\n <CategoryTreeRow\n option={node.category}\n query={query}\n depth={depth}\n branch={!leaf}\n expanded={expanded}\n active={rowIds[activeIndex] === categoryId}\n sheet={sheet}\n {...(selectable ? { checkState: categoryCheckState(node, draft) } : {})}\n single={single}\n selectedCount={selectedCount}\n showCounts={props.showCounts}\n onToggleExpanded={() => props.onToggleExpanded(categoryId)}\n onActivate={() =>\n leaf ? props.onActivateSubcategory(categoryId) : props.onActivateCategory(node)\n }\n dataTestId={props.dataTestId}\n copy={props.copy}\n />\n )}\n {(expanded || asHeading) &&\n node.subcategories.map((sub) => (\n <CategoryNodeRows key={sub.category.id} node={sub} depth={depth + 1} props={props} />\n ))}\n </>\n );\n}\n\n/** The scrolling body of the panel, including its three non-list states. */\nexport function CategoryPanelList(props: PanelListProps): React.JSX.Element {\n const { groups, loading, query, listRef, sheet, dataTestId, copy } = props;\n\n const body = (): React.JSX.Element => {\n if (loading) return <LoadingRows />;\n if (groups.length === 0 && query.trim().length > 0) {\n return (\n <NoResults copy={copy}\n query={query}\n onClearQuery={props.onClearQuery}\n onCreateCategory={props.onCreateCategory}\n dataTestId={dataTestId}\n />\n );\n }\n if (groups.length === 0) {\n return (\n <EmptyCatalogue copy={copy}\n onCreateCategory={props.onCreateCategory}\n dataTestId={dataTestId}\n />\n );\n }\n return (\n <>\n {groups.map((group) => (\n <CategoryNodeRows key={group.category.id} node={group} depth={0} props={props} />\n ))}\n </>\n );\n };\n\n return (\n <Box\n ref={listRef}\n role=\"listbox\"\n aria-multiselectable={props.single ? undefined : true}\n tabIndex={-1}\n data-testid={`${dataTestId}-list`}\n sx={listSx(sheet)}\n >\n {body()}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Textarea/Textarea.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport FormHelperText from '@mui/material/FormHelperText/index.js';\nimport InputLabel from '@mui/material/InputLabel/index.js';\nimport TextareaAutosize from '@mui/material/TextareaAutosize/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React, { lazy, Suspense, useState } from 'react';\n\nimport {\n getColorFromTheme,\n textareaEmphasisStyles } from './Textarea.styles';\n\n/**\n * The rich editor is LOADED ON DEMAND, not imported (12-51 follow-up).\n *\n * It renders only for `variant === 'rich'`, but a static import made every\n * consumer of a plain `<Textarea>` pay for it — 387 lines of toolbar plus the\n * MUI `Tooltip`, `IconButton` and `Divider` its formatting buttons need. That\n * is not theoretical: an adopting storefront imports this entry for a one-line\n * order note, and `Tooltip` (8.7 KiB) reached its EAGER chunk through here\n * while nothing on that critical path renders a tooltip at all.\n *\n * `variant` is a prop, so the branch cannot be decided at build time and no\n * amount of tree-shaking removes it. A lazy boundary is what expresses \"only\n * the rich variant pays\", and it costs the rich variant one microtask it can\n * afford — it is a text editor a user has already chosen to open, never a\n * first-paint element.\n */\nconst TextareaRichEditor = lazy(async () => ({\n default: (await import('./TextareaRichEditor')).TextareaRichEditor }));\nimport type { TextareaProps } from './Textarea.types';\n\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { fieldRadius } from '../../../tokens/field-radius';\nimport { FIELD_BORDER_WIDTH, fieldBorder } from '../../../tokens/field-height';\nimport { rem } from '../../../tokens/relative';\n\n// Interface for styled component props\ninterface StyledTextareaProps {\n customVariant?: string;\n customColor?: string;\n customSize?: string;\n glow?: boolean;\n glass?: boolean;\n gradient?: boolean;\n error?: boolean;\n theme?: Theme;\n}\n\n// Glow animation for enhanced visual effects\nconst StyledTextarea = styled(TextareaAutosize, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customColor', 'customSize', 'glow', 'glass', 'gradient', 'error'].includes(\n prop as string,\n ) })<StyledTextareaProps>(({\n theme,\n customVariant,\n customColor = 'primary',\n customSize = 'md',\n glow,\n glass,\n gradient,\n error }) => {\n if (!theme) return {};\n const colorPalette = getColorFromTheme(theme, customColor);\n const errorColor = theme.palette.error;\n\n const sizeMap = {\n xs: { padding: '6px 8px', fontSize: rem(theme, 12), minHeight: '60px' },\n sm: { padding: '8px 10px', fontSize: rem(theme, 14), minHeight: '80px' },\n md: { padding: '10px 12px', fontSize: rem(theme, 16), minHeight: '100px' },\n lg: { padding: '12px 14px', fontSize: rem(theme, 18), minHeight: '120px' },\n xl: { padding: '14px 16px', fontSize: rem(theme, 20), minHeight: '140px' } };\n\n const baseStyles = {\n width: '100%',\n fontFamily: theme.typography.fontFamily,\n borderRadius: fieldRadius(theme),\n border: error ? `${FIELD_BORDER_WIDTH}px solid ${errorColor.main}` : fieldBorder(theme),\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: 'all 0.3s ease',\n resize: customVariant === 'resizable' ? 'vertical' : 'none',\n outline: 'none',\n ...sizeMap[customSize as keyof typeof sizeMap],\n\n '&::placeholder': {\n color: theme.palette.text.secondary,\n opacity: 0.7 },\n\n '&:hover': {\n borderColor: error ? errorColor.dark : colorPalette.main,\n backgroundColor: alpha(theme.palette.background.paper, 0.8) },\n\n // Focus is two pixels, like every other field's: the second is an inset\n // shadow, so the 1px resting border can thicken without the box moving.\n '&:focus': {\n borderColor: error ? errorColor.main : colorPalette.main,\n backgroundColor: theme.palette.background.paper,\n boxShadow: `inset 0 0 0 1px ${error ? errorColor.main : colorPalette.main}, 0 0 0 3px ${alpha(error ? errorColor.main : colorPalette.main, 0.1)}` } };\n\n // Glass morphism effect\n return {\n ...baseStyles,\n ...textareaEmphasisStyles({ theme, colorPalette, glass, gradient, glow }) };\n});\n\nconst StyledLabel = styled(InputLabel, {\n shouldForwardProp: (prop) => !['glass', 'error'].includes(prop as string) })<{ glass?: boolean; error?: boolean }>(({ theme, glass, error }) => ({\n marginBottom: theme.spacing(1),\n fontWeight: 500,\n color: error ? theme.palette.error.main : theme.palette.text.primary,\n ...(glass && {\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: 'blur(10px)',\n padding: '4px 8px',\n borderRadius: '4px',\n border: `1px solid ${fieldEdge(theme)}`,\n display: 'inline-block' }) }));\n\n// IconWrapper - replaced with inline Box component for better TypeScript compatibility\n// const IconWrapper = styled(Box)<{ position: 'start' | 'end' }>(({ theme, position }) => {\n// const positionStyles = position === 'start' ? { left: '12px' } : { right: '12px' };\n// return {\n// position: 'absolute' as const,\n// top: '12px',\n// ...positionStyles,\n// color: theme.palette.text.secondary,\n// pointerEvents: 'none' as const,\n// zIndex: 1,\n// };\n// });\n\n// Rich text toolbar styling\n\nconst ICON_GUTTER = '40px';\n\nconst TEXTAREA_DEFAULTS = {\n variant: 'default',\n color: 'primary',\n size: 'md',\n error: false,\n glassLabel: false,\n glow: false,\n glass: false,\n gradient: false,\n iconPosition: 'start',\n minRows: 3 } satisfies Partial<TextareaProps>;\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}`\n// still falls back to the default as a destructuring default would.\nconst definedProps = (props: TextareaProps): Partial<TextareaProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<TextareaProps>;\n\n// Label above, helper text below — identical for the plain and rich variants,\n// which previously duplicated both.\nconst TextareaShell: React.FC<{\n testId?: string;\n label?: React.ReactNode;\n glassLabel: boolean;\n error: boolean;\n helperText?: React.ReactNode;\n children: React.ReactNode;\n}> = ({ testId, label, glassLabel, error, helperText, children }) => (\n <Box\n sx={{ position: 'relative', width: '100%' }}\n data-testid={testId ? `${testId}-wrapper` : undefined}\n >\n {label && (\n <StyledLabel glass={glassLabel} error={error}>\n {label}\n </StyledLabel>\n )}\n\n {children}\n\n {helperText && (\n <FormHelperText error={error} sx={{ mt: 1 }}>\n {helperText}\n </FormHelperText>\n )}\n </Box>\n);\n\nconst TextareaIcon: React.FC<{\n icon?: React.ReactNode;\n iconPosition: 'start' | 'end';\n}> = ({ icon, iconPosition }) => (\n <Box\n sx={{\n position: 'absolute',\n top: '12px',\n ...(iconPosition === 'start' ? { left: '12px' } : { right: '12px' }),\n color: 'text.secondary',\n pointerEvents: 'none',\n zIndex: 1 }}\n >\n {icon}\n </Box>\n);\n\n/**\n * The rich variant, kept out of the main component's body.\n *\n * Two reasons rather than one: the `Suspense` boundary and its props belong\n * together with the lazy import above, and the component that renders every\n * OTHER variant stays inside the size the complexity gate allows without\n * anything being suppressed.\n */\nfunction RichVariant({\n shell,\n editor }: {\n shell: Omit<React.ComponentProps<typeof TextareaShell>, 'children'>;\n editor: React.ComponentProps<typeof TextareaRichEditor>;\n}): React.JSX.Element {\n return (\n <TextareaShell {...shell}>\n {/*\n `null` rather than a spinner: the editor resolves from the same document\n the caller is already rendering, so a fallback would flash for a frame\n and read as a glitch rather than as loading.\n */}\n <Suspense fallback={null}>\n <TextareaRichEditor {...editor} />\n </Suspense>\n </TextareaShell>\n );\n}\n\nexport const Textarea: React.FC<TextareaProps> = (textareaProps) => {\n const {\n variant,\n color,\n size,\n error,\n helperText,\n label,\n glassLabel,\n glow,\n glass,\n gradient,\n icon,\n iconPosition,\n minRows,\n maxRows,\n style,\n 'data-testid': dataTestId,\n dataTestId: dataTestIdCamelCase,\n ...props\n } = { ...TEXTAREA_DEFAULTS, ...definedProps(textareaProps) };\n\n // Read off the props rather than the merged object: the spread widens every\n // key to optional, which would lose what the variant union already proved.\n const { richEditorCopy } = textareaProps;\n\n const [richTextValue, setRichTextValue] = useState('');\n const hasIcon = Boolean(icon);\n const testId = dataTestId || dataTestIdCamelCase;\n\n const textareaStyle = {\n ...style,\n // Same gap either side; only which side it applies to changes. The previous\n // version had `iconPosition === 'start' ? '40px' : '40px'`, a ternary whose\n // two branches were identical.\n ...(hasIcon && {\n [iconPosition === 'start' ? 'paddingLeft' : 'paddingRight']: ICON_GUTTER }) };\n\n // If rich text variant, use the rich text editor\n if (variant === 'rich' && richEditorCopy) {\n return (\n <RichVariant\n shell={{ testId, label, glassLabel, error, helperText }}\n editor={{\n copy: richEditorCopy,\n value: richTextValue,\n onChange: setRichTextValue,\n placeholder: props.placeholder,\n error,\n glass,\n color,\n characterLimit: props.maxLength }}\n />\n );\n }\n\n return (\n <TextareaShell testId={testId} label={label} glassLabel={glassLabel} error={error} helperText={helperText}>\n <Box sx={{ position: 'relative' }}>\n {hasIcon && <TextareaIcon icon={icon} iconPosition={iconPosition} />}\n\n <StyledTextarea\n customVariant={variant}\n customColor={color}\n customSize={size}\n glow={glow}\n glass={glass}\n gradient={gradient}\n error={error}\n minRows={variant === 'autosize' ? minRows : undefined}\n maxRows={variant === 'autosize' ? maxRows : undefined}\n style={textareaStyle}\n aria-label={label || props['aria-label']}\n data-testid={testId}\n {...props}\n />\n </Box>\n </TextareaShell>\n );\n};\n\nTextarea.displayName = 'Textarea';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Menubar/Menubar.toolbar.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport Toolbar from '@mui/material/Toolbar/index.js';\nimport type { CSSObject } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { MenubarItemView } from './Menubar.item';\nimport { MenubarSeparator } from './Menubar.separator';\nimport type { MenubarItem, MenubarProps } from './Menubar.types';\n\nexport interface MenubarToolbarProps {\n ariaLabel: string;\n barSx: CSSObject;\n items: MenubarItem[];\n size: NonNullable<MenubarProps['size']>;\n orientation: NonNullable<MenubarProps['orientation']>;\n disabled: boolean;\n loading: boolean;\n logo?: React.ReactNode;\n endContent?: React.ReactNode;\n fullWidth: boolean;\n activeMenu: string | null;\n menuRefs: React.MutableRefObject<{ [key: string]: HTMLElement | null }>;\n onOpen: (itemId: string, anchorEl: HTMLElement) => void;\n onActivate: (item: MenubarItem) => void;\n onClose: () => void;\n onFocus?: React.FocusEventHandler;\n onBlur?: React.FocusEventHandler;\n}\n\n/**\n * The bar's contents: an optional logo, the entries themselves, and whatever the\n * caller hangs off the end. Shared by both orientations — only the element\n * wrapping it differs.\n */\nexport const MenubarToolbar: React.FC<MenubarToolbarProps> = ({\n ariaLabel,\n barSx,\n items,\n size,\n orientation,\n disabled,\n loading,\n logo,\n endContent,\n fullWidth,\n activeMenu,\n menuRefs,\n onOpen,\n onActivate,\n onClose,\n onFocus,\n onBlur,\n}) => {\n const isVertical = orientation === 'vertical';\n\n return (\n <Toolbar\n role=\"toolbar\"\n aria-label={ariaLabel}\n sx={{\n ...barSx,\n width: fullWidth ? '100%' : 'auto',\n flexDirection: isVertical ? 'column' : 'row',\n alignItems: isVertical ? 'flex-start' : 'center',\n gap: 1,\n }}\n >\n {logo && <Box sx={{ mr: 2, display: 'flex', alignItems: 'center' }}>{logo}</Box>}\n\n {loading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <Box\n sx={{\n display: 'flex',\n flexDirection: isVertical ? 'column' : 'row',\n gap: isVertical ? 0.5 : 1,\n flex: 1,\n }}\n >\n {items.map((item) =>\n item.divider ? (\n <MenubarSeparator key={item.id} orientation={orientation} />\n ) : (\n <MenubarItemView\n key={item.id}\n item={item}\n size={size}\n disabled={disabled}\n isOpen={activeMenu === item.id}\n anchorEl={menuRefs.current[item.id] ?? null}\n onOpen={onOpen}\n onActivate={onActivate}\n onClose={onClose}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n ),\n )}\n </Box>\n )}\n\n {endContent && <Box sx={{ ml: 'auto' }}>{endContent}</Box>}\n </Toolbar>\n );\n};\n"],"mappings":";;;;;;;;AAAA,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAC7B,OAAO,aAAa;AAuDhB,SAWW,KAXX;AAtBG,IAAM,iBAAgD,CAAC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,aAAa,gBAAgB;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,IAAI;AAAA,QACF,GAAG;AAAA,QACH,OAAO,YAAY,SAAS;AAAA,QAC5B,eAAe,aAAa,WAAW;AAAA,QACvC,YAAY,aAAa,eAAe;AAAA,QACxC,KAAK;AAAA,MACP;AAAA,MAEC;AAAA,gBAAQ,oBAAC,OAAI,IAAI,EAAE,IAAI,GAAG,SAAS,QAAQ,YAAY,SAAS,GAAI,gBAAK;AAAA,QAEzE,UACC,oBAAC,oBAAiB,MAAM,IAAI,OAAM,WAAU,IAE5C;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,cACF,SAAS;AAAA,cACT,eAAe,aAAa,WAAW;AAAA,cACvC,KAAK,aAAa,MAAM;AAAA,cACxB,MAAM;AAAA,YACR;AAAA,YAEC,gBAAM;AAAA,cAAI,CAAC,SACV,KAAK,UACH,oBAAC,oBAA+B,eAAT,KAAK,EAA8B,IAE1D;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,QAAQ,eAAe,KAAK;AAAA,kBAC5B,UAAU,SAAS,QAAQ,KAAK,EAAE,KAAK;AAAA,kBACvC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,gBAVK,KAAK;AAAA,cAWZ;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA,QAGD,cAAc,oBAAC,OAAI,IAAI,EAAE,IAAI,OAAO,GAAI,sBAAW;AAAA;AAAA;AAAA,EACtD;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Collapsible/Collapsible.helpers.ts"],"sourcesContent":["import type { Theme } from '@mui/material/styles/index.js';\n\nimport type { CollapsibleVariant } from './Collapsible.types';\n\n/**\n * `smooth` and `default` share their timing; only `spring` differs, stretching\n * the duration and overshooting past the target before settling.\n */\nexport const transitionSettings = (\n theme: Theme,\n variant: CollapsibleVariant,\n duration: number,\n easing?: string,\n): { duration: number; easing: string } => {\n if (variant === 'spring') {\n return {\n duration: duration * 1.2,\n easing: easing || 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n };\n }\n\n return { duration, easing: easing || theme.transitions.easing.easeInOut };\n};\n\ninterface RegionState {\n open: boolean;\n disabled: boolean;\n dataTestId?: string;\n}\n\n/**\n * Shared by both implementations: a disabled collapsible reads as collapsed to\n * assistive technology whatever its `open` prop says, because it cannot be\n * operated to see the rest.\n */\nexport const regionAttrs = ({ open, disabled, dataTestId }: RegionState) => ({\n 'data-disabled': disabled,\n 'data-testid': dataTestId,\n role: 'region',\n 'aria-expanded': open && !disabled,\n 'aria-hidden': disabled || !open,\n});\n\nexport const dimmedStyles = (disabled: boolean) => ({\n opacity: disabled ? 0.6 : 1,\n pointerEvents: (disabled ? 'none' : 'auto') as 'none' | 'auto',\n});\n\nexport const triggerStyles = (\n theme: Theme,\n { disabled, expanded }: { disabled: boolean; expanded: boolean },\n) => {\n const restingBackground = expanded ? theme.palette.action.selected : 'transparent';\n\n return {\n width: '100%',\n padding: theme.spacing(1, 2),\n border: 'none',\n backgroundColor: restingBackground,\n cursor: disabled ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n transition: theme.transitions.create(['background-color', 'opacity'], {\n duration: theme.transitions.duration.short,\n }),\n opacity: disabled ? 0.6 : 1,\n '&:hover': {\n backgroundColor: disabled\n ? 'transparent'\n : expanded\n ? theme.palette.action.selected\n : theme.palette.action.hover,\n },\n '&:focus': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 2,\n },\n '&:active': {\n backgroundColor: disabled ? 'transparent' : theme.palette.action.focus,\n },\n };\n};\n"],"mappings":";AAQO,IAAM,qBAAqB,CAChC,OACA,SACA,UACA,WACyC;AACzC,MAAI,YAAY,UAAU;AACxB,WAAO;AAAA,MACL,UAAU,WAAW;AAAA,MACrB,QAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AAEA,SAAO,EAAE,UAAU,QAAQ,UAAU,MAAM,YAAY,OAAO,UAAU;AAC1E;AAaO,IAAM,cAAc,CAAC,EAAE,MAAM,UAAU,WAAW,OAAoB;AAAA,EAC3E,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,MAAM;AAAA,EACN,iBAAiB,QAAQ,CAAC;AAAA,EAC1B,eAAe,YAAY,CAAC;AAC9B;AAEO,IAAM,eAAe,CAAC,cAAuB;AAAA,EAClD,SAAS,WAAW,MAAM;AAAA,EAC1B,eAAgB,WAAW,SAAS;AACtC;AAEO,IAAM,gBAAgB,CAC3B,OACA,EAAE,UAAU,SAAS,MAClB;AACH,QAAM,oBAAoB,WAAW,MAAM,QAAQ,OAAO,WAAW;AAErE,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS,MAAM,QAAQ,GAAG,CAAC;AAAA,IAC3B,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,QAAQ,WAAW,gBAAgB;AAAA,IACnC,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,YAAY,MAAM,YAAY,OAAO,CAAC,oBAAoB,SAAS,GAAG;AAAA,MACpE,UAAU,MAAM,YAAY,SAAS;AAAA,IACvC,CAAC;AAAA,IACD,SAAS,WAAW,MAAM;AAAA,IAC1B,WAAW;AAAA,MACT,iBAAiB,WACb,gBACA,WACE,MAAM,QAAQ,OAAO,WACrB,MAAM,QAAQ,OAAO;AAAA,IAC7B;AAAA,IACA,WAAW;AAAA,MACT,SAAS,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,MAChD,eAAe;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,MACV,iBAAiB,WAAW,gBAAgB,MAAM,QAAQ,OAAO;AAAA,IACnE;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Accordion/Accordion.tsx"],"sourcesContent":["import ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport MuiAccordion from '@mui/material/Accordion/index.js';\nimport MuiAccordionActions from '@mui/material/AccordionActions/index.js';\nimport MuiAccordionDetails from '@mui/material/AccordionDetails/index.js';\nimport MuiAccordionSummary from '@mui/material/AccordionSummary/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { accordionVariantStyles } from './Accordion.styles';\nimport type { \n AccordionActionsProps, \n AccordionDetailsProps, \n AccordionProps, \n AccordionSummaryProps} from './Accordion.types';\n\nexport const Accordion: React.FC<AccordionProps> = ({\n children,\n variant = 'default',\n disabled = false,\n defaultExpanded = false,\n expanded,\n onChange,\n sx,\n 'data-testid': testId = 'accordion',\n ...props\n}) => {\n const theme = useTheme();\n\n return (\n <MuiAccordion\n disabled={disabled}\n defaultExpanded={defaultExpanded}\n expanded={expanded}\n onChange={onChange}\n data-testid={testId}\n sx={{\n ...accordionVariantStyles(theme, variant),\n ...sx,\n }}\n {...props}\n >\n {children}\n </MuiAccordion>\n );\n};\n\nexport const AccordionSummary: React.FC<AccordionSummaryProps> = ({\n children,\n expandIcon = <ExpandMoreIcon />,\n disabled = false,\n 'data-testid': testId = 'accordion-summary',\n ...props\n}) => {\n const theme = useTheme();\n\n // Clone expandIcon to add data-testid if it's a valid React element\n const iconWithTestId = React.isValidElement(expandIcon)\n ? React.cloneElement(expandIcon as React.ReactElement<{ 'data-testid'?: string }>, {\n 'data-testid': 'accordion-icon',\n })\n : expandIcon;\n\n return (\n <MuiAccordionSummary\n expandIcon={iconWithTestId}\n disabled={disabled}\n data-testid={testId}\n sx={{\n minHeight: 56,\n '& .MuiAccordionSummary-expandIconWrapper': {\n transition: 'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n color: theme.palette.text.secondary,\n },\n '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {\n transform: 'rotate(180deg)',\n color: theme.palette.primary.main,\n },\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.hover, 0.04),\n '& .MuiAccordionSummary-expandIconWrapper': {\n color: theme.palette.primary.main,\n },\n },\n '&.Mui-focusVisible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 2,\n },\n // Enhanced keyboard navigation styles\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n }}\n {...props}\n >\n {children}\n </MuiAccordionSummary>\n );\n};\n\nexport const AccordionDetails: React.FC<AccordionDetailsProps> = ({\n children,\n 'data-testid': testId = 'accordion-details',\n ...props\n}) => {\n const theme = useTheme();\n\n return (\n <MuiAccordionDetails \n data-testid={testId}\n sx={{\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.08)}`,\n // Smooth content reveal animation\n '& > *': {\n animation: 'fadeInUp 0.4s ease-out',\n },\n '@keyframes fadeInUp': {\n '0%': {\n opacity: 0,\n transform: 'translateY(8px)',\n },\n '100%': {\n opacity: 1,\n transform: 'translateY(0)',\n },\n },\n }}\n {...props}\n >\n {children}\n </MuiAccordionDetails>\n );\n};\n\nexport const AccordionActions: React.FC<AccordionActionsProps> = ({\n children,\n disableSpacing = false,\n 'data-testid': testId = 'accordion-actions',\n ...props\n}) => {\n const theme = useTheme();\n\n return (\n <MuiAccordionActions \n disableSpacing={disableSpacing}\n data-testid={testId}\n sx={{\n padding: theme.spacing(1, 2),\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.08)}`,\n backgroundColor: alpha(theme.palette.background.paper, 0.5),\n backdropFilter: 'blur(8px)',\n // Animate button entries\n '& > *': {\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n transform: 'translateY(-1px)',\n },\n },\n }}\n {...props}\n >\n {children}\n </MuiAccordionActions>\n );\n};"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/UploadButton/UploadButton.parts.tsx"],"sourcesContent":["import AttachFileOutlined from '@mui/icons-material/AttachFileOutlined';\nimport CloudUploadOutlined from '@mui/icons-material/CloudUploadOutlined';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport LinearProgress from '@mui/material/LinearProgress/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport type React from 'react';\n\nimport type { DragHandlers } from './UploadButton.hooks';\n\n/*\n * The tints the dropzone and the ghost button have always drawn — 0x0A, 0x05\n * and 0x08 out of 0xFF — as `alpha()` opacities. They were hex-alpha suffixes\n * glued onto `palette.primary.main`, which only works while the palette colour\n * is a six-digit hex: an `rgb(…)` primary produced an invalid colour and no\n * tint at all.\n */\nconst DRAG_OVER_TINT = 0x0a / 0xff;\nconst HOVER_TINT = 0x05 / 0xff;\nconst GHOST_HOVER_TINT = 0x08 / 0xff;\nimport type { UploadButtonCopy } from '../../../copy';\nimport type { UploadButtonProps } from './UploadButton.types';\nimport { sxRem } from '../../../tokens/relative';\n\n/** Shared shape for the two trigger variants. */\nexport interface TriggerProps {\n copy: UploadButtonCopy;\n label: string;\n icon?: React.ReactNode;\n disabled: boolean;\n className?: string;\n dataTestId?: string;\n describedBy?: string;\n onOpen: () => void;\n}\n\n/** The drag-and-drop surface. */\nexport function UploadDropzone({\n copy,\n label,\n icon,\n disabled,\n className,\n dataTestId,\n describedBy,\n onOpen,\n isDragOver,\n drag,\n}: TriggerProps & { isDragOver: boolean; drag: DragHandlers }): React.ReactElement {\n const theme = useTheme();\n return (\n <Box\n component=\"div\"\n {...drag}\n onClick={onOpen}\n sx={{\n border: `2px dashed ${isDragOver ? theme.palette.primary.main : theme.palette.divider}`,\n borderRadius: 2,\n padding: 3,\n textAlign: 'center',\n cursor: disabled ? 'not-allowed' : 'pointer',\n backgroundColor: isDragOver ? alpha(theme.palette.primary.main, DRAG_OVER_TINT) : 'transparent',\n transition: 'all 0.2s ease-in-out',\n ...(!disabled && {\n '&:hover': {\n borderColor: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, HOVER_TINT),\n },\n }),\n opacity: disabled ? 0.6 : 1,\n }}\n className={className}\n data-testid={dataTestId}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onOpen();\n }}\n aria-describedby={describedBy}\n aria-label={copy.dropzoneRole(label)}\n >\n <Box sx={{ mb: 2 }}>\n {icon || <CloudUploadOutlined sx={{ fontSize: sxRem(48), color: 'text.secondary' }} />}\n </Box>\n <Typography variant=\"body1\" sx={{ mb: 1 }}>\n {label}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {copy.dropzoneHint}\n </Typography>\n </Box>\n );\n}\n\n/** MUI variant for each non-dropzone appearance. */\nconst MUI_VARIANT = { outline: 'outlined', ghost: 'text' } as const;\n\n/** The plain-button trigger. */\nexport function UploadTrigger({\n copy,\n label,\n icon,\n disabled,\n className,\n dataTestId,\n describedBy,\n onOpen,\n variant,\n isUploading,\n}: TriggerProps & {\n variant: NonNullable<UploadButtonProps['variant']>;\n isUploading: boolean;\n}): React.ReactElement {\n const theme = useTheme();\n return (\n <Button\n variant={MUI_VARIANT[variant as keyof typeof MUI_VARIANT] ?? 'contained'}\n disabled={disabled || isUploading}\n onClick={onOpen}\n startIcon={icon || <AttachFileOutlined />}\n className={className}\n data-testid={dataTestId}\n aria-describedby={describedBy}\n sx={{\n ...(variant === 'ghost' && {\n '&:hover': { backgroundColor: alpha(theme.palette.primary.main, GHOST_HOVER_TINT) },\n }),\n }}\n >\n {isUploading ? copy.uploading : label}\n </Button>\n );\n}\n\n/** The screen-reader live region — drag, progress and error announcements. */\nfunction UploadAnnouncer({\n copy,\n announceDragOver,\n isUploading,\n progress,\n error,\n}: {\n copy: UploadButtonCopy;\n announceDragOver: boolean;\n isUploading: boolean;\n progress: number;\n error: string | null;\n}): React.ReactElement {\n return (\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"sr-only\"\n style={{\n position: 'absolute',\n left: '-10000px',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n }}\n >\n {announceDragOver && copy.dropReady}\n {isUploading && copy.uploadInProgress(Math.round(progress))}\n {error && copy.errorAnnouncement(error)}\n </div>\n );\n}\n\n/** Progress bar, helper text, error text and the live region. */\nexport function UploadFeedback({\n copy,\n isUploading,\n progress,\n helperText,\n helperId,\n error,\n errorId,\n announceDragOver,\n}: {\n copy: UploadButtonCopy;\n isUploading: boolean;\n progress: number;\n helperText?: string;\n helperId?: string;\n error: string | null;\n errorId?: string;\n announceDragOver: boolean;\n}): React.ReactElement {\n return (\n <>\n {isUploading && progress > 0 && (\n <Box sx={{ mt: 1 }}>\n <LinearProgress variant=\"determinate\" value={progress} sx={{ borderRadius: 1 }} />\n <Typography variant=\"caption\" sx={{ mt: 0.5, display: 'block' }}>\n {copy.percentUploaded(Math.round(progress))}\n </Typography>\n </Box>\n )}\n\n {helperText && !error && (\n <Typography\n id={helperId}\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: 'block', mt: 0.5 }}\n >\n {helperText}\n </Typography>\n )}\n\n {error && (\n <Typography\n id={errorId}\n variant=\"caption\"\n color=\"error\"\n sx={{ display: 'block', mt: 0.5 }}\n role=\"alert\"\n >\n {error}\n </Typography>\n )}\n\n <UploadAnnouncer\n copy={copy}\n announceDragOver={announceDragOver}\n isUploading={isUploading}\n progress={progress}\n error={error}\n />\n </>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/CommandPalette/CommandPalette.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport EnterIcon from '@mui/icons-material/KeyboardReturn';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport InputBase from '@mui/material/InputBase/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport Slide from '@mui/material/Slide/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled, useTheme } from '@mui/material/styles/index.js';\nimport type { TransitionProps } from '@mui/material/transitions/index.js';\nimport type { FC} from 'react';\nimport React, { } from 'react';\n\nimport { useCommandPalette } from './CommandPalette.hooks';\nimport { PaletteResults } from './CommandPaletteResults';\nimport { ShortcutChip } from './ShortcutChip';\nimport type { CommandPaletteProps } from './CommandPalette.types';\nimport type { CommandPaletteCopy } from '../../../copy';\nimport { scrim } from '../../../tokens/ink';\nimport { rem, sxRem } from '../../../tokens/relative';\n\n// Styled components\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\n '& .MuiBackdrop-root': {\n backgroundColor: scrim(theme, 0.6),\n backdropFilter: 'blur(4px)' },\n '& .MuiDialog-paper': {\n position: 'fixed',\n top: '20%',\n margin: 0,\n maxHeight: 'none',\n background: 'transparent',\n boxShadow: 'none',\n overflow: 'visible' } }));\n\nconst PaletteContainer = styled(Paper)(({ theme }) => ({\n width: '100%',\n maxWidth: 640,\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.98)} 0%, ${alpha(theme.palette.background.paper, 0.95)} 100%)`,\n backdropFilter: 'blur(20px)',\n WebkitBackdropFilter: 'blur(20px)',\n border: `1px solid ${alpha(theme.palette.divider, 0.18)}`,\n borderRadius: theme.shape.borderRadius * 2,\n overflow: 'hidden',\n boxShadow: theme.shadows[24] }));\n\nconst SearchContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(2),\n borderBottom: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }));\n\nconst SearchInput = styled(InputBase)(({ theme }) => ({\n flex: 1,\n fontSize: rem(theme, 18),\n fontWeight: 400,\n '& input': {\n padding: theme.spacing(0, 1),\n '&::placeholder': {\n color: theme.palette.text.secondary,\n opacity: 0.8 } } }));\n\nconst Transition = React.forwardRef<unknown, TransitionProps & { children: React.ReactElement }>(\n function Transition(props, ref) {\n return <Slide direction=\"down\" ref={ref} {...props} />;\n },\n);\n\n// Main component\nconst PaletteSearch: React.FC<{\n inputRef: React.Ref<HTMLInputElement>;\n placeholder?: string;\n value: string;\n dataTestId?: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n}> = ({ inputRef, placeholder, value, dataTestId, onChange, onClose }) => (\n <SearchContainer>\n <SearchIcon sx={{ color: 'text.secondary', mr: 1 }} />\n <SearchInput\n ref={inputRef}\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n inputProps={{ 'data-testid': `${dataTestId}-input` }}\n />\n <IconButton size=\"small\" onClick={onClose} sx={{ ml: 1 }}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </SearchContainer>\n);\n\nconst PaletteFooter: React.FC<{ commandCount: number; copy: CommandPaletteCopy }> = ({\n commandCount,\n copy,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 1,\n borderTop: `1px solid ${alpha(theme.palette.divider, 0.12)}`,\n background: alpha(theme.palette.background.default, 0.4) }}\n >\n <Box sx={{ display: 'flex', gap: 1 }}>\n <ShortcutChip\n icon={<EnterIcon sx={{ fontSize: sxRem(12) }} />}\n label={copy.execute}\n size=\"small\"\n />\n <ShortcutChip label={copy.navigate} size=\"small\" />\n <ShortcutChip label={copy.close} size=\"small\" />\n </Box>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {commandCount} commands\n </Typography>\n </Box>\n );\n};\n\nexport const CommandPalette: FC<CommandPaletteProps> = ({\n copy,\n open,\n onClose,\n commands,\n placeholder = 'Type a command or search...',\n width = '640px',\n maxHeight = '400px',\n showRecent = true,\n recentCommands = [],\n onCommandExecute,\n dataTestId = 'command-palette' }) => {\n const {\n searchQuery,\n setSearchQuery,\n selectedIndex,\n setSelectedIndex,\n searchInputRef,\n listRef,\n filteredCommands,\n groupedCommands,\n executeCommand,\n recentCommandIds } = useCommandPalette({\n open,\n commands,\n showRecent,\n recentCommands,\n onCommandExecute,\n onClose });\n\n const handleSearchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(event.target.value);\n };\n\n return (\n <StyledDialog\n open={open}\n onClose={onClose}\n TransitionComponent={Transition}\n maxWidth={false}\n fullWidth\n data-testid={dataTestId}\n >\n <DialogContent sx={{ overflow: 'visible', p: 0 }}>\n <PaletteContainer elevation={24} sx={{ width, maxHeight }}>\n <PaletteSearch\n inputRef={searchInputRef}\n placeholder={placeholder}\n value={searchQuery}\n dataTestId={dataTestId}\n onChange={handleSearchChange}\n onClose={onClose}\n />\n\n <PaletteResults\n copy={copy}\n listRef={listRef}\n dataTestId={dataTestId}\n searchQuery={searchQuery}\n showRecent={showRecent}\n commands={commands}\n recentCommandIds={recentCommandIds}\n filteredCommands={filteredCommands}\n groupedCommands={groupedCommands}\n selectedIndex={selectedIndex}\n onSelect={setSelectedIndex}\n onExecute={executeCommand}\n />\n\n <PaletteFooter copy={copy} commandCount={filteredCommands.length} />\n </PaletteContainer>\n </DialogContent>\n </StyledDialog>\n );\n};\n\n// Export default\nexport default CommandPalette;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,eAAe;AACtB,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,mBAAmB;AAC1B,OAAO,gBAAgB;AACvB,OAAO,eAAe;AACtB,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,SAAS,OAAO,QAAQ,gBAAgB;AAGxC,OAAO,WAAiB;AAsDb,cAaT,YAbS;AA3CX,IAAM,eAAe,OAAO,MAAM,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAClD,uBAAuB;AAAA,IACrB,iBAAiB,MAAM,OAAO,GAAG;AAAA,IACjC,gBAAgB;AAAA,EAAY;AAAA,EAC9B,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,UAAU;AAAA,EAAU;AAAE,EAAE;AAE5B,IAAM,mBAAmB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY,2BAA2B,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI,CAAC,QAAQ,MAAM,MAAM,QAAQ,WAAW,OAAO,IAAI,CAAC;AAAA,EACrI,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,EACvD,cAAc,MAAM,MAAM,eAAe;AAAA,EACzC,UAAU;AAAA,EACV,WAAW,MAAM,QAAQ,EAAE;AAAE,EAAE;AAEjC,IAAM,kBAAkB,OAAO,GAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAClD,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS,MAAM,QAAQ,CAAC;AAAA,EACxB,cAAc,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,EAC7D,YAAY,MAAM,MAAM,QAAQ,WAAW,SAAS,GAAG;AAAE,EAAE;AAE7D,IAAM,cAAc,OAAO,SAAS,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACpD,MAAM;AAAA,EACN,UAAU,IAAI,OAAO,EAAE;AAAA,EACvB,YAAY;AAAA,EACZ,WAAW;AAAA,IACT,SAAS,MAAM,QAAQ,GAAG,CAAC;AAAA,IAC3B,kBAAkB;AAAA,MAChB,OAAO,MAAM,QAAQ,KAAK;AAAA,MAC1B,SAAS;AAAA,IAAI;AAAA,EAAE;AAAE,EAAE;AAEzB,IAAM,aAAa,MAAM;AAAA,EACvB,SAASA,YAAW,OAAO,KAAK;AAC9B,WAAO,oBAAC,SAAM,WAAU,QAAO,KAAW,GAAG,OAAO;AAAA,EACtD;AACF;AAGA,IAAM,gBAOD,CAAC,EAAE,UAAU,aAAa,OAAO,YAAY,UAAU,QAAQ,MAClE,qBAAC,mBACC;AAAA,sBAAC,cAAW,IAAI,EAAE,OAAO,kBAAkB,IAAI,EAAE,GAAG;AAAA,EACpD;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAa;AAAA,MACb,aAAY;AAAA,MACZ,gBAAe;AAAA,MACf,YAAW;AAAA,MACX,YAAY,EAAE,eAAe,GAAG,UAAU,SAAS;AAAA;AAAA,EACrD;AAAA,EACA,oBAAC,cAAW,MAAK,SAAQ,SAAS,SAAS,IAAI,EAAE,IAAI,EAAE,GACrD,8BAAC,aAAU,UAAS,SAAQ,GAC9B;AAAA,GACF;AAGF,IAAM,gBAA8E,CAAC;AAAA,EACnF;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,WAAW,aAAa,MAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,QAC1D,YAAY,MAAM,MAAM,QAAQ,WAAW,SAAS,GAAG;AAAA,MAAE;AAAA,MAE3D;AAAA,6BAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAE,GACjC;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,oBAAC,aAAU,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,cAC9C,OAAO,KAAK;AAAA,cACZ,MAAK;AAAA;AAAA,UACP;AAAA,UACA,oBAAC,gBAAa,OAAO,KAAK,UAAU,MAAK,SAAQ;AAAA,UACjD,oBAAC,gBAAa,OAAO,KAAK,OAAO,MAAK,SAAQ;AAAA,WAChD;AAAA,QACA,qBAAC,cAAW,SAAQ,WAAU,OAAM,kBACjC;AAAA;AAAA,UAAa;AAAA,WAChB;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,IAAM,iBAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA,aAAa;AAAkB,MAAM;AACrC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAiB,IAAI,kBAAkB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAQ,CAAC;AAEX,QAAM,qBAAqB,CAAC,UAA+C;AACzE,mBAAe,MAAM,OAAO,KAAK;AAAA,EACnC;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,qBAAqB;AAAA,MACrB,UAAU;AAAA,MACV,WAAS;AAAA,MACT,eAAa;AAAA,MAEb,8BAAC,iBAAc,IAAI,EAAE,UAAU,WAAW,GAAG,EAAE,GAC7C,+BAAC,oBAAiB,WAAW,IAAI,IAAI,EAAE,OAAO,UAAU,GACtD;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,UAAU;AAAA,YACV;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA,UAAU;AAAA,YACV;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACD;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV,WAAW;AAAA;AAAA,QACb;AAAA,QAEA,oBAAC,iBAAc,MAAY,cAAc,iBAAiB,QAAQ;AAAA,SACpE,GACF;AAAA;AAAA,EACF;AAEJ;AAGA,IAAO,yBAAQ;","names":["Transition"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Dashboard/DashboardParts.tsx"],"sourcesContent":["'use client';\n\nimport CloseIcon from '@mui/icons-material/Close';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExportIcon from '@mui/icons-material/FileDownloadOutlined';\nimport FilterIcon from '@mui/icons-material/FilterListRounded';\nimport InfoIcon from '@mui/icons-material/InfoOutlined';\nimport SettingsIcon from '@mui/icons-material/SettingsOutlined';\nimport Badge from '@mui/material/Badge/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport DialogTitle from '@mui/material/DialogTitle/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Popover from '@mui/material/Popover/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React, { useState } from 'react';\n\nimport { HeaderActions } from '../../form/HeaderActions';\nimport { HeaderButton } from '../../form/HeaderButton';\nimport { useDashboardContext } from './DashboardContext';\nimport type {\n DashboardActionProps,\n DashboardActionsProps,\n DashboardExportFormat,\n DashboardExportProps,\n DashboardFilterToggleProps,\n DashboardInfoProps,\n DashboardSettingsProps,\n} from './Dashboard.types';\nimport { sxRem } from '../../../tokens/relative';\n\n/** Flexible spacer — everything composed after it is pushed to the right. */\nexport const DashboardSpacer = (): React.JSX.Element => <Box sx={{ flex: 1 }} aria-hidden />;\nDashboardSpacer.displayName = 'Dashboard.Spacer';\n\nexport const DashboardInfo = ({\n title = 'About this page',\n children,\n ariaLabel = 'Page information',\n}: DashboardInfoProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const open = Boolean(anchorEl);\n return (\n <>\n <Tooltip title={ariaLabel}>\n <IconButton\n size=\"small\"\n aria-label={ariaLabel}\n aria-haspopup=\"dialog\"\n onClick={(e) => setAnchorEl(e.currentTarget)}\n data-testid={`${testIdPrefix}-info-trigger`}\n sx={{ color: 'text.secondary' }}\n >\n <InfoIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n slotProps={{ paper: { sx: { width: 360, maxWidth: '90vw' } } }}\n data-testid={`${testIdPrefix}-info-popover`}\n >\n <Box sx={{ px: 2, py: 1.5, borderBottom: 1, borderColor: 'divider', display: 'flex', gap: 1, alignItems: 'center' }}>\n <InfoIcon fontSize=\"small\" sx={{ color: 'text.secondary' }} />\n <Typography sx={{ fontWeight: 600 }}>{title}</Typography>\n </Box>\n <Box sx={{ px: 2, py: 1.5, fontSize: sxRem(14), color: 'text.secondary' }}>{children}</Box>\n </Popover>\n </>\n );\n};\nDashboardInfo.displayName = 'Dashboard.Info';\n\nexport const DashboardFilterToggle = ({ ariaLabel }: DashboardFilterToggleProps): React.JSX.Element => {\n const { filtersVisible, toggleFilters, activeFilterCount, testIdPrefix } = useDashboardContext();\n const label = ariaLabel ?? (filtersVisible ? 'Hide filters' : 'Show filters');\n return (\n <Tooltip title={label}>\n <IconButton\n size=\"small\"\n aria-label={label}\n aria-pressed={filtersVisible}\n onClick={toggleFilters}\n data-testid={`${testIdPrefix}-filter-toggle`}\n sx={{ color: filtersVisible ? 'primary.main' : 'text.secondary', bgcolor: filtersVisible ? 'action.selected' : 'transparent' }}\n >\n <Badge badgeContent={activeFilterCount} color=\"primary\" overlap=\"circular\">\n <FilterIcon fontSize=\"small\" />\n </Badge>\n </IconButton>\n </Tooltip>\n );\n};\nDashboardFilterToggle.displayName = 'Dashboard.FilterToggle';\n\nexport const DashboardSettings = ({\n title = 'Settings',\n closeLabel,\n children,\n ariaLabel = 'Settings',\n href,\n linkComponent,\n}: DashboardSettingsProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n const [open, setOpen] = useState(false);\n\n // Link mode: the gear navigates to a settings route (e.g. the page's\n // Configuração section) instead of opening an in-page dialog.\n if (href) {\n const LinkComponent = linkComponent ?? 'a';\n return (\n <Tooltip title={ariaLabel}>\n <IconButton\n size=\"small\"\n aria-label={ariaLabel}\n component={LinkComponent}\n href={href}\n data-testid={`${testIdPrefix}-settings-trigger`}\n sx={{ color: 'text.secondary' }}\n >\n <SettingsIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n );\n }\n\n return (\n <>\n <Tooltip title={ariaLabel}>\n <IconButton\n size=\"small\"\n aria-label={ariaLabel}\n aria-haspopup=\"dialog\"\n onClick={() => setOpen(true)}\n data-testid={`${testIdPrefix}-settings-trigger`}\n sx={{ color: 'text.secondary' }}\n >\n <SettingsIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Dialog open={open} onClose={() => setOpen(false)} maxWidth=\"sm\" fullWidth data-testid={`${testIdPrefix}-settings-dialog`}>\n <DialogTitle sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n {title}\n <IconButton aria-label={closeLabel} size=\"small\" onClick={() => setOpen(false)}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </DialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n </Dialog>\n </>\n );\n};\nDashboardSettings.displayName = 'Dashboard.Settings';\n\nconst DEFAULT_EXPORT_FORMATS: DashboardExportFormat[] = [\n { id: 'csv', label: 'CSV (.csv)' },\n { id: 'xlsx', label: 'Excel (.xlsx)' },\n { id: 'json', label: 'JSON (.json)' },\n];\n\nexport const DashboardExport = ({\n formats = DEFAULT_EXPORT_FORMATS,\n onExport,\n label = 'Export',\n}: DashboardExportProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n return (\n <>\n <HeaderButton\n variant=\"outlined\"\n color=\"inherit\"\n text={label}\n icon={<ExportIcon fontSize=\"small\" />}\n endIcon={<ExpandMoreIcon fontSize=\"small\" />}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n dataTestId={`${testIdPrefix}-export-trigger`}\n />\n <Menu anchorEl={anchorEl} open={open} onClose={() => setAnchorEl(null)} data-testid={`${testIdPrefix}-export-menu`}>\n {formats.map((format) => (\n <MenuItem\n key={format.id}\n onClick={() => {\n onExport(format.id);\n setAnchorEl(null);\n }}\n data-testid={`${testIdPrefix}-export-${format.id}`}\n >\n {format.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n};\nDashboardExport.displayName = 'Dashboard.Export';\n\nexport const DashboardAction = ({ children }: DashboardActionProps): React.JSX.Element => (\n <Box sx={{ display: 'inline-flex' }}>{children}</Box>\n);\nDashboardAction.displayName = 'Dashboard.Action';\n\n/**\n * The header's actions, declared as a LIST — `<Dashboard.Action>`'s plural.\n *\n * `<Dashboard.Action>` is a slot: it renders whatever you hand it, once per\n * action, and a page with five of them draws five equally-loud buttons. That is\n * the right primitive for one button and the wrong one for five, and the pages\n * here that grew a fifth action all grew it the same way — by adding a fifth\n * slot, because the slot was the only thing on offer.\n *\n * This part answers the question the slot cannot: given N actions, how many\n * belong on the bar? See {@link HeaderActions} for the rule (0 ⇒ nothing,\n * 1 ⇒ a button, n ⇒ a button and a menu of the rest).\n *\n * Both stay. A header still composes `<Dashboard.Action>` for the one control\n * that is not an action at all — a link, a toggle, a status pill — and reaches\n * for this when it has actions to rank.\n */\nexport const DashboardActions = ({\n actions,\n moreLabel,\n collapseBelow,\n}: DashboardActionsProps): React.JSX.Element => {\n const { testIdPrefix } = useDashboardContext();\n return (\n <HeaderActions\n actions={actions}\n moreLabel={moreLabel}\n collapseBelow={collapseBelow}\n testIdPrefix={`${testIdPrefix}-actions`}\n />\n );\n};\nDashboardActions.displayName = 'Dashboard.Actions';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/AddressAutocomplete/AddressTextField.tsx"],"sourcesContent":["import type { TextFieldProps } from '@mui/material/TextField/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport type { AddressAutocompleteProps } from './AddressAutocomplete.types';\n\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { fieldRadius } from '../../../tokens/field-radius';\nimport { fieldControlStyles, fieldTextFieldStyles } from '../../../tokens/field-height';\n\n// Kept module-local on purpose: the inferred type of a styled() component cannot\n// be named across a module boundary here (TS2742), so the plain component below\n// is what the rest of the folder imports.\nconst GlassTextField = styled(TextField)(({ theme }) => ({\n ...fieldControlStyles(theme),\n '& .MuiOutlinedInput-root': {\n borderRadius: fieldRadius(theme),\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.8)} 0%, ${alpha(theme.palette.background.paper, 0.6)} 100%)`,\n backdropFilter: 'blur(10px)',\n WebkitBackdropFilter: 'blur(10px)',\n border: `1px solid ${fieldEdge(theme)}`,\n transition: theme.transitions.create(['border-color', 'box-shadow', 'background']),\n '&:hover': {\n background: `linear-gradient(135deg, ${alpha(theme.palette.background.paper, 0.9)} 0%, ${alpha(theme.palette.background.paper, 0.7)} 100%)`,\n borderColor: theme.palette.primary.main,\n },\n '&.Mui-focused': {\n background: theme.palette.background.paper,\n boxShadow: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.25)}`,\n },\n '& fieldset': {\n border: 'none',\n },\n },\n}));\n\n/** The plain variants: MUI's own field, on the theme's field radius. */\nconst FieldTextField = styled(TextField)(({ theme }) => fieldTextFieldStyles(theme));\n\nexport type AddressTextFieldProps = Omit<TextFieldProps, 'variant'> & {\n addressVariant: AddressAutocompleteProps['variant'];\n};\n\n// 'glass' is not a MUI variant: it renders the outlined field with the frosted\n// treatment on top.\nexport const AddressTextField: FC<AddressTextFieldProps> = ({ addressVariant, ...props }) =>\n addressVariant === 'glass' ? (\n <GlassTextField variant=\"outlined\" {...props} />\n ) : (\n <FieldTextField variant={addressVariant} {...props} />\n );\n"],"mappings":";;;;;;;;;;;;AACA,OAAO,eAAe;AACtB,SAAS,OAAO,cAAc;AA+C1B;AAlCJ,IAAM,iBAAiB,OAAO,SAAS,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACvD,GAAG,mBAAmB,KAAK;AAAA,EAC3B,4BAA4B;AAAA,IAC1B,cAAc,YAAY,KAAK;AAAA,IAC/B,YAAY,2BAA2B,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC,QAAQ,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;AAAA,IACnI,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,QAAQ,aAAa,UAAU,KAAK,CAAC;AAAA,IACrC,YAAY,MAAM,YAAY,OAAO,CAAC,gBAAgB,cAAc,YAAY,CAAC;AAAA,IACjF,WAAW;AAAA,MACT,YAAY,2BAA2B,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC,QAAQ,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;AAAA,MACnI,aAAa,MAAM,QAAQ,QAAQ;AAAA,IACrC;AAAA,IACA,iBAAiB;AAAA,MACf,YAAY,MAAM,QAAQ,WAAW;AAAA,MACrC,WAAW,aAAa,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,IACjE;AAAA,IACA,cAAc;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF;AACF,EAAE;AAGF,IAAM,iBAAiB,OAAO,SAAS,EAAE,CAAC,EAAE,MAAM,MAAM,qBAAqB,KAAK,CAAC;AAQ5E,IAAM,mBAA8C,CAAC,EAAE,gBAAgB,GAAG,MAAM,MACrF,mBAAmB,UACjB,oBAAC,kBAAe,SAAQ,YAAY,GAAG,OAAO,IAE9C,oBAAC,kBAAe,SAAS,gBAAiB,GAAG,OAAO;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/navigation/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["import ChevronRight from '@mui/icons-material/ChevronRight';\nimport MoreVert from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport React, { cloneElement, isValidElement,useRef, useState } from 'react';\n\nimport type { DropdownMenuItem,DropdownMenuProps } from './DropdownMenu.types';\nimport { modeInk, shadowInk, sheen } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\n\n// Resolves every light/dark decision once. The inline version repeated\n// `theme.palette.mode === 'dark' ? … : …` nine times, and two of those had the\n// SAME expression on both branches (background.paper, and common.white for the\n// inset highlight) — so they read as mode-dependent while never varying.\nconst glassTokens = (theme: Theme) => {\n const isDark = theme.palette.mode === 'dark';\n\n return {\n edge: modeInk(theme),\n dropShadowAlpha: isDark ? 0.4 : 0.12,\n insetHighlightAlpha: isDark ? 0.2 : 0.8,\n sheenAlpha: isDark ? 0.1 : 0.8,\n };\n};\n\nconst glassMenuStyles = (theme: Theme): CSSObject => {\n const { edge, dropShadowAlpha, insetHighlightAlpha, sheenAlpha } = glassTokens(theme);\n\n return {\n backgroundColor: alpha(theme.palette.background.paper, 0.75),\n backdropFilter: 'blur(24px) saturate(1.8)',\n WebkitBackdropFilter: 'blur(24px) saturate(1.8)', // Safari support\n border: `1px solid ${alpha(edge, 0.12)}`,\n boxShadow: [\n `0 8px 32px ${shadowInk(theme, dropShadowAlpha)}`,\n `0 0 0 1px ${alpha(edge, 0.05)}`,\n `inset 0 1px 0 ${sheen(theme, insetHighlightAlpha)}`,\n ].join(', '),\n // Enhanced glass morphism with subtle gradient overlay\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: `linear-gradient(135deg, ${sheen(theme, sheenAlpha)} 0%, transparent 50%)`,\n borderRadius: 'inherit',\n pointerEvents: 'none',\n zIndex: 1,\n },\n // Ensure content appears above the overlay\n '& .MuiList-root': {\n position: 'relative',\n zIndex: 2,\n },\n };\n};\n\nconst StyledMenu = styled(Menu, {\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'size',\n})<{ customVariant?: string; size?: string }>(({ theme, customVariant, size }) => ({\n '& .MuiPaper-root': {\n minWidth: 180,\n borderRadius: theme.spacing(1),\n\n ...(customVariant === 'glass' && glassMenuStyles(theme)),\n\n ...(customVariant === 'minimal' && {\n boxShadow: `0 2px 8px ${shadowInk(theme, 0.08)}`,\n border: `1px solid ${theme.palette.divider}`,\n }),\n\n ...(size === 'sm' && {\n '& .MuiMenuItem-root': {\n fontSize: rem(theme, 14),\n minHeight: 32,\n padding: theme.spacing(0.75, 2),\n },\n }),\n\n ...(size === 'lg' && {\n '& .MuiMenuItem-root': {\n fontSize: rem(theme, 18),\n minHeight: 48,\n padding: theme.spacing(1.5, 3),\n },\n }),\n },\n}));\n\nconst StyledMenuItem = styled(MenuItem, {\n shouldForwardProp: (prop) => !['color', 'showIconSpace'].includes(prop as string),\n})<{ color?: string; showIconSpace?: boolean }>(({ theme, color, showIconSpace }) => ({\n borderRadius: theme.spacing(0.5),\n margin: theme.spacing(0.5, 1),\n transition: 'all 0.2s ease',\n\n ...(showIconSpace && {\n paddingLeft: theme.spacing(5),\n }),\n\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n },\n\n ...(color &&\n color !== 'default' && {\n color:\n theme.palette[color as 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success']\n ?.main || theme.palette.text.primary,\n '& .MuiListItemIcon-root': {\n color:\n theme.palette[color as 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success']\n ?.main || theme.palette.text.primary,\n },\n '&:hover': {\n backgroundColor: alpha(\n theme.palette[color as 'primary' | 'secondary' | 'error' | 'warning' | 'info' | 'success']\n ?.main || theme.palette.primary.main,\n 0.08,\n ),\n },\n }),\n}));\n\nconst MenuHeader = styled(Typography)(({ theme }) => ({\n padding: theme.spacing(1, 2),\n fontSize: rem(theme, 12),\n fontWeight: 600,\n textTransform: 'uppercase',\n color: theme.palette.text.secondary,\n letterSpacing: 0.5,\n}));\n\nconst ShortcutText = styled(Typography)(({ theme }) => ({\n fontSize: rem(theme, 12),\n color: theme.palette.text.secondary,\n marginLeft: 'auto',\n paddingLeft: theme.spacing(2),\n}));\n\nconst renderMenuItem = (\n item: DropdownMenuItem,\n handleItemClick: (item: DropdownMenuItem) => void,\n showIconSpace?: boolean,\n size?: string,\n) => {\n if (item.type === 'divider') {\n return <Divider key={item.id} sx={{ my: 0.5 }} />;\n }\n\n if (item.type === 'header') {\n return <MenuHeader key={item.id}>{item.label}</MenuHeader>;\n }\n\n if (item.component) {\n return (\n <Box key={item.id} sx={{ px: 2, py: 1 }}>\n {item.component}\n </Box>\n );\n }\n\n return renderLeafMenuItem(item, handleItemClick, showIconSpace, size);\n};\n\nconst renderLeafMenuItem = (\n item: DropdownMenuItem,\n handleItemClick: (item: DropdownMenuItem) => void,\n showIconSpace?: boolean,\n size?: string,\n) => {\n const hasIcon = !!item.icon;\n const hasChildren = item.children && item.children.length > 0;\n\n return (\n <StyledMenuItem\n key={item.id}\n disabled={item.disabled}\n onClick={!item.disabled ? () => handleItemClick(item) : undefined} // ← change\n color={item.color}\n showIconSpace={showIconSpace && !hasIcon}\n data-testid={item.dataTestId}\n >\n {hasIcon && (\n <ListItemIcon sx={{ minWidth: size === 'sm' ? 32 : 40 }}>{item.icon}</ListItemIcon>\n )}\n <ListItemText primary={item.label} />\n {item.shortcut && <ShortcutText variant=\"caption\">{item.shortcut}</ShortcutText>}\n {hasChildren && item.showChevron !== false && (\n <ChevronRight fontSize=\"small\" sx={{ ml: 1, opacity: 0.5 }} />\n )}\n </StyledMenuItem>\n );\n};\n\n// Open state and anchor are each either caller-supplied or ours. Resolving both\n// here keeps those four branches out of the render body.\nconst resolveMenuState = (\n controlledOpen: boolean | undefined,\n internalOpen: boolean,\n providedAnchorEl: DropdownMenuProps['anchorEl'],\n anchorRef: React.RefObject<HTMLElement | null>,\n) => {\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const anchorEl = providedAnchorEl || anchorRef.current;\n\n return { isControlled, open, anchorEl, isOpen: Boolean(anchorEl) && open };\n};\n\n// Open/close state is either ours or the caller's; every handler has to respect\n// that, so they are grouped here rather than repeating the isControlled check\n// inline four times in the render.\nconst useDropdownHandlers = ({\n isControlled,\n open,\n setInternalOpen,\n onOpen,\n onClose,\n closeOnItemClick,\n anchorRef,\n}: {\n isControlled: boolean;\n open: boolean;\n setInternalOpen: (value: boolean) => void;\n onOpen?: () => void;\n onClose?: () => void;\n closeOnItemClick?: boolean;\n anchorRef: React.RefObject<HTMLElement | null>;\n}) => {\n const handleOpen = () => {\n if (!isControlled) {\n setInternalOpen(true);\n }\n onOpen?.();\n };\n\n const handleClose = () => {\n if (!isControlled) {\n setInternalOpen(false);\n }\n onClose?.();\n };\n\n const handleItemClick = (item: DropdownMenuItem) => {\n item.onClick?.();\n if (closeOnItemClick && !item.children?.length) {\n handleClose();\n }\n };\n\n const handleTriggerClick = (event: React.MouseEvent<HTMLElement>) => {\n if (isControlled) return;\n\n if (open) {\n handleClose();\n return;\n }\n\n (anchorRef as React.MutableRefObject<HTMLElement>).current = event.currentTarget;\n handleOpen();\n };\n\n return { handleClose, handleItemClick, handleTriggerClick };\n};\n\n// The trigger is either a caller-supplied element we clone to attach our click\n// handler and ref, arbitrary children we wrap, or the default kebab icon.\nconst DropdownTrigger: React.FC<{\n trigger: DropdownMenuProps['trigger'];\n anchorRef: React.RefObject<HTMLElement | null>;\n onTriggerClick: (event: React.MouseEvent<HTMLElement>) => void;\n}> = ({ trigger, anchorRef, onTriggerClick }) => {\n if (isValidElement(trigger)) {\n return cloneElement(\n trigger as React.ReactElement<{\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n ref?: React.Ref<HTMLElement>;\n }>,\n { onClick: onTriggerClick, ref: anchorRef },\n );\n }\n\n if (trigger) {\n return (\n <Box ref={anchorRef} onClick={onTriggerClick}>\n {trigger}\n </Box>\n );\n }\n\n return (\n <Box\n ref={anchorRef}\n onClick={onTriggerClick}\n sx={{ cursor: 'pointer', display: 'inline-flex' }}\n >\n <MoreVert />\n </Box>\n );\n};\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n variant = 'default',\n items,\n trigger,\n open: controlledOpen,\n onOpen,\n onClose,\n size = 'md',\n maxHeight = 400,\n minWidth = 180,\n closeOnItemClick = true,\n showIconSpace = false,\n anchorEl: providedAnchorEl,\n ...menuProps\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const anchorRef = useRef<HTMLElement>(null);\n\n const { isControlled, open, anchorEl, isOpen } = resolveMenuState(\n controlledOpen,\n internalOpen,\n providedAnchorEl,\n anchorRef,\n );\n\n const { handleClose, handleItemClick, handleTriggerClick } = useDropdownHandlers({\n isControlled,\n open,\n setInternalOpen,\n onOpen,\n onClose,\n closeOnItemClick,\n anchorRef,\n });\n\n const triggerElement = (\n <DropdownTrigger trigger={trigger} anchorRef={anchorRef} onTriggerClick={handleTriggerClick} />\n );\n\n return (\n <>\n {trigger !== undefined && triggerElement}\n <StyledMenu\n ref={ref}\n anchorEl={anchorEl}\n open={isOpen}\n onClose={handleClose}\n customVariant={variant}\n size={size}\n PaperProps={{\n sx: {\n maxHeight,\n minWidth,\n overflow: 'auto',\n },\n }}\n transformOrigin={{ horizontal: 'left', vertical: 'top' }}\n anchorOrigin={{ horizontal: 'left', vertical: 'bottom' }}\n {...menuProps}\n >\n {items.map((item) => renderMenuItem(item, handleItemClick, showIconSpace, size))}\n </StyledMenu>\n </>\n );\n },\n);\n\nDropdownMenu.displayName = 'DropdownMenu';\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/SettingsLayout/SettingsLayout.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport { withDefaults } from '../../../utils/withDefaults';\nimport { activeItemLabel, filterGroups } from './SettingsLayout.filters';\nimport { SettingsRail } from './SettingsLayout.rail';\nimport { atLeastRail } from './SettingsLayout.styles';\nimport { SettingsPanel } from './SettingsPanel';\nimport type { SettingsLayoutProps } from './SettingsLayout.types';\n\n/**\n * The props with every default already applied.\n *\n * A table through `withDefaults` rather than a `= default` per destructured\n * prop: each of those is a branch, and seven of them put the component over the\n * complexity bar before it renders anything. The single cast is what buys the\n * body non-optional values — without it every use site would restate the\n * default as a `??`, which is the same default written twice and free to drift.\n */\ntype ResolvedProps = SettingsLayoutProps &\n Required<\n Pick<\n SettingsLayoutProps,\n | 'searchPlaceholder'\n | 'defaultQuery'\n | 'emptySearchLabel'\n | 'testIdPrefix'\n | 'railBreakpoint'\n | 'navVariant'\n | 'atIndex'\n | 'backLabel'\n >\n >;\n\nconst DEFAULTS = {\n searchPlaceholder: 'Search settings',\n defaultQuery: '',\n emptySearchLabel: 'No settings match your search.',\n testIdPrefix: 'settings',\n railBreakpoint: 'md',\n navVariant: 'switcher',\n atIndex: false,\n backLabel: 'Back',\n} satisfies Partial<SettingsLayoutProps>;\n\n/** Stacked below the rail's breakpoint, two columns at and above it. */\nfunction shellSx(breakpoint: SettingsLayoutProps['railBreakpoint'], fillHeight: boolean) {\n return (theme: Theme) => ({\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'stretch',\n gap: 1.5,\n width: '100%',\n minWidth: 0,\n // Only ever at the wide shape. Narrow, the rail is a disclosure or the page\n // itself, and two independent scrollbars on a phone is a trap rather than a\n // convenience.\n [atLeastRail(theme, breakpoint ?? 'md')]: {\n flexDirection: 'row',\n gap: 3,\n ...(fillHeight ? { height: '100%', minHeight: 0 } : {}),\n },\n });\n}\n\n/**\n * A reusable, agnostic Facebook-style settings shell: a searchable left rail of\n * grouped categories/subcategories and a central panel that renders the selected\n * configuration screen (`children`). Navigation is data-driven via `groups`; the\n * host owns routing (pass `linkComponent` + item `href`, or handle `onSelectItem`).\n *\n * ## Two narrow-width shapes\n *\n * `navVariant=\"switcher\"` (the default) folds the rail into a disclosure above\n * the panel. `navVariant=\"drilldown\"` gives the phone shape instead: at the\n * area's index the LIST is the page, and inside a section the panel is the page\n * with a back link and a scrollable strip of sibling sections above it.\n *\n * ## Why the width decision is CSS and not JavaScript\n *\n * Every part that changes between the two shapes does it through a `display`\n * pair keyed on `railBreakpoint`. Nothing here asks a media query in JS and\n * renders one branch.\n *\n * That is not a performance preference. A layout that RENDERS one navigation and\n * not the other can offer the narrow width less than the wide one, and no test\n * or review catches it — the missing control simply is not in the tree to be\n * asserted about. With both forms always mounted, \"the narrow width reaches\n * everything the wide one does\" holds by construction, and an audit that counts\n * controls per width gets the same answer at both.\n */\nexport const SettingsLayout: React.FC<SettingsLayoutProps> = (props) => {\n const {\n title,\n groups,\n activeItemId,\n onSelectItem,\n searchPlaceholder,\n defaultQuery,\n emptySearchLabel,\n emptySearchAction,\n linkComponent,\n children,\n testIdPrefix,\n railBreakpoint,\n fillHeight = false,\n navVariant,\n atIndex,\n indexHref,\n backLabel,\n sectionChips,\n } = withDefaults(props, DEFAULTS) as ResolvedProps;\n const [query, setQuery] = useState(defaultQuery);\n const [navOpen, setNavOpen] = useState(false);\n const filteredGroups = useMemo(() => filterGroups(groups, query), [groups, query]);\n const activeLabel = useMemo(() => activeItemLabel(groups, activeItemId), [groups, activeItemId]);\n\n const drilldown = navVariant === 'drilldown';\n const ariaLabel = typeof title === 'string' ? title : 'Settings';\n\n return (\n <Box\n data-testid={testIdPrefix}\n data-nav-variant={navVariant}\n data-at-index={atIndex ? 'true' : 'false'}\n sx={shellSx(railBreakpoint, fillHeight)}\n >\n <SettingsRail\n title={title}\n activeLabel={activeLabel}\n navOpen={navOpen}\n onToggleNav={() => setNavOpen((open) => !open)}\n query={query}\n onQueryChange={setQuery}\n searchPlaceholder={searchPlaceholder}\n emptySearchLabel={emptySearchLabel}\n emptySearchAction={emptySearchAction}\n filteredGroups={filteredGroups}\n activeItemId={activeItemId}\n linkComponent={linkComponent}\n onSelectItem={onSelectItem}\n onNavigate={() => setNavOpen(false)}\n testIdPrefix={testIdPrefix}\n variant={navVariant}\n breakpoint={railBreakpoint}\n atIndex={atIndex}\n fillHeight={fillHeight}\n />\n\n <SettingsPanel\n inSection={drilldown && !atIndex}\n hideOnNarrow={drilldown && atIndex}\n breakpoint={railBreakpoint}\n indexHref={indexHref}\n sectionTitle={props.sectionTitle}\n sectionDescription={props.sectionDescription}\n backLabel={backLabel}\n ariaLabel={ariaLabel}\n sectionChips={sectionChips}\n activeItemId={activeItemId}\n linkComponent={linkComponent}\n onSelectItem={onSelectItem}\n testIdPrefix={testIdPrefix}\n fillHeight={fillHeight}\n >\n {children}\n </SettingsPanel>\n </Box>\n );\n};\n\nSettingsLayout.displayName = 'SettingsLayout';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAS;AAEhB,SAAgB,SAAS,gBAAgB;AAwHrC,SAME,KANF;AAvFJ,IAAM,WAAW;AAAA,EACf,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AACb;AAGA,SAAS,QAAQ,YAAmD,YAAqB;AACvF,SAAO,CAAC,WAAkB;AAAA,IACxB,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA;AAAA;AAAA;AAAA,IAIV,CAAC,YAAY,OAAO,cAAc,IAAI,CAAC,GAAG;AAAA,MACxC,eAAe;AAAA,MACf,KAAK;AAAA,MACL,GAAI,aAAa,EAAE,QAAQ,QAAQ,WAAW,EAAE,IAAI,CAAC;AAAA,IACvD;AAAA,EACF;AACF;AA4BO,IAAM,iBAAgD,CAAC,UAAU;AACtE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa,OAAO,QAAQ;AAChC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,YAAY;AAC/C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,iBAAiB,QAAQ,MAAM,aAAa,QAAQ,KAAK,GAAG,CAAC,QAAQ,KAAK,CAAC;AACjF,QAAM,cAAc,QAAQ,MAAM,gBAAgB,QAAQ,YAAY,GAAG,CAAC,QAAQ,YAAY,CAAC;AAE/F,QAAM,YAAY,eAAe;AACjC,QAAM,YAAY,OAAO,UAAU,WAAW,QAAQ;AAEtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa;AAAA,MACb,oBAAkB;AAAA,MAClB,iBAAe,UAAU,SAAS;AAAA,MAClC,IAAI,QAAQ,gBAAgB,UAAU;AAAA,MAEtC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI;AAAA,YAC7C;AAAA,YACA,eAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,MAAM,WAAW,KAAK;AAAA,YAClC;AAAA,YACA,SAAS;AAAA,YACT,YAAY;AAAA,YACZ;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,aAAa,CAAC;AAAA,YACzB,cAAc,aAAa;AAAA,YAC3B,YAAY;AAAA,YACZ;AAAA,YACA,cAAc,MAAM;AAAA,YACpB,oBAAoB,MAAM;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,eAAe,cAAc;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Command/Command.tsx"],"sourcesContent":["import CloseIcon from '@mui/icons-material/Close';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Chip from '@mui/material/Chip/index.js';\nimport Dialog from '@mui/material/Dialog/index.js';\nimport DialogContent from '@mui/material/DialogContent/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport Fade from '@mui/material/Fade/index.js';\nimport Grow from '@mui/material/Grow/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport List from '@mui/material/List/index.js';\nimport ListItemButton from '@mui/material/ListItemButton/index.js';\nimport ListItemIcon from '@mui/material/ListItemIcon/index.js';\nimport ListItemText from '@mui/material/ListItemText/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, useTheme } from '@mui/material/styles/index.js';\nimport React, { useMemo } from 'react';\n\nimport { resolveCommandProps, useCommandPalette } from './Command.hooks';\nimport { CommandEmpty, CommandLoading } from './Command.parts';\nimport { commandPaperStyles, commandSizeStyles } from './Command.styles';\nimport type {\n CommandGroupProps,\n CommandInputProps,\n CommandItem,\n CommandItemProps,\n CommandListProps,\n CommandProps,\n} from './Command.types';\nimport { rem } from '../../../tokens/relative';\n\nexport { CommandEmpty, CommandLoading, CommandSeparator } from './Command.parts';\n\nconst makeTestId = (dataTestId?: string) => (suffix: string) =>\n dataTestId ? `${dataTestId}-${suffix}` : undefined;\n\nexport const Command: React.FC<CommandProps> = (rawProps) => {\n const props = resolveCommandProps(rawProps);\n const { open, onOpenChange, variant, dataTestId } = props;\n const theme = useTheme();\n const testId = makeTestId(dataTestId);\n\n const { internalValue, filteredItems, highlightedId, handleValueChange, handleSelect, handleKeyDown } =\n useCommandPalette(props);\n\n return (\n <Dialog\n open={open}\n onClose={() => onOpenChange?.(false)}\n maxWidth={false}\n PaperProps={{\n sx: {\n ...commandPaperStyles(theme, props),\n ...commandSizeStyles(theme, props.size),\n overflow: 'hidden',\n ...props.style,\n },\n className: props.className,\n 'data-testid': dataTestId,\n }}\n TransitionComponent={variant === 'glass' ? Fade : Grow}\n onClick={props.onClick}\n >\n <Box sx={{ p: 0 }}>\n <CommandInput\n placeholder={props.placeholder}\n value={internalValue}\n onChange={handleValueChange}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n disabled={props.disabled}\n autoFocus={props.autoFocus}\n onKeyDown={handleKeyDown}\n dataTestId={testId('input')}\n />\n\n <Divider />\n\n <DialogContent sx={{ p: 0, maxHeight: props.maxHeight, overflow: 'auto' }}>\n <CommandBody\n loading={props.loading}\n items={filteredItems}\n value={internalValue}\n emptyMessage={props.emptyMessage}\n onSelect={handleSelect}\n selectedId={highlightedId}\n showCategories={props.showCategories}\n showShortcuts={props.showShortcuts}\n showDescriptions={props.showDescriptions}\n testId={testId}\n />\n {props.children}\n </DialogContent>\n </Box>\n </Dialog>\n );\n};\n\ntype CommandBodyProps = Pick<\n CommandListProps,\n 'items' | 'value' | 'onSelect' | 'selectedId' | 'showCategories' | 'showShortcuts' | 'showDescriptions'\n> & {\n loading: boolean;\n emptyMessage: string;\n testId: (suffix: string) => string | undefined;\n};\n\n/** Three mutually exclusive states share the scrolling area: busy, empty, or a list. */\nconst CommandBody: React.FC<CommandBodyProps> = ({ loading, emptyMessage, testId, ...list }) => {\n if (loading) {\n return <CommandLoading dataTestId={testId('loading')} />;\n }\n\n if (!list.items?.length) {\n return <CommandEmpty message={emptyMessage} dataTestId={testId('empty')} />;\n }\n\n return <CommandList {...list} dataTestId={testId('list')} />;\n};\n\nexport const CommandInput: React.FC<CommandInputProps> = ({\n placeholder,\n value,\n onChange,\n onFocus,\n onBlur,\n disabled,\n autoFocus,\n onKeyDown,\n className,\n style,\n dataTestId,\n}) => (\n <TextField\n fullWidth\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n autoFocus={autoFocus}\n variant=\"standard\"\n className={className}\n inputProps={{\n 'data-testid': dataTestId,\n }}\n sx={{\n p: 2,\n '& .MuiInput-underline:before': { border: 'none' },\n '& .MuiInput-underline:after': { border: 'none' },\n ...style,\n }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon />\n </InputAdornment>\n ),\n endAdornment: value && (\n <InputAdornment position=\"end\">\n <IconButton size=\"small\" onClick={() => onChange?.('')}>\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n );\n\nexport const CommandList: React.FC<CommandListProps> = ({\n items = [],\n onSelect,\n selectedId,\n emptyMessage,\n showCategories,\n showShortcuts,\n showDescriptions,\n loading,\n className,\n style,\n dataTestId,\n}) => {\n const groupedItems = useMemo(() => {\n if (!showCategories) return { '': items };\n\n const groups: Record<string, CommandItem[]> = {};\n items.forEach(item => {\n const category = item.category || '';\n if (!groups[category]) groups[category] = [];\n groups[category].push(item);\n });\n return groups;\n }, [items, showCategories]);\n\n if (loading) return <CommandLoading dataTestId={dataTestId ? `${dataTestId}-loading` : undefined} />;\n if (items.length === 0) return <CommandEmpty message={emptyMessage} dataTestId={dataTestId ? `${dataTestId}-empty` : undefined} />;\n\n return (\n <List className={className} sx={style} data-testid={dataTestId}>\n {Object.entries(groupedItems).map(([category, categoryItems]) => (\n <CommandGroup\n key={category}\n heading={category}\n items={categoryItems}\n onSelect={onSelect}\n selectedId={selectedId}\n showShortcuts={showShortcuts}\n showDescriptions={showDescriptions}\n />\n ))}\n </List>\n );\n};\n\nexport const CommandGroup: React.FC<CommandGroupProps> = ({\n heading,\n items = [],\n onSelect,\n selectedId,\n showShortcuts,\n showDescriptions,\n className,\n style,\n dataTestId,\n}) => {\n const groupTestId = dataTestId || (heading ? `command-group-${heading}` : undefined);\n\n return (\n <Box className={className} sx={style} data-testid={groupTestId}>\n {heading && (\n <Typography\n variant=\"caption\"\n sx={{\n px: 2,\n py: 1,\n display: 'block',\n color: 'text.secondary',\n fontWeight: 600,\n textTransform: 'uppercase',\n }}\n >\n {heading}\n </Typography>\n )}\n {items.map((item) => (\n <CommandItemComponent\n key={item.id}\n {...item}\n selected={selectedId === item.id}\n onSelect={() => onSelect?.(item)}\n showShortcut={showShortcuts}\n showDescription={showDescriptions}\n dataTestId={`command-item-${item.id}`}\n />\n ))}\n </Box>\n );\n};\n\nconst CommandItemComponent: React.FC<CommandItemProps> = ({\n label,\n description,\n icon,\n shortcut,\n disabled,\n selected,\n onSelect,\n showShortcut,\n showDescription,\n className,\n style,\n dataTestId,\n}) => {\n const theme = useTheme();\n\n return (\n <ListItemButton\n onClick={onSelect}\n disabled={disabled}\n selected={selected}\n className={className}\n data-testid={dataTestId}\n sx={{\n py: 1.5,\n px: 2,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n },\n '&.Mui-selected': {\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.16),\n },\n },\n ...style,\n }}\n >\n {icon && (\n <ListItemIcon sx={{ minWidth: 40 }}>\n {icon}\n </ListItemIcon>\n )}\n\n <ListItemText\n primary={label}\n secondary={showDescription && description}\n primaryTypographyProps={{\n fontSize: rem(theme, 14),\n fontWeight: selected ? 600 : 400,\n }}\n secondaryTypographyProps={{\n fontSize: rem(theme, 12),\n }}\n />\n\n {showShortcut && shortcut && (\n <Chip\n label={shortcut}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n height: 20,\n fontSize: rem(theme, 11.2),\n ml: 1,\n }}\n />\n )}\n </ListItemButton>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/typography/Text/Text.tsx"],"sourcesContent":["'use client';\n\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport {\n CAPTION_FONT_SIZE,\n CAPTION_LETTER_SPACING_EM,\n CAPTION_OPACITY,\n CODE_BACKGROUND_ALPHA,\n CODE_BORDER_ALPHA,\n CODE_FONT_SIZE,\n CODE_PADDING,\n CODE_RADIUS_FACTOR,\n HEADING_DEFAULT_WEIGHT,\n HEADING_LETTER_SPACING_EM,\n TEXT_SIZES,\n TEXT_WEIGHTS,\n} from './Text.metrics';\nimport type { TextProps } from './Text.types';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport type { ColorValue } from '../../../tokens/scales';\nimport { rem } from '../../../tokens/relative';\nimport type { UiTypeStep } from '../../../tokens/theme';\n\nconst getColorFromTheme = (theme: Theme, color: ColorValue): string => {\n if (color === 'neutral') {\n return theme.palette.text.primary;\n }\n\n if (color === 'secondary') {\n return theme.palette.text.secondary;\n }\n\n // Exhaustive over ColorValue on purpose. It was a partial `Record<string, …>`\n // with a silent `|| text.primary` fallback, so `info` — accepted by the type\n // — rendered as ordinary body text. Typing the key means a colour added to\n // the vocabulary cannot reach here without a home.\n const colorMap: Record<Exclude<ColorValue, 'neutral' | 'secondary'>, string> = {\n primary: theme.palette.primary.main,\n success: theme.palette.success.main,\n warning: theme.palette.warning.main,\n info: theme.palette.info.main,\n danger: theme.palette.error.main,\n };\n\n return colorMap[color];\n};\n\n// Derived from the shared metrics, not restated: the native `Text` reads the\n// same table, so the two renderers cannot disagree on a size.\n// The table keeps the design px; the size is converted where it is read.\nconst SIZE_MAP: Readonly<Record<string, UiTypeStep | undefined>> = TEXT_SIZES;\n\nconst fontSizeFor = (theme: Theme, customSize: string | undefined): string | undefined => {\n const drawnAt = SIZE_MAP[customSize ?? 'md']?.fontSize;\n return drawnAt === undefined ? undefined : rem(theme, drawnAt);\n};\n\nconst WEIGHT_MAP: Record<string, number> = TEXT_WEIGHTS;\n\ninterface TextStyleArgs {\n theme: Theme;\n customVariant?: string;\n customColor?: ColorValue;\n customSize?: string;\n customWeight?: string;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n}\n\n// underline and strikethrough combine into one declaration rather than one\n// winning over the other.\nconst decorationFor = (underline?: boolean, strikethrough?: boolean): string =>\n [underline && 'underline', strikethrough && 'line-through'].filter(Boolean).join(' ') || 'none';\n\nconst baseTextStyles = (theme: Theme, a: TextStyleArgs): CSSObject => ({\n color: getColorFromTheme(theme, a.customColor ?? 'neutral'),\n fontSize: fontSizeFor(theme, a.customSize),\n lineHeight: SIZE_MAP[a.customSize ?? 'md']?.lineHeight,\n fontWeight: WEIGHT_MAP[a.customWeight ?? 'normal'],\n fontStyle: a.italic ? 'italic' : 'normal',\n textDecoration: decorationFor(a.underline, a.strikethrough),\n transition: 'all 0.2s ease',\n});\n\n// Captions and code shrink relative to the body scale, but only at the default\n// size — an explicit size wins.\nconst sizeOverride = (\n theme: Theme,\n customSize: string | undefined,\n atDefault: number,\n): string | undefined =>\n (customSize ?? 'md') === 'md' ? rem(theme, atDefault) : fontSizeFor(theme, customSize);\n\nconst textVariantStyles = (theme: Theme, a: TextStyleArgs, base: CSSObject): CSSObject => {\n const weight = a.customWeight ?? 'normal';\n\n switch (a.customVariant) {\n case 'heading':\n return {\n ...base,\n fontFamily: theme.typography.h4.fontFamily,\n fontWeight: weight === 'normal' ? HEADING_DEFAULT_WEIGHT : WEIGHT_MAP[weight],\n letterSpacing: `${HEADING_LETTER_SPACING_EM}em`,\n };\n case 'caption':\n return {\n ...base,\n fontSize: sizeOverride(theme, a.customSize, CAPTION_FONT_SIZE),\n opacity: CAPTION_OPACITY,\n letterSpacing: `${CAPTION_LETTER_SPACING_EM}em`,\n };\n case 'code':\n return {\n ...base,\n fontFamily: 'Monaco, Menlo, \"Ubuntu Mono\", \"Courier New\", monospace',\n fontSize: sizeOverride(theme, a.customSize, CODE_FONT_SIZE),\n backgroundColor: alpha(theme.palette.primary.main, CODE_BACKGROUND_ALPHA),\n padding: `${CODE_PADDING.vertical}px ${CODE_PADDING.horizontal}px`,\n borderRadius: theme.shape.borderRadius * CODE_RADIUS_FACTOR,\n border: `1px solid ${alpha(theme.palette.primary.main, CODE_BORDER_ALPHA)}`,\n };\n default:\n return { ...base, fontFamily: theme.typography.body1.fontFamily };\n }\n};\n\nconst StyledText = styled(Typography, {\n shouldForwardProp: (prop) =>\n ![\n 'customVariant',\n 'customColor',\n 'customSize',\n 'customWeight',\n 'italic',\n 'underline',\n 'strikethrough',\n ].includes(prop as string),\n})<{\n customVariant?: string;\n customColor?: ColorValue;\n customSize?: string;\n customWeight?: string;\n italic?: boolean;\n underline?: boolean;\n strikethrough?: boolean;\n}>((args) => {\n const { theme } = args;\n return textVariantStyles(theme, args, baseTextStyles(theme, args));\n});\n\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n variant = 'body',\n color = 'neutral',\n size = 'md',\n weight = 'normal',\n as = 'span',\n italic = false,\n underline = false,\n strikethrough = false,\n children,\n ...others\n },\n ref,\n ) => {\n // `testID` and `dataTestId` are the shared contract's spellings; the DOM\n // wants `data-testid`, and must not see the other two as attributes.\n const testId = resolveTestId(others);\n const props = withoutTestIdProps(others);\n return (\n <StyledText\n ref={ref}\n data-testid={testId}\n customVariant={variant}\n customColor={color}\n customSize={size}\n customWeight={weight}\n italic={italic}\n underline={underline}\n strikethrough={strikethrough}\n {...(as && { as })}\n {...props}\n >\n {children}\n </StyledText>\n );\n },\n);\n\nText.displayName = 'Text';"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/Collapsible/Collapsible.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport Collapse from '@mui/material/Collapse/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React, { useCallback,useEffect, useRef, useState } from 'react';\n\nimport {\n dimmedStyles,\n regionAttrs,\n transitionSettings,\n triggerStyles,\n} from './Collapsible.helpers';\nimport type { CollapsibleContentProps,CollapsibleProps, CollapsibleTriggerProps } from './Collapsible.types';\n\n/**\n * The smooth and spring variants animate an explicit pixel height, so the content\n * has to be measured after every render that could have changed it.\n */\nconst useMeasuredHeight = (\n open: boolean,\n maxHeight: number | undefined,\n children: React.ReactNode,\n) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number | 'auto'>('auto');\n\n const measureHeight = useCallback(() => {\n if (contentRef.current) {\n const scrollHeight = contentRef.current.scrollHeight;\n // Cap at maxHeight if provided\n setHeight(maxHeight ? Math.min(scrollHeight, maxHeight) : scrollHeight);\n }\n }, [maxHeight]);\n\n useEffect(() => {\n if (!open) {\n setHeight(0);\n } else if (contentRef.current) {\n measureHeight();\n }\n }, [open, measureHeight, children]);\n\n return { contentRef, height };\n};\n\ntype VariantProps = Omit<CollapsibleProps, 'variant' | 'onToggle'> & {\n duration: number;\n disabled: boolean;\n keepMounted: boolean;\n transition: { duration: number; easing: string };\n};\n\n// Use MUI's built-in Collapse for the default variant.\nconst DefaultCollapsible: React.FC<VariantProps> = ({\n children,\n open,\n duration,\n disabled,\n keepMounted,\n maxHeight,\n sx,\n className,\n dataTestId,\n transition: _transition,\n easing: _easing,\n ...otherProps\n}) => (\n <Collapse\n in={open && !disabled}\n timeout={disabled ? 0 : duration}\n sx={{\n ...dimmedStyles(disabled),\n ...(maxHeight && { maxHeight, overflow: 'hidden' }),\n ...sx,\n }}\n className={className}\n unmountOnExit={!keepMounted}\n {...regionAttrs({ open, disabled, dataTestId })}\n {...otherProps}\n >\n <Box>{children}</Box>\n </Collapse>\n);\n\nconst AnimatedCollapsible: React.FC<VariantProps> = ({\n children,\n open,\n disabled,\n keepMounted,\n maxHeight,\n transition,\n sx,\n className,\n dataTestId,\n duration: _duration,\n easing: _easing,\n ...otherProps\n}) => {\n const { contentRef, height } = useMeasuredHeight(open, maxHeight, children);\n\n return (\n <Box\n component=\"div\"\n sx={{\n overflow: 'hidden',\n height: open && !disabled ? height : 0,\n transition: disabled ? 'none' : `height ${transition.duration}ms ${transition.easing}`,\n willChange: disabled ? 'auto' : 'height',\n ...dimmedStyles(disabled),\n ...sx,\n }}\n className={className}\n {...regionAttrs({ open, disabled, dataTestId })}\n {...otherProps}\n >\n <Box ref={contentRef}>{(keepMounted || (open && !disabled)) && children}</Box>\n </Box>\n );\n};\n\nexport const Collapsible: React.FC<CollapsibleProps> = ({\n variant = 'default',\n duration = 300,\n easing,\n onToggle,\n disabled = false,\n keepMounted = false,\n ...rest\n}) => {\n const theme = useTheme();\n const { open } = rest;\n\n // Trigger onToggle callback when open state changes\n useEffect(() => {\n if (onToggle && !disabled) {\n onToggle(open);\n }\n }, [open, onToggle, disabled]);\n\n const variantProps: VariantProps = {\n ...rest,\n duration,\n easing,\n disabled,\n keepMounted,\n transition: transitionSettings(theme, variant, duration, easing),\n };\n\n return variant === 'default' ? (\n <DefaultCollapsible {...variantProps} />\n ) : (\n <AnimatedCollapsible {...variantProps} />\n );\n};\n\nexport const CollapsibleTrigger: React.FC<CollapsibleTriggerProps> = ({\n children,\n onClick,\n disabled = false,\n expanded = false,\n className,\n dataTestId,\n ...otherProps\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n component=\"button\"\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n className={className}\n data-testid={dataTestId}\n aria-expanded={expanded}\n aria-disabled={disabled}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n data-state={expanded ? 'open' : 'closed'}\n sx={triggerStyles(theme, { disabled, expanded })}\n {...otherProps}\n >\n {children}\n </Box>\n );\n};\n\nexport const CollapsibleContent: React.FC<CollapsibleContentProps> = ({\n children,\n className,\n ...otherProps\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n className={className}\n sx={{\n padding: theme.spacing(2),\n }}\n {...otherProps}\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/CategorySelect/CategoryTrigger.tsx"],"sourcesContent":["'use client';\n\nimport type { CategorySelectCopy } from \"../../../copy\";\nimport Box from '@mui/material/Box/index.js';\n\nimport { CaretGlyph } from './CategoryIcons';\nimport {\n triggerChevronSx,\n triggerClearSx,\n triggerCountSx,\n triggerSx,\n} from './CategorySelect.styles';\n\ninterface CategoryTriggerProps {\n /** The words this renders. REQUIRED — this package ships no default copy. */\n copy: CategorySelectCopy;\n /** Text shown when nothing is selected. */\n placeholder: string;\n /** Resolved label when there IS a selection (single mode shows \"Pai › Filha\"). */\n selectionLabel?: string;\n /** Selection size — rendered as the count pill in multi-select. */\n count?: number;\n open: boolean;\n disabled?: boolean;\n fullWidth: boolean;\n onOpen: () => void;\n /** Absent when there is nothing to clear. */\n onClear?: () => void;\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n dataTestId: string;\n}\n\n/**\n * The closed control.\n *\n * The clear (×) is a real button nested in the trigger button, so \"remove the\n * filter\" is one click from the closed state — without it, clearing means open,\n * find Clear, apply. Its click is stopped from reaching the trigger, which would\n * otherwise open the panel on the way out.\n */\nexport function CategoryTrigger({\n placeholder,\n selectionLabel,\n count,\n open,\n disabled,\n fullWidth,\n onOpen,\n onClear,\n triggerRef,\n dataTestId,\n copy,\n}: CategoryTriggerProps): React.JSX.Element {\n const hasSelection = Boolean(selectionLabel) || (count ?? 0) > 0;\n return (\n <Box\n component=\"button\"\n type=\"button\"\n ref={triggerRef}\n disabled={disabled}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n data-testid={`${dataTestId}-trigger`}\n onClick={onOpen}\n sx={(theme) => ({\n ...triggerSx(theme, hasSelection, open),\n width: fullWidth ? '100%' : 'auto',\n })}\n >\n <Box\n component=\"span\"\n sx={{\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 190,\n flex: fullWidth ? 1 : '0 1 auto',\n textAlign: 'left',\n }}\n >\n {selectionLabel ?? placeholder}\n </Box>\n {count !== undefined && count > 0 && (\n <Box component=\"span\" sx={triggerCountSx} data-testid={`${dataTestId}-count`}>\n {count}\n </Box>\n )}\n {hasSelection && onClear && (\n <Box\n component=\"span\"\n role=\"button\"\n tabIndex={0}\n aria-label={copy.clearSelection}\n data-testid={`${dataTestId}-clear-trigger`}\n sx={triggerClearSx}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n onClear();\n }}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n event.stopPropagation();\n onClear();\n }}\n >\n ×\n </Box>\n )}\n <CaretGlyph style={triggerChevronSx(open) as React.CSSProperties} />\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;AAGA,OAAO,SAAS;AAoDZ,SAcE,KAdF;AAfG,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4C;AAC1C,QAAM,eAAe,QAAQ,cAAc,MAAM,SAAS,KAAK;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,MACA,iBAAc;AAAA,MACd,iBAAe;AAAA,MACf,eAAa,GAAG,UAAU;AAAA,MAC1B,SAAS;AAAA,MACT,IAAI,CAAC,WAAW;AAAA,QACd,GAAG,UAAU,OAAO,cAAc,IAAI;AAAA,QACtC,OAAO,YAAY,SAAS;AAAA,MAC9B;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,cAAc;AAAA,cACd,UAAU;AAAA,cACV,MAAM,YAAY,IAAI;AAAA,cACtB,WAAW;AAAA,YACb;AAAA,YAEC,4BAAkB;AAAA;AAAA,QACrB;AAAA,QACC,UAAU,UAAa,QAAQ,KAC9B,oBAAC,OAAI,WAAU,QAAO,IAAI,gBAAgB,eAAa,GAAG,UAAU,UACjE,iBACH;AAAA,QAED,gBAAgB,WACf;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,UAAU;AAAA,YACV,cAAY,KAAK;AAAA,YACjB,eAAa,GAAG,UAAU;AAAA,YAC1B,IAAI;AAAA,YACJ,SAAS,CAAC,UAA4B;AACpC,oBAAM,gBAAgB;AACtB,sBAAQ;AAAA,YACV;AAAA,YACA,WAAW,CAAC,UAA+B;AACzC,kBAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,IAAK;AAChD,oBAAM,eAAe;AACrB,oBAAM,gBAAgB;AACtB,sBAAQ;AAAA,YACV;AAAA,YACD;AAAA;AAAA,QAED;AAAA,QAEF,oBAAC,cAAW,OAAO,iBAAiB,IAAI,GAA0B;AAAA;AAAA;AAAA,EACpE;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Checkbox/Checkbox.tsx"],"sourcesContent":["import MuiCheckbox from '@mui/material/Checkbox/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport FormControlLabel from '@mui/material/FormControlLabel/index.js';\nimport FormHelperText from '@mui/material/FormHelperText/index.js';\nimport { alpha, keyframes, styled } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { makeTestId, resolveCheckboxProps } from './Checkbox.helpers';\nimport {\n CHECKBOX_GLOW,\n CHECKBOX_HELPER,\n CHECKBOX_HOVER_ALPHA,\n CHECKBOX_LABEL,\n CHECKBOX_PULSE,\n CHECKBOX_SPINNER,\n CHECKBOX_TRANSITION_MS,\n CHECKBOX_VARIANT,\n effectInk,\n} from './Checkbox.metrics';\nimport type { CheckboxProps } from './Checkbox.types';\nimport { splitTestId } from '../../../platform/test-id';\nimport { rem } from '../../../tokens/relative';\n\nconst pulse = keyframes`\n 0% {\n box-shadow: 0 0 0 0 ${effectInk(CHECKBOX_PULSE.alpha)};\n }\n 70% {\n box-shadow: 0 0 0 ${CHECKBOX_PULSE.spread}px ${effectInk(0)};\n }\n 100% {\n box-shadow: 0 0 0 0 ${effectInk(0)};\n }\n`;\n\nconst glow = keyframes`\n 0%, 100% {\n box-shadow: 0 0 ${CHECKBOX_GLOW.blur.from}px ${effectInk(CHECKBOX_GLOW.alpha.from)};\n }\n 50% {\n box-shadow: 0 0 ${CHECKBOX_GLOW.blur.to}px ${effectInk(CHECKBOX_GLOW.alpha.to)};\n }\n`;\n\nconst StyledCheckbox = styled(MuiCheckbox, {\n shouldForwardProp: (prop) => !['customVariant', 'ripple', 'glow', 'pulse'].includes(prop as string),\n})<{ \n customVariant?: CheckboxProps['variant'];\n ripple?: boolean;\n glow?: boolean;\n pulse?: boolean;\n}>(\n ({ theme, customVariant, ripple, glow: glowProp, pulse: pulseProp }) => ({\n ...(customVariant === 'rounded' && {\n '& .MuiSvgIcon-root': {\n borderRadius: CHECKBOX_VARIANT.rounded.radius,\n },\n }),\n \n ...(customVariant === 'toggle' && {\n '& .MuiSvgIcon-root': {\n borderRadius: `${CHECKBOX_VARIANT.toggle.radius}px`,\n transform: `scale(${CHECKBOX_VARIANT.toggle.scale})`,\n },\n }),\n \n '&.MuiCheckbox-root': {\n transition: `all ${CHECKBOX_TRANSITION_MS / 1000}s ease`,\n ...(ripple === false && {\n '& .MuiTouchRipple-root': {\n display: 'none',\n },\n }),\n ...(glowProp && {\n animation: `${glow} ${CHECKBOX_GLOW.ms / 1000}s ease-in-out infinite`,\n }),\n ...(pulseProp && {\n animation: `${pulse} ${CHECKBOX_PULSE.ms / 1000}s infinite`,\n }),\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, CHECKBOX_HOVER_ALPHA),\n },\n },\n \n '&.Mui-checked': {\n color: theme.palette.primary.main,\n },\n \n '&.MuiCheckbox-indeterminate': {\n color: theme.palette.primary.main,\n },\n })\n);\n\nconst StyledFormControlLabel = styled(FormControlLabel, {\n shouldForwardProp: (prop) => prop !== 'error',\n})<{ error?: boolean }>(\n ({ theme, error }) => ({\n marginLeft: CHECKBOX_LABEL.marginLeft,\n '& .MuiFormControlLabel-label': {\n color: error ? theme.palette.error.main : theme.palette.text.primary,\n fontSize: rem(theme, CHECKBOX_LABEL.fontSize),\n },\n })\n);\n\nconst StyledFormHelperText = styled(FormHelperText)(({ theme }) => ({\n marginLeft: theme.spacing(CHECKBOX_HELPER.marginLeftUnits),\n marginTop: theme.spacing(CHECKBOX_HELPER.marginTopUnits),\n}));\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (rawProps, ref) => {\n const {\n variant,\n label,\n error,\n helperText,\n loading,\n ripple,\n glow,\n pulse,\n disabled,\n ...others\n } = resolveCheckboxProps(rawProps);\n const isDisabled = disabled || loading;\n const { testId: dataTestId, rest: props } = splitTestId(others);\n const testId = makeTestId(dataTestId);\n\n const checkbox = (\n <div style={{ position: 'relative', display: 'inline-flex' }}>\n <StyledCheckbox\n ref={ref}\n customVariant={variant}\n ripple={ripple}\n glow={glow}\n pulse={pulse}\n disabled={isDisabled}\n data-testid={dataTestId || 'checkbox'}\n {...props}\n />\n {loading && (\n <CircularProgress\n size={CHECKBOX_SPINNER.size}\n sx={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: `${CHECKBOX_SPINNER.offset}px`,\n marginLeft: `${CHECKBOX_SPINNER.offset}px`,\n color: 'primary.main',\n }}\n />\n )}\n </div>\n );\n \n if (label) {\n return (\n <div data-testid={testId('container')}>\n <StyledFormControlLabel\n control={checkbox}\n label={label}\n error={error}\n disabled={isDisabled}\n />\n {helperText && (\n <StyledFormHelperText \n error={error}\n data-testid={testId('helper')}\n >\n {helperText}\n </StyledFormHelperText>\n )}\n </div>\n );\n }\n \n return checkbox;\n }\n);\n\nCheckbox.displayName = 'Checkbox';"],"mappings":"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","names":["glow","pulse"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/CategorySelect/CategoryRows.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\n\nimport type { CategorySelectCopy } from '../../../copy';\nimport { CheckGlyph, DisclosureGlyph } from './CategoryIcons';\nimport { highlightSegments, type CategoryCheckState } from './category-tree';\nimport {\n checkboxBarSx,\n checkboxSx,\n chevronButtonSx,\n markSx,\n METRICS,\n radioSx,\n rowIndent,\n rowMetaSx,\n rowNameSx,\n rowSx,\n sectionHeadSx,\n} from './CategorySelect.styles';\nimport type { CategorySelectOption } from './CategorySelect.types';\n\n/** A label with the search hit marked. */\nexport function HighlightedName({\n text,\n query,\n}: {\n text: string;\n query: string;\n}): React.JSX.Element {\n const segments = highlightSegments(text, query);\n return (\n <>\n {segments.map((segment, index) =>\n segment.match ? (\n <Box component=\"mark\" key={`${segment.text}-${index}`} sx={markSx}>\n {segment.text}\n </Box>\n ) : (\n <span key={`${segment.text}-${index}`}>{segment.text}</span>\n ),\n )}\n </>\n );\n}\n\n/** Tri-state checkbox. `partial` draws the bar the prototype uses for \"some\". */\nexport function CategoryCheckbox({ state }: { state: CategoryCheckState }): React.JSX.Element {\n return (\n <Box sx={(theme) => checkboxSx(theme, state)} aria-hidden=\"true\">\n {state === 'on' && <CheckGlyph />}\n {state === 'partial' && <Box sx={checkboxBarSx} />}\n </Box>\n );\n}\n\nexport function CategoryRadio({ on }: { on: boolean }): React.JSX.Element {\n return <Box sx={(theme) => radioSx(theme, on)} aria-hidden=\"true\" />;\n}\n\ninterface CategoryTreeRowProps {\n option: CategorySelectOption;\n query: string;\n /** 0 for a top-level category; each level below indents one more step. */\n depth: number;\n /** True when there is something under this row to fold. */\n branch: boolean;\n expanded: boolean;\n active: boolean;\n sheet: boolean;\n /** Absent where the row cannot be picked — a category acting as a frame. */\n checkState?: CategoryCheckState;\n /** Single-select draws a radio for the control: choosing a row is exclusive. */\n single: boolean;\n selectedCount: number;\n showCounts: boolean;\n onToggleExpanded: () => void;\n onActivate: () => void;\n dataTestId: string;\n copy: CategorySelectCopy;\n}\n\n/** The trailing number: how many leaves are picked below, else the item count. */\nfunction rowMeta(\n selectedCount: number,\n showCounts: boolean,\n count: number | undefined,\n): { text: string; selected: boolean } | null {\n if (selectedCount > 0) return { text: String(selectedCount), selected: true };\n if (showCounts && count !== undefined) return { text: String(count), selected: false };\n return null;\n}\n\n/** The disclosure chevron, or the space it would have taken on a leaf row. */\nfunction RowDisclosure({\n option,\n expanded,\n branch,\n onToggleExpanded,\n dataTestId,\n copy,\n}: Pick<\n CategoryTreeRowProps,\n 'option' | 'expanded' | 'branch' | 'onToggleExpanded' | 'dataTestId' | 'copy'\n>): React.JSX.Element {\n if (!branch) {\n return <Box sx={{ width: METRICS.chevronButton, flex: '0 0 auto' }} />;\n }\n return (\n <Box\n component=\"button\"\n type=\"button\"\n tabIndex={-1}\n aria-label={expanded ? copy.collapseCategory(option.name) : copy.expandCategory(option.name)}\n data-testid={`${dataTestId}-expand-${option.id}`}\n sx={(theme) => chevronButtonSx(theme, expanded)}\n onClick={(event: React.MouseEvent) => {\n event.stopPropagation();\n onToggleExpanded();\n }}\n >\n <DisclosureGlyph />\n </Box>\n );\n}\n\n/** The row's selection control, or the space it would have taken on a frame. */\nfunction RowControl({\n checkState,\n single,\n}: Pick<CategoryTreeRowProps, 'checkState' | 'single'>): React.JSX.Element {\n if (!checkState) return <Box sx={{ width: METRICS.boxSize, flex: '0 0 auto' }} />;\n // Single-select commits the moment a row is chosen, so the control is a radio\n // there: a checkbox would promise the accumulation this mode does not do.\n if (single) return <CategoryRadio on={checkState === 'on'} />;\n return <CategoryCheckbox state={checkState} />;\n}\n\n/**\n * The test id a row answers to.\n *\n * Keyed on DEPTH rather than on whether the row has children, because that is\n * what the ids meant when the tree was two levels and specs were written against\n * them: `-category-<id>` is a top-level row — childless or not — and `-option-`\n * is anything filed under one.\n */\nfunction rowTestId(dataTestId: string, depth: number, id: string): string {\n return depth === 0 ? `${dataTestId}-category-${id}` : `${dataTestId}-option-${id}`;\n}\n\n/**\n * One row of the tree: disclosure chevron, optional control, name, meta.\n *\n * The chevron is its OWN button inside the row — clicking it only folds, while\n * clicking the row does the row's job (expand as a frame, or mark when the row\n * is selectable). A LEAF has neither a fold nor a frame to be: it draws no\n * chevron, and it always carries the control, because it is what you pick.\n */\nexport function CategoryTreeRow({\n option,\n query,\n depth,\n branch,\n expanded,\n active,\n sheet,\n checkState,\n single,\n selectedCount,\n showCounts,\n onToggleExpanded,\n onActivate,\n dataTestId,\n copy,\n}: CategoryTreeRowProps): React.JSX.Element {\n const meta = rowMeta(selectedCount, showCounts, option.count);\n return (\n <Box\n component=\"div\"\n role={checkState ? 'option' : 'button'}\n aria-selected={checkState ? checkState === 'on' : undefined}\n aria-expanded={branch ? expanded : undefined}\n data-testid={rowTestId(dataTestId, depth, option.id)}\n sx={(theme) => ({ ...rowSx(theme, active, sheet), ...rowIndent(depth) })}\n onClick={onActivate}\n >\n <RowDisclosure\n option={option}\n expanded={expanded}\n branch={branch}\n onToggleExpanded={onToggleExpanded}\n dataTestId={dataTestId}\n copy={copy}\n />\n <RowControl checkState={checkState} single={single} />\n <Box component=\"span\" sx={(theme) => rowNameSx(theme, depth === 0)}>\n <HighlightedName text={option.name} query={query} />\n </Box>\n {meta && (\n <Box component=\"span\" sx={(theme) => rowMetaSx(theme, meta.selected)}>\n {meta.text}\n </Box>\n )}\n </Box>\n );\n}\n\n/** The category as a non-interactive heading (single-select, leaf-only). */\nexport function CategorySectionHeading({\n option,\n query,\n}: {\n option: CategorySelectOption;\n query: string;\n}): React.JSX.Element {\n return (\n <Box sx={sectionHeadSx}>\n <HighlightedName text={option.name} query={query} />\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/AddressAutocomplete/AddressFallbackField.tsx"],"sourcesContent":["import Alert from '@mui/material/Alert/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport type { FC, ReactNode } from 'react';\nimport React from 'react';\n\nimport type { AddressAutocompleteProps } from './AddressAutocomplete.types';\nimport { AddressTextField } from './AddressTextField';\n\nexport interface AddressFallbackFieldProps {\n copy: AddressAutocompleteProps['copy'];\n variant: AddressAutocompleteProps['variant'];\n label?: string;\n placeholder?: string;\n icon?: ReactNode;\n floating: boolean;\n fullWidth: boolean;\n mapsError: string | null;\n}\n\n// Stands in for the Autocomplete before Google Maps is usable: a disabled field\n// that either spins or explains why it never loaded.\nexport const AddressFallbackField: FC<AddressFallbackFieldProps> = ({\n copy,\n variant,\n label,\n placeholder,\n icon,\n floating,\n fullWidth,\n mapsError,\n}) => {\n const startAdornment = icon ? <InputAdornment position=\"start\">{icon}</InputAdornment> : undefined;\n\n if (!mapsError) {\n return (\n <AddressTextField\n addressVariant={variant}\n label={floating ? undefined : label}\n placeholder={copy.loadingMaps}\n disabled\n fullWidth={fullWidth}\n InputProps={{\n startAdornment,\n endAdornment: <CircularProgress color=\"inherit\" size={20} />,\n }}\n />\n );\n }\n\n return (\n <Box>\n <AddressTextField\n addressVariant={variant}\n label={floating ? undefined : label}\n placeholder={placeholder}\n error\n disabled\n fullWidth={fullWidth}\n helperText={mapsError}\n InputProps={{ startAdornment }}\n />\n <Alert severity=\"error\" sx={{ mt: 1 }}>\n {copy.mapsLoadFailed}\n </Alert>\n </Box>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAChB,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AA8BK,cAmB5B,YAnB4B;AAVzB,IAAM,uBAAsD,CAAC;AAAA,EAClE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAiB,OAAO,oBAAC,kBAAe,UAAS,SAAS,gBAAK,IAAoB;AAEzF,MAAI,CAAC,WAAW;AACd,WACE;AAAA,MAAC;AAAA;AAAA,QACC,gBAAgB;AAAA,QAChB,OAAO,WAAW,SAAY;AAAA,QAC9B,aAAa,KAAK;AAAA,QAClB,UAAQ;AAAA,QACR;AAAA,QACA,YAAY;AAAA,UACV;AAAA,UACA,cAAc,oBAAC,oBAAiB,OAAM,WAAU,MAAM,IAAI;AAAA,QAC5D;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,qBAAC,OACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,gBAAgB;AAAA,QAChB,OAAO,WAAW,SAAY;AAAA,QAC9B;AAAA,QACA,OAAK;AAAA,QACL,UAAQ;AAAA,QACR;AAAA,QACA,YAAY;AAAA,QACZ,YAAY,EAAE,eAAe;AAAA;AAAA,IAC/B;AAAA,IACA,oBAAC,SAAM,UAAS,SAAQ,IAAI,EAAE,IAAI,EAAE,GACjC,eAAK,gBACR;AAAA,KACF;AAEJ;","names":[]}