@keboola/design 11.6.1 → 12.0.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/AGENTS.md +50 -9
- package/CHANGELOG.md +241 -0
- package/COMPONENT-API.md +337 -288
- package/README.md +12 -2
- package/dist/{AIKit-CQxVwyAk.js → AIKit-BD4r7ff-.js} +807 -199
- package/dist/AIKit-BD4r7ff-.js.map +1 -0
- package/dist/{Alert-C4Y9IwMI.js → Alert-UI-CIs-1.js} +16 -16
- package/dist/Alert-UI-CIs-1.js.map +1 -0
- package/dist/{AlertModal-BGJdaRRj.js → AlertModal-Th2khjPi.js} +5 -5
- package/dist/AlertModal-Th2khjPi.js.map +1 -0
- package/dist/{AppShell-DRgJxpXW.js → AppShell-WSQabK8r.js} +15 -52
- package/dist/AppShell-WSQabK8r.js.map +1 -0
- package/dist/{AutoSaveTextarea-BeuWuszr.js → AutoSaveTextarea-C5iIr2Ts.js} +2 -2
- package/dist/{AutoSaveTextarea-BeuWuszr.js.map → AutoSaveTextarea-C5iIr2Ts.js.map} +1 -1
- package/dist/{Badge-o5jURtpB.js → Badge-DIjhwPvh.js} +4 -9
- package/dist/Badge-DIjhwPvh.js.map +1 -0
- package/dist/{BrandEditor-CS9P4r2p.js → BrandEditor-BU23Vl8V.js} +7 -7
- package/dist/{BrandEditor-CS9P4r2p.js.map → BrandEditor-BU23Vl8V.js.map} +1 -1
- package/dist/{BrandLogo-CoKBk4MI.js → BrandLogo-CKpVSZb6.js} +4 -4
- package/dist/BrandLogo-CKpVSZb6.js.map +1 -0
- package/dist/{Breadcrumb-D1id7YXd.js → Breadcrumb-p9HtMLCc.js} +8 -14
- package/dist/Breadcrumb-p9HtMLCc.js.map +1 -0
- package/dist/{Button-DsRrU5F1.js → Button-Ca4Q3VJU.js} +31 -13
- package/dist/Button-Ca4Q3VJU.js.map +1 -0
- package/dist/{Calendar-cG5NIJ4O.js → Calendar-DFtmZzbF.js} +99 -99
- package/dist/Calendar-DFtmZzbF.js.map +1 -0
- package/dist/{Card-Dyo7055Q.js → Card-Cr9MBNHu.js} +4 -4
- package/dist/Card-Cr9MBNHu.js.map +1 -0
- package/dist/{Checkbox-Bqr6zXcW.js → Checkbox-8yIIgY7g.js} +4 -4
- package/dist/Checkbox-8yIIgY7g.js.map +1 -0
- package/dist/{Clipboard-C2YBRfD8.js → Clipboard-_xf6hMDD.js} +2 -2
- package/dist/{Clipboard-C2YBRfD8.js.map → Clipboard-_xf6hMDD.js.map} +1 -1
- package/dist/{ClipboardButton-CrljClL1.js → ClipboardButton-DHa1trtI.js} +4 -4
- package/dist/{ClipboardButton-CrljClL1.js.map → ClipboardButton-DHa1trtI.js.map} +1 -1
- package/dist/{CodeEditor-C9AS8Ch0.js → CodeEditor-BSo-oLFG.js} +55 -165
- package/dist/CodeEditor-BSo-oLFG.js.map +1 -0
- package/dist/{ColorInput-Dg87lKcR.js → ColorInput-DSMqrs2-.js} +12 -27
- package/dist/ColorInput-DSMqrs2-.js.map +1 -0
- package/dist/{ColorModeSwitch-CsWLiTBX.js → ColorModeSwitch-D7EuWyJz.js} +7 -17
- package/dist/ColorModeSwitch-D7EuWyJz.js.map +1 -0
- package/dist/Combobox-CxRAYOBt.js +1069 -0
- package/dist/Combobox-CxRAYOBt.js.map +1 -0
- package/dist/{Command-CqxoI_De.js → Command-BU_cVurn.js} +4 -4
- package/dist/{Command-CqxoI_De.js.map → Command-BU_cVurn.js.map} +1 -1
- package/dist/{CopyField-Rx9HPTbJ.js → CopyField-6_c-NdLO.js} +17 -53
- package/dist/{CopyField-Rx9HPTbJ.js.map → CopyField-6_c-NdLO.js.map} +1 -1
- package/dist/{DateInput-DpifECUQ.js → DateInput-DyEErfJf.js} +6 -6
- package/dist/{DateInput-DpifECUQ.js.map → DateInput-DyEErfJf.js.map} +1 -1
- package/dist/{DatePicker-nA8YdE84.js → DatePicker-CtSa9b3V.js} +3 -3
- package/dist/{DatePicker-nA8YdE84.js.map → DatePicker-CtSa9b3V.js.map} +1 -1
- package/dist/{DateRangeInput-9MIw7P6L.js → DateRangeInput-Dg7-VUd9.js} +10 -14
- package/dist/DateRangeInput-Dg7-VUd9.js.map +1 -0
- package/dist/{DateRangePicker-DjSUFjh4.js → DateRangePicker-BoPnh4aH.js} +9 -13
- package/dist/DateRangePicker-BoPnh4aH.js.map +1 -0
- package/dist/DiffView-ppTIzh2h.js.map +1 -1
- package/dist/{DropdownMenu-CASr-jgl.js → DropdownMenu-gRM-A8qU.js} +11 -6
- package/dist/DropdownMenu-gRM-A8qU.js.map +1 -0
- package/dist/{FieldItem-DtPTzNef.js → FieldItem-2wMXQ0Qw.js} +12 -25
- package/dist/FieldItem-2wMXQ0Qw.js.map +1 -0
- package/dist/{FieldItem-vhIJW4pj.d.ts → FieldItem-CPN1xjN5.d.ts} +11 -25
- package/dist/{FileUpload-DYQCTGjU.js → FileUpload-C83tXuE2.js} +11 -16
- package/dist/{FileUpload-DYQCTGjU.js.map → FileUpload-C83tXuE2.js.map} +1 -1
- package/dist/{Form-DAaatlBk.js → Form-95rVLfX8.js} +15 -23
- package/dist/{Form-DAaatlBk.js.map → Form-95rVLfX8.js.map} +1 -1
- package/dist/{FormGroup-Bl8JmnzJ.js → FormGroup-CmNiAtU6.js} +11 -17
- package/dist/FormGroup-CmNiAtU6.js.map +1 -0
- package/dist/{FullScreenModal-CN9nAs72.js → FullScreenModal-CD7mYeTz.js} +15 -29
- package/dist/FullScreenModal-CD7mYeTz.js.map +1 -0
- package/dist/{HoverCard-B9ZMJxjn.js → HoverCard-B8OKu9XZ.js} +2 -2
- package/dist/{HoverCard-B9ZMJxjn.js.map → HoverCard-B8OKu9XZ.js.map} +1 -1
- package/dist/{InputGroup-DcZRlVnN.js → InputGroup-B4QOPxHl.js} +12 -13
- package/dist/InputGroup-B4QOPxHl.js.map +1 -0
- package/dist/{Kbd-D1Azcc4g.js → Kbd-J4n1J6i4.js} +23 -13
- package/dist/Kbd-J4n1J6i4.js.map +1 -0
- package/dist/{MarkedText-DNGEUVWc.js → MarkedText-DlmlJO0u.js} +2 -2
- package/dist/{MarkedText-DNGEUVWc.js.map → MarkedText-DlmlJO0u.js.map} +1 -1
- package/dist/{MermaidDiagram-CujFxVzk.js → MermaidDiagram-BQvz6bhv.js} +16 -34
- package/dist/MermaidDiagram-BQvz6bhv.js.map +1 -0
- package/dist/{Modal-Coj-H02o.js → Modal-Driyqs_N.js} +17 -34
- package/dist/Modal-Driyqs_N.js.map +1 -0
- package/dist/{ModalTitle-C76ke2eo.js → ModalTitle-BxopkIoQ.js} +3 -3
- package/dist/ModalTitle-BxopkIoQ.js.map +1 -0
- package/dist/{MultiActionButtonGroup-CNNoBQbv.js → MultiActionButtonGroup-BPnmzBtw.js} +3 -3
- package/dist/{MultiActionButtonGroup-CNNoBQbv.js.map → MultiActionButtonGroup-BPnmzBtw.js.map} +1 -1
- package/dist/{Navbar-Liy1TPI7.js → Navbar-B_DNpv5s.js} +9 -13
- package/dist/{Navbar-Liy1TPI7.js.map → Navbar-B_DNpv5s.js.map} +1 -1
- package/dist/{OtpInput-CbbymqYs.js → OtpInput-I8B8Vjdl.js} +2 -2
- package/dist/{OtpInput-CbbymqYs.js.map → OtpInput-I8B8Vjdl.js.map} +1 -1
- package/dist/{PageHeader-Q3IpCnQd.js → PageHeader-CgfyXpf1.js} +13 -26
- package/dist/PageHeader-CgfyXpf1.js.map +1 -0
- package/dist/{PageLayout-DSVM-ASz.js → PageLayout-DiAAILuS.js} +12 -20
- package/dist/PageLayout-DiAAILuS.js.map +1 -0
- package/dist/{PageToolbar-BKVJiDAL.js → PageToolbar-DOAtAnfL.js} +12 -42
- package/dist/PageToolbar-DOAtAnfL.js.map +1 -0
- package/dist/{Pagination-C_b7Xhey.js → Pagination-LaSg-5cl.js} +3 -3
- package/dist/{Pagination-C_b7Xhey.js.map → Pagination-LaSg-5cl.js.map} +1 -1
- package/dist/{Popconfirm-5pBzT_HQ.js → Popconfirm-SLz0zodk.js} +3 -3
- package/dist/{Popconfirm-5pBzT_HQ.js.map → Popconfirm-SLz0zodk.js.map} +1 -1
- package/dist/{Popover-BEbQrC_P.js → Popover-CEk915I1.js} +4 -3
- package/dist/Popover-CEk915I1.js.map +1 -0
- package/dist/{RadioGroup-CUBsuP7r.js → RadioGroup-CBPRLRN0.js} +4 -4
- package/dist/{RadioGroup-CUBsuP7r.js.map → RadioGroup-CBPRLRN0.js.map} +1 -1
- package/dist/{Search-DVpJuzr9.js → Search-DmkQo716.js} +3 -3
- package/dist/{Search-DVpJuzr9.js.map → Search-DmkQo716.js.map} +1 -1
- package/dist/{SearchInput-Q85p8Ews.js → SearchInput-CEfQDNl3.js} +8 -13
- package/dist/SearchInput-CEfQDNl3.js.map +1 -0
- package/dist/{SectionNav-mpmSM3OC.js → SectionNav-B_qf0AXi.js} +10 -42
- package/dist/SectionNav-B_qf0AXi.js.map +1 -0
- package/dist/{Select-DV3Hak_l.js → Select-ByRvkZ3D.js} +8 -11
- package/dist/{Select-DV3Hak_l.js.map → Select-ByRvkZ3D.js.map} +1 -1
- package/dist/{Sheet-Chf0kX1E.js → Sheet-C-yXk5Da.js} +5 -9
- package/dist/Sheet-C-yXk5Da.js.map +1 -0
- package/dist/{Sidebar-CTWsHZhF.js → Sidebar-Ds0E6PbR.js} +181 -33
- package/dist/Sidebar-Ds0E6PbR.js.map +1 -0
- package/dist/{Slider-Bv0B6lI0.js → Slider-DWdu9NuM.js} +3 -3
- package/dist/{Slider-Bv0B6lI0.js.map → Slider-DWdu9NuM.js.map} +1 -1
- package/dist/{Stepper-C8sm9ZFM.js → Stepper-BLkLhfnd.js} +6 -9
- package/dist/{Stepper-C8sm9ZFM.js.map → Stepper-BLkLhfnd.js.map} +1 -1
- package/dist/{Switch-B0WdGSjz.js → Switch-DZvNePOm.js} +2 -2
- package/dist/{Switch-B0WdGSjz.js.map → Switch-DZvNePOm.js.map} +1 -1
- package/dist/{Table-CvYuTuNU.js → Table-BaVT5Tkn.js} +6 -11
- package/dist/{Table-CvYuTuNU.js.map → Table-BaVT5Tkn.js.map} +1 -1
- package/dist/{Tabs-eB974xJf.js → Tabs-Dt9oLYHC.js} +3 -3
- package/dist/{Tabs-eB974xJf.js.map → Tabs-Dt9oLYHC.js.map} +1 -1
- package/dist/{TextInput-DiEMxVF6.js → TextInput-CDG2XpBl.js} +12 -15
- package/dist/TextInput-CDG2XpBl.js.map +1 -0
- package/dist/{ThemeProvider-BI6JWBdJ.js → ThemeProvider-DXsxFg1U.js} +13 -31
- package/dist/ThemeProvider-DXsxFg1U.js.map +1 -0
- package/dist/{TimePicker-BGeqc-Ed.js → TimePicker-CDGYrRxi.js} +2 -2
- package/dist/{TimePicker-BGeqc-Ed.js.map → TimePicker-CDGYrRxi.js.map} +1 -1
- package/dist/{Timeline-BG5Xogxh.js → Timeline-B-I6sb0M.js} +2 -2
- package/dist/{Timeline-BG5Xogxh.js.map → Timeline-B-I6sb0M.js.map} +1 -1
- package/dist/{Toast-Dr6Uw7ao.js → Toast-PfQf3vj-.js} +2 -2
- package/dist/{Toast-Dr6Uw7ao.js.map → Toast-PfQf3vj-.js.map} +1 -1
- package/dist/{Workbench-UR2FBC7I.js → Workbench-DmZzpkj7.js} +2 -2
- package/dist/{Workbench-UR2FBC7I.js.map → Workbench-DmZzpkj7.js.map} +1 -1
- package/dist/{ZoomableSvg-U_VH3QRO.js → ZoomableSvg-BzXVfgnI.js} +5 -19
- package/dist/ZoomableSvg-BzXVfgnI.js.map +1 -0
- package/dist/charts.d.ts +21 -52
- package/dist/charts.js +13 -39
- package/dist/charts.js.map +1 -1
- package/dist/{context-D7X470dy.js → context-U293r3v-.js} +5 -9
- package/dist/context-U293r3v-.js.map +1 -0
- package/dist/editors.d.ts +27 -124
- package/dist/editors.js +29 -71
- package/dist/editors.js.map +1 -1
- package/dist/{findLiteralMatches-BGBw8Vbl.js → findLiteralMatches-DgGLzyG0.js} +8 -20
- package/dist/findLiteralMatches-DgGLzyG0.js.map +1 -0
- package/dist/flint.d.ts +3 -6
- package/dist/flint.js +31 -80
- package/dist/flint.js.map +1 -1
- package/dist/{icons-Cek151jC.js → icons-wcA70iQx.js} +105 -2
- package/dist/icons-wcA70iQx.js.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +2 -2
- package/dist/{index-m-kQEWiY.d.ts → index-B7k-09i1.d.ts} +14 -2
- package/dist/index.d.ts +1461 -1809
- package/dist/index.js +70 -67
- package/dist/internal/blocks/AIKit.js +2 -2
- package/dist/internal/blocks/AppShell.js +1 -1
- package/dist/internal/blocks/AuthLayout.js +7 -27
- package/dist/internal/blocks/AuthLayout.js.map +1 -1
- package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
- package/dist/internal/blocks/BrandEditor.js +1 -1
- package/dist/internal/blocks/ChartPanel.js +4 -8
- package/dist/internal/blocks/ChartPanel.js.map +1 -1
- package/dist/internal/blocks/ChipEditor.js +129 -0
- package/dist/internal/blocks/ChipEditor.js.map +1 -0
- package/dist/internal/blocks/ClipboardButton.js +1 -1
- package/dist/internal/blocks/ColorInput.js +1 -1
- package/dist/internal/blocks/ColorModeSwitch.js +1 -1
- package/dist/internal/blocks/Command.js +1 -1
- package/dist/internal/blocks/CopyField.js +1 -1
- package/dist/internal/blocks/DashboardHero.js +4 -7
- package/dist/internal/blocks/DashboardHero.js.map +1 -1
- package/dist/internal/blocks/DateInput.js +1 -1
- package/dist/internal/blocks/DateRangeInput.js +1 -1
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
- package/dist/internal/blocks/EmptyState.js +5 -9
- package/dist/internal/blocks/EmptyState.js.map +1 -1
- package/dist/internal/blocks/ErrorState.js +5 -9
- package/dist/internal/blocks/ErrorState.js.map +1 -1
- package/dist/internal/blocks/ExportMenu.js +6 -10
- package/dist/internal/blocks/ExportMenu.js.map +1 -1
- package/dist/internal/blocks/Form/connectors/ComboboxField.js +40 -0
- package/dist/internal/blocks/Form/connectors/ComboboxField.js.map +1 -0
- package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +5 -22
- package/dist/internal/blocks/Form/connectors/MultiComboboxField.js.map +1 -1
- package/dist/internal/blocks/Form.js +1 -1
- package/dist/internal/blocks/FormGroup.js +1 -1
- package/dist/internal/blocks/GoogleButton.js +1 -1
- package/dist/internal/blocks/MicrosoftButton.js +1 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
- package/dist/internal/blocks/MultiCombobox.js +162 -165
- package/dist/internal/blocks/MultiCombobox.js.map +1 -1
- package/dist/internal/blocks/NumberInput.js +1 -1
- package/dist/internal/blocks/OtpInput.js +1 -1
- package/dist/internal/blocks/PageHeader.js +1 -1
- package/dist/internal/blocks/PageLayout.js +1 -1
- package/dist/internal/blocks/PageToolbar.js +1 -1
- package/dist/internal/blocks/PasswordInput.js +4 -4
- package/dist/internal/blocks/PasswordInput.js.map +1 -1
- package/dist/internal/blocks/SearchInput.js +1 -1
- package/dist/internal/blocks/SearchInputWithNavigation.js +4 -4
- package/dist/internal/blocks/SectionNav.js +1 -1
- package/dist/internal/blocks/SplitButton.js +3 -3
- package/dist/internal/blocks/StatCard.js +4 -8
- package/dist/internal/blocks/StatCard.js.map +1 -1
- package/dist/internal/blocks/TextInput.js +1 -1
- package/dist/internal/blocks/Textarea.js +2 -2
- package/dist/internal/blocks/TimeInput.js +5 -5
- package/dist/internal/blocks/TimeInput.js.map +1 -1
- package/dist/internal/components/Alert.js +1 -1
- package/dist/internal/components/AlertModal.js +1 -1
- package/dist/internal/components/Avatar.js +1 -1
- package/dist/internal/components/Badge.js +1 -1
- package/dist/internal/components/BrandLogo.js +1 -1
- package/dist/internal/components/Breadcrumb.js +1 -1
- package/dist/internal/components/Button.js +1 -1
- package/dist/internal/components/ButtonGroup.js.map +1 -1
- package/dist/internal/components/Calendar.js +1 -1
- package/dist/internal/components/Card.js +1 -1
- package/dist/internal/components/Checkbox.js +1 -1
- package/dist/internal/components/Clipboard.js +1 -1
- package/dist/internal/components/CollapsiblePanel.js +2 -2
- package/dist/internal/components/Combobox.js +2 -2
- package/dist/internal/components/DatePicker.js +1 -1
- package/dist/internal/components/DateRangePicker.js +1 -1
- package/dist/internal/components/DropdownMenu.js +1 -1
- package/dist/internal/components/FileUpload.js +1 -1
- package/dist/internal/components/FullScreenModal.js +1 -1
- package/dist/internal/components/HoverCard.js +1 -1
- package/dist/internal/components/InputGroup.js +1 -1
- package/dist/internal/components/Kbd.js +1 -1
- package/dist/internal/components/MarkedText.js +1 -1
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +1 -1
- package/dist/internal/components/Modal.js +1 -1
- package/dist/internal/components/Navbar.js +1 -1
- package/dist/internal/components/Pagination.js +1 -1
- package/dist/internal/components/PanelWithDetails.js +1 -1
- package/dist/internal/components/Popconfirm.js +1 -1
- package/dist/internal/components/Popover.js +1 -1
- package/dist/internal/components/RadioGroup.js +1 -1
- package/dist/internal/components/Search.js +1 -1
- package/dist/internal/components/Select.js +1 -1
- package/dist/internal/components/Separator.js.map +1 -1
- package/dist/internal/components/Sheet.js +1 -1
- package/dist/internal/components/Sidebar.js +1 -1
- package/dist/internal/components/Skeleton/Skeleton.js +5 -9
- package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/internal/components/Slider.js +1 -1
- package/dist/internal/components/SpotlightBackdrop.js +3 -8
- package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
- package/dist/internal/components/StatusDot.js +60 -0
- package/dist/internal/components/StatusDot.js.map +1 -0
- package/dist/internal/components/Stepper.js +1 -1
- package/dist/internal/components/Switch.js +1 -1
- package/dist/internal/components/Table.js +1 -1
- package/dist/internal/components/Tabs.js +1 -1
- package/dist/internal/components/ThemeProvider.js +3 -3
- package/dist/internal/components/TimePicker.js +1 -1
- package/dist/internal/components/Timeline.js +1 -1
- package/dist/internal/components/Toast.js +2 -2
- package/dist/internal/components/Tooltip.js +2 -2
- package/dist/internal/components/Truncated.js +4 -8
- package/dist/internal/components/Truncated.js.map +1 -1
- package/dist/internal/components/Workbench.js +1 -1
- package/dist/internal/components/ZoomableSvg.js +1 -1
- package/dist/internal/hooks/useScrollbarPosition.js +1 -1
- package/dist/internal/hooks/useStableCallback.js +4 -13
- package/dist/internal/hooks/useStableCallback.js.map +1 -1
- package/dist/internal/utils/mergeRefs.js +27 -9
- package/dist/internal/utils/mergeRefs.js.map +1 -1
- package/dist/internal/utils.js +3 -3
- package/dist/markdown-editor.d.ts +15 -37
- package/dist/markdown-editor.js +17 -23
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.d.ts +4 -6
- package/dist/mermaid.js +1 -1
- package/dist/rjsf.d.ts +9 -19
- package/dist/rjsf.js +44 -84
- package/dist/rjsf.js.map +1 -1
- package/dist/{styles-BAFscjSV.js → styles-gzcjOyKv.js} +6 -6
- package/dist/styles-gzcjOyKv.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/svgTransforms-Dw2hRA-i.js +51 -0
- package/dist/svgTransforms-Dw2hRA-i.js.map +1 -0
- package/dist/testing.d.ts +3 -10
- package/dist/testing.js +5 -12
- package/dist/testing.js.map +1 -1
- package/dist/themeTokens-7DEab0kp.js +31 -0
- package/dist/themeTokens-7DEab0kp.js.map +1 -0
- package/dist/{toast-DIC0iNRf.js → toast-CyXEdaCZ.js} +3 -3
- package/dist/toast-CyXEdaCZ.js.map +1 -0
- package/dist/{themeScopeContext-D7fSyb06.js → useColorSchemeState-Cw4MCXUs.js} +14 -14
- package/dist/useColorSchemeState-Cw4MCXUs.js.map +1 -0
- package/dist/{useControllableState-M6494mCT.js → useControllableState-CUYXMsfz.js} +3 -7
- package/dist/useControllableState-CUYXMsfz.js.map +1 -0
- package/dist/useElement-D-RjrGa4.js +21 -0
- package/dist/useElement-D-RjrGa4.js.map +1 -0
- package/dist/useThemeAttributes-B199Regy.js +67 -0
- package/dist/useThemeAttributes-B199Regy.js.map +1 -0
- package/dist/{utils-DnkrFYqY.js → utils-Bd28bWgm.js} +53 -20
- package/dist/utils-Bd28bWgm.js.map +1 -0
- package/dist/vega.d.ts +8 -30
- package/dist/vega.js +5 -13
- package/dist/vega.js.map +1 -1
- package/dist/{vegaTheme-CSvFEMBl.js → vegaTheme-VQMWTlBw.js} +7 -21
- package/dist/vegaTheme-VQMWTlBw.js.map +1 -0
- package/package.json +11 -9
- package/src/styles.css +120 -14
- package/src/theme.css +126 -6
- package/dist/AIKit-CQxVwyAk.js.map +0 -1
- package/dist/Alert-C4Y9IwMI.js.map +0 -1
- package/dist/AlertModal-BGJdaRRj.js.map +0 -1
- package/dist/AppShell-DRgJxpXW.js.map +0 -1
- package/dist/Badge-o5jURtpB.js.map +0 -1
- package/dist/BrandLogo-CoKBk4MI.js.map +0 -1
- package/dist/Breadcrumb-D1id7YXd.js.map +0 -1
- package/dist/Button-DsRrU5F1.js.map +0 -1
- package/dist/Calendar-cG5NIJ4O.js.map +0 -1
- package/dist/Card-Dyo7055Q.js.map +0 -1
- package/dist/Checkbox-Bqr6zXcW.js.map +0 -1
- package/dist/CodeEditor-C9AS8Ch0.js.map +0 -1
- package/dist/ColorInput-Dg87lKcR.js.map +0 -1
- package/dist/ColorModeSwitch-CsWLiTBX.js.map +0 -1
- package/dist/Combobox-BfanUAqY.js +0 -619
- package/dist/Combobox-BfanUAqY.js.map +0 -1
- package/dist/DateRangeInput-9MIw7P6L.js.map +0 -1
- package/dist/DateRangePicker-DjSUFjh4.js.map +0 -1
- package/dist/DropdownMenu-CASr-jgl.js.map +0 -1
- package/dist/FieldItem-DtPTzNef.js.map +0 -1
- package/dist/FormGroup-Bl8JmnzJ.js.map +0 -1
- package/dist/FullScreenModal-CN9nAs72.js.map +0 -1
- package/dist/InputGroup-DcZRlVnN.js.map +0 -1
- package/dist/Kbd-D1Azcc4g.js.map +0 -1
- package/dist/MermaidDiagram-CujFxVzk.js.map +0 -1
- package/dist/Modal-Coj-H02o.js.map +0 -1
- package/dist/ModalTitle-C76ke2eo.js.map +0 -1
- package/dist/PageHeader-Q3IpCnQd.js.map +0 -1
- package/dist/PageLayout-DSVM-ASz.js.map +0 -1
- package/dist/PageToolbar-BKVJiDAL.js.map +0 -1
- package/dist/Popover-BEbQrC_P.js.map +0 -1
- package/dist/SearchInput-Q85p8Ews.js.map +0 -1
- package/dist/SectionNav-mpmSM3OC.js.map +0 -1
- package/dist/Sheet-Chf0kX1E.js.map +0 -1
- package/dist/Sidebar-CTWsHZhF.js.map +0 -1
- package/dist/TextInput-DiEMxVF6.js.map +0 -1
- package/dist/ThemeProvider-BI6JWBdJ.js.map +0 -1
- package/dist/ZoomableSvg-U_VH3QRO.js.map +0 -1
- package/dist/context-D7X470dy.js.map +0 -1
- package/dist/findLiteralMatches-BGBw8Vbl.js.map +0 -1
- package/dist/icons-Cek151jC.js.map +0 -1
- package/dist/styles-BAFscjSV.js.map +0 -1
- package/dist/svgTransforms-CJAYPk7o.js +0 -81
- package/dist/svgTransforms-CJAYPk7o.js.map +0 -1
- package/dist/themeScopeContext-D7fSyb06.js.map +0 -1
- package/dist/themeTokens-qP1-55O7.js +0 -119
- package/dist/themeTokens-qP1-55O7.js.map +0 -1
- package/dist/toast-DIC0iNRf.js.map +0 -1
- package/dist/useControllableState-M6494mCT.js.map +0 -1
- package/dist/useElement-DkF6esWL.js +0 -15
- package/dist/useElement-DkF6esWL.js.map +0 -1
- package/dist/utils-DnkrFYqY.js.map +0 -1
- package/dist/vegaTheme-CSvFEMBl.js.map +0 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
-
import { Tooltip, TooltipProvider } from "./utils-
|
|
2
|
+
import { Tooltip, TooltipProvider } from "./utils-Bd28bWgm.js";
|
|
3
3
|
import { mergeRefs } from "./internal/utils/mergeRefs.js";
|
|
4
|
-
import { ChevronDown, Search } from "./icons-
|
|
5
|
-
import { DropdownMenu } from "./DropdownMenu-
|
|
4
|
+
import { ChevronDown, Search } from "./icons-wcA70iQx.js";
|
|
5
|
+
import { DropdownMenu } from "./DropdownMenu-gRM-A8qU.js";
|
|
6
6
|
import { ScrollArea } from "./internal/components/ScrollArea.js";
|
|
7
7
|
import { Separator } from "./internal/components/Separator.js";
|
|
8
|
-
import {
|
|
8
|
+
import { Sheet } from "./Sheet-C-yXk5Da.js";
|
|
9
|
+
import { HoverCard } from "./HoverCard-B8OKu9XZ.js";
|
|
10
|
+
import { useElement } from "./useElement-D-RjrGa4.js";
|
|
9
11
|
import { Collapsible } from "./Collapsible-BQXWEOBC.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
+
import { useThemeScopeContainer } from "./ThemeProvider-DXsxFg1U.js";
|
|
13
|
+
import { BrandLogo } from "./BrandLogo-CKpVSZb6.js";
|
|
12
14
|
import { useScrollbarPosition } from "./internal/hooks/useScrollbarPosition.js";
|
|
13
15
|
import { Root, Slot, Slottable } from "@radix-ui/react-slot";
|
|
14
|
-
import { createContext, use, useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
16
|
+
import { createContext, use, useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
15
17
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
18
|
//#region src/components/Sidebar/SidebarProvider/useTransitionPresence.ts
|
|
17
19
|
const FALLBACK_TIMEOUT_MS = 500;
|
|
@@ -79,20 +81,47 @@ const SidebarContent = ({ ref, className, children, contentRef }) => {
|
|
|
79
81
|
});
|
|
80
82
|
};
|
|
81
83
|
//#endregion
|
|
84
|
+
//#region src/hooks/useMediaQuery.ts
|
|
85
|
+
/**
|
|
86
|
+
* Whether a CSS media query currently matches, re-rendering when it flips.
|
|
87
|
+
*
|
|
88
|
+
* - `false` wherever `matchMedia` is absent (SSR, a stubbed test environment), so the
|
|
89
|
+
* caller renders its desktop branch rather than crashing.
|
|
90
|
+
* - The subscription is the query's own `change` event — no resize listener, no polling.
|
|
91
|
+
*/
|
|
92
|
+
const useMediaQuery = (query) => {
|
|
93
|
+
const subscribe = useCallback((onStoreChange) => {
|
|
94
|
+
const list = globalThis.matchMedia?.(query);
|
|
95
|
+
list?.addEventListener?.("change", onStoreChange);
|
|
96
|
+
return () => list?.removeEventListener?.("change", onStoreChange);
|
|
97
|
+
}, [query]);
|
|
98
|
+
const getSnapshot = useCallback(() => globalThis.matchMedia?.(query).matches ?? false, [query]);
|
|
99
|
+
return useSyncExternalStore(subscribe, getSnapshot, () => false);
|
|
100
|
+
};
|
|
101
|
+
//#endregion
|
|
82
102
|
//#region src/components/Sidebar/utils.ts
|
|
83
103
|
const SidebarWidthInPx = {
|
|
84
104
|
MIN_DEFAULT: 256,
|
|
85
105
|
COLLAPSED_ICON: 52,
|
|
86
106
|
FLOATING_VARIANT_PADDING: 8
|
|
87
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* The query a rail watches to know whether it is a sheet.
|
|
110
|
+
*
|
|
111
|
+
* - `max-width`, so it is exclusive of the breakpoint itself — the width passed in is the
|
|
112
|
+
* first one at which the rail is a column again.
|
|
113
|
+
* - Per side, because the width at which a rail stops fitting is the rail's own: a 320px
|
|
114
|
+
* panel beside a capped reading column runs out of room long before a navigation rail does.
|
|
115
|
+
*/
|
|
116
|
+
const sidebarMobileMediaQuery = (breakpointPx) => `(max-width: ${breakpointPx - .02}px)`;
|
|
88
117
|
const floatingSideCount = {
|
|
89
118
|
"sided-floating": 1,
|
|
90
119
|
floating: 2,
|
|
91
120
|
inset: 0,
|
|
92
121
|
none: 0
|
|
93
122
|
};
|
|
94
|
-
const calcEffectiveWidths = ({ variant, width: customWidth, collapsible, state, mode }) => {
|
|
95
|
-
if (variant === "none") return {
|
|
123
|
+
const calcEffectiveWidths = ({ variant, width: customWidth, collapsible, state, mode, isMobile = false }) => {
|
|
124
|
+
if (variant === "none" || isMobile) return {
|
|
96
125
|
sidebar: 0,
|
|
97
126
|
gap: 0,
|
|
98
127
|
fill: 0
|
|
@@ -125,11 +154,7 @@ const calcEffectiveWidths = ({ variant, width: customWidth, collapsible, state,
|
|
|
125
154
|
//#endregion
|
|
126
155
|
//#region src/components/Sidebar/SidebarProvider/context.ts
|
|
127
156
|
const SidebarContext = createContext(null);
|
|
128
|
-
/**
|
|
129
|
-
* The sidebar if there is one, `null` otherwise — for code that ENHANCES a page when the app shell is
|
|
130
|
-
* around it (borrowing width, collapsing a panel) and must still render without one, in a test, a
|
|
131
|
-
* story, or an embedded surface. Anything that genuinely requires a sidebar keeps `useSidebar`.
|
|
132
|
-
*/
|
|
157
|
+
/** `useSidebar` that returns `null` outside a `SidebarProvider` instead of throwing. */
|
|
133
158
|
const useOptionalSidebar = (side = "left") => use(SidebarContext)?.[side] ?? null;
|
|
134
159
|
const useSidebar = (side = "left") => {
|
|
135
160
|
const context = use(SidebarContext);
|
|
@@ -140,14 +165,16 @@ const useSidebar = (side = "left") => {
|
|
|
140
165
|
//#region src/components/Sidebar/SidebarProvider/useHoverTracking.ts
|
|
141
166
|
const PORTAL_OPEN_SELECTORS_STRING = ["[aria-haspopup=\"menu\"][aria-expanded=true]", "[aria-haspopup=\"dialog\"][aria-expanded=true]"].join(",");
|
|
142
167
|
const useHoverTracking = (sidebarElement) => {
|
|
143
|
-
const [
|
|
168
|
+
const [hoveredElement, setHoveredElement] = useState(null);
|
|
144
169
|
const isLockedRef = useRef(false);
|
|
170
|
+
if (hoveredElement !== null && hoveredElement !== sidebarElement) setHoveredElement(null);
|
|
171
|
+
const isHovered = hoveredElement !== null;
|
|
145
172
|
useEffect(() => {
|
|
146
173
|
if (!sidebarElement) return;
|
|
147
|
-
const handleMouseEnter = () =>
|
|
174
|
+
const handleMouseEnter = () => setHoveredElement(sidebarElement);
|
|
148
175
|
const handleMouseLeave = () => {
|
|
149
176
|
if (isLockedRef.current) return;
|
|
150
|
-
|
|
177
|
+
setHoveredElement(null);
|
|
151
178
|
};
|
|
152
179
|
sidebarElement.addEventListener("mouseenter", handleMouseEnter);
|
|
153
180
|
sidebarElement.addEventListener("mouseleave", handleMouseLeave);
|
|
@@ -164,7 +191,7 @@ const useHoverTracking = (sidebarElement) => {
|
|
|
164
191
|
isLockedRef.current = hasOpenPortal;
|
|
165
192
|
if (hasOpenPortal) return;
|
|
166
193
|
animationFrameId = requestAnimationFrame(() => {
|
|
167
|
-
|
|
194
|
+
setHoveredElement(sidebarElement.matches(":hover") ? sidebarElement : null);
|
|
168
195
|
});
|
|
169
196
|
});
|
|
170
197
|
isLockedRef.current = sidebarElement.querySelector(PORTAL_OPEN_SELECTORS_STRING) !== null;
|
|
@@ -221,14 +248,25 @@ const useSidebarState = ({ defaultMode, mode: modeProp, onModeChange }) => {
|
|
|
221
248
|
const DEFAULT_SIDEBAR_VARIANT = "none";
|
|
222
249
|
const DEFAULT_SIDEBAR_MODE = "expanded";
|
|
223
250
|
const DEFAULT_SIDEBAR_COLLAPSIBLE = "off-canvas";
|
|
224
|
-
|
|
251
|
+
/** A sheet's `setMode`: no-op, so `Sidebar.SearchInput` focus keeps a desktop `collapsed`. */
|
|
252
|
+
const ignoreModeChange = () => {};
|
|
253
|
+
/** The side's own breakpoint, or the default for `true`. */
|
|
254
|
+
const mobileBreakpointOf = (mobileSheet) => typeof mobileSheet === "number" ? mobileSheet : 768;
|
|
255
|
+
const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, leftMode, onLeftModeChange, defaultRightMode = DEFAULT_SIDEBAR_MODE, rightMode, onRightModeChange, leftMobileSheet = false, rightMobileSheet = false, leftCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE, leftVariant = DEFAULT_SIDEBAR_VARIANT, leftWidth, rightCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE, rightVariant = DEFAULT_SIDEBAR_VARIANT, rightWidth, onLeftWidthChange, onRightWidthChange, defaultFilledSide = null }) => {
|
|
256
|
+
const isLeftNarrow = useMediaQuery(sidebarMobileMediaQuery(mobileBreakpointOf(leftMobileSheet)));
|
|
257
|
+
const isRightNarrow = useMediaQuery(sidebarMobileMediaQuery(mobileBreakpointOf(rightMobileSheet)));
|
|
258
|
+
const isLeftMobile = isLeftNarrow && leftMobileSheet !== false && leftVariant !== "none";
|
|
259
|
+
const isRightMobile = isRightNarrow && rightMobileSheet !== false && rightVariant !== "none";
|
|
225
260
|
const [filledSide, setFilledSide] = useState(defaultFilledSide);
|
|
261
|
+
const [openMobileSide, setOpenMobileSide] = useState(null);
|
|
226
262
|
const [isLeftDragging, setIsLeftDragging] = useState(false);
|
|
227
263
|
const [isRightDragging, setIsRightDragging] = useState(false);
|
|
228
264
|
const [leftDragWidth, setLeftDragWidth] = useState(null);
|
|
229
265
|
const [rightDragWidth, setRightDragWidth] = useState(null);
|
|
230
266
|
if (leftDragWidth !== null && leftWidth === leftDragWidth) setLeftDragWidth(null);
|
|
231
267
|
if (rightDragWidth !== null && rightWidth === rightDragWidth) setRightDragWidth(null);
|
|
268
|
+
if (openMobileSide === "left" && !isLeftMobile) setOpenMobileSide(null);
|
|
269
|
+
if (openMobileSide === "right" && !isRightMobile) setOpenMobileSide(null);
|
|
232
270
|
const leftState = useSidebarState({
|
|
233
271
|
defaultMode: defaultLeftMode,
|
|
234
272
|
mode: leftMode,
|
|
@@ -239,6 +277,10 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
239
277
|
mode: rightMode,
|
|
240
278
|
onModeChange: onRightModeChange
|
|
241
279
|
});
|
|
280
|
+
const toggleLeftMobile = useCallback(() => setOpenMobileSide((prev) => prev === "left" ? null : "left"), []);
|
|
281
|
+
const toggleRightMobile = useCallback(() => setOpenMobileSide((prev) => prev === "right" ? null : "right"), []);
|
|
282
|
+
const setLeftMobileOpen = useCallback((open) => setOpenMobileSide((prev) => open ? "left" : prev === "left" ? null : prev), []);
|
|
283
|
+
const setRightMobileOpen = useCallback((open) => setOpenMobileSide((prev) => open ? "right" : prev === "right" ? null : prev), []);
|
|
242
284
|
const toggleLeftFill = useCallback(() => setFilledSide((prev) => prev === "left" ? null : "left"), []);
|
|
243
285
|
const toggleRightFill = useCallback(() => setFilledSide((prev) => prev === "right" ? null : "right"), []);
|
|
244
286
|
const setLeftFill = useCallback((fill) => setFilledSide((prev) => fill ? "left" : prev === "left" ? null : prev), []);
|
|
@@ -246,6 +288,15 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
246
288
|
const value = useMemo(() => ({
|
|
247
289
|
left: {
|
|
248
290
|
...leftState,
|
|
291
|
+
...isLeftMobile ? {
|
|
292
|
+
mode: "expanded",
|
|
293
|
+
state: "expanded",
|
|
294
|
+
toggle: toggleLeftMobile,
|
|
295
|
+
setMode: ignoreModeChange
|
|
296
|
+
} : null,
|
|
297
|
+
isMobile: isLeftMobile,
|
|
298
|
+
isMobileOpen: openMobileSide === "left",
|
|
299
|
+
setMobileOpen: setLeftMobileOpen,
|
|
249
300
|
isFill: filledSide === "left",
|
|
250
301
|
toggleFill: toggleLeftFill,
|
|
251
302
|
setFill: setLeftFill,
|
|
@@ -254,7 +305,8 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
254
305
|
width: leftDragWidth ?? leftWidth,
|
|
255
306
|
collapsible: leftCollapsible,
|
|
256
307
|
state: leftState.state,
|
|
257
|
-
mode: leftState.mode
|
|
308
|
+
mode: leftState.mode,
|
|
309
|
+
isMobile: isLeftMobile
|
|
258
310
|
}),
|
|
259
311
|
collapsible: leftCollapsible,
|
|
260
312
|
variant: leftVariant,
|
|
@@ -266,6 +318,15 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
266
318
|
},
|
|
267
319
|
right: {
|
|
268
320
|
...rightState,
|
|
321
|
+
...isRightMobile ? {
|
|
322
|
+
mode: "expanded",
|
|
323
|
+
state: "expanded",
|
|
324
|
+
toggle: toggleRightMobile,
|
|
325
|
+
setMode: ignoreModeChange
|
|
326
|
+
} : null,
|
|
327
|
+
isMobile: isRightMobile,
|
|
328
|
+
isMobileOpen: openMobileSide === "right",
|
|
329
|
+
setMobileOpen: setRightMobileOpen,
|
|
269
330
|
isFill: filledSide === "right",
|
|
270
331
|
toggleFill: toggleRightFill,
|
|
271
332
|
setFill: setRightFill,
|
|
@@ -274,7 +335,8 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
274
335
|
width: rightDragWidth ?? rightWidth,
|
|
275
336
|
collapsible: rightCollapsible,
|
|
276
337
|
state: rightState.state,
|
|
277
|
-
mode: rightState.mode
|
|
338
|
+
mode: rightState.mode,
|
|
339
|
+
isMobile: isRightMobile
|
|
278
340
|
}),
|
|
279
341
|
collapsible: rightCollapsible,
|
|
280
342
|
variant: rightVariant,
|
|
@@ -285,6 +347,13 @@ const SidebarProvider = ({ children, defaultLeftMode = DEFAULT_SIDEBAR_MODE, lef
|
|
|
285
347
|
setIsDragging: setIsRightDragging
|
|
286
348
|
}
|
|
287
349
|
}), [
|
|
350
|
+
isLeftMobile,
|
|
351
|
+
isRightMobile,
|
|
352
|
+
openMobileSide,
|
|
353
|
+
toggleLeftMobile,
|
|
354
|
+
setLeftMobileOpen,
|
|
355
|
+
toggleRightMobile,
|
|
356
|
+
setRightMobileOpen,
|
|
288
357
|
leftState,
|
|
289
358
|
filledSide,
|
|
290
359
|
toggleLeftFill,
|
|
@@ -407,12 +476,32 @@ const SidebarMenuIcon = ({ ref, className, children, ...rest }) => /* @__PURE__
|
|
|
407
476
|
children
|
|
408
477
|
});
|
|
409
478
|
//#endregion
|
|
479
|
+
//#region src/components/Sidebar/SidebarMenu/useDestinationDismiss.ts
|
|
480
|
+
/**
|
|
481
|
+
* A menu item's click handler: the caller's own, then (on a phone) dismissing the sheet.
|
|
482
|
+
*
|
|
483
|
+
* - Not a destination, so no dismissal:
|
|
484
|
+
* - A popup opener (`aria-haspopup` / `aria-expanded`) — closing would take the popup too.
|
|
485
|
+
* - `data-sidebar-trigger` — its `toggle` runs after this and would reopen the sheet.
|
|
486
|
+
*/
|
|
487
|
+
const useDestinationDismiss = (props, onClick) => {
|
|
488
|
+
const { side } = useSidebarInstance();
|
|
489
|
+
const { isMobile, setMobileOpen } = useSidebar(side);
|
|
490
|
+
const isDestination = props["aria-haspopup"] === void 0 && props["aria-expanded"] === void 0 && props["data-sidebar-trigger"] === void 0;
|
|
491
|
+
return (event) => {
|
|
492
|
+
onClick?.(event);
|
|
493
|
+
if (isMobile && isDestination) setMobileOpen(false);
|
|
494
|
+
};
|
|
495
|
+
};
|
|
496
|
+
//#endregion
|
|
410
497
|
//#region src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx
|
|
411
|
-
const SidebarMenuButton = ({ ref, "aria-selected": selected, className, children, asChild = false, icon, tooltip, ...props }) => {
|
|
498
|
+
const SidebarMenuButton = ({ ref, "aria-selected": selected, className, children, asChild = false, icon, tooltip, onClick, ...props }) => {
|
|
412
499
|
const Component = asChild ? Root : "button";
|
|
413
500
|
const { state, mode, side } = useSidebarInstance();
|
|
501
|
+
const handleClick = useDestinationDismiss(props, onClick);
|
|
414
502
|
const button = /* @__PURE__ */ jsxs(Component, {
|
|
415
503
|
...props,
|
|
504
|
+
onClick: handleClick,
|
|
416
505
|
ref,
|
|
417
506
|
"data-slot": "sidebar-menu-button",
|
|
418
507
|
...asChild ? {} : { type: "button" },
|
|
@@ -605,8 +694,9 @@ const SidebarMenuSub = ({ children, icon, isActive = false, label, defaultOpen =
|
|
|
605
694
|
};
|
|
606
695
|
//#endregion
|
|
607
696
|
//#region src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx
|
|
608
|
-
const SidebarMenuSubItem = ({ ref, className, asChild = false, children, disabled, "aria-current": ariaCurrent, ...props }) => {
|
|
697
|
+
const SidebarMenuSubItem = ({ ref, className, asChild = false, children, disabled, onClick, "aria-current": ariaCurrent, ...props }) => {
|
|
609
698
|
const { mode } = useSidebarInstance();
|
|
699
|
+
const handleClick = useDestinationDismiss(props, onClick);
|
|
610
700
|
if (mode === "collapsed" || mode === "expand-on-hover") return /* @__PURE__ */ jsx(DropdownMenu.Item, {
|
|
611
701
|
"aria-current": ariaCurrent,
|
|
612
702
|
asChild,
|
|
@@ -618,6 +708,7 @@ const SidebarMenuSubItem = ({ ref, className, asChild = false, children, disable
|
|
|
618
708
|
className: "tw:group/sidebar-menu-sub-item tw:relative",
|
|
619
709
|
children: /* @__PURE__ */ jsx(asChild ? Root : "button", {
|
|
620
710
|
...props,
|
|
711
|
+
onClick: handleClick,
|
|
621
712
|
ref,
|
|
622
713
|
"aria-current": ariaCurrent,
|
|
623
714
|
"data-slot": "sidebar-menu-sub-button",
|
|
@@ -725,22 +816,26 @@ const SidebarSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx(Separa
|
|
|
725
816
|
//#endregion
|
|
726
817
|
//#region src/components/Sidebar/SidebarTrigger.tsx
|
|
727
818
|
const SidebarTrigger = ({ side = "left", onClick, hideWhenCollapsed = false, className, ...rest }) => {
|
|
728
|
-
const { toggle } = useSidebar(side);
|
|
819
|
+
const { toggle, state, isMobile, isMobileOpen } = useSidebar(side);
|
|
729
820
|
const handleOnClick = (event) => {
|
|
730
821
|
toggle();
|
|
731
822
|
onClick?.(event);
|
|
732
823
|
};
|
|
733
824
|
return /* @__PURE__ */ jsx(Slot, {
|
|
734
825
|
...rest,
|
|
826
|
+
"aria-expanded": isMobile ? isMobileOpen : state === "expanded",
|
|
827
|
+
...isMobile ? { "aria-haspopup": "dialog" } : null,
|
|
828
|
+
"data-sidebar-trigger": "",
|
|
735
829
|
onClick: handleOnClick,
|
|
736
830
|
className: cn({ "tw:group-data-[state=collapsed]/sidebar:hidden": hideWhenCollapsed }, className)
|
|
737
831
|
});
|
|
738
832
|
};
|
|
739
833
|
//#endregion
|
|
740
834
|
//#region src/components/Sidebar/Sidebar.tsx
|
|
741
|
-
const Sidebar = ({ children, className, id, side = "left", style, container = false, keepMounted, mountAfterEnter, resizable = false, ...rest }) => {
|
|
835
|
+
const Sidebar = ({ children, className, id, side = "left", style, container = false, keepMounted, mountAfterEnter, resizable = false, mobileTitle, ...rest }) => {
|
|
742
836
|
const oppositeSide = side === "left" ? "right" : "left";
|
|
743
|
-
const { setSidebarElement, state, mode, isFill, widths, collapsible, variant, isDragging } = useSidebar(side);
|
|
837
|
+
const { setSidebarElement, state, mode, isFill, widths, collapsible, variant, isDragging, isMobile, isMobileOpen, setMobileOpen } = useSidebar(side);
|
|
838
|
+
const themeScopeContainer = useThemeScopeContainer();
|
|
744
839
|
const { isMounted, completeUnmount } = useTransitionPresence({
|
|
745
840
|
mounted: collapsible !== "off-canvas" || mode !== "collapsed",
|
|
746
841
|
keepMounted,
|
|
@@ -756,6 +851,23 @@ const Sidebar = ({ children, className, id, side = "left", style, container = fa
|
|
|
756
851
|
mode,
|
|
757
852
|
side
|
|
758
853
|
]);
|
|
854
|
+
const focusOriginRef = useRef(null);
|
|
855
|
+
useEffect(() => {
|
|
856
|
+
if (!isMobile || isMobileOpen) return;
|
|
857
|
+
const remember = (event) => {
|
|
858
|
+
if (event.target instanceof HTMLElement) focusOriginRef.current = event.target;
|
|
859
|
+
};
|
|
860
|
+
document.addEventListener("focusin", remember);
|
|
861
|
+
return () => document.removeEventListener("focusin", remember);
|
|
862
|
+
}, [isMobile, isMobileOpen]);
|
|
863
|
+
const wasSheetUpRef = useRef(false);
|
|
864
|
+
useEffect(() => {
|
|
865
|
+
const wasSheetUp = wasSheetUpRef.current;
|
|
866
|
+
wasSheetUpRef.current = isMobile && isMobileOpen;
|
|
867
|
+
if (!wasSheetUp || isMobile) return;
|
|
868
|
+
const origin = focusOriginRef.current;
|
|
869
|
+
if (origin?.isConnected) origin.focus();
|
|
870
|
+
}, [isMobile, isMobileOpen]);
|
|
759
871
|
const handleTransitionEnd = (event) => {
|
|
760
872
|
if (event.target !== event.currentTarget) return;
|
|
761
873
|
completeUnmount();
|
|
@@ -768,18 +880,54 @@ const Sidebar = ({ children, className, id, side = "left", style, container = fa
|
|
|
768
880
|
"--opposite-sidebar-width": `${oppositeWidths.fill}px`
|
|
769
881
|
};
|
|
770
882
|
if (variant === "none") return null;
|
|
883
|
+
const railAttributes = {
|
|
884
|
+
"data-state": state,
|
|
885
|
+
"data-side": side,
|
|
886
|
+
"data-mode": mode,
|
|
887
|
+
"data-collapsible": collapsible,
|
|
888
|
+
"data-variant": variant,
|
|
889
|
+
"data-fill": isFill
|
|
890
|
+
};
|
|
891
|
+
if (isMobile) return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(SidebarInstanceContext, {
|
|
892
|
+
value: sidebarInstanceContextValue,
|
|
893
|
+
children: /* @__PURE__ */ jsx(Sheet, {
|
|
894
|
+
open: isMobileOpen,
|
|
895
|
+
onOpenChange: setMobileOpen,
|
|
896
|
+
children: /* @__PURE__ */ jsxs(Sheet.Content, {
|
|
897
|
+
side,
|
|
898
|
+
container: themeScopeContainer ?? void 0,
|
|
899
|
+
className: "tw:w-[min(20rem,85vw)] tw:bg-sidebar tw:text-sidebar-foreground tw:p-0",
|
|
900
|
+
onCloseAutoFocus: (event) => {
|
|
901
|
+
const origin = focusOriginRef.current;
|
|
902
|
+
if (!origin?.isConnected) return;
|
|
903
|
+
event.preventDefault();
|
|
904
|
+
origin.focus();
|
|
905
|
+
},
|
|
906
|
+
children: [/* @__PURE__ */ jsx(Sheet.Title, {
|
|
907
|
+
visuallyHidden: true,
|
|
908
|
+
children: mobileTitle ?? (side === "left" ? "Navigation" : "Side panel")
|
|
909
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
910
|
+
...rest,
|
|
911
|
+
...railAttributes,
|
|
912
|
+
id,
|
|
913
|
+
style,
|
|
914
|
+
className: cn("tw:flex tw:min-h-0 tw:flex-1 tw:flex-col", { "tw:group/sidebar tw:peer/sidebar": !container }, className),
|
|
915
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
916
|
+
"data-slot": "sidebar",
|
|
917
|
+
className: cn("tw:bg-sidebar", "tw:relative", "tw:flex", "tw:flex-col", "tw:size-full", "tw:overflow-hidden", "tw:border-sidebar-border", "tw:group-[]/sidebar:pt-2"),
|
|
918
|
+
children
|
|
919
|
+
})
|
|
920
|
+
})]
|
|
921
|
+
})
|
|
922
|
+
})
|
|
923
|
+
}) });
|
|
771
924
|
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(SidebarInstanceContext, {
|
|
772
925
|
value: sidebarInstanceContextValue,
|
|
773
926
|
children: /* @__PURE__ */ jsxs("div", {
|
|
774
927
|
...rest,
|
|
928
|
+
...railAttributes,
|
|
775
929
|
id,
|
|
776
930
|
ref: setSidebarElement,
|
|
777
|
-
"data-state": state,
|
|
778
|
-
"data-side": side,
|
|
779
|
-
"data-mode": mode,
|
|
780
|
-
"data-collapsible": collapsible,
|
|
781
|
-
"data-variant": variant,
|
|
782
|
-
"data-fill": isFill,
|
|
783
931
|
style: styles,
|
|
784
932
|
className: cn("tailwindcss-preflight", "tw:flex", "tw:relative", mode === "expand-on-hover" ? "tw:z-[51]" : "tw:z-50", { "tw:group/sidebar tw:peer/sidebar": !container }, "tw:[&>[data-slot=gap]]:w-(--sidebar-width-gap)", "tw:[&[data-side=right]>[data-slot=gap]]:rotate-180", "tw:[&>[data-slot=sidebar-wrapper]]:w-(--sidebar-width)", "tw:[&[data-side=left]>[data-slot=sidebar-wrapper]]:left-0", "tw:[&[data-side=right]>[data-slot=sidebar-wrapper]]:right-0", "tw:[&[data-state=collapsed][data-collapsible=off-canvas][data-side=left]>[data-slot=sidebar-wrapper]]:-translate-x-full", "tw:[&[data-state=collapsed][data-collapsible=off-canvas][data-side=right]>[data-slot=sidebar-wrapper]]:translate-x-full", "tw:[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]]:pt-(--sidebar-floating-padding)", "tw:[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]]:pr-(--sidebar-floating-padding)", "tw:[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]]:pl-(--sidebar-floating-padding)", "tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]]:p-(--sidebar-floating-padding)", "tw:[&[data-fill=true]>[data-slot=sidebar-wrapper]]:!w-[calc(100svw-var(--opposite-sidebar-width))]", "tw:[&[data-fill=true][data-variant=floating]>[data-slot=sidebar-wrapper]]:!p-(--sidebar-floating-padding)", "tw:[&[data-fill=true][data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!rounded-tr-xl", "tw:[&[data-fill=true][data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!rounded-tl-xl", "tw:[&[data-variant=inset][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-r", "tw:[&[data-variant=inset][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-l", "tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:shadow", "tw:[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-xl", "tw:[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:shadow", "tw:[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-tr-xl", "tw:[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:rounded-tl-xl", "tw:[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-r", "tw:[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:border-l", isDragging ? "tw:transition-none" : "tw:transition-[width,translate,transform] tw:duration-(--sidebar-motion-duration) tw:ease-(--sidebar-motion-easing) tw:motion-reduce:transition-none"),
|
|
785
933
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -822,4 +970,4 @@ Sidebar.SubItem = SidebarMenuSubItem;
|
|
|
822
970
|
//#endregion
|
|
823
971
|
export { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar };
|
|
824
972
|
|
|
825
|
-
//# sourceMappingURL=Sidebar-
|
|
973
|
+
//# sourceMappingURL=Sidebar-Ds0E6PbR.js.map
|