@leavepulse/ui 0.43.4 → 0.45.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 +121 -7
- package/dist/assets/{LpCommandPalette-B-0Est4Z.css → LpCommandPalette-nGNnzXqQ.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/{LpRollingText-CR1mb0Vt.css → LpRollingText-BGnE6q9j.css} +3 -0
- package/dist/assets/{LpShortcutsDialog-C6YoQ8_M.css → LpShortcutsDialog-CqYX3yy6.css} +28 -7
- package/dist/assets/{LpSkeleton-D7xU8IPV.css → LpSkeleton-H3Z5dEIk.css} +4 -1
- package/dist/assets/{LpTable-BgPLJOXa.css → LpTable-CPwWxTJS.css} +49 -9
- package/dist/chunks/ContextMenuItems-BtKU7074.js +124 -0
- package/dist/chunks/{LayoutCanvas-Dd20boUG.js → LayoutCanvas-BkaGXTjx.js} +26 -9
- package/dist/chunks/{LayoutNode-DGpZA9LX.js → LayoutNode-B3_9E1Xa.js} +28 -12
- package/dist/chunks/{LpActionBar-BlvtGB2P.js → LpActionBar-CnfFVIwC.js} +26 -12
- package/dist/chunks/{LpAddressInput-B-Zvxsn7.js → LpAddressInput-BwX8uo4_.js} +54 -49
- package/dist/chunks/{LpAlert-BAYHDSS1.js → LpAlert-B6ilrM7T.js} +16 -9
- package/dist/chunks/{LpAppShell-BGQVIY-3.js → LpAppShell-C53_RaGF.js} +53 -26
- package/dist/chunks/{LpAutocomplete-DExlIZe_.js → LpAutocomplete-C8IgSMsi.js} +52 -24
- package/dist/chunks/{LpAvatar-B3-xAOH3.js → LpAvatar-C1XStdOo.js} +19 -10
- package/dist/chunks/LpBreadcrumbs-CQJd73Gm.js +95 -0
- package/dist/chunks/{LpButton-5VXXCjwF.js → LpButton-CKSwC6Mu.js} +45 -15
- package/dist/chunks/{LpCalendar-B7Ko5RdR.js → LpCalendar-DrA2McTU.js} +1 -1
- package/dist/chunks/{LpCard-BhI1N_vL.js → LpCard-C2IvucmX.js} +1 -1
- package/dist/chunks/{LpCheckbox-CVccKYaH.js → LpCheckbox-Bkj13CbW.js} +8 -4
- package/dist/chunks/{LpCodeBlock-Bo0B4TFR.js → LpCodeBlock-ca7ANFyW.js} +49 -17
- package/dist/chunks/{LpColorPicker-BlXea7LM.js → LpColorPicker-zz4VGkG4.js} +75 -26
- package/dist/chunks/{LpConfirmDialog-Q-bxff8z.js → LpConfirmDialog-DCw5jR1t.js} +59 -17
- package/dist/chunks/LpConfirmHost-CbywMpMP.js +49 -0
- package/dist/chunks/LpContextMenu-BqkAYa9X.js +69 -0
- package/dist/chunks/LpDatePicker-DuusgT69.js +195 -0
- package/dist/chunks/LpDateRangePicker-DHeuznfC.js +208 -0
- package/dist/chunks/{LpDisclosure-ChQYmjlR.js → LpDisclosure-Cc23-JOT.js} +1 -1
- package/dist/chunks/{LpDrawer-BZ6k3hvo.js → LpDrawer-Dt4aB4Fr.js} +65 -28
- package/dist/chunks/{LpDropdownMenu-DJpoqRCb.js → LpDropdownMenu-DdJGQzPn.js} +2 -1
- package/dist/chunks/{LpEmptyState-Dsdqz1Wj.js → LpEmptyState-BJbZXC8D.js} +1 -1
- package/dist/chunks/LpFieldNotice-wtieLUTj.js +64 -0
- package/dist/chunks/{LpFileTree-_5vFBgaK.js → LpFileTree-CNurOvkV.js} +25 -10
- package/dist/chunks/{LpFileTreeNode-BdcIYKIE.js → LpFileTreeNode-D_qRRdsH.js} +3 -3
- package/dist/chunks/LpFormField-CtVYj6tO.js +101 -0
- package/dist/chunks/{LpIcon-CCnX5_2j.js → LpIcon-DYtaid0K.js} +20 -6
- package/dist/chunks/{LpInput-9EXWUM9B.js → LpInput-D-YGQbEv.js} +58 -20
- package/dist/chunks/{LpLightbox-2sYVMY-S.js → LpLightbox-DSDahF23.js} +148 -61
- package/dist/chunks/{LpLink-DCND-zyu.js → LpLink-Krkjhe_y.js} +15 -6
- package/dist/chunks/{LpLogViewer-CaRy5MeS.js → LpLogViewer-KypbgOyo.js} +300 -72
- package/dist/chunks/{LpMapPicker-ul4oYno6.js → LpMapPicker-Cc84LaM3.js} +39 -14
- package/dist/chunks/{LpMediaGallery-FF-NquIo.js → LpMediaGallery-YKr-cQPN.js} +7 -4
- package/dist/chunks/{LpModal-Bt0pQCI_.js → LpModal-DMMDQHAu.js} +52 -29
- package/dist/chunks/{LpModalNav-YaifHrXC.js → LpModalNav-BVPDyIup.js} +10 -7
- package/dist/chunks/{LpNotificationBell-DyGGsMAM.js → LpNotificationBell-CCwyJP5C.js} +79 -33
- package/dist/chunks/{LpNumberField-CWuX08iX.js → LpNumberField-B77O-z28.js} +21 -8
- 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-BcDlo3r_.js} +31 -20
- package/dist/chunks/{LpPasswordInput--sjYCkLS.js → LpPasswordInput-eKzQhbQP.js} +11 -8
- package/dist/chunks/LpPhoneInput-BCbrrhgE.js +336 -0
- package/dist/chunks/{LpPie-D6OnzwlJ.js → LpPie-BEJ2SfI6.js} +84 -28
- package/dist/chunks/{LpPopover-8268UmlC.js → LpPopover-DCKeqiVn.js} +5 -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/LpRangeCalendar-DZuaRV0W.js +331 -0
- package/dist/chunks/{LpRollingText-CM5gkSeF.js → LpRollingText-DB7upf-5.js} +1 -1
- package/dist/chunks/{LpScrollArea-D8xyKXcF.js → LpScrollArea-Bry1fdOM.js} +14 -2
- package/dist/chunks/{LpSection-aM6J_u51.js → LpSection-tKEH0jYf.js} +1 -1
- package/dist/chunks/{LpSegmented-fV0Sk92p.js → LpSegmented-C09EEam2.js} +8 -4
- package/dist/chunks/{LpSelect-ANIVtrpM.js → LpSelect-DNIL6MB9.js} +50 -31
- package/dist/chunks/{LpSidebar-ClBUwoEz.js → LpSidebar-CQNB0-yU.js} +30 -22
- package/dist/chunks/{LpSidebarNav-llOcs_Fn.js → LpSidebarNav-kx-LdqNU.js} +16 -11
- 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-B-7udBRP.js} +2 -2
- package/dist/chunks/{LpStepper-Bk-XaQYU.js → LpStepper-C7XiVKZj.js} +34 -19
- package/dist/chunks/{LpSwitch-Blizvqyt.js → LpSwitch-OrcOJX9m.js} +41 -27
- package/dist/chunks/LpTableFilter-BV8PpLM9.js +158 -0
- package/dist/chunks/{LpTableOfContents-CjvxPMpU.js → LpTableOfContents-BUcAfGPQ.js} +36 -41
- package/dist/chunks/{LpTabs-Cefe_lys.js → LpTabs-29iW1XOx.js} +20 -6
- package/dist/chunks/LpTagsInput-D1SuqbhB.js +300 -0
- package/dist/chunks/LpTextarea-uuScWo6-.js +77 -0
- package/dist/chunks/LpThemeProvider-Be4r2TQX.js +35 -0
- package/dist/chunks/LpThemeSwitcher-B4aVPbNC.js +166 -0
- package/dist/chunks/{LpTilt-DuyKbpkA.js → LpTilt-B7KHX1zH.js} +2 -2
- package/dist/chunks/{LpTimeField-K6nAGboX.js → LpTimeField-Cqe7fXnh.js} +14 -8
- package/dist/chunks/{LpToaster-gDB1EaU3.js → LpToaster-DpJvoCOh.js} +94 -31
- package/dist/chunks/{LpTooltip-hCLPAqMG.js → LpTooltip-CXVKcOXT.js} +14 -6
- package/dist/chunks/LpTooltipProvider-CftjV7Xc.js +25 -0
- package/dist/chunks/{LpTopologyCanvas-Cm1L39uL.js → LpTopologyCanvas-6ozNrQKh.js} +8 -2
- package/dist/chunks/{LpUptimeBar-DvAMno0S.js → LpUptimeBar-ugcv25xj.js} +44 -15
- package/dist/chunks/icons-CkA0njzm.js +43 -0
- package/dist/chunks/{LpThemeSwitcher-Cue-myST.js → useTheme-DJm1JSsY.js} +215 -260
- 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/LpCalendar.vue.js +1 -1
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.d.ts +47 -3
- package/dist/components/LpChart.vue.js +377 -97
- 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.d.ts +2 -2
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.d.ts +14 -3
- package/dist/components/LpCommandPalette.vue.js +142 -77
- 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/LpDateRangePicker.vue.d.ts +60 -0
- package/dist/components/LpDateRangePicker.vue.js +4 -0
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDrawer.vue.d.ts +10 -0
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +23 -7
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.d.ts +8 -0
- package/dist/components/LpFieldNotice.vue.js +4 -0
- 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 +13 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpIcon.vue.d.ts +0 -1
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +93 -58
- package/dist/components/LpInput.vue.d.ts +22 -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 +72 -3
- 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.d.ts +13 -0
- 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.d.ts +1 -1
- package/dist/components/LpProgress.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.d.ts +51 -0
- package/dist/components/LpRangeCalendar.vue.js +4 -0
- package/dist/components/LpRollingText.vue.d.ts +1 -1
- package/dist/components/LpRollingText.vue.js +1 -1
- package/dist/components/LpScrollArea.vue.d.ts +2 -2
- package/dist/components/LpScrollArea.vue.js +1 -1
- package/dist/components/LpSection.vue.d.ts +1 -1
- package/dist/components/LpSection.vue.js +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 +7 -1
- package/dist/components/LpShortcutsDialog.vue.js +60 -15
- 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/LpStepper.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.d.ts +107 -3
- package/dist/components/LpTable.vue.js +540 -128
- package/dist/components/LpTableFilter.vue.d.ts +31 -0
- package/dist/components/LpTableFilter.vue.js +4 -0
- 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/LpTagsInput.vue.d.ts +77 -0
- package/dist/components/LpTagsInput.vue.js +4 -0
- 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 +15 -2
- 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 +42 -6
- 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/commandSearch.js +3 -0
- 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/dateRange.d.ts +43 -0
- package/dist/components/dateRange.js +76 -0
- package/dist/components/exportData.d.ts +58 -0
- package/dist/components/exportData.js +165 -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/logSearch.d.ts +18 -0
- package/dist/components/logSearch.js +36 -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/phone.d.ts +41 -0
- package/dist/components/phone.js +80 -0
- package/dist/components/sidebar.d.ts +7 -1
- package/dist/components/tableFilter.d.ts +36 -0
- package/dist/components/tableFilter.js +84 -0
- package/dist/components/tableSort.d.ts +8 -0
- package/dist/components/tableSort.js +31 -0
- package/dist/components/tags.d.ts +20 -0
- package/dist/components/tags.js +37 -0
- package/dist/composables/useField.d.ts +38 -0
- package/dist/composables/useField.js +45 -0
- package/dist/composables/useFieldNotice.d.ts +17 -0
- package/dist/composables/useFieldNotice.js +28 -0
- package/dist/composables/useForm.d.ts +53 -0
- package/dist/composables/useForm.js +207 -0
- package/dist/composables/useFormDraft.d.ts +10 -3
- package/dist/composables/useFormDraft.js +9 -14
- package/dist/composables/useHotkeys.d.ts +81 -5
- package/dist/composables/useHotkeys.js +223 -25
- package/dist/composables/useInputFilter.d.ts +17 -0
- package/dist/composables/useInputFilter.js +47 -10
- package/dist/composables/useInputMask.d.ts +59 -0
- package/dist/composables/useInputMask.js +170 -0
- package/dist/composables/useLpConfig.d.ts +24 -0
- package/dist/composables/useLpConfig.js +44 -0
- package/dist/composables/usePaintSelect.d.ts +22 -0
- package/dist/composables/usePaintSelect.js +169 -0
- package/dist/composables/useRovingFocus.js +7 -0
- package/dist/composables/useShift.js +7 -2
- 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/icons-all.d.ts +1 -0
- package/dist/icons-all.js +3 -0
- package/dist/icons.d.ts +14 -1
- package/dist/index.d.ts +60 -4
- package/dist/index.js +245 -141
- package/dist/kit-icons.d.ts +2 -0
- 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/backdrop.d.ts +12 -0
- package/dist/theme/presets.d.ts +0 -2
- package/dist/theme/useTheme.d.ts +32 -9
- package/package.json +18 -8
- package/src/component-names.ts +9 -7
- package/src/components/ContextMenuItems.vue +88 -0
- package/src/components/LayoutCanvas.vue +26 -6
- package/src/components/LayoutNode.vue +30 -4
- package/src/components/LpActionBar.vue +31 -8
- 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 +47 -10
- package/src/components/LpAvatar.vue +20 -6
- package/src/components/LpBreadcrumbs.vue +65 -41
- package/src/components/LpButton.vue +60 -14
- package/src/components/LpChart.vue +351 -28
- package/src/components/LpCheckbox.vue +7 -3
- package/src/components/LpCodeBlock.vue +50 -14
- package/src/components/LpColorPicker.vue +73 -10
- package/src/components/LpCommandPalette.vue +115 -20
- package/src/components/LpConfirmDialog.vue +68 -17
- package/src/components/LpConfirmHost.vue +59 -0
- package/src/components/LpContextMenu.vue +15 -116
- package/src/components/LpDatePicker.vue +104 -68
- package/src/components/LpDateRangePicker.vue +224 -0
- package/src/components/LpDrawer.vue +56 -19
- package/src/components/LpDropdownMenu.vue +1 -0
- package/src/components/LpDropzone.vue +21 -4
- package/src/components/LpFieldNotice.vue +65 -0
- package/src/components/LpFileTree.vue +33 -7
- package/src/components/LpFormField.vue +59 -7
- package/src/components/LpIcon.vue +22 -4
- package/src/components/LpImageEditor.vue +96 -57
- package/src/components/LpInput.vue +62 -11
- package/src/components/LpLightbox.vue +140 -29
- package/src/components/LpLink.vue +24 -13
- package/src/components/LpLogViewer.vue +311 -39
- package/src/components/LpMapPicker.vue +36 -13
- package/src/components/LpMediaGallery.vue +8 -2
- package/src/components/LpModal.vue +54 -28
- package/src/components/LpModalNav.vue +5 -2
- package/src/components/LpNotificationBell.vue +77 -23
- 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 +224 -39
- package/src/components/LpPie.vue +102 -20
- package/src/components/LpPopover.vue +4 -0
- package/src/components/LpProgress.vue +5 -3
- package/src/components/LpRadioGroup.vue +9 -2
- package/src/components/LpRangeCalendar.vue +365 -0
- package/src/components/LpRollingText.vue +3 -0
- package/src/components/LpScrollArea.vue +22 -2
- package/src/components/LpSegmented.vue +12 -2
- package/src/components/LpSelect.vue +0 -0
- package/src/components/LpShortcutsDialog.vue +83 -9
- 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/LpStepper.vue +23 -10
- package/src/components/LpSwitch.vue +31 -8
- package/src/components/LpTable.vue +668 -90
- package/src/components/LpTableFilter.vue +175 -0
- package/src/components/LpTableOfContents.vue +50 -32
- package/src/components/LpTabs.vue +23 -6
- package/src/components/LpTagsInput.vue +364 -0
- package/src/components/LpTextarea.vue +44 -6
- package/src/components/LpThemeProvider.vue +41 -0
- package/src/components/LpThemeSwitcher.vue +76 -33
- package/src/components/LpTilt.vue +2 -2
- package/src/components/LpTimeField.vue +14 -3
- package/src/components/LpToaster.vue +115 -27
- package/src/components/LpTooltip.vue +29 -5
- package/src/components/LpTooltipProvider.vue +24 -0
- package/src/components/LpTopologyCanvas.vue +19 -2
- package/src/components/LpUptimeBar.vue +46 -8
- package/src/components/chart.ts +82 -8
- package/src/components/codeHighlight.ts +111 -15
- package/src/components/color.ts +30 -9
- package/src/components/commandSearch.ts +6 -0
- package/src/components/confirm.ts +58 -0
- package/src/components/countries.ts +12 -0
- package/src/components/dateRange.ts +134 -0
- package/src/components/exportData.ts +228 -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/logSearch.ts +46 -0
- package/src/components/modalDepth.ts +48 -6
- package/src/components/otp.ts +16 -0
- package/src/components/phone.ts +140 -0
- package/src/components/sidebar.ts +7 -1
- package/src/components/tableFilter.ts +122 -0
- package/src/components/tableSort.ts +37 -0
- package/src/components/tags.ts +62 -0
- package/src/composables/useField.ts +83 -0
- package/src/composables/useFieldNotice.ts +59 -0
- package/src/composables/useForm.ts +314 -0
- package/src/composables/useFormDraft.ts +25 -20
- package/src/composables/useHotkeys.ts +355 -28
- package/src/composables/useInputFilter.ts +77 -14
- package/src/composables/useInputMask.ts +254 -0
- package/src/composables/useLpConfig.ts +87 -0
- package/src/composables/usePaintSelect.ts +243 -0
- package/src/composables/useRovingFocus.ts +11 -0
- package/src/composables/useShift.ts +13 -2
- package/src/composables/useTilt.ts +5 -6
- package/src/composables/useToast.ts +56 -4
- package/src/composables/useZoomPan.ts +6 -6
- package/src/iconSubset.d.mts +10 -0
- package/src/iconSubset.mjs +51 -0
- package/src/icons-all.ts +10 -0
- package/src/icons.ts +59 -8
- package/src/index.ts +73 -4
- package/src/kit-icons.ts +5 -0
- package/src/layout/tree.ts +30 -0
- package/src/layout/useLayout.ts +68 -18
- package/src/nuxt.ts +87 -17
- package/src/runtime/config.plugin.ts +14 -0
- package/src/runtime/theme.plugin.ts +43 -23
- package/src/theme/backdrop.ts +69 -0
- package/src/theme/presets.ts +6 -64
- package/src/theme/useTheme.ts +206 -100
- package/src/tokens/tokens.css +46 -0
- 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/LpPhoneInput-BDSKVl_z.js +0 -209
- package/dist/chunks/LpTextarea-t7F6gv8E.js +0 -47
|
@@ -21,6 +21,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
21
21
|
height?: string;
|
|
22
22
|
/** Auto-collapse a leading import/package block (no markers needed). */
|
|
23
23
|
foldImports?: boolean;
|
|
24
|
+
labels?: Partial<Record<"unlock" | "lock" | "copy" | "copied" | "imports" | "details" | "lines", string>>;
|
|
24
25
|
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
25
26
|
"update:modelValue": (value: string) => any;
|
|
26
27
|
"update:locked": (value: boolean) => any;
|
|
@@ -44,6 +45,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
|
|
|
44
45
|
height?: string;
|
|
45
46
|
/** Auto-collapse a leading import/package block (no markers needed). */
|
|
46
47
|
foldImports?: boolean;
|
|
48
|
+
labels?: Partial<Record<"unlock" | "lock" | "copy" | "copied" | "imports" | "details" | "lines", string>>;
|
|
47
49
|
}> & Readonly<{
|
|
48
50
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
49
51
|
"onUpdate:locked"?: ((value: boolean) => any) | undefined;
|
|
@@ -81,7 +81,7 @@ type __VLS_Props = {
|
|
|
81
81
|
*/
|
|
82
82
|
copyToast?: string | false;
|
|
83
83
|
};
|
|
84
|
-
declare var
|
|
84
|
+
declare var __VLS_61: {
|
|
85
85
|
color: string;
|
|
86
86
|
hsv: {
|
|
87
87
|
h: number;
|
|
@@ -91,7 +91,7 @@ declare var __VLS_56: {
|
|
|
91
91
|
};
|
|
92
92
|
};
|
|
93
93
|
type __VLS_Slots = {} & {
|
|
94
|
-
default?: (props: typeof
|
|
94
|
+
default?: (props: typeof __VLS_61) => any;
|
|
95
95
|
};
|
|
96
96
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
97
97
|
open: import("vue").Ref<boolean, boolean>;
|
|
@@ -39,7 +39,7 @@ export interface Command {
|
|
|
39
39
|
* `onSelect` still runs when the mode opens, so a command can both act and
|
|
40
40
|
* drill in.
|
|
41
41
|
*/
|
|
42
|
-
children?: Command[] | ((query: string) => Command[] | Promise<Command[]>);
|
|
42
|
+
children?: Command[] | ((query: string, signal: AbortSignal) => Command[] | Promise<Command[]>);
|
|
43
43
|
/** Placeholder while inside this command's mode. */
|
|
44
44
|
childPlaceholder?: string;
|
|
45
45
|
/**
|
|
@@ -72,7 +72,7 @@ export interface Command {
|
|
|
72
72
|
onSelect?: () => void;
|
|
73
73
|
}
|
|
74
74
|
/** Footer hints and the mode chip, spelled out so an app can translate them. */
|
|
75
|
-
export
|
|
75
|
+
export type PaletteLabels = {
|
|
76
76
|
navigate: string;
|
|
77
77
|
select: string;
|
|
78
78
|
close: string;
|
|
@@ -95,7 +95,12 @@ export interface PaletteLabels {
|
|
|
95
95
|
* text is never displayed. Kept so existing `labels` objects still type-check.
|
|
96
96
|
*/
|
|
97
97
|
noPreview?: string;
|
|
98
|
-
|
|
98
|
+
/** Accessible name and description of the dialog, read by screen readers only. */
|
|
99
|
+
title?: string;
|
|
100
|
+
description?: string;
|
|
101
|
+
/** The key hint printed beside the box and in the footer. */
|
|
102
|
+
esc?: string;
|
|
103
|
+
};
|
|
99
104
|
type __VLS_Props = {
|
|
100
105
|
open?: boolean;
|
|
101
106
|
commands: Command[];
|
|
@@ -124,6 +129,12 @@ type __VLS_Props = {
|
|
|
124
129
|
* so a stored history never resurrects a command that has gone away.
|
|
125
130
|
*/
|
|
126
131
|
recent?: string[];
|
|
132
|
+
/**
|
|
133
|
+
* Let the palette keep the history itself, in localStorage under this key:
|
|
134
|
+
* every top-level command run is remembered, newest first. Ignored while
|
|
135
|
+
* `recent` is bound, which stays the way to store it somewhere else.
|
|
136
|
+
*/
|
|
137
|
+
recentKey?: string;
|
|
127
138
|
/** How many recent commands to surface. */
|
|
128
139
|
recentLimit?: number;
|
|
129
140
|
/** Headings the palette adds itself. */
|
|
@@ -1,71 +1,75 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, ref, useId, computed, shallowRef, watch, useSlots, nextTick, onBeforeUnmount, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, withModifiers, createTextVNode, toDisplayString, createElementVNode, createElementBlock, Fragment, renderList, createCommentVNode, withDirectives, withKeys, vModelText, resolveDynamicComponent, Transition, renderSlot } from "vue";
|
|
2
2
|
import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription } from "reka-ui";
|
|
3
|
-
import { _ as _sfc_main$1 } from "../chunks/LpIcon-
|
|
4
|
-
import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-
|
|
3
|
+
import { _ as _sfc_main$1 } from "../chunks/LpIcon-DYtaid0K.js";
|
|
4
|
+
import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-Bry1fdOM.js";
|
|
5
5
|
import { useAsyncTask } from "../composables/useAsyncTask.js";
|
|
6
6
|
import { useGlass } from "../composables/useGlass.js";
|
|
7
7
|
import { useClipboard } from "../composables/useClipboard.js";
|
|
8
8
|
import { useHotkeys } from "../composables/useHotkeys.js";
|
|
9
9
|
import { useModalLayer } from "./modalDepth.js";
|
|
10
|
+
import { useLabels } from "../composables/useLpConfig.js";
|
|
10
11
|
import { parseCommandQuery, rankCommandItems } from "./commandSearch.js";
|
|
11
12
|
import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
|
|
12
|
-
import '../assets/LpCommandPalette-
|
|
13
|
+
import '../assets/LpCommandPalette-nGNnzXqQ.css';const _hoisted_1 = { class: "flex shrink-0 items-center gap-2.5 border-b border-line px-4" };
|
|
13
14
|
const _hoisted_2 = ["title", "onClick"];
|
|
14
15
|
const _hoisted_3 = ["aria-activedescendant", "placeholder", "onKeydown"];
|
|
15
|
-
const _hoisted_4 = {
|
|
16
|
+
const _hoisted_4 = { class: "shrink-0 rounded border border-line px-1.5 py-0.5 text-[10px] text-muted" };
|
|
17
|
+
const _hoisted_5 = {
|
|
16
18
|
key: 0,
|
|
17
19
|
class: "px-2 py-10 text-center text-sm text-muted"
|
|
18
20
|
};
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
21
|
+
const _hoisted_6 = ["aria-labelledby"];
|
|
22
|
+
const _hoisted_7 = ["id"];
|
|
23
|
+
const _hoisted_8 = { class: "min-w-0 flex-1" };
|
|
24
|
+
const _hoisted_9 = { class: "block truncate font-medium" };
|
|
25
|
+
const _hoisted_10 = {
|
|
24
26
|
key: 0,
|
|
25
27
|
class: "rounded-xs bg-brand/25 text-ink"
|
|
26
28
|
};
|
|
27
|
-
const
|
|
29
|
+
const _hoisted_11 = {
|
|
28
30
|
key: 0,
|
|
29
31
|
class: "mt-0.5 block truncate text-xs text-muted"
|
|
30
32
|
};
|
|
31
|
-
const
|
|
33
|
+
const _hoisted_12 = {
|
|
32
34
|
key: 0,
|
|
33
35
|
class: "rounded-xs bg-brand/20 text-ink"
|
|
34
36
|
};
|
|
35
|
-
const
|
|
37
|
+
const _hoisted_13 = {
|
|
36
38
|
key: 0,
|
|
37
39
|
class: "rounded-xs bg-brand/20 text-ink"
|
|
38
40
|
};
|
|
39
|
-
const
|
|
41
|
+
const _hoisted_14 = {
|
|
40
42
|
key: 1,
|
|
41
43
|
class: "shrink-0 text-xs text-muted"
|
|
42
44
|
};
|
|
43
|
-
const
|
|
45
|
+
const _hoisted_15 = {
|
|
44
46
|
key: 0,
|
|
45
47
|
class: "lp-cmd-pane hidden min-h-0 shrink-0 flex-col border-l border-line md:flex"
|
|
46
48
|
};
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
49
|
+
const _hoisted_16 = { class: "lp-cmd-para flex items-center gap-2 text-ink" };
|
|
50
|
+
const _hoisted_17 = { class: "min-w-0 text-base font-semibold" };
|
|
51
|
+
const _hoisted_18 = {
|
|
50
52
|
key: 0,
|
|
51
53
|
class: "lp-cmd-para mt-0.5 text-xs text-muted"
|
|
52
54
|
};
|
|
53
|
-
const
|
|
55
|
+
const _hoisted_19 = {
|
|
54
56
|
key: 0,
|
|
55
57
|
class: "rounded-xs bg-brand/25 text-ink"
|
|
56
58
|
};
|
|
57
|
-
const
|
|
58
|
-
const _hoisted_20 = { class: "flex items-center gap-1" };
|
|
59
|
+
const _hoisted_20 = { class: "flex shrink-0 items-center gap-4 border-t border-line px-4 py-2.5 text-[11px] text-muted [@media(hover:none)_and_(pointer:coarse)]:hidden" };
|
|
59
60
|
const _hoisted_21 = { class: "flex items-center gap-1" };
|
|
60
|
-
const _hoisted_22 = {
|
|
61
|
+
const _hoisted_22 = { class: "flex items-center gap-1" };
|
|
62
|
+
const _hoisted_23 = {
|
|
61
63
|
key: 0,
|
|
62
64
|
class: "flex items-center gap-1"
|
|
63
65
|
};
|
|
64
|
-
const
|
|
66
|
+
const _hoisted_24 = {
|
|
65
67
|
key: 1,
|
|
66
68
|
class: "flex items-center gap-1"
|
|
67
69
|
};
|
|
68
|
-
const
|
|
70
|
+
const _hoisted_25 = { class: "ml-auto flex items-center gap-1" };
|
|
71
|
+
const _hoisted_26 = { class: "rounded border border-line px-1 text-[10px]" };
|
|
72
|
+
const RECENT_KEEP = 20;
|
|
69
73
|
const STAGGER_MS = 45;
|
|
70
74
|
const STAGGER_MAX = 10;
|
|
71
75
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -80,6 +84,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
80
84
|
debounce: { default: 250 },
|
|
81
85
|
minChars: { default: 1 },
|
|
82
86
|
recent: {},
|
|
87
|
+
recentKey: {},
|
|
83
88
|
recentLimit: { default: 5 },
|
|
84
89
|
recentLabel: { default: "Recent" },
|
|
85
90
|
resultsLabel: { default: "Results" },
|
|
@@ -93,7 +98,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
93
98
|
setup(__props, { emit: __emit }) {
|
|
94
99
|
const props = __props;
|
|
95
100
|
const frosted = useGlass(() => props.glass);
|
|
96
|
-
const
|
|
101
|
+
const contentRef = ref(null);
|
|
102
|
+
const { claim, release, layer } = useModalLayer({ element: () => contentRef.value?.$el });
|
|
97
103
|
const DEFAULT_LABELS = {
|
|
98
104
|
navigate: "navigate",
|
|
99
105
|
select: "select",
|
|
@@ -107,9 +113,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
107
113
|
openInNewTab: "Open in new tab",
|
|
108
114
|
copyLink: "Copy link",
|
|
109
115
|
linkCopied: "Link copied",
|
|
110
|
-
noPreview: "No preview"
|
|
116
|
+
noPreview: "No preview",
|
|
117
|
+
title: "Command palette",
|
|
118
|
+
description: "Search and run a command.",
|
|
119
|
+
esc: "esc"
|
|
111
120
|
};
|
|
112
|
-
const text =
|
|
121
|
+
const text = useLabels("palette", DEFAULT_LABELS, () => props.labels);
|
|
113
122
|
const emit = __emit;
|
|
114
123
|
const query = ref("");
|
|
115
124
|
const listId = `lp-cmd-${useId()}`;
|
|
@@ -150,14 +159,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
150
159
|
}
|
|
151
160
|
const selectedActions = computed(() => actionsOf(flat.value[selectedIndex.value]));
|
|
152
161
|
function onTab(event) {
|
|
153
|
-
event.preventDefault();
|
|
154
|
-
event.stopPropagation();
|
|
155
162
|
if (event.shiftKey) return;
|
|
156
163
|
const c = flat.value[selectedIndex.value];
|
|
157
164
|
const actions = selectedActions.value;
|
|
158
165
|
if (!c || !actions.length) return;
|
|
166
|
+
event.preventDefault();
|
|
167
|
+
event.stopPropagation();
|
|
159
168
|
enter({ id: `${c.id}:actions`, label: c.label, icon: c.icon, children: actions });
|
|
160
169
|
}
|
|
170
|
+
watch(
|
|
171
|
+
() => props.commands,
|
|
172
|
+
(commands) => {
|
|
173
|
+
if (!trail.value.length) return;
|
|
174
|
+
let level = commands;
|
|
175
|
+
const next = [];
|
|
176
|
+
for (const step of trail.value) {
|
|
177
|
+
const fresh = level.find((c) => c.id === step.id);
|
|
178
|
+
if (!fresh) return;
|
|
179
|
+
next.push(fresh);
|
|
180
|
+
level = Array.isArray(fresh.children) ? fresh.children : [];
|
|
181
|
+
}
|
|
182
|
+
trail.value = next;
|
|
183
|
+
const last = next[next.length - 1];
|
|
184
|
+
if (last && Array.isArray(last.children)) modeItems.value = last.children;
|
|
185
|
+
}
|
|
186
|
+
);
|
|
161
187
|
function enter(c) {
|
|
162
188
|
trailState.value = [...trailState.value, { query: query.value, selectedId: selectedId.value }];
|
|
163
189
|
trail.value = [...trail.value, c];
|
|
@@ -194,7 +220,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
194
220
|
function fetcher() {
|
|
195
221
|
const current = mode.value;
|
|
196
222
|
if (current) {
|
|
197
|
-
return typeof current.children === "function" ?
|
|
223
|
+
return typeof current.children === "function" ? current.children : null;
|
|
198
224
|
}
|
|
199
225
|
return props.search ?? null;
|
|
200
226
|
}
|
|
@@ -234,11 +260,35 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
234
260
|
const seen = new Set(ranked.value.map((c) => c.id));
|
|
235
261
|
return found.value.filter((c) => !seen.has(c.id)).map((c) => c.group ? c : { ...c, group: props.resultsLabel });
|
|
236
262
|
});
|
|
263
|
+
const ownRecent = ref([]);
|
|
264
|
+
watch(
|
|
265
|
+
() => props.recentKey,
|
|
266
|
+
(key) => {
|
|
267
|
+
if (!key || typeof localStorage === "undefined") return;
|
|
268
|
+
try {
|
|
269
|
+
const stored = JSON.parse(localStorage.getItem(key) ?? "[]");
|
|
270
|
+
ownRecent.value = Array.isArray(stored) ? stored.filter((v) => typeof v === "string") : [];
|
|
271
|
+
} catch {
|
|
272
|
+
ownRecent.value = [];
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
{ immediate: true }
|
|
276
|
+
);
|
|
277
|
+
function remember(id) {
|
|
278
|
+
const key = props.recentKey;
|
|
279
|
+
if (!key || props.recent) return;
|
|
280
|
+
ownRecent.value = [id, ...ownRecent.value.filter((v) => v !== id)].slice(0, RECENT_KEEP);
|
|
281
|
+
try {
|
|
282
|
+
localStorage.setItem(key, JSON.stringify(ownRecent.value));
|
|
283
|
+
} catch {
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const recentIds = computed(() => props.recent ?? (props.recentKey ? ownRecent.value : []));
|
|
237
287
|
const recentItems = computed(() => {
|
|
238
|
-
if (mode.value || query.value.trim() || !
|
|
288
|
+
if (mode.value || query.value.trim() || !recentIds.value.length) return [];
|
|
239
289
|
const byId = new Map(props.commands.map((c) => [c.id, c]));
|
|
240
290
|
const out = [];
|
|
241
|
-
for (const id of
|
|
291
|
+
for (const id of recentIds.value) {
|
|
242
292
|
const c = byId.get(id);
|
|
243
293
|
if (c && !c.disabled && !out.includes(c)) out.push(c);
|
|
244
294
|
if (out.length >= props.recentLimit) break;
|
|
@@ -288,6 +338,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
288
338
|
const paragraphs = computed(
|
|
289
339
|
() => (active.value?.preview ?? active.value?.excerpt ?? "").split(/\n{2,}/).map((part) => part.trim()).filter(Boolean)
|
|
290
340
|
);
|
|
341
|
+
const paneDescription = computed(() => {
|
|
342
|
+
const description = active.value?.description?.trim();
|
|
343
|
+
if (!description) return void 0;
|
|
344
|
+
const body = paragraphs.value.join(" ");
|
|
345
|
+
return body.startsWith(description) ? void 0 : description;
|
|
346
|
+
});
|
|
291
347
|
watch(
|
|
292
348
|
() => active.value?.id,
|
|
293
349
|
async () => {
|
|
@@ -300,8 +356,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
300
356
|
else viewport.scrollTop = 0;
|
|
301
357
|
}
|
|
302
358
|
);
|
|
359
|
+
const flatIndex = computed(() => new Map(flat.value.map((c, i) => [c, i])));
|
|
303
360
|
function flatIndexOf(c) {
|
|
304
|
-
return
|
|
361
|
+
return flatIndex.value.get(c) ?? -1;
|
|
305
362
|
}
|
|
306
363
|
function highlight(value, extra = []) {
|
|
307
364
|
const terms = [...new Set([...local.value.terms, ...extra.map((t) => t.toLowerCase())].filter((t) => t.length >= 2))].sort(
|
|
@@ -376,6 +433,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
376
433
|
function onPaletteKeydown(event) {
|
|
377
434
|
if (event.isComposing) return;
|
|
378
435
|
if (!["ArrowDown", "ArrowUp", "Home", "End", "PageDown", "PageUp"].includes(event.key)) return;
|
|
436
|
+
const typing = event.target instanceof HTMLInputElement && event.target.value !== "";
|
|
437
|
+
if (typing && (event.key === "Home" || event.key === "End")) return;
|
|
379
438
|
event.preventDefault();
|
|
380
439
|
event.stopPropagation();
|
|
381
440
|
if (event.key === "ArrowDown") moveDown();
|
|
@@ -425,9 +484,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
425
484
|
return;
|
|
426
485
|
}
|
|
427
486
|
emit("run", c.id, c);
|
|
487
|
+
if (!mode.value) remember(c.id);
|
|
428
488
|
if (c.keepOpen) {
|
|
429
489
|
query.value = "";
|
|
430
|
-
select(0);
|
|
490
|
+
if (mode.value) void nextTick(() => select(Math.max(0, flat.value.findIndex((x) => x.id === c.id))));
|
|
491
|
+
else select(0);
|
|
431
492
|
inputRef.value?.focus();
|
|
432
493
|
return;
|
|
433
494
|
}
|
|
@@ -472,6 +533,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
472
533
|
code: "KeyK",
|
|
473
534
|
ctrl: true,
|
|
474
535
|
allowInInput: true,
|
|
536
|
+
overLayers: true,
|
|
537
|
+
repeat: false,
|
|
475
538
|
handler: () => emit("update:open", !props.open)
|
|
476
539
|
}
|
|
477
540
|
] : []
|
|
@@ -489,6 +552,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
489
552
|
style: normalizeStyle({ zIndex: unref(layer).scrim })
|
|
490
553
|
}, null, 8, ["class", "style"]),
|
|
491
554
|
createVNode(unref(DialogContent), {
|
|
555
|
+
ref_key: "contentRef",
|
|
556
|
+
ref: contentRef,
|
|
492
557
|
class: normalizeClass(["lp-cmd-dialog fixed left-1/2 top-[12vh] flex max-h-[76vh] -translate-x-1/2 flex-col overflow-hidden rounded-card border border-line shadow-panel outline-none data-[state=open]:animate-[pop-in_160ms_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_130ms_ease]", [unref(frosted) ? unref(layer).nested ? "lp-glass-overlay--nested" : "lp-glass-overlay" : "bg-surface-raised", __props.previewPane && "lp-cmd-split"]]),
|
|
493
558
|
style: normalizeStyle({ zIndex: unref(layer).panel }),
|
|
494
559
|
"data-pane": paneOpen.value ? "open" : void 0,
|
|
@@ -498,15 +563,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
498
563
|
}, {
|
|
499
564
|
default: withCtx(() => [
|
|
500
565
|
createVNode(unref(DialogTitle), { class: "sr-only" }, {
|
|
501
|
-
default: withCtx(() => [
|
|
502
|
-
createTextVNode(
|
|
503
|
-
])
|
|
566
|
+
default: withCtx(() => [
|
|
567
|
+
createTextVNode(toDisplayString(unref(text).title), 1)
|
|
568
|
+
]),
|
|
504
569
|
_: 1
|
|
505
570
|
}),
|
|
506
571
|
createVNode(unref(DialogDescription), { class: "sr-only" }, {
|
|
507
|
-
default: withCtx(() => [
|
|
508
|
-
createTextVNode(
|
|
509
|
-
])
|
|
572
|
+
default: withCtx(() => [
|
|
573
|
+
createTextVNode(toDisplayString(unref(text).description), 1)
|
|
574
|
+
]),
|
|
510
575
|
_: 1
|
|
511
576
|
}),
|
|
512
577
|
createElementVNode("div", _hoisted_1, [
|
|
@@ -526,7 +591,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
526
591
|
key: step.id,
|
|
527
592
|
type: "button",
|
|
528
593
|
class: "flex shrink-0 items-center gap-1.5 rounded-md bg-brand-soft px-2 py-1 text-xs font-medium text-brand transition-opacity hover:opacity-80",
|
|
529
|
-
title: text.
|
|
594
|
+
title: unref(text).back,
|
|
530
595
|
onClick: ($event) => popTo(i)
|
|
531
596
|
}, [
|
|
532
597
|
step.icon ? (openBlock(), createBlock(_sfc_main$1, {
|
|
@@ -563,7 +628,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
563
628
|
}, null, 40, _hoisted_3), [
|
|
564
629
|
[vModelText, query.value]
|
|
565
630
|
]),
|
|
566
|
-
|
|
631
|
+
createElementVNode("kbd", _hoisted_4, toDisplayString(unref(text).esc), 1)
|
|
567
632
|
]),
|
|
568
633
|
createElementVNode("div", {
|
|
569
634
|
class: "flex min-h-0 flex-1",
|
|
@@ -576,7 +641,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
576
641
|
"content-class": "p-2"
|
|
577
642
|
}, {
|
|
578
643
|
default: withCtx(() => [
|
|
579
|
-
flat.value.length === 0 && !failed.value ? (openBlock(), createElementBlock("p",
|
|
644
|
+
flat.value.length === 0 && !failed.value ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString(unref(searching) ? unref(text).searching : __props.emptyText), 1)) : createCommentVNode("", true),
|
|
580
645
|
createElementVNode("div", {
|
|
581
646
|
id: listId,
|
|
582
647
|
role: "listbox"
|
|
@@ -591,7 +656,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
591
656
|
key: 0,
|
|
592
657
|
id: `${listId}-g${gi}`,
|
|
593
658
|
class: "px-2 pb-1 pt-3 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted"
|
|
594
|
-
}, toDisplayString(group.name), 9,
|
|
659
|
+
}, toDisplayString(group.name), 9, _hoisted_7)) : createCommentVNode("", true),
|
|
595
660
|
(openBlock(true), createElementBlock(Fragment, null, renderList(group.items, (c) => {
|
|
596
661
|
return openBlock(), createBlock(resolveDynamicComponent(c.href ? "a" : "button"), {
|
|
597
662
|
id: optionId(flatIndexOf(c)),
|
|
@@ -618,24 +683,24 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
618
683
|
size: 16,
|
|
619
684
|
class: normalizeClass(["shrink-0", { "mt-0.5": c.excerpt }])
|
|
620
685
|
}, null, 8, ["name", "class"])) : createCommentVNode("", true),
|
|
621
|
-
createElementVNode("span",
|
|
622
|
-
createElementVNode("span",
|
|
686
|
+
createElementVNode("span", _hoisted_8, [
|
|
687
|
+
createElementVNode("span", _hoisted_9, [
|
|
623
688
|
(openBlock(true), createElementBlock(Fragment, null, renderList(highlight(c.label, c.highlight), (p, pi) => {
|
|
624
689
|
return openBlock(), createElementBlock(Fragment, {
|
|
625
690
|
key: `l${pi}`
|
|
626
691
|
}, [
|
|
627
|
-
p.hit ? (openBlock(), createElementBlock("mark",
|
|
692
|
+
p.hit ? (openBlock(), createElementBlock("mark", _hoisted_10, toDisplayString(p.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
628
693
|
createTextVNode(toDisplayString(p.text), 1)
|
|
629
694
|
], 64))
|
|
630
695
|
], 64);
|
|
631
696
|
}), 128))
|
|
632
697
|
]),
|
|
633
|
-
c.description ? (openBlock(), createElementBlock("span",
|
|
698
|
+
c.description ? (openBlock(), createElementBlock("span", _hoisted_11, [
|
|
634
699
|
(openBlock(true), createElementBlock(Fragment, null, renderList(highlight(c.description, c.highlight), (p, pi) => {
|
|
635
700
|
return openBlock(), createElementBlock(Fragment, {
|
|
636
701
|
key: `d${pi}`
|
|
637
702
|
}, [
|
|
638
|
-
p.hit ? (openBlock(), createElementBlock("mark",
|
|
703
|
+
p.hit ? (openBlock(), createElementBlock("mark", _hoisted_12, toDisplayString(p.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
639
704
|
createTextVNode(toDisplayString(p.text), 1)
|
|
640
705
|
], 64))
|
|
641
706
|
], 64);
|
|
@@ -650,14 +715,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
650
715
|
return openBlock(), createElementBlock(Fragment, {
|
|
651
716
|
key: `e${pi}`
|
|
652
717
|
}, [
|
|
653
|
-
p.hit ? (openBlock(), createElementBlock("mark",
|
|
718
|
+
p.hit ? (openBlock(), createElementBlock("mark", _hoisted_13, toDisplayString(p.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
654
719
|
createTextVNode(toDisplayString(p.text), 1)
|
|
655
720
|
], 64))
|
|
656
721
|
], 64);
|
|
657
722
|
}), 128))
|
|
658
723
|
], 4)) : createCommentVNode("", true)
|
|
659
724
|
]),
|
|
660
|
-
c.shortcut ? (openBlock(), createElementBlock("kbd",
|
|
725
|
+
c.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_14, toDisplayString(c.shortcut), 1)) : c.children ? (openBlock(), createBlock(_sfc_main$1, {
|
|
661
726
|
key: 2,
|
|
662
727
|
name: "lucide:chevron-right",
|
|
663
728
|
size: 14,
|
|
@@ -667,7 +732,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
667
732
|
_: 2
|
|
668
733
|
}, 1064, ["id", "href", "type", "aria-selected", "aria-disabled", "data-cmd-index", "disabled", "class", "onClick", "onPointerenter"]);
|
|
669
734
|
}), 128))
|
|
670
|
-
], 8,
|
|
735
|
+
], 8, _hoisted_6);
|
|
671
736
|
}), 128))
|
|
672
737
|
]),
|
|
673
738
|
failed.value ? (openBlock(), createElementBlock("div", {
|
|
@@ -680,7 +745,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
680
745
|
size: 15,
|
|
681
746
|
class: "shrink-0"
|
|
682
747
|
}),
|
|
683
|
-
createElementVNode("span", null, toDisplayString(text.
|
|
748
|
+
createElementVNode("span", null, toDisplayString(unref(text).searchFailed), 1),
|
|
684
749
|
createElementVNode("button", {
|
|
685
750
|
type: "button",
|
|
686
751
|
class: "rounded-md px-1.5 py-0.5 font-medium text-brand outline-none transition-colors hover:bg-brand-soft focus-visible:ring-2 focus-visible:ring-ring",
|
|
@@ -688,14 +753,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
688
753
|
refresh();
|
|
689
754
|
inputRef.value?.focus();
|
|
690
755
|
})
|
|
691
|
-
}, toDisplayString(text.
|
|
756
|
+
}, toDisplayString(unref(text).retry), 1)
|
|
692
757
|
], 2)) : createCommentVNode("", true)
|
|
693
758
|
]),
|
|
694
759
|
_: 1
|
|
695
760
|
}, 512),
|
|
696
761
|
createVNode(Transition, { name: "lp-cmd-pane" }, {
|
|
697
762
|
default: withCtx(() => [
|
|
698
|
-
paneOpen.value ? (openBlock(), createElementBlock("aside",
|
|
763
|
+
paneOpen.value ? (openBlock(), createElementBlock("aside", _hoisted_15, [
|
|
699
764
|
createVNode(_sfc_main$2, {
|
|
700
765
|
ref_key: "previewRef",
|
|
701
766
|
ref: previewRef,
|
|
@@ -707,16 +772,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
707
772
|
key: active.value.id
|
|
708
773
|
}, [
|
|
709
774
|
renderSlot(_ctx.$slots, "preview", { command: active.value }, () => [
|
|
710
|
-
createElementVNode("div",
|
|
775
|
+
createElementVNode("div", _hoisted_16, [
|
|
711
776
|
active.value.icon ? (openBlock(), createBlock(_sfc_main$1, {
|
|
712
777
|
key: 0,
|
|
713
778
|
name: active.value.icon,
|
|
714
779
|
size: 16,
|
|
715
780
|
class: "shrink-0 text-muted"
|
|
716
781
|
}, null, 8, ["name"])) : createCommentVNode("", true),
|
|
717
|
-
createElementVNode("h3",
|
|
782
|
+
createElementVNode("h3", _hoisted_17, toDisplayString(active.value.label), 1)
|
|
718
783
|
]),
|
|
719
|
-
|
|
784
|
+
paneDescription.value ? (openBlock(), createElementBlock("p", _hoisted_18, toDisplayString(paneDescription.value), 1)) : createCommentVNode("", true),
|
|
720
785
|
(openBlock(true), createElementBlock(Fragment, null, renderList(paragraphs.value, (para, i) => {
|
|
721
786
|
return openBlock(), createElementBlock("p", {
|
|
722
787
|
key: i,
|
|
@@ -727,7 +792,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
727
792
|
return openBlock(), createElementBlock(Fragment, {
|
|
728
793
|
key: `p${pi}`
|
|
729
794
|
}, [
|
|
730
|
-
p.hit ? (openBlock(), createElementBlock("mark",
|
|
795
|
+
p.hit ? (openBlock(), createElementBlock("mark", _hoisted_19, toDisplayString(p.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
731
796
|
createTextVNode(toDisplayString(p.text), 1)
|
|
732
797
|
], 64))
|
|
733
798
|
], 64);
|
|
@@ -744,27 +809,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
744
809
|
_: 3
|
|
745
810
|
})
|
|
746
811
|
], 32),
|
|
747
|
-
createElementVNode("div",
|
|
748
|
-
createElementVNode("span", _hoisted_20, [
|
|
749
|
-
_cache[7] || (_cache[7] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "↑", -1)),
|
|
750
|
-
_cache[8] || (_cache[8] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "↓", -1)),
|
|
751
|
-
createTextVNode(" " + toDisplayString(text.value.navigate), 1)
|
|
752
|
-
]),
|
|
812
|
+
createElementVNode("div", _hoisted_20, [
|
|
753
813
|
createElementVNode("span", _hoisted_21, [
|
|
754
|
-
_cache[
|
|
755
|
-
|
|
814
|
+
_cache[4] || (_cache[4] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "↑", -1)),
|
|
815
|
+
_cache[5] || (_cache[5] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "↓", -1)),
|
|
816
|
+
createTextVNode(" " + toDisplayString(unref(text).navigate), 1)
|
|
817
|
+
]),
|
|
818
|
+
createElementVNode("span", _hoisted_22, [
|
|
819
|
+
_cache[6] || (_cache[6] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "↵", -1)),
|
|
820
|
+
createTextVNode(" " + toDisplayString(unref(text).select), 1)
|
|
756
821
|
]),
|
|
757
|
-
selectedActions.value.length ? (openBlock(), createElementBlock("span",
|
|
758
|
-
_cache[
|
|
759
|
-
createTextVNode(" " + toDisplayString(text.
|
|
822
|
+
selectedActions.value.length ? (openBlock(), createElementBlock("span", _hoisted_23, [
|
|
823
|
+
_cache[7] || (_cache[7] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "tab", -1)),
|
|
824
|
+
createTextVNode(" " + toDisplayString(unref(text).actions), 1)
|
|
760
825
|
])) : createCommentVNode("", true),
|
|
761
|
-
trail.value.length ? (openBlock(), createElementBlock("span",
|
|
762
|
-
_cache[
|
|
763
|
-
createTextVNode(" " + toDisplayString(text.
|
|
826
|
+
trail.value.length ? (openBlock(), createElementBlock("span", _hoisted_24, [
|
|
827
|
+
_cache[8] || (_cache[8] = createElementVNode("kbd", { class: "rounded border border-line px-1 text-[10px]" }, "⌫", -1)),
|
|
828
|
+
createTextVNode(" " + toDisplayString(unref(text).back), 1)
|
|
764
829
|
])) : createCommentVNode("", true),
|
|
765
|
-
createElementVNode("span",
|
|
766
|
-
|
|
767
|
-
createTextVNode(" " + toDisplayString(text.
|
|
830
|
+
createElementVNode("span", _hoisted_25, [
|
|
831
|
+
createElementVNode("kbd", _hoisted_26, toDisplayString(unref(text).esc), 1),
|
|
832
|
+
createTextVNode(" " + toDisplayString(unref(text).close), 1)
|
|
768
833
|
])
|
|
769
834
|
])
|
|
770
835
|
]),
|
|
@@ -779,7 +844,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
779
844
|
};
|
|
780
845
|
}
|
|
781
846
|
});
|
|
782
|
-
const LpCommandPalette = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
847
|
+
const LpCommandPalette = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2da506c1"]]);
|
|
783
848
|
export {
|
|
784
849
|
LpCommandPalette as default
|
|
785
850
|
};
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export type ConfirmLabels = {
|
|
2
|
+
confirm: string;
|
|
3
|
+
cancel: string;
|
|
4
|
+
loading: string;
|
|
5
|
+
failed: string;
|
|
6
|
+
};
|
|
1
7
|
type __VLS_Props = {
|
|
2
8
|
open?: boolean;
|
|
3
9
|
title?: string;
|
|
@@ -25,11 +31,20 @@ type __VLS_Props = {
|
|
|
25
31
|
* The confirm action is in flight: the button disables and swaps to
|
|
26
32
|
* `loadingLabel`, and confirming no longer closes the dialog — the owner
|
|
27
33
|
* closes it once the work settles, so a failure can stay on screen.
|
|
34
|
+
* Setting it from the `confirm` handler is enough; the dialog waits a tick
|
|
35
|
+
* for it before deciding to close.
|
|
28
36
|
*/
|
|
29
37
|
loading?: boolean;
|
|
30
38
|
loadingLabel?: string;
|
|
39
|
+
/**
|
|
40
|
+
* The work behind the confirm button. When given, the dialog runs it,
|
|
41
|
+
* shows the loading state itself, closes once it resolves and stays open
|
|
42
|
+
* with the error's message when it rejects.
|
|
43
|
+
*/
|
|
44
|
+
action?: () => unknown;
|
|
31
45
|
/** Frosted glass panel, passed to LpModal. Follows `provideGlass` when unset. */
|
|
32
46
|
glass?: boolean;
|
|
47
|
+
labels?: Partial<ConfirmLabels>;
|
|
33
48
|
};
|
|
34
49
|
declare var __VLS_16: {};
|
|
35
50
|
type __VLS_Slots = {} & {
|
|
@@ -45,9 +60,6 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
45
60
|
onConfirm?: (() => any) | undefined;
|
|
46
61
|
}>, {
|
|
47
62
|
glass: boolean;
|
|
48
|
-
confirmLabel: string;
|
|
49
|
-
cancelLabel: string;
|
|
50
|
-
loadingLabel: string;
|
|
51
63
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
52
64
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
53
65
|
declare const _default: typeof __VLS_export;
|