@leavepulse/ui 0.43.4 → 0.44.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/README.md +75 -7
- package/dist/assets/{LpCommandPalette-B-0Est4Z.css → LpCommandPalette-DCP5g2ik.css} +21 -21
- package/dist/assets/{LpDropzone-BBoWvi-J.css → LpDropzone-i4BdMi1H.css} +12 -12
- package/dist/assets/{LpImageEditor-Ct7Y3aNu.css → LpImageEditor-CbMA82g8.css} +6 -6
- package/dist/assets/{LpShortcutsDialog-C6YoQ8_M.css → LpShortcutsDialog-ChUyU7oV.css} +7 -7
- package/dist/assets/{LpSkeleton-D7xU8IPV.css → LpSkeleton-H3Z5dEIk.css} +4 -1
- package/dist/assets/{LpTable-BgPLJOXa.css → LpTable-DDQNdf86.css} +9 -9
- package/dist/chunks/ContextMenuItems-CrfeNPWT.js +123 -0
- package/dist/chunks/{LayoutCanvas-Dd20boUG.js → LayoutCanvas-D-jPOAvg.js} +26 -9
- package/dist/chunks/{LayoutNode-DGpZA9LX.js → LayoutNode-D8Xy9N-o.js} +20 -8
- package/dist/chunks/{LpActionBar-BlvtGB2P.js → LpActionBar-BbwCF6l5.js} +24 -10
- package/dist/chunks/{LpAddressInput-B-Zvxsn7.js → LpAddressInput-BrOqkZqg.js} +53 -48
- package/dist/chunks/{LpAlert-BAYHDSS1.js → LpAlert-DkOIjsbq.js} +15 -8
- package/dist/chunks/{LpAppShell-BGQVIY-3.js → LpAppShell-BUKPcHco.js} +51 -24
- package/dist/chunks/{LpAutocomplete-DExlIZe_.js → LpAutocomplete-DxV3Y9h4.js} +50 -23
- package/dist/chunks/{LpAvatar-B3-xAOH3.js → LpAvatar-ClBbEYZN.js} +17 -8
- package/dist/chunks/LpBreadcrumbs-B8IJgFIc.js +95 -0
- package/dist/chunks/{LpButton-5VXXCjwF.js → LpButton-kqJBHIIb.js} +44 -14
- package/dist/chunks/{LpCard-BhI1N_vL.js → LpCard-CpRByR0q.js} +1 -1
- package/dist/chunks/{LpCheckbox-CVccKYaH.js → LpCheckbox-DpqchzH4.js} +7 -3
- package/dist/chunks/{LpCodeBlock-Bo0B4TFR.js → LpCodeBlock-DeHJPq7p.js} +48 -16
- package/dist/chunks/{LpColorPicker-BlXea7LM.js → LpColorPicker-Bhf1qxhB.js} +32 -9
- package/dist/chunks/{LpConfirmDialog-Q-bxff8z.js → LpConfirmDialog-CIUOSnWo.js} +58 -16
- package/dist/chunks/LpConfirmHost-CDm0Wtpv.js +49 -0
- package/dist/chunks/LpContextMenu-DQw5dGfG.js +68 -0
- package/dist/chunks/LpDatePicker-Drirx1AK.js +191 -0
- package/dist/chunks/{LpDrawer-BZ6k3hvo.js → LpDrawer-bScx-KMO.js} +63 -26
- package/dist/chunks/{LpFileTree-_5vFBgaK.js → LpFileTree-CSI_5SK2.js} +23 -8
- package/dist/chunks/{LpFileTreeNode-BdcIYKIE.js → LpFileTreeNode-B4MiSQX2.js} +2 -2
- package/dist/chunks/LpFormField-CIk5qosh.js +87 -0
- package/dist/chunks/{LpInput-9EXWUM9B.js → LpInput-C0e8y8_d.js} +26 -11
- package/dist/chunks/{LpLightbox-2sYVMY-S.js → LpLightbox-Mr0W_6HK.js} +147 -60
- package/dist/chunks/{LpLink-DCND-zyu.js → LpLink-Krkjhe_y.js} +15 -6
- package/dist/chunks/{LpLogViewer-CaRy5MeS.js → LpLogViewer-YBOaFnc_.js} +68 -34
- package/dist/chunks/{LpMapPicker-ul4oYno6.js → LpMapPicker-NUzS9e37.js} +38 -13
- package/dist/chunks/{LpMediaGallery-FF-NquIo.js → LpMediaGallery-DfJmMW0I.js} +6 -3
- package/dist/chunks/{LpModal-Bt0pQCI_.js → LpModal-DPwGKBPv.js} +49 -26
- package/dist/chunks/{LpModalNav-YaifHrXC.js → LpModalNav-DPg5H9f3.js} +9 -6
- package/dist/chunks/{LpNotificationBell-DyGGsMAM.js → LpNotificationBell-t5yn-siX.js} +58 -24
- package/dist/chunks/{LpNumberField-CWuX08iX.js → LpNumberField-DWnQKktS.js} +20 -7
- package/dist/chunks/{LpNumberFlow-amWYaeuA.js → LpNumberFlow-z4WPZcZu.js} +22 -12
- package/dist/chunks/{LpOtpInput-y2v-pmiN.js → LpOtpInput-CziPF3Oq.js} +37 -8
- package/dist/chunks/{LpPagination-5FxjmmB5.js → LpPagination-DFngX7Xo.js} +30 -19
- package/dist/chunks/{LpPasswordInput--sjYCkLS.js → LpPasswordInput-CWVDuBJ5.js} +10 -7
- package/dist/chunks/{LpPhoneInput-BDSKVl_z.js → LpPhoneInput-CD-ZTeSd.js} +57 -33
- package/dist/chunks/{LpPie-D6OnzwlJ.js → LpPie-BLco31Nx.js} +78 -21
- package/dist/chunks/{LpPopover-8268UmlC.js → LpPopover-p_e_shN3.js} +4 -2
- package/dist/chunks/{LpProgress-Btq5W4Ut.js → LpProgress-CBU1iI69.js} +5 -4
- package/dist/chunks/{LpRadioGroup-xPIuVDO_.js → LpRadioGroup-DmEW0l78.js} +9 -2
- package/dist/chunks/{LpSegmented-fV0Sk92p.js → LpSegmented-Dejd7cIx.js} +7 -3
- package/dist/chunks/{LpSelect-ANIVtrpM.js → LpSelect-DrRD9I7L.js} +40 -18
- package/dist/chunks/{LpSidebar-ClBUwoEz.js → LpSidebar-BgwUNWpJ.js} +30 -22
- package/dist/chunks/{LpSidebarNav-llOcs_Fn.js → LpSidebarNav-Bqxz8aWT.js} +14 -9
- package/dist/chunks/{LpSkeleton-CTI-vBgW.js → LpSkeleton-BB6XIV-w.js} +1 -1
- package/dist/chunks/{LpSlider-BwNIBkAK.js → LpSlider-Cuzmrd7p.js} +7 -2
- package/dist/chunks/{LpSparkline-C6xQ2dwv.js → LpSparkline-CB80N8SJ.js} +11 -4
- package/dist/chunks/{LpStat-CQaW8R--.js → LpStat-dXtyrdX9.js} +1 -1
- package/dist/chunks/{LpSwitch-Blizvqyt.js → LpSwitch-B1aLKulj.js} +40 -26
- package/dist/chunks/{LpTableOfContents-CjvxPMpU.js → LpTableOfContents-BUcAfGPQ.js} +36 -41
- package/dist/chunks/{LpTabs-Cefe_lys.js → LpTabs-_qMVaZJ6.js} +19 -5
- package/dist/chunks/LpTextarea-yP8hGedR.js +77 -0
- package/dist/chunks/LpThemeProvider-Wjm7Tuit.js +35 -0
- package/dist/chunks/LpThemeSwitcher-CKLc10KZ.js +169 -0
- package/dist/chunks/{LpTilt-DuyKbpkA.js → LpTilt-B7KHX1zH.js} +2 -2
- package/dist/chunks/{LpTimeField-K6nAGboX.js → LpTimeField-C5HRgS5H.js} +13 -7
- package/dist/chunks/{LpToaster-gDB1EaU3.js → LpToaster--oT6lfhL.js} +57 -28
- package/dist/chunks/{LpTooltip-hCLPAqMG.js → LpTooltip-CBdzeKNf.js} +13 -6
- package/dist/chunks/LpTooltipProvider-CftjV7Xc.js +25 -0
- package/dist/chunks/{LpTopologyCanvas-Cm1L39uL.js → LpTopologyCanvas-DocsLal3.js} +6 -1
- package/dist/chunks/{LpUptimeBar-DvAMno0S.js → LpUptimeBar-DLtxOMRy.js} +43 -14
- package/dist/chunks/{LpThemeSwitcher-Cue-myST.js → useTheme-C8JHUlPM.js} +173 -215
- package/dist/component-names.d.ts +1 -1
- package/dist/components/ContextMenuItems.vue.d.ts +8 -0
- package/dist/components/ContextMenuItems.vue.js +4 -0
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.d.ts +4 -0
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LpActionBar.vue.d.ts +3 -0
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.d.ts +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.d.ts +9 -0
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +10 -0
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.d.ts +31 -6
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.d.ts +3 -3
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.d.ts +2 -2
- package/dist/components/LpBreadcrumbs.vue.d.ts +13 -9
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.d.ts +35 -98
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.d.ts +31 -2
- package/dist/components/LpChart.vue.js +317 -95
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.d.ts +2 -0
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.d.ts +8 -3
- package/dist/components/LpCommandPalette.vue.js +86 -72
- package/dist/components/LpConfirmDialog.vue.d.ts +15 -3
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.d.ts +9 -0
- package/dist/components/LpConfirmHost.vue.js +4 -0
- package/dist/components/LpContextMenu.vue.d.ts +3 -5
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.d.ts +24 -6
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDrawer.vue.d.ts +10 -0
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +22 -6
- package/dist/components/LpFileTree.vue.d.ts +11 -2
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.d.ts +9 -0
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +92 -57
- package/dist/components/LpInput.vue.d.ts +3 -3
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.vue.d.ts +17 -0
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLink.vue.d.ts +11 -11
- package/dist/components/LpLink.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.d.ts +20 -2
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.d.ts +4 -4
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.d.ts +16 -6
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.d.ts +0 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.d.ts +11 -2
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.d.ts +2 -0
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpNumberFlow.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPagination.vue.d.ts +2 -0
- package/dist/components/LpPagination.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.d.ts +21 -2
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPopover.vue.d.ts +2 -0
- package/dist/components/LpPopover.vue.js +1 -1
- package/dist/components/LpProgress.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpSection.vue.d.ts +1 -1
- package/dist/components/LpSegmented.vue.d.ts +5 -0
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.d.ts +1 -0
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.d.ts +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +11 -8
- package/dist/components/LpSidebar.vue.d.ts +6 -2
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSkeleton.vue.js +1 -1
- package/dist/components/LpSlider.vue.js +1 -1
- package/dist/components/LpSparkline.vue.d.ts +1 -0
- package/dist/components/LpSparkline.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.d.ts +23 -1
- package/dist/components/LpTable.vue.js +74 -36
- package/dist/components/LpTableOfContents.vue.d.ts +4 -2
- package/dist/components/LpTableOfContents.vue.js +1 -1
- package/dist/components/LpTabs.vue.d.ts +2 -0
- package/dist/components/LpTabs.vue.js +1 -1
- package/dist/components/LpTextarea.vue.d.ts +19 -6
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeProvider.vue.d.ts +22 -0
- package/dist/components/LpThemeProvider.vue.js +4 -0
- package/dist/components/LpThemeSwitcher.vue.d.ts +13 -0
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTilt.vue.js +1 -1
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.d.ts +6 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTooltip.vue.d.ts +1 -2
- package/dist/components/LpTooltip.vue.js +1 -1
- package/dist/components/LpTooltipProvider.vue.d.ts +22 -0
- package/dist/components/LpTooltipProvider.vue.js +4 -0
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.d.ts +4 -0
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/chart.d.ts +32 -1
- package/dist/components/chart.js +39 -4
- package/dist/components/codeHighlight.d.ts +6 -0
- package/dist/components/codeHighlight.js +92 -20
- package/dist/components/color.d.ts +1 -1
- package/dist/components/color.js +20 -9
- package/dist/components/confirm.d.ts +25 -0
- package/dist/components/confirm.js +26 -0
- package/dist/components/countries.d.ts +6 -0
- package/dist/components/countries.js +7 -0
- package/dist/components/fileTree.js +16 -7
- package/dist/components/imageCrop.d.ts +42 -0
- package/dist/components/imageCrop.js +47 -0
- package/dist/components/link.d.ts +12 -0
- package/dist/components/link.js +19 -0
- package/dist/components/modalDepth.d.ts +18 -2
- package/dist/components/modalDepth.js +17 -5
- package/dist/components/otp.d.ts +5 -0
- package/dist/components/otp.js +10 -0
- package/dist/components/sidebar.d.ts +7 -1
- package/dist/components/tableSort.d.ts +8 -0
- package/dist/components/tableSort.js +31 -0
- package/dist/composables/useField.d.ts +34 -0
- package/dist/composables/useField.js +45 -0
- package/dist/composables/useFormDraft.d.ts +10 -3
- package/dist/composables/useFormDraft.js +9 -14
- package/dist/composables/useHotkeys.d.ts +17 -1
- package/dist/composables/useHotkeys.js +55 -18
- package/dist/composables/useInputFilter.d.ts +17 -0
- package/dist/composables/useInputFilter.js +47 -10
- package/dist/composables/useLpConfig.d.ts +24 -0
- package/dist/composables/useLpConfig.js +44 -0
- package/dist/composables/useRovingFocus.js +7 -0
- package/dist/composables/useTilt.d.ts +2 -2
- package/dist/composables/useTilt.js +5 -6
- package/dist/composables/useToast.d.ts +20 -0
- package/dist/composables/useToast.js +28 -4
- package/dist/composables/useZoomPan.d.ts +3 -3
- package/dist/composables/useZoomPan.js +4 -4
- package/dist/index.d.ts +32 -2
- package/dist/index.js +184 -137
- package/dist/layout/tree.d.ts +2 -0
- package/dist/layout/tree.js +16 -1
- package/dist/layout/useLayout.d.ts +15 -0
- package/dist/layout/useLayout.js +41 -14
- package/dist/theme/useTheme.d.ts +32 -9
- package/package.json +8 -7
- package/src/component-names.ts +5 -7
- package/src/components/ContextMenuItems.vue +88 -0
- package/src/components/LayoutCanvas.vue +26 -6
- package/src/components/LayoutNode.vue +19 -2
- package/src/components/LpActionBar.vue +30 -7
- package/src/components/LpAddressInput.vue +57 -41
- package/src/components/LpAlert.vue +16 -3
- package/src/components/LpAppShell.vue +45 -12
- package/src/components/LpAutocomplete.vue +46 -10
- package/src/components/LpAvatar.vue +19 -5
- package/src/components/LpBreadcrumbs.vue +65 -41
- package/src/components/LpButton.vue +59 -13
- package/src/components/LpChart.vue +272 -28
- package/src/components/LpCheckbox.vue +7 -3
- package/src/components/LpCodeBlock.vue +50 -14
- package/src/components/LpColorPicker.vue +39 -9
- package/src/components/LpCommandPalette.vue +34 -13
- package/src/components/LpConfirmDialog.vue +68 -17
- package/src/components/LpConfirmHost.vue +59 -0
- package/src/components/LpContextMenu.vue +14 -115
- package/src/components/LpDatePicker.vue +99 -68
- package/src/components/LpDrawer.vue +56 -19
- package/src/components/LpDropzone.vue +21 -4
- package/src/components/LpFileTree.vue +33 -7
- package/src/components/LpFormField.vue +30 -7
- package/src/components/LpImageEditor.vue +96 -57
- package/src/components/LpInput.vue +18 -7
- package/src/components/LpLightbox.vue +140 -29
- package/src/components/LpLink.vue +24 -13
- package/src/components/LpLogViewer.vue +86 -17
- package/src/components/LpMapPicker.vue +36 -13
- package/src/components/LpMediaGallery.vue +8 -2
- package/src/components/LpModal.vue +53 -27
- package/src/components/LpModalNav.vue +5 -2
- package/src/components/LpNotificationBell.vue +63 -17
- package/src/components/LpNumberField.vue +21 -6
- package/src/components/LpNumberFlow.vue +26 -10
- package/src/components/LpOtpInput.vue +43 -8
- package/src/components/LpPagination.vue +23 -7
- package/src/components/LpPasswordInput.vue +4 -1
- package/src/components/LpPhoneInput.vue +53 -27
- package/src/components/LpPie.vue +94 -15
- package/src/components/LpPopover.vue +3 -0
- package/src/components/LpProgress.vue +5 -3
- package/src/components/LpRadioGroup.vue +9 -2
- package/src/components/LpSegmented.vue +12 -2
- package/src/components/LpSelect.vue +0 -0
- package/src/components/LpShortcutsDialog.vue +8 -3
- package/src/components/LpSidebar.vue +14 -9
- package/src/components/LpSidebarNav.vue +17 -5
- package/src/components/LpSkeleton.vue +4 -1
- package/src/components/LpSlider.vue +7 -1
- package/src/components/LpSparkline.vue +11 -3
- package/src/components/LpSwitch.vue +30 -7
- package/src/components/LpTable.vue +91 -32
- package/src/components/LpTableOfContents.vue +50 -32
- package/src/components/LpTabs.vue +23 -6
- package/src/components/LpTextarea.vue +44 -6
- package/src/components/LpThemeProvider.vue +41 -0
- package/src/components/LpThemeSwitcher.vue +64 -17
- package/src/components/LpTilt.vue +2 -2
- package/src/components/LpTimeField.vue +14 -3
- package/src/components/LpToaster.vue +66 -26
- package/src/components/LpTooltip.vue +22 -5
- package/src/components/LpTooltipProvider.vue +24 -0
- package/src/components/LpTopologyCanvas.vue +12 -1
- package/src/components/LpUptimeBar.vue +46 -8
- package/src/components/chart.ts +77 -5
- package/src/components/codeHighlight.ts +111 -15
- package/src/components/color.ts +30 -9
- package/src/components/confirm.ts +58 -0
- package/src/components/countries.ts +12 -0
- package/src/components/fileTree.ts +19 -7
- package/src/components/imageCrop.ts +107 -0
- package/src/components/link.ts +34 -0
- package/src/components/modalDepth.ts +48 -6
- package/src/components/otp.ts +16 -0
- package/src/components/sidebar.ts +7 -1
- package/src/components/tableSort.ts +37 -0
- package/src/composables/useField.ts +79 -0
- package/src/composables/useFormDraft.ts +25 -20
- package/src/composables/useHotkeys.ts +89 -18
- package/src/composables/useInputFilter.ts +77 -14
- package/src/composables/useLpConfig.ts +87 -0
- package/src/composables/useRovingFocus.ts +11 -0
- package/src/composables/useTilt.ts +5 -6
- package/src/composables/useToast.ts +56 -4
- package/src/composables/useZoomPan.ts +6 -6
- package/src/index.ts +37 -2
- package/src/layout/tree.ts +30 -0
- package/src/layout/useLayout.ts +68 -18
- package/src/nuxt.ts +59 -17
- package/src/runtime/config.plugin.ts +14 -0
- package/src/runtime/theme.plugin.ts +42 -22
- package/src/theme/useTheme.ts +206 -100
- package/dist/chunks/LpBreadcrumbs-p4jHe_V-.js +0 -62
- package/dist/chunks/LpContextMenu-CwW1QXe_.js +0 -217
- package/dist/chunks/LpDatePicker-CwOToxGq.js +0 -164
- package/dist/chunks/LpFormField-CazBc2-a.js +0 -62
- package/dist/chunks/LpTextarea-t7F6gv8E.js +0 -47
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import { computed, readonly, shallowRef
|
|
1
|
+
import { computed, readonly, shallowRef } from "vue";
|
|
2
2
|
import { prefersReducedMotion, easingToken } from "../composables/easing.js";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const NO_BACKDROP_ATTR = "data-lp-no-backdrop";
|
|
4
|
+
function isBrokenBackdropEngine(nav = navigator) {
|
|
5
|
+
const ua = nav.userAgent;
|
|
6
|
+
if (!/AppleWebKit/.test(ua)) return false;
|
|
7
|
+
if (/Chrome|Chromium|Edg\//.test(ua)) return false;
|
|
8
|
+
return !/Mac|iPhone|iPad|iPod/.test(nav.platform || "");
|
|
9
|
+
}
|
|
10
|
+
function detectBackdropFilter(root = document.documentElement) {
|
|
11
|
+
if (typeof navigator === "undefined") return true;
|
|
12
|
+
const usable = !isBrokenBackdropEngine();
|
|
13
|
+
root.toggleAttribute(NO_BACKDROP_ATTR, !usable);
|
|
14
|
+
return usable;
|
|
15
|
+
}
|
|
5
16
|
const sharedShape = { radiusControl: 8, radiusCard: 14, radiusPill: 9999 };
|
|
6
17
|
const sharedDensity = { spacingUnit: 4, controlSm: 32, controlMd: 38, controlLg: 44 };
|
|
7
18
|
const interFont = {
|
|
@@ -274,19 +285,6 @@ const nord = {
|
|
|
274
285
|
font: { ...interFont }
|
|
275
286
|
};
|
|
276
287
|
const presets = { dark, light, lime, leavepulse, rose, amber, violet, nord };
|
|
277
|
-
const NO_BACKDROP_ATTR = "data-lp-no-backdrop";
|
|
278
|
-
function isBrokenBackdropEngine(nav = navigator) {
|
|
279
|
-
const ua = nav.userAgent;
|
|
280
|
-
if (!/AppleWebKit/.test(ua)) return false;
|
|
281
|
-
if (/Chrome|Chromium|Edg\//.test(ua)) return false;
|
|
282
|
-
return !/Mac|iPhone|iPad|iPod/.test(nav.platform || "");
|
|
283
|
-
}
|
|
284
|
-
function detectBackdropFilter(root = document.documentElement) {
|
|
285
|
-
if (typeof navigator === "undefined") return true;
|
|
286
|
-
const usable = !isBrokenBackdropEngine();
|
|
287
|
-
root.toggleAttribute(NO_BACKDROP_ATTR, !usable);
|
|
288
|
-
return usable;
|
|
289
|
-
}
|
|
290
288
|
const COLOR_VARS = {
|
|
291
289
|
surface: "--color-surface",
|
|
292
290
|
surfaceRaised: "--color-surface-raised",
|
|
@@ -344,42 +342,103 @@ const DEFAULT_SURFACE = {
|
|
|
344
342
|
};
|
|
345
343
|
const CACHE_KEY = "leavepulse-ui-theme";
|
|
346
344
|
const _current = shallowRef(null);
|
|
345
|
+
const _system = shallowRef(null);
|
|
347
346
|
let _hydrated = false;
|
|
348
347
|
let _fallback = null;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
348
|
+
const DARK_QUERY = "(prefers-color-scheme: dark)";
|
|
349
|
+
let _media = null;
|
|
350
|
+
function prefersDarkScheme() {
|
|
351
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return true;
|
|
352
|
+
return window.matchMedia(DARK_QUERY).matches || !window.matchMedia("(prefers-color-scheme: light)").matches;
|
|
353
|
+
}
|
|
354
|
+
function pick(system, dark2 = prefersDarkScheme()) {
|
|
355
|
+
return dark2 ? system.dark : system.light;
|
|
356
|
+
}
|
|
357
|
+
function onSchemeChange(event) {
|
|
358
|
+
const system = _system.value;
|
|
359
|
+
if (!system) return;
|
|
360
|
+
const theme = pick(system, event.matches);
|
|
361
|
+
applyTheme(theme);
|
|
362
|
+
_current.value = theme;
|
|
363
|
+
}
|
|
364
|
+
function followSystem(system) {
|
|
365
|
+
_system.value = system;
|
|
366
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
|
|
367
|
+
if (system && !_media) {
|
|
368
|
+
_media = window.matchMedia(DARK_QUERY);
|
|
369
|
+
_media.addEventListener("change", onSchemeChange);
|
|
370
|
+
} else if (!system && _media) {
|
|
371
|
+
_media.removeEventListener("change", onSchemeChange);
|
|
372
|
+
_media = null;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
function readCache() {
|
|
352
376
|
try {
|
|
353
377
|
const cached = localStorage.getItem(CACHE_KEY);
|
|
354
|
-
if (cached)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
return
|
|
378
|
+
if (!cached) return null;
|
|
379
|
+
const raw = JSON.parse(cached);
|
|
380
|
+
if (raw && typeof raw === "object" && raw.system) {
|
|
381
|
+
return {
|
|
382
|
+
system: {
|
|
383
|
+
light: parseTheme(JSON.stringify(raw.system.light)),
|
|
384
|
+
dark: parseTheme(JSON.stringify(raw.system.dark))
|
|
385
|
+
}
|
|
386
|
+
};
|
|
358
387
|
}
|
|
388
|
+
return { theme: parseTheme(cached) };
|
|
359
389
|
} catch {
|
|
390
|
+
return null;
|
|
360
391
|
}
|
|
361
|
-
|
|
392
|
+
}
|
|
393
|
+
function hydrateOnce() {
|
|
394
|
+
if (_hydrated || typeof window === "undefined") return;
|
|
395
|
+
_hydrated = true;
|
|
396
|
+
const cached = readCache();
|
|
397
|
+
if (cached?.system) {
|
|
398
|
+
followSystem(cached.system);
|
|
399
|
+
_current.value = pick(cached.system);
|
|
400
|
+
writeThemeCookie(systemCookieValue(cached.system));
|
|
401
|
+
} else if (cached?.theme) {
|
|
402
|
+
_current.value = cached.theme;
|
|
403
|
+
writeThemeCookie(cached.theme.name);
|
|
404
|
+
} else if (_fallback) {
|
|
362
405
|
_current.value = _fallback;
|
|
363
|
-
|
|
406
|
+
} else {
|
|
407
|
+
return;
|
|
364
408
|
}
|
|
409
|
+
applyTheme(_current.value);
|
|
365
410
|
}
|
|
366
|
-
|
|
411
|
+
const DERIVED_VARS = [
|
|
412
|
+
["--color-surface-overlay", "color-mix(in srgb, var(--color-surface-raised) 94%, transparent)"],
|
|
413
|
+
["--color-node-compute", "var(--color-action)"],
|
|
414
|
+
["--color-node-transit", "var(--color-accent)"],
|
|
415
|
+
["--color-node-edge", "var(--color-brand)"],
|
|
416
|
+
["--color-node-unknown", "var(--color-line-strong)"]
|
|
417
|
+
];
|
|
418
|
+
function themeEntries(input) {
|
|
419
|
+
const theme = normalizeTheme(input);
|
|
420
|
+
const out = [];
|
|
367
421
|
for (const [key, cssVar] of Object.entries(COLOR_VARS)) {
|
|
368
|
-
|
|
422
|
+
out.push([cssVar, theme.colors[key]]);
|
|
369
423
|
}
|
|
370
424
|
for (const [key, cssVar] of Object.entries(SHAPE_VARS)) {
|
|
371
|
-
|
|
425
|
+
out.push([cssVar, `${theme.shape[key]}px`]);
|
|
372
426
|
}
|
|
373
427
|
for (const [key, cssVar] of Object.entries(DENSITY_VARS)) {
|
|
374
|
-
|
|
428
|
+
out.push([cssVar, `${theme.density[key]}px`]);
|
|
375
429
|
}
|
|
376
430
|
for (const [key, cssVar] of Object.entries(FONT_VARS)) {
|
|
377
|
-
|
|
431
|
+
out.push([cssVar, theme.font[key]]);
|
|
378
432
|
}
|
|
379
433
|
const surface = theme.surface ?? DEFAULT_SURFACE;
|
|
380
434
|
for (const [key, cssVar] of Object.entries(SURFACE_VARS)) {
|
|
381
|
-
|
|
435
|
+
out.push([cssVar, surface[key]]);
|
|
382
436
|
}
|
|
437
|
+
for (const [cssVar, value] of DERIVED_VARS) out.push([cssVar, value]);
|
|
438
|
+
return out;
|
|
439
|
+
}
|
|
440
|
+
function applyTheme(theme, root = document.documentElement) {
|
|
441
|
+
for (const [cssVar, value] of themeEntries(theme)) root.style.setProperty(cssVar, value);
|
|
383
442
|
root.dataset.themeMode = theme.mode;
|
|
384
443
|
root.style.colorScheme = theme.mode;
|
|
385
444
|
detectBackdropFilter(root);
|
|
@@ -420,47 +479,36 @@ function serializeTheme(theme) {
|
|
|
420
479
|
return JSON.stringify(theme);
|
|
421
480
|
}
|
|
422
481
|
function themeToCssVars(theme) {
|
|
423
|
-
|
|
424
|
-
for (const [key, cssVar] of Object.entries(COLOR_VARS)) {
|
|
425
|
-
decls.push(`${cssVar}: ${theme.colors[key]}`);
|
|
426
|
-
}
|
|
427
|
-
for (const [key, cssVar] of Object.entries(SHAPE_VARS)) {
|
|
428
|
-
decls.push(`${cssVar}: ${theme.shape[key]}px`);
|
|
429
|
-
}
|
|
430
|
-
for (const [key, cssVar] of Object.entries(DENSITY_VARS)) {
|
|
431
|
-
decls.push(`${cssVar}: ${theme.density[key]}px`);
|
|
432
|
-
}
|
|
433
|
-
for (const [key, cssVar] of Object.entries(FONT_VARS)) {
|
|
434
|
-
decls.push(`${cssVar}: ${theme.font[key]}`);
|
|
435
|
-
}
|
|
436
|
-
const surface = theme.surface ?? DEFAULT_SURFACE;
|
|
437
|
-
for (const [key, cssVar] of Object.entries(SURFACE_VARS)) {
|
|
438
|
-
decls.push(`${cssVar}: ${surface[key]}`);
|
|
439
|
-
}
|
|
440
|
-
return decls.join("; ");
|
|
482
|
+
return themeEntries(theme).map(([cssVar, value]) => `${cssVar}: ${value}`).join("; ");
|
|
441
483
|
}
|
|
442
484
|
function themeToCssRule(theme, selector = ":root") {
|
|
443
485
|
return `${selector} { color-scheme: ${theme.mode}; ${themeToCssVars(theme)}; }`;
|
|
444
486
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
487
|
+
function normalizeTheme(raw) {
|
|
488
|
+
const mode = raw.mode === "light" ? "light" : "dark";
|
|
489
|
+
const base = mode === "light" ? light : dark;
|
|
490
|
+
return {
|
|
491
|
+
name: typeof raw.name === "string" ? raw.name : base.name,
|
|
492
|
+
mode,
|
|
493
|
+
colors: { ...base.colors, ...raw.colors },
|
|
494
|
+
shape: { ...base.shape, ...raw.shape },
|
|
495
|
+
density: { ...base.density, ...raw.density },
|
|
496
|
+
font: { ...base.font, ...raw.font },
|
|
497
|
+
surface: raw.surface ? { ...DEFAULT_SURFACE, ...raw.surface } : void 0
|
|
498
|
+
};
|
|
499
|
+
}
|
|
449
500
|
function parseTheme(json) {
|
|
450
501
|
const raw = JSON.parse(json);
|
|
451
502
|
if (!raw || typeof raw !== "object" || !raw.colors || !raw.shape || !raw.density) {
|
|
452
503
|
throw new Error("Invalid theme: missing colors/shape/density");
|
|
453
504
|
}
|
|
454
|
-
return
|
|
505
|
+
return normalizeTheme(raw);
|
|
455
506
|
}
|
|
456
507
|
function bootstrapTheme(fallback) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
} catch {
|
|
462
|
-
}
|
|
463
|
-
applyTheme(theme);
|
|
508
|
+
const cached = typeof window === "undefined" ? null : readCache();
|
|
509
|
+
const theme = cached?.system ? pick(cached.system) : cached?.theme ?? fallback;
|
|
510
|
+
if (cached?.system) followSystem(cached.system);
|
|
511
|
+
if (typeof document !== "undefined") applyTheme(theme);
|
|
464
512
|
return theme;
|
|
465
513
|
}
|
|
466
514
|
function cacheTheme(theme) {
|
|
@@ -470,203 +518,113 @@ function cacheTheme(theme) {
|
|
|
470
518
|
}
|
|
471
519
|
writeThemeCookie(theme.name);
|
|
472
520
|
}
|
|
521
|
+
function cacheSystemThemes(system) {
|
|
522
|
+
try {
|
|
523
|
+
localStorage.setItem(CACHE_KEY, JSON.stringify({ system }));
|
|
524
|
+
} catch {
|
|
525
|
+
}
|
|
526
|
+
writeThemeCookie(systemCookieValue(system));
|
|
527
|
+
}
|
|
473
528
|
const THEME_COOKIE = "lp-theme";
|
|
529
|
+
const SYSTEM_PREFIX = "system:";
|
|
474
530
|
const COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
|
|
475
|
-
function
|
|
531
|
+
function systemCookieValue(system) {
|
|
532
|
+
return `${SYSTEM_PREFIX}${system.light.name}|${system.dark.name}`;
|
|
533
|
+
}
|
|
534
|
+
function writeThemeCookie(value) {
|
|
476
535
|
if (typeof document === "undefined") return;
|
|
477
|
-
document.cookie = `${THEME_COOKIE}=${encodeURIComponent(
|
|
536
|
+
document.cookie = `${THEME_COOKIE}=${encodeURIComponent(value)}; path=/; max-age=${COOKIE_MAX_AGE}; samesite=lax`;
|
|
537
|
+
}
|
|
538
|
+
function safeDecode(value) {
|
|
539
|
+
try {
|
|
540
|
+
return decodeURIComponent(value);
|
|
541
|
+
} catch {
|
|
542
|
+
return value;
|
|
543
|
+
}
|
|
478
544
|
}
|
|
479
|
-
function themeFromCookie(cookieValue, themes) {
|
|
545
|
+
function themeFromCookie(cookieValue, themes, options = {}) {
|
|
480
546
|
if (!cookieValue) return null;
|
|
481
|
-
const
|
|
482
|
-
|
|
547
|
+
const find = (name) => themes.find((theme) => theme.name === name) ?? null;
|
|
548
|
+
for (const value of [cookieValue, safeDecode(cookieValue)]) {
|
|
549
|
+
if (value.startsWith(SYSTEM_PREFIX)) {
|
|
550
|
+
const [lightName = "", darkName = ""] = value.slice(SYSTEM_PREFIX.length).split("|");
|
|
551
|
+
const wanted = options.prefersDark === false ? lightName : darkName;
|
|
552
|
+
const found2 = find(wanted);
|
|
553
|
+
if (found2) return found2;
|
|
554
|
+
continue;
|
|
555
|
+
}
|
|
556
|
+
const found = find(value);
|
|
557
|
+
if (found) return found;
|
|
558
|
+
}
|
|
559
|
+
return null;
|
|
483
560
|
}
|
|
484
561
|
function useTheme() {
|
|
485
562
|
hydrateOnce();
|
|
486
|
-
const
|
|
487
|
-
|
|
488
|
-
else applyThemeWithTransition(theme);
|
|
563
|
+
const commit = (theme) => {
|
|
564
|
+
followSystem(null);
|
|
489
565
|
cacheTheme(theme);
|
|
490
566
|
_current.value = theme;
|
|
491
567
|
};
|
|
492
568
|
return {
|
|
493
569
|
current: readonly(_current),
|
|
494
570
|
currentName: computed(() => _current.value?.name ?? ""),
|
|
495
|
-
|
|
571
|
+
system: computed(() => _system.value !== null),
|
|
572
|
+
setTheme: (theme, origin) => {
|
|
573
|
+
applyThemeWithTransition(theme, origin);
|
|
574
|
+
commit(theme);
|
|
575
|
+
},
|
|
576
|
+
setSystem: (themes, origin) => {
|
|
577
|
+
const theme = pick(themes);
|
|
578
|
+
applyThemeWithTransition(theme, origin);
|
|
579
|
+
followSystem(themes);
|
|
580
|
+
cacheSystemThemes(themes);
|
|
581
|
+
_current.value = theme;
|
|
582
|
+
},
|
|
496
583
|
init: (fallback) => {
|
|
497
584
|
_fallback = fallback;
|
|
498
|
-
|
|
499
|
-
if (!_current.value)
|
|
500
|
-
_current.value = bootstrapTheme(fallback);
|
|
501
|
-
}
|
|
585
|
+
hydrateOnce();
|
|
586
|
+
if (!_current.value) _current.value = bootstrapTheme(fallback);
|
|
502
587
|
return _current.value;
|
|
503
588
|
},
|
|
504
589
|
apply: (theme) => {
|
|
505
590
|
applyTheme(theme);
|
|
506
|
-
|
|
507
|
-
_current.value = theme;
|
|
591
|
+
commit(theme);
|
|
508
592
|
},
|
|
509
|
-
/**
|
|
510
|
-
* Apply + cache a theme with the circular reveal animation. Pass the click
|
|
511
|
-
* point (e.g. from a toggle's `event`) as `origin` so the circle grows from
|
|
512
|
-
* the button; omit it to reveal from the viewport centre.
|
|
513
|
-
*/
|
|
514
593
|
applyWithTransition: (theme, origin) => {
|
|
515
594
|
applyThemeWithTransition(theme, origin);
|
|
516
|
-
|
|
517
|
-
_current.value = theme;
|
|
595
|
+
commit(theme);
|
|
518
596
|
},
|
|
519
597
|
serialize: serializeTheme,
|
|
520
598
|
parse: parseTheme,
|
|
521
599
|
bootstrap: bootstrapTheme
|
|
522
600
|
};
|
|
523
601
|
}
|
|
524
|
-
const _hoisted_1 = ["aria-label", "title"];
|
|
525
|
-
const _hoisted_2 = {
|
|
526
|
-
key: 2,
|
|
527
|
-
class: "text-sm font-medium"
|
|
528
|
-
};
|
|
529
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
530
|
-
__name: "LpThemeSwitcher",
|
|
531
|
-
props: {
|
|
532
|
-
modelValue: {},
|
|
533
|
-
themes: {},
|
|
534
|
-
cycleThemes: {},
|
|
535
|
-
variant: { default: "swatch" },
|
|
536
|
-
showLabel: { type: Boolean },
|
|
537
|
-
default: {},
|
|
538
|
-
transition: { type: Boolean, default: true },
|
|
539
|
-
size: { default: "md" },
|
|
540
|
-
"aria-label": {}
|
|
541
|
-
},
|
|
542
|
-
emits: ["update:modelValue", "change"],
|
|
543
|
-
setup(__props, { emit: __emit }) {
|
|
544
|
-
const props = __props;
|
|
545
|
-
const emit = __emit;
|
|
546
|
-
const theme = useTheme();
|
|
547
|
-
const list = computed(
|
|
548
|
-
() => props.themes && props.themes.length ? props.themes : Object.values(presets)
|
|
549
|
-
);
|
|
550
|
-
const activeName = computed(
|
|
551
|
-
() => props.modelValue ?? (theme.currentName.value || list.value[0]?.name || "")
|
|
552
|
-
);
|
|
553
|
-
const active = computed(
|
|
554
|
-
() => list.value.find((t) => t.name === activeName.value) ?? list.value[0]
|
|
555
|
-
);
|
|
556
|
-
onMounted(() => {
|
|
557
|
-
if (props.default == null) return;
|
|
558
|
-
const fallback = typeof props.default === "string" ? list.value.find((t) => t.name === props.default) : props.default;
|
|
559
|
-
if (fallback) theme.init(fallback);
|
|
560
|
-
});
|
|
561
|
-
const SIZES = { sm: "size-7", md: "size-8", lg: "size-9" };
|
|
562
|
-
const ICON_SIZE = { sm: 15, md: 16, lg: 18 };
|
|
563
|
-
const wantsLabel = computed(() => props.showLabel || props.variant === "pill");
|
|
564
|
-
const bareIcon = computed(() => props.variant === "icon" && !wantsLabel.value);
|
|
565
|
-
function applyTheme2(t, ev) {
|
|
566
|
-
if (props.transition) {
|
|
567
|
-
theme.setTheme(t, ev ? { x: ev.clientX, y: ev.clientY } : void 0);
|
|
568
|
-
} else {
|
|
569
|
-
theme.apply(t);
|
|
570
|
-
}
|
|
571
|
-
emit("update:modelValue", t.name);
|
|
572
|
-
emit("change", t);
|
|
573
|
-
}
|
|
574
|
-
const cycleList = computed(() => {
|
|
575
|
-
if (!props.cycleThemes?.length) return list.value;
|
|
576
|
-
const resolved = props.cycleThemes.map(
|
|
577
|
-
(t) => typeof t === "string" ? list.value.find((x) => x.name === t) : t
|
|
578
|
-
).filter((t) => Boolean(t));
|
|
579
|
-
return resolved.length ? resolved : list.value;
|
|
580
|
-
});
|
|
581
|
-
function cycle(ev) {
|
|
582
|
-
const arr = cycleList.value;
|
|
583
|
-
if (!arr.length) return;
|
|
584
|
-
const i = arr.findIndex((t) => t.name === activeName.value);
|
|
585
|
-
const next = arr[(i + 1) % arr.length];
|
|
586
|
-
if (next) applyTheme2(next, ev);
|
|
587
|
-
}
|
|
588
|
-
const menu = computed(
|
|
589
|
-
() => list.value.map((t) => ({
|
|
590
|
-
label: t.name,
|
|
591
|
-
icon: t.name === activeName.value ? "lucide:check" : t.mode === "dark" ? "lucide:moon" : "lucide:sun",
|
|
592
|
-
onSelect: () => applyTheme2(t)
|
|
593
|
-
}))
|
|
594
|
-
);
|
|
595
|
-
const hydrated = ref(false);
|
|
596
|
-
onMounted(() => {
|
|
597
|
-
hydrated.value = true;
|
|
598
|
-
});
|
|
599
|
-
const labelName = computed(
|
|
600
|
-
() => hydrated.value ? activeName.value : list.value[0]?.name ?? ""
|
|
601
|
-
);
|
|
602
|
-
const triggerLabel = computed(
|
|
603
|
-
() => props["aria-label"] ?? `Theme: ${labelName.value}. Click to switch, right-click to choose.`
|
|
604
|
-
);
|
|
605
|
-
return (_ctx, _cache) => {
|
|
606
|
-
return openBlock(), createBlock(_sfc_main$1, { items: menu.value }, {
|
|
607
|
-
default: withCtx(() => [
|
|
608
|
-
createElementVNode("button", {
|
|
609
|
-
type: "button",
|
|
610
|
-
"aria-label": triggerLabel.value,
|
|
611
|
-
title: triggerLabel.value,
|
|
612
|
-
class: normalizeClass([
|
|
613
|
-
"inline-flex items-center justify-center gap-2 rounded-control outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",
|
|
614
|
-
bareIcon.value ? [SIZES[__props.size], "text-muted hover:bg-surface-soft hover:text-ink"] : [
|
|
615
|
-
"border border-line bg-surface-raised px-1.5 text-ink hover:border-line-strong",
|
|
616
|
-
wantsLabel.value ? "py-1 pr-2.5" : ""
|
|
617
|
-
]
|
|
618
|
-
]),
|
|
619
|
-
onClick: cycle
|
|
620
|
-
}, [
|
|
621
|
-
__props.variant !== "icon" ? (openBlock(), createElementBlock("span", {
|
|
622
|
-
key: 0,
|
|
623
|
-
class: normalizeClass(["grid shrink-0 place-items-center rounded-control border border-line/60", SIZES[__props.size]]),
|
|
624
|
-
style: normalizeStyle({ background: active.value?.colors.surface })
|
|
625
|
-
}, [
|
|
626
|
-
createElementVNode("span", {
|
|
627
|
-
class: "size-3 rounded-full",
|
|
628
|
-
style: normalizeStyle({ background: active.value?.colors.brand })
|
|
629
|
-
}, null, 4)
|
|
630
|
-
], 6)) : (openBlock(), createElementBlock("span", {
|
|
631
|
-
key: 1,
|
|
632
|
-
class: normalizeClass(["grid shrink-0 place-items-center", SIZES[__props.size]])
|
|
633
|
-
}, [
|
|
634
|
-
createVNode(_sfc_main$2, {
|
|
635
|
-
name: active.value?.mode === "dark" ? "lucide:moon" : "lucide:sun",
|
|
636
|
-
size: ICON_SIZE[__props.size]
|
|
637
|
-
}, null, 8, ["name", "size"])
|
|
638
|
-
], 2)),
|
|
639
|
-
wantsLabel.value ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(labelName.value), 1)) : createCommentVNode("", true)
|
|
640
|
-
], 10, _hoisted_1)
|
|
641
|
-
]),
|
|
642
|
-
_: 1
|
|
643
|
-
}, 8, ["items"]);
|
|
644
|
-
};
|
|
645
|
-
}
|
|
646
|
-
});
|
|
647
602
|
export {
|
|
648
603
|
DEFAULT_SURFACE as D,
|
|
649
604
|
NO_BACKDROP_ATTR as N,
|
|
650
605
|
THEME_COOKIE as T,
|
|
651
|
-
_sfc_main as _,
|
|
652
606
|
parseTheme as a,
|
|
653
607
|
amber as b,
|
|
654
608
|
applyTheme as c,
|
|
655
609
|
applyThemeWithTransition as d,
|
|
656
610
|
bootstrapTheme as e,
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
611
|
+
cacheSystemThemes as f,
|
|
612
|
+
dark as g,
|
|
613
|
+
detectBackdropFilter as h,
|
|
660
614
|
isBrokenBackdropEngine as i,
|
|
661
|
-
|
|
662
|
-
|
|
615
|
+
light as j,
|
|
616
|
+
lime as k,
|
|
663
617
|
leavepulse as l,
|
|
664
|
-
|
|
618
|
+
normalizeTheme as m,
|
|
665
619
|
nord as n,
|
|
620
|
+
prefersDarkScheme as o,
|
|
666
621
|
presets as p,
|
|
622
|
+
themeFromCookie as q,
|
|
667
623
|
rose as r,
|
|
668
624
|
serializeTheme as s,
|
|
669
|
-
|
|
625
|
+
themeEntries as t,
|
|
670
626
|
useTheme as u,
|
|
671
|
-
|
|
627
|
+
themeToCssRule as v,
|
|
628
|
+
themeToCssVars as w,
|
|
629
|
+
violet as x
|
|
672
630
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "
|
|
1
|
+
export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LpActionBar", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpChart", "LpCheckbox", "LpCodeBlock", "LpColorPicker", "LpCommandPalette", "LpConfirmDialog", "LpConfirmHost", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpDropzone", "LpEmptyState", "LpFileTree", "LpFormField", "LpIcon", "LpImageEditor", "LpInfraNode", "LpInput", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpMediaGallery", "LpModal", "LpModalNav", "LpNotificationBell", "LpNumberField", "LpNumberFlow", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPie", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpRollingText", "LpScrollArea", "LpSection", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSkeleton", "LpSlider", "LpSparkline", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeProvider", "LpThemeSwitcher", "LpTilt", "LpTimeField", "LpToaster", "LpTooltip", "LpTooltipProvider", "LpTopologyCanvas", "LpUptimeBar"];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ContextMenuItemDef } from "./LpContextMenu.vue";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
items: ContextMenuItemDef[];
|
|
4
|
+
panel: string;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
|
@@ -21,6 +21,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
21
21
|
"remove-block": (leafId: string, index: number) => any;
|
|
22
22
|
"reorder-tab": (leafId: string, from: number, to: number) => any;
|
|
23
23
|
resize: (parent: Split, index: number, deltaFraction: number) => any;
|
|
24
|
+
"resize-start": () => any;
|
|
25
|
+
"resize-end": () => any;
|
|
24
26
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
25
27
|
onDragstart?: ((id: string) => any) | undefined;
|
|
26
28
|
onDragend?: (() => any) | undefined;
|
|
@@ -29,6 +31,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
29
31
|
"onRemove-block"?: ((leafId: string, index: number) => any) | undefined;
|
|
30
32
|
"onReorder-tab"?: ((leafId: string, from: number, to: number) => any) | undefined;
|
|
31
33
|
onResize?: ((parent: Split, index: number, deltaFraction: number) => any) | undefined;
|
|
34
|
+
"onResize-start"?: (() => any) | undefined;
|
|
35
|
+
"onResize-end"?: (() => any) | undefined;
|
|
32
36
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
37
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
34
38
|
declare const _default: typeof __VLS_export;
|
|
@@ -55,6 +55,9 @@ type __VLS_Props = {
|
|
|
55
55
|
maxWidth?: string;
|
|
56
56
|
/** Accessible name for the landmark. Falls back to `title`. */
|
|
57
57
|
ariaLabel?: string;
|
|
58
|
+
labels?: Partial<{
|
|
59
|
+
dismiss: string;
|
|
60
|
+
}>;
|
|
58
61
|
};
|
|
59
62
|
declare var __VLS_18: {}, __VLS_20: {};
|
|
60
63
|
type __VLS_Slots = {} & {
|
|
@@ -59,7 +59,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
59
59
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
60
60
|
map?: (props: {
|
|
61
61
|
point: LatLon | undefined;
|
|
62
|
-
setPoint: (next: LatLon) =>
|
|
62
|
+
setPoint: (next: LatLon) => void;
|
|
63
63
|
tiles: TileSource;
|
|
64
64
|
}) => any;
|
|
65
65
|
}>;
|
|
@@ -26,6 +26,14 @@ type __VLS_Props = {
|
|
|
26
26
|
variant?: AlertVariants["variant"];
|
|
27
27
|
title?: string;
|
|
28
28
|
icon?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Announce the alert to screen readers when it appears. "assertive"
|
|
31
|
+
* (role=alert) interrupts and is for something that needs action now,
|
|
32
|
+
* "polite" (role=status) waits its turn, false reads it in place. By
|
|
33
|
+
* default only `danger` interrupts: an info or success banner that is part
|
|
34
|
+
* of the page from the start should not be shouted on load.
|
|
35
|
+
*/
|
|
36
|
+
live?: "assertive" | "polite" | false;
|
|
29
37
|
};
|
|
30
38
|
declare var __VLS_6: {};
|
|
31
39
|
type __VLS_Slots = {} & {
|
|
@@ -33,6 +41,7 @@ type __VLS_Slots = {} & {
|
|
|
33
41
|
};
|
|
34
42
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
35
43
|
variant: "info" | "danger" | "success" | "warning";
|
|
44
|
+
live: "assertive" | "polite" | false;
|
|
36
45
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
37
46
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
38
47
|
declare const _default: typeof __VLS_export;
|
|
@@ -40,6 +40,11 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
40
40
|
fullBleed?: boolean;
|
|
41
41
|
/** Loading skeleton for the nav. */
|
|
42
42
|
loading?: boolean;
|
|
43
|
+
/** Text overrides: the burger's name and the skip link. */
|
|
44
|
+
labels?: Partial<{
|
|
45
|
+
openMenu: string;
|
|
46
|
+
skipToContent: string;
|
|
47
|
+
}>;
|
|
43
48
|
}, {
|
|
44
49
|
openDrawer: () => void;
|
|
45
50
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
@@ -85,6 +90,11 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
85
90
|
fullBleed?: boolean;
|
|
86
91
|
/** Loading skeleton for the nav. */
|
|
87
92
|
loading?: boolean;
|
|
93
|
+
/** Text overrides: the burger's name and the skip link. */
|
|
94
|
+
labels?: Partial<{
|
|
95
|
+
openMenu: string;
|
|
96
|
+
skipToContent: string;
|
|
97
|
+
}>;
|
|
88
98
|
}> & Readonly<{
|
|
89
99
|
onSelect?: ((item: SidebarItem) => any) | undefined;
|
|
90
100
|
"onUpdate:modelValue"?: ((id: string) => any) | undefined;
|