@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
package/README.md
CHANGED
|
@@ -220,3 +220,106 @@ objects are edited, reordered or removed. The slot also provides `index`,
|
|
|
220
220
|
`LpInput clearable` adds a clear button that keeps focus in the input, respects
|
|
221
221
|
disabled/read-only state, and can be combined with the `trailing` slot. Its
|
|
222
222
|
button text comes from `labels.clear` or the app-wide `input` label scope.
|
|
223
|
+
|
|
224
|
+
### Browser regression tests
|
|
225
|
+
|
|
226
|
+
```sh
|
|
227
|
+
bunx playwright install chromium
|
|
228
|
+
bun run test:browser
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Playwright starts an isolated Vite server on port 4501. The suite covers field
|
|
232
|
+
locking, secret reveal controls, date/select focus boundaries and a mobile
|
|
233
|
+
form inside a guarded drawer. These checks run in CI and before npm publishing.
|
|
234
|
+
Use `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` to run an existing Chromium installation.
|
|
235
|
+
|
|
236
|
+
### Contextual command palette
|
|
237
|
+
|
|
238
|
+
Wrap the application (or a page and its palette) in `LpCommandScope`. Nested
|
|
239
|
+
scopes share a registry, prioritise page commands, and unregister on unmount.
|
|
240
|
+
`isolated` starts a separate registry for an embedded application or demo.
|
|
241
|
+
|
|
242
|
+
```vue
|
|
243
|
+
<script setup lang="ts">
|
|
244
|
+
import { ref } from 'vue'
|
|
245
|
+
import {
|
|
246
|
+
LpCommandScope, LpCommandPalette, LpFormField, LpNumberField,
|
|
247
|
+
useThemeStudio,
|
|
248
|
+
} from '@leavepulse/ui'
|
|
249
|
+
|
|
250
|
+
const studio = useThemeStudio()
|
|
251
|
+
const open = ref(false)
|
|
252
|
+
const cpu = ref(4)
|
|
253
|
+
</script>
|
|
254
|
+
|
|
255
|
+
<template>
|
|
256
|
+
<LpCommandScope id="settings" label="Settings" :theme="studio">
|
|
257
|
+
<LpFormField label="CPU limit">
|
|
258
|
+
<LpNumberField v-model="cpu" :min="1" :max="128" :palette="{ id: 'cpu' }" />
|
|
259
|
+
</LpFormField>
|
|
260
|
+
<LpCommandPalette v-model:open="open" preview-pane recent-key="my-app-palette" />
|
|
261
|
+
</LpCommandScope>
|
|
262
|
+
</template>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Named kit fields, buttons, tabs and disclosures register automatically in a
|
|
266
|
+
scope. A field uses its own label, its `LpFormField` label or `aria-label`.
|
|
267
|
+
`palette` metadata (`id`, `label`, `description`, `keywords`) refines its metadata;
|
|
268
|
+
`:palette="false"` excludes it. Passwords and secrets are excluded even when
|
|
269
|
+
revealed. Previews reuse the original component's model bindings and constraints;
|
|
270
|
+
Enter opens an editor on narrow screens too. Escape returns to results.
|
|
271
|
+
Preview components and compound control internals are excluded from discovery.
|
|
272
|
+
|
|
273
|
+
Tables take `:palette="{ id: 'services', label: 'Services', labelKey: 'name' }"`.
|
|
274
|
+
They publish the currently loaded/filtered rows and their existing `rowMenu`
|
|
275
|
+
actions. Searching an entire remote dataset still needs a search provider.
|
|
276
|
+
Menus with a title reuse their existing item definitions. `discover=false` on a
|
|
277
|
+
scope disables automatic component discovery while retaining manual commands and
|
|
278
|
+
an explicitly supplied Theme studio. `context=false` on the palette excludes
|
|
279
|
+
contextual commands.
|
|
280
|
+
|
|
281
|
+
Inside a descendant page component, `usePaletteCommands(() => [...])` registers
|
|
282
|
+
reactive manual commands for that page's lifetime. Alternatively pass `commands`
|
|
283
|
+
to `LpCommandScope` directly. Manual `commands` passed to the palette replace a
|
|
284
|
+
registered command with the same ID. `previewComponent` provides a rich preview;
|
|
285
|
+
`editInPreview` makes Enter focus it. Native markup can opt in with the locally
|
|
286
|
+
imported `vPalette` directive:
|
|
287
|
+
|
|
288
|
+
```vue
|
|
289
|
+
<button v-palette="{ id: 'refresh', label: 'Refresh servers', action: 'click' }"
|
|
290
|
+
@click="refresh">Refresh</button>
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
The directive defaults to focusing its target. `afterClose` on a manual command
|
|
294
|
+
runs after the palette releases its focus trap, suitable for focusing a field
|
|
295
|
+
or a lazily revealed section. Page hints can prepare that section in `onSelect`
|
|
296
|
+
and locate its existing `v-hint` target in `afterClose`.
|
|
297
|
+
|
|
298
|
+
Theme uses the same `ThemeStudio` as `LpThemeSwitcher` / `LpThemeStudio`; these
|
|
299
|
+
components also register it when inside a scope. The palette editor keeps a
|
|
300
|
+
local draft, shows it through `LpThemeProvider`, and commits only on Apply.
|
|
301
|
+
Revert or closing the editor discards pending edits. `usePaletteTheme(studio)`
|
|
302
|
+
registers a studio explicitly from a descendant component.
|
|
303
|
+
|
|
304
|
+
`modes` accepts providers under `people`, `channels`, `roles`, `commands`, `help`.
|
|
305
|
+
Their sigils are `@`, `#`, `&`, `>`, `?`. People/channels/roles appear when supplied;
|
|
306
|
+
commands and keyboard help are provided by default. Each provider is the same
|
|
307
|
+
static array or abortable `CommandFetcher` used by `children`.
|
|
308
|
+
|
|
309
|
+
Pin the highlighted leaf with the star button or Alt+P in the search box.
|
|
310
|
+
Pins have their own group and storage (`pinnedKey`, defaulting to
|
|
311
|
+
`${recentKey}:pinned`) and do not expire from recent history. Bind `pinned` /
|
|
312
|
+
`update:pinned` for external storage. Persistence uses the kit's configured
|
|
313
|
+
storage adapter.
|
|
314
|
+
|
|
315
|
+
A `prompt` command accepts `{ placeholder, initial, validate, submit }`.
|
|
316
|
+
Validation may be asynchronous; errors keep the input open, and changing the
|
|
317
|
+
value or leaving the step invalidates an outstanding validation. Async actions
|
|
318
|
+
are awaited, duplicate execution is blocked, and failures remain visible.
|
|
319
|
+
`undo(result)` adds an Undo toast only after successful execution; the application
|
|
320
|
+
supplies the actual inverse operation. Preview actions have visible buttons as
|
|
321
|
+
well as the Tab menu, including an Actions button on phones.
|
|
322
|
+
|
|
323
|
+
`LpPaletteFacts` and `LpPaletteStats` accept `loading`. Known labels retain their
|
|
324
|
+
place, values become skeletons; empty item lists receive placeholder rows.
|
|
325
|
+
Try the complete example at `/component/context-palette` in the preview.
|
|
@@ -5,71 +5,78 @@
|
|
|
5
5
|
* pane from its right edge as it grows. Animating the columns themselves made
|
|
6
6
|
* every line of the list and the pane re-wrap on every frame.
|
|
7
7
|
*/
|
|
8
|
-
.lp-cmd-dialog[data-v-
|
|
8
|
+
.lp-cmd-dialog[data-v-e9366efe] {
|
|
9
9
|
--lp-cmd-list: min(92vw, 40rem);
|
|
10
10
|
--lp-cmd-pane: max(0px, min(26rem, 96vw - var(--lp-cmd-list)));
|
|
11
11
|
width: var(--lp-cmd-list);
|
|
12
12
|
}
|
|
13
|
-
.lp-cmd-split[data-v-
|
|
13
|
+
.lp-cmd-split[data-v-e9366efe] {
|
|
14
14
|
transition:
|
|
15
15
|
width 300ms var(--ease-emphasized, ease),
|
|
16
16
|
min-height 300ms var(--ease-emphasized, ease);
|
|
17
17
|
}
|
|
18
18
|
@media (min-width: 768px) {
|
|
19
|
-
.lp-cmd-split .lp-cmd-list[data-v-
|
|
19
|
+
.lp-cmd-split .lp-cmd-list[data-v-e9366efe] {
|
|
20
20
|
flex: 0 0 auto;
|
|
21
21
|
/* the dialog's 1px border on each side */
|
|
22
22
|
width: calc(var(--lp-cmd-list) - 2px);
|
|
23
23
|
}
|
|
24
|
-
.lp-cmd-dialog[data-pane="open"][data-v-
|
|
24
|
+
.lp-cmd-dialog[data-pane="open"][data-v-e9366efe] {
|
|
25
25
|
width: calc(var(--lp-cmd-list) + var(--lp-cmd-pane));
|
|
26
26
|
min-height: min(76vh, 36rem);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
.lp-cmd-pane[data-v-
|
|
29
|
+
.lp-cmd-pane[data-v-e9366efe] {
|
|
30
30
|
width: var(--lp-cmd-pane);
|
|
31
31
|
}
|
|
32
|
+
.lp-cmd-dialog[data-editing] .lp-cmd-pane[data-v-e9366efe] {
|
|
33
|
+
width: 100%;
|
|
34
|
+
}
|
|
35
|
+
.lp-cmd-dialog[data-editing][data-v-e9366efe] {
|
|
36
|
+
width: var(--lp-cmd-list);
|
|
37
|
+
min-height: 0;
|
|
38
|
+
}
|
|
32
39
|
/*
|
|
33
40
|
* The pane rides in from the right edge while the dialog opens up to it, and
|
|
34
41
|
* leaves the same way, for as long as the dialog takes to close over it.
|
|
35
42
|
*/
|
|
36
|
-
.lp-cmd-pane-enter-active[data-v-
|
|
37
|
-
.lp-cmd-pane-leave-active[data-v-
|
|
43
|
+
.lp-cmd-pane-enter-active[data-v-e9366efe],
|
|
44
|
+
.lp-cmd-pane-leave-active[data-v-e9366efe] {
|
|
38
45
|
transition:
|
|
39
46
|
transform 300ms var(--ease-emphasized, ease),
|
|
40
47
|
opacity 300ms ease;
|
|
41
48
|
}
|
|
42
|
-
.lp-cmd-pane-enter-from[data-v-
|
|
43
|
-
.lp-cmd-pane-leave-to[data-v-
|
|
49
|
+
.lp-cmd-pane-enter-from[data-v-e9366efe],
|
|
50
|
+
.lp-cmd-pane-leave-to[data-v-e9366efe] {
|
|
44
51
|
opacity: 0;
|
|
45
52
|
transform: translateX(40%);
|
|
46
53
|
}
|
|
47
|
-
.lp-cmd-para[data-v-
|
|
54
|
+
.lp-cmd-para[data-v-e9366efe] {
|
|
48
55
|
--rise: 4px;
|
|
49
56
|
animation: rise-in 260ms ease-out both;
|
|
50
57
|
}
|
|
51
58
|
@media (prefers-reduced-motion: reduce) {
|
|
52
|
-
.lp-cmd-split[data-v-
|
|
53
|
-
.lp-cmd-pane-enter-active[data-v-
|
|
54
|
-
.lp-cmd-pane-leave-active[data-v-
|
|
59
|
+
.lp-cmd-split[data-v-e9366efe],
|
|
60
|
+
.lp-cmd-pane-enter-active[data-v-e9366efe],
|
|
61
|
+
.lp-cmd-pane-leave-active[data-v-e9366efe] {
|
|
55
62
|
transition: none;
|
|
56
63
|
}
|
|
57
|
-
.lp-cmd-para[data-v-
|
|
64
|
+
.lp-cmd-para[data-v-e9366efe] {
|
|
58
65
|
animation: none;
|
|
59
66
|
}
|
|
60
67
|
}
|
|
61
|
-
.lp-cmd-excerpt[data-v-
|
|
68
|
+
.lp-cmd-excerpt[data-v-e9366efe] {
|
|
62
69
|
display: -webkit-box;
|
|
63
70
|
-webkit-box-orient: vertical;
|
|
64
71
|
overflow: hidden;
|
|
65
72
|
}
|
|
66
73
|
/* Each result eases in; honours reduced motion. */
|
|
67
|
-
.lp-cmd-item[data-v-
|
|
74
|
+
.lp-cmd-item[data-v-e9366efe] {
|
|
68
75
|
--rise: 3px;
|
|
69
76
|
animation: rise-in 140ms ease-out both;
|
|
70
77
|
}
|
|
71
78
|
@media (prefers-reduced-motion: reduce) {
|
|
72
|
-
.lp-cmd-item[data-v-
|
|
79
|
+
.lp-cmd-item[data-v-e9366efe] {
|
|
73
80
|
animation: none;
|
|
74
81
|
}
|
|
75
82
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
.lp-palette-facts[data-v-
|
|
2
|
+
.lp-palette-facts[data-v-949a8890] {
|
|
3
3
|
min-width: 0;
|
|
4
4
|
}
|
|
5
|
-
.lp-palette-facts__title[data-v-
|
|
5
|
+
.lp-palette-facts__title[data-v-949a8890] {
|
|
6
6
|
margin: 0 0 0.4rem;
|
|
7
7
|
color: var(--color-muted);
|
|
8
8
|
font-size: 11px;
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
letter-spacing: 0.08em;
|
|
11
11
|
text-transform: uppercase;
|
|
12
12
|
}
|
|
13
|
-
.lp-palette-facts__list[data-v-
|
|
13
|
+
.lp-palette-facts__list[data-v-949a8890] {
|
|
14
14
|
display: grid;
|
|
15
15
|
gap: 2px;
|
|
16
16
|
margin: 0;
|
|
17
17
|
padding: 0;
|
|
18
18
|
list-style: none;
|
|
19
19
|
}
|
|
20
|
-
.lp-palette-facts__row[data-v-
|
|
20
|
+
.lp-palette-facts__row[data-v-949a8890] {
|
|
21
21
|
display: flex;
|
|
22
22
|
min-width: 0;
|
|
23
23
|
align-items: center;
|
|
@@ -29,26 +29,26 @@
|
|
|
29
29
|
font-size: 0.8125rem;
|
|
30
30
|
transition: background-color var(--duration-fast, 150ms) ease;
|
|
31
31
|
}
|
|
32
|
-
.lp-palette-facts--plain .lp-palette-facts__row[data-v-
|
|
32
|
+
.lp-palette-facts--plain .lp-palette-facts__row[data-v-949a8890] {
|
|
33
33
|
padding: 0.15rem 0;
|
|
34
34
|
background: transparent;
|
|
35
35
|
}
|
|
36
|
-
.lp-palette-facts__row.is-current[data-v-
|
|
36
|
+
.lp-palette-facts__row.is-current[data-v-949a8890] {
|
|
37
37
|
background: var(--color-brand-soft);
|
|
38
38
|
}
|
|
39
|
-
.lp-palette-facts--plain .lp-palette-facts__row.is-current[data-v-
|
|
39
|
+
.lp-palette-facts--plain .lp-palette-facts__row.is-current[data-v-949a8890] {
|
|
40
40
|
background: transparent;
|
|
41
41
|
color: var(--color-brand);
|
|
42
42
|
}
|
|
43
|
-
.lp-palette-facts__icon[data-v-
|
|
43
|
+
.lp-palette-facts__icon[data-v-949a8890] {
|
|
44
44
|
flex-shrink: 0;
|
|
45
45
|
color: var(--color-muted);
|
|
46
46
|
transition: color var(--duration-fast, 150ms) ease;
|
|
47
47
|
}
|
|
48
|
-
.is-current .lp-palette-facts__icon[data-v-
|
|
48
|
+
.is-current .lp-palette-facts__icon[data-v-949a8890] {
|
|
49
49
|
color: var(--color-brand);
|
|
50
50
|
}
|
|
51
|
-
.lp-palette-facts__dot[data-v-
|
|
51
|
+
.lp-palette-facts__dot[data-v-949a8890] {
|
|
52
52
|
width: 0.55rem;
|
|
53
53
|
height: 0.55rem;
|
|
54
54
|
flex-shrink: 0;
|
|
@@ -56,24 +56,24 @@
|
|
|
56
56
|
border-radius: 9999px;
|
|
57
57
|
box-shadow: 0 0 0 1px var(--color-line);
|
|
58
58
|
}
|
|
59
|
-
.lp-palette-facts__label[data-v-
|
|
59
|
+
.lp-palette-facts__label[data-v-949a8890] {
|
|
60
60
|
display: flex;
|
|
61
61
|
min-width: 0;
|
|
62
62
|
flex: 1;
|
|
63
63
|
flex-direction: column;
|
|
64
64
|
}
|
|
65
|
-
.lp-palette-facts__name[data-v-
|
|
65
|
+
.lp-palette-facts__name[data-v-949a8890] {
|
|
66
66
|
overflow: hidden;
|
|
67
67
|
text-overflow: ellipsis;
|
|
68
68
|
white-space: nowrap;
|
|
69
69
|
}
|
|
70
|
-
.lp-palette-facts__hint[data-v-
|
|
70
|
+
.lp-palette-facts__hint[data-v-949a8890] {
|
|
71
71
|
margin-top: 1px;
|
|
72
72
|
color: var(--color-muted);
|
|
73
73
|
font-size: 0.75rem;
|
|
74
74
|
line-height: 1.45;
|
|
75
75
|
}
|
|
76
|
-
.lp-palette-facts__value[data-v-
|
|
76
|
+
.lp-palette-facts__value[data-v-949a8890] {
|
|
77
77
|
display: inline-flex;
|
|
78
78
|
min-width: 0;
|
|
79
79
|
max-width: 55%;
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
font-variant-numeric: tabular-nums;
|
|
86
86
|
white-space: nowrap;
|
|
87
87
|
}
|
|
88
|
-
.lp-palette-facts__value[data-v-
|
|
88
|
+
.lp-palette-facts__value[data-v-949a8890] .lp-roll {
|
|
89
89
|
max-width: 100%;
|
|
90
90
|
}
|
|
91
|
-
.lp-palette-facts__value--mono[data-v-
|
|
91
|
+
.lp-palette-facts__value--mono[data-v-949a8890] {
|
|
92
92
|
font-family: var(--font-mono, ui-monospace, monospace);
|
|
93
93
|
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
.lp-palette-stats[data-v-
|
|
2
|
+
.lp-palette-stats[data-v-3d47406a] {
|
|
3
3
|
display: grid;
|
|
4
4
|
gap: 0.5rem;
|
|
5
5
|
margin: 0;
|
|
6
6
|
}
|
|
7
|
-
.lp-palette-stats__tile[data-v-
|
|
7
|
+
.lp-palette-stats__tile[data-v-3d47406a] {
|
|
8
8
|
min-width: 0;
|
|
9
9
|
padding: 0.5rem 0.65rem;
|
|
10
10
|
border: 1px solid var(--color-line);
|
|
11
11
|
border-radius: var(--radius-control);
|
|
12
12
|
background: color-mix(in srgb, var(--color-surface-soft) 55%, transparent);
|
|
13
13
|
}
|
|
14
|
-
dt[data-v-
|
|
14
|
+
dt[data-v-3d47406a] {
|
|
15
15
|
overflow: hidden;
|
|
16
16
|
color: var(--color-muted);
|
|
17
17
|
font-size: 11px;
|
|
18
18
|
text-overflow: ellipsis;
|
|
19
19
|
white-space: nowrap;
|
|
20
20
|
}
|
|
21
|
-
dd[data-v-
|
|
21
|
+
dd[data-v-3d47406a] {
|
|
22
22
|
display: flex;
|
|
23
23
|
min-width: 0;
|
|
24
24
|
margin: 2px 0 0;
|
|
@@ -28,6 +28,6 @@ dd[data-v-dc30a10e] {
|
|
|
28
28
|
font-variant-numeric: tabular-nums;
|
|
29
29
|
line-height: 1.3;
|
|
30
30
|
}
|
|
31
|
-
dd[data-v-
|
|
31
|
+
dd[data-v-3d47406a] .lp-roll {
|
|
32
32
|
max-width: 100%;
|
|
33
33
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
.lp-repeater-move,
|
|
3
|
+
.lp-repeater-enter-active,
|
|
4
|
+
.lp-repeater-leave-active {
|
|
5
|
+
transition: transform var(--duration-fast) var(--ease-emphasized), opacity var(--duration-fast) var(--ease-emphasized);
|
|
6
|
+
}
|
|
7
|
+
.lp-repeater-leave-active {
|
|
8
|
+
position: absolute;
|
|
9
|
+
}
|
|
10
|
+
.lp-repeater-enter-from,
|
|
11
|
+
.lp-repeater-leave-to {
|
|
12
|
+
opacity: 0;
|
|
13
|
+
transform: translateY(-0.5rem);
|
|
14
|
+
}
|
|
15
|
+
@media (prefers-reduced-motion: reduce) {
|
|
16
|
+
.lp-repeater-move,
|
|
17
|
+
.lp-repeater-enter-active,
|
|
18
|
+
.lp-repeater-leave-active {
|
|
19
|
+
transition: none;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -15,6 +15,13 @@
|
|
|
15
15
|
white-space: nowrap;
|
|
16
16
|
backface-visibility: hidden;
|
|
17
17
|
}
|
|
18
|
+
.lp-roll--wrap {
|
|
19
|
+
max-width: 100%;
|
|
20
|
+
}
|
|
21
|
+
.lp-roll--wrap .lp-roll__item {
|
|
22
|
+
white-space: normal;
|
|
23
|
+
overflow-wrap: anywhere;
|
|
24
|
+
}
|
|
18
25
|
|
|
19
26
|
/* The outgoing copy leaves the flow so the incoming one keeps the baseline. */
|
|
20
27
|
.lp-roll-up-leave-active,
|
|
@@ -11,17 +11,17 @@
|
|
|
11
11
|
* fade before closing the gap and the whole list lurches at the end instead of
|
|
12
12
|
* gliding.
|
|
13
13
|
*/
|
|
14
|
-
.lp-row-enter-active[data-v-
|
|
15
|
-
.lp-row-leave-active[data-v-
|
|
14
|
+
.lp-row-enter-active[data-v-c1911001],
|
|
15
|
+
.lp-row-leave-active[data-v-c1911001] {
|
|
16
16
|
transition:
|
|
17
17
|
opacity var(--duration-fast) var(--ease-emphasized),
|
|
18
18
|
transform var(--duration-fast) var(--ease-emphasized);
|
|
19
19
|
}
|
|
20
|
-
.lp-row-move[data-v-
|
|
20
|
+
.lp-row-move[data-v-c1911001] {
|
|
21
21
|
transition: transform var(--duration-medium) var(--ease-emphasized);
|
|
22
22
|
}
|
|
23
|
-
.lp-row-enter-from[data-v-
|
|
24
|
-
.lp-row-leave-to[data-v-
|
|
23
|
+
.lp-row-enter-from[data-v-c1911001],
|
|
24
|
+
.lp-row-leave-to[data-v-c1911001] {
|
|
25
25
|
opacity: 0;
|
|
26
26
|
transform: translateX(-0.5rem);
|
|
27
27
|
}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* drops out of the table layout entirely. Nothing sits below this row to be
|
|
36
36
|
* dragged around, so simply not animating its exit costs nothing.
|
|
37
37
|
*/
|
|
38
|
-
.lp-row-empty.lp-row-leave-active[data-v-
|
|
38
|
+
.lp-row-empty.lp-row-leave-active[data-v-c1911001] {
|
|
39
39
|
display: none;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
* once anything is selected. An earlier version collapsed the column to nothing
|
|
55
55
|
* and floated the hover box over the first cell, where it sat on the text.
|
|
56
56
|
*/
|
|
57
|
-
.lp-tick[data-v-
|
|
57
|
+
.lp-tick[data-v-c1911001] {
|
|
58
58
|
display: flex;
|
|
59
59
|
align-items: center;
|
|
60
60
|
max-width: 0;
|
|
@@ -66,17 +66,17 @@
|
|
|
66
66
|
padding var(--duration-medium) var(--ease-emphasized),
|
|
67
67
|
opacity var(--duration-fast) ease;
|
|
68
68
|
}
|
|
69
|
-
.lp-tick-open[data-v-
|
|
69
|
+
.lp-tick-open[data-v-c1911001] {
|
|
70
70
|
max-width: 3.25rem;
|
|
71
71
|
padding-inline: 1rem;
|
|
72
72
|
opacity: 1;
|
|
73
73
|
}
|
|
74
|
-
.lp-tick-hidden[data-v-
|
|
75
|
-
.lp-tick-cue[data-v-
|
|
74
|
+
.lp-tick-hidden[data-v-c1911001],
|
|
75
|
+
.lp-tick-cue[data-v-c1911001] {
|
|
76
76
|
opacity: 0;
|
|
77
77
|
}
|
|
78
|
-
tr:hover .lp-tick-cue[data-v-
|
|
79
|
-
.lp-tick-cue[data-v-
|
|
78
|
+
tr:hover .lp-tick-cue[data-v-c1911001],
|
|
79
|
+
.lp-tick-cue[data-v-c1911001]:focus-within {
|
|
80
80
|
opacity: 1;
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -84,24 +84,24 @@ tr:hover .lp-tick-cue[data-v-18479205],
|
|
|
84
84
|
turned down the rows change without animating rather than not changing. */
|
|
85
85
|
/* Only where there is a hover to reveal it; a finger long-presses instead. */
|
|
86
86
|
@media (hover: none) {
|
|
87
|
-
tr:hover .lp-tick-cue[data-v-
|
|
87
|
+
tr:hover .lp-tick-cue[data-v-c1911001] {
|
|
88
88
|
opacity: 0;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/* Nor is there anything for the column's width to hold until then: on a
|
|
92
92
|
touch screen it stays closed until a long press starts selecting, and
|
|
93
93
|
eases open like the rest of the column. */
|
|
94
|
-
.lp-tick-hidden[data-v-
|
|
95
|
-
.lp-tick-cue[data-v-
|
|
94
|
+
.lp-tick-hidden[data-v-c1911001],
|
|
95
|
+
.lp-tick-cue[data-v-c1911001] {
|
|
96
96
|
max-width: 0;
|
|
97
97
|
padding-inline: 0;
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
@media (prefers-reduced-motion: reduce) {
|
|
101
|
-
.lp-row-enter-active[data-v-
|
|
102
|
-
.lp-row-leave-active[data-v-
|
|
103
|
-
.lp-row-move[data-v-
|
|
104
|
-
.lp-tick[data-v-
|
|
101
|
+
.lp-row-enter-active[data-v-c1911001],
|
|
102
|
+
.lp-row-leave-active[data-v-c1911001],
|
|
103
|
+
.lp-row-move[data-v-c1911001],
|
|
104
|
+
.lp-tick[data-v-c1911001] {
|
|
105
105
|
transition: none;
|
|
106
106
|
}
|
|
107
107
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
.lp-tab-badge-enter-active[data-v-2c920d5a],
|
|
3
|
+
.lp-tab-badge-leave-active[data-v-2c920d5a] {
|
|
4
|
+
transition:
|
|
5
|
+
opacity var(--duration-fast) var(--ease-emphasized),
|
|
6
|
+
transform var(--duration-fast) var(--ease-emphasized);
|
|
7
|
+
}
|
|
8
|
+
.lp-tab-badge-enter-from[data-v-2c920d5a],
|
|
9
|
+
.lp-tab-badge-leave-to[data-v-2c920d5a] {
|
|
10
|
+
opacity: 0;
|
|
11
|
+
transform: scale(0.6);
|
|
12
|
+
}
|
|
13
|
+
@media (prefers-reduced-motion: reduce) {
|
|
14
|
+
.lp-tab-badge-enter-active[data-v-2c920d5a],
|
|
15
|
+
.lp-tab-badge-leave-active[data-v-2c920d5a] {
|
|
16
|
+
transition: none;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, resolveDynamicComponent, createCommentVNode, withCtx, normalizeClass, createElementVNode, createTextVNode, toDisplayString, createVNode, withModifiers } from "vue";
|
|
1
|
+
import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, resolveDynamicComponent, createCommentVNode, withCtx, normalizeClass, createElementVNode, createTextVNode, toDisplayString, createVNode, unref, withModifiers } from "vue";
|
|
2
2
|
import { DropdownMenuPortal, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuSub, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuItem, ContextMenuPortal, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuSub, ContextMenuSeparator, ContextMenuCheckboxItem, ContextMenuItem } from "reka-ui";
|
|
3
|
-
import {
|
|
3
|
+
import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
|
|
4
5
|
import MenuShortcut from "../components/MenuShortcut.vue.js";
|
|
5
6
|
const _hoisted_1 = { class: "flex items-center gap-2" };
|
|
6
7
|
const _hoisted_2 = { class: "flex items-center gap-2" };
|
|
@@ -38,6 +39,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
41
|
const P = computed(() => PRIMITIVES[props.kind]);
|
|
42
|
+
const portalTo = usePortalTarget();
|
|
43
|
+
const guardOutside = useOutsideGuard();
|
|
41
44
|
return (_ctx, _cache) => {
|
|
42
45
|
const _component_ContextMenuItems = resolveComponent("ContextMenuItems", true);
|
|
43
46
|
return openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
|
|
@@ -70,9 +73,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
70
73
|
]),
|
|
71
74
|
_: 2
|
|
72
75
|
}, 1032, ["class", "disabled"])),
|
|
73
|
-
(openBlock(), createBlock(resolveDynamicComponent(P.value.Portal),
|
|
76
|
+
(openBlock(), createBlock(resolveDynamicComponent(P.value.Portal), { to: unref(portalTo) }, {
|
|
74
77
|
default: withCtx(() => [
|
|
75
78
|
(openBlock(), createBlock(resolveDynamicComponent(P.value.SubContent), {
|
|
79
|
+
onInteractOutside: unref(guardOutside),
|
|
80
|
+
onFocusOutside: unref(guardOutside),
|
|
81
|
+
onEscapeKeyDown: unref(guardOutside),
|
|
76
82
|
"collision-padding": 8,
|
|
77
83
|
class: normalizeClass(__props.panel),
|
|
78
84
|
"side-offset": 2,
|
|
@@ -86,10 +92,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
86
92
|
}, null, 8, ["items", "panel", "kind"])
|
|
87
93
|
]),
|
|
88
94
|
_: 2
|
|
89
|
-
},
|
|
95
|
+
}, 1064, ["onInteractOutside", "onFocusOutside", "onEscapeKeyDown", "class"]))
|
|
90
96
|
]),
|
|
91
97
|
_: 2
|
|
92
|
-
},
|
|
98
|
+
}, 1032, ["to"]))
|
|
93
99
|
]),
|
|
94
100
|
_: 2
|
|
95
101
|
}, 1024)) : item.checked !== void 0 ? (openBlock(), createBlock(resolveDynamicComponent(P.value.CheckboxItem), {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, useModel, ref, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode, toDisplayString, normalizeClass, mergeModels } from "vue";
|
|
2
|
-
import { _ as _sfc_main$2 } from "./LpButton-
|
|
3
|
-
import { _ as _sfc_main$1 } from "./LpInput-
|
|
2
|
+
import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
|
|
3
|
+
import { _ as _sfc_main$1 } from "./LpInput-2H-5ILOB.js";
|
|
4
4
|
const _hoisted_1 = { class: "flex w-full flex-col gap-1.5" };
|
|
5
5
|
const _hoisted_2 = { class: "flex items-center gap-2" };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, useAttrs, ref, openBlock, createBlock, resolveDynamicComponent, normalizeStyle, unref, normalizeClass, withCtx, renderSlot } from "vue";
|
|
2
|
-
import { _ as _sfc_main$1 } from "./LpFormField-
|
|
2
|
+
import { _ as _sfc_main$1 } from "./LpFormField-gRASfyj2.js";
|
|
3
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
4
|
...{ inheritAttrs: false },
|
|
5
5
|
__name: "FieldWrapper",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, computed, openBlock, createElementBlock, createVNode, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
|
|
2
|
-
import { _ as _sfc_main$1 } from "./LayoutNode-
|
|
2
|
+
import { _ as _sfc_main$1 } from "./LayoutNode-CTTTLMDM.js";
|
|
3
3
|
import { resizeAt, setActiveTab, reorderTab, removeBlock, moveLeaf } from "../layout/tree.js";
|
|
4
4
|
import { layoutController } from "../layout/useLayout.js";
|
|
5
5
|
const _hoisted_1 = { class: "flex min-h-0 min-w-0 flex-1" };
|
|
@@ -2,7 +2,7 @@ import { defineComponent, ref, computed, onBeforeUnmount, resolveComponent, open
|
|
|
2
2
|
import { Motion } from "motion-v";
|
|
3
3
|
import { usePillTransition } from "../composables/usePillTransition.js";
|
|
4
4
|
import { blockTitle } from "../layout/registry.js";
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpIcon-
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
|
|
6
6
|
const _hoisted_1 = ["onPointerdown"];
|
|
7
7
|
const _hoisted_2 = {
|
|
8
8
|
key: 1,
|
|
@@ -2,8 +2,8 @@ import { defineComponent, useSlots, computed, ref, watch, openBlock, createBlock
|
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
3
|
import { useBarStack } from "../components/actionBar.js";
|
|
4
4
|
import { CLOSE_ICON } from "../components/dropdown.js";
|
|
5
|
-
import { _ as _sfc_main$2 } from "./LpButton-
|
|
6
|
-
import { _ as _sfc_main$1 } from "./LpIcon-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
|
|
6
|
+
import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
|
|
7
7
|
import { _ as _sfc_main$3 } from "./LpLoader-DjJEX8hL.js";
|
|
8
8
|
import { usePortalTarget } from "../composables/useView.js";
|
|
9
9
|
import { useResizeObserver } from "../composables/useResizeObserver.js";
|
|
@@ -2,13 +2,13 @@ import { defineComponent, defineAsyncComponent, computed, watch, ref, onMounted,
|
|
|
2
2
|
import { useAsyncTask } from "../composables/useAsyncTask.js";
|
|
3
3
|
import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress } from "../components/address.js";
|
|
4
4
|
import { flagEmoji, loadCountries } from "../components/countries.js";
|
|
5
|
-
import { _ as _sfc_main$2 } from "./LpAutocomplete-
|
|
6
|
-
import { _ as _sfc_main$3 } from "./LpButton-
|
|
7
|
-
import { _ as _sfc_main$1 } from "./LpFormField-
|
|
8
|
-
import { _ as _sfc_main$4 } from "./LpIcon-
|
|
9
|
-
import { _ as _sfc_main$5 } from "./LpInput-
|
|
10
|
-
import { _ as _sfc_main$7 } from "./LpModal-
|
|
11
|
-
import { _ as _sfc_main$6 } from "./LpSelect-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpAutocomplete-DDqe2M5g.js";
|
|
6
|
+
import { _ as _sfc_main$3 } from "./LpButton-BQDAFXBd.js";
|
|
7
|
+
import { _ as _sfc_main$1 } from "./LpFormField-gRASfyj2.js";
|
|
8
|
+
import { _ as _sfc_main$4 } from "./LpIcon-DkP-9mzK.js";
|
|
9
|
+
import { _ as _sfc_main$5 } from "./LpInput-2H-5ILOB.js";
|
|
10
|
+
import { _ as _sfc_main$7 } from "./LpModal-CpH0bNo7.js";
|
|
11
|
+
import { _ as _sfc_main$6 } from "./LpSelect-DYX2-u5A.js";
|
|
12
12
|
import { useFieldControl } from "../composables/useField.js";
|
|
13
13
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
14
14
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, computed, useSlots, openBlock, createElementBlock, mergeProps, unref, createElementVNode, createVNode, Transition, withCtx, createBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot } from "vue";
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
3
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
4
|
-
import { _ as _sfc_main$2 } from "./LpIcon-
|
|
4
|
+
import { _ as _sfc_main$2 } from "./LpIcon-DkP-9mzK.js";
|
|
5
5
|
import { _ as _sfc_main$1 } from "./LpLoader-DjJEX8hL.js";
|
|
6
6
|
import { _ as _sfc_main$3 } from "./LpSwap-DzE6M3Mg.js";
|
|
7
7
|
import { slotText } from "../components/slotText.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineComponent, computed, useModel, ref, useId, watch, openBlock, createElementBlock, mergeProps, unref, createElementVNode, withModifiers, toDisplayString, createVNode, createSlots, withCtx, renderSlot, normalizeProps, guardReactiveProps, normalizeClass, createBlock, mergeModels } from "vue";
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
|
-
import { _ as _sfc_main$2 } from "./LpButton-
|
|
4
|
-
import { _ as _sfc_main$3 } from "./LpIcon-
|
|
3
|
+
import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
|
|
4
|
+
import { _ as _sfc_main$3 } from "./LpIcon-DkP-9mzK.js";
|
|
5
5
|
import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
6
6
|
import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
|
|
7
|
-
import { _ as _sfc_main$1 } from "./LpSidebar-
|
|
7
|
+
import { _ as _sfc_main$1 } from "./LpSidebar-D44peKq2.js";
|
|
8
8
|
import { useMergedAttrs, mergeClass } from "../composables/useMergedClass.js";
|
|
9
9
|
const _hoisted_1 = ["href"];
|
|
10
10
|
const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
|