@leavepulse/ui 0.70.0 → 0.71.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 +103 -0
- package/dist/assets/{LpCommandPalette-u-zOxKWa.css → LpCommandPalette-DgPZX0us.css} +24 -17
- package/dist/assets/{LpPaletteFacts-B9FdVmIO.css → LpPaletteFacts-CVNh5ICn.css} +16 -16
- package/dist/assets/{LpPaletteStats-ClE-37MK.css → LpPaletteStats-ZiZmR6vz.css} +5 -5
- package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
- package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
- package/dist/assets/{LpTable-DHxEQ_-3.css → LpTable-DHvorDiU.css} +19 -19
- package/dist/assets/LpTabs-CO3EcsNV.css +18 -0
- package/dist/chunks/{ContextMenuItems-B5uE8Znw.js → ContextMenuItems-eS7qx9gD.js} +11 -5
- package/dist/chunks/{DropzoneLinkField-Bw8Flkhk.js → DropzoneLinkField-DkFhdfEJ.js} +2 -2
- package/dist/chunks/{FieldWrapper-BiennROB.js → FieldWrapper-YzbvvC3M.js} +1 -1
- package/dist/chunks/{LayoutCanvas-BsJIzhdd.js → LayoutCanvas-Ba4A9QC5.js} +1 -1
- package/dist/chunks/{LayoutNode-DJVhkSGk.js → LayoutNode-CTTTLMDM.js} +1 -1
- package/dist/chunks/{LpActionBar-CzOFar5t.js → LpActionBar-B7anGlkI.js} +2 -2
- package/dist/chunks/{LpAddressInput-CNnLTDZg.js → LpAddressInput-CD0bzrt-.js} +7 -7
- package/dist/chunks/{LpAlert-C5igj802.js → LpAlert-BHi7ARqu.js} +1 -1
- package/dist/chunks/{LpAppShell-CEUAB8kK.js → LpAppShell-1RmBp6xQ.js} +3 -3
- package/dist/chunks/{LpAutocomplete-D92niDHE.js → LpAutocomplete-DDqe2M5g.js} +5 -2
- package/dist/chunks/{LpAvatar-CLPl-qOF.js → LpAvatar-DqfKCIdr.js} +1 -1
- package/dist/chunks/{LpBadge-HOEPBYmi.js → LpBadge-C8fKEmTF.js} +2 -2
- package/dist/chunks/{LpBreadcrumbs-DYoPc3P4.js → LpBreadcrumbs-DhcoStFa.js} +2 -2
- package/dist/chunks/{LpButton-CVxBfGjd.js → LpButton-BQDAFXBd.js} +3 -0
- package/dist/chunks/{LpCalendar-pVL91-Pl.js → LpCalendar-NmrA47J9.js} +1 -1
- package/dist/chunks/{LpCheckbox-DHc2bHDe.js → LpCheckbox-BoOuLnGB.js} +5 -2
- package/dist/chunks/{LpCodeBlock-BGsQhxw8.js → LpCodeBlock-Czu-fq1M.js} +2 -2
- package/dist/chunks/{LpCodeDisplay-CIKKT2iW.js → LpCodeDisplay-BK2FHbtM.js} +6 -6
- package/dist/chunks/{LpColorPicker-DFugXNUi.js → LpColorPicker-Ee1DZiRd.js} +3 -3
- package/dist/chunks/LpCommandScope-ubtWDMa0.js +53 -0
- package/dist/chunks/{LpConfirmDialog-CfGCux8m.js → LpConfirmDialog-i15pulMT.js} +3 -3
- package/dist/chunks/{LpConfirmHost-exB7JmcO.js → LpConfirmHost-D0oGavtd.js} +1 -1
- package/dist/chunks/{LpContextMenu-COwOwRgI.js → LpContextMenu-DXpFJjlO.js} +17 -6
- package/dist/chunks/{LpCopyButton-DzHjnFs0.js → LpCopyButton-Dmq7DmFw.js} +3 -3
- package/dist/chunks/{LpCountdown-Dtq1ihlJ.js → LpCountdown-DTdMF8DL.js} +2 -2
- package/dist/chunks/{LpDataList-B-5nHfNw.js → LpDataList-CFPtSsBB.js} +7 -6
- package/dist/chunks/{LpDatePicker-BUe1VUC0.js → LpDatePicker-cC9K-Pk8.js} +7 -6
- package/dist/chunks/{LpDateRangePicker-C_k65vGR.js → LpDateRangePicker-BVQKPbvo.js} +5 -4
- package/dist/chunks/{LpDisclosure-DOarzlAG.js → LpDisclosure-hRnX3FWL.js} +4 -1
- package/dist/chunks/{LpDrawer-DGNKRsGq.js → LpDrawer-u4rxnuR-.js} +1 -1
- package/dist/chunks/{LpDropdownMenu-CRgrhdAH.js → LpDropdownMenu-BgZ0Z_Im.js} +17 -4
- package/dist/chunks/{LpEditable-DTqLt2lT.js → LpEditable-CjxuOVh_.js} +7 -5
- package/dist/chunks/{LpEmptyState-KTKipws2.js → LpEmptyState-CKFTtQgJ.js} +1 -1
- package/dist/chunks/{LpFieldNotice-CurbNuXI.js → LpFieldNotice-CPI8EwtU.js} +1 -1
- package/dist/chunks/{LpFileTree-DMISXVHC.js → LpFileTree-BH0gNlSJ.js} +2 -2
- package/dist/chunks/{LpFileTreeNode-CPXB_Yy3.js → LpFileTreeNode-gPVB1oXM.js} +4 -4
- package/dist/chunks/{LpFormField-BWwgm1E4.js → LpFormField-gRASfyj2.js} +4 -1
- package/dist/chunks/{LpGauge-Bk8TwJj0.js → LpGauge-BdjPGnqw.js} +2 -2
- package/dist/chunks/{LpHintLayer-p4hqzdyA.js → LpHintLayer-C2asBIfs.js} +2 -2
- package/dist/chunks/{LpHints-CCrhRfy9.js → LpHints-CNZQ76JV.js} +3 -3
- package/dist/chunks/{LpIcon-HJP5xMz4.js → LpIcon-DkP-9mzK.js} +1 -1
- package/dist/chunks/{LpInfraNode-CUC3t4na.js → LpInfraNode-yTh4-5qa.js} +2 -2
- package/dist/chunks/{LpInput-CDuwODJG.js → LpInput-2H-5ILOB.js} +5 -2
- package/dist/chunks/{LpLightbox-XJ0LpTcZ.js → LpLightbox-lAt5uIfx.js} +2 -2
- package/dist/chunks/{LpLogViewer-elZHbj85.js → LpLogViewer-x78YfhJf.js} +5 -5
- package/dist/chunks/{LpMapPicker-BtIl7NOM.js → LpMapPicker-Dp5RSCi9.js} +1 -1
- package/dist/chunks/{LpMediaGallery-D5swlmZ_.js → LpMediaGallery-D92oJfY_.js} +3 -3
- package/dist/chunks/{LpModal-eBMt2Fqn.js → LpModal-CpH0bNo7.js} +1 -1
- package/dist/chunks/{LpModalNav-D4Z0wVHR.js → LpModalNav-BH4ANQGJ.js} +4 -4
- package/dist/chunks/{LpNotificationBell-DPZmP5dM.js → LpNotificationBell-BdUQqZhs.js} +8 -8
- package/dist/chunks/{LpNumberField-B9k-h2HE.js → LpNumberField-DZY3Z670.js} +4 -1
- package/dist/chunks/{LpNumberFlow-Cfyh033Q.js → LpNumberFlow-5khYxsfX.js} +6 -3
- package/dist/chunks/{LpPagination-VNCX6pFC.js → LpPagination-DbeACavM.js} +1 -1
- package/dist/chunks/LpPaletteTheme-CqWNRwHE.js +104 -0
- package/dist/chunks/{LpPasswordInput-DTV18FIh.js → LpPasswordInput-BzAZsf5V.js} +14 -8
- package/dist/chunks/{LpPhoneInput-C60tx1tC.js → LpPhoneInput-BMpd-0QR.js} +2 -2
- package/dist/chunks/{LpPie-CFuV7pZv.js → LpPie-DdFSTbGE.js} +5 -5
- package/dist/chunks/{LpPipeline-D81yh_NX.js → LpPipeline-zjEM1Lwc.js} +4 -4
- package/dist/chunks/{LpPopover-BEIcqb9p.js → LpPopover-DmZ3wUtP.js} +6 -5
- package/dist/chunks/{LpProgress-CE-m5OpD.js → LpProgress-BX33EKkN.js} +1 -1
- package/dist/chunks/{LpQuota-2Sw_gqcJ.js → LpQuota-DqNv1yjs.js} +3 -3
- package/dist/chunks/{LpRadioGroup-CGBr5nIp.js → LpRadioGroup-CsXeV9Ct.js} +4 -1
- package/dist/chunks/{LpRangeCalendar-c5qj7YcC.js → LpRangeCalendar-l-0nSFmY.js} +1 -1
- package/dist/chunks/{LpRangeSlider-Dv6lNvHY.js → LpRangeSlider-CM-0ZITZ.js} +3 -0
- package/dist/chunks/{LpRelativeTime-CKzVqAo9.js → LpRelativeTime-UM8EkfrN.js} +2 -2
- package/dist/chunks/LpRepeater-OvzByE5L.js +180 -0
- package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
- package/dist/chunks/{LpSecretField-DMfdJ1cQ.js → LpSecretField-DwQiPOko.js} +27 -16
- package/dist/chunks/{LpSection-BW4xJ-Li.js → LpSection-DcQsieHG.js} +1 -1
- package/dist/chunks/{LpSegmented-BO99Sr4m.js → LpSegmented-D2VST0o3.js} +4 -1
- package/dist/chunks/{LpSelect-B4f_yRi5.js → LpSelect-DYX2-u5A.js} +43 -18
- package/dist/chunks/{LpSidebar-D-M0Y_7U.js → LpSidebar-D44peKq2.js} +3 -3
- package/dist/chunks/{LpSidebarNav-DF-TYxOV.js → LpSidebarNav--VwkXO_a.js} +3 -3
- package/dist/chunks/{LpSlider-DuoRpOrH.js → LpSlider-DxYoCJJO.js} +3 -0
- package/dist/chunks/{LpStat-B2ix1Q7t.js → LpStat-DIsQfbeD.js} +3 -3
- package/dist/chunks/{LpStatus-C7kx5PKE.js → LpStatus-BQU1TUsv.js} +2 -2
- package/dist/chunks/{LpStepMark-DK-5BKAt.js → LpStepMark-CXa7DJy_.js} +2 -2
- package/dist/chunks/{LpStepper-DRFfdJaq.js → LpStepper-C9RM_yTG.js} +1 -1
- package/dist/chunks/{LpSwitch-DrzKrZZV.js → LpSwitch-bGZxUDSx.js} +3 -0
- package/dist/chunks/{LpTableFilter-DyvHGbOk.js → LpTableFilter-CTZMqFDU.js} +2 -2
- package/dist/chunks/{LpTableOfContents-rYvo8z5T.js → LpTableOfContents-CraicEs4.js} +2 -2
- package/dist/chunks/{LpTagsInput-DgpBFRV2.js → LpTagsInput-DrjmrOge.js} +8 -5
- package/dist/chunks/{LpTextarea-DiWjeVoJ.js → LpTextarea-BbYqmG1S.js} +4 -1
- package/dist/chunks/{LpThemeStudio-DguwHdGt.js → LpThemeStudio-B2nPaG-h.js} +18 -14
- package/dist/chunks/{LpThemeSwitcher-D5uz0MhK.js → LpThemeSwitcher-C0A5sg_E.js} +6 -4
- package/dist/chunks/{LpTimeField-BFQVf_PW.js → LpTimeField-DQ8WvPr2.js} +4 -1
- package/dist/chunks/{LpToaster-Wv9ksj4q.js → LpToaster-BTTl_wuy.js} +2 -2
- package/dist/chunks/{LpTooltip-Cz8SQwRt.js → LpTooltip-BcBvIx4z.js} +23 -5
- package/dist/chunks/{LpTopologyCanvas-ZhKthfgz.js → LpTopologyCanvas-B0wEvAoq.js} +1 -1
- package/dist/chunks/{LpTour-NfRJNEIP.js → LpTour-BgCfNlaW.js} +1 -1
- package/dist/chunks/{LpTruncate-D_5Pfv5B.js → LpTruncate-TcqfkyJM.js} +2 -2
- package/dist/chunks/{LpUptimeBar-DWegV2p6.js → LpUptimeBar-DRadGq4Y.js} +136 -47
- package/dist/chunks/{MenuTitle-BjQZX8tQ.js → MenuTitle-Dab3EGOp.js} +1 -1
- package/dist/chunks/{OptionContent-CmYUUeWj.js → OptionContent-DPzNsybd.js} +1 -1
- package/dist/chunks/PalettePreviewBoundary-B0Hhu3Yw.js +20 -0
- package/dist/chunks/{PickerField-CHRS1h7K.js → PickerField-DwLw7j0L.js} +26 -17
- package/dist/chunks/{RevealToggle-C-KzaQGJ.js → RevealToggle-BVFM_FAU.js} +3 -3
- package/dist/chunks/{TourCard-BXuVHsfn.js → TourCard--2IfgnUU.js} +3 -3
- package/dist/chunks/icons-CLu1iR1j.js +43 -0
- package/dist/chunks/palette-BiY7yQZL.js +29 -0
- package/dist/component-names.d.ts +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.js +1 -1
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.d.ts +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.d.ts +3 -3
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.d.ts +7 -1
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.d.ts +2 -2
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.d.ts +4 -0
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpChart.vue.js +27 -25
- package/dist/components/LpCheckbox.vue.d.ts +8 -1
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.d.ts +2 -2
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.d.ts +43 -7
- package/dist/components/LpCommandPalette.vue.js +451 -126
- package/dist/components/LpCommandScope.vue.d.ts +28 -0
- package/dist/components/LpCommandScope.vue.js +4 -0
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.d.ts +5 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.d.ts +1 -1
- package/dist/components/LpCopyButton.vue.js +1 -1
- package/dist/components/LpCountdown.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.d.ts +2 -0
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.d.ts +2 -0
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.d.ts +4 -0
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDock.vue.js +2 -2
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.d.ts +5 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +2 -2
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.js +1 -1
- package/dist/components/LpFileTree.vue.d.ts +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpGauge.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +3 -2
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.d.ts +6 -0
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLoader.vue.d.ts +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.d.ts +2 -2
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.d.ts +6 -0
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpNumberFlow.vue.js +1 -1
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.d.ts +1 -0
- package/dist/components/LpPaletteFacts.vue.js +40 -26
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPaletteStats.vue.d.ts +1 -0
- package/dist/components/LpPaletteStats.vue.js +45 -21
- package/dist/components/LpPaletteTheme.vue.d.ts +7 -0
- package/dist/components/LpPaletteTheme.vue.js +4 -0
- package/dist/components/LpPasswordInput.vue.d.ts +7 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/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/LpQuota.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.d.ts +6 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpRangeSlider.vue.d.ts +6 -0
- package/dist/components/LpRangeSlider.vue.js +1 -1
- package/dist/components/LpRelativeTime.vue.js +1 -1
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpRollingText.vue.d.ts +2 -0
- package/dist/components/LpRollingText.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.d.ts +6 -0
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.d.ts +3 -0
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShinyText.vue.d.ts +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSlider.vue.d.ts +6 -0
- package/dist/components/LpSlider.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwitch.vue.d.ts +6 -0
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.d.ts +6 -0
- package/dist/components/LpTable.vue.js +74 -35
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTableOfContents.vue.js +1 -1
- package/dist/components/LpTabs.vue.d.ts +1 -1
- package/dist/components/LpTabs.vue.js +15 -6
- package/dist/components/LpTagsInput.vue.d.ts +6 -0
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextarea.vue.d.ts +8 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.d.ts +6 -0
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTooltip.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpTruncate.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.d.ts +18 -9
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/OptionContent.vue.js +1 -1
- package/dist/components/PalettePreviewBoundary.vue.d.ts +13 -0
- package/dist/components/PalettePreviewBoundary.vue.js +4 -0
- package/dist/components/PickerField.vue.d.ts +5 -3
- package/dist/components/PickerField.vue.js +1 -1
- package/dist/components/RevealToggle.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/commandPalette.d.ts +33 -0
- package/dist/components/commandPalette.js +21 -1
- package/dist/components/commandSearch.d.ts +5 -0
- package/dist/components/commandSearch.js +22 -2
- package/dist/components/format.d.ts +7 -0
- package/dist/components/format.js +4 -0
- package/dist/components/menuWhen.js +1 -1
- package/dist/components/uptimeBar.d.ts +45 -0
- package/dist/components/uptimeBar.js +51 -0
- package/dist/composables/scroll.d.ts +5 -0
- package/dist/composables/scroll.js +7 -0
- package/dist/composables/useField.d.ts +9 -0
- package/dist/composables/useField.js +24 -1
- package/dist/composables/useForm.js +13 -4
- package/dist/composables/usePaletteCommands.d.ts +61 -0
- package/dist/composables/usePaletteCommands.js +220 -0
- package/dist/composables/useReveal.js +21 -0
- package/dist/composables/useView.js +9 -2
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.js +103 -87
- package/dist/theme/palette.d.ts +9 -0
- package/dist/theme/studio.d.ts +12 -1
- package/package.json +4 -1
- package/src/component-names.ts +2 -0
- package/src/components/ContextMenuItems.vue +5 -2
- package/src/components/LpAutocomplete.vue +6 -1
- package/src/components/LpButton.vue +5 -1
- package/src/components/LpChart.vue +19 -17
- package/src/components/LpCheckbox.vue +7 -2
- package/src/components/LpCommandPalette.vue +263 -29
- package/src/components/LpCommandScope.vue +35 -0
- package/src/components/LpContextMenu.vue +17 -5
- package/src/components/LpDataList.vue +2 -2
- package/src/components/LpDatePicker.vue +2 -0
- package/src/components/LpDateRangePicker.vue +2 -0
- package/src/components/LpDisclosure.vue +5 -1
- package/src/components/LpDropdownMenu.vue +14 -3
- package/src/components/LpEditable.vue +3 -1
- package/src/components/LpFormField.vue +3 -0
- package/src/components/LpInput.vue +6 -1
- package/src/components/LpNumberField.vue +6 -1
- package/src/components/LpNumberFlow.vue +12 -2
- package/src/components/LpPaletteFacts.vue +11 -6
- package/src/components/LpPaletteStats.vue +12 -5
- package/src/components/LpPaletteTheme.vue +48 -0
- package/src/components/LpPasswordInput.vue +13 -5
- package/src/components/LpPopover.vue +4 -0
- package/src/components/LpRadioGroup.vue +4 -1
- package/src/components/LpRangeSlider.vue +6 -1
- package/src/components/LpRepeater.vue +64 -13
- package/src/components/LpRollingText.vue +12 -1
- package/src/components/LpSecretField.vue +18 -8
- package/src/components/LpSegmented.vue +6 -1
- package/src/components/LpSelect.vue +44 -10
- package/src/components/LpSlider.vue +6 -1
- package/src/components/LpSwitch.vue +6 -1
- package/src/components/LpTable.vue +35 -2
- package/src/components/LpTableOfContents.vue +2 -4
- package/src/components/LpTabs.vue +7 -0
- package/src/components/LpTagsInput.vue +6 -1
- package/src/components/LpTextarea.vue +7 -2
- package/src/components/LpThemeStudio.vue +7 -5
- package/src/components/LpThemeSwitcher.vue +3 -0
- package/src/components/LpTimeField.vue +6 -1
- package/src/components/LpTooltip.vue +23 -1
- package/src/components/LpUptimeBar.vue +69 -41
- package/src/components/PalettePreviewBoundary.vue +5 -0
- package/src/components/PickerField.vue +5 -4
- package/src/components/commandPalette.ts +22 -1
- package/src/components/commandSearch.ts +23 -1
- package/src/components/format.ts +10 -0
- package/src/components/uptimeBar.ts +98 -0
- package/src/composables/scroll.ts +11 -0
- package/src/composables/useField.ts +33 -1
- package/src/composables/useForm.ts +14 -5
- package/src/composables/usePaletteCommands.ts +220 -0
- package/src/composables/useReveal.ts +29 -0
- package/src/composables/useView.ts +8 -1
- package/src/index.ts +18 -1
- package/src/kit-icons.ts +1 -1
- package/src/theme/palette.ts +26 -0
- package/src/theme/studio.ts +15 -8
- package/dist/assets/LpTabs-BJ-nrJuI.css +0 -18
- package/dist/chunks/LpRepeater-D0VjmD6y.js +0 -140
- package/dist/chunks/icons-4IywzkHk.js +0 -43
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { inject, toValue, onScopeDispose, getCurrentInstance, ref, onMounted, onUpdated, provide, shallowReactive, computed, shallowRef, useId, h } from "vue";
|
|
2
|
+
import { useField, provideField } from "./useField.js";
|
|
3
|
+
import { useLabels } from "./useLpConfig.js";
|
|
4
|
+
function uniqueCommands(commands) {
|
|
5
|
+
const found = /* @__PURE__ */ new Map();
|
|
6
|
+
for (const command of commands) if (!found.has(command.id)) found.set(command.id, command);
|
|
7
|
+
return [...found.values()];
|
|
8
|
+
}
|
|
9
|
+
function numbered(entries) {
|
|
10
|
+
const manual = /* @__PURE__ */ new Set();
|
|
11
|
+
const seen = /* @__PURE__ */ new Map();
|
|
12
|
+
const out = [];
|
|
13
|
+
for (const entry of entries) {
|
|
14
|
+
for (const command of entry.commands()) {
|
|
15
|
+
if (!entry.automatic) {
|
|
16
|
+
manual.add(command.id);
|
|
17
|
+
out.push(command);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (manual.has(command.id)) continue;
|
|
21
|
+
const count = (seen.get(command.id) ?? 0) + 1;
|
|
22
|
+
seen.set(command.id, count);
|
|
23
|
+
if (count === 1) {
|
|
24
|
+
out.push(command);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const id = `${command.id}~${count}`;
|
|
28
|
+
out.push({ ...command, id, actions: command.actions?.map((action) => ({ ...action, id: action.id.replace(command.id, id) })) });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return uniqueCommands(out);
|
|
32
|
+
}
|
|
33
|
+
function createPaletteRegistry() {
|
|
34
|
+
const entries = shallowReactive(/* @__PURE__ */ new Map());
|
|
35
|
+
const commands = computed(() => numbered([...entries.values()].sort((a, b) => b.priority - a.priority)));
|
|
36
|
+
return {
|
|
37
|
+
commands,
|
|
38
|
+
register(entry) {
|
|
39
|
+
const key = /* @__PURE__ */ Symbol();
|
|
40
|
+
entries.set(key, entry);
|
|
41
|
+
return () => {
|
|
42
|
+
entries.delete(key);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const SCOPE = /* @__PURE__ */ Symbol.for("lp-palette-scope");
|
|
48
|
+
const BLOCKED = /* @__PURE__ */ Symbol.for("lp-palette-blocked");
|
|
49
|
+
const scopeElements = /* @__PURE__ */ new WeakMap();
|
|
50
|
+
function bindPaletteScopeElement(element, scope) {
|
|
51
|
+
scopeElements.set(element, scope);
|
|
52
|
+
}
|
|
53
|
+
const usePaletteScope = () => inject(SCOPE, null);
|
|
54
|
+
const providePaletteScope = (scope) => provide(SCOPE, scope);
|
|
55
|
+
function suppressPaletteDiscovery() {
|
|
56
|
+
provide(BLOCKED, true);
|
|
57
|
+
}
|
|
58
|
+
function usePaletteCommands(commands, options = {}) {
|
|
59
|
+
const scope = options.scope ?? usePaletteScope();
|
|
60
|
+
const blocked = inject(BLOCKED, false);
|
|
61
|
+
if (!scope || blocked) return;
|
|
62
|
+
const unregister = scope.registry.register({
|
|
63
|
+
automatic: options.automatic,
|
|
64
|
+
priority: scope.depth * 100 + (options.automatic ? 0 : 10),
|
|
65
|
+
commands: () => scope.enabled && (!options.automatic || scope.discover) ? toValue(commands).map((command) => ({ ...command, group: command.group ?? scope.label })) : []
|
|
66
|
+
});
|
|
67
|
+
onScopeDispose(unregister);
|
|
68
|
+
}
|
|
69
|
+
function mergePaletteCommands(discovered, manual) {
|
|
70
|
+
const overrides = new Map(manual.map((command) => [command.id, command]));
|
|
71
|
+
return uniqueCommands([...discovered.map((command) => overrides.get(command.id) ?? command), ...manual]);
|
|
72
|
+
}
|
|
73
|
+
const targets = /* @__PURE__ */ new WeakMap();
|
|
74
|
+
const vPalette = {
|
|
75
|
+
mounted(el, binding) {
|
|
76
|
+
if (el.closest("[data-lp-command-preview]")) return;
|
|
77
|
+
const owner = binding.instance?.$;
|
|
78
|
+
const ancestor = el.closest("[data-lp-command-scope]");
|
|
79
|
+
const scope = (ancestor && scopeElements.get(ancestor)) ?? owner?.provides?.[SCOPE];
|
|
80
|
+
if (!scope) return;
|
|
81
|
+
const value = shallowRef(binding.value);
|
|
82
|
+
const stop = scope.registry.register({ priority: scope.depth * 100 + 10, commands: () => scope.enabled ? [{
|
|
83
|
+
id: `${scope.id}/${value.value.id}`,
|
|
84
|
+
label: value.value.label,
|
|
85
|
+
description: value.value.description,
|
|
86
|
+
keywords: value.value.keywords,
|
|
87
|
+
group: scope.label,
|
|
88
|
+
disabled: el.matches(":disabled,[aria-disabled=true]"),
|
|
89
|
+
afterClose: () => {
|
|
90
|
+
if (!el.isConnected || el.matches(":disabled,[aria-disabled=true]")) return;
|
|
91
|
+
el.scrollIntoView({ block: "nearest" });
|
|
92
|
+
if (value.value.action === "click") el.click();
|
|
93
|
+
else el.focus({ preventScroll: true });
|
|
94
|
+
}
|
|
95
|
+
}] : [] });
|
|
96
|
+
targets.set(el, { stop, update: (next) => {
|
|
97
|
+
value.value = { ...next };
|
|
98
|
+
} });
|
|
99
|
+
},
|
|
100
|
+
updated(el, binding) {
|
|
101
|
+
targets.get(el)?.update(binding.value);
|
|
102
|
+
},
|
|
103
|
+
unmounted(el) {
|
|
104
|
+
targets.get(el)?.stop();
|
|
105
|
+
targets.delete(el);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
function usePaletteAction(options) {
|
|
109
|
+
const instance = getCurrentInstance();
|
|
110
|
+
const scope = usePaletteScope();
|
|
111
|
+
if (!instance || !scope || inject(BLOCKED, false)) return;
|
|
112
|
+
const domLabel = ref("");
|
|
113
|
+
const syncLabel = () => {
|
|
114
|
+
domLabel.value = options.element()?.textContent?.trim() ?? "";
|
|
115
|
+
};
|
|
116
|
+
onMounted(syncLabel);
|
|
117
|
+
onUpdated(syncLabel);
|
|
118
|
+
usePaletteCommands(() => {
|
|
119
|
+
const config = instance.props.palette;
|
|
120
|
+
const label = (config || {}).label ?? options.label?.() ?? domLabel.value;
|
|
121
|
+
if (config === false || !label) return [];
|
|
122
|
+
return [{
|
|
123
|
+
id: `${scope.id}/${config?.id ?? label}`,
|
|
124
|
+
label,
|
|
125
|
+
description: config?.description,
|
|
126
|
+
keywords: config?.keywords,
|
|
127
|
+
disabled: options.disabled?.(),
|
|
128
|
+
afterClose: () => {
|
|
129
|
+
if (!options.disabled?.()) options.element()?.click();
|
|
130
|
+
}
|
|
131
|
+
}];
|
|
132
|
+
}, { automatic: true });
|
|
133
|
+
}
|
|
134
|
+
function usePaletteControl(options = {}) {
|
|
135
|
+
const instance = getCurrentInstance();
|
|
136
|
+
const scope = usePaletteScope();
|
|
137
|
+
const blocked = inject(BLOCKED, false);
|
|
138
|
+
if (options.ownsChildren) suppressPaletteDiscovery();
|
|
139
|
+
if (!instance || !scope || blocked) return;
|
|
140
|
+
const text = useLabels("paletteControl", { focus: "Go to field" });
|
|
141
|
+
const field = useField();
|
|
142
|
+
const settings = () => instance.attrs.palette ?? instance.props.palette;
|
|
143
|
+
const label = () => (settings() || {}).label ?? options.label?.() ?? field?.value.label ?? instance.attrs["aria-label"];
|
|
144
|
+
const error = () => instance.props.error ?? field?.value.error;
|
|
145
|
+
const hint = () => instance.props.hint ?? field?.value.hint;
|
|
146
|
+
const writable = () => !!(instance.vnode.props?.["onUpdate:modelValue"] || instance.vnode.props?.["onUpdate:model-value"] || instance.props.action);
|
|
147
|
+
const focus = () => {
|
|
148
|
+
const el = instance.proxy?.$el;
|
|
149
|
+
const target = el?.matches?.('input,button,textarea,select,[tabindex="0"]') ? el : el?.querySelector('input:not([type="hidden"]),button,textarea,select,[tabindex="0"]');
|
|
150
|
+
target?.scrollIntoView({ block: "nearest" });
|
|
151
|
+
target?.focus({ preventScroll: true });
|
|
152
|
+
};
|
|
153
|
+
const Editor = {
|
|
154
|
+
name: "PaletteControlEditor",
|
|
155
|
+
setup() {
|
|
156
|
+
suppressPaletteDiscovery();
|
|
157
|
+
const editorId = `lp-palette-editor-${useId()}`;
|
|
158
|
+
provideField(computed(() => ({
|
|
159
|
+
id: editorId,
|
|
160
|
+
label: label(),
|
|
161
|
+
labelId: `${editorId}-label`,
|
|
162
|
+
describedBy: error() || hint() ? `${editorId}-message` : void 0,
|
|
163
|
+
required: !!(field?.value.required ?? instance.props.required),
|
|
164
|
+
disabled: !!options.disabled?.(),
|
|
165
|
+
invalid: !!options.invalid?.()
|
|
166
|
+
})));
|
|
167
|
+
return () => {
|
|
168
|
+
const raw = { ...instance.vnode.props, ...instance.props, ...options.editorProps?.() };
|
|
169
|
+
for (const key of Object.keys(raw)) if (key === "ref" || key === "key" || key.startsWith("onVnode")) delete raw[key];
|
|
170
|
+
return h("div", { class: "flex flex-col gap-3" }, [
|
|
171
|
+
h(raw.label ? "h3" : "label", { id: `${editorId}-label`, for: raw.label ? void 0 : editorId, class: "text-sm font-semibold text-ink" }, label()),
|
|
172
|
+
h(instance.type, {
|
|
173
|
+
...raw,
|
|
174
|
+
id: void 0,
|
|
175
|
+
name: void 0,
|
|
176
|
+
form: void 0,
|
|
177
|
+
autofocus: void 0,
|
|
178
|
+
palette: false,
|
|
179
|
+
disabled: options.disabled?.() || !writable(),
|
|
180
|
+
invalid: options.invalid?.(),
|
|
181
|
+
required: field?.value.required ?? instance.props.required,
|
|
182
|
+
"aria-label": label(),
|
|
183
|
+
class: "w-full",
|
|
184
|
+
style: void 0
|
|
185
|
+
}, instance.slots),
|
|
186
|
+
error() || hint() ? h("p", { id: `${editorId}-message`, class: error() ? "text-xs text-danger" : "text-xs text-muted", role: error() ? "alert" : void 0 }, error() || hint()) : null
|
|
187
|
+
]);
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
usePaletteCommands(() => {
|
|
192
|
+
const config = settings();
|
|
193
|
+
const name = label();
|
|
194
|
+
if (config === false || !name || options.available?.() === false) return [];
|
|
195
|
+
const id = `${scope.id}/${config?.id ?? instance.attrs.id ?? name}`;
|
|
196
|
+
return [{
|
|
197
|
+
id,
|
|
198
|
+
label: name,
|
|
199
|
+
description: config?.description,
|
|
200
|
+
keywords: config?.keywords,
|
|
201
|
+
disabled: options.disabled?.(),
|
|
202
|
+
previewComponent: Editor,
|
|
203
|
+
editInPreview: writable(),
|
|
204
|
+
afterClose: writable() ? void 0 : focus,
|
|
205
|
+
actions: [{ id: `${id}/focus`, label: text.value.focus, description: name, icon: "lucide:focus", afterClose: focus }]
|
|
206
|
+
}];
|
|
207
|
+
}, { automatic: true });
|
|
208
|
+
}
|
|
209
|
+
export {
|
|
210
|
+
bindPaletteScopeElement,
|
|
211
|
+
createPaletteRegistry,
|
|
212
|
+
mergePaletteCommands,
|
|
213
|
+
providePaletteScope,
|
|
214
|
+
suppressPaletteDiscovery,
|
|
215
|
+
usePaletteAction,
|
|
216
|
+
usePaletteCommands,
|
|
217
|
+
usePaletteControl,
|
|
218
|
+
usePaletteScope,
|
|
219
|
+
vPalette
|
|
220
|
+
};
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { ref, watch, toValue, onBeforeUnmount } from "vue";
|
|
2
2
|
import { prefersReducedMotion } from "./easing.js";
|
|
3
|
+
import { atScrollEnd } from "./scroll.js";
|
|
3
4
|
function useReveal(options = {}) {
|
|
4
5
|
const { threshold = 0.25, rootMargin = "0px 0px -10% 0px" } = options;
|
|
5
6
|
const el = ref(null);
|
|
6
7
|
const revealed = ref(typeof window === "undefined");
|
|
7
8
|
let observer = null;
|
|
9
|
+
let edge = null;
|
|
10
|
+
let onScroll = null;
|
|
8
11
|
function stop() {
|
|
9
12
|
observer?.disconnect();
|
|
10
13
|
observer = null;
|
|
14
|
+
edge?.disconnect();
|
|
15
|
+
edge = null;
|
|
16
|
+
if (onScroll) window.removeEventListener("scroll", onScroll, true);
|
|
17
|
+
onScroll = null;
|
|
11
18
|
}
|
|
12
19
|
function reveal() {
|
|
13
20
|
revealed.value = true;
|
|
@@ -34,6 +41,20 @@ function useReveal(options = {}) {
|
|
|
34
41
|
{ threshold, rootMargin }
|
|
35
42
|
);
|
|
36
43
|
observer.observe(node);
|
|
44
|
+
let onScreen = false;
|
|
45
|
+
const check = () => {
|
|
46
|
+
if (onScreen && atScrollEnd(node)) reveal();
|
|
47
|
+
};
|
|
48
|
+
edge = new IntersectionObserver(
|
|
49
|
+
(entries) => {
|
|
50
|
+
onScreen = entries.some((entry) => entry.isIntersecting);
|
|
51
|
+
check();
|
|
52
|
+
},
|
|
53
|
+
{ threshold }
|
|
54
|
+
);
|
|
55
|
+
edge.observe(node);
|
|
56
|
+
onScroll = check;
|
|
57
|
+
window.addEventListener("scroll", onScroll, { capture: true, passive: true });
|
|
37
58
|
},
|
|
38
59
|
{ immediate: true, flush: "post" }
|
|
39
60
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { inject, computed, provide } from "vue";
|
|
2
2
|
const LP_VIEW = /* @__PURE__ */ Symbol.for("lp-view");
|
|
3
3
|
function provideView(view) {
|
|
4
4
|
provide(LP_VIEW, view);
|
|
@@ -23,11 +23,18 @@ const ORIGIN = "lpViewDocument";
|
|
|
23
23
|
const FORWARDED = ["pointerdown", "pointerup", "click", "focusin", "keydown"];
|
|
24
24
|
function forwardViewEvents(from, to) {
|
|
25
25
|
const forward = (event) => {
|
|
26
|
-
if (event.type === "keydown"
|
|
26
|
+
if (event.type === "keydown") {
|
|
27
|
+
const key = event;
|
|
28
|
+
if (key.defaultPrevented || key.key !== "Escape" && !key.ctrlKey && !key.metaKey) return;
|
|
29
|
+
}
|
|
27
30
|
const Copy = event.constructor;
|
|
28
31
|
const copy = new Copy(event.type, event);
|
|
29
32
|
copy[ORIGIN] = from;
|
|
33
|
+
const path = event.composedPath();
|
|
34
|
+
Object.defineProperty(copy, "target", { value: event.target });
|
|
35
|
+
copy.composedPath = () => path;
|
|
30
36
|
to.dispatchEvent(copy);
|
|
37
|
+
if (copy.defaultPrevented) event.preventDefault();
|
|
31
38
|
};
|
|
32
39
|
for (const type of FORWARDED) from.addEventListener(type, forward);
|
|
33
40
|
return () => {
|
package/dist/icons-all.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -291,7 +291,7 @@ export { TONE_ALIASES, TONES, toneLook, toneOf } from "./components/tone";
|
|
|
291
291
|
export type { Tone, ToneLook, ToneName } from "./components/tone";
|
|
292
292
|
export { formatAmount, quotaSegments, quotaState } from "./components/quota";
|
|
293
293
|
export type { QuotaPart, QuotaSegment, QuotaState, QuotaUnit } from "./components/quota";
|
|
294
|
-
export { compactNumber, formatBytes } from "./components/format";
|
|
294
|
+
export { compactNumber, decimalMark, formatBytes } from "./components/format";
|
|
295
295
|
export type { CompactNumberOptions, FormatBytesOptions } from "./components/format";
|
|
296
296
|
export { STATUS_LABELS, STATUS_LOOK } from "./components/status";
|
|
297
297
|
export type { StatusKind, StatusLook } from "./components/status";
|
|
@@ -359,3 +359,16 @@ export { default as LpGlowBorder } from "./components/LpGlowBorder.vue";
|
|
|
359
359
|
export { default as LpMagnetic } from "./components/LpMagnetic.vue";
|
|
360
360
|
export { spotlightPoint, useSpotlight } from "./composables/useSpotlight";
|
|
361
361
|
export type { UseSpotlight, UseSpotlightOptions } from "./composables/useSpotlight";
|
|
362
|
+
export { default as LpCommandScope } from "./components/LpCommandScope.vue";
|
|
363
|
+
export { createPaletteRegistry, usePaletteCommands, mergePaletteCommands } from "./composables/usePaletteCommands";
|
|
364
|
+
export type { PaletteRegistry, PaletteControlOptions } from "./composables/usePaletteCommands";
|
|
365
|
+
export { PALETTE_MODES } from "./components/commandPalette";
|
|
366
|
+
export type { PaletteMode } from "./components/commandPalette";
|
|
367
|
+
export { searchCommandItems, swapCommandLayout } from "./components/commandSearch";
|
|
368
|
+
export type { CommandPrompt } from "./components/LpCommandPalette.vue";
|
|
369
|
+
export { usePaletteTheme } from "./theme/palette";
|
|
370
|
+
export { default as LpPaletteTheme } from "./components/LpPaletteTheme.vue";
|
|
371
|
+
export { vPalette } from "./composables/usePaletteCommands";
|
|
372
|
+
export type { PaletteTargetOptions } from "./composables/usePaletteCommands";
|
|
373
|
+
export { menuPaletteCommands } from "./components/commandPalette";
|
|
374
|
+
export type { PreviewableThemeStudio } from "./theme/studio";
|