@12-apps/ui 6.37.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.
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +4 -4
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +40 -40
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +48 -49
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -5
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +4 -5
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +5 -6
- package/dist/_internal/components/data-display/DataViews/base-card.js +4 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +7 -8
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +37 -37
- package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +11 -11
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +14 -15
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +2 -2
- package/dist/_internal/components/data-display/DataViews/save-view-preview.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +4 -4
- package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +4 -4
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +5 -5
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -3
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -3
- package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -3
- package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
- package/dist/_internal/components/data-display/index.js +11 -11
- package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
- package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +2 -2
- package/dist/_internal/components/feedback/Modal/Modal.js +3 -2
- package/dist/_internal/components/feedback/Modal/Modal.styles.js +2 -1
- package/dist/_internal/components/feedback/Sonner/Sonner.js +2 -2
- package/dist/_internal/components/feedback/Sonner/SonnerToast.js +1 -1
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -3
- package/dist/_internal/components/feedback/StackedModal/StackedModal.parts.js +3 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.styles.js +2 -1
- package/dist/_internal/components/feedback/Toast/Toast.js +2 -1
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.geometry.js +1 -1
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.hooks.js +3 -2
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +5 -4
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialStepBody.js +2 -1
- package/dist/_internal/components/feedback/index.js +14 -15
- package/dist/_internal/components/form/total-form/FormErrorSnackbar.js +3 -2
- package/dist/_internal/components/index.js +83 -84
- package/dist/_internal/components/layout/Accordion/Accordion.js +3 -2
- package/dist/_internal/components/layout/Accordion/Accordion.styles.js +2 -1
- package/dist/_internal/components/layout/Box/Box.js +1 -1
- package/dist/_internal/components/layout/Card/Card.js +3 -3
- package/dist/_internal/components/layout/Card/Card.styles.js +2 -2
- package/dist/_internal/components/layout/Collapsible/Collapsible.helpers.js +2 -1
- package/dist/_internal/components/layout/Collapsible/Collapsible.js +3 -2
- package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
- package/dist/_internal/components/layout/Dashboard/Dashboard.js +2 -2
- package/dist/_internal/components/layout/Dashboard/DashboardParts.js +1 -1
- package/dist/_internal/components/layout/Drawer/Drawer.js +2 -1
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +5 -4
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.styles.js +6 -3
- package/dist/_internal/components/layout/ScrollArea/ScrollAreaContent.js +2 -1
- package/dist/_internal/components/layout/ScrollArea/ScrollViewport.js +3 -2
- package/dist/_internal/components/layout/Separator/Separator.js +4 -2
- package/dist/_internal/components/layout/Separator/Separator.styles.js +3 -1
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.items.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +8 -8
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.rail.js +4 -4
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.styles.js +6 -5
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +5 -5
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionHeader.js +2 -2
- package/dist/_internal/components/layout/SettingsLayout/SettingsStatusMarker.js +2 -2
- package/dist/_internal/components/layout/Sidebar/Sidebar.js +2 -1
- package/dist/_internal/components/layout/Skeleton/Skeleton.js +3 -2
- package/dist/_internal/components/layout/Skeleton/Skeleton.styles.js +6 -3
- package/dist/_internal/components/layout/Spacer/Spacer.js +2 -1
- package/dist/_internal/components/layout/Stack/Stack.js +2 -2
- package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
- package/dist/_internal/components/layout/index.js +27 -28
- package/dist/_internal/components/navigation/AppHeader/AppHeader.brand.js +1 -1
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +3 -4
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +2 -2
- package/dist/_internal/components/navigation/AppHeader/AppHeader.js +1 -1
- package/dist/_internal/components/navigation/Breadcrumbs/BreadcrumbEntry.js +2 -2
- package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.js +3 -3
- package/dist/_internal/components/navigation/Breadcrumbs/Breadcrumbs.styles.js +1 -1
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +3 -3
- package/dist/_internal/components/navigation/CommandPalette/CommandPaletteResults.js +2 -2
- package/dist/_internal/components/navigation/CommandPalette/ShortcutChip.js +1 -1
- package/dist/_internal/components/navigation/ContextMenu/ContextMenu.js +1 -1
- package/dist/_internal/components/navigation/DropdownMenu/DropdownMenu.js +1 -1
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +4 -4
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +6 -6
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.shell.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.styles.js +1 -1
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +4 -4
- package/dist/_internal/components/navigation/Pagination/Pagination.js +3 -3
- package/dist/_internal/components/navigation/Pagination/Pagination.styles.js +1 -1
- package/dist/_internal/components/navigation/Pagination/PaginationParts.js +2 -1
- package/dist/_internal/components/navigation/Tabs/Tabs.js +10 -3
- package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +8 -1
- package/dist/_internal/components/navigation/Tabs/TabsPanel.js +2 -1
- package/dist/_internal/components/navigation/index.js +26 -27
- package/dist/_internal/components/typography/Blockquote/Blockquote.js +1 -1
- package/dist/_internal/components/typography/Code/Code.js +1 -1
- package/dist/_internal/components/typography/Text/Text.js +1 -1
- package/dist/_internal/components/typography/index.js +3 -3
- package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.animations.js +2 -1
- package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.js +3 -3
- package/dist/_internal/components/utility/AnimatedIcon/AnimatedIcon.styles.js +2 -2
- package/dist/_internal/components/utility/AspectRatio/AspectRatio.js +2 -1
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +3 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +1 -1
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +2 -2
- package/dist/_internal/components/utility/index.js +7 -7
- package/dist/_internal/social-login-button/social-login-button.js +6 -7
- package/dist/_internal/tokens/shadow.js +19 -8
- package/dist/_internal/tokens/shadow.js.map +1 -1
- package/dist/_internal/user-avatar/user-avatar.js +4 -5
- package/dist/{chunk-BLJDCMFU.js → chunk-2ARVNCVU.js} +7 -7
- package/dist/chunk-2ARVNCVU.js.map +1 -0
- package/dist/{chunk-SJO3K7SB.js → chunk-2OYFTSG4.js} +4 -4
- package/dist/{chunk-CRZXSZ5O.js → chunk-2S752BIJ.js} +2 -2
- package/dist/{chunk-IYTBTK2M.js → chunk-2WU52FLP.js} +19 -30
- package/dist/chunk-2WU52FLP.js.map +1 -0
- package/dist/{chunk-RSQMPCCR.js → chunk-34643ATX.js} +10 -4
- package/dist/chunk-34643ATX.js.map +1 -0
- package/dist/{chunk-6GRZ77IS.js → chunk-3AIRFAI3.js} +13 -12
- package/dist/chunk-3AIRFAI3.js.map +1 -0
- package/dist/{chunk-Q73PTVNO.js → chunk-3FNXOCBD.js} +24 -12
- package/dist/chunk-3FNXOCBD.js.map +1 -0
- package/dist/{chunk-BAQBUKDU.js → chunk-3KREF4ZF.js} +2 -2
- package/dist/{chunk-EL7CMURV.js → chunk-3LSIFHQK.js} +3 -3
- package/dist/chunk-3LSIFHQK.js.map +1 -0
- package/dist/{chunk-MP4VSWHK.js → chunk-3NJMNMWB.js} +12 -2
- package/dist/chunk-3NJMNMWB.js.map +1 -0
- package/dist/{chunk-N52O2OKZ.js → chunk-3NNO6YIH.js} +8 -3
- package/dist/chunk-3NNO6YIH.js.map +1 -0
- package/dist/{chunk-SYN46YL6.js → chunk-3RMDIO4G.js} +3 -3
- package/dist/{chunk-MJ3BVWPZ.js → chunk-43G3WMYN.js} +12 -7
- package/dist/chunk-43G3WMYN.js.map +1 -0
- package/dist/{chunk-E7MSDXED.js → chunk-43H66TVT.js} +12 -5
- package/dist/chunk-43H66TVT.js.map +1 -0
- package/dist/{chunk-IL7JZKXY.js → chunk-442FSG7G.js} +3 -3
- package/dist/{chunk-DYVAOEW4.js → chunk-4D4LLSQC.js} +6 -5
- package/dist/chunk-4D4LLSQC.js.map +1 -0
- package/dist/{chunk-NEGCJNGJ.js → chunk-4G47KBTP.js} +9 -9
- package/dist/chunk-4G47KBTP.js.map +1 -0
- package/dist/{chunk-MVXFMIVZ.js → chunk-4GB46HLK.js} +8 -4
- package/dist/chunk-4GB46HLK.js.map +1 -0
- package/dist/{chunk-CS3KOKL3.js → chunk-4GWHYLEB.js} +2 -2
- package/dist/{chunk-4OEKIFBC.js → chunk-4VMFS3VJ.js} +6 -3
- package/dist/chunk-4VMFS3VJ.js.map +1 -0
- package/dist/{chunk-6CTPDNNX.js → chunk-52G2KRL4.js} +14 -14
- package/dist/chunk-52G2KRL4.js.map +1 -0
- package/dist/{chunk-E7T3A4IR.js → chunk-5JCGBCFJ.js} +2 -2
- package/dist/{chunk-FC7NQ6XM.js → chunk-5MW7OYBM.js} +2 -2
- package/dist/{chunk-CQLPDY2J.js → chunk-5OBXEMQO.js} +3 -3
- package/dist/{chunk-MK4CH4VT.js → chunk-5OUEKIWQ.js} +14 -12
- package/dist/chunk-5OUEKIWQ.js.map +1 -0
- package/dist/{chunk-GHXFCMFP.js → chunk-5QAJ3Y5F.js} +3 -3
- package/dist/{chunk-GHXFCMFP.js.map → chunk-5QAJ3Y5F.js.map} +1 -1
- package/dist/{chunk-CPTY6UZ6.js → chunk-6KEXHOIF.js} +5 -4
- package/dist/chunk-6KEXHOIF.js.map +1 -0
- package/dist/{chunk-BW62QQAG.js → chunk-6N4AA2Y7.js} +2 -2
- package/dist/{chunk-EFHIMCJN.js → chunk-6P2OFMBX.js} +11 -9
- package/dist/chunk-6P2OFMBX.js.map +1 -0
- package/dist/{chunk-GUW5BUK7.js → chunk-6WBKOM5K.js} +15 -7
- package/dist/chunk-6WBKOM5K.js.map +1 -0
- package/dist/{chunk-7EIOXZWL.js → chunk-74P3YX7R.js} +4 -4
- package/dist/{chunk-VYSFKR32.js → chunk-75CGLX6Q.js} +3 -3
- package/dist/{chunk-VYSFKR32.js.map → chunk-75CGLX6Q.js.map} +1 -1
- package/dist/{chunk-LVEG6XQL.js → chunk-76X6JRVI.js} +19 -33
- package/dist/chunk-76X6JRVI.js.map +1 -0
- package/dist/{chunk-2NLYGZP3.js → chunk-77JL5XVD.js} +13 -9
- package/dist/chunk-77JL5XVD.js.map +1 -0
- package/dist/{chunk-T3WHW7ZC.js → chunk-BAZXVFLR.js} +10 -6
- package/dist/chunk-BAZXVFLR.js.map +1 -0
- package/dist/{chunk-7F7TTOYN.js → chunk-BEGTLELZ.js} +7 -6
- package/dist/chunk-BEGTLELZ.js.map +1 -0
- package/dist/{chunk-VT5HQ2AD.js → chunk-BFMDA6UO.js} +3 -3
- package/dist/{chunk-R75DZ3AK.js → chunk-BVLMKSHX.js} +2 -2
- package/dist/{chunk-PMP6WJJS.js → chunk-BWMHGENX.js} +20 -19
- package/dist/chunk-BWMHGENX.js.map +1 -0
- package/dist/{chunk-QAP3FW33.js → chunk-C66RGVAS.js} +30 -20
- package/dist/chunk-C66RGVAS.js.map +1 -0
- package/dist/{chunk-UZ6AUTE6.js → chunk-CNQUCNEA.js} +7 -7
- package/dist/{chunk-JL75FJRG.js → chunk-CZIX4BW2.js} +4 -4
- package/dist/{chunk-CAHWCSRE.js → chunk-D46SLMCX.js} +22 -8
- package/dist/chunk-D46SLMCX.js.map +1 -0
- package/dist/{chunk-2OIP3T5O.js → chunk-DBFRCTI5.js} +4 -4
- package/dist/{chunk-2OIP3T5O.js.map → chunk-DBFRCTI5.js.map} +1 -1
- package/dist/{chunk-HU7TX7RB.js → chunk-DUBTI4DI.js} +4 -4
- package/dist/{chunk-RMCNEKBZ.js → chunk-DW6F7354.js} +2 -2
- package/dist/{chunk-Q4BQYYPU.js → chunk-E2QIKJX2.js} +11 -5
- package/dist/chunk-E2QIKJX2.js.map +1 -0
- package/dist/{chunk-XJUEHG72.js → chunk-EERUSI52.js} +2 -2
- package/dist/{chunk-NPP44TQG.js → chunk-EYZ6QBTV.js} +2 -2
- package/dist/{chunk-NPP44TQG.js.map → chunk-EYZ6QBTV.js.map} +1 -1
- package/dist/{chunk-C55AWF3U.js → chunk-FFCJ7NR2.js} +2 -2
- package/dist/{chunk-U342T7ZR.js → chunk-FOCU4QT5.js} +13 -10
- package/dist/chunk-FOCU4QT5.js.map +1 -0
- package/dist/{chunk-FYTLKHEN.js → chunk-FYKFQPVT.js} +19 -18
- package/dist/chunk-FYKFQPVT.js.map +1 -0
- package/dist/{chunk-TVL5V2JK.js → chunk-GGMB6LJH.js} +7 -3
- package/dist/chunk-GGMB6LJH.js.map +1 -0
- package/dist/{chunk-AYLEZM6T.js → chunk-GLFTIGOF.js} +3 -3
- package/dist/{chunk-7UZ2TFIK.js → chunk-GNCSDUGY.js} +12 -4
- package/dist/chunk-GNCSDUGY.js.map +1 -0
- package/dist/{chunk-L4UP5VYS.js → chunk-GVH7C2PT.js} +2 -2
- package/dist/{chunk-MBSYD3ZU.js → chunk-GWFAINQ7.js} +3 -3
- package/dist/chunk-GWFAINQ7.js.map +1 -0
- package/dist/{chunk-AER4245J.js → chunk-H67EL3CG.js} +6 -6
- package/dist/{chunk-3D6HXKZM.js → chunk-HDJQDMHB.js} +18 -13
- package/dist/chunk-HDJQDMHB.js.map +1 -0
- package/dist/{chunk-57JLS55D.js → chunk-I4QA2F4L.js} +4 -4
- package/dist/{chunk-L7SFH3ED.js → chunk-I7GSRTGQ.js} +37 -28
- package/dist/chunk-I7GSRTGQ.js.map +1 -0
- package/dist/{chunk-Q4CAZ2TP.js → chunk-IG23YZZR.js} +6 -5
- package/dist/chunk-IG23YZZR.js.map +1 -0
- package/dist/{chunk-5W4BLTDI.js → chunk-IWFENXST.js} +7 -6
- package/dist/chunk-IWFENXST.js.map +1 -0
- package/dist/{chunk-HXEBKOSM.js → chunk-J5UZB6Y6.js} +2 -2
- package/dist/chunk-J5UZB6Y6.js.map +1 -0
- package/dist/{chunk-AJ5SDHX5.js → chunk-JCL7WK4G.js} +2 -2
- package/dist/{chunk-5CKDRLRN.js → chunk-JXECOCNA.js} +35 -19
- package/dist/chunk-JXECOCNA.js.map +1 -0
- package/dist/{chunk-WUTHROII.js → chunk-JYWF76Z5.js} +11 -5
- package/dist/chunk-JYWF76Z5.js.map +1 -0
- package/dist/{chunk-B76QCDCE.js → chunk-K4L42FF6.js} +6 -3
- package/dist/chunk-K4L42FF6.js.map +1 -0
- package/dist/{chunk-WE3LJPRN.js → chunk-KE473LK6.js} +2 -2
- package/dist/{chunk-TBF2CPJW.js → chunk-KIHGTL2D.js} +21 -11
- package/dist/chunk-KIHGTL2D.js.map +1 -0
- package/dist/{chunk-3T5Z5HXF.js → chunk-KM3Y5TCG.js} +40 -36
- package/dist/chunk-KM3Y5TCG.js.map +1 -0
- package/dist/{chunk-RWTFZ7J5.js → chunk-L4G5BZFF.js} +22 -13
- package/dist/chunk-L4G5BZFF.js.map +1 -0
- package/dist/{chunk-HB7ISSLK.js → chunk-L5RQIQIP.js} +26 -22
- package/dist/chunk-L5RQIQIP.js.map +1 -0
- package/dist/{chunk-CQPFSEJB.js → chunk-L7NQCLFU.js} +2 -2
- package/dist/{chunk-2ZIHZLF5.js → chunk-M2JTIH5M.js} +3 -3
- package/dist/{chunk-OATHOXIU.js → chunk-MC4KYGSX.js} +8 -8
- package/dist/chunk-MC4KYGSX.js.map +1 -0
- package/dist/{chunk-2BIVCYTO.js → chunk-MR2HKBHS.js} +4 -4
- package/dist/{chunk-YVUD3MY4.js → chunk-N23GCN5U.js} +7 -4
- package/dist/chunk-N23GCN5U.js.map +1 -0
- package/dist/{chunk-2TJOCI54.js → chunk-NCEQWEXT.js} +3 -3
- package/dist/{chunk-2TJOCI54.js.map → chunk-NCEQWEXT.js.map} +1 -1
- package/dist/{chunk-IVIHRZEY.js → chunk-NDMPXMW2.js} +12 -8
- package/dist/chunk-NDMPXMW2.js.map +1 -0
- package/dist/{chunk-UUUMNJPP.js → chunk-NLYNRE7L.js} +10 -10
- package/dist/chunk-NLYNRE7L.js.map +1 -0
- package/dist/{chunk-KLWW67WP.js → chunk-NOKN4HRK.js} +12 -11
- package/dist/chunk-NOKN4HRK.js.map +1 -0
- package/dist/{chunk-LIG7TKIB.js → chunk-NYFNF7I5.js} +11 -6
- package/dist/chunk-NYFNF7I5.js.map +1 -0
- package/dist/{chunk-KK57AHWS.js → chunk-OAEYCKBN.js} +2 -2
- package/dist/{chunk-JGRE56GQ.js → chunk-OB56SZGL.js} +2 -2
- package/dist/{chunk-VRDNUY4H.js → chunk-OHC3F7GJ.js} +4 -4
- package/dist/chunk-OHC3F7GJ.js.map +1 -0
- package/dist/{chunk-E4TNDTWV.js → chunk-OL2BEJZR.js} +2 -2
- package/dist/{chunk-NDNYD4FG.js → chunk-OS6KPL4D.js} +4 -4
- package/dist/{chunk-ZTYUKEN3.js → chunk-OVXSQQDK.js} +12 -7
- package/dist/chunk-OVXSQQDK.js.map +1 -0
- package/dist/{chunk-ZQL5RXVE.js → chunk-PA3AA55Q.js} +2 -2
- package/dist/{chunk-ZQL5RXVE.js.map → chunk-PA3AA55Q.js.map} +1 -1
- package/dist/{chunk-75LOTMSN.js → chunk-PPRV4LTM.js} +2 -2
- package/dist/{chunk-LT4NEKXB.js → chunk-QA2ZGCRL.js} +3 -3
- package/dist/{chunk-2E2WOBID.js → chunk-QGFBIUOK.js} +5 -5
- package/dist/chunk-QGFBIUOK.js.map +1 -0
- package/dist/{chunk-ROT57BP4.js → chunk-R2XVTUVR.js} +2 -2
- package/dist/{chunk-QEG3P5D4.js → chunk-R6SN73RX.js} +10 -10
- package/dist/{chunk-MVKYNDT2.js → chunk-RKROWJVF.js} +11 -9
- package/dist/chunk-RKROWJVF.js.map +1 -0
- package/dist/{chunk-NYZO3JNB.js → chunk-RXJQA3FQ.js} +2 -3
- package/dist/chunk-RXJQA3FQ.js.map +1 -0
- package/dist/{chunk-IKLOIONQ.js → chunk-RZYSKQTS.js} +3 -3
- package/dist/{chunk-NCPWLHZT.js → chunk-SKT2V2OX.js} +3 -3
- package/dist/{chunk-EOW2ECB3.js → chunk-SNURSSTN.js} +2 -2
- package/dist/{chunk-GRDPGHQJ.js → chunk-SV6JGFHG.js} +9 -5
- package/dist/chunk-SV6JGFHG.js.map +1 -0
- package/dist/{chunk-CZBND7AY.js → chunk-T7DE44SP.js} +2 -2
- package/dist/{chunk-DB2ZFZVW.js → chunk-TKC6WHGB.js} +2 -2
- package/dist/{chunk-3CVTQZQJ.js → chunk-TNYKM4UU.js} +13 -9
- package/dist/chunk-TNYKM4UU.js.map +1 -0
- package/dist/{chunk-3VMGE7CU.js → chunk-TZFBJ47T.js} +3 -3
- package/dist/chunk-TZFBJ47T.js.map +1 -0
- package/dist/{chunk-VFHGILXI.js → chunk-U3DBQXPI.js} +20 -17
- package/dist/chunk-U3DBQXPI.js.map +1 -0
- package/dist/{chunk-JLQGRZMN.js → chunk-UEVHI62V.js} +2 -2
- package/dist/{chunk-4CXEWFKO.js → chunk-UFJYJHQI.js} +2 -2
- package/dist/{chunk-QKPD322X.js → chunk-UFNIS7KC.js} +2 -2
- package/dist/chunk-UFNIS7KC.js.map +1 -0
- package/dist/{chunk-BNEWMFVB.js → chunk-UGGJ3KDT.js} +2 -2
- package/dist/{chunk-L4QCIUTJ.js → chunk-UMNXSQ7I.js} +3 -3
- package/dist/{chunk-L4QCIUTJ.js.map → chunk-UMNXSQ7I.js.map} +1 -1
- package/dist/{chunk-2CTTASUD.js → chunk-V5EWCJBT.js} +7 -4
- package/dist/chunk-V5EWCJBT.js.map +1 -0
- package/dist/{chunk-236V2GRH.js → chunk-VCBV5JM7.js} +49 -41
- package/dist/chunk-VCBV5JM7.js.map +1 -0
- package/dist/{chunk-KREWQAEV.js → chunk-VIRYHNEM.js} +2 -2
- package/dist/{chunk-PT2XADGH.js → chunk-VPRNKJHP.js} +9 -6
- package/dist/chunk-VPRNKJHP.js.map +1 -0
- package/dist/{chunk-JXUWWPZR.js → chunk-VQYR64QB.js} +14 -8
- package/dist/chunk-VQYR64QB.js.map +1 -0
- package/dist/{chunk-72DKEBJM.js → chunk-VRPREI27.js} +3 -3
- package/dist/chunk-VRPREI27.js.map +1 -0
- package/dist/{chunk-N6CSXHFJ.js → chunk-WN5PNP6F.js} +2 -2
- package/dist/{chunk-6QLPSMTA.js → chunk-XEWMY4ZM.js} +52 -47
- package/dist/chunk-XEWMY4ZM.js.map +1 -0
- package/dist/{chunk-XR46FSOH.js → chunk-XIG3DXXX.js} +2 -2
- package/dist/{chunk-35S6QI5G.js → chunk-XJJXBUPN.js} +2 -2
- package/dist/{chunk-GHTBUJ6E.js → chunk-XRUW7DMH.js} +2 -2
- package/dist/{chunk-CSTAQX2B.js → chunk-XWZJLXJT.js} +7 -6
- package/dist/chunk-XWZJLXJT.js.map +1 -0
- package/dist/{chunk-MBC55H6M.js → chunk-Y5UTYBZW.js} +12 -6
- package/dist/chunk-Y5UTYBZW.js.map +1 -0
- package/dist/{chunk-HNPWZ3W2.js → chunk-Y7F5JBAT.js} +4 -4
- package/dist/{chunk-WTOYEWW6.js → chunk-YBH4SPMM.js} +4 -3
- package/dist/chunk-YBH4SPMM.js.map +1 -0
- package/dist/{chunk-5QWQR7XT.js → chunk-YHGOPZXW.js} +11 -8
- package/dist/chunk-YHGOPZXW.js.map +1 -0
- package/dist/{chunk-6BDYC4RA.js → chunk-YRSR5LVZ.js} +3 -3
- package/dist/{chunk-57JY4OI2.js → chunk-YUXDVW62.js} +3 -3
- package/dist/chunk-YUXDVW62.js.map +1 -0
- package/dist/{chunk-RNEYZTE4.js → chunk-Z6MCTGIK.js} +2 -2
- package/dist/{chunk-RNEYZTE4.js.map → chunk-Z6MCTGIK.js.map} +1 -1
- package/dist/{chunk-FFOQZRFC.js → chunk-ZAY6OA6F.js} +2 -2
- package/dist/data-display/AsyncStateContainer.js +4 -4
- package/dist/data-display/CardKit.js +2 -2
- package/dist/data-display/DataViews.js +55 -56
- package/dist/data-display/DescriptionItem.js +2 -2
- package/dist/data-display/FleetMap.js +5 -5
- package/dist/data-display/LazyImage.js +3 -3
- package/dist/data-display/LoadingState.js +3 -3
- package/dist/data-display/StatCard.js +3 -3
- package/dist/feedback/Dialog.js +3 -3
- package/dist/feedback/Modal.js +3 -2
- package/dist/feedback/Sonner.js +2 -2
- package/dist/feedback/StackedModal.js +4 -3
- package/dist/feedback/Toast.js +2 -1
- package/dist/feedback/TutorialOverlay.js +5 -4
- package/dist/form/total-form.js +2 -2
- package/dist/layout/Accordion.js +3 -2
- package/dist/layout/Box.js +1 -1
- package/dist/layout/Card.js +3 -3
- package/dist/layout/Collapsible.js +3 -2
- package/dist/layout/ContentToolbar.js +7 -7
- package/dist/layout/Dashboard.js +2 -2
- package/dist/layout/Drawer.js +2 -1
- package/dist/layout/ScrollArea.js +5 -4
- package/dist/layout/Separator.js +4 -2
- package/dist/layout/SettingsLayout.js +8 -8
- package/dist/layout/Sidebar.js +2 -1
- package/dist/layout/Skeleton.js +3 -2
- package/dist/layout/Spacer.js +2 -1
- package/dist/layout/Stack.js +2 -2
- package/dist/layout/TableFilter.js +1 -1
- package/dist/navigation/AppHeader.js +6 -7
- package/dist/navigation/Breadcrumbs.js +3 -3
- package/dist/navigation/CommandPalette.js +3 -3
- package/dist/navigation/ContextMenu.js +1 -1
- package/dist/navigation/DropdownMenu.js +1 -1
- package/dist/navigation/NavigationMenu.js +6 -6
- package/dist/navigation/Pagination.js +3 -3
- package/dist/navigation/Tabs.js +10 -3
- package/dist/social-login-button.js +6 -7
- package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
- package/dist/types/components/feedback/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/feedback/Modal/Modal.styles.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.styles.d.ts.map +1 -1
- package/dist/types/components/feedback/Toast/Toast.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.geometry.d.ts +3 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.geometry.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.hooks.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
- package/dist/types/components/layout/Accordion/Accordion.d.ts.map +1 -1
- package/dist/types/components/layout/Accordion/Accordion.styles.d.ts.map +1 -1
- package/dist/types/components/layout/Box/Box.d.ts +2 -1
- package/dist/types/components/layout/Box/Box.d.ts.map +1 -1
- package/dist/types/components/layout/Card/Card.styles.d.ts.map +1 -1
- package/dist/types/components/layout/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/types/components/layout/Collapsible/Collapsible.helpers.d.ts +1 -1
- package/dist/types/components/layout/Collapsible/Collapsible.helpers.d.ts.map +1 -1
- package/dist/types/components/layout/Drawer/Drawer.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts +6 -0
- package/dist/types/components/layout/ScrollArea/ScrollArea.styles.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
- package/dist/types/components/layout/Separator/Separator.d.ts.map +1 -1
- package/dist/types/components/layout/Separator/Separator.styles.d.ts +7 -4
- package/dist/types/components/layout/Separator/Separator.styles.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.items.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.rail.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts +4 -4
- package/dist/types/components/layout/SettingsLayout/SettingsLayout.styles.d.ts.map +1 -1
- package/dist/types/components/layout/Sidebar/Sidebar.d.ts.map +1 -1
- package/dist/types/components/layout/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts +8 -1
- package/dist/types/components/layout/Skeleton/Skeleton.styles.d.ts.map +1 -1
- package/dist/types/components/layout/Spacer/Spacer.d.ts.map +1 -1
- package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
- package/dist/types/components/navigation/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/types/components/navigation/AppHeader/AppHeader.details.d.ts.map +1 -1
- package/dist/types/components/navigation/AppHeader/AppHeader.identity.d.ts.map +1 -1
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts +2 -2
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.styles.d.ts.map +1 -1
- package/dist/types/components/navigation/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMegaSection.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.shell.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts +2 -2
- package/dist/types/components/navigation/NavigationMenu/NavigationMenu.styles.d.ts.map +1 -1
- package/dist/types/components/navigation/NavigationMenu/NavigationStandardBody.d.ts.map +1 -1
- package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
- package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
- package/dist/types/components/navigation/Tabs/Tabs.styles.d.ts.map +1 -1
- package/dist/types/components/navigation/Tabs/TabsPanel.d.ts.map +1 -1
- package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.animations.d.ts +9 -8
- package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.animations.d.ts.map +1 -1
- package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts +1 -1
- package/dist/types/components/utility/AnimatedIcon/AnimatedIcon.styles.d.ts.map +1 -1
- package/dist/types/components/utility/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/types/social-login-button/social-login-button.d.ts.map +1 -1
- package/dist/typography/Blockquote.js +1 -1
- package/dist/typography/Code.js +1 -1
- package/dist/typography/Text.js +1 -1
- package/dist/user-avatar.js +4 -5
- package/dist/utility/AnimatedIcon.js +3 -3
- package/dist/utility/AspectRatio.js +2 -1
- package/dist/utility/WorkflowStep.js +3 -3
- package/package.json +1 -1
- package/src/components/feedback/Dialog/Dialog.styles.ts +16 -28
- package/src/components/feedback/Modal/Modal.styles.ts +9 -8
- package/src/components/feedback/Modal/Modal.tsx +3 -2
- package/src/components/feedback/Sonner/Sonner.tsx +4 -4
- package/src/components/feedback/Sonner/SonnerToast.tsx +9 -9
- package/src/components/feedback/StackedModal/StackedModal.parts.tsx +26 -19
- package/src/components/feedback/StackedModal/StackedModal.styles.ts +11 -9
- package/src/components/feedback/Toast/Toast.tsx +11 -7
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.geometry.ts +2 -3
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.hooks.ts +6 -1
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +43 -37
- package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +3 -2
- package/src/components/layout/Accordion/Accordion.styles.ts +8 -6
- package/src/components/layout/Accordion/Accordion.tsx +10 -8
- package/src/components/layout/Box/Box.tsx +18 -5
- package/src/components/layout/Card/Card.styles.ts +22 -30
- package/src/components/layout/Collapsible/Collapsible.helpers.ts +4 -2
- package/src/components/layout/Collapsible/Collapsible.tsx +8 -4
- package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +1 -1
- package/src/components/layout/ContentToolbar/ContentToolbar.tsx +2 -2
- package/src/components/layout/ContentToolbar/FilterTrigger.tsx +2 -2
- package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +1 -1
- package/src/components/layout/ContentToolbar/SavedViewsMenu.tsx +2 -2
- package/src/components/layout/ContentToolbar/SortByDropdown.tsx +2 -2
- package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -2
- package/src/components/layout/Dashboard/Dashboard.tsx +1 -1
- package/src/components/layout/Dashboard/DashboardParts.tsx +1 -1
- package/src/components/layout/Drawer/Drawer.tsx +23 -10
- package/src/components/layout/ScrollArea/ScrollArea.styles.ts +45 -32
- package/src/components/layout/ScrollArea/ScrollArea.tsx +31 -16
- package/src/components/layout/ScrollArea/ScrollAreaContent.tsx +2 -2
- package/src/components/layout/ScrollArea/ScrollViewport.tsx +6 -4
- package/src/components/layout/Separator/Separator.styles.ts +30 -9
- package/src/components/layout/Separator/Separator.tsx +4 -3
- package/src/components/layout/SettingsLayout/SettingsLayout.items.tsx +4 -2
- package/src/components/layout/SettingsLayout/SettingsLayout.rail.tsx +6 -5
- package/src/components/layout/SettingsLayout/SettingsLayout.styles.ts +9 -7
- package/src/components/layout/SettingsLayout/SettingsLayout.tsx +2 -2
- package/src/components/layout/SettingsLayout/SettingsPanel.tsx +1 -1
- package/src/components/layout/SettingsLayout/SettingsSectionChips.tsx +3 -3
- package/src/components/layout/SettingsLayout/SettingsSectionHeader.tsx +3 -3
- package/src/components/layout/SettingsLayout/SettingsStatusMarker.tsx +2 -2
- package/src/components/layout/Sidebar/Sidebar.tsx +16 -6
- package/src/components/layout/Skeleton/Skeleton.styles.ts +13 -3
- package/src/components/layout/Skeleton/Skeleton.tsx +6 -4
- package/src/components/layout/Spacer/Spacer.tsx +16 -1
- package/src/components/layout/TableFilter/TableFilter.tsx +2 -1
- package/src/components/navigation/AppHeader/AppHeader.brand.tsx +2 -2
- package/src/components/navigation/AppHeader/AppHeader.details.tsx +9 -7
- package/src/components/navigation/AppHeader/AppHeader.identity.tsx +28 -15
- package/src/components/navigation/AppHeader/AppHeader.tsx +18 -6
- package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +4 -4
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.styles.tsx +15 -15
- package/src/components/navigation/CommandPalette/CommandPalette.tsx +7 -7
- package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -5
- package/src/components/navigation/CommandPalette/ShortcutChip.tsx +1 -1
- package/src/components/navigation/ContextMenu/ContextMenu.tsx +8 -8
- package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +25 -16
- package/src/components/navigation/NavigationMenu/NavigationMegaSection.tsx +5 -4
- package/src/components/navigation/NavigationMenu/NavigationMenu.shell.tsx +22 -20
- package/src/components/navigation/NavigationMenu/NavigationMenu.styles.ts +11 -11
- package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +7 -2
- package/src/components/navigation/NavigationMenu/NavigationMenuItem.tsx +12 -12
- package/src/components/navigation/NavigationMenu/NavigationStandardBody.tsx +3 -2
- package/src/components/navigation/Pagination/Pagination.styles.ts +18 -18
- package/src/components/navigation/Pagination/Pagination.tsx +2 -1
- package/src/components/navigation/Pagination/PaginationParts.tsx +4 -3
- package/src/components/navigation/Tabs/Tabs.styles.ts +14 -12
- package/src/components/navigation/Tabs/Tabs.tsx +11 -9
- package/src/components/navigation/Tabs/TabsPanel.tsx +10 -3
- package/src/components/typography/Blockquote/Blockquote.tsx +8 -8
- package/src/components/typography/Code/Code.tsx +17 -17
- package/src/components/typography/Text/Text.tsx +2 -2
- package/src/components/utility/AnimatedIcon/AnimatedIcon.animations.ts +38 -35
- package/src/components/utility/AnimatedIcon/AnimatedIcon.styles.ts +51 -46
- package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +1 -1
- package/src/components/utility/AspectRatio/AspectRatio.tsx +13 -2
- package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +7 -7
- package/src/social-login-button/social-login-button.tsx +25 -8
- package/dist/chunk-236V2GRH.js.map +0 -1
- package/dist/chunk-2CTTASUD.js.map +0 -1
- package/dist/chunk-2E2WOBID.js.map +0 -1
- package/dist/chunk-2NLYGZP3.js.map +0 -1
- package/dist/chunk-3CVTQZQJ.js.map +0 -1
- package/dist/chunk-3D6HXKZM.js.map +0 -1
- package/dist/chunk-3T5Z5HXF.js.map +0 -1
- package/dist/chunk-3VMGE7CU.js.map +0 -1
- package/dist/chunk-4OEKIFBC.js.map +0 -1
- package/dist/chunk-57JY4OI2.js.map +0 -1
- package/dist/chunk-5CKDRLRN.js.map +0 -1
- package/dist/chunk-5QWQR7XT.js.map +0 -1
- package/dist/chunk-5W4BLTDI.js.map +0 -1
- package/dist/chunk-6CTPDNNX.js.map +0 -1
- package/dist/chunk-6GRZ77IS.js.map +0 -1
- package/dist/chunk-6QLPSMTA.js.map +0 -1
- package/dist/chunk-72DKEBJM.js.map +0 -1
- package/dist/chunk-73BEVJCS.js +0 -28
- package/dist/chunk-73BEVJCS.js.map +0 -1
- package/dist/chunk-7F7TTOYN.js.map +0 -1
- package/dist/chunk-7UZ2TFIK.js.map +0 -1
- package/dist/chunk-B76QCDCE.js.map +0 -1
- package/dist/chunk-BLJDCMFU.js.map +0 -1
- package/dist/chunk-CAHWCSRE.js.map +0 -1
- package/dist/chunk-CPTY6UZ6.js.map +0 -1
- package/dist/chunk-CSTAQX2B.js.map +0 -1
- package/dist/chunk-DYVAOEW4.js.map +0 -1
- package/dist/chunk-E7MSDXED.js.map +0 -1
- package/dist/chunk-EFHIMCJN.js.map +0 -1
- package/dist/chunk-EL7CMURV.js.map +0 -1
- package/dist/chunk-FYTLKHEN.js.map +0 -1
- package/dist/chunk-GRDPGHQJ.js.map +0 -1
- package/dist/chunk-GUW5BUK7.js.map +0 -1
- package/dist/chunk-HB7ISSLK.js.map +0 -1
- package/dist/chunk-HXEBKOSM.js.map +0 -1
- package/dist/chunk-IVIHRZEY.js.map +0 -1
- package/dist/chunk-IYTBTK2M.js.map +0 -1
- package/dist/chunk-JXUWWPZR.js.map +0 -1
- package/dist/chunk-KLWW67WP.js.map +0 -1
- package/dist/chunk-L7SFH3ED.js.map +0 -1
- package/dist/chunk-LIG7TKIB.js.map +0 -1
- package/dist/chunk-LVEG6XQL.js.map +0 -1
- package/dist/chunk-MBC55H6M.js.map +0 -1
- package/dist/chunk-MBSYD3ZU.js.map +0 -1
- package/dist/chunk-MJ3BVWPZ.js.map +0 -1
- package/dist/chunk-MK4CH4VT.js.map +0 -1
- package/dist/chunk-MP4VSWHK.js.map +0 -1
- package/dist/chunk-MVKYNDT2.js.map +0 -1
- package/dist/chunk-MVXFMIVZ.js.map +0 -1
- package/dist/chunk-N52O2OKZ.js.map +0 -1
- package/dist/chunk-NEGCJNGJ.js.map +0 -1
- package/dist/chunk-NYZO3JNB.js.map +0 -1
- package/dist/chunk-OATHOXIU.js.map +0 -1
- package/dist/chunk-PMP6WJJS.js.map +0 -1
- package/dist/chunk-PT2XADGH.js.map +0 -1
- package/dist/chunk-Q4BQYYPU.js.map +0 -1
- package/dist/chunk-Q4CAZ2TP.js.map +0 -1
- package/dist/chunk-Q73PTVNO.js.map +0 -1
- package/dist/chunk-QAP3FW33.js.map +0 -1
- package/dist/chunk-QKPD322X.js.map +0 -1
- package/dist/chunk-RSQMPCCR.js.map +0 -1
- package/dist/chunk-RWTFZ7J5.js.map +0 -1
- package/dist/chunk-T3WHW7ZC.js.map +0 -1
- package/dist/chunk-TBF2CPJW.js.map +0 -1
- package/dist/chunk-TVL5V2JK.js.map +0 -1
- package/dist/chunk-U342T7ZR.js.map +0 -1
- package/dist/chunk-UUUMNJPP.js.map +0 -1
- package/dist/chunk-VFHGILXI.js.map +0 -1
- package/dist/chunk-VRDNUY4H.js.map +0 -1
- package/dist/chunk-WTOYEWW6.js.map +0 -1
- package/dist/chunk-WUTHROII.js.map +0 -1
- package/dist/chunk-YVUD3MY4.js.map +0 -1
- package/dist/chunk-ZTYUKEN3.js.map +0 -1
- /package/dist/{chunk-SJO3K7SB.js.map → chunk-2OYFTSG4.js.map} +0 -0
- /package/dist/{chunk-CRZXSZ5O.js.map → chunk-2S752BIJ.js.map} +0 -0
- /package/dist/{chunk-BAQBUKDU.js.map → chunk-3KREF4ZF.js.map} +0 -0
- /package/dist/{chunk-SYN46YL6.js.map → chunk-3RMDIO4G.js.map} +0 -0
- /package/dist/{chunk-IL7JZKXY.js.map → chunk-442FSG7G.js.map} +0 -0
- /package/dist/{chunk-CS3KOKL3.js.map → chunk-4GWHYLEB.js.map} +0 -0
- /package/dist/{chunk-E7T3A4IR.js.map → chunk-5JCGBCFJ.js.map} +0 -0
- /package/dist/{chunk-FC7NQ6XM.js.map → chunk-5MW7OYBM.js.map} +0 -0
- /package/dist/{chunk-CQLPDY2J.js.map → chunk-5OBXEMQO.js.map} +0 -0
- /package/dist/{chunk-BW62QQAG.js.map → chunk-6N4AA2Y7.js.map} +0 -0
- /package/dist/{chunk-7EIOXZWL.js.map → chunk-74P3YX7R.js.map} +0 -0
- /package/dist/{chunk-VT5HQ2AD.js.map → chunk-BFMDA6UO.js.map} +0 -0
- /package/dist/{chunk-R75DZ3AK.js.map → chunk-BVLMKSHX.js.map} +0 -0
- /package/dist/{chunk-UZ6AUTE6.js.map → chunk-CNQUCNEA.js.map} +0 -0
- /package/dist/{chunk-JL75FJRG.js.map → chunk-CZIX4BW2.js.map} +0 -0
- /package/dist/{chunk-HU7TX7RB.js.map → chunk-DUBTI4DI.js.map} +0 -0
- /package/dist/{chunk-RMCNEKBZ.js.map → chunk-DW6F7354.js.map} +0 -0
- /package/dist/{chunk-XJUEHG72.js.map → chunk-EERUSI52.js.map} +0 -0
- /package/dist/{chunk-C55AWF3U.js.map → chunk-FFCJ7NR2.js.map} +0 -0
- /package/dist/{chunk-AYLEZM6T.js.map → chunk-GLFTIGOF.js.map} +0 -0
- /package/dist/{chunk-L4UP5VYS.js.map → chunk-GVH7C2PT.js.map} +0 -0
- /package/dist/{chunk-AER4245J.js.map → chunk-H67EL3CG.js.map} +0 -0
- /package/dist/{chunk-57JLS55D.js.map → chunk-I4QA2F4L.js.map} +0 -0
- /package/dist/{chunk-AJ5SDHX5.js.map → chunk-JCL7WK4G.js.map} +0 -0
- /package/dist/{chunk-WE3LJPRN.js.map → chunk-KE473LK6.js.map} +0 -0
- /package/dist/{chunk-CQPFSEJB.js.map → chunk-L7NQCLFU.js.map} +0 -0
- /package/dist/{chunk-2ZIHZLF5.js.map → chunk-M2JTIH5M.js.map} +0 -0
- /package/dist/{chunk-2BIVCYTO.js.map → chunk-MR2HKBHS.js.map} +0 -0
- /package/dist/{chunk-KK57AHWS.js.map → chunk-OAEYCKBN.js.map} +0 -0
- /package/dist/{chunk-JGRE56GQ.js.map → chunk-OB56SZGL.js.map} +0 -0
- /package/dist/{chunk-E4TNDTWV.js.map → chunk-OL2BEJZR.js.map} +0 -0
- /package/dist/{chunk-NDNYD4FG.js.map → chunk-OS6KPL4D.js.map} +0 -0
- /package/dist/{chunk-75LOTMSN.js.map → chunk-PPRV4LTM.js.map} +0 -0
- /package/dist/{chunk-LT4NEKXB.js.map → chunk-QA2ZGCRL.js.map} +0 -0
- /package/dist/{chunk-ROT57BP4.js.map → chunk-R2XVTUVR.js.map} +0 -0
- /package/dist/{chunk-QEG3P5D4.js.map → chunk-R6SN73RX.js.map} +0 -0
- /package/dist/{chunk-IKLOIONQ.js.map → chunk-RZYSKQTS.js.map} +0 -0
- /package/dist/{chunk-NCPWLHZT.js.map → chunk-SKT2V2OX.js.map} +0 -0
- /package/dist/{chunk-EOW2ECB3.js.map → chunk-SNURSSTN.js.map} +0 -0
- /package/dist/{chunk-CZBND7AY.js.map → chunk-T7DE44SP.js.map} +0 -0
- /package/dist/{chunk-DB2ZFZVW.js.map → chunk-TKC6WHGB.js.map} +0 -0
- /package/dist/{chunk-JLQGRZMN.js.map → chunk-UEVHI62V.js.map} +0 -0
- /package/dist/{chunk-4CXEWFKO.js.map → chunk-UFJYJHQI.js.map} +0 -0
- /package/dist/{chunk-BNEWMFVB.js.map → chunk-UGGJ3KDT.js.map} +0 -0
- /package/dist/{chunk-KREWQAEV.js.map → chunk-VIRYHNEM.js.map} +0 -0
- /package/dist/{chunk-N6CSXHFJ.js.map → chunk-WN5PNP6F.js.map} +0 -0
- /package/dist/{chunk-XR46FSOH.js.map → chunk-XIG3DXXX.js.map} +0 -0
- /package/dist/{chunk-35S6QI5G.js.map → chunk-XJJXBUPN.js.map} +0 -0
- /package/dist/{chunk-GHTBUJ6E.js.map → chunk-XRUW7DMH.js.map} +0 -0
- /package/dist/{chunk-HNPWZ3W2.js.map → chunk-Y7F5JBAT.js.map} +0 -0
- /package/dist/{chunk-6BDYC4RA.js.map → chunk-YRSR5LVZ.js.map} +0 -0
- /package/dist/{chunk-FFOQZRFC.js.map → chunk-ZAY6OA6F.js.map} +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DataViewsDisplayPanel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Y7F5JBAT.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsExportMenu
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6N4AA2Y7.js";
|
|
7
7
|
import {
|
|
8
8
|
renderBulkActions
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PPRV4LTM.js";
|
|
10
10
|
import {
|
|
11
11
|
useDataViewsCopy
|
|
12
12
|
} from "./chunk-KHG57NAE.js";
|
|
13
13
|
import {
|
|
14
14
|
FilterTrigger
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-UMNXSQ7I.js";
|
|
16
16
|
import {
|
|
17
17
|
ContentToolbar
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-TZFBJ47T.js";
|
|
19
19
|
import {
|
|
20
20
|
default as default2
|
|
21
21
|
} from "./chunk-6DPAWXZ3.js";
|
|
22
22
|
import {
|
|
23
23
|
Text
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-YBH4SPMM.js";
|
|
25
25
|
import {
|
|
26
26
|
sxRem
|
|
27
27
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -136,4 +136,4 @@ function GridToolbar(props) {
|
|
|
136
136
|
export {
|
|
137
137
|
GridToolbar
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-CNQUCNEA.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeleteViewDialog
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BFMDA6UO.js";
|
|
4
4
|
import {
|
|
5
5
|
DataViewsGrid
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5OBXEMQO.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
10
10
|
import {
|
|
11
11
|
ViewDialogs,
|
|
12
12
|
ViewMutationErrorAlert
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2OYFTSG4.js";
|
|
14
14
|
import {
|
|
15
15
|
useSavedViewsController
|
|
16
16
|
} from "./chunk-HR7YTBR7.js";
|
|
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
178
178
|
export {
|
|
179
179
|
DataViewsTableBase
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-CZIX4BW2.js.map
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FIELD_BORDER_WIDTH
|
|
3
|
+
} from "./chunk-PZBK3F52.js";
|
|
4
|
+
import {
|
|
5
|
+
rem
|
|
6
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
7
|
+
|
|
1
8
|
// src/components/layout/Separator/Separator.styles.ts
|
|
2
9
|
var THICKNESS_PX = {
|
|
3
10
|
xs: 1,
|
|
@@ -53,21 +60,28 @@ var borderEdges = (isHorizontal, thickness, style, color) => {
|
|
|
53
60
|
[`border${leading}Color`]: color
|
|
54
61
|
};
|
|
55
62
|
};
|
|
56
|
-
var separatorBlockMargin = (size, margin, isHorizontal) => {
|
|
63
|
+
var separatorBlockMargin = (theme, size, margin, isHorizontal) => {
|
|
57
64
|
const value = separatorMargin(size, margin);
|
|
58
|
-
const length = typeof value === "string" ? value :
|
|
65
|
+
const length = typeof value === "string" ? value : rem(theme, value);
|
|
59
66
|
return isHorizontal ? `${length} 0` : `0 ${length}`;
|
|
60
67
|
};
|
|
61
|
-
var
|
|
68
|
+
var ruleLength = (theme, length) => {
|
|
69
|
+
if (!length) return "100%";
|
|
70
|
+
if (typeof length === "string") return length;
|
|
71
|
+
return length <= 1 ? `${length * 100}%` : rem(theme, length);
|
|
72
|
+
};
|
|
73
|
+
var separatorStyles = (theme, { variant, orientation, size, color, blockMargin, length }) => {
|
|
62
74
|
const isHorizontal = orientation === "horizontal";
|
|
63
|
-
const
|
|
75
|
+
const thicknessPx = separatorThickness(size);
|
|
76
|
+
const thickness = thicknessPx === FIELD_BORDER_WIDTH ? `${FIELD_BORDER_WIDTH}px` : rem(theme, thicknessPx);
|
|
77
|
+
const along = ruleLength(theme, length);
|
|
64
78
|
const resolvedColor = color || theme.palette.divider;
|
|
65
79
|
const baseStyles = {
|
|
66
80
|
display: "flex",
|
|
67
81
|
alignItems: "center",
|
|
68
|
-
margin:
|
|
69
|
-
width: isHorizontal ?
|
|
70
|
-
height: isHorizontal ?
|
|
82
|
+
margin: blockMargin,
|
|
83
|
+
width: isHorizontal ? along : thickness,
|
|
84
|
+
height: isHorizontal ? thickness : along,
|
|
71
85
|
boxSizing: "border-box"
|
|
72
86
|
};
|
|
73
87
|
if (variant === "gradient") {
|
|
@@ -88,4 +102,4 @@ export {
|
|
|
88
102
|
separatorBlockMargin,
|
|
89
103
|
separatorStyles
|
|
90
104
|
};
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
105
|
+
//# sourceMappingURL=chunk-D46SLMCX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/Separator/Separator.styles.ts"],"sourcesContent":["import type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type {\n SeparatorOrientation,\n SeparatorProps,\n SeparatorSize,\n SeparatorVariant,\n} from './Separator.types';\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem } from '../../../tokens/relative';\n\nconst THICKNESS_PX: Record<SeparatorSize, number> = {\n xs: 1,\n sm: 2,\n md: 3,\n lg: 4,\n xl: 6,\n};\n\nconst MARGIN_PX: Record<SeparatorSize, number> = {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n};\n\nconst separatorThickness = (size: SeparatorSize): number =>\n THICKNESS_PX[size] ?? THICKNESS_PX.md;\n\n/** An explicit `margin` wins; otherwise the size picks one. */\nexport const separatorMargin = (\n size: SeparatorSize,\n margin?: number | string,\n): number | string => margin ?? MARGIN_PX[size] ?? MARGIN_PX.md;\n\n// `gradient` paints a background rather than a border, so it draws its line as a\n// solid border of zero visual consequence.\nconst borderStyleFor = (variant: SeparatorVariant): 'dashed' | 'dotted' | 'solid' => {\n switch (variant) {\n case 'dashed':\n return 'dashed';\n case 'dotted':\n return 'dotted';\n default:\n return 'solid';\n }\n};\n\nconst gradientBackground = (\n variant: SeparatorVariant,\n orientation: SeparatorOrientation,\n color: string,\n): string | undefined => {\n if (variant !== 'gradient') return undefined;\n const angle = orientation === 'horizontal' ? '90deg' : '180deg';\n return `linear-gradient(${angle}, transparent 0%, ${color} 50%, transparent 100%)`;\n};\n\n// Only the leading edge carries the rule; the other three are zeroed explicitly so\n// a parent's border shorthand cannot leak through.\nconst borderEdges = (\n isHorizontal: boolean,\n thickness: string,\n style: 'dashed' | 'dotted' | 'solid',\n color: string,\n): CSSObject => {\n const leading = isHorizontal ? 'Top' : 'Left';\n const blank: CSSObject = {\n borderTopWidth: 0,\n borderBottomWidth: 0,\n borderLeftWidth: 0,\n borderRightWidth: 0,\n borderTopStyle: 'none',\n borderBottomStyle: 'none',\n borderLeftStyle: 'none',\n borderRightStyle: 'none',\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n };\n\n return {\n ...blank,\n [`border${leading}Width`]: thickness,\n [`border${leading}Style`]: style,\n [`border${leading}Color`]: color,\n };\n};\n\ntype SeparatorStyleArgs = Required<\n Pick<SeparatorProps, 'variant' | 'orientation' | 'size'>\n> &\n Pick<SeparatorProps, 'color' | 'length'> & {\n /** From {@link separatorBlockMargin}, which both the plain and the labelled separator read. */\n blockMargin: string;\n };\n\n/**\n * The separator's margin, on the axis it separates along only: above and below\n * a horizontal rule, either side of a vertical one. A margin given as a string\n * carries its own units; a number is design px, through the type scale.\n *\n * The LABELLED separator uses this too. It used to hand the number straight to\n * `sx.margin`, where a number is SPACING UNITS — `md`'s 16 drew 128px on all\n * four sides, against 16px above and below for the unlabelled one.\n */\nexport const separatorBlockMargin = (\n theme: Theme,\n size: SeparatorSize,\n margin: number | string | undefined,\n isHorizontal: boolean,\n): string => {\n const value = separatorMargin(size, margin);\n const length = typeof value === 'string' ? value : rem(theme, value);\n return isHorizontal ? `${length} 0` : `0 ${length}`;\n};\n\n/**\n * The rule's extent along its axis. It lands in `sx`, which reads a number of 1\n * or less as a fraction of the parent, and that stays so; any other number is\n * design px, through the type scale. Unset (or `0`/`''`) is the full run.\n */\nconst ruleLength = (theme: Theme, length: SeparatorProps['length']): string => {\n if (!length) return '100%';\n if (typeof length === 'string') return length;\n return length <= 1 ? `${length * 100}%` : rem(theme, length);\n};\n\nexport const separatorStyles = (\n theme: Theme,\n { variant, orientation, size, color, blockMargin, length }: SeparatorStyleArgs,\n): CSSObject => {\n const isHorizontal = orientation === 'horizontal';\n // `xs` is the 1px hairline: it stays one device-independent pixel at every\n // root size, like every other hairline in the package; heavier rules scale.\n const thicknessPx = separatorThickness(size);\n const thickness = thicknessPx === FIELD_BORDER_WIDTH ? `${FIELD_BORDER_WIDTH}px` : rem(theme, thicknessPx);\n const along = ruleLength(theme, length);\n const resolvedColor = color || theme.palette.divider;\n\n const baseStyles: CSSObject = {\n display: 'flex',\n alignItems: 'center',\n margin: blockMargin,\n width: isHorizontal ? along : thickness,\n height: isHorizontal ? thickness : along,\n boxSizing: 'border-box',\n };\n\n if (variant === 'gradient') {\n return {\n ...baseStyles,\n background: gradientBackground(variant, orientation, resolvedColor),\n };\n }\n\n return {\n ...baseStyles,\n backgroundColor: 'transparent',\n ...borderEdges(isHorizontal, thickness, borderStyleFor(variant), resolvedColor),\n };\n};\n"],"mappings":";;;;;;;;AAWA,IAAM,eAA8C;AAAA,EAClD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,YAA2C;AAAA,EAC/C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,qBAAqB,CAAC,SAC1B,aAAa,IAAI,KAAK,aAAa;AAG9B,IAAM,kBAAkB,CAC7B,MACA,WACoB,UAAU,UAAU,IAAI,KAAK,UAAU;AAI7D,IAAM,iBAAiB,CAAC,YAA6D;AACnF,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,IAAM,qBAAqB,CACzB,SACA,aACA,UACuB;AACvB,MAAI,YAAY,WAAY,QAAO;AACnC,QAAM,QAAQ,gBAAgB,eAAe,UAAU;AACvD,SAAO,mBAAmB,KAAK,qBAAqB,KAAK;AAC3D;AAIA,IAAM,cAAc,CAClB,cACA,WACA,OACA,UACc;AACd,QAAM,UAAU,eAAe,QAAQ;AACvC,QAAM,QAAmB;AAAA,IACvB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,EACpB;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,CAAC,SAAS,OAAO,OAAO,GAAG;AAAA,IAC3B,CAAC,SAAS,OAAO,OAAO,GAAG;AAAA,IAC3B,CAAC,SAAS,OAAO,OAAO,GAAG;AAAA,EAC7B;AACF;AAmBO,IAAM,uBAAuB,CAClC,OACA,MACA,QACA,iBACW;AACX,QAAM,QAAQ,gBAAgB,MAAM,MAAM;AAC1C,QAAM,SAAS,OAAO,UAAU,WAAW,QAAQ,IAAI,OAAO,KAAK;AACnE,SAAO,eAAe,GAAG,MAAM,OAAO,KAAK,MAAM;AACnD;AAOA,IAAM,aAAa,CAAC,OAAc,WAA6C;AAC7E,MAAI,CAAC,OAAQ,QAAO;AACpB,MAAI,OAAO,WAAW,SAAU,QAAO;AACvC,SAAO,UAAU,IAAI,GAAG,SAAS,GAAG,MAAM,IAAI,OAAO,MAAM;AAC7D;AAEO,IAAM,kBAAkB,CAC7B,OACA,EAAE,SAAS,aAAa,MAAM,OAAO,aAAa,OAAO,MAC3C;AACd,QAAM,eAAe,gBAAgB;AAGrC,QAAM,cAAc,mBAAmB,IAAI;AAC3C,QAAM,YAAY,gBAAgB,qBAAqB,GAAG,kBAAkB,OAAO,IAAI,OAAO,WAAW;AACzG,QAAM,QAAQ,WAAW,OAAO,MAAM;AACtC,QAAM,gBAAgB,SAAS,MAAM,QAAQ;AAE7C,QAAM,aAAwB;AAAA,IAC5B,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,OAAO,eAAe,QAAQ;AAAA,IAC9B,QAAQ,eAAe,YAAY;AAAA,IACnC,WAAW;AAAA,EACb;AAEA,MAAI,YAAY,YAAY;AAC1B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,YAAY,mBAAmB,SAAS,aAAa,aAAa;AAAA,IACpE;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,iBAAiB;AAAA,IACjB,GAAG,YAAY,cAAc,WAAW,eAAe,OAAO,GAAG,aAAa;AAAA,EAChF;AACF;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SR_ONLY_SX,
|
|
3
3
|
STATUS_COLOR
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NYFNF7I5.js";
|
|
5
5
|
import {
|
|
6
6
|
sxRem
|
|
7
7
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -44,8 +44,8 @@ function SettingsStatusMarker({
|
|
|
44
44
|
{
|
|
45
45
|
component: "span",
|
|
46
46
|
sx: {
|
|
47
|
-
width: 8,
|
|
48
|
-
height: 8,
|
|
47
|
+
width: sxRem(8),
|
|
48
|
+
height: sxRem(8),
|
|
49
49
|
borderRadius: "50%",
|
|
50
50
|
flex: "0 0 auto",
|
|
51
51
|
bgcolor: STATUS_COLOR[status]
|
|
@@ -62,4 +62,4 @@ SettingsStatusMarker.displayName = "SettingsStatusMarker";
|
|
|
62
62
|
export {
|
|
63
63
|
SettingsStatusMarker
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
65
|
+
//# sourceMappingURL=chunk-DBFRCTI5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/SettingsLayout/SettingsStatusMarker.tsx"],"sourcesContent":["'use client';\n\nimport LockOutlinedIcon from '@mui/icons-material/LockOutlined';\nimport Box from '@mui/material/Box/index.js';\nimport React from 'react';\n\nimport { SR_ONLY_SX, STATUS_COLOR } from './SettingsLayout.styles';\nimport type { SettingsNavStatus } from './SettingsLayout.types';\nimport { sxRem } from '../../../tokens/relative';\n\nexport interface SettingsStatusMarkerProps {\n /** Which situation to draw. */\n status: SettingsNavStatus;\n /** What it means, in the host's language — the only carrier a screen reader gets. */\n label?: string;\n /** `data-testid` for the marker element. */\n testId?: string;\n}\n\n/**\n * The situation marker beside a settings entry: a coloured dot, or a padlock\n * when the plan does not include the section.\n *\n * The label is rendered as visually-hidden text INSIDE the marker rather than as\n * an `aria-label` on it, so it lands in the accessible name of the row that\n * contains it. A row reading \"Endereço, ligado\" is one utterance; a decorative\n * dot with a title attribute beside it is two, and the second one is skipped.\n *\n * Colour alone never says which of the three states this is — that is the whole\n * reason `label` exists, and why a marker without one is a marker with no\n * meaning attached.\n */\nexport function SettingsStatusMarker({\n status,\n label,\n testId,\n}: SettingsStatusMarkerProps): React.JSX.Element {\n const hidden = label ? <Box component=\"span\" sx={SR_ONLY_SX}>{label}</Box> : null;\n\n if (status === 'locked') {\n return (\n <Box\n component=\"span\"\n data-testid={testId}\n data-status={status}\n sx={{ display: 'inline-flex', alignItems: 'center', color: 'text.disabled' }}\n >\n <LockOutlinedIcon sx={{ fontSize: sxRem(16) }} />\n {hidden}\n </Box>\n );\n }\n\n return (\n <Box\n component=\"span\"\n data-testid={testId}\n data-status={status}\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Box\n component=\"span\"\n sx={{\n width: 8,\n height: 8,\n borderRadius: '50%',\n flex: '0 0 auto',\n bgcolor: STATUS_COLOR[status],\n }}\n />\n {hidden}\n </Box>\n );\n}\n\nSettingsStatusMarker.displayName = 'SettingsStatusMarker';\n"],"mappings":";;;;;;;;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,SAAS;AAkCS,cAInB,YAJmB;AALlB,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAAiD;AAC/C,QAAM,SAAS,QAAQ,oBAAC,OAAI,WAAU,QAAO,IAAI,YAAa,iBAAM,IAAS;AAE7E,MAAI,WAAW,UAAU;AACvB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAa;AAAA,QACb,eAAa;AAAA,QACb,IAAI,EAAE,SAAS,eAAe,YAAY,UAAU,OAAO,gBAAgB;AAAA,QAE3E;AAAA,8BAAC,oBAAiB,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,UAC9C;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa;AAAA,MACb,eAAa;AAAA,MACb,IAAI,EAAE,SAAS,eAAe,YAAY,SAAS;AAAA,MAEnD;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,OAAO;AAAA,
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/SettingsLayout/SettingsStatusMarker.tsx"],"sourcesContent":["'use client';\n\nimport LockOutlinedIcon from '@mui/icons-material/LockOutlined';\nimport Box from '@mui/material/Box/index.js';\nimport React from 'react';\n\nimport { SR_ONLY_SX, STATUS_COLOR } from './SettingsLayout.styles';\nimport type { SettingsNavStatus } from './SettingsLayout.types';\nimport { sxRem } from '../../../tokens/relative';\n\nexport interface SettingsStatusMarkerProps {\n /** Which situation to draw. */\n status: SettingsNavStatus;\n /** What it means, in the host's language — the only carrier a screen reader gets. */\n label?: string;\n /** `data-testid` for the marker element. */\n testId?: string;\n}\n\n/**\n * The situation marker beside a settings entry: a coloured dot, or a padlock\n * when the plan does not include the section.\n *\n * The label is rendered as visually-hidden text INSIDE the marker rather than as\n * an `aria-label` on it, so it lands in the accessible name of the row that\n * contains it. A row reading \"Endereço, ligado\" is one utterance; a decorative\n * dot with a title attribute beside it is two, and the second one is skipped.\n *\n * Colour alone never says which of the three states this is — that is the whole\n * reason `label` exists, and why a marker without one is a marker with no\n * meaning attached.\n */\nexport function SettingsStatusMarker({\n status,\n label,\n testId,\n}: SettingsStatusMarkerProps): React.JSX.Element {\n const hidden = label ? <Box component=\"span\" sx={SR_ONLY_SX}>{label}</Box> : null;\n\n if (status === 'locked') {\n return (\n <Box\n component=\"span\"\n data-testid={testId}\n data-status={status}\n sx={{ display: 'inline-flex', alignItems: 'center', color: 'text.disabled' }}\n >\n <LockOutlinedIcon sx={{ fontSize: sxRem(16) }} />\n {hidden}\n </Box>\n );\n }\n\n return (\n <Box\n component=\"span\"\n data-testid={testId}\n data-status={status}\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n >\n <Box\n component=\"span\"\n sx={{\n width: sxRem(8),\n height: sxRem(8),\n borderRadius: '50%',\n flex: '0 0 auto',\n bgcolor: STATUS_COLOR[status],\n }}\n />\n {hidden}\n </Box>\n );\n}\n\nSettingsStatusMarker.displayName = 'SettingsStatusMarker';\n"],"mappings":";;;;;;;;;AAEA,OAAO,sBAAsB;AAC7B,OAAO,SAAS;AAkCS,cAInB,YAJmB;AALlB,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAAiD;AAC/C,QAAM,SAAS,QAAQ,oBAAC,OAAI,WAAU,QAAO,IAAI,YAAa,iBAAM,IAAS;AAE7E,MAAI,WAAW,UAAU;AACvB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAa;AAAA,QACb,eAAa;AAAA,QACb,IAAI,EAAE,SAAS,eAAe,YAAY,UAAU,OAAO,gBAAgB;AAAA,QAE3E;AAAA,8BAAC,oBAAiB,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,UAC9C;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa;AAAA,MACb,eAAa;AAAA,MACb,IAAI,EAAE,SAAS,eAAe,YAAY,SAAS;AAAA,MAEnD;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI;AAAA,cACF,OAAO,MAAM,CAAC;AAAA,cACd,QAAQ,MAAM,CAAC;AAAA,cACf,cAAc;AAAA,cACd,MAAM;AAAA,cACN,SAAS,aAAa,MAAM;AAAA,YAC9B;AAAA;AAAA,QACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,qBAAqB,cAAc;","names":[]}
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-X4F32GUB.js";
|
|
5
5
|
import {
|
|
6
6
|
PillControl
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4GWHYLEB.js";
|
|
8
8
|
import {
|
|
9
9
|
MoreFilters
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GLFTIGOF.js";
|
|
11
11
|
import {
|
|
12
12
|
RangePill
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JCL7WK4G.js";
|
|
14
14
|
import {
|
|
15
15
|
CollapsedSearch,
|
|
16
16
|
InlineKeyword
|
|
@@ -220,4 +220,4 @@ function FilterSlots({
|
|
|
220
220
|
export {
|
|
221
221
|
InlineFilterControls
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-DUBTI4DI.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-4GGH6ZQ7.js";
|
|
4
4
|
import {
|
|
5
5
|
Box
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6WBKOM5K.js";
|
|
7
7
|
|
|
8
8
|
// src/components/layout/Stack/Stack.tsx
|
|
9
9
|
import * as React from "react";
|
|
@@ -16,4 +16,4 @@ Stack.displayName = "Stack";
|
|
|
16
16
|
export {
|
|
17
17
|
Stack
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=chunk-
|
|
19
|
+
//# sourceMappingURL=chunk-DW6F7354.js.map
|
|
@@ -14,6 +14,10 @@ import {
|
|
|
14
14
|
shadowInk,
|
|
15
15
|
sheen
|
|
16
16
|
} from "./chunk-FQ6UW7IY.js";
|
|
17
|
+
import {
|
|
18
|
+
rem,
|
|
19
|
+
rems
|
|
20
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
17
21
|
|
|
18
22
|
// src/components/layout/Skeleton/Skeleton.styles.ts
|
|
19
23
|
import { alpha } from "@mui/material/styles/index.js";
|
|
@@ -42,9 +46,9 @@ var glassmorphismStyles = (theme) => ({
|
|
|
42
46
|
background: `linear-gradient(135deg,
|
|
43
47
|
${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM)} 0%,
|
|
44
48
|
${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_TO)} 100%)`,
|
|
45
|
-
backdropFilter: `blur(${GLASS_BLUR_PX}
|
|
49
|
+
backdropFilter: `blur(${rem(theme, GLASS_BLUR_PX)})`,
|
|
46
50
|
border: `1px solid ${alpha(theme.palette.divider, GLASS_BORDER_ALPHA)}`,
|
|
47
|
-
boxShadow:
|
|
51
|
+
boxShadow: `${rems(theme, 0, GLASS_SHADOW.offsetY, GLASS_SHADOW.blur, 0)} ${shadowInk(theme, GLASS_SHADOW.alpha)}`
|
|
48
52
|
});
|
|
49
53
|
var shimmerStyles = (theme) => ({
|
|
50
54
|
"&::after": {
|
|
@@ -69,7 +73,8 @@ var shimmerStyles = (theme) => ({
|
|
|
69
73
|
}
|
|
70
74
|
}
|
|
71
75
|
});
|
|
72
|
-
var
|
|
76
|
+
var skeletonLength = (theme, value) => typeof value === "number" ? rem(theme, value) : value;
|
|
77
|
+
var skeletonSx = (theme, { intensity, borderRadius, glassmorphism, shimmer, style }) => ({
|
|
73
78
|
borderRadius,
|
|
74
79
|
backgroundColor: alpha(
|
|
75
80
|
theme.palette.mode === "dark" ? modeInk(theme) : theme.palette.text.primary,
|
|
@@ -88,6 +93,7 @@ export {
|
|
|
88
93
|
muiVariantFor,
|
|
89
94
|
muiAnimationFor,
|
|
90
95
|
defaultDimensions,
|
|
91
|
-
|
|
96
|
+
skeletonLength,
|
|
97
|
+
skeletonSx
|
|
92
98
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-E2QIKJX2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/Skeleton/Skeleton.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport type { SkeletonProps } from './Skeleton.types';\nimport {\n GLASS_BACKGROUND_ALPHA_FROM,\n GLASS_BACKGROUND_ALPHA_TO,\n GLASS_BLUR_PX,\n GLASS_BORDER_ALPHA,\n GLASS_SHADOW,\n SHIMMER_ALPHA,\n SHIMMER_DURATION_MS,\n SKELETON_DEFAULT_DIMENSIONS,\n SKELETON_INTENSITY_OPACITY,\n} from './Skeleton.metrics';\nimport { modeInk, shadowInk, sheen } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\ntype SkeletonVariant = NonNullable<SkeletonProps['variant']>;\ntype SkeletonIntensity = NonNullable<SkeletonProps['intensity']>;\n\n/** `wave` is our own name for a rectangle that animates; MUI has no such variant. */\nexport const muiVariantFor = (\n variant: SkeletonVariant,\n): 'circular' | 'rectangular' | 'text' => {\n switch (variant) {\n case 'circular':\n return 'circular';\n case 'rectangular':\n case 'wave':\n return 'rectangular';\n default:\n return 'text';\n }\n};\n\nexport const muiAnimationFor = (\n variant: SkeletonVariant,\n animation: SkeletonProps['animation'],\n) => {\n if (variant === 'wave') return 'wave';\n return animation;\n};\n\n// Derived from the shared metrics, not restated: the native `Skeleton` reads\n// the same table, so the two renderers cannot disagree on a default box.\nexport const defaultDimensions = (\n variant: SkeletonVariant,\n): { width: number | string; height: number | undefined } =>\n // The `default:` arm the old switch had: an unrecognised variant used to fall\n // back rather than hand `undefined` to a caller that then reads `.width`.\n SKELETON_DEFAULT_DIMENSIONS[variant] ?? SKELETON_DEFAULT_DIMENSIONS.rectangular;\n\nconst intensityOpacity = (intensity: SkeletonIntensity): number =>\n SKELETON_INTENSITY_OPACITY[intensity] ?? SKELETON_INTENSITY_OPACITY.medium;\n\nconst glassmorphismStyles = (theme: Theme): CSSObject => ({\n background: `linear-gradient(135deg,\n ${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_FROM)} 0%,\n ${alpha(theme.palette.background.paper, GLASS_BACKGROUND_ALPHA_TO)} 100%)`,\n backdropFilter: `blur(${rem(theme, GLASS_BLUR_PX)})`,\n border: `1px solid ${alpha(theme.palette.divider, GLASS_BORDER_ALPHA)}`,\n boxShadow: `${rems(theme, 0, GLASS_SHADOW.offsetY, GLASS_SHADOW.blur, 0)} ${shadowInk(theme, GLASS_SHADOW.alpha)}`,\n});\n\n// The sweep is a pseudo-element sliding across the box, so the box has to clip it\n// and establish a positioning context — hence `position`/`overflow` below.\nconst shimmerStyles = (theme: Theme): CSSObject => ({\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n background: `linear-gradient(\n 90deg,\n transparent,\n ${sheen(theme, SHIMMER_ALPHA)},\n transparent\n )`,\n transform: 'translateX(-100%)',\n animation: `shimmer ${SHIMMER_DURATION_MS / 1000}s infinite`,\n },\n '@keyframes shimmer': {\n '100%': {\n transform: 'translateX(100%)',\n },\n },\n});\n\ninterface SkeletonStyleArgs {\n intensity: SkeletonIntensity;\n borderRadius?: number | string;\n glassmorphism: boolean;\n shimmer: boolean;\n style?: React.CSSProperties;\n}\n\n/**\n * A `width`/`height` for MUI's `Skeleton`, which writes it into an inline\n * `style`: a number there is px, so it is design px through the type scale.\n * The caller keeps a `0` as `0` (see `Skeleton.tsx`).\n */\nexport const skeletonLength = (theme: Theme, value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? rem(theme, value) : value;\n\n/** The skeleton's `sx` — so a number on `borderRadius` is a multiple of `shape.borderRadius`. */\nexport const skeletonSx = (\n theme: Theme,\n { intensity, borderRadius, glassmorphism, shimmer, style }: SkeletonStyleArgs,\n): CSSObject => ({\n borderRadius,\n backgroundColor: alpha(\n theme.palette.mode === 'dark' ? modeInk(theme) : theme.palette.text.primary,\n intensityOpacity(intensity),\n ),\n ...(shimmer && {\n position: 'relative' as const,\n overflow: 'hidden' as const,\n }),\n ...(glassmorphism ? glassmorphismStyles(theme) : {}),\n ...(shimmer ? shimmerStyles(theme) : {}),\n ...style,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AAsBf,IAAM,gBAAgB,CAC3B,YACwC;AACxC,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,kBAAkB,CAC7B,SACA,cACG;AACH,MAAI,YAAY,OAAQ,QAAO;AAC/B,SAAO;AACT;AAIO,IAAM,oBAAoB,CAC/B;AAAA;AAAA;AAAA,EAIA,4BAA4B,OAAO,KAAK,4BAA4B;AAAA;AAEtE,IAAM,mBAAmB,CAAC,cACxB,2BAA2B,SAAS,KAAK,2BAA2B;AAEtE,IAAM,sBAAsB,CAAC,WAA6B;AAAA,EACxD,YAAY;AAAA,UACJ,MAAM,MAAM,QAAQ,WAAW,OAAO,2BAA2B,CAAC;AAAA,UAClE,MAAM,MAAM,QAAQ,WAAW,OAAO,yBAAyB,CAAC;AAAA,EACxE,gBAAgB,QAAQ,IAAI,OAAO,aAAa,CAAC;AAAA,EACjD,QAAQ,aAAa,MAAM,MAAM,QAAQ,SAAS,kBAAkB,CAAC;AAAA,EACrE,WAAW,GAAG,KAAK,OAAO,GAAG,aAAa,SAAS,aAAa,MAAM,CAAC,CAAC,IAAI,UAAU,OAAO,aAAa,KAAK,CAAC;AAClH;AAIA,IAAM,gBAAgB,CAAC,WAA6B;AAAA,EAClD,YAAY;AAAA,IACV,SAAS;AAAA,IACT,UAAU;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA;AAAA;AAAA,YAGJ,MAAM,OAAO,aAAa,CAAC;AAAA;AAAA;AAAA,IAGnC,WAAW;AAAA,IACX,WAAW,WAAW,sBAAsB,GAAI;AAAA,EAClD;AAAA,EACA,sBAAsB;AAAA,IACpB,QAAQ;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAeO,IAAM,iBAAiB,CAAC,OAAc,UAC3C,OAAO,UAAU,WAAW,IAAI,OAAO,KAAK,IAAI;AAG3C,IAAM,aAAa,CACxB,OACA,EAAE,WAAW,cAAc,eAAe,SAAS,MAAM,OAC1C;AAAA,EACf;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM,QAAQ,SAAS,SAAS,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK;AAAA,IACpE,iBAAiB,SAAS;AAAA,EAC5B;AAAA,EACA,GAAI,WAAW;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,GAAI,gBAAgB,oBAAoB,KAAK,IAAI,CAAC;AAAA,EAClD,GAAI,UAAU,cAAc,KAAK,IAAI,CAAC;AAAA,EACtC,GAAG;AACL;","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-4XK6JQ4D.js";
|
|
4
4
|
import {
|
|
5
5
|
Toast
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VQYR64QB.js";
|
|
7
7
|
|
|
8
8
|
// src/components/form/total-form/FormErrorSnackbar.tsx
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -27,4 +27,4 @@ function FormErrorSnackbar({
|
|
|
27
27
|
export {
|
|
28
28
|
FormErrorSnackbar
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-EERUSI52.js.map
|
|
@@ -194,7 +194,7 @@ function MultiSelectMenu({
|
|
|
194
194
|
slotProps: {
|
|
195
195
|
// Cap the height so a long list (e.g. many categories) scrolls instead
|
|
196
196
|
// of running off-screen; the sticky search box stays pinned on top.
|
|
197
|
-
paper: { sx: { minWidth: anchorWidth ?? 180, width: anchorWidth, maxHeight: 360 } },
|
|
197
|
+
paper: { sx: { minWidth: anchorWidth ?? sxRem(180), width: anchorWidth, maxHeight: sxRem(360) } },
|
|
198
198
|
list: { sx: { pt: showSearch ? 0 : void 0, pb: 0 } }
|
|
199
199
|
},
|
|
200
200
|
children: [
|
|
@@ -275,4 +275,4 @@ function MenuClearFooter({
|
|
|
275
275
|
export {
|
|
276
276
|
MultiSelectDropdown
|
|
277
277
|
};
|
|
278
|
-
//# sourceMappingURL=chunk-
|
|
278
|
+
//# sourceMappingURL=chunk-EYZ6QBTV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/layout/ContentToolbar/MultiSelectDropdown.tsx"],"sourcesContent":["'use client';\n\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport ListSubheader from '@mui/material/ListSubheader/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport type {\n MultiSelectDropdownProps,\n MultiSelectExtraOption,\n MultiSelectOption,\n} from './ContentToolbar.types';\nimport { buildTriggerLabel, InlineTrigger, PillTrigger, StackedTrigger } from './MultiSelectTriggers';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/** One checkbox menu row with an optional trailing count. */\nfunction CheckboxRow({\n label,\n count,\n checked,\n onToggle,\n}: {\n label: string;\n count?: number;\n checked: boolean;\n onToggle: (next: boolean) => void;\n}): React.JSX.Element {\n return (\n <MenuItem onClick={() => onToggle(!checked)} sx={{ gap: 1 }}>\n <Checkbox checked={checked} size=\"small\" disableRipple sx={{ p: 0, pointerEvents: 'none' }} tabIndex={-1} />\n <Box component=\"span\" sx={{ flex: 1, minWidth: 0, textAlign: 'left' }}>\n {label}\n {count != null && (\n <Box component=\"span\" sx={{ color: 'text.secondary' }}>\n {' '}\n ({count})\n </Box>\n )}\n </Box>\n </MenuItem>\n );\n}\n\n/**\n * Generic multi-select dropdown with checkboxes, counts, an optional \"Options\"\n * section, and a \"Clear\" action. Faithful MUI port of the reference toolbar's\n * \"Content Type\" control. The menu stays open while toggling options.\n */\nexport function MultiSelectDropdown<TValue extends string = string>({\n label,\n options,\n selected,\n onToggle,\n onClear,\n allLabel = 'All',\n clearLabel,\n clearText,\n extraOptionsHeading,\n extraOptions,\n searchable,\n searchPlaceholder = 'Search…',\n noResultsLabel = 'No results',\n layout = 'inline',\n 'data-testid': testId,\n onOpenChange,\n}: MultiSelectDropdownProps<TValue>): React.JSX.Element {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [query, setQuery] = useState('');\n const open = Boolean(anchorEl);\n const stacked = layout === 'stacked';\n // Reset the query each time the menu closes so it reopens showing everything.\n const close = (): void => {\n setAnchorEl(null);\n setQuery('');\n onOpenChange?.(false);\n };\n const triggerLabel = buildTriggerLabel(selected, options, allLabel);\n // Auto-enable search for long lists (e.g. many categories) unless overridden.\n const showSearch = searchable ?? options.length > 8;\n const anyExtraChecked = extraOptions?.some((option) => option.checked) ?? false;\n const clearDisabled = selected.size === 0 && !anyExtraChecked;\n\n const openMenu = (event: React.MouseEvent<HTMLElement>): void => {\n setAnchorEl(event.currentTarget);\n onOpenChange?.(true);\n };\n const triggerProps = { triggerLabel, open, onOpen: openMenu, testId };\n\n const renderTrigger = (): React.JSX.Element => {\n if (stacked) return <StackedTrigger label={label} {...triggerProps} />;\n if (layout === 'pill')\n return (\n <PillTrigger\n clearLabel={clearLabel}\n label={label}\n selectedCount={selected.size}\n onClear={onClear}\n {...triggerProps}\n />\n );\n return <InlineTrigger label={label} {...triggerProps} />;\n };\n\n return (\n <>\n {renderTrigger()}\n <MultiSelectMenu\n extraOptionsHeading={extraOptionsHeading} clearText={clearText} anchorEl={anchorEl}\n open={open}\n close={close}\n options={options}\n selected={selected}\n onToggle={onToggle}\n extraOptions={extraOptions}\n clearDisabled={clearDisabled}\n onClear={onClear}\n showSearch={showSearch}\n query={query}\n onQueryChange={setQuery}\n searchPlaceholder={searchPlaceholder}\n noResultsLabel={noResultsLabel}\n matchAnchorWidth={stacked}\n testId={testId}\n />\n </>\n );\n}\n\n/** Sticky search box at the top of the menu; keydowns don't reach the Menu's typeahead. */\nfunction MenuSearchField({\n query,\n onQueryChange,\n placeholder,\n testId,\n}: {\n query: string;\n onQueryChange: (value: string) => void;\n placeholder: string;\n testId?: string;\n}): React.JSX.Element {\n return (\n <Box\n sx={{ position: 'sticky', top: 0, zIndex: 1, bgcolor: 'background.paper', px: 1, py: 0.75 }}\n onKeyDown={(event) => event.stopPropagation()}\n >\n <TextField\n autoFocus\n size=\"small\"\n sx={fieldTextFieldStyles}\n fullWidth\n value={query}\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={placeholder}\n inputProps={{ 'aria-label': placeholder, 'data-testid': testId ? `${testId}-search` : undefined }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: sxRem(16) }} />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n );\n}\n\ninterface MultiSelectMenuProps<TValue extends string> {\n anchorEl: HTMLElement | null;\n open: boolean;\n close: () => void;\n options: MultiSelectOption<TValue>[];\n selected: ReadonlySet<TValue>;\n onToggle: (value: TValue, checked: boolean) => void;\n extraOptions?: MultiSelectExtraOption[];\n clearDisabled: boolean;\n onClear: () => void;\n showSearch: boolean;\n query: string;\n onQueryChange: (value: string) => void;\n searchPlaceholder: string;\n noResultsLabel: string;\n extraOptionsHeading: string;\n clearText: string;\n /** Match the menu width to the trigger and left-align it (stacked select). */\n matchAnchorWidth?: boolean;\n testId?: string;\n}\n\n/**\n * Menu placement. Default: anchored to the trigger's right (toolbar). When\n * `matchAnchorWidth` (stacked select), match the trigger width and left-align so\n * the menu sits flush under the full-width control.\n */\nfunction resolveMenuPlacement(\n matchAnchorWidth: boolean | undefined,\n anchorEl: HTMLElement | null,\n): { anchorWidth: number | undefined; align: 'left' | 'right' } {\n if (!matchAnchorWidth) return { anchorWidth: undefined, align: 'right' };\n return { anchorWidth: anchorEl?.offsetWidth, align: 'left' };\n}\n\n/** The (optional) search box + checkbox list + optional \"Options\" section + a \"Clear\" footer. */\nfunction MultiSelectMenu<TValue extends string>({\n anchorEl,\n open,\n close,\n options,\n selected,\n onToggle,\n extraOptions,\n extraOptionsHeading,\n clearText,\n clearDisabled,\n onClear,\n showSearch,\n query,\n onQueryChange,\n searchPlaceholder,\n noResultsLabel,\n matchAnchorWidth,\n testId,\n}: MultiSelectMenuProps<TValue>): React.JSX.Element {\n const trimmed = query.trim().toLowerCase();\n const visibleOptions = useMemo(\n () => (trimmed ? options.filter((option) => option.label.toLowerCase().includes(trimmed)) : options),\n [options, trimmed],\n );\n const { anchorWidth, align } = resolveMenuPlacement(matchAnchorWidth, anchorEl);\n return (\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={close}\n anchorOrigin={{ vertical: 'bottom', horizontal: align }}\n transformOrigin={{ vertical: 'top', horizontal: align }}\n // Keep focus on the search box (don't let the Menu grab the first item),\n // and stop MUI's typeahead from swallowing keystrokes meant for the input.\n autoFocus={!showSearch}\n disableAutoFocusItem\n slotProps={{\n // Cap the height so a long list (e.g. many categories) scrolls instead\n // of running off-screen; the sticky search box stays pinned on top.\n paper: { sx: { minWidth: anchorWidth ?? 180, width: anchorWidth, maxHeight: 360 } },\n list: { sx: { pt: showSearch ? 0 : undefined, pb: 0 } },\n }}\n >\n {showSearch && (\n <MenuSearchField query={query} onQueryChange={onQueryChange} placeholder={searchPlaceholder} testId={testId} />\n )}\n {visibleOptions.length === 0 && showSearch ? (\n <MenuItem disabled data-testid={testId ? `${testId}-no-results` : undefined} sx={{ fontSize: sxRem(13) }}>\n {noResultsLabel}\n </MenuItem>\n ) : (\n visibleOptions.map((option) => (\n <CheckboxRow\n key={option.value}\n label={option.label}\n count={option.count}\n checked={selected.has(option.value)}\n onToggle={(next) => onToggle(option.value, next)}\n />\n ))\n )}\n {extraOptions && extraOptions.length > 0\n ? [\n <Divider key=\"extra-divider\" />,\n <ListSubheader key=\"extra-label\" sx={{ px: 1, py: 0.75, fontSize: sxRem(12), fontWeight: 600 }}>\n {extraOptionsHeading}\n </ListSubheader>,\n ...extraOptions.map((extra) => (\n <CheckboxRow key={extra.id} label={extra.label} checked={extra.checked} onToggle={(next) => extra.onCheckedChange(next)} />\n )),\n ]\n : null}\n <MenuClearFooter\n clearText={clearText} clearDisabled={clearDisabled} onClear={onClear}\n close={close} testId={testId}\n />\n </Menu>\n );\n}\n\n/** The bottom \"Clear\" footer that resets the selection and closes the menu. */\nfunction MenuClearFooter({\n clearText,\n clearDisabled,\n onClear,\n close,\n testId,\n}: {\n clearText: string;\n clearDisabled: boolean;\n onClear: () => void;\n close: () => void;\n testId?: string;\n}): React.JSX.Element {\n return (\n <Box\n sx={{\n // Pin to the bottom of the scroll viewport so it stays visible while the\n // options list scrolls (mirrors the sticky search box on top).\n position: 'sticky',\n bottom: 0,\n zIndex: 1,\n display: 'flex',\n justifyContent: 'flex-end',\n borderTop: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n px: 1,\n py: 0.75,\n }}\n >\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n data-testid={testId ? `${testId}-clear` : undefined}\n disabled={clearDisabled}\n onClick={() => {\n onClear();\n close();\n }}\n sx={{ minWidth: 0, px: 1, py: 0.25, fontSize: sxRem(12), fontWeight: 400, textTransform: 'none', color: 'text.secondary' }}\n >\n {clearText}\n </Button>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/layout/ContentToolbar/MultiSelectDropdown.tsx"],"sourcesContent":["'use client';\n\nimport SearchIcon from '@mui/icons-material/Search';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport ListSubheader from '@mui/material/ListSubheader/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport React, { useMemo, useState } from 'react';\n\nimport type {\n MultiSelectDropdownProps,\n MultiSelectExtraOption,\n MultiSelectOption,\n} from './ContentToolbar.types';\nimport { buildTriggerLabel, InlineTrigger, PillTrigger, StackedTrigger } from './MultiSelectTriggers';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/** One checkbox menu row with an optional trailing count. */\nfunction CheckboxRow({\n label,\n count,\n checked,\n onToggle,\n}: {\n label: string;\n count?: number;\n checked: boolean;\n onToggle: (next: boolean) => void;\n}): React.JSX.Element {\n return (\n <MenuItem onClick={() => onToggle(!checked)} sx={{ gap: 1 }}>\n <Checkbox checked={checked} size=\"small\" disableRipple sx={{ p: 0, pointerEvents: 'none' }} tabIndex={-1} />\n <Box component=\"span\" sx={{ flex: 1, minWidth: 0, textAlign: 'left' }}>\n {label}\n {count != null && (\n <Box component=\"span\" sx={{ color: 'text.secondary' }}>\n {' '}\n ({count})\n </Box>\n )}\n </Box>\n </MenuItem>\n );\n}\n\n/**\n * Generic multi-select dropdown with checkboxes, counts, an optional \"Options\"\n * section, and a \"Clear\" action. Faithful MUI port of the reference toolbar's\n * \"Content Type\" control. The menu stays open while toggling options.\n */\nexport function MultiSelectDropdown<TValue extends string = string>({\n label,\n options,\n selected,\n onToggle,\n onClear,\n allLabel = 'All',\n clearLabel,\n clearText,\n extraOptionsHeading,\n extraOptions,\n searchable,\n searchPlaceholder = 'Search…',\n noResultsLabel = 'No results',\n layout = 'inline',\n 'data-testid': testId,\n onOpenChange,\n}: MultiSelectDropdownProps<TValue>): React.JSX.Element {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [query, setQuery] = useState('');\n const open = Boolean(anchorEl);\n const stacked = layout === 'stacked';\n // Reset the query each time the menu closes so it reopens showing everything.\n const close = (): void => {\n setAnchorEl(null);\n setQuery('');\n onOpenChange?.(false);\n };\n const triggerLabel = buildTriggerLabel(selected, options, allLabel);\n // Auto-enable search for long lists (e.g. many categories) unless overridden.\n const showSearch = searchable ?? options.length > 8;\n const anyExtraChecked = extraOptions?.some((option) => option.checked) ?? false;\n const clearDisabled = selected.size === 0 && !anyExtraChecked;\n\n const openMenu = (event: React.MouseEvent<HTMLElement>): void => {\n setAnchorEl(event.currentTarget);\n onOpenChange?.(true);\n };\n const triggerProps = { triggerLabel, open, onOpen: openMenu, testId };\n\n const renderTrigger = (): React.JSX.Element => {\n if (stacked) return <StackedTrigger label={label} {...triggerProps} />;\n if (layout === 'pill')\n return (\n <PillTrigger\n clearLabel={clearLabel}\n label={label}\n selectedCount={selected.size}\n onClear={onClear}\n {...triggerProps}\n />\n );\n return <InlineTrigger label={label} {...triggerProps} />;\n };\n\n return (\n <>\n {renderTrigger()}\n <MultiSelectMenu\n extraOptionsHeading={extraOptionsHeading} clearText={clearText} anchorEl={anchorEl}\n open={open}\n close={close}\n options={options}\n selected={selected}\n onToggle={onToggle}\n extraOptions={extraOptions}\n clearDisabled={clearDisabled}\n onClear={onClear}\n showSearch={showSearch}\n query={query}\n onQueryChange={setQuery}\n searchPlaceholder={searchPlaceholder}\n noResultsLabel={noResultsLabel}\n matchAnchorWidth={stacked}\n testId={testId}\n />\n </>\n );\n}\n\n/** Sticky search box at the top of the menu; keydowns don't reach the Menu's typeahead. */\nfunction MenuSearchField({\n query,\n onQueryChange,\n placeholder,\n testId,\n}: {\n query: string;\n onQueryChange: (value: string) => void;\n placeholder: string;\n testId?: string;\n}): React.JSX.Element {\n return (\n <Box\n sx={{ position: 'sticky', top: 0, zIndex: 1, bgcolor: 'background.paper', px: 1, py: 0.75 }}\n onKeyDown={(event) => event.stopPropagation()}\n >\n <TextField\n autoFocus\n size=\"small\"\n sx={fieldTextFieldStyles}\n fullWidth\n value={query}\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={placeholder}\n inputProps={{ 'aria-label': placeholder, 'data-testid': testId ? `${testId}-search` : undefined }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: sxRem(16) }} />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n );\n}\n\ninterface MultiSelectMenuProps<TValue extends string> {\n anchorEl: HTMLElement | null;\n open: boolean;\n close: () => void;\n options: MultiSelectOption<TValue>[];\n selected: ReadonlySet<TValue>;\n onToggle: (value: TValue, checked: boolean) => void;\n extraOptions?: MultiSelectExtraOption[];\n clearDisabled: boolean;\n onClear: () => void;\n showSearch: boolean;\n query: string;\n onQueryChange: (value: string) => void;\n searchPlaceholder: string;\n noResultsLabel: string;\n extraOptionsHeading: string;\n clearText: string;\n /** Match the menu width to the trigger and left-align it (stacked select). */\n matchAnchorWidth?: boolean;\n testId?: string;\n}\n\n/**\n * Menu placement. Default: anchored to the trigger's right (toolbar). When\n * `matchAnchorWidth` (stacked select), match the trigger width and left-align so\n * the menu sits flush under the full-width control.\n */\nfunction resolveMenuPlacement(\n matchAnchorWidth: boolean | undefined,\n anchorEl: HTMLElement | null,\n): { anchorWidth: number | undefined; align: 'left' | 'right' } {\n if (!matchAnchorWidth) return { anchorWidth: undefined, align: 'right' };\n return { anchorWidth: anchorEl?.offsetWidth, align: 'left' };\n}\n\n/** The (optional) search box + checkbox list + optional \"Options\" section + a \"Clear\" footer. */\nfunction MultiSelectMenu<TValue extends string>({\n anchorEl,\n open,\n close,\n options,\n selected,\n onToggle,\n extraOptions,\n extraOptionsHeading,\n clearText,\n clearDisabled,\n onClear,\n showSearch,\n query,\n onQueryChange,\n searchPlaceholder,\n noResultsLabel,\n matchAnchorWidth,\n testId,\n}: MultiSelectMenuProps<TValue>): React.JSX.Element {\n const trimmed = query.trim().toLowerCase();\n const visibleOptions = useMemo(\n () => (trimmed ? options.filter((option) => option.label.toLowerCase().includes(trimmed)) : options),\n [options, trimmed],\n );\n const { anchorWidth, align } = resolveMenuPlacement(matchAnchorWidth, anchorEl);\n return (\n <Menu\n anchorEl={anchorEl}\n open={open}\n onClose={close}\n anchorOrigin={{ vertical: 'bottom', horizontal: align }}\n transformOrigin={{ vertical: 'top', horizontal: align }}\n // Keep focus on the search box (don't let the Menu grab the first item),\n // and stop MUI's typeahead from swallowing keystrokes meant for the input.\n autoFocus={!showSearch}\n disableAutoFocusItem\n slotProps={{\n // Cap the height so a long list (e.g. many categories) scrolls instead\n // of running off-screen; the sticky search box stays pinned on top.\n paper: { sx: { minWidth: anchorWidth ?? sxRem(180), width: anchorWidth, maxHeight: sxRem(360) } },\n list: { sx: { pt: showSearch ? 0 : undefined, pb: 0 } },\n }}\n >\n {showSearch && (\n <MenuSearchField query={query} onQueryChange={onQueryChange} placeholder={searchPlaceholder} testId={testId} />\n )}\n {visibleOptions.length === 0 && showSearch ? (\n <MenuItem disabled data-testid={testId ? `${testId}-no-results` : undefined} sx={{ fontSize: sxRem(13) }}>\n {noResultsLabel}\n </MenuItem>\n ) : (\n visibleOptions.map((option) => (\n <CheckboxRow\n key={option.value}\n label={option.label}\n count={option.count}\n checked={selected.has(option.value)}\n onToggle={(next) => onToggle(option.value, next)}\n />\n ))\n )}\n {extraOptions && extraOptions.length > 0\n ? [\n <Divider key=\"extra-divider\" />,\n <ListSubheader key=\"extra-label\" sx={{ px: 1, py: 0.75, fontSize: sxRem(12), fontWeight: 600 }}>\n {extraOptionsHeading}\n </ListSubheader>,\n ...extraOptions.map((extra) => (\n <CheckboxRow key={extra.id} label={extra.label} checked={extra.checked} onToggle={(next) => extra.onCheckedChange(next)} />\n )),\n ]\n : null}\n <MenuClearFooter\n clearText={clearText} clearDisabled={clearDisabled} onClear={onClear}\n close={close} testId={testId}\n />\n </Menu>\n );\n}\n\n/** The bottom \"Clear\" footer that resets the selection and closes the menu. */\nfunction MenuClearFooter({\n clearText,\n clearDisabled,\n onClear,\n close,\n testId,\n}: {\n clearText: string;\n clearDisabled: boolean;\n onClear: () => void;\n close: () => void;\n testId?: string;\n}): React.JSX.Element {\n return (\n <Box\n sx={{\n // Pin to the bottom of the scroll viewport so it stays visible while the\n // options list scrolls (mirrors the sticky search box on top).\n position: 'sticky',\n bottom: 0,\n zIndex: 1,\n display: 'flex',\n justifyContent: 'flex-end',\n borderTop: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n px: 1,\n py: 0.75,\n }}\n >\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n data-testid={testId ? `${testId}-clear` : undefined}\n disabled={clearDisabled}\n onClick={() => {\n onClear();\n close();\n }}\n sx={{ minWidth: 0, px: 1, py: 0.25, fontSize: sxRem(12), fontWeight: 400, textTransform: 'none', color: 'text.secondary' }}\n >\n {clearText}\n </Button>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
STACK_BREAK
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-M2JTIH5M.js";
|
|
4
4
|
import {
|
|
5
5
|
CARD_RADIUS,
|
|
6
6
|
cardSurfaceStyles,
|
|
@@ -189,4 +189,4 @@ export {
|
|
|
189
189
|
actionProps,
|
|
190
190
|
rowStyles
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-FFCJ7NR2.js.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
accordionVariantStyles
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-43G3WMYN.js";
|
|
4
|
+
import {
|
|
5
|
+
rem
|
|
6
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
4
7
|
|
|
5
8
|
// src/components/layout/Accordion/Accordion.tsx
|
|
6
9
|
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
|
@@ -58,7 +61,7 @@ var AccordionSummary = ({
|
|
|
58
61
|
disabled,
|
|
59
62
|
"data-testid": testId,
|
|
60
63
|
sx: {
|
|
61
|
-
minHeight: 56,
|
|
64
|
+
minHeight: rem(theme, 56),
|
|
62
65
|
"& .MuiAccordionSummary-expandIconWrapper": {
|
|
63
66
|
transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
64
67
|
color: theme.palette.text.secondary
|
|
@@ -74,13 +77,13 @@ var AccordionSummary = ({
|
|
|
74
77
|
}
|
|
75
78
|
},
|
|
76
79
|
"&.Mui-focusVisible": {
|
|
77
|
-
outline:
|
|
78
|
-
outlineOffset: 2
|
|
80
|
+
outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`,
|
|
81
|
+
outlineOffset: rem(theme, 2)
|
|
79
82
|
},
|
|
80
83
|
// Enhanced keyboard navigation styles
|
|
81
84
|
"&:focus-visible": {
|
|
82
|
-
outline:
|
|
83
|
-
outlineOffset: -2
|
|
85
|
+
outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`,
|
|
86
|
+
outlineOffset: rem(theme, -2)
|
|
84
87
|
}
|
|
85
88
|
},
|
|
86
89
|
...props,
|
|
@@ -109,7 +112,7 @@ var AccordionDetails = ({
|
|
|
109
112
|
"@keyframes fadeInUp": {
|
|
110
113
|
"0%": {
|
|
111
114
|
opacity: 0,
|
|
112
|
-
transform:
|
|
115
|
+
transform: `translateY(${rem(theme, 8)})`
|
|
113
116
|
},
|
|
114
117
|
"100%": {
|
|
115
118
|
opacity: 1,
|
|
@@ -138,12 +141,12 @@ var AccordionActions = ({
|
|
|
138
141
|
padding: theme.spacing(1, 2),
|
|
139
142
|
borderTop: `1px solid ${alpha(theme.palette.divider, 0.08)}`,
|
|
140
143
|
backgroundColor: alpha(theme.palette.background.paper, 0.5),
|
|
141
|
-
backdropFilter:
|
|
144
|
+
backdropFilter: `blur(${rem(theme, 8)})`,
|
|
142
145
|
// Animate button entries
|
|
143
146
|
"& > *": {
|
|
144
147
|
transition: "all 0.2s ease-in-out",
|
|
145
148
|
"&:hover": {
|
|
146
|
-
transform:
|
|
149
|
+
transform: `translateY(${rem(theme, -1)})`
|
|
147
150
|
}
|
|
148
151
|
}
|
|
149
152
|
},
|
|
@@ -159,4 +162,4 @@ export {
|
|
|
159
162
|
AccordionDetails,
|
|
160
163
|
AccordionActions
|
|
161
164
|
};
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-FOCU4QT5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { rem } from '../../../tokens/relative';\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: rem(theme, 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: `${rem(theme, 2)} solid ${theme.palette.primary.main}`,\n outlineOffset: rem(theme, 2),\n },\n // Enhanced keyboard navigation styles\n '&:focus-visible': {\n outline: `${rem(theme, 2)} solid ${theme.palette.primary.main}`,\n outlineOffset: rem(theme, -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(${rem(theme, 8)})`,\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(${rem(theme, 8)})`,\n // Animate button entries\n '& > *': {\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n transform: `translateY(${rem(theme, -1)})`,\n },\n },\n }}\n {...props}\n >\n {children}\n </MuiAccordionActions>\n );\n};"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
neutralTones
|
|
4
4
|
} from "./chunk-FQ6UW7IY.js";
|
|
5
5
|
import {
|
|
6
|
-
rem
|
|
6
|
+
rem,
|
|
7
|
+
rems
|
|
7
8
|
} from "./chunk-YKCAJ2TN.js";
|
|
8
9
|
|
|
9
10
|
// src/components/typography/Code/Code.tsx
|
|
@@ -19,16 +20,16 @@ var StyledCodeContainer = styled(Box, {
|
|
|
19
20
|
shouldForwardProp: (prop) => !["customVariant", "customSize", "copyable"].includes(prop)
|
|
20
21
|
})(({ theme, customVariant = "inline", customSize = "md", copyable }) => {
|
|
21
22
|
const sizeMap = {
|
|
22
|
-
xs: { fontSize: rem(theme, 12), padding:
|
|
23
|
-
sm: { fontSize: rem(theme, 13), padding:
|
|
24
|
-
md: { fontSize: rem(theme, 14), padding:
|
|
25
|
-
lg: { fontSize: rem(theme, 16), padding:
|
|
23
|
+
xs: { fontSize: rem(theme, 12), padding: rems(theme, 2, 4) },
|
|
24
|
+
sm: { fontSize: rem(theme, 13), padding: rems(theme, 3, 6) },
|
|
25
|
+
md: { fontSize: rem(theme, 14), padding: rems(theme, 4, 8) },
|
|
26
|
+
lg: { fontSize: rem(theme, 16), padding: rems(theme, 6, 12) }
|
|
26
27
|
};
|
|
27
28
|
const blockSizeMap = {
|
|
28
|
-
xs: { fontSize: rem(theme, 12), padding:
|
|
29
|
-
sm: { fontSize: rem(theme, 13), padding:
|
|
30
|
-
md: { fontSize: rem(theme, 14), padding:
|
|
31
|
-
lg: { fontSize: rem(theme, 16), padding:
|
|
29
|
+
xs: { fontSize: rem(theme, 12), padding: rems(theme, 8, 12) },
|
|
30
|
+
sm: { fontSize: rem(theme, 13), padding: rems(theme, 12, 16) },
|
|
31
|
+
md: { fontSize: rem(theme, 14), padding: rems(theme, 16, 20) },
|
|
32
|
+
lg: { fontSize: rem(theme, 16), padding: rems(theme, 20, 24) }
|
|
32
33
|
};
|
|
33
34
|
const baseStyles = {
|
|
34
35
|
fontFamily: 'Monaco, Menlo, "Ubuntu Mono", "Courier New", monospace',
|
|
@@ -57,7 +58,7 @@ var StyledCodeContainer = styled(Box, {
|
|
|
57
58
|
...blockSizeMap[customSize],
|
|
58
59
|
...copyable && {
|
|
59
60
|
paddingTop: blockSizeMap[customSize].padding.split(" ")[0],
|
|
60
|
-
paddingRight:
|
|
61
|
+
paddingRight: rem(theme, 60)
|
|
61
62
|
}
|
|
62
63
|
},
|
|
63
64
|
highlight: {
|
|
@@ -66,13 +67,13 @@ var StyledCodeContainer = styled(Box, {
|
|
|
66
67
|
background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.1)} 0%, ${alpha(theme.palette.secondary.main, 0.1)} 100%)`,
|
|
67
68
|
color: theme.palette.text.primary,
|
|
68
69
|
border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,
|
|
69
|
-
borderLeft:
|
|
70
|
+
borderLeft: `${rem(theme, 4)} solid ${theme.palette.primary.main}`,
|
|
70
71
|
overflow: "auto",
|
|
71
72
|
whiteSpace: "pre",
|
|
72
73
|
...blockSizeMap[customSize],
|
|
73
74
|
...copyable && {
|
|
74
75
|
paddingTop: blockSizeMap[customSize].padding.split(" ")[0],
|
|
75
|
-
paddingRight:
|
|
76
|
+
paddingRight: rem(theme, 60)
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
};
|
|
@@ -92,10 +93,10 @@ var CopyButton = styled(IconButton)(({ theme }) => ({
|
|
|
92
93
|
position: "absolute",
|
|
93
94
|
top: theme.spacing(1),
|
|
94
95
|
right: theme.spacing(1),
|
|
95
|
-
width: 32,
|
|
96
|
-
height: 32,
|
|
96
|
+
width: rem(theme, 32),
|
|
97
|
+
height: rem(theme, 32),
|
|
97
98
|
backgroundColor: theme.palette.mode === "dark" ? alpha(theme.palette.background.paper, 0.8) : theme.palette.background.paper,
|
|
98
|
-
backdropFilter: theme.palette.mode === "dark" ?
|
|
99
|
+
backdropFilter: theme.palette.mode === "dark" ? `blur(${rem(theme, 8)})` : "none",
|
|
99
100
|
border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,
|
|
100
101
|
boxShadow: theme.palette.mode === "light" ? theme.shadows[1] : "none",
|
|
101
102
|
"&:hover": {
|
|
@@ -114,9 +115,9 @@ var LanguageLabel = styled(Box)(({ theme }) => ({
|
|
|
114
115
|
fontWeight: 500,
|
|
115
116
|
color: alpha(theme.palette.text.primary, 0.6),
|
|
116
117
|
backgroundColor: theme.palette.mode === "dark" ? alpha(theme.palette.background.paper, 0.8) : theme.palette.background.paper,
|
|
117
|
-
padding:
|
|
118
|
+
padding: rems(theme, 2, 8),
|
|
118
119
|
borderRadius: theme.shape.borderRadius / 2,
|
|
119
|
-
backdropFilter: theme.palette.mode === "dark" ?
|
|
120
|
+
backdropFilter: theme.palette.mode === "dark" ? `blur(${rem(theme, 8)})` : "none",
|
|
120
121
|
border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,
|
|
121
122
|
boxShadow: theme.palette.mode === "light" ? theme.shadows[1] : "none"
|
|
122
123
|
}));
|
|
@@ -201,4 +202,4 @@ Code.displayName = "Code";
|
|
|
201
202
|
export {
|
|
202
203
|
Code
|
|
203
204
|
};
|
|
204
|
-
//# sourceMappingURL=chunk-
|
|
205
|
+
//# sourceMappingURL=chunk-FYKFQPVT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/typography/Code/Code.tsx"],"sourcesContent":["import Check from '@mui/icons-material/Check';\nimport ContentCopy from '@mui/icons-material/ContentCopy';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Tooltip from '@mui/material/Tooltip/index.js';\nimport { alpha, styled } from '@mui/material/styles/index.js';\nimport React, { useState } from 'react';\n\nimport type { CodeProps } from './Code.types';\nimport { modeInk, neutralTones } from '../../../tokens/ink';\nimport { rem, rems } from '../../../tokens/relative';\n\nconst StyledCodeContainer = styled(Box, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'customSize', 'copyable'].includes(prop as string),\n})<{\n customVariant?: string;\n customSize?: string;\n copyable?: boolean;\n component?: React.ElementType;\n}>(({ theme, customVariant = 'inline', customSize = 'md', copyable }) => {\n // Size mapping\n const sizeMap = {\n xs: { fontSize: rem(theme, 12), padding: rems(theme, 2, 4) },\n sm: { fontSize: rem(theme, 13), padding: rems(theme, 3, 6) },\n md: { fontSize: rem(theme, 14), padding: rems(theme, 4, 8) },\n lg: { fontSize: rem(theme, 16), padding: rems(theme, 6, 12) },\n };\n\n const blockSizeMap = {\n xs: { fontSize: rem(theme, 12), padding: rems(theme, 8, 12) },\n sm: { fontSize: rem(theme, 13), padding: rems(theme, 12, 16) },\n md: { fontSize: rem(theme, 14), padding: rems(theme, 16, 20) },\n lg: { fontSize: rem(theme, 16), padding: rems(theme, 20, 24) },\n };\n\n const baseStyles = {\n fontFamily: 'Monaco, Menlo, \"Ubuntu Mono\", \"Courier New\", monospace',\n lineHeight: 1.5,\n borderRadius: theme.shape.borderRadius,\n transition: 'all 0.2s ease',\n position: 'relative' as const,\n };\n\n // Variant-specific styles\n const variantStyles = {\n inline: {\n ...baseStyles,\n display: 'inline',\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n color: theme.palette.primary.main,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.12)}`,\n ...sizeMap[customSize as keyof typeof sizeMap],\n },\n block: {\n ...baseStyles,\n display: 'block',\n backgroundColor:\n theme.palette.mode === 'dark'\n ? alpha(neutralTones(theme).inverseSurface, 0.95)\n : alpha(neutralTones(theme).surface, 0.95),\n color:\n theme.palette.mode === 'dark' ? modeInk(theme) : theme.palette.text.primary,\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n overflow: 'auto',\n whiteSpace: 'pre' as const,\n ...blockSizeMap[customSize as keyof typeof blockSizeMap],\n ...(copyable && {\n paddingTop: blockSizeMap[customSize as keyof typeof blockSizeMap].padding.split(' ')[0],\n paddingRight: rem(theme, 60),\n }),\n },\n highlight: {\n ...baseStyles,\n display: 'block',\n background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.1)} 0%, ${alpha(theme.palette.secondary.main, 0.1)} 100%)`,\n color: theme.palette.text.primary,\n border: `1px solid ${alpha(theme.palette.primary.main, 0.2)}`,\n borderLeft: `${rem(theme, 4)} solid ${theme.palette.primary.main}`,\n overflow: 'auto',\n whiteSpace: 'pre' as const,\n ...blockSizeMap[customSize as keyof typeof blockSizeMap],\n ...(copyable && {\n paddingTop: blockSizeMap[customSize as keyof typeof blockSizeMap].padding.split(' ')[0],\n paddingRight: rem(theme, 60),\n }),\n },\n };\n\n return variantStyles[customVariant as keyof typeof variantStyles] || variantStyles.inline;\n});\n\nconst StyledCode = styled('code')({\n margin: 0,\n padding: 0,\n backgroundColor: 'transparent',\n border: 'none',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n color: 'inherit',\n});\n\nconst CopyButton = styled(IconButton)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n width: rem(theme, 32),\n height: rem(theme, 32),\n backgroundColor:\n theme.palette.mode === 'dark'\n ? alpha(theme.palette.background.paper, 0.8)\n : theme.palette.background.paper,\n backdropFilter: theme.palette.mode === 'dark' ? `blur(${rem(theme, 8)})` : 'none',\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n boxShadow: theme.palette.mode === 'light' ? theme.shadows[1] : 'none',\n '&:hover': {\n backgroundColor:\n theme.palette.mode === 'dark'\n ? alpha(theme.palette.background.paper, 0.9)\n : neutralTones(theme).surface,\n transform: 'scale(1.05)',\n },\n '& .MuiSvgIcon-root': {\n fontSize: rem(theme, 16),\n },\n}));\n\nconst LanguageLabel = styled(Box)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(1),\n left: theme.spacing(2),\n fontSize: rem(theme, 12),\n fontWeight: 500,\n color: alpha(theme.palette.text.primary, 0.6),\n backgroundColor:\n theme.palette.mode === 'dark'\n ? alpha(theme.palette.background.paper, 0.8)\n : theme.palette.background.paper,\n padding: rems(theme, 2, 8),\n borderRadius: theme.shape.borderRadius / 2,\n backdropFilter: theme.palette.mode === 'dark' ? `blur(${rem(theme, 8)})` : 'none',\n border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,\n boxShadow: theme.palette.mode === 'light' ? theme.shadows[1] : 'none',\n}));\n\n// Renders each source line beside a gutter number. Keys combine the line number\n// with a slice of the content and its length, so editing one line in place does\n// not reshuffle the keys of the lines around it.\nconst renderNumberedLines = (source: string) =>\n source.split('\\n').map((line, index) => {\n const stableKey = `line-${index + 1}-${line.slice(0, 10).replace(/\\s+/g, '')}-${line.length}`;\n\n return (\n <div key={stableKey} style={{ display: 'flex' }}>\n <span\n style={{\n display: 'inline-block',\n minWidth: '3em',\n opacity: 0.5,\n userSelect: 'none',\n marginRight: '1em',\n textAlign: 'right',\n }}\n >\n {index + 1}\n </span>\n <span>{line}</span>\n </div>\n );\n });\n\n// Only block-ish variants get a language label or a copy affordance.\nconst resolveCodeFlags = (\n variant: CodeProps['variant'],\n copyable: boolean,\n language: CodeProps['language'],\n) => {\n const isBlock = variant === 'block' || variant === 'highlight';\n return {\n isBlock,\n showCopy: copyable && isBlock,\n showLanguage: Boolean(language) && isBlock,\n };\n};\n\n// Owns its own \"just copied\" flash. Keeping it here rather than inline in Code\n// means the copied/not-copied branches do not count against the main render, and\n// the flash re-renders only the button. Non-string children are still a no-op on\n// click, exactly as before.\nconst CodeCopyButton: React.FC<{ source: React.ReactNode }> = ({ source }) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n if (typeof source !== 'string') return;\n try {\n await navigator.clipboard.writeText(source);\n setCopied(true);\n window.setTimeout(() => setCopied(false), 2000);\n } catch {\n // Silently fail if clipboard access is denied\n }\n };\n\n return (\n <Tooltip title={copied ? 'Copied!' : 'Copy code'}>\n <CopyButton onClick={handleCopy} size=\"small\" color={copied ? 'success' : 'default'}>\n {copied ? <Check /> : <ContentCopy />}\n </CopyButton>\n </Tooltip>\n );\n};\n\nexport const Code = React.forwardRef<HTMLElement, CodeProps>(\n (\n {\n variant = 'inline',\n language,\n copyable = false,\n lineNumbers = false,\n size = 'md',\n children,\n ...props\n },\n ref,\n ) => {\n const { isBlock, showCopy, showLanguage } = resolveCodeFlags(variant, copyable, language);\n\n // Process children for line numbers if needed\n const processedChildren = React.useMemo(() => {\n if (!lineNumbers || !isBlock || typeof children !== 'string') {\n return children;\n }\n\n return renderNumberedLines(children);\n }, [children, lineNumbers, isBlock]);\n\n return (\n <StyledCodeContainer\n ref={ref}\n component={variant === 'inline' ? 'span' : 'div'}\n customVariant={variant}\n customSize={size}\n copyable={showCopy}\n {...props}\n >\n {showLanguage && <LanguageLabel>{language}</LanguageLabel>}\n\n <StyledCode>{processedChildren}</StyledCode>\n\n {showCopy && <CodeCopyButton source={children} />}\n </StyledCodeContainer>\n );\n },\n);\n\nCode.displayName = 'Code';"],"mappings":"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","names":[]}
|