@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.
Files changed (640) hide show
  1. package/README.md +49 -0
  2. package/dist/assets/LoaderMark-DxBV2iDJ.css +43 -0
  3. package/dist/assets/LpActivityLine-B3EwNQEB.css +33 -0
  4. package/dist/assets/{LpCommandPalette-DxyjhYn_.css → LpCommandPalette-u-zOxKWa.css} +21 -31
  5. package/dist/assets/LpDock-Cbh0wQUv.css +17 -0
  6. package/dist/assets/{LpDropzone-Qb8k7cg4.css → LpDropzone-Bb1vBTeU.css} +12 -17
  7. package/dist/assets/{LpImageEditor-CElPDzpF.css → LpImageEditor-XM5bAziW.css} +6 -6
  8. package/dist/assets/LpLogViewer-BDNW6P52.css +38 -0
  9. package/dist/assets/{LpPalettePreview-CJmAKgYW.css → LpPalettePreview-B9VKDrvA.css} +2 -7
  10. package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
  11. package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
  12. package/dist/assets/LpShinyText-D69cBYDR.css +61 -0
  13. package/dist/assets/LpStatus-430OGTZY.css +17 -0
  14. package/dist/assets/LpStepMark-Drvx33Vg.css +10 -0
  15. package/dist/assets/{LpTable-BPERfJIk.css → LpTable-DHxEQ_-3.css} +19 -19
  16. package/dist/assets/LpTabs-BJ-nrJuI.css +18 -0
  17. package/dist/assets/LpTextReveal-DjI1MsDS.css +35 -0
  18. package/dist/assets/LpTypewriter-CXAm9Nca.css +27 -0
  19. package/dist/chunks/AttentionDot-DCBf4aWg.js +25 -0
  20. package/dist/chunks/{ContextMenuItems-B7XFHksm.js → ContextMenuItems-6kxEivBI.js} +11 -5
  21. package/dist/chunks/{DropzoneLinkField-CjkrpDqO.js → DropzoneLinkField-Bw8Flkhk.js} +2 -2
  22. package/dist/chunks/FieldWrapper-BiennROB.js +43 -0
  23. package/dist/chunks/{LayoutCanvas-DF9CovaK.js → LayoutCanvas-BsJIzhdd.js} +1 -1
  24. package/dist/chunks/{LayoutNode-D9bIFzk0.js → LayoutNode-DJVhkSGk.js} +6 -8
  25. package/dist/chunks/LegendSwatch-BhRjrtzv.js +18 -0
  26. package/dist/chunks/LoaderMark-C1dubiKn.js +85 -0
  27. package/dist/chunks/{LpActionBar-MPKMu3pz.js → LpActionBar-CzOFar5t.js} +14 -20
  28. package/dist/chunks/LpActivityLine-CJvzrNpj.js +95 -0
  29. package/dist/chunks/{LpAddressInput-DG0BTqdH.js → LpAddressInput-Chv_Xf8q.js} +7 -7
  30. package/dist/chunks/LpAlert-C5igj802.js +119 -0
  31. package/dist/chunks/{LpAppShell-DPh1756q.js → LpAppShell-BiWByLmt.js} +15 -16
  32. package/dist/chunks/{LpAutocomplete-Dgn6hw3p.js → LpAutocomplete-D92niDHE.js} +15 -32
  33. package/dist/chunks/{LpAvatar-Bs0Fb1lC.js → LpAvatar-CLPl-qOF.js} +18 -6
  34. package/dist/chunks/LpBadge-BBq1Er9T.js +126 -0
  35. package/dist/chunks/LpBreadcrumbs-JKEi_yFF.js +144 -0
  36. package/dist/chunks/{LpButton-DNR-YAq5.js → LpButton-CVxBfGjd.js} +12 -4
  37. package/dist/chunks/{LpCalendar-BLya39Fh.js → LpCalendar-pVL91-Pl.js} +1 -1
  38. package/dist/chunks/{LpCard-Bf71NXZq.js → LpCard-CqKLnEhl.js} +18 -8
  39. package/dist/chunks/{LpCheckbox-Da5oZPHo.js → LpCheckbox-DHc2bHDe.js} +9 -6
  40. package/dist/chunks/{LpCodeBlock-lLbmslfs.js → LpCodeBlock-BGsQhxw8.js} +24 -32
  41. package/dist/chunks/LpCodeDisplay-CbJMs-IK.js +189 -0
  42. package/dist/chunks/LpCollapse-CWS9M_lm.js +115 -0
  43. package/dist/chunks/{LpColorPicker-DtEfBAcK.js → LpColorPicker-B7HSIFmn.js} +11 -6
  44. package/dist/chunks/{LpConfirmDialog-D7s4jakB.js → LpConfirmDialog-CfGCux8m.js} +3 -3
  45. package/dist/chunks/{LpConfirmHost-DrYI5y1K.js → LpConfirmHost-exB7JmcO.js} +1 -1
  46. package/dist/chunks/{LpContextMenu-CRnjoqSt.js → LpContextMenu-Cj96ENDC.js} +16 -7
  47. package/dist/chunks/LpCopyButton-DzHjnFs0.js +133 -0
  48. package/dist/chunks/LpCountdown-BQnmB4gq.js +231 -0
  49. package/dist/chunks/LpDataList-CHNYQw7h.js +121 -0
  50. package/dist/chunks/LpDatePicker-ac1_6o5P.js +169 -0
  51. package/dist/chunks/LpDateRangePicker-B15gYrZJ.js +127 -0
  52. package/dist/chunks/{LpDisclosure-6AplYBub.js → LpDisclosure-DOarzlAG.js} +22 -11
  53. package/dist/chunks/{LpDrawer-Q4SOxM4s.js → LpDrawer-DGNKRsGq.js} +9 -4
  54. package/dist/chunks/{LpDropdownMenu-DWTt0ooM.js → LpDropdownMenu-R4aYVtVV.js} +14 -6
  55. package/dist/chunks/LpEditable-Ws3DNQHn.js +238 -0
  56. package/dist/chunks/{LpEmptyState-om1UnFjV.js → LpEmptyState-KTKipws2.js} +1 -1
  57. package/dist/chunks/{LpFieldNotice-CHuDeLjc.js → LpFieldNotice-CurbNuXI.js} +1 -1
  58. package/dist/chunks/{LpFileTree-CW24YsVX.js → LpFileTree-DDNg34tJ.js} +5 -3
  59. package/dist/chunks/{LpFileTreeNode-BXhTHaKW.js → LpFileTreeNode-DmPuYNZ_.js} +42 -55
  60. package/dist/chunks/{LpFormField-DPb47HEm.js → LpFormField-BWwgm1E4.js} +23 -9
  61. package/dist/chunks/LpFrame-BVQCQLDI.js +155 -0
  62. package/dist/chunks/LpGauge-C14Z9503.js +204 -0
  63. package/dist/chunks/LpGlowBorder-B8V-QzIl.js +40 -0
  64. package/dist/chunks/{LpHintExample-C1eKYdeL.js → LpHintExample-9Py0wc-L.js} +11 -34
  65. package/dist/chunks/{LpHintLayer-7UOdWQG3.js → LpHintLayer-HvwUA5Ec.js} +27 -14
  66. package/dist/chunks/{LpHints-BUtBp9-w.js → LpHints-DxbPKOzQ.js} +3 -3
  67. package/dist/chunks/LpHoverCard-spGxyw7T.js +130 -0
  68. package/dist/chunks/{LpIcon-6tSrZ3Zy.js → LpIcon-HJP5xMz4.js} +1 -1
  69. package/dist/chunks/LpIdenticon-BzdC_qz9.js +63 -0
  70. package/dist/chunks/{LpInfraNode-Ds_8SZgN.js → LpInfraNode-D64hywJI.js} +39 -25
  71. package/dist/chunks/{LpInput-CUyr6PIE.js → LpInput-CDuwODJG.js} +44 -18
  72. package/dist/chunks/{LpLightbox-B9J8rzsj.js → LpLightbox-XJ0LpTcZ.js} +69 -69
  73. package/dist/chunks/LpLoader-DjJEX8hL.js +92 -0
  74. package/dist/chunks/{LpLogViewer-4QFc-sVN.js → LpLogViewer-DKK4ySZl.js} +225 -129
  75. package/dist/chunks/LpMagnetic-CtXKLa2Y.js +62 -0
  76. package/dist/chunks/{LpMapPicker-BTbkFeSG.js → LpMapPicker-BtIl7NOM.js} +34 -31
  77. package/dist/chunks/LpMasonry--k0571qG.js +185 -0
  78. package/dist/chunks/{LpMediaGallery-CuPcscx3.js → LpMediaGallery-rmI1DjKN.js} +3 -3
  79. package/dist/chunks/{LpModal-hk1noDcr.js → LpModal-eBMt2Fqn.js} +8 -3
  80. package/dist/chunks/{LpModalNav-DQd2keZm.js → LpModalNav-DiyFCHiZ.js} +4 -4
  81. package/dist/chunks/{LpNotificationBell-X84PJIxD.js → LpNotificationBell-D-WhE5m2.js} +32 -48
  82. package/dist/chunks/LpNumberField-B9k-h2HE.js +140 -0
  83. package/dist/chunks/{LpNumberFlow-z4WPZcZu.js → LpNumberFlow-Cfyh033Q.js} +8 -28
  84. package/dist/chunks/{LpOtpInput-PbeNJ5In.js → LpOtpInput-CeBPsM7D.js} +2 -1
  85. package/dist/chunks/{LpPagination-Bx-VG4Ag.js → LpPagination-VNCX6pFC.js} +37 -6
  86. package/dist/chunks/{LpPalettePreview-CFav_7co.js → LpPalettePreview-BNB8T_MY.js} +1 -1
  87. package/dist/chunks/{LpPasswordInput-CbnXitAS.js → LpPasswordInput-GL2KOFK8.js} +26 -22
  88. package/dist/chunks/{LpPhoneInput-DP69HONS.js → LpPhoneInput-C60tx1tC.js} +12 -7
  89. package/dist/chunks/{LpPie-yLF9-aDR.js → LpPie-BgXZ3xmm.js} +159 -48
  90. package/dist/chunks/LpPipeline-B31h41Mu.js +329 -0
  91. package/dist/chunks/{LpPopover-DVnkHaOu.js → LpPopover-DmZ3wUtP.js} +13 -7
  92. package/dist/chunks/{LpProgress-CA86wxXu.js → LpProgress-CE-m5OpD.js} +23 -63
  93. package/dist/chunks/LpQuota-DaL8TgNe.js +162 -0
  94. package/dist/chunks/{LpRadioGroup-8S5hf8lE.js → LpRadioGroup-CGBr5nIp.js} +1 -1
  95. package/dist/chunks/{LpRangeCalendar-ByQi-WUz.js → LpRangeCalendar-c5qj7YcC.js} +1 -1
  96. package/dist/chunks/{LpRangeSlider-C1yF9-nP.js → LpRangeSlider-Dv6lNvHY.js} +6 -2
  97. package/dist/chunks/LpRelativeTime-yin9uQP7.js +73 -0
  98. package/dist/chunks/LpRepeater-D0S7jjwr.js +180 -0
  99. package/dist/chunks/LpRevealOnScroll-DcQjexLy.js +76 -0
  100. package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
  101. package/dist/chunks/LpScramble-TDO5Kdou.js +85 -0
  102. package/dist/chunks/LpSecretField-CfWyHv9m.js +316 -0
  103. package/dist/chunks/{LpSection-BmRXe6ZP.js → LpSection-BW4xJ-Li.js} +1 -1
  104. package/dist/chunks/{LpSegmented-CW3bFHM4.js → LpSegmented-BO99Sr4m.js} +11 -14
  105. package/dist/chunks/{LpSelect-BCyDYoih.js → LpSelect-C_8cJtj6.js} +91 -111
  106. package/dist/chunks/LpShaderBackdrop-Bote0iuy.js +332 -0
  107. package/dist/chunks/LpShinyText-DX2ajtWq.js +48 -0
  108. package/dist/chunks/{LpSidebar-DfIiS-lB.js → LpSidebar-CZRXtvem.js} +5 -3
  109. package/dist/chunks/{LpSidebarNav-C5FDNI0t.js → LpSidebarNav-DBg1U1oW.js} +3 -3
  110. package/dist/chunks/{LpSlider-Cuzmrd7p.js → LpSlider-DuoRpOrH.js} +6 -2
  111. package/dist/chunks/{LpSparkline-DXT4KrSi.js → LpSparkline-CExIRDb3.js} +32 -27
  112. package/dist/chunks/LpSpotlight-4F3NeUMY.js +41 -0
  113. package/dist/chunks/{LpStat-iBMF5QNk.js → LpStat-DFKlPJgy.js} +38 -35
  114. package/dist/chunks/LpStatus-BsGLrpor.js +86 -0
  115. package/dist/chunks/LpStepMark-TrzOioa9.js +101 -0
  116. package/dist/chunks/LpStepper-BbnS5jUr.js +76 -0
  117. package/dist/chunks/{LpSwap-D82jiecV.js → LpSwap-DzE6M3Mg.js} +1 -1
  118. package/dist/chunks/LpSwitch-DrzKrZZV.js +112 -0
  119. package/dist/chunks/{LpTableFilter-CuIbgdW0.js → LpTableFilter-DyvHGbOk.js} +3 -2
  120. package/dist/chunks/{LpTableOfContents-C_4VBktT.js → LpTableOfContents-rYvo8z5T.js} +34 -21
  121. package/dist/chunks/{LpTagsInput-DiXrpYeE.js → LpTagsInput-DZg80W-B.js} +68 -71
  122. package/dist/chunks/LpTextReveal-CtAnOUkp.js +140 -0
  123. package/dist/chunks/{LpTextarea-xoQd5Lnp.js → LpTextarea-DiWjeVoJ.js} +12 -11
  124. package/dist/chunks/{LpThemeProvider-CQ2jC9TA.js → LpThemeProvider-DcbfOxsU.js} +1 -1
  125. package/dist/chunks/LpThemeStudio-DxVZMtzN.js +416 -0
  126. package/dist/chunks/LpThemeStudioSection-BwhqYDLf.js +20 -0
  127. package/dist/chunks/LpThemeSwitcher-CadVBTBn.js +278 -0
  128. package/dist/chunks/{LpTimeField-MFgAsNc5.js → LpTimeField-BFQVf_PW.js} +13 -5
  129. package/dist/chunks/{LpToaster-C4zE9zB7.js → LpToaster-Wv9ksj4q.js} +49 -82
  130. package/dist/chunks/{LpTooltip-suFCM34F.js → LpTooltip-Cz8SQwRt.js} +8 -3
  131. package/dist/chunks/{LpTopologyCanvas-6ozNrQKh.js → LpTopologyCanvas-C17A1XCb.js} +1 -1
  132. package/dist/chunks/{LpTour-BUp3Jt2e.js → LpTour-CY2bFXge.js} +24 -18
  133. package/dist/chunks/LpTruncate-D_5Pfv5B.js +112 -0
  134. package/dist/chunks/LpTypewriter-BCL_a6wE.js +159 -0
  135. package/dist/chunks/{LpUptimeBar-B6kHw4Cj.js → LpUptimeBar-Tew1Ykx4.js} +10 -9
  136. package/dist/chunks/{LpVideoBackdrop-qWRYBOTQ.js → LpVideoBackdrop-DS1wGv-X.js} +7 -8
  137. package/dist/chunks/{MenuTitle-obgek0B7.js → MenuTitle-BjQZX8tQ.js} +1 -1
  138. package/dist/chunks/OptionContent-CmYUUeWj.js +40 -0
  139. package/dist/chunks/PickerField-DoHv0WMH.js +125 -0
  140. package/dist/chunks/RevealToggle-C-KzaQGJ.js +65 -0
  141. package/dist/chunks/StepConnector-37OgEOXA.js +41 -0
  142. package/dist/chunks/TourCard-BJ8i7dk0.js +123 -0
  143. package/dist/chunks/backdrop-Dkf2vM81.js +59 -0
  144. package/dist/chunks/{icons-DVhZ_plB.js → icons-4IywzkHk.js} +1 -1
  145. package/dist/chunks/{useTheme-2qHG8NEU.js → useTheme-BOV_-AiY.js} +9 -65
  146. package/dist/component-names.d.ts +1 -1
  147. package/dist/components/AttentionDot.vue.d.ts +9 -0
  148. package/dist/components/AttentionDot.vue.js +4 -0
  149. package/dist/components/ContextMenuItems.vue.js +1 -1
  150. package/dist/components/DropzoneLinkField.vue.js +1 -1
  151. package/dist/components/FieldWrapper.vue.d.ts +25 -0
  152. package/dist/components/FieldWrapper.vue.js +4 -0
  153. package/dist/components/LayoutCanvas.vue.js +1 -1
  154. package/dist/components/LayoutNode.vue.d.ts +4 -4
  155. package/dist/components/LayoutNode.vue.js +1 -1
  156. package/dist/components/LegendSwatch.vue.d.ts +6 -0
  157. package/dist/components/LegendSwatch.vue.js +4 -0
  158. package/dist/components/LoaderMark.vue.d.ts +12 -0
  159. package/dist/components/LoaderMark.vue.js +4 -0
  160. package/dist/components/LpActionBar.vue.js +1 -1
  161. package/dist/components/LpActivityLine.vue.d.ts +58 -0
  162. package/dist/components/LpActivityLine.vue.js +4 -0
  163. package/dist/components/LpAddressInput.vue.js +1 -1
  164. package/dist/components/LpAlert.vue.d.ts +2 -2
  165. package/dist/components/LpAlert.vue.js +1 -1
  166. package/dist/components/LpAppShell.vue.d.ts +8 -7
  167. package/dist/components/LpAppShell.vue.js +1 -1
  168. package/dist/components/LpAutocomplete.vue.js +1 -1
  169. package/dist/components/LpAvatar.vue.d.ts +16 -0
  170. package/dist/components/LpAvatar.vue.js +1 -1
  171. package/dist/components/LpBadge.vue.d.ts +19 -5
  172. package/dist/components/LpBadge.vue.js +1 -1
  173. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  174. package/dist/components/LpButton.vue.d.ts +2 -2
  175. package/dist/components/LpButton.vue.js +1 -1
  176. package/dist/components/LpCalendar.vue.js +1 -1
  177. package/dist/components/LpCard.vue.d.ts +24 -0
  178. package/dist/components/LpCard.vue.js +1 -1
  179. package/dist/components/LpChart.vue.js +131 -160
  180. package/dist/components/LpCheckbox.vue.d.ts +2 -2
  181. package/dist/components/LpCheckbox.vue.js +1 -1
  182. package/dist/components/LpCodeBlock.vue.js +1 -1
  183. package/dist/components/LpCodeDisplay.vue.d.ts +89 -0
  184. package/dist/components/LpCodeDisplay.vue.js +4 -0
  185. package/dist/components/LpCollapse.vue.d.ts +58 -0
  186. package/dist/components/LpCollapse.vue.js +4 -0
  187. package/dist/components/LpColorPicker.vue.d.ts +2 -2
  188. package/dist/components/LpColorPicker.vue.js +1 -1
  189. package/dist/components/LpCommandPalette.vue.js +34 -23
  190. package/dist/components/LpConfirmDialog.vue.js +1 -1
  191. package/dist/components/LpConfirmHost.vue.js +1 -1
  192. package/dist/components/LpContextMenu.vue.js +1 -1
  193. package/dist/components/LpCopyButton.vue.d.ts +82 -0
  194. package/dist/components/LpCopyButton.vue.js +4 -0
  195. package/dist/components/LpCountdown.vue.d.ts +100 -0
  196. package/dist/components/LpCountdown.vue.js +4 -0
  197. package/dist/components/LpDataList.vue.d.ts +66 -0
  198. package/dist/components/LpDataList.vue.js +4 -0
  199. package/dist/components/LpDatePicker.vue.d.ts +3 -1
  200. package/dist/components/LpDatePicker.vue.js +1 -1
  201. package/dist/components/LpDateRangePicker.vue.d.ts +3 -1
  202. package/dist/components/LpDateRangePicker.vue.js +1 -1
  203. package/dist/components/LpDisclosure.vue.js +1 -1
  204. package/dist/components/LpDock.vue.d.ts +74 -0
  205. package/dist/components/LpDock.vue.js +204 -0
  206. package/dist/components/LpDrawer.vue.js +1 -1
  207. package/dist/components/LpDropdownMenu.vue.js +1 -1
  208. package/dist/components/LpDropzone.vue.d.ts +8 -1
  209. package/dist/components/LpDropzone.vue.js +36 -15
  210. package/dist/components/LpEditable.vue.d.ts +85 -0
  211. package/dist/components/LpEditable.vue.js +4 -0
  212. package/dist/components/LpEmptyState.vue.js +1 -1
  213. package/dist/components/LpFieldNotice.vue.js +1 -1
  214. package/dist/components/LpFileTree.vue.js +1 -1
  215. package/dist/components/LpFileTreeNode.vue.js +1 -1
  216. package/dist/components/LpFormField.vue.js +1 -1
  217. package/dist/components/LpFrame.vue.d.ts +22 -0
  218. package/dist/components/LpFrame.vue.js +4 -0
  219. package/dist/components/LpGauge.vue.d.ts +116 -0
  220. package/dist/components/LpGauge.vue.js +4 -0
  221. package/dist/components/LpGlowBorder.vue.d.ts +47 -0
  222. package/dist/components/LpGlowBorder.vue.js +4 -0
  223. package/dist/components/LpHintExample.vue.d.ts +2 -2
  224. package/dist/components/LpHintExample.vue.js +1 -1
  225. package/dist/components/LpHintLayer.vue.js +1 -1
  226. package/dist/components/LpHints.vue.js +1 -1
  227. package/dist/components/LpHoverCard.vue.d.ts +60 -0
  228. package/dist/components/LpHoverCard.vue.js +4 -0
  229. package/dist/components/LpIcon.vue.js +1 -1
  230. package/dist/components/LpIdenticon.vue.d.ts +37 -0
  231. package/dist/components/LpIdenticon.vue.js +4 -0
  232. package/dist/components/LpImageEditor.vue.js +13 -19
  233. package/dist/components/LpInfraNode.vue.js +1 -1
  234. package/dist/components/LpInput.vue.d.ts +10 -0
  235. package/dist/components/LpInput.vue.js +1 -1
  236. package/dist/components/LpLightbox.vue.js +1 -1
  237. package/dist/components/LpLoader.vue.d.ts +106 -0
  238. package/dist/components/LpLoader.vue.js +4 -0
  239. package/dist/components/LpLogViewer.vue.js +1 -1
  240. package/dist/components/LpMagnetic.vue.d.ts +28 -0
  241. package/dist/components/LpMagnetic.vue.js +4 -0
  242. package/dist/components/LpMapPicker.vue.js +1 -1
  243. package/dist/components/LpMasonry.vue.d.ts +42 -0
  244. package/dist/components/LpMasonry.vue.js +4 -0
  245. package/dist/components/LpMediaGallery.vue.js +1 -1
  246. package/dist/components/LpModal.vue.js +1 -1
  247. package/dist/components/LpModalNav.vue.js +1 -1
  248. package/dist/components/LpNotificationBell.vue.d.ts +15 -6
  249. package/dist/components/LpNotificationBell.vue.js +1 -1
  250. package/dist/components/LpNumberField.vue.d.ts +57 -0
  251. package/dist/components/LpNumberField.vue.js +1 -1
  252. package/dist/components/LpNumberFlow.vue.js +1 -1
  253. package/dist/components/LpOtpInput.vue.d.ts +12 -4
  254. package/dist/components/LpOtpInput.vue.js +1 -1
  255. package/dist/components/LpPagination.vue.js +1 -1
  256. package/dist/components/LpPaletteFacts.vue.js +2 -2
  257. package/dist/components/LpPaletteHeader.vue.js +2 -2
  258. package/dist/components/LpPalettePreview.vue.js +1 -1
  259. package/dist/components/LpPaletteStats.vue.js +2 -2
  260. package/dist/components/LpPasswordInput.vue.d.ts +19 -2
  261. package/dist/components/LpPasswordInput.vue.js +1 -1
  262. package/dist/components/LpPhoneInput.vue.js +1 -1
  263. package/dist/components/LpPie.vue.d.ts +3 -1
  264. package/dist/components/LpPie.vue.js +1 -1
  265. package/dist/components/LpPipeline.vue.d.ts +91 -0
  266. package/dist/components/LpPipeline.vue.js +4 -0
  267. package/dist/components/LpPopover.vue.d.ts +2 -2
  268. package/dist/components/LpPopover.vue.js +1 -1
  269. package/dist/components/LpProgress.vue.d.ts +11 -4
  270. package/dist/components/LpProgress.vue.js +1 -1
  271. package/dist/components/LpQuota.vue.d.ts +68 -0
  272. package/dist/components/LpQuota.vue.js +4 -0
  273. package/dist/components/LpRadioGroup.vue.js +1 -1
  274. package/dist/components/LpRangeCalendar.vue.js +1 -1
  275. package/dist/components/LpRangeSlider.vue.js +1 -1
  276. package/dist/components/LpRelativeTime.vue.d.ts +41 -0
  277. package/dist/components/LpRelativeTime.vue.js +4 -0
  278. package/dist/components/LpRepeater.vue.d.ts +48 -0
  279. package/dist/components/LpRepeater.vue.js +4 -0
  280. package/dist/components/LpRevealOnScroll.vue.d.ts +67 -0
  281. package/dist/components/LpRevealOnScroll.vue.js +4 -0
  282. package/dist/components/LpRollingText.vue.d.ts +3 -1
  283. package/dist/components/LpRollingText.vue.js +1 -1
  284. package/dist/components/LpScramble.vue.d.ts +55 -0
  285. package/dist/components/LpScramble.vue.js +4 -0
  286. package/dist/components/LpScrollArea.vue.d.ts +1 -1
  287. package/dist/components/LpSecretField.vue.d.ts +108 -0
  288. package/dist/components/LpSecretField.vue.js +4 -0
  289. package/dist/components/LpSection.vue.js +1 -1
  290. package/dist/components/LpSegmented.vue.js +1 -1
  291. package/dist/components/LpSelect.vue.d.ts +2 -0
  292. package/dist/components/LpSelect.vue.js +1 -1
  293. package/dist/components/LpShaderBackdrop.vue.d.ts +39 -0
  294. package/dist/components/LpShaderBackdrop.vue.js +4 -0
  295. package/dist/components/LpShinyText.vue.d.ts +39 -0
  296. package/dist/components/LpShinyText.vue.js +4 -0
  297. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  298. package/dist/components/LpSidebar.vue.js +1 -1
  299. package/dist/components/LpSidebarNav.vue.js +1 -1
  300. package/dist/components/LpSlider.vue.js +1 -1
  301. package/dist/components/LpSparkline.vue.d.ts +4 -3
  302. package/dist/components/LpSparkline.vue.js +1 -1
  303. package/dist/components/LpSpotlight.vue.d.ts +37 -0
  304. package/dist/components/LpSpotlight.vue.js +4 -0
  305. package/dist/components/LpStat.vue.js +1 -1
  306. package/dist/components/LpStatus.vue.d.ts +65 -0
  307. package/dist/components/LpStatus.vue.js +4 -0
  308. package/dist/components/LpStepMark.vue.d.ts +31 -0
  309. package/dist/components/LpStepMark.vue.js +4 -0
  310. package/dist/components/LpStepper.vue.js +1 -1
  311. package/dist/components/LpSwap.vue.js +1 -1
  312. package/dist/components/LpSwitch.vue.d.ts +2 -2
  313. package/dist/components/LpSwitch.vue.js +1 -1
  314. package/dist/components/LpTable.vue.js +104 -120
  315. package/dist/components/LpTableFilter.vue.js +1 -1
  316. package/dist/components/LpTableOfContents.vue.d.ts +6 -1
  317. package/dist/components/LpTableOfContents.vue.js +1 -1
  318. package/dist/components/LpTabs.vue.d.ts +5 -5
  319. package/dist/components/LpTabs.vue.js +25 -33
  320. package/dist/components/LpTagsInput.vue.js +1 -1
  321. package/dist/components/LpTextReveal.vue.d.ts +58 -0
  322. package/dist/components/LpTextReveal.vue.js +4 -0
  323. package/dist/components/LpTextarea.vue.js +1 -1
  324. package/dist/components/LpThemeProvider.vue.js +1 -1
  325. package/dist/components/LpThemeStudio.vue.d.ts +54 -0
  326. package/dist/components/LpThemeStudio.vue.js +4 -0
  327. package/dist/components/LpThemeStudioSection.vue.d.ts +16 -0
  328. package/dist/components/LpThemeStudioSection.vue.js +4 -0
  329. package/dist/components/LpThemeSwitcher.vue.d.ts +32 -1
  330. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  331. package/dist/components/LpTimeField.vue.d.ts +2 -0
  332. package/dist/components/LpTimeField.vue.js +1 -1
  333. package/dist/components/LpToaster.vue.js +1 -1
  334. package/dist/components/LpTooltip.vue.d.ts +2 -2
  335. package/dist/components/LpTooltip.vue.js +1 -1
  336. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  337. package/dist/components/LpTour.vue.js +1 -1
  338. package/dist/components/LpTruncate.vue.d.ts +34 -0
  339. package/dist/components/LpTruncate.vue.js +4 -0
  340. package/dist/components/LpTypewriter.vue.d.ts +61 -0
  341. package/dist/components/LpTypewriter.vue.js +4 -0
  342. package/dist/components/LpUptimeBar.vue.js +1 -1
  343. package/dist/components/LpVideoBackdrop.vue.js +1 -1
  344. package/dist/components/MenuTitle.vue.js +1 -1
  345. package/dist/components/OptionContent.vue.d.ts +7 -0
  346. package/dist/components/OptionContent.vue.js +4 -0
  347. package/dist/components/PickerField.vue.d.ts +45 -0
  348. package/dist/components/PickerField.vue.js +4 -0
  349. package/dist/components/RevealToggle.vue.d.ts +21 -0
  350. package/dist/components/RevealToggle.vue.js +4 -0
  351. package/dist/components/StepConnector.vue.d.ts +19 -0
  352. package/dist/components/StepConnector.vue.js +4 -0
  353. package/dist/components/TourCard.vue.js +1 -1
  354. package/dist/components/badge.d.ts +1 -0
  355. package/dist/components/badge.js +4 -0
  356. package/dist/components/chart.d.ts +5 -1
  357. package/dist/components/chart.js +2 -21
  358. package/dist/components/dateRange.d.ts +11 -0
  359. package/dist/components/dateRange.js +12 -0
  360. package/dist/components/dock.d.ts +19 -0
  361. package/dist/components/dock.js +16 -0
  362. package/dist/components/dropdown.d.ts +10 -1
  363. package/dist/components/dropdown.js +7 -2
  364. package/dist/components/fieldText.d.ts +38 -0
  365. package/dist/components/fieldText.js +53 -0
  366. package/dist/components/fileTree.d.ts +7 -3
  367. package/dist/components/fileTree.js +12 -18
  368. package/dist/components/format.d.ts +41 -0
  369. package/dist/components/format.js +67 -0
  370. package/dist/components/identicon.d.ts +38 -0
  371. package/dist/components/identicon.js +85 -0
  372. package/dist/components/masonry.d.ts +32 -0
  373. package/dist/components/masonry.js +40 -0
  374. package/dist/components/menuWhen.js +1 -1
  375. package/dist/components/meter.d.ts +64 -0
  376. package/dist/components/meter.js +53 -0
  377. package/dist/components/otp.d.ts +1 -1
  378. package/dist/components/otp.js +7 -2
  379. package/dist/components/pipeline.d.ts +55 -0
  380. package/dist/components/pipeline.js +51 -0
  381. package/dist/components/quota.d.ts +57 -0
  382. package/dist/components/quota.js +40 -0
  383. package/dist/components/relativeTime.d.ts +24 -0
  384. package/dist/components/relativeTime.js +56 -0
  385. package/dist/components/reveal.d.ts +18 -0
  386. package/dist/components/reveal.js +32 -0
  387. package/dist/components/scramble.d.ts +68 -0
  388. package/dist/components/scramble.js +58 -0
  389. package/dist/components/shaderBackdrop.d.ts +20 -0
  390. package/dist/components/shaderBackdrop.js +156 -0
  391. package/dist/components/slider.d.ts +5 -0
  392. package/dist/components/slider.js +24 -0
  393. package/dist/components/slotText.d.ts +2 -0
  394. package/dist/components/slotText.js +9 -0
  395. package/dist/components/status.d.ts +14 -0
  396. package/dist/components/status.js +22 -0
  397. package/dist/components/tableFacets.d.ts +8 -0
  398. package/dist/components/tableFacets.js +19 -0
  399. package/dist/components/textSplit.d.ts +17 -0
  400. package/dist/components/textSplit.js +24 -0
  401. package/dist/components/timeSpan.d.ts +78 -0
  402. package/dist/components/timeSpan.js +85 -0
  403. package/dist/components/tone.d.ts +43 -0
  404. package/dist/components/tone.js +82 -0
  405. package/dist/components/tour.js +3 -2
  406. package/dist/components/typewriter.d.ts +36 -0
  407. package/dist/components/typewriter.js +53 -0
  408. package/dist/components/videoBackdrop.js +5 -6
  409. package/dist/composables/easing.d.ts +22 -1
  410. package/dist/composables/easing.js +42 -1
  411. package/dist/composables/pseudoLocale.d.ts +15 -0
  412. package/dist/composables/pseudoLocale.js +96 -0
  413. package/dist/composables/scroll.js +5 -3
  414. package/dist/composables/useClipboard.d.ts +4 -1
  415. package/dist/composables/useClipboard.js +12 -2
  416. package/dist/composables/useField.d.ts +13 -0
  417. package/dist/composables/useField.js +26 -1
  418. package/dist/composables/useForm.js +32 -9
  419. package/dist/composables/useInView.d.ts +11 -0
  420. package/dist/composables/useInView.js +39 -0
  421. package/dist/composables/useLoadingGate.d.ts +8 -0
  422. package/dist/composables/useLoadingGate.js +38 -0
  423. package/dist/composables/useLpConfig.d.ts +10 -0
  424. package/dist/composables/useLpConfig.js +11 -1
  425. package/dist/composables/useMediaQuery.js +3 -1
  426. package/dist/composables/useNow.d.ts +16 -0
  427. package/dist/composables/useNow.js +39 -0
  428. package/dist/composables/usePersisted.js +14 -7
  429. package/dist/composables/usePillTransition.d.ts +5 -2
  430. package/dist/composables/usePillTransition.js +4 -3
  431. package/dist/composables/usePointerFrame.d.ts +18 -0
  432. package/dist/composables/usePointerFrame.js +31 -0
  433. package/dist/composables/useReducedMotion.d.ts +2 -0
  434. package/dist/composables/useReducedMotion.js +7 -0
  435. package/dist/composables/useRepeater.d.ts +17 -0
  436. package/dist/composables/useRepeater.js +31 -0
  437. package/dist/composables/useResizeObserver.d.ts +8 -0
  438. package/dist/composables/useResizeObserver.js +33 -0
  439. package/dist/composables/useRevealedValue.d.ts +31 -0
  440. package/dist/composables/useRevealedValue.js +26 -0
  441. package/dist/composables/useScramble.d.ts +42 -0
  442. package/dist/composables/useScramble.js +76 -0
  443. package/dist/composables/useShift.js +2 -10
  444. package/dist/composables/useSpotlight.d.ts +18 -0
  445. package/dist/composables/useSpotlight.js +53 -0
  446. package/dist/composables/useTilt.js +26 -18
  447. package/dist/composables/useTween.d.ts +43 -0
  448. package/dist/composables/useTween.js +69 -0
  449. package/dist/composables/useView.d.ts +18 -0
  450. package/dist/composables/useView.js +64 -0
  451. package/dist/icons-all.js +1 -1
  452. package/dist/index.d.ts +98 -1
  453. package/dist/index.js +263 -105
  454. package/dist/theme/define.d.ts +12 -0
  455. package/dist/theme/studio.d.ts +90 -0
  456. package/package.json +8 -2
  457. package/src/component-names.ts +33 -0
  458. package/src/components/AttentionDot.vue +27 -0
  459. package/src/components/ContextMenuItems.vue +5 -2
  460. package/src/components/FieldWrapper.vue +38 -0
  461. package/src/components/LayoutNode.vue +5 -9
  462. package/src/components/LegendSwatch.vue +15 -0
  463. package/src/components/LoaderMark.vue +90 -0
  464. package/src/components/LpActionBar.vue +12 -20
  465. package/src/components/LpActivityLine.vue +186 -0
  466. package/src/components/LpAlert.vue +54 -24
  467. package/src/components/LpAppShell.vue +7 -11
  468. package/src/components/LpAutocomplete.vue +16 -14
  469. package/src/components/LpAvatar.vue +17 -2
  470. package/src/components/LpBadge.vue +77 -13
  471. package/src/components/LpBreadcrumbs.vue +101 -35
  472. package/src/components/LpButton.vue +15 -3
  473. package/src/components/LpCard.vue +30 -7
  474. package/src/components/LpChart.vue +162 -171
  475. package/src/components/LpCheckbox.vue +10 -4
  476. package/src/components/LpCodeBlock.vue +11 -19
  477. package/src/components/LpCodeDisplay.vue +228 -0
  478. package/src/components/LpCollapse.vue +162 -0
  479. package/src/components/LpColorPicker.vue +10 -1
  480. package/src/components/LpCommandPalette.vue +38 -24
  481. package/src/components/LpContextMenu.vue +13 -3
  482. package/src/components/LpCopyButton.vue +185 -0
  483. package/src/components/LpCountdown.vue +308 -0
  484. package/src/components/LpDataList.vue +154 -0
  485. package/src/components/LpDatePicker.vue +55 -104
  486. package/src/components/LpDateRangePicker.vue +51 -95
  487. package/src/components/LpDisclosure.vue +58 -36
  488. package/src/components/LpDock.vue +274 -0
  489. package/src/components/LpDrawer.vue +10 -1
  490. package/src/components/LpDropdownMenu.vue +11 -2
  491. package/src/components/LpDropzone.vue +34 -13
  492. package/src/components/LpEditable.vue +295 -0
  493. package/src/components/LpFileTree.vue +5 -1
  494. package/src/components/LpFileTreeNode.vue +25 -50
  495. package/src/components/LpFormField.vue +22 -3
  496. package/src/components/LpFrame.vue +200 -0
  497. package/src/components/LpGauge.vue +287 -0
  498. package/src/components/LpGlowBorder.vue +60 -0
  499. package/src/components/LpHintExample.vue +9 -32
  500. package/src/components/LpHintLayer.vue +13 -3
  501. package/src/components/LpHoverCard.vue +175 -0
  502. package/src/components/LpIdenticon.vue +69 -0
  503. package/src/components/LpImageEditor.vue +15 -18
  504. package/src/components/LpInfraNode.vue +27 -16
  505. package/src/components/LpInput.vue +30 -16
  506. package/src/components/LpLightbox.vue +44 -23
  507. package/src/components/LpLoader.vue +145 -0
  508. package/src/components/LpLogViewer.vue +311 -82
  509. package/src/components/LpMagnetic.vue +97 -0
  510. package/src/components/LpMapPicker.vue +26 -28
  511. package/src/components/LpMasonry.vue +247 -0
  512. package/src/components/LpModal.vue +10 -1
  513. package/src/components/LpNotificationBell.vue +33 -49
  514. package/src/components/LpNumberField.vue +79 -14
  515. package/src/components/LpNumberFlow.vue +10 -35
  516. package/src/components/LpOtpInput.vue +7 -2
  517. package/src/components/LpPagination.vue +38 -4
  518. package/src/components/LpPalettePreview.vue +2 -7
  519. package/src/components/LpPasswordInput.vue +25 -18
  520. package/src/components/LpPhoneInput.vue +12 -3
  521. package/src/components/LpPie.vue +197 -36
  522. package/src/components/LpPipeline.vue +366 -0
  523. package/src/components/LpPopover.vue +14 -1
  524. package/src/components/LpProgress.vue +22 -84
  525. package/src/components/LpQuota.vue +197 -0
  526. package/src/components/LpRangeSlider.vue +5 -1
  527. package/src/components/LpRelativeTime.vue +90 -0
  528. package/src/components/LpRepeater.vue +131 -0
  529. package/src/components/LpRevealOnScroll.vue +125 -0
  530. package/src/components/LpRollingText.vue +12 -1
  531. package/src/components/LpScramble.vue +107 -0
  532. package/src/components/LpSecretField.vue +320 -0
  533. package/src/components/LpSegmented.vue +3 -10
  534. package/src/components/LpSelect.vue +74 -65
  535. package/src/components/LpShaderBackdrop.vue +434 -0
  536. package/src/components/LpShinyText.vue +139 -0
  537. package/src/components/LpSidebar.vue +2 -0
  538. package/src/components/LpSlider.vue +5 -1
  539. package/src/components/LpSparkline.vue +55 -37
  540. package/src/components/LpSpotlight.vue +51 -0
  541. package/src/components/LpStat.vue +6 -2
  542. package/src/components/LpStatus.vue +127 -0
  543. package/src/components/LpStepMark.vue +138 -0
  544. package/src/components/LpStepper.vue +37 -43
  545. package/src/components/LpSwap.vue +2 -2
  546. package/src/components/LpSwitch.vue +15 -22
  547. package/src/components/LpTable.vue +47 -63
  548. package/src/components/LpTableFilter.vue +1 -0
  549. package/src/components/LpTableOfContents.vue +53 -29
  550. package/src/components/LpTabs.vue +10 -21
  551. package/src/components/LpTagsInput.vue +53 -37
  552. package/src/components/LpTextReveal.vue +236 -0
  553. package/src/components/LpTextarea.vue +11 -11
  554. package/src/components/LpThemeStudio.vue +216 -0
  555. package/src/components/LpThemeStudioSection.vue +16 -0
  556. package/src/components/LpThemeSwitcher.vue +156 -47
  557. package/src/components/LpTimeField.vue +9 -1
  558. package/src/components/LpToaster.vue +63 -83
  559. package/src/components/LpTooltip.vue +10 -1
  560. package/src/components/LpTour.vue +24 -13
  561. package/src/components/LpTruncate.vue +135 -0
  562. package/src/components/LpTypewriter.vue +236 -0
  563. package/src/components/LpUptimeBar.vue +6 -5
  564. package/src/components/LpVideoBackdrop.vue +15 -13
  565. package/src/components/OptionContent.vue +17 -0
  566. package/src/components/PickerField.vue +59 -0
  567. package/src/components/RevealToggle.vue +51 -0
  568. package/src/components/StepConnector.vue +54 -0
  569. package/src/components/TourCard.vue +29 -16
  570. package/src/components/badge.ts +8 -0
  571. package/src/components/chart.ts +8 -23
  572. package/src/components/dateRange.ts +25 -0
  573. package/src/components/dock.ts +31 -0
  574. package/src/components/dropdown.ts +15 -3
  575. package/src/components/fieldText.ts +95 -0
  576. package/src/components/fileTree.ts +19 -21
  577. package/src/components/format.ts +136 -0
  578. package/src/components/identicon.ts +160 -0
  579. package/src/components/masonry.ts +73 -0
  580. package/src/components/meter.ts +122 -0
  581. package/src/components/otp.ts +14 -3
  582. package/src/components/pipeline.ts +101 -0
  583. package/src/components/quota.ts +111 -0
  584. package/src/components/relativeTime.ts +118 -0
  585. package/src/components/reveal.ts +56 -0
  586. package/src/components/scramble.ts +138 -0
  587. package/src/components/shaderBackdrop.ts +208 -0
  588. package/src/components/slider.ts +30 -0
  589. package/src/components/slotText.ts +13 -0
  590. package/src/components/status.ts +46 -0
  591. package/src/components/tableFacets.ts +25 -0
  592. package/src/components/textSplit.ts +55 -0
  593. package/src/components/timeSpan.ts +183 -0
  594. package/src/components/tone.ts +144 -0
  595. package/src/components/tour.ts +3 -2
  596. package/src/components/typewriter.ts +104 -0
  597. package/src/components/videoBackdrop.ts +7 -6
  598. package/src/composables/easing.ts +66 -1
  599. package/src/composables/pseudoLocale.ts +105 -0
  600. package/src/composables/scroll.ts +6 -3
  601. package/src/composables/useClipboard.ts +25 -3
  602. package/src/composables/useField.ts +38 -1
  603. package/src/composables/useForm.ts +41 -11
  604. package/src/composables/useInView.ts +61 -0
  605. package/src/composables/useLoadingGate.ts +63 -0
  606. package/src/composables/useLpConfig.ts +20 -1
  607. package/src/composables/useMediaQuery.ts +6 -2
  608. package/src/composables/useNow.ts +84 -0
  609. package/src/composables/usePersisted.ts +19 -8
  610. package/src/composables/usePillTransition.ts +21 -13
  611. package/src/composables/usePointerFrame.ts +72 -0
  612. package/src/composables/useReducedMotion.ts +22 -0
  613. package/src/composables/useRepeater.ts +44 -0
  614. package/src/composables/useResizeObserver.ts +59 -0
  615. package/src/composables/useRevealedValue.ts +84 -0
  616. package/src/composables/useScramble.ts +152 -0
  617. package/src/composables/useShift.ts +10 -16
  618. package/src/composables/useSpotlight.ts +82 -0
  619. package/src/composables/useTilt.ts +40 -23
  620. package/src/composables/useTween.ts +149 -0
  621. package/src/composables/useView.ts +96 -0
  622. package/src/index.css +1 -0
  623. package/src/index.ts +143 -1
  624. package/src/kit-icons.ts +1 -1
  625. package/src/theme/define.ts +65 -0
  626. package/src/theme/studio.ts +202 -0
  627. package/src/tokens/effects.css +151 -0
  628. package/src/tokens/tokens.css +131 -39
  629. package/src/tokens/utilities.css +81 -0
  630. package/dist/assets/LpTabs-Bk7v4bZz.css +0 -18
  631. package/dist/chunks/LpAlert-BdvxvcWE.js +0 -85
  632. package/dist/chunks/LpBadge-Fe0D1bYx.js +0 -62
  633. package/dist/chunks/LpBreadcrumbs-rzOKkLiI.js +0 -98
  634. package/dist/chunks/LpDatePicker-BMfM454Y.js +0 -243
  635. package/dist/chunks/LpDateRangePicker-CNb9X3eL.js +0 -195
  636. package/dist/chunks/LpNumberField-DO1ufKvE.js +0 -107
  637. package/dist/chunks/LpStepper-C2slwObu.js +0 -90
  638. package/dist/chunks/LpSwitch-CZy9_IoA.js +0 -132
  639. package/dist/chunks/LpThemeSwitcher-CDoziW0z.js +0 -166
  640. package/dist/chunks/TourCard-BKI7X9-r.js +0 -105
@@ -10,3 +10,15 @@ export interface ThemeOverrides {
10
10
  surface?: Partial<SurfaceTokens>;
11
11
  }
12
12
  export declare function defineTheme(base: TokenSet | keyof typeof presets, overrides?: ThemeOverrides): TokenSet;
13
+ /**
14
+ * A theme with one brand colour swapped in, and everything that follows from it
15
+ * derived to match: the hover shade, the soft fill behind badges and selections,
16
+ * the focus ring, and the text on a brand button where the theme's own no
17
+ * longer reads. Lets an app offer "pick your colour" without the
18
+ * person picking five shades that agree with each other.
19
+ *
20
+ * applyTheme(withBrand(presets.dark, "#ff5ca8"))
21
+ *
22
+ * A colour it cannot read leaves the theme as it was.
23
+ */
24
+ export declare function withBrand(base: TokenSet | keyof typeof presets, color: string): TokenSet;
@@ -0,0 +1,90 @@
1
+ import { type ComputedRef, type Ref } from "vue";
2
+ import type { TokenSet } from "./tokens";
3
+ import { type RevealOrigin } from "./useTheme";
4
+ export declare const STUDIO_BRANDS: string[];
5
+ export declare const STUDIO_CORNERS: {
6
+ readonly sharp: {
7
+ readonly radiusControl: 3;
8
+ readonly radiusCard: 6;
9
+ };
10
+ readonly default: {};
11
+ readonly round: {
12
+ readonly radiusControl: 12;
13
+ readonly radiusCard: 22;
14
+ };
15
+ };
16
+ export declare const STUDIO_SIZES: {
17
+ readonly compact: {
18
+ readonly controlSm: 28;
19
+ readonly controlMd: 34;
20
+ readonly controlLg: 40;
21
+ };
22
+ readonly default: {};
23
+ readonly comfortable: {
24
+ readonly controlSm: 36;
25
+ readonly controlMd: 42;
26
+ readonly controlLg: 48;
27
+ };
28
+ };
29
+ export declare const STUDIO_MOTION: {
30
+ readonly fast: 0.6;
31
+ readonly normal: 1;
32
+ readonly slow: 1.8;
33
+ };
34
+ /** The `theme` of a studio that follows the OS between its `system` pair. */
35
+ export declare const STUDIO_SYSTEM = "system";
36
+ export interface StudioState {
37
+ /** Name of the base theme in the offered list, or STUDIO_SYSTEM. */
38
+ theme: string;
39
+ /** Brand colour over the theme's own; null keeps the theme's. */
40
+ brand: string | null;
41
+ corners: keyof typeof STUDIO_CORNERS;
42
+ size: keyof typeof STUDIO_SIZES;
43
+ motion: keyof typeof STUDIO_MOTION;
44
+ }
45
+ export interface ThemeStudioOptions {
46
+ /** Base themes to offer. Defaults to the kit's presets. */
47
+ themes?: TokenSet[];
48
+ /** Where the tuning is remembered. One state per key is shared by every caller. */
49
+ storageKey?: string;
50
+ /**
51
+ * Offer "System": the base theme follows the OS colour scheme between these
52
+ * two (names from `themes`), with the tuning kept on top of either.
53
+ */
54
+ system?: {
55
+ light: string;
56
+ dark: string;
57
+ };
58
+ }
59
+ export interface ThemeStudio {
60
+ state: Ref<StudioState>;
61
+ themes: ComputedRef<TokenSet[]>;
62
+ /** The light/dark pair "System" follows, when offered. */
63
+ system: ComputedRef<{
64
+ light: TokenSet;
65
+ dark: TokenSet;
66
+ } | null>;
67
+ /** The tuned theme as it is applied. */
68
+ theme: ComputedRef<TokenSet>;
69
+ /** The brand in effect: the picked one, else the base theme's. */
70
+ brand: Ref<string>;
71
+ /** Anything differs from the defaults. */
72
+ changed: ComputedRef<boolean>;
73
+ /** The tuned theme as an app takes it: code that builds it, the stored JSON, a CSS rule. */
74
+ exported: ComputedRef<{
75
+ code: string;
76
+ json: string;
77
+ css: string;
78
+ }>;
79
+ /** Another base theme, revealed from `origin`; brand, corners and size stay. */
80
+ pickTheme(name: string, origin?: RevealOrigin): void;
81
+ /** Change the tuning (not the base theme): applied at once, so a drag follows. */
82
+ tune(patch: Partial<Omit<StudioState, "theme">>): void;
83
+ reset(origin?: RevealOrigin): void;
84
+ }
85
+ /**
86
+ * The studio state for `storageKey`, made on first use and shared after. A
87
+ * later caller's `themes` or `system` fill in what the first one left out:
88
+ * the page may make the studio before the switcher that offers "System".
89
+ */
90
+ export declare function useThemeStudio(options?: ThemeStudioOptions): ThemeStudio;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.69.0",
3
+ "version": "0.70.1",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -59,11 +59,13 @@
59
59
  "prepublishOnly": "npm run build",
60
60
  "typecheck": "vue-tsc --noEmit",
61
61
  "test": "bun test",
62
+ "test:browser": "playwright test",
62
63
  "release": "npm version patch -m \"chore: release v%s\" && git push --follow-tags",
63
64
  "release:minor": "npm version minor -m \"chore: release v%s\" && git push --follow-tags",
64
65
  "release:major": "npm version major -m \"chore: release v%s\" && git push --follow-tags",
65
66
  "check:pack": "node scripts/check-pack.mjs",
66
- "gen:icons": "node scripts/gen-kit-icons.mjs"
67
+ "gen:icons": "node scripts/gen-kit-icons.mjs",
68
+ "gen:meta": "node scripts/gen-preview-meta.mjs"
67
69
  },
68
70
  "peerDependencies": {
69
71
  "@iconify-json/lucide": "^1.2.0",
@@ -84,9 +86,11 @@
84
86
  "devDependencies": {
85
87
  "@iconify-json/lucide": "^1.2.112",
86
88
  "@iconify/vue": "^5.0.1",
89
+ "@playwright/test": "^1.64.1",
87
90
  "@tailwindcss/vite": "^4.2.4",
88
91
  "@types/node": "^26.2.0",
89
92
  "@vitejs/plugin-vue": "^6.0.6",
93
+ "@vue/compiler-dom": "3.5.31",
90
94
  "motion-v": "^2.2.1",
91
95
  "reka-ui": "^2.9.10",
92
96
  "shiki": "^4.2.0",
@@ -96,6 +100,7 @@
96
100
  "vite": "^7.0.0",
97
101
  "vite-plugin-lib-inject-css": "^2.2.2",
98
102
  "vue": "3.5.31",
103
+ "vue-component-meta": "3.3.5",
99
104
  "vue-tsc": "^3.0.0"
100
105
  },
101
106
  "dependencies": {
@@ -104,6 +109,7 @@
104
109
  "@vue-flow/core": "^1.48.2",
105
110
  "@vue-flow/minimap": "^1.5.4",
106
111
  "libphonenumber-js": "^1.12.0",
112
+ "tailwind-merge": "^3.6.0",
107
113
  "vaul-vue": "^0.4.1"
108
114
  }
109
115
  }
@@ -4,6 +4,7 @@
4
4
  export const COMPONENT_NAMES = [
5
5
  "LayoutCanvas",
6
6
  "LpActionBar",
7
+ "LpActivityLine",
7
8
  "LpAddressInput",
8
9
  "LpAlert",
9
10
  "LpAppShell",
@@ -17,34 +18,49 @@ export const COMPONENT_NAMES = [
17
18
  "LpChart",
18
19
  "LpCheckbox",
19
20
  "LpCodeBlock",
21
+ "LpCodeDisplay",
22
+ "LpCollapse",
20
23
  "LpColorPicker",
21
24
  "LpCommandPalette",
22
25
  "LpConfirmDialog",
23
26
  "LpConfirmHost",
24
27
  "LpContextMenu",
28
+ "LpCopyButton",
29
+ "LpCountdown",
30
+ "LpDataList",
25
31
  "LpDatePicker",
26
32
  "LpDateRangePicker",
27
33
  "LpDisclosure",
28
34
  "LpDivider",
35
+ "LpDock",
29
36
  "LpDrawer",
30
37
  "LpDropdownMenu",
31
38
  "LpDropzone",
39
+ "LpEditable",
32
40
  "LpEmptyState",
33
41
  "LpFieldNotice",
34
42
  "LpFileTree",
35
43
  "LpFormField",
44
+ "LpFrame",
45
+ "LpGauge",
46
+ "LpGlowBorder",
36
47
  "LpHintExample",
37
48
  "LpHintLayer",
38
49
  "LpHints",
50
+ "LpHoverCard",
39
51
  "LpIcon",
52
+ "LpIdenticon",
40
53
  "LpImageEditor",
41
54
  "LpInfraNode",
42
55
  "LpInput",
43
56
  "LpKeys",
44
57
  "LpLightbox",
45
58
  "LpLink",
59
+ "LpLoader",
46
60
  "LpLogViewer",
61
+ "LpMagnetic",
47
62
  "LpMapPicker",
63
+ "LpMasonry",
48
64
  "LpMediaGallery",
49
65
  "LpModal",
50
66
  "LpModalNav",
@@ -61,25 +77,37 @@ export const COMPONENT_NAMES = [
61
77
  "LpPasswordInput",
62
78
  "LpPhoneInput",
63
79
  "LpPie",
80
+ "LpPipeline",
64
81
  "LpPopover",
65
82
  "LpProgress",
83
+ "LpQuota",
66
84
  "LpRadio",
67
85
  "LpRadioGroup",
68
86
  "LpRangeCalendar",
69
87
  "LpRangeSlider",
88
+ "LpRelativeTime",
89
+ "LpRepeater",
90
+ "LpRevealOnScroll",
70
91
  "LpRollingText",
92
+ "LpScramble",
71
93
  "LpScrollArea",
94
+ "LpSecretField",
72
95
  "LpSection",
73
96
  "LpSegmented",
74
97
  "LpSelect",
75
98
  "LpServiceNode",
99
+ "LpShaderBackdrop",
76
100
  "LpShift",
101
+ "LpShinyText",
77
102
  "LpShortcutsDialog",
78
103
  "LpSidebar",
79
104
  "LpSkeleton",
80
105
  "LpSlider",
81
106
  "LpSparkline",
107
+ "LpSpotlight",
82
108
  "LpStat",
109
+ "LpStatus",
110
+ "LpStepMark",
83
111
  "LpStepper",
84
112
  "LpSwap",
85
113
  "LpSwitch",
@@ -87,8 +115,11 @@ export const COMPONENT_NAMES = [
87
115
  "LpTableOfContents",
88
116
  "LpTabs",
89
117
  "LpTagsInput",
118
+ "LpTextReveal",
90
119
  "LpTextarea",
91
120
  "LpThemeProvider",
121
+ "LpThemeStudio",
122
+ "LpThemeStudioSection",
92
123
  "LpThemeSwitcher",
93
124
  "LpTilt",
94
125
  "LpTimeField",
@@ -97,6 +128,8 @@ export const COMPONENT_NAMES = [
97
128
  "LpTooltipProvider",
98
129
  "LpTopologyCanvas",
99
130
  "LpTour",
131
+ "LpTruncate",
132
+ "LpTypewriter",
100
133
  "LpUptimeBar",
101
134
  "LpVideoBackdrop"
102
135
  ] as const
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ // The caller's `class` is merged into the dot's own rather than appended.
3
+ export default { inheritAttrs: false }
4
+ </script>
5
+
6
+ <script setup lang="ts">
7
+ /*
8
+ * The small dot on a tab or a segment that says "something behind this wants
9
+ * a look". Internal: LpTabs and LpSegmented both draw it, on the icon's corner
10
+ * when there is an icon to sit on, otherwise after the label. Decorative; the
11
+ * thing it marks says why in its own words.
12
+ */
13
+ import { useMergedAttrs } from "../composables/useMergedClass"
14
+
15
+ const props = defineProps<{
16
+ /** On the corner of the icon it rides on (the icon's box is `relative`), rather than after the label. */
17
+ corner?: boolean
18
+ }>()
19
+
20
+ const { class: dotClass, attrs: rest } = useMergedAttrs(() =>
21
+ `rounded-full bg-accent ${props.corner ? "absolute -right-1 -top-0.5 size-2" : "relative z-10 size-1.5 self-start"}`,
22
+ )
23
+ </script>
24
+
25
+ <template>
26
+ <span aria-hidden="true" :class="dotClass" v-bind="rest" />
27
+ </template>
@@ -28,6 +28,7 @@ import {
28
28
  DropdownMenuSubTrigger,
29
29
  } from "reka-ui"
30
30
  import { computed } from "vue"
31
+ import { useOutsideGuard, usePortalTarget } from "../composables/useView"
31
32
  import type { ContextMenuItemDef } from "./LpContextMenu.vue"
32
33
  import LpIcon from "./LpIcon.vue"
33
34
  import MenuShortcut from "./MenuShortcut.vue"
@@ -66,6 +67,8 @@ const PRIMITIVES = {
66
67
  } as const
67
68
 
68
69
  const P = computed(() => PRIMITIVES[props.kind])
70
+ const portalTo = usePortalTarget()
71
+ const guardOutside = useOutsideGuard()
69
72
 
70
73
  const ITEM =
71
74
  "group/item flex cursor-pointer select-none items-center gap-2 rounded-inner px-2.5 py-1.5 text-sm outline-none transition-[background-color,color] duration-[var(--duration-fast)] data-[disabled]:pointer-events-none data-[disabled]:opacity-45 data-[highlighted]:bg-brand-soft"
@@ -89,8 +92,8 @@ const ICON =
89
92
  </span>
90
93
  <LpIcon name="lucide:chevron-right" :size="14" class="text-muted" />
91
94
  </component>
92
- <component :is="P.Portal">
93
- <component :is="P.SubContent" :collision-padding="8" :class="panel" :side-offset="2" :align-offset="-4">
95
+ <component :is="P.Portal" :to="portalTo">
96
+ <component :is="P.SubContent" @interact-outside="guardOutside" @focus-outside="guardOutside" @escape-key-down="guardOutside" :collision-padding="8" :class="panel" :side-offset="2" :align-offset="-4">
94
97
  <ContextMenuItems :items="item.children" :panel="panel" :kind="kind" />
95
98
  </component>
96
99
  </component>
@@ -0,0 +1,38 @@
1
+ <script setup lang="ts">
2
+ import { ref, useAttrs } from "vue"
3
+ import type { FieldNoticeOptions } from "../composables/useFieldNotice"
4
+ import LpFormField from "./LpFormField.vue"
5
+
6
+ defineOptions({ inheritAttrs: false })
7
+ defineProps<{
8
+ wrapped: boolean
9
+ id?: string
10
+ label?: string
11
+ hint?: string
12
+ error?: string
13
+ required?: boolean
14
+ }>()
15
+
16
+ const attrs = useAttrs()
17
+ const field = ref<InstanceType<typeof LpFormField> | null>(null)
18
+ defineExpose({
19
+ notify: (text: string, options?: FieldNoticeOptions) => field.value?.notify?.(text, options),
20
+ clearNotice: () => field.value?.clearNotice?.(),
21
+ })
22
+ </script>
23
+
24
+ <template>
25
+ <component
26
+ :is="wrapped ? LpFormField : 'div'"
27
+ ref="field"
28
+ :id="wrapped ? id : undefined"
29
+ :label="wrapped ? label : undefined"
30
+ :hint="wrapped ? hint : undefined"
31
+ :error="wrapped ? error : undefined"
32
+ :required="wrapped ? required : undefined"
33
+ :class="wrapped ? attrs.class : 'contents'"
34
+ :style="wrapped ? attrs.style : undefined"
35
+ >
36
+ <slot />
37
+ </component>
38
+ </template>
@@ -1,19 +1,15 @@
1
1
  <script setup lang="ts">
2
- import { Motion, useReducedMotion } from "motion-v"
2
+ import { Motion } from "motion-v"
3
3
  import { computed, onBeforeUnmount, ref } from "vue"
4
+ import { usePillTransition } from "../composables/usePillTransition"
4
5
  import type { LayoutNode, Leaf, Side, Split } from "../layout/tree"
5
6
  import type { BlockRegistry } from "../layout/registry"
6
7
  import { blockTitle } from "../layout/registry"
7
8
  import LpIcon from "./LpIcon.vue"
8
9
 
9
- // Same spring as LpTabs' panel height; instant under reduced motion, which
10
- // motion-v does not apply on its own.
11
- const reduceMotion = useReducedMotion()
12
- const layoutTransition = computed(() =>
13
- reduceMotion.value
14
- ? { duration: 0 }
15
- : { type: "spring" as const, stiffness: 520, damping: 42, mass: 0.9 },
16
- )
10
+ // The kit's layout spring, the same as LpTabs' panel height; instant under
11
+ // reduced motion, which motion-v does not apply on its own.
12
+ const layoutTransition = usePillTransition("layout")
17
13
 
18
14
  const props = defineProps<{
19
15
  node: LayoutNode
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ /*
3
+ * A series' colour in a chart legend: a dot that swells while its legend
4
+ * entry (the nearest `group`) is hovered. Internal; LpChart and LpPie draw
5
+ * their legends with it so the two keep reading as one family.
6
+ */
7
+ defineProps<{ color: string }>()
8
+ </script>
9
+
10
+ <template>
11
+ <span
12
+ class="size-2 shrink-0 rounded-full transition-transform duration-fast group-hover:scale-125"
13
+ :style="{ backgroundColor: color }"
14
+ />
15
+ </template>
@@ -0,0 +1,90 @@
1
+ <script setup lang="ts">
2
+ /*
3
+ * The drawing inside LpLoader: one of the three indicators plus its text.
4
+ * Internal — it exists so LpLoader can show the same mark on its own and as a
5
+ * placeholder swapped with content without writing it out twice. Its root
6
+ * takes the class and attributes LpLoader merged for it.
7
+ */
8
+ import type { LoaderSize, LoaderVariant } from "./LpLoader.vue"
9
+
10
+ defineProps<{
11
+ variant: LoaderVariant
12
+ size: LoaderSize
13
+ track: boolean
14
+ label?: string
15
+ /** What a screen reader hears when there is no visible label. */
16
+ spoken: string
17
+ }>()
18
+
19
+ const SPINNER = { inline: "size-[1em]", sm: "size-3.5", md: "size-5", lg: "size-8" }
20
+ const DOT = { inline: "size-[0.25em]", sm: "size-1.5", md: "size-2", lg: "size-2.5" }
21
+ const BAR = { inline: "h-[0.2em]", sm: "h-0.5", md: "h-[3px]", lg: "h-1" }
22
+ </script>
23
+
24
+ <template>
25
+ <span role="status">
26
+ <template v-if="variant === 'bar'">
27
+ <span v-if="label" class="text-xs text-muted">{{ label }}</span>
28
+ <span class="lp-loader-bar relative block w-full overflow-hidden rounded-pill bg-current/15" :class="BAR[size]" aria-hidden="true">
29
+ <span class="lp-sweep absolute inset-y-0 left-0 w-2/5 rounded-pill bg-current" />
30
+ </span>
31
+ </template>
32
+ <template v-else>
33
+ <svg v-if="variant === 'spinner'" viewBox="0 0 24 24" fill="none" class="lp-loader-spin shrink-0" :class="SPINNER[size]" aria-hidden="true">
34
+ <circle v-if="track" cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" opacity="0.2" />
35
+ <path d="M21 12a9 9 0 1 1-6.219-8.56" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
36
+ </svg>
37
+ <span v-else class="inline-flex shrink-0 items-center gap-[0.3em]" aria-hidden="true">
38
+ <span
39
+ v-for="i in 3"
40
+ :key="i"
41
+ class="lp-loader-dot rounded-full bg-current"
42
+ :class="DOT[size]"
43
+ :style="{ animationDelay: `${(i - 1) * 160}ms` }"
44
+ />
45
+ </span>
46
+ <span v-if="label" class="text-sm text-muted">{{ label }}</span>
47
+ </template>
48
+ <span v-if="!label" class="sr-only">{{ spoken }}</span>
49
+ </span>
50
+ </template>
51
+
52
+ <style>
53
+ /*
54
+ * Unscoped, namespaced under lp-loader: the keyframes are named in the
55
+ * elements' own `animation`, which a scoped stylesheet would rename.
56
+ */
57
+ .lp-loader-spin {
58
+ animation: lp-loader-spin 0.8s linear infinite;
59
+ }
60
+ @keyframes lp-loader-spin {
61
+ to { transform: rotate(360deg); }
62
+ }
63
+
64
+ /* Each dot swells and brightens in turn: a wave that reads as "still going". */
65
+ .lp-loader-dot {
66
+ animation: lp-loader-dot 0.96s var(--ease-emphasized, ease-in-out) infinite both;
67
+ }
68
+ @keyframes lp-loader-dot {
69
+ 0%, 80%, 100% { transform: scale(0.6); opacity: 0.35; }
70
+ 40% { transform: scale(1); opacity: 1; }
71
+ }
72
+
73
+ /* The bar's run is the kit's sweep (.lp-sweep in tokens.css), the same one
74
+ LpActivityLine draws: it enters past one edge and leaves past the other,
75
+ so the bar never sits still and never looks full. */
76
+
77
+ @media (prefers-reduced-motion: reduce) {
78
+ .lp-loader-spin,
79
+ .lp-loader-dot,
80
+ .lp-loader-bar {
81
+ animation: lp-loader-breathe 1.6s ease-in-out infinite;
82
+ transform: none;
83
+ }
84
+ .lp-loader-dot { opacity: 1; }
85
+ @keyframes lp-loader-breathe {
86
+ 0%, 100% { opacity: 1; }
87
+ 50% { opacity: 0.4; }
88
+ }
89
+ }
90
+ </style>
@@ -20,12 +20,15 @@
20
20
  * name rather than `alertdialog` — it is a landmark you can Tab into, not a
21
21
  * thing demanding an answer before anything else can happen.
22
22
  */
23
- import { computed, onBeforeUnmount, ref, useSlots, watch } from "vue"
23
+ import { computed, ref, useSlots, watch } from "vue"
24
24
  import { useLabels } from "../composables/useLpConfig"
25
25
  import { useBarStack } from "./actionBar"
26
26
  import { CLOSE_ICON } from "./dropdown"
27
27
  import LpButton from "./LpButton.vue"
28
28
  import LpIcon from "./LpIcon.vue"
29
+ import LpLoader from "./LpLoader.vue"
30
+ import { usePortalTarget } from "../composables/useView"
31
+ import { useResizeObserver } from "../composables/useResizeObserver"
29
32
 
30
33
  export interface ActionBarAction {
31
34
  label: string
@@ -170,8 +173,6 @@ const stackOffset = computed(() => {
170
173
  * rotation, or content swapped while the bar is up, changes it, and the bars
171
174
  * above would overlap this one.
172
175
  */
173
- let observer: ResizeObserver | null = null
174
-
175
176
  watch(
176
177
  () => props.open,
177
178
  (isOpen) => {
@@ -187,17 +188,10 @@ watch(
187
188
  { immediate: true },
188
189
  )
189
190
 
190
- watch(root, (el) => {
191
- observer?.disconnect()
192
- observer = null
193
- if (!el) return
194
- setHeight(el.getBoundingClientRect().height)
195
- if (typeof ResizeObserver === "undefined") return
196
- observer = new ResizeObserver(() => setHeight(el.getBoundingClientRect().height))
197
- observer.observe(el)
198
- })
191
+ useResizeObserver(root, (_, el) => setHeight(el.getBoundingClientRect().height), { immediate: true })
199
192
 
200
- onBeforeUnmount(() => observer?.disconnect())
193
+ // Overlays open in the window this component renders in (an LpFrame's, inside one).
194
+ const portalTo = usePortalTarget()
201
195
  </script>
202
196
 
203
197
  <template>
@@ -207,7 +201,7 @@ onBeforeUnmount(() => observer?.disconnect())
207
201
  ancestor instead, and the kit is full of such ancestors (any panel with a
208
202
  blur). Declaring it next to the form it belongs to should not decide
209
203
  where on screen it lands. -->
210
- <Teleport to="body">
204
+ <Teleport :to="portalTo">
211
205
  <!-- `forwards` on the way out, because the leave animation finishing is not
212
206
  the same moment as the element leaving. `rise-out` is a bare `to {}`, so
213
207
  once it ends the element snaps back to opacity 1 at its resting
@@ -280,12 +274,10 @@ onBeforeUnmount(() => observer?.disconnect())
280
274
  :hotkey="action.hotkey"
281
275
  @click="run(action)"
282
276
  >
283
- <LpIcon
284
- v-if="action.loading"
285
- name="lucide:loader-circle"
286
- :size="15"
287
- class="animate-spin"
288
- />
277
+ <!-- At once: it takes the icon's place, which a delay would
278
+ leave empty. Left announced, since nothing else tells a
279
+ screen reader the action is under way. -->
280
+ <LpLoader v-if="action.loading" size="inline" :delay="0" class="text-[15px]" />
289
281
  <LpIcon v-else-if="action.icon" :name="action.icon" :size="15" />
290
282
  {{ action.label }}
291
283
  </LpButton>