@leavepulse/ui 0.71.2 → 0.72.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{LpKeys-BxRhfQda.css → LpKeys-C5VMcBOW.css} +10 -5
- package/dist/assets/LpTabs-CDchzoRL.css +18 -0
- package/dist/chunks/{ContextMenuItems-eS7qx9gD.js → ContextMenuItems-BXumicbh.js} +1 -1
- package/dist/chunks/{DropzoneLinkField-DkFhdfEJ.js → DropzoneLinkField-DpOB20Lx.js} +2 -2
- package/dist/chunks/{FieldWrapper-YzbvvC3M.js → FieldWrapper-DHhRxO5G.js} +1 -1
- package/dist/chunks/{LayoutCanvas-Ba4A9QC5.js → LayoutCanvas-CNOAUk7D.js} +1 -1
- package/dist/chunks/{LayoutNode-CTTTLMDM.js → LayoutNode-DF5BMN0J.js} +1 -1
- package/dist/chunks/{LpActionBar-B7anGlkI.js → LpActionBar-BqicINE_.js} +3 -3
- package/dist/chunks/{LpAddressInput-Bu6ws3Fp.js → LpAddressInput-CkbKLufb.js} +7 -7
- package/dist/chunks/{LpAlert-BHi7ARqu.js → LpAlert-BigMdAbu.js} +3 -3
- package/dist/chunks/{LpAppShell-C5YW5pI7.js → LpAppShell-DIMy-vjP.js} +68 -18
- package/dist/chunks/{LpAutocomplete-DDqe2M5g.js → LpAutocomplete-DOu7FN5P.js} +2 -2
- package/dist/chunks/{LpAvatar-DqfKCIdr.js → LpAvatar-Cg6Az3wz.js} +1 -1
- package/dist/chunks/{LpBadge-C8fKEmTF.js → LpBadge-Huo8EKew.js} +3 -3
- package/dist/chunks/LpBottomNav-BZIpahzA.js +89 -0
- package/dist/chunks/{LpBreadcrumbs-DhcoStFa.js → LpBreadcrumbs-DGtpBhWt.js} +3 -3
- package/dist/chunks/{LpButton-BQDAFXBd.js → LpButton-CW34A1e4.js} +1 -1
- package/dist/chunks/{LpCalendar-NmrA47J9.js → LpCalendar-CuoWks-0.js} +1 -1
- package/dist/chunks/{LpCard-CqKLnEhl.js → LpCard-B0sFXQzc.js} +1 -1
- package/dist/chunks/{LpCheckbox-BoOuLnGB.js → LpCheckbox-iaD63DEF.js} +2 -2
- package/dist/chunks/{LpCodeBlock-Czu-fq1M.js → LpCodeBlock-CFFa_pJb.js} +2 -2
- package/dist/chunks/{LpCodeDisplay-C9pIMF2R.js → LpCodeDisplay-CFmGMAmP.js} +6 -6
- package/dist/chunks/{LpColorPicker-Ee1DZiRd.js → LpColorPicker-1y1QJHZR.js} +56 -28
- package/dist/chunks/{LpConfirmDialog-i15pulMT.js → LpConfirmDialog-BDystNtm.js} +3 -3
- package/dist/chunks/{LpConfirmHost-D0oGavtd.js → LpConfirmHost-oOsxJHfQ.js} +1 -1
- package/dist/chunks/{LpContextMenu-DXpFJjlO.js → LpContextMenu-rx2tCjwk.js} +2 -2
- package/dist/chunks/{LpCopyButton-Dmq7DmFw.js → LpCopyButton-BNcGbVXF.js} +2 -2
- package/dist/chunks/{LpCountdown-CXrEK0ev.js → LpCountdown-Cak7cq3X.js} +3 -3
- package/dist/chunks/{LpDataList-CFPtSsBB.js → LpDataList-B6Meb4M9.js} +3 -3
- package/dist/chunks/{LpDatePicker-cC9K-Pk8.js → LpDatePicker-CA0QTfBC.js} +4 -4
- package/dist/chunks/{LpDateRangePicker-BVQKPbvo.js → LpDateRangePicker-u3J51xXk.js} +2 -2
- package/dist/chunks/{LpDisclosure-hRnX3FWL.js → LpDisclosure-Cpa7Hc5T.js} +1 -1
- package/dist/chunks/{LpDrawer-u4rxnuR-.js → LpDrawer-RRamxbLV.js} +1 -1
- package/dist/chunks/{LpDropdownMenu-BgZ0Z_Im.js → LpDropdownMenu-Dl7Z4ZhS.js} +2 -2
- package/dist/chunks/{LpEditable-CjxuOVh_.js → LpEditable-BNogo5DL.js} +5 -5
- package/dist/chunks/{LpEmptyState-CKFTtQgJ.js → LpEmptyState-EQHiRYhG.js} +7 -3
- package/dist/chunks/{LpFieldNotice-CPI8EwtU.js → LpFieldNotice-CzQ2_5rQ.js} +1 -1
- package/dist/chunks/{LpFileTree-BH0gNlSJ.js → LpFileTree-CHgtVh14.js} +2 -2
- package/dist/chunks/{LpFileTreeNode-gPVB1oXM.js → LpFileTreeNode-LqHgHd3B.js} +5 -5
- package/dist/chunks/{LpFormField-gRASfyj2.js → LpFormField-CC57DdTi.js} +2 -2
- package/dist/chunks/{LpGauge-DFdt33x8.js → LpGauge-BO1PYYqD.js} +2 -2
- package/dist/chunks/{LpHintLayer-C2asBIfs.js → LpHintLayer-CvAj4aa6.js} +2 -2
- package/dist/chunks/{LpHints-CNZQ76JV.js → LpHints-BtRvHQQ0.js} +3 -3
- package/dist/chunks/{LpIcon-DkP-9mzK.js → LpIcon--5WSb3jJ.js} +1 -1
- package/dist/chunks/{LpInfraNode-yTh4-5qa.js → LpInfraNode-CxngdQAG.js} +2 -2
- package/dist/chunks/{LpInput-2H-5ILOB.js → LpInput-DqmL-438.js} +2 -2
- package/dist/chunks/{LpLightbox-lAt5uIfx.js → LpLightbox-7YP6zSDm.js} +3 -3
- package/dist/chunks/{LpLoader-DjJEX8hL.js → LpLoader-CUo1MX_0.js} +1 -1
- package/dist/chunks/{LpLogViewer-x78YfhJf.js → LpLogViewer-DQOIsnZ1.js} +6 -6
- package/dist/chunks/{LpMapPicker-Dp5RSCi9.js → LpMapPicker-Dm3vJHN2.js} +2 -2
- package/dist/chunks/{LpMediaGallery-D92oJfY_.js → LpMediaGallery-znEbvIEo.js} +3 -3
- package/dist/chunks/{LpModal-CpH0bNo7.js → LpModal-BnjZ2iem.js} +1 -1
- package/dist/chunks/{LpModalNav-Cuna8c_3.js → LpModalNav-CH1UE9Ch.js} +4 -4
- package/dist/chunks/{LpNotificationBell-BdUQqZhs.js → LpNotificationBell-CrywodQ_.js} +8 -8
- package/dist/chunks/{LpNumberField-DZY3Z670.js → LpNumberField-e0IBkWU1.js} +1 -1
- package/dist/chunks/{LpNumberFlow-Dwb9MV1A.js → LpNumberFlow-CcxEGUy0.js} +4 -2
- package/dist/chunks/{LpPagination-DbeACavM.js → LpPagination-BIIiYHXR.js} +1 -1
- package/dist/chunks/{LpPaletteTheme-DkikZ362.js → LpPaletteTheme-BzHBh-mN.js} +4 -4
- package/dist/chunks/{LpPasswordInput-BzAZsf5V.js → LpPasswordInput-DVgRgTVx.js} +2 -2
- package/dist/chunks/{LpPhoneInput-BMpd-0QR.js → LpPhoneInput-CETEp5W7.js} +2 -2
- package/dist/chunks/{LpPie-C1uIUFxu.js → LpPie-BjDbeytx.js} +6 -6
- package/dist/chunks/{LpPipeline-zjEM1Lwc.js → LpPipeline-zZUj7I6K.js} +4 -4
- package/dist/chunks/{LpProgress-WNaH4emv.js → LpProgress-rOlyafqp.js} +1 -1
- package/dist/chunks/{LpQuota-Cz9PvklM.js → LpQuota-B12yijdB.js} +3 -3
- package/dist/chunks/{LpRadioGroup-CsXeV9Ct.js → LpRadioGroup-ggaPL92T.js} +1 -1
- package/dist/chunks/{LpRangeCalendar-l-0nSFmY.js → LpRangeCalendar-CYYUYqJ7.js} +1 -1
- package/dist/chunks/{LpRelativeTime-UM8EkfrN.js → LpRelativeTime-DwgCb5-8.js} +1 -1
- package/dist/chunks/{LpRepeater-OvzByE5L.js → LpRepeater-BQB0twJ5.js} +3 -3
- package/dist/chunks/LpRollingText-B54Pje7P.js +86 -0
- package/dist/chunks/{LpScramble-TDO5Kdou.js → LpScramble-DbQyBjUY.js} +1 -1
- package/dist/chunks/{LpSecretField-DwQiPOko.js → LpSecretField-uoD6Fngf.js} +7 -7
- package/dist/chunks/{LpSection-DcQsieHG.js → LpSection-DFK_uoJE.js} +1 -1
- package/dist/chunks/{LpSegmented-D2VST0o3.js → LpSegmented-CeACsMMA.js} +4 -2
- package/dist/chunks/{LpSelect-D3pRJfRY.js → LpSelect-Cxq4yBGd.js} +3 -3
- package/dist/chunks/LpShift-C-UGuKMN.js +171 -0
- package/dist/chunks/LpSidebar-DXdbvgM6.js +494 -0
- package/dist/chunks/LpSidebarNav-CE6CVCb0.js +367 -0
- package/dist/chunks/LpSidebarRow-CF9VFZ2w.js +304 -0
- package/dist/chunks/{LpStat-Dzn6WFzi.js → LpStat-CjpXrC8R.js} +6 -4
- package/dist/chunks/{LpStatus-BQU1TUsv.js → LpStatus-g-8z9b_u.js} +3 -3
- package/dist/chunks/{LpStepMark-CXa7DJy_.js → LpStepMark-DU7xalwW.js} +3 -3
- package/dist/chunks/{LpStepper-C9RM_yTG.js → LpStepper-CbRXiXNs.js} +1 -1
- package/dist/chunks/{LpSwap-DzE6M3Mg.js → LpSwap-Xi4j9PR_.js} +1 -1
- package/dist/chunks/{LpSwitch-bGZxUDSx.js → LpSwitch-BWcXEahf.js} +1 -1
- package/dist/chunks/LpTabFace-CG0VqD8I.js +77 -0
- package/dist/chunks/{LpTableFilter-CTZMqFDU.js → LpTableFilter-CYtK9GsF.js} +3 -3
- package/dist/chunks/{LpTagsInput-DrjmrOge.js → LpTagsInput-D1RzCwb5.js} +5 -5
- package/dist/chunks/{LpTextarea-BbYqmG1S.js → LpTextarea-MdIzNTjw.js} +32 -7
- package/dist/chunks/{useTheme-BOV_-AiY.js → LpThemeProvider-8MG6yqU9.js} +66 -1
- package/dist/chunks/{LpThemeStudio-IupHqP0x.js → LpThemeStudio-B0Kk1bX0.js} +138 -104
- package/dist/chunks/LpThemeStudioSection-B7bt8Iyg.js +32 -0
- package/dist/chunks/{LpThemeSwitcher-DarPHuX8.js → LpThemeSwitcher-CI4I7ygL.js} +6 -6
- package/dist/chunks/{LpTimeField-DQ8WvPr2.js → LpTimeField-BawSVsmt.js} +1 -1
- package/dist/chunks/{LpToaster-BTTl_wuy.js → LpToaster-C-P1nmMS.js} +2 -2
- package/dist/chunks/{LpTopologyCanvas-Cq-MiJwo.js → LpTopologyCanvas-CbEZhsP1.js} +1 -1
- package/dist/chunks/{LpTour-BgCfNlaW.js → LpTour-DRyzgpjt.js} +1 -1
- package/dist/chunks/{LpTruncate-TcqfkyJM.js → LpTruncate-4WvCWqnW.js} +1 -1
- package/dist/chunks/{LpUptimeBar-BbhVTPnL.js → LpUptimeBar-B2LNSNxs.js} +4 -4
- package/dist/chunks/{MenuTitle-Dab3EGOp.js → MenuTitle-BmCNNTKH.js} +1 -1
- package/dist/chunks/{OptionContent-DPzNsybd.js → OptionContent-22UT8zLn.js} +1 -1
- package/dist/chunks/{PickerField-DwLw7j0L.js → PickerField-Bfh8id3d.js} +2 -2
- package/dist/chunks/{RevealToggle-BVFM_FAU.js → RevealToggle-jBLJwVwO.js} +2 -2
- package/dist/chunks/{TourCard--2IfgnUU.js → TourCard-BOBcGbEo.js} +5 -5
- package/dist/chunks/{icons-CLu1iR1j.js → icons-DMITlfw5.js} +1 -1
- package/dist/component-names.d.ts +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.js +1 -1
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +67 -2
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBottomNav.vue.d.ts +28 -0
- package/dist/components/LpBottomNav.vue.js +4 -0
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.js +4 -4
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.d.ts +15 -2
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +4 -4
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.js +1 -1
- package/dist/components/LpCountdown.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDock.vue.js +1 -1
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +2 -2
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpEmptyState.vue.d.ts +2 -0
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpGauge.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +3 -3
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpKeys.vue.js +13 -10
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLoader.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.d.ts +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpNumberFlow.vue.js +1 -1
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +2 -2
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPaletteStats.vue.js +2 -2
- package/dist/components/LpPaletteTheme.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/LpProgress.vue.js +1 -1
- package/dist/components/LpQuota.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpRelativeTime.vue.js +1 -1
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpRollingText.vue.d.ts +2 -2
- package/dist/components/LpRollingText.vue.js +1 -1
- package/dist/components/LpScramble.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShift.vue.d.ts +20 -0
- package/dist/components/LpShift.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpSidebar.vue.d.ts +74 -23
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.d.ts +31 -3
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSidebarRow.vue.d.ts +49 -0
- package/dist/components/LpSidebarRow.vue.js +4 -0
- package/dist/components/LpStat.vue.d.ts +11 -0
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwap.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTabFace.vue.d.ts +14 -0
- package/dist/components/LpTabFace.vue.js +4 -0
- package/dist/components/LpTable.vue.js +11 -11
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTabs.vue.d.ts +4 -4
- package/dist/components/LpTabs.vue.js +18 -72
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextarea.vue.d.ts +19 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeProvider.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.d.ts +2 -2
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeStudioSection.vue.d.ts +4 -1
- package/dist/components/LpThemeStudioSection.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpTruncate.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/OptionContent.vue.js +1 -1
- package/dist/components/PickerField.vue.js +1 -1
- package/dist/components/RevealToggle.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/menuWhen.js +1 -1
- package/dist/components/rolling.d.ts +5 -0
- package/dist/components/rolling.js +23 -0
- package/dist/components/sidebar.d.ts +38 -0
- package/dist/components/sidebar.js +6 -1
- package/dist/components/tabs.d.ts +3 -0
- package/dist/components/tabs.js +6 -0
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +154 -153
- package/package.json +1 -1
- package/src/component-names.ts +1 -0
- package/src/components/LpAppShell.vue +75 -7
- package/src/components/LpBottomNav.vue +84 -0
- package/src/components/LpColorPicker.vue +32 -1
- package/src/components/LpEmptyState.vue +4 -1
- package/src/components/LpKeys.vue +10 -1
- package/src/components/LpNumberFlow.vue +4 -2
- package/src/components/LpRollingText.vue +27 -2
- package/src/components/LpSegmented.vue +3 -1
- package/src/components/LpShift.vue +189 -2
- package/src/components/LpSidebar.vue +304 -18
- package/src/components/LpSidebarNav.vue +211 -78
- package/src/components/LpSidebarRow.vue +242 -0
- package/src/components/LpStat.vue +7 -1
- package/src/components/LpTabFace.vue +52 -0
- package/src/components/LpTabs.vue +6 -41
- package/src/components/LpTextarea.vue +34 -4
- package/src/components/LpThemeStudio.vue +91 -55
- package/src/components/LpThemeStudioSection.vue +15 -7
- package/src/components/rolling.ts +28 -0
- package/src/components/sidebar.ts +41 -0
- package/src/components/tabs.ts +9 -0
- package/src/index.ts +1 -0
- package/src/kit-icons.ts +1 -1
- package/dist/assets/LpTabs-DT0XPTc2.css +0 -18
- package/dist/chunks/LpRollingText-DiL717LK.js +0 -51
- package/dist/chunks/LpShift-DXNsauQZ.js +0 -40
- package/dist/chunks/LpSidebar-Bk7b-K4l.js +0 -256
- package/dist/chunks/LpSidebarNav-BR2AW3KT.js +0 -216
- package/dist/chunks/LpThemeProvider-DcbfOxsU.js +0 -69
- package/dist/chunks/LpThemeStudioSection-BwhqYDLf.js +0 -20
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { defineComponent, computed, ref, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, unref, normalizeClass, createCommentVNode, toDisplayString, renderSlot, createBlock, withCtx, createVNode, createSlots, normalizeProps, guardReactiveProps, nextTick } from "vue";
|
|
2
|
+
import { useHotkeys, parseCombo } from "../composables/useHotkeys.js";
|
|
3
|
+
import { usePersisted } from "../composables/usePersisted.js";
|
|
4
|
+
import { useLabels } from "../composables/useLpConfig.js";
|
|
5
|
+
import { _ as _sfc_main$5 } from "./LpDrawer-RRamxbLV.js";
|
|
6
|
+
import { _ as _sfc_main$2 } from "./LpIcon--5WSb3jJ.js";
|
|
7
|
+
import { _ as _sfc_main$3 } from "./LpInput-DqmL-438.js";
|
|
8
|
+
import { _ as _sfc_main$1 } from "./LpTooltip-BcBvIx4z.js";
|
|
9
|
+
import { _ as _sfc_main$4 } from "./LpSidebarNav-CE6CVCb0.js";
|
|
10
|
+
const _hoisted_1 = ["data-compact", "aria-label"];
|
|
11
|
+
const _hoisted_2 = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "flex w-16 shrink-0 justify-center"
|
|
14
|
+
};
|
|
15
|
+
const _hoisted_3 = ["aria-label"];
|
|
16
|
+
const _hoisted_4 = ["aria-label", "aria-pressed"];
|
|
17
|
+
const _hoisted_5 = {
|
|
18
|
+
key: 0,
|
|
19
|
+
class: "truncate"
|
|
20
|
+
};
|
|
21
|
+
const _hoisted_6 = {
|
|
22
|
+
key: 7,
|
|
23
|
+
class: "mt-2 shrink-0 overflow-hidden border-t border-line pt-3"
|
|
24
|
+
};
|
|
25
|
+
const _hoisted_7 = {
|
|
26
|
+
key: 0,
|
|
27
|
+
class: "flex w-12 justify-center"
|
|
28
|
+
};
|
|
29
|
+
const _hoisted_8 = ["aria-label", "title"];
|
|
30
|
+
const _hoisted_9 = ["aria-label"];
|
|
31
|
+
const _hoisted_10 = {
|
|
32
|
+
key: 2,
|
|
33
|
+
class: "mt-2 flex shrink-0 flex-col gap-2"
|
|
34
|
+
};
|
|
35
|
+
const _hoisted_11 = {
|
|
36
|
+
key: 3,
|
|
37
|
+
class: "mt-2 shrink-0 border-t border-line pt-3"
|
|
38
|
+
};
|
|
39
|
+
const DEFAULT_WIDTH = 240;
|
|
40
|
+
const COMPACT_WIDTH = 64;
|
|
41
|
+
const FOLD_AT = 132;
|
|
42
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
43
|
+
...{ inheritAttrs: false },
|
|
44
|
+
__name: "LpSidebar",
|
|
45
|
+
props: {
|
|
46
|
+
modelValue: {},
|
|
47
|
+
items: {},
|
|
48
|
+
sections: {},
|
|
49
|
+
isActive: {},
|
|
50
|
+
searchable: { type: Boolean },
|
|
51
|
+
searchPlaceholder: {},
|
|
52
|
+
labels: {},
|
|
53
|
+
search: {},
|
|
54
|
+
loading: { type: Boolean },
|
|
55
|
+
skeletonRows: { default: 6 },
|
|
56
|
+
skeletonHeader: { type: Boolean, default: true },
|
|
57
|
+
responsive: { type: Boolean, default: false },
|
|
58
|
+
open: { type: Boolean },
|
|
59
|
+
mobileBreakpoint: { default: "md" },
|
|
60
|
+
edgeOpen: { type: Boolean },
|
|
61
|
+
divider: { type: Boolean, default: true },
|
|
62
|
+
variant: { default: "rail" },
|
|
63
|
+
width: {},
|
|
64
|
+
collapsed: {},
|
|
65
|
+
persist: {},
|
|
66
|
+
autoCollapseAfter: { default: 14 },
|
|
67
|
+
hoverFollow: { type: Boolean, default: false },
|
|
68
|
+
compact: { type: Boolean, default: void 0 },
|
|
69
|
+
resizable: { type: Boolean },
|
|
70
|
+
minWidth: { default: 180 },
|
|
71
|
+
maxWidth: { default: 420 },
|
|
72
|
+
compactHotkey: { type: [String, Boolean], default: "Ctrl+B" },
|
|
73
|
+
pinnable: { type: Boolean },
|
|
74
|
+
pinned: {},
|
|
75
|
+
previewDelay: { default: 900 },
|
|
76
|
+
environment: {},
|
|
77
|
+
hints: {}
|
|
78
|
+
},
|
|
79
|
+
emits: ["update:modelValue", "update:open", "update:collapsed", "select", "update:search", "update:compact", "update:pinned"],
|
|
80
|
+
setup(__props, { emit: __emit }) {
|
|
81
|
+
const props = __props;
|
|
82
|
+
const emit = __emit;
|
|
83
|
+
const text = useLabels(
|
|
84
|
+
"sidebar",
|
|
85
|
+
{
|
|
86
|
+
nav: "Sidebar",
|
|
87
|
+
search: "Search",
|
|
88
|
+
pinned: "Pinned",
|
|
89
|
+
pin: "Pin to top",
|
|
90
|
+
unpin: "Unpin",
|
|
91
|
+
expand: "Show the pages under it",
|
|
92
|
+
compact: "Collapse the sidebar",
|
|
93
|
+
expandRail: "Expand the sidebar",
|
|
94
|
+
resize: "Drag to resize, double-click to reset"
|
|
95
|
+
},
|
|
96
|
+
() => props.labels
|
|
97
|
+
);
|
|
98
|
+
const placeholder = computed(() => props.searchPlaceholder ?? text.value.search);
|
|
99
|
+
function withNews(item) {
|
|
100
|
+
const children = item.children?.map(withNews);
|
|
101
|
+
const pages = item.hintPage === void 0 ? [] : Array.isArray(item.hintPage) ? item.hintPage : [item.hintPage];
|
|
102
|
+
const fresh = !!props.hints && pages.some((p) => props.hints.unreadNews(p).length > 0);
|
|
103
|
+
return fresh || children ? { ...item, children, dot: item.dot || fresh } : item;
|
|
104
|
+
}
|
|
105
|
+
const allGroups = computed(() => {
|
|
106
|
+
const groups2 = props.sections ?? (props.items ? [{ items: props.items }] : []);
|
|
107
|
+
return props.hints ? groups2.map((g) => ({ ...g, items: g.items.map(withNews) })) : groups2;
|
|
108
|
+
});
|
|
109
|
+
const ownSearch = ref("");
|
|
110
|
+
const query = computed({
|
|
111
|
+
get: () => props.search ?? ownSearch.value,
|
|
112
|
+
set: (v) => {
|
|
113
|
+
ownSearch.value = v;
|
|
114
|
+
emit("update:search", v);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
function normalise(s) {
|
|
118
|
+
return s.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase();
|
|
119
|
+
}
|
|
120
|
+
function matches(item, needle) {
|
|
121
|
+
if (normalise(item.label).includes(needle)) return true;
|
|
122
|
+
return (item.keywords ?? []).some((k) => normalise(k).includes(needle));
|
|
123
|
+
}
|
|
124
|
+
function narrowed(item, needle) {
|
|
125
|
+
if (matches(item, needle)) return item;
|
|
126
|
+
const children = (item.children ?? []).filter((c) => matches(c, needle));
|
|
127
|
+
return children.length ? { ...item, children } : null;
|
|
128
|
+
}
|
|
129
|
+
const groups = computed(() => {
|
|
130
|
+
const needle = normalise(query.value.trim());
|
|
131
|
+
if (!needle) return allGroups.value;
|
|
132
|
+
return allGroups.value.map((section) => ({
|
|
133
|
+
...section,
|
|
134
|
+
items: section.items.map((i) => narrowed(i, needle)).filter((i) => i !== null)
|
|
135
|
+
})).filter((section) => section.items.length > 0);
|
|
136
|
+
});
|
|
137
|
+
const filtering = computed(() => query.value.trim().length > 0);
|
|
138
|
+
function itemActive(item) {
|
|
139
|
+
return props.isActive ? props.isActive(item) : item.id === props.modelValue;
|
|
140
|
+
}
|
|
141
|
+
function keyOf(section) {
|
|
142
|
+
return section.key ?? section.title ?? "";
|
|
143
|
+
}
|
|
144
|
+
const ownCollapsed = usePersisted(
|
|
145
|
+
() => props.persist && `lp-sidebar:${props.persist}`,
|
|
146
|
+
null,
|
|
147
|
+
{ validate: (value) => value === null || Array.isArray(value) && value.every((k) => typeof k === "string") }
|
|
148
|
+
);
|
|
149
|
+
const navLength = computed(
|
|
150
|
+
() => groups.value.reduce((n, g) => n + g.items.length + (g.title ? 1 : 0), 0)
|
|
151
|
+
);
|
|
152
|
+
const autoCollapsed = computed(() => {
|
|
153
|
+
const limit = props.autoCollapseAfter;
|
|
154
|
+
if (!limit || navLength.value <= limit) return [];
|
|
155
|
+
return groups.value.filter((g) => g.collapsible && !g.items.some((i) => itemActive(i) || !!i.children?.some(itemActive))).map(keyOf).filter(Boolean);
|
|
156
|
+
});
|
|
157
|
+
const collapsedKeys = computed(
|
|
158
|
+
() => (
|
|
159
|
+
// Nothing stays folded while a query is on: a section that matched but is
|
|
160
|
+
// closed looks exactly like a section that did not match, and the person is
|
|
161
|
+
// typing precisely because they cannot find the thing by eye.
|
|
162
|
+
filtering.value ? [] : props.collapsed ?? ownCollapsed.value ?? autoCollapsed.value
|
|
163
|
+
)
|
|
164
|
+
);
|
|
165
|
+
function toggleSection(key, collapsed) {
|
|
166
|
+
const next = collapsed ? [.../* @__PURE__ */ new Set([...collapsedKeys.value, key])] : collapsedKeys.value.filter((k) => k !== key);
|
|
167
|
+
ownCollapsed.value = next;
|
|
168
|
+
emit("update:collapsed", next);
|
|
169
|
+
}
|
|
170
|
+
const ownCompact = usePersisted(() => props.persist && `lp-sidebar:${props.persist}:compact`, false);
|
|
171
|
+
const isCompact = computed(() => props.compact ?? ownCompact.value);
|
|
172
|
+
function setCompact(value) {
|
|
173
|
+
ownCompact.value = value;
|
|
174
|
+
emit("update:compact", value);
|
|
175
|
+
}
|
|
176
|
+
const ENV_TONE = {
|
|
177
|
+
warning: "bg-accent text-ink-inverse",
|
|
178
|
+
danger: "bg-danger text-white",
|
|
179
|
+
action: "bg-action text-ink-inverse",
|
|
180
|
+
brand: "bg-brand text-ink-inverse"
|
|
181
|
+
};
|
|
182
|
+
const env = computed(() => {
|
|
183
|
+
const e = props.environment;
|
|
184
|
+
if (!e) return null;
|
|
185
|
+
const { label, tone = "warning" } = typeof e === "string" ? { label: e } : e;
|
|
186
|
+
return { label, tone: ENV_TONE[tone] };
|
|
187
|
+
});
|
|
188
|
+
const ownWidth = usePersisted(() => props.resizable && props.persist && `lp-sidebar:${props.persist}:width`, DEFAULT_WIDTH);
|
|
189
|
+
const dragging = ref(false);
|
|
190
|
+
const railWidth = computed(() => {
|
|
191
|
+
if (isCompact.value) return `${COMPACT_WIDTH}px`;
|
|
192
|
+
if (props.resizable) return `${ownWidth.value}px`;
|
|
193
|
+
return props.width;
|
|
194
|
+
});
|
|
195
|
+
function startResize(event) {
|
|
196
|
+
if (event.button !== 0) return;
|
|
197
|
+
const handle = event.currentTarget;
|
|
198
|
+
handle.setPointerCapture(event.pointerId);
|
|
199
|
+
const from = event.clientX;
|
|
200
|
+
const start = isCompact.value ? COMPACT_WIDTH : ownWidth.value;
|
|
201
|
+
dragging.value = true;
|
|
202
|
+
const move = (e) => {
|
|
203
|
+
const wanted = start + (e.clientX - from);
|
|
204
|
+
if (wanted < FOLD_AT) {
|
|
205
|
+
if (!isCompact.value) setCompact(true);
|
|
206
|
+
if (start !== COMPACT_WIDTH) ownWidth.value = start;
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (isCompact.value) setCompact(false);
|
|
210
|
+
ownWidth.value = Math.round(Math.min(props.maxWidth, Math.max(props.minWidth, wanted)));
|
|
211
|
+
};
|
|
212
|
+
const stop = () => {
|
|
213
|
+
dragging.value = false;
|
|
214
|
+
handle.removeEventListener("pointermove", move);
|
|
215
|
+
handle.removeEventListener("pointerup", stop);
|
|
216
|
+
handle.removeEventListener("pointercancel", stop);
|
|
217
|
+
};
|
|
218
|
+
handle.addEventListener("pointermove", move);
|
|
219
|
+
handle.addEventListener("pointerup", stop);
|
|
220
|
+
handle.addEventListener("pointercancel", stop);
|
|
221
|
+
}
|
|
222
|
+
const railEl = ref(null);
|
|
223
|
+
async function searchFromCompact() {
|
|
224
|
+
setCompact(false);
|
|
225
|
+
await nextTick();
|
|
226
|
+
railEl.value?.querySelector("input")?.focus();
|
|
227
|
+
}
|
|
228
|
+
function resetWidth() {
|
|
229
|
+
ownWidth.value = DEFAULT_WIDTH;
|
|
230
|
+
setCompact(false);
|
|
231
|
+
}
|
|
232
|
+
useHotkeys(
|
|
233
|
+
() => props.resizable && props.compactHotkey ? [
|
|
234
|
+
{
|
|
235
|
+
...parseCombo(props.compactHotkey),
|
|
236
|
+
help: { group: text.value.nav, label: text.value.compact, combo: props.compactHotkey },
|
|
237
|
+
handler: () => setCompact(!isCompact.value)
|
|
238
|
+
}
|
|
239
|
+
] : []
|
|
240
|
+
);
|
|
241
|
+
const ownPinned = usePersisted(() => props.persist && `lp-sidebar:${props.persist}:pinned`, [], {
|
|
242
|
+
validate: (value) => Array.isArray(value) && value.every((k) => typeof k === "string")
|
|
243
|
+
});
|
|
244
|
+
const pinnedIds = computed(() => props.pinned ?? ownPinned.value);
|
|
245
|
+
const everyItem = computed(() => allGroups.value.flatMap((g) => g.items.flatMap((i) => [i, ...i.children ?? []])));
|
|
246
|
+
const pinnedItems = computed(
|
|
247
|
+
() => props.pinnable ? pinnedIds.value.map((id) => everyItem.value.find((i) => i.id === id)).filter((i) => !!i) : []
|
|
248
|
+
);
|
|
249
|
+
function togglePin(id) {
|
|
250
|
+
const next = pinnedIds.value.includes(id) ? pinnedIds.value.filter((k) => k !== id) : [...pinnedIds.value, id];
|
|
251
|
+
ownPinned.value = next;
|
|
252
|
+
emit("update:pinned", next);
|
|
253
|
+
}
|
|
254
|
+
function activate(item) {
|
|
255
|
+
if (item.disabled) return;
|
|
256
|
+
emit("update:modelValue", item.id);
|
|
257
|
+
emit("select", item);
|
|
258
|
+
if (props.responsive && props.open) emit("update:open", false);
|
|
259
|
+
}
|
|
260
|
+
const baseId = `lp-sidebar-${useId()}`;
|
|
261
|
+
const railPillId = `${baseId}-rail`;
|
|
262
|
+
const drawerPillId = `${baseId}-drawer`;
|
|
263
|
+
const RAIL_VISIBILITY = {
|
|
264
|
+
sm: "hidden sm:flex",
|
|
265
|
+
md: "hidden md:flex",
|
|
266
|
+
lg: "hidden lg:flex",
|
|
267
|
+
xl: "hidden xl:flex"
|
|
268
|
+
};
|
|
269
|
+
const railClass = computed(
|
|
270
|
+
() => props.responsive ? RAIL_VISIBILITY[props.mobileBreakpoint] : "flex"
|
|
271
|
+
);
|
|
272
|
+
const chromeClass = computed(
|
|
273
|
+
() => props.variant === "panel" ? "rounded-card border border-line bg-surface-raised" : "border-r border-line bg-surface-raised"
|
|
274
|
+
);
|
|
275
|
+
return (_ctx, _cache) => {
|
|
276
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
277
|
+
createElementVNode("nav", mergeProps({
|
|
278
|
+
ref_key: "railEl",
|
|
279
|
+
ref: railEl,
|
|
280
|
+
class: ["relative h-full shrink-0 flex-col gap-1", [
|
|
281
|
+
railClass.value,
|
|
282
|
+
chromeClass.value,
|
|
283
|
+
isCompact.value ? "px-2 py-3" : "p-3",
|
|
284
|
+
railWidth.value ? "" : "w-60",
|
|
285
|
+
dragging.value ? "" : "transition-[width] duration-(--duration-medium) ease-[var(--ease-emphasized)] motion-reduce:transition-none"
|
|
286
|
+
]],
|
|
287
|
+
style: railWidth.value ? { width: railWidth.value } : void 0,
|
|
288
|
+
"data-compact": isCompact.value || void 0,
|
|
289
|
+
"aria-label": unref(text).nav
|
|
290
|
+
}, _ctx.$attrs), [
|
|
291
|
+
env.value ? (openBlock(), createElementBlock("div", {
|
|
292
|
+
key: 0,
|
|
293
|
+
class: normalizeClass(["pointer-events-none absolute inset-x-0 top-0 z-20 h-[3px]", env.value.tone])
|
|
294
|
+
}, null, 2)) : createCommentVNode("", true),
|
|
295
|
+
env.value && !isCompact.value ? (openBlock(), createElementBlock("span", {
|
|
296
|
+
key: 1,
|
|
297
|
+
class: normalizeClass(["pointer-events-none absolute left-1/2 top-0 z-20 -translate-x-1/2 rounded-b-small px-2 pb-0.5 text-[10px] font-semibold uppercase tracking-wide", env.value.tone])
|
|
298
|
+
}, toDisplayString(env.value.label), 3)) : createCommentVNode("", true),
|
|
299
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("div", {
|
|
300
|
+
key: 2,
|
|
301
|
+
class: normalizeClass(["mb-3 flex shrink-0 items-center", [
|
|
302
|
+
__props.variant === "panel" ? "pb-3" : isCompact.value ? "-mx-2 -mt-3 h-16 overflow-hidden" : "-mx-3 -mt-3 h-16 px-3",
|
|
303
|
+
__props.divider ? "border-b border-line" : ""
|
|
304
|
+
]])
|
|
305
|
+
}, [
|
|
306
|
+
isCompact.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
307
|
+
renderSlot(_ctx.$slots, "header", { compact: true })
|
|
308
|
+
])) : renderSlot(_ctx.$slots, "header", {
|
|
309
|
+
key: 1,
|
|
310
|
+
compact: false
|
|
311
|
+
})
|
|
312
|
+
], 2)) : createCommentVNode("", true),
|
|
313
|
+
__props.searchable && isCompact.value ? (openBlock(), createBlock(_sfc_main$1, {
|
|
314
|
+
key: 3,
|
|
315
|
+
content: placeholder.value,
|
|
316
|
+
side: "right"
|
|
317
|
+
}, {
|
|
318
|
+
default: withCtx(() => [
|
|
319
|
+
createElementVNode("button", {
|
|
320
|
+
type: "button",
|
|
321
|
+
class: "mb-2 ml-1 grid size-10 shrink-0 place-items-center rounded-control text-muted outline-none transition-colors hover:bg-ink/[0.05] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring",
|
|
322
|
+
"aria-label": placeholder.value,
|
|
323
|
+
onClick: searchFromCompact
|
|
324
|
+
}, [
|
|
325
|
+
createVNode(_sfc_main$2, {
|
|
326
|
+
name: "lucide:search",
|
|
327
|
+
size: 17
|
|
328
|
+
})
|
|
329
|
+
], 8, _hoisted_3)
|
|
330
|
+
]),
|
|
331
|
+
_: 1
|
|
332
|
+
}, 8, ["content"])) : createCommentVNode("", true),
|
|
333
|
+
__props.searchable && !isCompact.value ? (openBlock(), createBlock(_sfc_main$3, {
|
|
334
|
+
key: 4,
|
|
335
|
+
modelValue: query.value,
|
|
336
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => query.value = $event),
|
|
337
|
+
size: "sm",
|
|
338
|
+
icon: "lucide:search",
|
|
339
|
+
clearable: "",
|
|
340
|
+
class: "mb-2 shrink-0",
|
|
341
|
+
placeholder: placeholder.value,
|
|
342
|
+
"aria-label": placeholder.value
|
|
343
|
+
}, null, 8, ["modelValue", "placeholder", "aria-label"])) : createCommentVNode("", true),
|
|
344
|
+
createVNode(_sfc_main$4, {
|
|
345
|
+
groups: groups.value,
|
|
346
|
+
"pill-id": railPillId,
|
|
347
|
+
compact: isCompact.value,
|
|
348
|
+
pinnable: __props.pinnable,
|
|
349
|
+
pinned: pinnedItems.value,
|
|
350
|
+
"preview-delay": __props.previewDelay,
|
|
351
|
+
labels: unref(text),
|
|
352
|
+
"item-active": itemActive,
|
|
353
|
+
loading: __props.loading,
|
|
354
|
+
"skeleton-rows": __props.skeletonRows,
|
|
355
|
+
"skeleton-header": __props.skeletonHeader,
|
|
356
|
+
"collapsed-keys": collapsedKeys.value,
|
|
357
|
+
"hover-follow": __props.hoverFollow,
|
|
358
|
+
onActivate: activate,
|
|
359
|
+
onToggleSection: toggleSection,
|
|
360
|
+
onTogglePin: togglePin
|
|
361
|
+
}, createSlots({ _: 2 }, [
|
|
362
|
+
_ctx.$slots.item ? {
|
|
363
|
+
name: "item",
|
|
364
|
+
fn: withCtx((slotProps) => [
|
|
365
|
+
renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps(slotProps)))
|
|
366
|
+
]),
|
|
367
|
+
key: "0"
|
|
368
|
+
} : void 0
|
|
369
|
+
]), 1032, ["groups", "compact", "pinnable", "pinned", "preview-delay", "labels", "loading", "skeleton-rows", "skeleton-header", "collapsed-keys", "hover-follow"]),
|
|
370
|
+
__props.resizable ? (openBlock(), createBlock(_sfc_main$1, {
|
|
371
|
+
key: 5,
|
|
372
|
+
content: isCompact.value ? unref(text).expandRail : unref(text).compact,
|
|
373
|
+
side: "right"
|
|
374
|
+
}, {
|
|
375
|
+
default: withCtx(() => [
|
|
376
|
+
createElementVNode("button", {
|
|
377
|
+
type: "button",
|
|
378
|
+
class: normalizeClass(["mt-1 flex h-8 shrink-0 items-center gap-2 rounded-control px-3 text-xs text-muted outline-none transition-colors hover:bg-ink/[0.05] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring", isCompact.value ? "ml-1 w-10 justify-center px-0" : ""]),
|
|
379
|
+
"aria-label": isCompact.value ? unref(text).expandRail : unref(text).compact,
|
|
380
|
+
"aria-pressed": isCompact.value,
|
|
381
|
+
onClick: _cache[1] || (_cache[1] = ($event) => setCompact(!isCompact.value))
|
|
382
|
+
}, [
|
|
383
|
+
createVNode(_sfc_main$2, {
|
|
384
|
+
name: isCompact.value ? "lucide:panel-left-open" : "lucide:panel-left-close",
|
|
385
|
+
size: 16,
|
|
386
|
+
class: "shrink-0"
|
|
387
|
+
}, null, 8, ["name"]),
|
|
388
|
+
!isCompact.value ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(unref(text).compact), 1)) : createCommentVNode("", true)
|
|
389
|
+
], 10, _hoisted_4)
|
|
390
|
+
]),
|
|
391
|
+
_: 1
|
|
392
|
+
}, 8, ["content"])) : createCommentVNode("", true),
|
|
393
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", {
|
|
394
|
+
key: 6,
|
|
395
|
+
class: normalizeClass(["mt-2 flex shrink-0 flex-col gap-2", isCompact.value ? "w-12 items-center" : ""])
|
|
396
|
+
}, [
|
|
397
|
+
renderSlot(_ctx.$slots, "actions", { compact: isCompact.value })
|
|
398
|
+
], 2)) : createCommentVNode("", true),
|
|
399
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
400
|
+
isCompact.value ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
401
|
+
renderSlot(_ctx.$slots, "footer", { compact: true })
|
|
402
|
+
])) : renderSlot(_ctx.$slots, "footer", {
|
|
403
|
+
key: 1,
|
|
404
|
+
compact: false
|
|
405
|
+
})
|
|
406
|
+
])) : createCommentVNode("", true),
|
|
407
|
+
__props.resizable && __props.variant === "rail" ? (openBlock(), createElementBlock("div", {
|
|
408
|
+
key: 8,
|
|
409
|
+
role: "separator",
|
|
410
|
+
"aria-orientation": "vertical",
|
|
411
|
+
"aria-label": unref(text).resize,
|
|
412
|
+
title: unref(text).resize,
|
|
413
|
+
class: "group/resize absolute inset-y-0 -right-1.5 z-10 w-3 cursor-col-resize touch-none",
|
|
414
|
+
onPointerdown: startResize,
|
|
415
|
+
onDblclick: resetWidth
|
|
416
|
+
}, [
|
|
417
|
+
createElementVNode("span", {
|
|
418
|
+
class: normalizeClass(["absolute inset-y-0 left-1/2 w-0.5 -translate-x-1/2 bg-brand opacity-0 transition-opacity duration-(--duration-fast) group-hover/resize:opacity-60", dragging.value ? "!opacity-100" : ""])
|
|
419
|
+
}, null, 2)
|
|
420
|
+
], 40, _hoisted_8)) : createCommentVNode("", true)
|
|
421
|
+
], 16, _hoisted_1),
|
|
422
|
+
__props.responsive ? (openBlock(), createBlock(_sfc_main$5, {
|
|
423
|
+
key: 0,
|
|
424
|
+
open: __props.open,
|
|
425
|
+
direction: "left",
|
|
426
|
+
size: "sm",
|
|
427
|
+
"edge-open": __props.edgeOpen,
|
|
428
|
+
"edge-breakpoint": __props.mobileBreakpoint,
|
|
429
|
+
"onUpdate:open": _cache[3] || (_cache[3] = (v) => emit("update:open", v))
|
|
430
|
+
}, {
|
|
431
|
+
default: withCtx(() => [
|
|
432
|
+
createElementVNode("nav", {
|
|
433
|
+
class: "flex h-full flex-col gap-1",
|
|
434
|
+
"aria-label": unref(text).nav
|
|
435
|
+
}, [
|
|
436
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("div", {
|
|
437
|
+
key: 0,
|
|
438
|
+
class: normalizeClass(["shrink-0", __props.divider ? "mb-3 border-b border-line pb-3" : "mb-2"])
|
|
439
|
+
}, [
|
|
440
|
+
renderSlot(_ctx.$slots, "header")
|
|
441
|
+
], 2)) : createCommentVNode("", true),
|
|
442
|
+
__props.searchable ? (openBlock(), createBlock(_sfc_main$3, {
|
|
443
|
+
key: 1,
|
|
444
|
+
modelValue: query.value,
|
|
445
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => query.value = $event),
|
|
446
|
+
size: "sm",
|
|
447
|
+
icon: "lucide:search",
|
|
448
|
+
clearable: "",
|
|
449
|
+
class: "mb-2 shrink-0",
|
|
450
|
+
placeholder: placeholder.value,
|
|
451
|
+
"aria-label": placeholder.value
|
|
452
|
+
}, null, 8, ["modelValue", "placeholder", "aria-label"])) : createCommentVNode("", true),
|
|
453
|
+
createVNode(_sfc_main$4, {
|
|
454
|
+
groups: groups.value,
|
|
455
|
+
"pill-id": drawerPillId,
|
|
456
|
+
pinnable: __props.pinnable,
|
|
457
|
+
pinned: pinnedItems.value,
|
|
458
|
+
"preview-delay": __props.previewDelay,
|
|
459
|
+
labels: unref(text),
|
|
460
|
+
"item-active": itemActive,
|
|
461
|
+
loading: __props.loading,
|
|
462
|
+
"skeleton-rows": __props.skeletonRows,
|
|
463
|
+
"skeleton-header": __props.skeletonHeader,
|
|
464
|
+
"collapsed-keys": collapsedKeys.value,
|
|
465
|
+
"hover-follow": __props.hoverFollow,
|
|
466
|
+
onActivate: activate,
|
|
467
|
+
onToggleSection: toggleSection,
|
|
468
|
+
onTogglePin: togglePin
|
|
469
|
+
}, createSlots({ _: 2 }, [
|
|
470
|
+
_ctx.$slots.item ? {
|
|
471
|
+
name: "item",
|
|
472
|
+
fn: withCtx((slotProps) => [
|
|
473
|
+
renderSlot(_ctx.$slots, "item", normalizeProps(guardReactiveProps(slotProps)))
|
|
474
|
+
]),
|
|
475
|
+
key: "0"
|
|
476
|
+
} : void 0
|
|
477
|
+
]), 1032, ["groups", "pinnable", "pinned", "preview-delay", "labels", "loading", "skeleton-rows", "skeleton-header", "collapsed-keys", "hover-follow"]),
|
|
478
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
479
|
+
renderSlot(_ctx.$slots, "actions")
|
|
480
|
+
])) : createCommentVNode("", true),
|
|
481
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_11, [
|
|
482
|
+
renderSlot(_ctx.$slots, "footer")
|
|
483
|
+
])) : createCommentVNode("", true)
|
|
484
|
+
], 8, _hoisted_9)
|
|
485
|
+
]),
|
|
486
|
+
_: 3
|
|
487
|
+
}, 8, ["open", "edge-open", "edge-breakpoint"])) : createCommentVNode("", true)
|
|
488
|
+
], 64);
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
export {
|
|
493
|
+
_sfc_main as _
|
|
494
|
+
};
|