@leavepulse/ui 0.69.0 → 0.70.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/assets/LoaderMark-DxBV2iDJ.css +43 -0
- package/dist/assets/LpActivityLine-B3EwNQEB.css +33 -0
- package/dist/assets/{LpCommandPalette-DxyjhYn_.css → LpCommandPalette-u-zOxKWa.css} +21 -31
- package/dist/assets/LpDock-Cbh0wQUv.css +17 -0
- package/dist/assets/{LpDropzone-Qb8k7cg4.css → LpDropzone-Bb1vBTeU.css} +12 -17
- package/dist/assets/{LpImageEditor-CElPDzpF.css → LpImageEditor-XM5bAziW.css} +6 -6
- package/dist/assets/LpLogViewer-BDNW6P52.css +38 -0
- package/dist/assets/{LpPalettePreview-CJmAKgYW.css → LpPalettePreview-B9VKDrvA.css} +2 -7
- package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
- package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
- package/dist/assets/LpShinyText-D69cBYDR.css +61 -0
- package/dist/assets/LpStatus-430OGTZY.css +17 -0
- package/dist/assets/LpStepMark-Drvx33Vg.css +10 -0
- package/dist/assets/{LpTable-BPERfJIk.css → LpTable-DHxEQ_-3.css} +19 -19
- package/dist/assets/LpTabs-BJ-nrJuI.css +18 -0
- package/dist/assets/LpTextReveal-DjI1MsDS.css +35 -0
- package/dist/assets/LpTypewriter-CXAm9Nca.css +27 -0
- package/dist/chunks/AttentionDot-DCBf4aWg.js +25 -0
- package/dist/chunks/{ContextMenuItems-B7XFHksm.js → ContextMenuItems-6kxEivBI.js} +11 -5
- package/dist/chunks/{DropzoneLinkField-CjkrpDqO.js → DropzoneLinkField-Bw8Flkhk.js} +2 -2
- package/dist/chunks/FieldWrapper-BiennROB.js +43 -0
- package/dist/chunks/{LayoutCanvas-DF9CovaK.js → LayoutCanvas-BsJIzhdd.js} +1 -1
- package/dist/chunks/{LayoutNode-D9bIFzk0.js → LayoutNode-DJVhkSGk.js} +6 -8
- package/dist/chunks/LegendSwatch-BhRjrtzv.js +18 -0
- package/dist/chunks/LoaderMark-C1dubiKn.js +85 -0
- package/dist/chunks/{LpActionBar-MPKMu3pz.js → LpActionBar-CzOFar5t.js} +14 -20
- package/dist/chunks/LpActivityLine-CJvzrNpj.js +95 -0
- package/dist/chunks/{LpAddressInput-DG0BTqdH.js → LpAddressInput-Chv_Xf8q.js} +7 -7
- package/dist/chunks/LpAlert-C5igj802.js +119 -0
- package/dist/chunks/{LpAppShell-DPh1756q.js → LpAppShell-BiWByLmt.js} +15 -16
- package/dist/chunks/{LpAutocomplete-Dgn6hw3p.js → LpAutocomplete-D92niDHE.js} +15 -32
- package/dist/chunks/{LpAvatar-Bs0Fb1lC.js → LpAvatar-CLPl-qOF.js} +18 -6
- package/dist/chunks/LpBadge-BBq1Er9T.js +126 -0
- package/dist/chunks/LpBreadcrumbs-JKEi_yFF.js +144 -0
- package/dist/chunks/{LpButton-DNR-YAq5.js → LpButton-CVxBfGjd.js} +12 -4
- package/dist/chunks/{LpCalendar-BLya39Fh.js → LpCalendar-pVL91-Pl.js} +1 -1
- package/dist/chunks/{LpCard-Bf71NXZq.js → LpCard-CqKLnEhl.js} +18 -8
- package/dist/chunks/{LpCheckbox-Da5oZPHo.js → LpCheckbox-DHc2bHDe.js} +9 -6
- package/dist/chunks/{LpCodeBlock-lLbmslfs.js → LpCodeBlock-BGsQhxw8.js} +24 -32
- package/dist/chunks/LpCodeDisplay-CbJMs-IK.js +189 -0
- package/dist/chunks/LpCollapse-CWS9M_lm.js +115 -0
- package/dist/chunks/{LpColorPicker-DtEfBAcK.js → LpColorPicker-B7HSIFmn.js} +11 -6
- package/dist/chunks/{LpConfirmDialog-D7s4jakB.js → LpConfirmDialog-CfGCux8m.js} +3 -3
- package/dist/chunks/{LpConfirmHost-DrYI5y1K.js → LpConfirmHost-exB7JmcO.js} +1 -1
- package/dist/chunks/{LpContextMenu-CRnjoqSt.js → LpContextMenu-Cj96ENDC.js} +16 -7
- package/dist/chunks/LpCopyButton-DzHjnFs0.js +133 -0
- package/dist/chunks/LpCountdown-BQnmB4gq.js +231 -0
- package/dist/chunks/LpDataList-CHNYQw7h.js +121 -0
- package/dist/chunks/LpDatePicker-ac1_6o5P.js +169 -0
- package/dist/chunks/LpDateRangePicker-B15gYrZJ.js +127 -0
- package/dist/chunks/{LpDisclosure-6AplYBub.js → LpDisclosure-DOarzlAG.js} +22 -11
- package/dist/chunks/{LpDrawer-Q4SOxM4s.js → LpDrawer-DGNKRsGq.js} +9 -4
- package/dist/chunks/{LpDropdownMenu-DWTt0ooM.js → LpDropdownMenu-R4aYVtVV.js} +14 -6
- package/dist/chunks/LpEditable-Ws3DNQHn.js +238 -0
- package/dist/chunks/{LpEmptyState-om1UnFjV.js → LpEmptyState-KTKipws2.js} +1 -1
- package/dist/chunks/{LpFieldNotice-CHuDeLjc.js → LpFieldNotice-CurbNuXI.js} +1 -1
- package/dist/chunks/{LpFileTree-CW24YsVX.js → LpFileTree-DDNg34tJ.js} +5 -3
- package/dist/chunks/{LpFileTreeNode-BXhTHaKW.js → LpFileTreeNode-DmPuYNZ_.js} +42 -55
- package/dist/chunks/{LpFormField-DPb47HEm.js → LpFormField-BWwgm1E4.js} +23 -9
- package/dist/chunks/LpFrame-BVQCQLDI.js +155 -0
- package/dist/chunks/LpGauge-C14Z9503.js +204 -0
- package/dist/chunks/LpGlowBorder-B8V-QzIl.js +40 -0
- package/dist/chunks/{LpHintExample-C1eKYdeL.js → LpHintExample-9Py0wc-L.js} +11 -34
- package/dist/chunks/{LpHintLayer-7UOdWQG3.js → LpHintLayer-HvwUA5Ec.js} +27 -14
- package/dist/chunks/{LpHints-BUtBp9-w.js → LpHints-DxbPKOzQ.js} +3 -3
- package/dist/chunks/LpHoverCard-spGxyw7T.js +130 -0
- package/dist/chunks/{LpIcon-6tSrZ3Zy.js → LpIcon-HJP5xMz4.js} +1 -1
- package/dist/chunks/LpIdenticon-BzdC_qz9.js +63 -0
- package/dist/chunks/{LpInfraNode-Ds_8SZgN.js → LpInfraNode-D64hywJI.js} +39 -25
- package/dist/chunks/{LpInput-CUyr6PIE.js → LpInput-CDuwODJG.js} +44 -18
- package/dist/chunks/{LpLightbox-B9J8rzsj.js → LpLightbox-XJ0LpTcZ.js} +69 -69
- package/dist/chunks/LpLoader-DjJEX8hL.js +92 -0
- package/dist/chunks/{LpLogViewer-4QFc-sVN.js → LpLogViewer-DKK4ySZl.js} +225 -129
- package/dist/chunks/LpMagnetic-CtXKLa2Y.js +62 -0
- package/dist/chunks/{LpMapPicker-BTbkFeSG.js → LpMapPicker-BtIl7NOM.js} +34 -31
- package/dist/chunks/LpMasonry--k0571qG.js +185 -0
- package/dist/chunks/{LpMediaGallery-CuPcscx3.js → LpMediaGallery-rmI1DjKN.js} +3 -3
- package/dist/chunks/{LpModal-hk1noDcr.js → LpModal-eBMt2Fqn.js} +8 -3
- package/dist/chunks/{LpModalNav-DQd2keZm.js → LpModalNav-DiyFCHiZ.js} +4 -4
- package/dist/chunks/{LpNotificationBell-X84PJIxD.js → LpNotificationBell-D-WhE5m2.js} +32 -48
- package/dist/chunks/LpNumberField-B9k-h2HE.js +140 -0
- package/dist/chunks/{LpNumberFlow-z4WPZcZu.js → LpNumberFlow-Cfyh033Q.js} +8 -28
- package/dist/chunks/{LpOtpInput-PbeNJ5In.js → LpOtpInput-CeBPsM7D.js} +2 -1
- package/dist/chunks/{LpPagination-Bx-VG4Ag.js → LpPagination-VNCX6pFC.js} +37 -6
- package/dist/chunks/{LpPalettePreview-CFav_7co.js → LpPalettePreview-BNB8T_MY.js} +1 -1
- package/dist/chunks/{LpPasswordInput-CbnXitAS.js → LpPasswordInput-GL2KOFK8.js} +26 -22
- package/dist/chunks/{LpPhoneInput-DP69HONS.js → LpPhoneInput-C60tx1tC.js} +12 -7
- package/dist/chunks/{LpPie-yLF9-aDR.js → LpPie-BgXZ3xmm.js} +159 -48
- package/dist/chunks/LpPipeline-B31h41Mu.js +329 -0
- package/dist/chunks/{LpPopover-DVnkHaOu.js → LpPopover-DmZ3wUtP.js} +13 -7
- package/dist/chunks/{LpProgress-CA86wxXu.js → LpProgress-CE-m5OpD.js} +23 -63
- package/dist/chunks/LpQuota-DaL8TgNe.js +162 -0
- package/dist/chunks/{LpRadioGroup-8S5hf8lE.js → LpRadioGroup-CGBr5nIp.js} +1 -1
- package/dist/chunks/{LpRangeCalendar-ByQi-WUz.js → LpRangeCalendar-c5qj7YcC.js} +1 -1
- package/dist/chunks/{LpRangeSlider-C1yF9-nP.js → LpRangeSlider-Dv6lNvHY.js} +6 -2
- package/dist/chunks/LpRelativeTime-yin9uQP7.js +73 -0
- package/dist/chunks/LpRepeater-D0S7jjwr.js +180 -0
- package/dist/chunks/LpRevealOnScroll-DcQjexLy.js +76 -0
- package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
- package/dist/chunks/LpScramble-TDO5Kdou.js +85 -0
- package/dist/chunks/LpSecretField-CfWyHv9m.js +316 -0
- package/dist/chunks/{LpSection-BmRXe6ZP.js → LpSection-BW4xJ-Li.js} +1 -1
- package/dist/chunks/{LpSegmented-CW3bFHM4.js → LpSegmented-BO99Sr4m.js} +11 -14
- package/dist/chunks/{LpSelect-BCyDYoih.js → LpSelect-C_8cJtj6.js} +91 -111
- package/dist/chunks/LpShaderBackdrop-Bote0iuy.js +332 -0
- package/dist/chunks/LpShinyText-DX2ajtWq.js +48 -0
- package/dist/chunks/{LpSidebar-DfIiS-lB.js → LpSidebar-CZRXtvem.js} +5 -3
- package/dist/chunks/{LpSidebarNav-C5FDNI0t.js → LpSidebarNav-DBg1U1oW.js} +3 -3
- package/dist/chunks/{LpSlider-Cuzmrd7p.js → LpSlider-DuoRpOrH.js} +6 -2
- package/dist/chunks/{LpSparkline-DXT4KrSi.js → LpSparkline-CExIRDb3.js} +32 -27
- package/dist/chunks/LpSpotlight-4F3NeUMY.js +41 -0
- package/dist/chunks/{LpStat-iBMF5QNk.js → LpStat-DFKlPJgy.js} +38 -35
- package/dist/chunks/LpStatus-BsGLrpor.js +86 -0
- package/dist/chunks/LpStepMark-TrzOioa9.js +101 -0
- package/dist/chunks/LpStepper-BbnS5jUr.js +76 -0
- package/dist/chunks/{LpSwap-D82jiecV.js → LpSwap-DzE6M3Mg.js} +1 -1
- package/dist/chunks/LpSwitch-DrzKrZZV.js +112 -0
- package/dist/chunks/{LpTableFilter-CuIbgdW0.js → LpTableFilter-DyvHGbOk.js} +3 -2
- package/dist/chunks/{LpTableOfContents-C_4VBktT.js → LpTableOfContents-rYvo8z5T.js} +34 -21
- package/dist/chunks/{LpTagsInput-DiXrpYeE.js → LpTagsInput-DZg80W-B.js} +68 -71
- package/dist/chunks/LpTextReveal-CtAnOUkp.js +140 -0
- package/dist/chunks/{LpTextarea-xoQd5Lnp.js → LpTextarea-DiWjeVoJ.js} +12 -11
- package/dist/chunks/{LpThemeProvider-CQ2jC9TA.js → LpThemeProvider-DcbfOxsU.js} +1 -1
- package/dist/chunks/LpThemeStudio-DxVZMtzN.js +416 -0
- package/dist/chunks/LpThemeStudioSection-BwhqYDLf.js +20 -0
- package/dist/chunks/LpThemeSwitcher-CadVBTBn.js +278 -0
- package/dist/chunks/{LpTimeField-MFgAsNc5.js → LpTimeField-BFQVf_PW.js} +13 -5
- package/dist/chunks/{LpToaster-C4zE9zB7.js → LpToaster-Wv9ksj4q.js} +49 -82
- package/dist/chunks/{LpTooltip-suFCM34F.js → LpTooltip-Cz8SQwRt.js} +8 -3
- package/dist/chunks/{LpTopologyCanvas-6ozNrQKh.js → LpTopologyCanvas-C17A1XCb.js} +1 -1
- package/dist/chunks/{LpTour-BUp3Jt2e.js → LpTour-CY2bFXge.js} +24 -18
- package/dist/chunks/LpTruncate-D_5Pfv5B.js +112 -0
- package/dist/chunks/LpTypewriter-BCL_a6wE.js +159 -0
- package/dist/chunks/{LpUptimeBar-B6kHw4Cj.js → LpUptimeBar-Tew1Ykx4.js} +10 -9
- package/dist/chunks/{LpVideoBackdrop-qWRYBOTQ.js → LpVideoBackdrop-DS1wGv-X.js} +7 -8
- package/dist/chunks/{MenuTitle-obgek0B7.js → MenuTitle-BjQZX8tQ.js} +1 -1
- package/dist/chunks/OptionContent-CmYUUeWj.js +40 -0
- package/dist/chunks/PickerField-DoHv0WMH.js +125 -0
- package/dist/chunks/RevealToggle-C-KzaQGJ.js +65 -0
- package/dist/chunks/StepConnector-37OgEOXA.js +41 -0
- package/dist/chunks/TourCard-BJ8i7dk0.js +123 -0
- package/dist/chunks/backdrop-Dkf2vM81.js +59 -0
- package/dist/chunks/{icons-DVhZ_plB.js → icons-4IywzkHk.js} +1 -1
- package/dist/chunks/{useTheme-2qHG8NEU.js → useTheme-BOV_-AiY.js} +9 -65
- package/dist/component-names.d.ts +1 -1
- package/dist/components/AttentionDot.vue.d.ts +9 -0
- package/dist/components/AttentionDot.vue.js +4 -0
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.d.ts +25 -0
- package/dist/components/FieldWrapper.vue.js +4 -0
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.d.ts +4 -4
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LegendSwatch.vue.d.ts +6 -0
- package/dist/components/LegendSwatch.vue.js +4 -0
- package/dist/components/LoaderMark.vue.d.ts +12 -0
- package/dist/components/LoaderMark.vue.js +4 -0
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpActivityLine.vue.d.ts +58 -0
- package/dist/components/LpActivityLine.vue.js +4 -0
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.d.ts +2 -2
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +8 -7
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.d.ts +16 -0
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.d.ts +19 -5
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpButton.vue.d.ts +2 -2
- package/dist/components/LpButton.vue.js +1 -1
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpCard.vue.d.ts +24 -0
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.js +131 -160
- package/dist/components/LpCheckbox.vue.d.ts +2 -2
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.d.ts +89 -0
- package/dist/components/LpCodeDisplay.vue.js +4 -0
- package/dist/components/LpCollapse.vue.d.ts +58 -0
- package/dist/components/LpCollapse.vue.js +4 -0
- package/dist/components/LpColorPicker.vue.d.ts +2 -2
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +34 -23
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.d.ts +82 -0
- package/dist/components/LpCopyButton.vue.js +4 -0
- package/dist/components/LpCountdown.vue.d.ts +100 -0
- package/dist/components/LpCountdown.vue.js +4 -0
- package/dist/components/LpDataList.vue.d.ts +66 -0
- package/dist/components/LpDataList.vue.js +4 -0
- package/dist/components/LpDatePicker.vue.d.ts +3 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.d.ts +3 -1
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDock.vue.d.ts +74 -0
- package/dist/components/LpDock.vue.js +204 -0
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.d.ts +8 -1
- package/dist/components/LpDropzone.vue.js +36 -15
- package/dist/components/LpEditable.vue.d.ts +85 -0
- package/dist/components/LpEditable.vue.js +4 -0
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpFrame.vue.d.ts +22 -0
- package/dist/components/LpFrame.vue.js +4 -0
- package/dist/components/LpGauge.vue.d.ts +116 -0
- package/dist/components/LpGauge.vue.js +4 -0
- package/dist/components/LpGlowBorder.vue.d.ts +47 -0
- package/dist/components/LpGlowBorder.vue.js +4 -0
- package/dist/components/LpHintExample.vue.d.ts +2 -2
- package/dist/components/LpHintExample.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpHoverCard.vue.d.ts +60 -0
- package/dist/components/LpHoverCard.vue.js +4 -0
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpIdenticon.vue.d.ts +37 -0
- package/dist/components/LpIdenticon.vue.js +4 -0
- package/dist/components/LpImageEditor.vue.js +13 -19
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.d.ts +10 -0
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLoader.vue.d.ts +106 -0
- package/dist/components/LpLoader.vue.js +4 -0
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMagnetic.vue.d.ts +28 -0
- package/dist/components/LpMagnetic.vue.js +4 -0
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMasonry.vue.d.ts +42 -0
- package/dist/components/LpMasonry.vue.js +4 -0
- 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.d.ts +15 -6
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.d.ts +57 -0
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpNumberFlow.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.d.ts +12 -4
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +2 -2
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPalettePreview.vue.js +1 -1
- package/dist/components/LpPaletteStats.vue.js +2 -2
- package/dist/components/LpPasswordInput.vue.d.ts +19 -2
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.d.ts +3 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.d.ts +91 -0
- package/dist/components/LpPipeline.vue.js +4 -0
- package/dist/components/LpPopover.vue.d.ts +2 -2
- package/dist/components/LpPopover.vue.js +1 -1
- package/dist/components/LpProgress.vue.d.ts +11 -4
- package/dist/components/LpProgress.vue.js +1 -1
- package/dist/components/LpQuota.vue.d.ts +68 -0
- package/dist/components/LpQuota.vue.js +4 -0
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpRangeSlider.vue.js +1 -1
- package/dist/components/LpRelativeTime.vue.d.ts +41 -0
- package/dist/components/LpRelativeTime.vue.js +4 -0
- package/dist/components/LpRepeater.vue.d.ts +48 -0
- package/dist/components/LpRepeater.vue.js +4 -0
- package/dist/components/LpRevealOnScroll.vue.d.ts +67 -0
- package/dist/components/LpRevealOnScroll.vue.js +4 -0
- package/dist/components/LpRollingText.vue.d.ts +3 -1
- package/dist/components/LpRollingText.vue.js +1 -1
- package/dist/components/LpScramble.vue.d.ts +55 -0
- package/dist/components/LpScramble.vue.js +4 -0
- package/dist/components/LpScrollArea.vue.d.ts +1 -1
- package/dist/components/LpSecretField.vue.d.ts +108 -0
- package/dist/components/LpSecretField.vue.js +4 -0
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.d.ts +2 -0
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShaderBackdrop.vue.d.ts +39 -0
- package/dist/components/LpShaderBackdrop.vue.js +4 -0
- package/dist/components/LpShinyText.vue.d.ts +39 -0
- package/dist/components/LpShinyText.vue.js +4 -0
- 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.js +1 -1
- package/dist/components/LpSparkline.vue.d.ts +4 -3
- package/dist/components/LpSparkline.vue.js +1 -1
- package/dist/components/LpSpotlight.vue.d.ts +37 -0
- package/dist/components/LpSpotlight.vue.js +4 -0
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.d.ts +65 -0
- package/dist/components/LpStatus.vue.js +4 -0
- package/dist/components/LpStepMark.vue.d.ts +31 -0
- package/dist/components/LpStepMark.vue.js +4 -0
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwap.vue.js +1 -1
- package/dist/components/LpSwitch.vue.d.ts +2 -2
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.js +104 -120
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTableOfContents.vue.d.ts +6 -1
- package/dist/components/LpTableOfContents.vue.js +1 -1
- package/dist/components/LpTabs.vue.d.ts +5 -5
- package/dist/components/LpTabs.vue.js +25 -33
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextReveal.vue.d.ts +58 -0
- package/dist/components/LpTextReveal.vue.js +4 -0
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeProvider.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.d.ts +54 -0
- package/dist/components/LpThemeStudio.vue.js +4 -0
- package/dist/components/LpThemeStudioSection.vue.d.ts +16 -0
- package/dist/components/LpThemeStudioSection.vue.js +4 -0
- package/dist/components/LpThemeSwitcher.vue.d.ts +32 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.d.ts +2 -0
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTooltip.vue.d.ts +2 -2
- 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.d.ts +34 -0
- package/dist/components/LpTruncate.vue.js +4 -0
- package/dist/components/LpTypewriter.vue.d.ts +61 -0
- package/dist/components/LpTypewriter.vue.js +4 -0
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/LpVideoBackdrop.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/OptionContent.vue.d.ts +7 -0
- package/dist/components/OptionContent.vue.js +4 -0
- package/dist/components/PickerField.vue.d.ts +45 -0
- package/dist/components/PickerField.vue.js +4 -0
- package/dist/components/RevealToggle.vue.d.ts +21 -0
- package/dist/components/RevealToggle.vue.js +4 -0
- package/dist/components/StepConnector.vue.d.ts +19 -0
- package/dist/components/StepConnector.vue.js +4 -0
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/badge.d.ts +1 -0
- package/dist/components/badge.js +4 -0
- package/dist/components/chart.d.ts +5 -1
- package/dist/components/chart.js +2 -21
- package/dist/components/dateRange.d.ts +11 -0
- package/dist/components/dateRange.js +12 -0
- package/dist/components/dock.d.ts +19 -0
- package/dist/components/dock.js +16 -0
- package/dist/components/dropdown.d.ts +10 -1
- package/dist/components/dropdown.js +7 -2
- package/dist/components/fieldText.d.ts +38 -0
- package/dist/components/fieldText.js +53 -0
- package/dist/components/fileTree.d.ts +7 -3
- package/dist/components/fileTree.js +12 -18
- package/dist/components/format.d.ts +41 -0
- package/dist/components/format.js +67 -0
- package/dist/components/identicon.d.ts +38 -0
- package/dist/components/identicon.js +85 -0
- package/dist/components/masonry.d.ts +32 -0
- package/dist/components/masonry.js +40 -0
- package/dist/components/menuWhen.js +1 -1
- package/dist/components/meter.d.ts +64 -0
- package/dist/components/meter.js +53 -0
- package/dist/components/otp.d.ts +1 -1
- package/dist/components/otp.js +7 -2
- package/dist/components/pipeline.d.ts +55 -0
- package/dist/components/pipeline.js +51 -0
- package/dist/components/quota.d.ts +57 -0
- package/dist/components/quota.js +40 -0
- package/dist/components/relativeTime.d.ts +24 -0
- package/dist/components/relativeTime.js +56 -0
- package/dist/components/reveal.d.ts +18 -0
- package/dist/components/reveal.js +32 -0
- package/dist/components/scramble.d.ts +68 -0
- package/dist/components/scramble.js +58 -0
- package/dist/components/shaderBackdrop.d.ts +20 -0
- package/dist/components/shaderBackdrop.js +156 -0
- package/dist/components/slider.d.ts +5 -0
- package/dist/components/slider.js +24 -0
- package/dist/components/slotText.d.ts +2 -0
- package/dist/components/slotText.js +9 -0
- package/dist/components/status.d.ts +14 -0
- package/dist/components/status.js +22 -0
- package/dist/components/tableFacets.d.ts +8 -0
- package/dist/components/tableFacets.js +19 -0
- package/dist/components/textSplit.d.ts +17 -0
- package/dist/components/textSplit.js +24 -0
- package/dist/components/timeSpan.d.ts +78 -0
- package/dist/components/timeSpan.js +85 -0
- package/dist/components/tone.d.ts +43 -0
- package/dist/components/tone.js +82 -0
- package/dist/components/tour.js +3 -2
- package/dist/components/typewriter.d.ts +36 -0
- package/dist/components/typewriter.js +53 -0
- package/dist/components/videoBackdrop.js +5 -6
- package/dist/composables/easing.d.ts +22 -1
- package/dist/composables/easing.js +42 -1
- package/dist/composables/pseudoLocale.d.ts +15 -0
- package/dist/composables/pseudoLocale.js +96 -0
- package/dist/composables/scroll.js +5 -3
- package/dist/composables/useClipboard.d.ts +4 -1
- package/dist/composables/useClipboard.js +12 -2
- package/dist/composables/useField.d.ts +13 -0
- package/dist/composables/useField.js +26 -1
- package/dist/composables/useForm.js +32 -9
- package/dist/composables/useInView.d.ts +11 -0
- package/dist/composables/useInView.js +39 -0
- package/dist/composables/useLoadingGate.d.ts +8 -0
- package/dist/composables/useLoadingGate.js +38 -0
- package/dist/composables/useLpConfig.d.ts +10 -0
- package/dist/composables/useLpConfig.js +11 -1
- package/dist/composables/useMediaQuery.js +3 -1
- package/dist/composables/useNow.d.ts +16 -0
- package/dist/composables/useNow.js +39 -0
- package/dist/composables/usePersisted.js +14 -7
- package/dist/composables/usePillTransition.d.ts +5 -2
- package/dist/composables/usePillTransition.js +4 -3
- package/dist/composables/usePointerFrame.d.ts +18 -0
- package/dist/composables/usePointerFrame.js +31 -0
- package/dist/composables/useReducedMotion.d.ts +2 -0
- package/dist/composables/useReducedMotion.js +7 -0
- package/dist/composables/useRepeater.d.ts +17 -0
- package/dist/composables/useRepeater.js +31 -0
- package/dist/composables/useResizeObserver.d.ts +8 -0
- package/dist/composables/useResizeObserver.js +33 -0
- package/dist/composables/useRevealedValue.d.ts +31 -0
- package/dist/composables/useRevealedValue.js +26 -0
- package/dist/composables/useScramble.d.ts +42 -0
- package/dist/composables/useScramble.js +76 -0
- package/dist/composables/useShift.js +2 -10
- package/dist/composables/useSpotlight.d.ts +18 -0
- package/dist/composables/useSpotlight.js +53 -0
- package/dist/composables/useTilt.js +26 -18
- package/dist/composables/useTween.d.ts +43 -0
- package/dist/composables/useTween.js +69 -0
- package/dist/composables/useView.d.ts +18 -0
- package/dist/composables/useView.js +64 -0
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +98 -1
- package/dist/index.js +263 -105
- package/dist/theme/define.d.ts +12 -0
- package/dist/theme/studio.d.ts +90 -0
- package/package.json +8 -2
- package/src/component-names.ts +33 -0
- package/src/components/AttentionDot.vue +27 -0
- package/src/components/ContextMenuItems.vue +5 -2
- package/src/components/FieldWrapper.vue +38 -0
- package/src/components/LayoutNode.vue +5 -9
- package/src/components/LegendSwatch.vue +15 -0
- package/src/components/LoaderMark.vue +90 -0
- package/src/components/LpActionBar.vue +12 -20
- package/src/components/LpActivityLine.vue +186 -0
- package/src/components/LpAlert.vue +54 -24
- package/src/components/LpAppShell.vue +7 -11
- package/src/components/LpAutocomplete.vue +16 -14
- package/src/components/LpAvatar.vue +17 -2
- package/src/components/LpBadge.vue +77 -13
- package/src/components/LpBreadcrumbs.vue +101 -35
- package/src/components/LpButton.vue +15 -3
- package/src/components/LpCard.vue +30 -7
- package/src/components/LpChart.vue +162 -171
- package/src/components/LpCheckbox.vue +10 -4
- package/src/components/LpCodeBlock.vue +11 -19
- package/src/components/LpCodeDisplay.vue +228 -0
- package/src/components/LpCollapse.vue +162 -0
- package/src/components/LpColorPicker.vue +10 -1
- package/src/components/LpCommandPalette.vue +38 -24
- package/src/components/LpContextMenu.vue +13 -3
- package/src/components/LpCopyButton.vue +185 -0
- package/src/components/LpCountdown.vue +308 -0
- package/src/components/LpDataList.vue +154 -0
- package/src/components/LpDatePicker.vue +55 -104
- package/src/components/LpDateRangePicker.vue +51 -95
- package/src/components/LpDisclosure.vue +58 -36
- package/src/components/LpDock.vue +274 -0
- package/src/components/LpDrawer.vue +10 -1
- package/src/components/LpDropdownMenu.vue +11 -2
- package/src/components/LpDropzone.vue +34 -13
- package/src/components/LpEditable.vue +295 -0
- package/src/components/LpFileTree.vue +5 -1
- package/src/components/LpFileTreeNode.vue +25 -50
- package/src/components/LpFormField.vue +22 -3
- package/src/components/LpFrame.vue +200 -0
- package/src/components/LpGauge.vue +287 -0
- package/src/components/LpGlowBorder.vue +60 -0
- package/src/components/LpHintExample.vue +9 -32
- package/src/components/LpHintLayer.vue +13 -3
- package/src/components/LpHoverCard.vue +175 -0
- package/src/components/LpIdenticon.vue +69 -0
- package/src/components/LpImageEditor.vue +15 -18
- package/src/components/LpInfraNode.vue +27 -16
- package/src/components/LpInput.vue +30 -16
- package/src/components/LpLightbox.vue +44 -23
- package/src/components/LpLoader.vue +145 -0
- package/src/components/LpLogViewer.vue +311 -82
- package/src/components/LpMagnetic.vue +97 -0
- package/src/components/LpMapPicker.vue +26 -28
- package/src/components/LpMasonry.vue +247 -0
- package/src/components/LpModal.vue +10 -1
- package/src/components/LpNotificationBell.vue +33 -49
- package/src/components/LpNumberField.vue +79 -14
- package/src/components/LpNumberFlow.vue +10 -35
- package/src/components/LpOtpInput.vue +7 -2
- package/src/components/LpPagination.vue +38 -4
- package/src/components/LpPalettePreview.vue +2 -7
- package/src/components/LpPasswordInput.vue +25 -18
- package/src/components/LpPhoneInput.vue +12 -3
- package/src/components/LpPie.vue +197 -36
- package/src/components/LpPipeline.vue +366 -0
- package/src/components/LpPopover.vue +14 -1
- package/src/components/LpProgress.vue +22 -84
- package/src/components/LpQuota.vue +197 -0
- package/src/components/LpRangeSlider.vue +5 -1
- package/src/components/LpRelativeTime.vue +90 -0
- package/src/components/LpRepeater.vue +131 -0
- package/src/components/LpRevealOnScroll.vue +125 -0
- package/src/components/LpRollingText.vue +12 -1
- package/src/components/LpScramble.vue +107 -0
- package/src/components/LpSecretField.vue +320 -0
- package/src/components/LpSegmented.vue +3 -10
- package/src/components/LpSelect.vue +74 -65
- package/src/components/LpShaderBackdrop.vue +434 -0
- package/src/components/LpShinyText.vue +139 -0
- package/src/components/LpSidebar.vue +2 -0
- package/src/components/LpSlider.vue +5 -1
- package/src/components/LpSparkline.vue +55 -37
- package/src/components/LpSpotlight.vue +51 -0
- package/src/components/LpStat.vue +6 -2
- package/src/components/LpStatus.vue +127 -0
- package/src/components/LpStepMark.vue +138 -0
- package/src/components/LpStepper.vue +37 -43
- package/src/components/LpSwap.vue +2 -2
- package/src/components/LpSwitch.vue +15 -22
- package/src/components/LpTable.vue +47 -63
- package/src/components/LpTableFilter.vue +1 -0
- package/src/components/LpTableOfContents.vue +53 -29
- package/src/components/LpTabs.vue +10 -21
- package/src/components/LpTagsInput.vue +53 -37
- package/src/components/LpTextReveal.vue +236 -0
- package/src/components/LpTextarea.vue +11 -11
- package/src/components/LpThemeStudio.vue +216 -0
- package/src/components/LpThemeStudioSection.vue +16 -0
- package/src/components/LpThemeSwitcher.vue +156 -47
- package/src/components/LpTimeField.vue +9 -1
- package/src/components/LpToaster.vue +63 -83
- package/src/components/LpTooltip.vue +10 -1
- package/src/components/LpTour.vue +24 -13
- package/src/components/LpTruncate.vue +135 -0
- package/src/components/LpTypewriter.vue +236 -0
- package/src/components/LpUptimeBar.vue +6 -5
- package/src/components/LpVideoBackdrop.vue +15 -13
- package/src/components/OptionContent.vue +17 -0
- package/src/components/PickerField.vue +59 -0
- package/src/components/RevealToggle.vue +51 -0
- package/src/components/StepConnector.vue +54 -0
- package/src/components/TourCard.vue +29 -16
- package/src/components/badge.ts +8 -0
- package/src/components/chart.ts +8 -23
- package/src/components/dateRange.ts +25 -0
- package/src/components/dock.ts +31 -0
- package/src/components/dropdown.ts +15 -3
- package/src/components/fieldText.ts +95 -0
- package/src/components/fileTree.ts +19 -21
- package/src/components/format.ts +136 -0
- package/src/components/identicon.ts +160 -0
- package/src/components/masonry.ts +73 -0
- package/src/components/meter.ts +122 -0
- package/src/components/otp.ts +14 -3
- package/src/components/pipeline.ts +101 -0
- package/src/components/quota.ts +111 -0
- package/src/components/relativeTime.ts +118 -0
- package/src/components/reveal.ts +56 -0
- package/src/components/scramble.ts +138 -0
- package/src/components/shaderBackdrop.ts +208 -0
- package/src/components/slider.ts +30 -0
- package/src/components/slotText.ts +13 -0
- package/src/components/status.ts +46 -0
- package/src/components/tableFacets.ts +25 -0
- package/src/components/textSplit.ts +55 -0
- package/src/components/timeSpan.ts +183 -0
- package/src/components/tone.ts +144 -0
- package/src/components/tour.ts +3 -2
- package/src/components/typewriter.ts +104 -0
- package/src/components/videoBackdrop.ts +7 -6
- package/src/composables/easing.ts +66 -1
- package/src/composables/pseudoLocale.ts +105 -0
- package/src/composables/scroll.ts +6 -3
- package/src/composables/useClipboard.ts +25 -3
- package/src/composables/useField.ts +38 -1
- package/src/composables/useForm.ts +41 -11
- package/src/composables/useInView.ts +61 -0
- package/src/composables/useLoadingGate.ts +63 -0
- package/src/composables/useLpConfig.ts +20 -1
- package/src/composables/useMediaQuery.ts +6 -2
- package/src/composables/useNow.ts +84 -0
- package/src/composables/usePersisted.ts +19 -8
- package/src/composables/usePillTransition.ts +21 -13
- package/src/composables/usePointerFrame.ts +72 -0
- package/src/composables/useReducedMotion.ts +22 -0
- package/src/composables/useRepeater.ts +44 -0
- package/src/composables/useResizeObserver.ts +59 -0
- package/src/composables/useRevealedValue.ts +84 -0
- package/src/composables/useScramble.ts +152 -0
- package/src/composables/useShift.ts +10 -16
- package/src/composables/useSpotlight.ts +82 -0
- package/src/composables/useTilt.ts +40 -23
- package/src/composables/useTween.ts +149 -0
- package/src/composables/useView.ts +96 -0
- package/src/index.css +1 -0
- package/src/index.ts +143 -1
- package/src/kit-icons.ts +1 -1
- package/src/theme/define.ts +65 -0
- package/src/theme/studio.ts +202 -0
- package/src/tokens/effects.css +151 -0
- package/src/tokens/tokens.css +131 -39
- package/src/tokens/utilities.css +81 -0
- package/dist/assets/LpTabs-Bk7v4bZz.css +0 -18
- package/dist/chunks/LpAlert-BdvxvcWE.js +0 -85
- package/dist/chunks/LpBadge-Fe0D1bYx.js +0 -62
- package/dist/chunks/LpBreadcrumbs-rzOKkLiI.js +0 -98
- package/dist/chunks/LpDatePicker-BMfM454Y.js +0 -243
- package/dist/chunks/LpDateRangePicker-CNb9X3eL.js +0 -195
- package/dist/chunks/LpNumberField-DO1ufKvE.js +0 -107
- package/dist/chunks/LpStepper-C2slwObu.js +0 -90
- package/dist/chunks/LpSwitch-CZy9_IoA.js +0 -132
- package/dist/chunks/LpThemeSwitcher-CDoziW0z.js +0 -166
- package/dist/chunks/TourCard-BKI7X9-r.js +0 -105
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { useReducedMotion } from "motion-v"
|
|
2
1
|
import { computed, ref, toValue, type ComputedRef, type CSSProperties, type MaybeRefOrGetter, type Ref } from "vue"
|
|
2
|
+
import { usePointerFrame } from "./usePointerFrame"
|
|
3
|
+
import { usePrefersReducedMotion } from "./useReducedMotion"
|
|
4
|
+
import { spotlightPoint } from "./useSpotlight"
|
|
3
5
|
|
|
4
6
|
/*
|
|
5
7
|
* useTilt — pointer-reactive 3D tilt for a "tactile" surface (a card, a tile, a
|
|
@@ -8,9 +10,14 @@ import { computed, ref, toValue, type ComputedRef, type CSSProperties, type Mayb
|
|
|
8
10
|
*
|
|
9
11
|
* Bind the returned handlers to the element and the returned `style` to it (it
|
|
10
12
|
* needs a shared `perspective` on an ANCESTOR — see LpTilt, which supplies one).
|
|
11
|
-
* Rotation eases to rest via CSS transition
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* Rotation eases to rest via CSS transition. The pointer is not reactive
|
|
14
|
+
* state: once per animation frame (usePointerFrame, shared with LpMagnetic and
|
|
15
|
+
* the spotlight) its position is written to custom properties on the element,
|
|
16
|
+
* `--lp-tilt-x`/`--lp-tilt-y` from -1 to 1 for the lean and the spotlight's own
|
|
17
|
+
* `--lp-spot-x`/`--lp-spot-y` for the glare, and the style reads them. It
|
|
18
|
+
* re-renders on enter and leave, not on every move. SSR-safe (no window access
|
|
19
|
+
* at setup) and collapses to a flat, no-tilt style when the OS prefers reduced
|
|
20
|
+
* motion.
|
|
14
21
|
*/
|
|
15
22
|
export interface UseTiltOptions {
|
|
16
23
|
/** Max rotation toward the pointer, in degrees (per axis). Default 10. */
|
|
@@ -35,22 +42,33 @@ export interface UseTilt {
|
|
|
35
42
|
active: Ref<boolean>
|
|
36
43
|
}
|
|
37
44
|
|
|
45
|
+
const TILT_VARS = ["--lp-tilt-x", "--lp-tilt-y", "--lp-spot-x", "--lp-spot-y"]
|
|
46
|
+
|
|
38
47
|
export function useTilt(source: MaybeRefOrGetter<UseTiltOptions> = {}): UseTilt {
|
|
39
48
|
const options = computed(() => toValue(source))
|
|
40
|
-
const reduceMotion =
|
|
49
|
+
const reduceMotion = usePrefersReducedMotion()
|
|
41
50
|
|
|
42
51
|
const active = ref(false)
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
// The element the handlers are bound to, learnt from the events themselves.
|
|
53
|
+
let target: HTMLElement | null = null
|
|
54
|
+
|
|
55
|
+
const pointer = usePointerFrame({
|
|
56
|
+
anyPointer: true,
|
|
57
|
+
paint: (x, y) => {
|
|
58
|
+
if (!target || !active.value) return
|
|
59
|
+
const r = target.getBoundingClientRect()
|
|
60
|
+
// Pointer position within the element, normalized to [-1, 1] from center.
|
|
61
|
+
target.style.setProperty("--lp-tilt-x", (((x - r.left) / r.width) * 2 - 1).toFixed(3))
|
|
62
|
+
target.style.setProperty("--lp-tilt-y", (((y - r.top) / r.height) * 2 - 1).toFixed(3))
|
|
63
|
+
const spot = spotlightPoint(r, x, y)
|
|
64
|
+
target.style.setProperty("--lp-spot-x", spot.x)
|
|
65
|
+
target.style.setProperty("--lp-spot-y", spot.y)
|
|
66
|
+
},
|
|
67
|
+
})
|
|
46
68
|
|
|
47
69
|
function onPointerMove(e: PointerEvent): void {
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
if (!el) return
|
|
51
|
-
const r = el.getBoundingClientRect()
|
|
52
|
-
nx.value = ((e.clientX - r.left) / r.width) * 2 - 1
|
|
53
|
-
ny.value = ((e.clientY - r.top) / r.height) * 2 - 1
|
|
70
|
+
if (e.currentTarget instanceof HTMLElement) target = e.currentTarget
|
|
71
|
+
pointer.move(e)
|
|
54
72
|
}
|
|
55
73
|
|
|
56
74
|
function onPointerEnter(): void {
|
|
@@ -59,8 +77,8 @@ export function useTilt(source: MaybeRefOrGetter<UseTiltOptions> = {}): UseTilt
|
|
|
59
77
|
|
|
60
78
|
function onPointerLeave(): void {
|
|
61
79
|
active.value = false
|
|
62
|
-
|
|
63
|
-
|
|
80
|
+
pointer.cancel()
|
|
81
|
+
for (const name of TILT_VARS) target?.style.removeProperty(name)
|
|
64
82
|
}
|
|
65
83
|
|
|
66
84
|
const style = computed<CSSProperties>(() => {
|
|
@@ -71,12 +89,12 @@ export function useTilt(source: MaybeRefOrGetter<UseTiltOptions> = {}): UseTilt
|
|
|
71
89
|
// horizontal one. Only tilt while active so it rests flat when the pointer
|
|
72
90
|
// leaves (nx/ny are already zeroed on leave).
|
|
73
91
|
const { max = 10, lift = 8, scale = 1.03 } = options.value
|
|
74
|
-
const rx = active.value ? -
|
|
75
|
-
const ry = active.value ?
|
|
92
|
+
const rx = active.value ? `calc(var(--lp-tilt-y, 0) * ${-max}deg)` : "0deg"
|
|
93
|
+
const ry = active.value ? `calc(var(--lp-tilt-x, 0) * ${max}deg)` : "0deg"
|
|
76
94
|
const z = active.value ? lift : 0
|
|
77
95
|
const s = active.value ? scale : 1
|
|
78
96
|
return {
|
|
79
|
-
transform: `translate3d(0, ${-z}px, 0) rotateX(${rx}
|
|
97
|
+
transform: `translate3d(0, ${-z}px, 0) rotateX(${rx}) rotateY(${ry}) scale(${s})`,
|
|
80
98
|
transformStyle: "preserve-3d",
|
|
81
99
|
transition: active.value
|
|
82
100
|
? "transform 0.12s ease-out"
|
|
@@ -88,12 +106,11 @@ export function useTilt(source: MaybeRefOrGetter<UseTiltOptions> = {}): UseTilt
|
|
|
88
106
|
if (!options.value.glare || reduceMotion.value || !active.value) {
|
|
89
107
|
return { opacity: 0 }
|
|
90
108
|
}
|
|
91
|
-
// Bright spot tracks the pointer
|
|
92
|
-
|
|
93
|
-
const py = (ny.value + 1) * 50
|
|
109
|
+
// Bright spot tracks the pointer, at the spotlight's own position
|
|
110
|
+
// properties, which the tilting element carries and the glare inherits.
|
|
94
111
|
return {
|
|
95
112
|
opacity: 1,
|
|
96
|
-
background:
|
|
113
|
+
background: "radial-gradient(circle at var(--lp-spot-x, 50%) var(--lp-spot-y, 50%), rgba(255,255,255,0.35), transparent 55%)",
|
|
97
114
|
transition: "opacity 0.2s ease",
|
|
98
115
|
}
|
|
99
116
|
})
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { onScopeDispose, shallowRef, toValue, watch, type MaybeRefOrGetter, type ShallowRef } from "vue"
|
|
2
|
+
import { durationToken, prefersReducedMotion, tokenEase } from "./easing"
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* A value that travels to its new state instead of jumping there.
|
|
6
|
+
*
|
|
7
|
+
* Charts draw from data, and data changes wholesale: a poll returns new numbers,
|
|
8
|
+
* a filter drops a category. Rendering straight from it redraws the shape on
|
|
9
|
+
* the next frame, and the reader sees a different picture rather than the same
|
|
10
|
+
* picture changing — which is the one thing a chart refreshing in place has to
|
|
11
|
+
* convey. No browser interpolates a path's `d` between two arbitrary shapes, so
|
|
12
|
+
* the DATA is what moves: this holds a displayed copy and steps it toward the
|
|
13
|
+
* source every frame, and the component draws from the copy.
|
|
14
|
+
*
|
|
15
|
+
* The caller supplies the mix, because only it knows what "halfway" means for
|
|
16
|
+
* its data — a pie matches slices by label and lets new ones open from nothing,
|
|
17
|
+
* a line resamples to a new point count. The mix is handed whatever is
|
|
18
|
+
* DISPLAYED as its starting point, not the previous target, so a change that
|
|
19
|
+
* lands mid-flight carries on from where the shape actually is instead of
|
|
20
|
+
* snapping back to restart.
|
|
21
|
+
*
|
|
22
|
+
* The first value is shown as is: arrival belongs to the component's own
|
|
23
|
+
* entrance (useReveal), and this only animates what comes after it.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export interface TweenOptions<T> {
|
|
27
|
+
/** Travel time in ms. Defaults to `--duration-medium`, read when a tween starts. */
|
|
28
|
+
duration?: MaybeRefOrGetter<number | undefined>
|
|
29
|
+
/** Defaults to the curve of `--ease-emphasized`. */
|
|
30
|
+
ease?: (t: number) => number
|
|
31
|
+
/**
|
|
32
|
+
* False makes a change land at once. Read at the moment of the change, so a
|
|
33
|
+
* component can jump while its content is hidden or not yet revealed and
|
|
34
|
+
* tween once it is on screen.
|
|
35
|
+
*/
|
|
36
|
+
enabled?: MaybeRefOrGetter<boolean | undefined>
|
|
37
|
+
/**
|
|
38
|
+
* Same content, new object: skip. A source rebuilt by a computed on every
|
|
39
|
+
* unrelated change would otherwise spend a whole duration of frames tweening
|
|
40
|
+
* a value into itself.
|
|
41
|
+
*/
|
|
42
|
+
equal?: (a: T, b: T) => boolean
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function useTween<T>(
|
|
46
|
+
source: () => T,
|
|
47
|
+
mix: (from: T, to: T, t: number) => T,
|
|
48
|
+
options: TweenOptions<T> = {},
|
|
49
|
+
): Readonly<ShallowRef<T>> {
|
|
50
|
+
const shown = shallowRef(source())
|
|
51
|
+
let target = shown.value
|
|
52
|
+
let frame = 0
|
|
53
|
+
|
|
54
|
+
const stop = () => {
|
|
55
|
+
if (frame) cancelAnimationFrame(frame)
|
|
56
|
+
frame = 0
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
watch(source, (to) => {
|
|
60
|
+
if (options.equal?.(target, to)) return
|
|
61
|
+
target = to
|
|
62
|
+
const ms = toValue(options.duration) ?? durationToken("duration-medium")
|
|
63
|
+
if (
|
|
64
|
+
toValue(options.enabled) === false ||
|
|
65
|
+
ms <= 0 ||
|
|
66
|
+
prefersReducedMotion() ||
|
|
67
|
+
typeof requestAnimationFrame === "undefined"
|
|
68
|
+
) {
|
|
69
|
+
stop()
|
|
70
|
+
shown.value = to
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const from = shown.value
|
|
75
|
+
const ease = options.ease ?? tokenEase("ease-emphasized")
|
|
76
|
+
const started = performance.now()
|
|
77
|
+
stop()
|
|
78
|
+
const step = (now: number) => {
|
|
79
|
+
// rAF stamps the frame's start, which can precede the watcher by a few ms.
|
|
80
|
+
const t = Math.min(1, Math.max(0, (now - started) / ms))
|
|
81
|
+
// The last frame is the target itself, not a mix that rounds near it, so
|
|
82
|
+
// whatever the mix carried for the journey (ghosts, resampled points)
|
|
83
|
+
// is gone once it lands.
|
|
84
|
+
shown.value = t < 1 ? mix(from, to, ease(t)) : to
|
|
85
|
+
frame = t < 1 ? requestAnimationFrame(step) : 0
|
|
86
|
+
}
|
|
87
|
+
frame = requestAnimationFrame(step)
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
onScopeDispose(stop)
|
|
91
|
+
|
|
92
|
+
return shown
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export const lerp = (a: number, b: number, t: number): number => a + (b - a) * t
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* A colour between two, as CSS — any two, `var()` tokens included, since the
|
|
99
|
+
* browser resolves both ends. Mixed in oklab so a hue change passes through
|
|
100
|
+
* believable colours instead of the grey a straight RGB blend dips into.
|
|
101
|
+
*/
|
|
102
|
+
export const mixColor = (from: string, to: string, t: number): string => {
|
|
103
|
+
if (from === to || t >= 1) return to
|
|
104
|
+
if (t <= 0) return from
|
|
105
|
+
return `color-mix(in oklab, ${from}, ${to} ${(t * 100).toFixed(1)}%)`
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* A series stretched or squeezed to `count` points along its own length.
|
|
110
|
+
*
|
|
111
|
+
* Morphing needs a point for every point: a line going from 12 readings to 30
|
|
112
|
+
* has nothing to move its 13th to 30th points FROM. Reading the old line at the
|
|
113
|
+
* new points' relative positions gives them a start on the shape as it was, so
|
|
114
|
+
* the morph changes heights rather than also redrawing the curve's outline.
|
|
115
|
+
* A position next to a gap takes the nearer reading, and is a gap only when
|
|
116
|
+
* both neighbours are.
|
|
117
|
+
*/
|
|
118
|
+
export const resample = (values: (number | null)[], count: number): (number | null)[] => {
|
|
119
|
+
const n = values.length
|
|
120
|
+
if (n === count) return values
|
|
121
|
+
if (!n) return new Array<number | null>(count).fill(null)
|
|
122
|
+
return Array.from({ length: count }, (_, i) => {
|
|
123
|
+
const pos = count <= 1 ? 0 : (i * (n - 1)) / (count - 1)
|
|
124
|
+
const lo = Math.floor(pos)
|
|
125
|
+
const hi = Math.min(n - 1, lo + 1)
|
|
126
|
+
const a = values[lo]
|
|
127
|
+
const b = values[hi]
|
|
128
|
+
const f = pos - lo
|
|
129
|
+
if (a == null) return f >= 0.5 ? b : null
|
|
130
|
+
if (b == null) return f < 0.5 ? a : null
|
|
131
|
+
return lerp(a, b, f)
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* One series of readings partway to another. A point that is a gap at either
|
|
137
|
+
* end takes the target's value: there is no height to travel from or to.
|
|
138
|
+
*/
|
|
139
|
+
export const mixValues = (
|
|
140
|
+
from: (number | null)[],
|
|
141
|
+
to: (number | null)[],
|
|
142
|
+
t: number,
|
|
143
|
+
): (number | null)[] => {
|
|
144
|
+
const start = resample(from, to.length)
|
|
145
|
+
return to.map((v, i) => {
|
|
146
|
+
const a = start[i]
|
|
147
|
+
return v == null || a == null ? v : lerp(a, v, t)
|
|
148
|
+
})
|
|
149
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { computed, inject, provide, type ComputedRef, type InjectionKey } from "vue"
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Which window a component lives in. Almost always the page's own, but inside
|
|
5
|
+
* an LpFrame it is the frame's: a document of its own with its own width, so
|
|
6
|
+
* a breakpoint, an overlay and a click outside are all measured there.
|
|
7
|
+
* Everything in the kit that reaches for the screen (media queries, portals,
|
|
8
|
+
* the viewport size, page-wide listeners) asks here instead of the globals,
|
|
9
|
+
* and so stays inside the frame it was rendered in.
|
|
10
|
+
*/
|
|
11
|
+
export interface LpView {
|
|
12
|
+
window: Window
|
|
13
|
+
document: Document
|
|
14
|
+
/** Where overlays teleport to: the frame's body. */
|
|
15
|
+
portal: HTMLElement
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const LP_VIEW: InjectionKey<ComputedRef<LpView | null>> = Symbol.for("lp-view")
|
|
19
|
+
|
|
20
|
+
export function provideView(view: ComputedRef<LpView | null>): void {
|
|
21
|
+
provide(LP_VIEW, view)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** The view the calling component renders in; the page itself outside any frame. */
|
|
25
|
+
export function useView(): ComputedRef<LpView | null> {
|
|
26
|
+
return inject(
|
|
27
|
+
LP_VIEW,
|
|
28
|
+
computed(() => null),
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** The window to measure and listen on: the frame's inside one, the page's otherwise. */
|
|
33
|
+
export function viewWindow(view: LpView | null | undefined): Window {
|
|
34
|
+
return view?.window ?? window
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function viewDocument(view: LpView | null | undefined): Document {
|
|
38
|
+
return view?.document ?? document
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** The `to` of a portal: the frame's body inside one, `body` otherwise. */
|
|
42
|
+
export function usePortalTarget(): ComputedRef<HTMLElement | "body"> {
|
|
43
|
+
const view = useView()
|
|
44
|
+
return computed(() => view.value?.portal ?? "body")
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* reka's layers listen for "outside" presses, focus and Escape on the
|
|
49
|
+
* document that was current when they were set up, which inside an LpFrame
|
|
50
|
+
* is still the page's: a click on the page closed a menu open in the frame,
|
|
51
|
+
* while a click or Escape inside the frame never reached the layer at all.
|
|
52
|
+
* The frame forwards those events from its document to the page's, marked
|
|
53
|
+
* with where they came from, and every kit layer drops the ones from a
|
|
54
|
+
* document other than its own (useOutsideGuard).
|
|
55
|
+
*/
|
|
56
|
+
const ORIGIN = "lpViewDocument"
|
|
57
|
+
type Marked = Event & { [ORIGIN]?: Document }
|
|
58
|
+
|
|
59
|
+
const FORWARDED = ["pointerdown", "pointerup", "click", "focusin", "keydown"] as const
|
|
60
|
+
|
|
61
|
+
export function forwardViewEvents(from: Document, to: Document): () => void {
|
|
62
|
+
const forward = (event: Event) => {
|
|
63
|
+
if (event.type === "keydown" && (event as KeyboardEvent).key !== "Escape") return
|
|
64
|
+
const Copy = event.constructor as new (type: string, init: Event) => Event
|
|
65
|
+
const copy = new Copy(event.type, event) as Marked
|
|
66
|
+
copy[ORIGIN] = from
|
|
67
|
+
const path = event.composedPath()
|
|
68
|
+
Object.defineProperty(copy, "target", { value: event.target })
|
|
69
|
+
copy.composedPath = () => path
|
|
70
|
+
to.dispatchEvent(copy)
|
|
71
|
+
}
|
|
72
|
+
for (const type of FORWARDED) from.addEventListener(type, forward)
|
|
73
|
+
return () => {
|
|
74
|
+
for (const type of FORWARDED) from.removeEventListener(type, forward)
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function originOf(event: Event): Document | null {
|
|
79
|
+
const detail = (event as CustomEvent<{ originalEvent?: Event }>).detail
|
|
80
|
+
const inner = detail && typeof detail === "object" && detail.originalEvent ? detail.originalEvent : event
|
|
81
|
+
const marked = (inner as Marked)[ORIGIN]
|
|
82
|
+
if (marked) return marked
|
|
83
|
+
const target = inner.target as Node | null
|
|
84
|
+
// Not `instanceof`: a node of the frame is another realm's Node.
|
|
85
|
+
if (!target || typeof target.nodeType !== "number") return null
|
|
86
|
+
return target.nodeType === 9 ? (target as Document) : target.ownerDocument
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** A layer's outside and Escape handler: ignores what happened in another document. */
|
|
90
|
+
export function useOutsideGuard(): (event: Event) => void {
|
|
91
|
+
const view = useView()
|
|
92
|
+
return (event) => {
|
|
93
|
+
const origin = originOf(event)
|
|
94
|
+
if (origin && origin !== viewDocument(view.value)) event.preventDefault()
|
|
95
|
+
}
|
|
96
|
+
}
|
package/src/index.css
CHANGED
package/src/index.ts
CHANGED
|
@@ -307,7 +307,9 @@ export {
|
|
|
307
307
|
export type { RevealOrigin } from "./theme/useTheme"
|
|
308
308
|
export { detectBackdropFilter, GLASS_BACKDROP_ATTR, isBrokenBackdropEngine, NO_BACKDROP_ATTR, setGlassBackdrop } from "./theme/backdrop"
|
|
309
309
|
export { DEFAULT_SURFACE } from "./theme/tokens"
|
|
310
|
-
export { defineTheme } from "./theme/define"
|
|
310
|
+
export { defineTheme, withBrand } from "./theme/define"
|
|
311
|
+
export { STUDIO_BRANDS, STUDIO_CORNERS, STUDIO_MOTION, STUDIO_SIZES, useThemeStudio } from "./theme/studio"
|
|
312
|
+
export type { StudioState, ThemeStudio, ThemeStudioOptions } from "./theme/studio"
|
|
311
313
|
export type { ThemeOverrides } from "./theme/define"
|
|
312
314
|
export type {
|
|
313
315
|
ColorTokens,
|
|
@@ -368,12 +370,20 @@ export type { FieldContext, FieldControlState } from "./composables/useField"
|
|
|
368
370
|
export type { UseInputFilterOptions } from "./composables/useInputFilter"
|
|
369
371
|
export { easeOut, easeTravel, easingToken, prefersReducedMotion } from "./composables/easing"
|
|
370
372
|
export { useReveal } from "./composables/useReveal"
|
|
373
|
+
export { useRevealedValue } from "./composables/useRevealedValue"
|
|
371
374
|
export { hints, vHint } from "./composables/useHints"
|
|
372
375
|
export type { HintEvent } from "./composables/useHints"
|
|
373
376
|
export { scrollParent, scrollToElement } from "./composables/scroll"
|
|
374
377
|
export type { ScrollParentOptions, ScrollToElementOptions } from "./composables/scroll"
|
|
375
378
|
export { useMediaQuery } from "./composables/useMediaQuery"
|
|
379
|
+
export { usePrefersReducedMotion } from "./composables/useReducedMotion"
|
|
380
|
+
export { useResizeObserver } from "./composables/useResizeObserver"
|
|
381
|
+
export type { UseResizeObserverOptions } from "./composables/useResizeObserver"
|
|
382
|
+
export { usePointerFrame } from "./composables/usePointerFrame"
|
|
383
|
+
export type { PointerFrame, PointerFrameOptions } from "./composables/usePointerFrame"
|
|
384
|
+
export { usePortalTarget, useView, viewDocument, viewWindow, type LpView } from "./composables/useView"
|
|
376
385
|
export type { UseReveal, UseRevealOptions } from "./composables/useReveal"
|
|
386
|
+
export type { UseRevealedValue, UseRevealedValueOptions } from "./composables/useRevealedValue"
|
|
377
387
|
export { useAsyncTask } from "./composables/useAsyncTask"
|
|
378
388
|
export { useRovingFocus } from "./composables/useRovingFocus"
|
|
379
389
|
export type { RovingItem, UseRovingFocusOptions } from "./composables/useRovingFocus"
|
|
@@ -411,5 +421,137 @@ export type { SystemThemes, UseTheme } from "./theme/useTheme"
|
|
|
411
421
|
export { layoutController } from "./layout/useLayout"
|
|
412
422
|
export type { LayoutController } from "./layout/useLayout"
|
|
413
423
|
export { default as LpThemeProvider } from "./components/LpThemeProvider.vue"
|
|
424
|
+
export { default as LpFrame } from "./components/LpFrame.vue"
|
|
425
|
+
export { default as LpThemeStudio } from "./components/LpThemeStudio.vue"
|
|
426
|
+
export type { ThemeStudioLabels, ThemeStudioPart } from "./components/LpThemeStudio.vue"
|
|
427
|
+
export { default as LpThemeStudioSection } from "./components/LpThemeStudioSection.vue"
|
|
414
428
|
export { isInternalHref, resolveLink } from "./components/link"
|
|
415
429
|
export type { LinkTarget, ResolvedLink } from "./components/link"
|
|
430
|
+
|
|
431
|
+
export { default as LpRepeater } from "./components/LpRepeater.vue"
|
|
432
|
+
export type { RepeaterItemKey } from "./composables/useRepeater"
|
|
433
|
+
|
|
434
|
+
// ── Status and data (group: status) ──
|
|
435
|
+
export { default as LpGauge } from "./components/LpGauge.vue"
|
|
436
|
+
export type { GaugeLabels } from "./components/LpGauge.vue"
|
|
437
|
+
export { default as LpQuota } from "./components/LpQuota.vue"
|
|
438
|
+
export type { QuotaLabels } from "./components/LpQuota.vue"
|
|
439
|
+
export { default as LpStatus } from "./components/LpStatus.vue"
|
|
440
|
+
export { default as LpRelativeTime } from "./components/LpRelativeTime.vue"
|
|
441
|
+
export { default as LpActivityLine } from "./components/LpActivityLine.vue"
|
|
442
|
+
export {
|
|
443
|
+
arcPath,
|
|
444
|
+
capacityThresholds,
|
|
445
|
+
meterFraction,
|
|
446
|
+
toneAt,
|
|
447
|
+
TONE_COLOR,
|
|
448
|
+
TONE_SOFT,
|
|
449
|
+
} from "./components/meter"
|
|
450
|
+
export type { MeterThreshold, MeterTone } from "./components/meter"
|
|
451
|
+
export { TONE_ALIASES, TONES, toneLook, toneOf } from "./components/tone"
|
|
452
|
+
export type { Tone, ToneLook, ToneName } from "./components/tone"
|
|
453
|
+
export { formatAmount, quotaSegments, quotaState } from "./components/quota"
|
|
454
|
+
export type { QuotaPart, QuotaSegment, QuotaState, QuotaUnit } from "./components/quota"
|
|
455
|
+
export { compactNumber, formatBytes } from "./components/format"
|
|
456
|
+
export type { CompactNumberOptions, FormatBytesOptions } from "./components/format"
|
|
457
|
+
export { STATUS_LABELS, STATUS_LOOK } from "./components/status"
|
|
458
|
+
export type { StatusKind, StatusLook } from "./components/status"
|
|
459
|
+
export { formatRelativeTime } from "./components/relativeTime"
|
|
460
|
+
export type { RelativeTime, RelativeTimeOptions, RelativeUnit } from "./components/relativeTime"
|
|
461
|
+
|
|
462
|
+
// ── Processes (group: process) ──
|
|
463
|
+
export { default as LpPipeline } from "./components/LpPipeline.vue"
|
|
464
|
+
export type { PipelineLabels } from "./components/LpPipeline.vue"
|
|
465
|
+
export { default as LpStepMark } from "./components/LpStepMark.vue"
|
|
466
|
+
export type { StepMarkStatus } from "./components/LpStepMark.vue"
|
|
467
|
+
export {
|
|
468
|
+
childProgress,
|
|
469
|
+
connectorFilled,
|
|
470
|
+
currentStepIndex,
|
|
471
|
+
isSettled,
|
|
472
|
+
overallStatus,
|
|
473
|
+
stepElapsed,
|
|
474
|
+
} from "./components/pipeline"
|
|
475
|
+
export type { PipelineStep, StepStatus } from "./components/pipeline"
|
|
476
|
+
export { default as LpLoader } from "./components/LpLoader.vue"
|
|
477
|
+
export type { LoaderLabels, LoaderSize, LoaderTone, LoaderVariant } from "./components/LpLoader.vue"
|
|
478
|
+
export { useLoadingGate } from "./composables/useLoadingGate"
|
|
479
|
+
export type { LoadingGateOptions } from "./composables/useLoadingGate"
|
|
480
|
+
export { useNow } from "./composables/useNow"
|
|
481
|
+
export type { UseNowOptions } from "./composables/useNow"
|
|
482
|
+
export { default as LpCountdown } from "./components/LpCountdown.vue"
|
|
483
|
+
export type { CountdownLabels } from "./components/LpCountdown.vue"
|
|
484
|
+
export {
|
|
485
|
+
ceilToSecond,
|
|
486
|
+
crossedMilestone,
|
|
487
|
+
DEFAULT_MILESTONES,
|
|
488
|
+
DEFAULT_UNIT_LABELS,
|
|
489
|
+
formatElapsed,
|
|
490
|
+
formatTime,
|
|
491
|
+
msToNextSecond,
|
|
492
|
+
splitTime,
|
|
493
|
+
timeParts,
|
|
494
|
+
} from "./components/timeSpan"
|
|
495
|
+
export type { TimeFormat, TimePart, TimeSplit, TimeUnit, TimeUnitLabels } from "./components/timeSpan"
|
|
496
|
+
|
|
497
|
+
// ── Fields and text (group: fields) ──
|
|
498
|
+
export { default as LpCopyButton } from "./components/LpCopyButton.vue"
|
|
499
|
+
export type { CopyButtonLabels, CopyValue } from "./components/LpCopyButton.vue"
|
|
500
|
+
export { default as LpSecretField } from "./components/LpSecretField.vue"
|
|
501
|
+
export type { SecretFieldLabels } from "./components/LpSecretField.vue"
|
|
502
|
+
export { default as LpDataList } from "./components/LpDataList.vue"
|
|
503
|
+
export type { DataListItem, DataListLabels } from "./components/LpDataList.vue"
|
|
504
|
+
export { default as LpEditable } from "./components/LpEditable.vue"
|
|
505
|
+
export type { EditableLabels } from "./components/LpEditable.vue"
|
|
506
|
+
export { default as LpTruncate } from "./components/LpTruncate.vue"
|
|
507
|
+
export { default as LpCodeDisplay } from "./components/LpCodeDisplay.vue"
|
|
508
|
+
export type { CodeDisplayLabels } from "./components/LpCodeDisplay.vue"
|
|
509
|
+
export { formatRemaining, groupCode, middleTruncate, normalizeCode } from "./components/fieldText"
|
|
510
|
+
|
|
511
|
+
// ── Overlays and look (group: looks) ──
|
|
512
|
+
export { default as LpHoverCard } from "./components/LpHoverCard.vue"
|
|
513
|
+
export { default as LpIdenticon } from "./components/LpIdenticon.vue"
|
|
514
|
+
export { hashString, identicon, identiconRects, identiconSvg } from "./components/identicon"
|
|
515
|
+
export type { Identicon, IdenticonOptions, IdenticonSvgOptions } from "./components/identicon"
|
|
516
|
+
export { default as LpShaderBackdrop } from "./components/LpShaderBackdrop.vue"
|
|
517
|
+
export { PRESET_NAMES as SHADER_PRESETS } from "./components/shaderBackdrop"
|
|
518
|
+
export type { ShaderPreset } from "./components/shaderBackdrop"
|
|
519
|
+
export { default as LpCollapse } from "./components/LpCollapse.vue"
|
|
520
|
+
export { pseudoLocalize } from "./composables/pseudoLocale"
|
|
521
|
+
export type { PseudoOptions } from "./composables/pseudoLocale"
|
|
522
|
+
|
|
523
|
+
// ── Text effects (group: text) ──
|
|
524
|
+
export { default as LpTextReveal } from "./components/LpTextReveal.vue"
|
|
525
|
+
export { default as LpShinyText } from "./components/LpShinyText.vue"
|
|
526
|
+
export { default as LpTypewriter } from "./components/LpTypewriter.vue"
|
|
527
|
+
export { default as LpScramble } from "./components/LpScramble.vue"
|
|
528
|
+
export { useScramble } from "./composables/useScramble"
|
|
529
|
+
export type { UseScramble, UseScrambleOptions } from "./composables/useScramble"
|
|
530
|
+
export { useInView } from "./composables/useInView"
|
|
531
|
+
export type { UseInView } from "./composables/useInView"
|
|
532
|
+
export {
|
|
533
|
+
graphemes,
|
|
534
|
+
planScramble,
|
|
535
|
+
randomGlyph,
|
|
536
|
+
scrambleFrame,
|
|
537
|
+
seededRandom,
|
|
538
|
+
settledCells,
|
|
539
|
+
SCRAMBLE_GLYPHS,
|
|
540
|
+
} from "./components/scramble"
|
|
541
|
+
export type { ScrambleCell, ScrambleFrameCell, ScrambleOptions } from "./components/scramble"
|
|
542
|
+
|
|
543
|
+
// ── Layout and card effects (group: layout) ──
|
|
544
|
+
export { default as LpDock } from "./components/LpDock.vue"
|
|
545
|
+
export type { DockItem } from "./components/LpDock.vue"
|
|
546
|
+
export { dockSize, magneticOffset } from "./components/dock"
|
|
547
|
+
export { default as LpMasonry } from "./components/LpMasonry.vue"
|
|
548
|
+
export { masonryColumnCount, placeMasonry } from "./components/masonry"
|
|
549
|
+
export type { MasonryColumns, MasonryPlacement } from "./components/masonry"
|
|
550
|
+
export { default as LpRevealOnScroll } from "./components/LpRevealOnScroll.vue"
|
|
551
|
+
export { revealFrom, revealTo, staggerDelay } from "./components/reveal"
|
|
552
|
+
export type { RevealDirection, RevealPreset } from "./components/reveal"
|
|
553
|
+
export { default as LpSpotlight } from "./components/LpSpotlight.vue"
|
|
554
|
+
export { default as LpGlowBorder } from "./components/LpGlowBorder.vue"
|
|
555
|
+
export { default as LpMagnetic } from "./components/LpMagnetic.vue"
|
|
556
|
+
export { spotlightPoint, useSpotlight } from "./composables/useSpotlight"
|
|
557
|
+
export type { UseSpotlight, UseSpotlightOptions } from "./composables/useSpotlight"
|