@leavepulse/ui 0.70.0 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +103 -0
  2. package/dist/assets/{LpCommandPalette-u-zOxKWa.css → LpCommandPalette-DgPZX0us.css} +24 -17
  3. package/dist/assets/{LpPaletteFacts-B9FdVmIO.css → LpPaletteFacts-CVNh5ICn.css} +16 -16
  4. package/dist/assets/{LpPaletteStats-ClE-37MK.css → LpPaletteStats-ZiZmR6vz.css} +5 -5
  5. package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
  6. package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
  7. package/dist/assets/{LpTable-DHxEQ_-3.css → LpTable-DHvorDiU.css} +19 -19
  8. package/dist/assets/LpTabs-CO3EcsNV.css +18 -0
  9. package/dist/chunks/{ContextMenuItems-B5uE8Znw.js → ContextMenuItems-eS7qx9gD.js} +11 -5
  10. package/dist/chunks/{DropzoneLinkField-Bw8Flkhk.js → DropzoneLinkField-DkFhdfEJ.js} +2 -2
  11. package/dist/chunks/{FieldWrapper-BiennROB.js → FieldWrapper-YzbvvC3M.js} +1 -1
  12. package/dist/chunks/{LayoutCanvas-BsJIzhdd.js → LayoutCanvas-Ba4A9QC5.js} +1 -1
  13. package/dist/chunks/{LayoutNode-DJVhkSGk.js → LayoutNode-CTTTLMDM.js} +1 -1
  14. package/dist/chunks/{LpActionBar-CzOFar5t.js → LpActionBar-B7anGlkI.js} +2 -2
  15. package/dist/chunks/{LpAddressInput-CNnLTDZg.js → LpAddressInput-CD0bzrt-.js} +7 -7
  16. package/dist/chunks/{LpAlert-C5igj802.js → LpAlert-BHi7ARqu.js} +1 -1
  17. package/dist/chunks/{LpAppShell-CEUAB8kK.js → LpAppShell-1RmBp6xQ.js} +3 -3
  18. package/dist/chunks/{LpAutocomplete-D92niDHE.js → LpAutocomplete-DDqe2M5g.js} +5 -2
  19. package/dist/chunks/{LpAvatar-CLPl-qOF.js → LpAvatar-DqfKCIdr.js} +1 -1
  20. package/dist/chunks/{LpBadge-HOEPBYmi.js → LpBadge-C8fKEmTF.js} +2 -2
  21. package/dist/chunks/{LpBreadcrumbs-DYoPc3P4.js → LpBreadcrumbs-DhcoStFa.js} +2 -2
  22. package/dist/chunks/{LpButton-CVxBfGjd.js → LpButton-BQDAFXBd.js} +3 -0
  23. package/dist/chunks/{LpCalendar-pVL91-Pl.js → LpCalendar-NmrA47J9.js} +1 -1
  24. package/dist/chunks/{LpCheckbox-DHc2bHDe.js → LpCheckbox-BoOuLnGB.js} +5 -2
  25. package/dist/chunks/{LpCodeBlock-BGsQhxw8.js → LpCodeBlock-Czu-fq1M.js} +2 -2
  26. package/dist/chunks/{LpCodeDisplay-CIKKT2iW.js → LpCodeDisplay-BK2FHbtM.js} +6 -6
  27. package/dist/chunks/{LpColorPicker-DFugXNUi.js → LpColorPicker-Ee1DZiRd.js} +3 -3
  28. package/dist/chunks/LpCommandScope-ubtWDMa0.js +53 -0
  29. package/dist/chunks/{LpConfirmDialog-CfGCux8m.js → LpConfirmDialog-i15pulMT.js} +3 -3
  30. package/dist/chunks/{LpConfirmHost-exB7JmcO.js → LpConfirmHost-D0oGavtd.js} +1 -1
  31. package/dist/chunks/{LpContextMenu-COwOwRgI.js → LpContextMenu-DXpFJjlO.js} +17 -6
  32. package/dist/chunks/{LpCopyButton-DzHjnFs0.js → LpCopyButton-Dmq7DmFw.js} +3 -3
  33. package/dist/chunks/{LpCountdown-Dtq1ihlJ.js → LpCountdown-DTdMF8DL.js} +2 -2
  34. package/dist/chunks/{LpDataList-B-5nHfNw.js → LpDataList-CFPtSsBB.js} +7 -6
  35. package/dist/chunks/{LpDatePicker-BUe1VUC0.js → LpDatePicker-cC9K-Pk8.js} +7 -6
  36. package/dist/chunks/{LpDateRangePicker-C_k65vGR.js → LpDateRangePicker-BVQKPbvo.js} +5 -4
  37. package/dist/chunks/{LpDisclosure-DOarzlAG.js → LpDisclosure-hRnX3FWL.js} +4 -1
  38. package/dist/chunks/{LpDrawer-DGNKRsGq.js → LpDrawer-u4rxnuR-.js} +1 -1
  39. package/dist/chunks/{LpDropdownMenu-CRgrhdAH.js → LpDropdownMenu-BgZ0Z_Im.js} +17 -4
  40. package/dist/chunks/{LpEditable-DTqLt2lT.js → LpEditable-CjxuOVh_.js} +7 -5
  41. package/dist/chunks/{LpEmptyState-KTKipws2.js → LpEmptyState-CKFTtQgJ.js} +1 -1
  42. package/dist/chunks/{LpFieldNotice-CurbNuXI.js → LpFieldNotice-CPI8EwtU.js} +1 -1
  43. package/dist/chunks/{LpFileTree-DMISXVHC.js → LpFileTree-BH0gNlSJ.js} +2 -2
  44. package/dist/chunks/{LpFileTreeNode-CPXB_Yy3.js → LpFileTreeNode-gPVB1oXM.js} +4 -4
  45. package/dist/chunks/{LpFormField-BWwgm1E4.js → LpFormField-gRASfyj2.js} +4 -1
  46. package/dist/chunks/{LpGauge-Bk8TwJj0.js → LpGauge-BdjPGnqw.js} +2 -2
  47. package/dist/chunks/{LpHintLayer-p4hqzdyA.js → LpHintLayer-C2asBIfs.js} +2 -2
  48. package/dist/chunks/{LpHints-CCrhRfy9.js → LpHints-CNZQ76JV.js} +3 -3
  49. package/dist/chunks/{LpIcon-HJP5xMz4.js → LpIcon-DkP-9mzK.js} +1 -1
  50. package/dist/chunks/{LpInfraNode-CUC3t4na.js → LpInfraNode-yTh4-5qa.js} +2 -2
  51. package/dist/chunks/{LpInput-CDuwODJG.js → LpInput-2H-5ILOB.js} +5 -2
  52. package/dist/chunks/{LpLightbox-XJ0LpTcZ.js → LpLightbox-lAt5uIfx.js} +2 -2
  53. package/dist/chunks/{LpLogViewer-elZHbj85.js → LpLogViewer-x78YfhJf.js} +5 -5
  54. package/dist/chunks/{LpMapPicker-BtIl7NOM.js → LpMapPicker-Dp5RSCi9.js} +1 -1
  55. package/dist/chunks/{LpMediaGallery-D5swlmZ_.js → LpMediaGallery-D92oJfY_.js} +3 -3
  56. package/dist/chunks/{LpModal-eBMt2Fqn.js → LpModal-CpH0bNo7.js} +1 -1
  57. package/dist/chunks/{LpModalNav-D4Z0wVHR.js → LpModalNav-BH4ANQGJ.js} +4 -4
  58. package/dist/chunks/{LpNotificationBell-DPZmP5dM.js → LpNotificationBell-BdUQqZhs.js} +8 -8
  59. package/dist/chunks/{LpNumberField-B9k-h2HE.js → LpNumberField-DZY3Z670.js} +4 -1
  60. package/dist/chunks/{LpNumberFlow-Cfyh033Q.js → LpNumberFlow-5khYxsfX.js} +6 -3
  61. package/dist/chunks/{LpPagination-VNCX6pFC.js → LpPagination-DbeACavM.js} +1 -1
  62. package/dist/chunks/LpPaletteTheme-CqWNRwHE.js +104 -0
  63. package/dist/chunks/{LpPasswordInput-DTV18FIh.js → LpPasswordInput-BzAZsf5V.js} +14 -8
  64. package/dist/chunks/{LpPhoneInput-C60tx1tC.js → LpPhoneInput-BMpd-0QR.js} +2 -2
  65. package/dist/chunks/{LpPie-CFuV7pZv.js → LpPie-DdFSTbGE.js} +5 -5
  66. package/dist/chunks/{LpPipeline-D81yh_NX.js → LpPipeline-zjEM1Lwc.js} +4 -4
  67. package/dist/chunks/{LpPopover-BEIcqb9p.js → LpPopover-DmZ3wUtP.js} +6 -5
  68. package/dist/chunks/{LpProgress-CE-m5OpD.js → LpProgress-BX33EKkN.js} +1 -1
  69. package/dist/chunks/{LpQuota-2Sw_gqcJ.js → LpQuota-DqNv1yjs.js} +3 -3
  70. package/dist/chunks/{LpRadioGroup-CGBr5nIp.js → LpRadioGroup-CsXeV9Ct.js} +4 -1
  71. package/dist/chunks/{LpRangeCalendar-c5qj7YcC.js → LpRangeCalendar-l-0nSFmY.js} +1 -1
  72. package/dist/chunks/{LpRangeSlider-Dv6lNvHY.js → LpRangeSlider-CM-0ZITZ.js} +3 -0
  73. package/dist/chunks/{LpRelativeTime-CKzVqAo9.js → LpRelativeTime-UM8EkfrN.js} +2 -2
  74. package/dist/chunks/LpRepeater-OvzByE5L.js +180 -0
  75. package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
  76. package/dist/chunks/{LpSecretField-DMfdJ1cQ.js → LpSecretField-DwQiPOko.js} +27 -16
  77. package/dist/chunks/{LpSection-BW4xJ-Li.js → LpSection-DcQsieHG.js} +1 -1
  78. package/dist/chunks/{LpSegmented-BO99Sr4m.js → LpSegmented-D2VST0o3.js} +4 -1
  79. package/dist/chunks/{LpSelect-B4f_yRi5.js → LpSelect-DYX2-u5A.js} +43 -18
  80. package/dist/chunks/{LpSidebar-D-M0Y_7U.js → LpSidebar-D44peKq2.js} +3 -3
  81. package/dist/chunks/{LpSidebarNav-DF-TYxOV.js → LpSidebarNav--VwkXO_a.js} +3 -3
  82. package/dist/chunks/{LpSlider-DuoRpOrH.js → LpSlider-DxYoCJJO.js} +3 -0
  83. package/dist/chunks/{LpStat-B2ix1Q7t.js → LpStat-DIsQfbeD.js} +3 -3
  84. package/dist/chunks/{LpStatus-C7kx5PKE.js → LpStatus-BQU1TUsv.js} +2 -2
  85. package/dist/chunks/{LpStepMark-DK-5BKAt.js → LpStepMark-CXa7DJy_.js} +2 -2
  86. package/dist/chunks/{LpStepper-DRFfdJaq.js → LpStepper-C9RM_yTG.js} +1 -1
  87. package/dist/chunks/{LpSwitch-DrzKrZZV.js → LpSwitch-bGZxUDSx.js} +3 -0
  88. package/dist/chunks/{LpTableFilter-DyvHGbOk.js → LpTableFilter-CTZMqFDU.js} +2 -2
  89. package/dist/chunks/{LpTableOfContents-rYvo8z5T.js → LpTableOfContents-CraicEs4.js} +2 -2
  90. package/dist/chunks/{LpTagsInput-DgpBFRV2.js → LpTagsInput-DrjmrOge.js} +8 -5
  91. package/dist/chunks/{LpTextarea-DiWjeVoJ.js → LpTextarea-BbYqmG1S.js} +4 -1
  92. package/dist/chunks/{LpThemeStudio-DguwHdGt.js → LpThemeStudio-B2nPaG-h.js} +18 -14
  93. package/dist/chunks/{LpThemeSwitcher-D5uz0MhK.js → LpThemeSwitcher-C0A5sg_E.js} +6 -4
  94. package/dist/chunks/{LpTimeField-BFQVf_PW.js → LpTimeField-DQ8WvPr2.js} +4 -1
  95. package/dist/chunks/{LpToaster-Wv9ksj4q.js → LpToaster-BTTl_wuy.js} +2 -2
  96. package/dist/chunks/{LpTooltip-Cz8SQwRt.js → LpTooltip-BcBvIx4z.js} +23 -5
  97. package/dist/chunks/{LpTopologyCanvas-ZhKthfgz.js → LpTopologyCanvas-B0wEvAoq.js} +1 -1
  98. package/dist/chunks/{LpTour-NfRJNEIP.js → LpTour-BgCfNlaW.js} +1 -1
  99. package/dist/chunks/{LpTruncate-D_5Pfv5B.js → LpTruncate-TcqfkyJM.js} +2 -2
  100. package/dist/chunks/{LpUptimeBar-DWegV2p6.js → LpUptimeBar-DRadGq4Y.js} +136 -47
  101. package/dist/chunks/{MenuTitle-BjQZX8tQ.js → MenuTitle-Dab3EGOp.js} +1 -1
  102. package/dist/chunks/{OptionContent-CmYUUeWj.js → OptionContent-DPzNsybd.js} +1 -1
  103. package/dist/chunks/PalettePreviewBoundary-B0Hhu3Yw.js +20 -0
  104. package/dist/chunks/{PickerField-CHRS1h7K.js → PickerField-DwLw7j0L.js} +26 -17
  105. package/dist/chunks/{RevealToggle-C-KzaQGJ.js → RevealToggle-BVFM_FAU.js} +3 -3
  106. package/dist/chunks/{TourCard-BXuVHsfn.js → TourCard--2IfgnUU.js} +3 -3
  107. package/dist/chunks/icons-CLu1iR1j.js +43 -0
  108. package/dist/chunks/palette-BiY7yQZL.js +29 -0
  109. package/dist/component-names.d.ts +1 -1
  110. package/dist/components/ContextMenuItems.vue.js +1 -1
  111. package/dist/components/DropzoneLinkField.vue.js +1 -1
  112. package/dist/components/FieldWrapper.vue.js +1 -1
  113. package/dist/components/LayoutCanvas.vue.js +1 -1
  114. package/dist/components/LayoutNode.vue.js +1 -1
  115. package/dist/components/LpActionBar.vue.js +1 -1
  116. package/dist/components/LpAddressInput.vue.d.ts +1 -1
  117. package/dist/components/LpAddressInput.vue.js +1 -1
  118. package/dist/components/LpAlert.vue.d.ts +3 -3
  119. package/dist/components/LpAlert.vue.js +1 -1
  120. package/dist/components/LpAppShell.vue.js +1 -1
  121. package/dist/components/LpAutocomplete.vue.d.ts +7 -1
  122. package/dist/components/LpAutocomplete.vue.js +1 -1
  123. package/dist/components/LpAvatar.vue.js +1 -1
  124. package/dist/components/LpBadge.vue.d.ts +2 -2
  125. package/dist/components/LpBadge.vue.js +1 -1
  126. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  127. package/dist/components/LpButton.vue.d.ts +4 -0
  128. package/dist/components/LpButton.vue.js +1 -1
  129. package/dist/components/LpCalendar.vue.js +1 -1
  130. package/dist/components/LpChart.vue.js +27 -25
  131. package/dist/components/LpCheckbox.vue.d.ts +8 -1
  132. package/dist/components/LpCheckbox.vue.js +1 -1
  133. package/dist/components/LpCodeBlock.vue.js +1 -1
  134. package/dist/components/LpCodeDisplay.vue.js +1 -1
  135. package/dist/components/LpColorPicker.vue.d.ts +2 -2
  136. package/dist/components/LpColorPicker.vue.js +1 -1
  137. package/dist/components/LpCommandPalette.vue.d.ts +43 -7
  138. package/dist/components/LpCommandPalette.vue.js +451 -126
  139. package/dist/components/LpCommandScope.vue.d.ts +28 -0
  140. package/dist/components/LpCommandScope.vue.js +4 -0
  141. package/dist/components/LpConfirmDialog.vue.js +1 -1
  142. package/dist/components/LpConfirmHost.vue.js +1 -1
  143. package/dist/components/LpContextMenu.vue.d.ts +5 -1
  144. package/dist/components/LpContextMenu.vue.js +1 -1
  145. package/dist/components/LpCopyButton.vue.d.ts +1 -1
  146. package/dist/components/LpCopyButton.vue.js +1 -1
  147. package/dist/components/LpCountdown.vue.js +1 -1
  148. package/dist/components/LpDataList.vue.js +1 -1
  149. package/dist/components/LpDatePicker.vue.d.ts +2 -0
  150. package/dist/components/LpDatePicker.vue.js +1 -1
  151. package/dist/components/LpDateRangePicker.vue.d.ts +2 -0
  152. package/dist/components/LpDateRangePicker.vue.js +1 -1
  153. package/dist/components/LpDisclosure.vue.d.ts +4 -0
  154. package/dist/components/LpDisclosure.vue.js +1 -1
  155. package/dist/components/LpDock.vue.js +2 -2
  156. package/dist/components/LpDrawer.vue.js +1 -1
  157. package/dist/components/LpDropdownMenu.vue.d.ts +5 -1
  158. package/dist/components/LpDropdownMenu.vue.js +1 -1
  159. package/dist/components/LpDropzone.vue.js +2 -2
  160. package/dist/components/LpEditable.vue.js +1 -1
  161. package/dist/components/LpEmptyState.vue.js +1 -1
  162. package/dist/components/LpFieldNotice.vue.js +1 -1
  163. package/dist/components/LpFileTree.vue.d.ts +1 -1
  164. package/dist/components/LpFileTree.vue.js +1 -1
  165. package/dist/components/LpFileTreeNode.vue.js +1 -1
  166. package/dist/components/LpFormField.vue.js +1 -1
  167. package/dist/components/LpGauge.vue.js +1 -1
  168. package/dist/components/LpHintLayer.vue.js +1 -1
  169. package/dist/components/LpHints.vue.js +1 -1
  170. package/dist/components/LpIcon.vue.js +1 -1
  171. package/dist/components/LpImageEditor.vue.js +3 -2
  172. package/dist/components/LpInfraNode.vue.js +1 -1
  173. package/dist/components/LpInput.vue.d.ts +6 -0
  174. package/dist/components/LpInput.vue.js +1 -1
  175. package/dist/components/LpLightbox.vue.js +1 -1
  176. package/dist/components/LpLoader.vue.d.ts +1 -1
  177. package/dist/components/LpLogViewer.vue.js +1 -1
  178. package/dist/components/LpMapPicker.vue.js +1 -1
  179. package/dist/components/LpMediaGallery.vue.d.ts +2 -2
  180. package/dist/components/LpMediaGallery.vue.js +1 -1
  181. package/dist/components/LpModal.vue.js +1 -1
  182. package/dist/components/LpModalNav.vue.js +1 -1
  183. package/dist/components/LpNotificationBell.vue.js +1 -1
  184. package/dist/components/LpNumberField.vue.d.ts +6 -0
  185. package/dist/components/LpNumberField.vue.js +1 -1
  186. package/dist/components/LpNumberFlow.vue.js +1 -1
  187. package/dist/components/LpPagination.vue.js +1 -1
  188. package/dist/components/LpPaletteFacts.vue.d.ts +1 -0
  189. package/dist/components/LpPaletteFacts.vue.js +40 -26
  190. package/dist/components/LpPaletteHeader.vue.js +2 -2
  191. package/dist/components/LpPaletteStats.vue.d.ts +1 -0
  192. package/dist/components/LpPaletteStats.vue.js +45 -21
  193. package/dist/components/LpPaletteTheme.vue.d.ts +7 -0
  194. package/dist/components/LpPaletteTheme.vue.js +4 -0
  195. package/dist/components/LpPasswordInput.vue.d.ts +7 -1
  196. package/dist/components/LpPasswordInput.vue.js +1 -1
  197. package/dist/components/LpPhoneInput.vue.js +1 -1
  198. package/dist/components/LpPie.vue.js +1 -1
  199. package/dist/components/LpPipeline.vue.js +1 -1
  200. package/dist/components/LpPopover.vue.js +1 -1
  201. package/dist/components/LpProgress.vue.d.ts +1 -1
  202. package/dist/components/LpProgress.vue.js +1 -1
  203. package/dist/components/LpQuota.vue.js +1 -1
  204. package/dist/components/LpRadioGroup.vue.d.ts +6 -1
  205. package/dist/components/LpRadioGroup.vue.js +1 -1
  206. package/dist/components/LpRangeCalendar.vue.js +1 -1
  207. package/dist/components/LpRangeSlider.vue.d.ts +6 -0
  208. package/dist/components/LpRangeSlider.vue.js +1 -1
  209. package/dist/components/LpRelativeTime.vue.js +1 -1
  210. package/dist/components/LpRepeater.vue.js +1 -1
  211. package/dist/components/LpRollingText.vue.d.ts +2 -0
  212. package/dist/components/LpRollingText.vue.js +1 -1
  213. package/dist/components/LpSecretField.vue.js +1 -1
  214. package/dist/components/LpSection.vue.js +1 -1
  215. package/dist/components/LpSegmented.vue.d.ts +6 -0
  216. package/dist/components/LpSegmented.vue.js +1 -1
  217. package/dist/components/LpSelect.vue.d.ts +3 -0
  218. package/dist/components/LpSelect.vue.js +1 -1
  219. package/dist/components/LpShinyText.vue.d.ts +1 -1
  220. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  221. package/dist/components/LpSidebar.vue.js +1 -1
  222. package/dist/components/LpSidebarNav.vue.js +1 -1
  223. package/dist/components/LpSlider.vue.d.ts +6 -0
  224. package/dist/components/LpSlider.vue.js +1 -1
  225. package/dist/components/LpStat.vue.js +1 -1
  226. package/dist/components/LpStatus.vue.js +1 -1
  227. package/dist/components/LpStepMark.vue.js +1 -1
  228. package/dist/components/LpStepper.vue.js +1 -1
  229. package/dist/components/LpSwitch.vue.d.ts +6 -0
  230. package/dist/components/LpSwitch.vue.js +1 -1
  231. package/dist/components/LpTable.vue.d.ts +6 -0
  232. package/dist/components/LpTable.vue.js +74 -35
  233. package/dist/components/LpTableFilter.vue.js +1 -1
  234. package/dist/components/LpTableOfContents.vue.js +1 -1
  235. package/dist/components/LpTabs.vue.d.ts +1 -1
  236. package/dist/components/LpTabs.vue.js +15 -6
  237. package/dist/components/LpTagsInput.vue.d.ts +6 -0
  238. package/dist/components/LpTagsInput.vue.js +1 -1
  239. package/dist/components/LpTextarea.vue.d.ts +8 -1
  240. package/dist/components/LpTextarea.vue.js +1 -1
  241. package/dist/components/LpThemeStudio.vue.js +1 -1
  242. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  243. package/dist/components/LpTimeField.vue.d.ts +6 -0
  244. package/dist/components/LpTimeField.vue.js +1 -1
  245. package/dist/components/LpToaster.vue.js +1 -1
  246. package/dist/components/LpTooltip.vue.js +1 -1
  247. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  248. package/dist/components/LpTour.vue.js +1 -1
  249. package/dist/components/LpTruncate.vue.js +1 -1
  250. package/dist/components/LpUptimeBar.vue.d.ts +18 -9
  251. package/dist/components/LpUptimeBar.vue.js +1 -1
  252. package/dist/components/MenuTitle.vue.js +1 -1
  253. package/dist/components/OptionContent.vue.js +1 -1
  254. package/dist/components/PalettePreviewBoundary.vue.d.ts +13 -0
  255. package/dist/components/PalettePreviewBoundary.vue.js +4 -0
  256. package/dist/components/PickerField.vue.d.ts +5 -3
  257. package/dist/components/PickerField.vue.js +1 -1
  258. package/dist/components/RevealToggle.vue.js +1 -1
  259. package/dist/components/TourCard.vue.js +1 -1
  260. package/dist/components/commandPalette.d.ts +33 -0
  261. package/dist/components/commandPalette.js +21 -1
  262. package/dist/components/commandSearch.d.ts +5 -0
  263. package/dist/components/commandSearch.js +22 -2
  264. package/dist/components/format.d.ts +7 -0
  265. package/dist/components/format.js +4 -0
  266. package/dist/components/menuWhen.js +1 -1
  267. package/dist/components/uptimeBar.d.ts +45 -0
  268. package/dist/components/uptimeBar.js +51 -0
  269. package/dist/composables/scroll.d.ts +5 -0
  270. package/dist/composables/scroll.js +7 -0
  271. package/dist/composables/useField.d.ts +9 -0
  272. package/dist/composables/useField.js +24 -1
  273. package/dist/composables/useForm.js +13 -4
  274. package/dist/composables/usePaletteCommands.d.ts +61 -0
  275. package/dist/composables/usePaletteCommands.js +220 -0
  276. package/dist/composables/useReveal.js +21 -0
  277. package/dist/composables/useView.js +9 -2
  278. package/dist/icons-all.js +1 -1
  279. package/dist/index.d.ts +14 -1
  280. package/dist/index.js +103 -87
  281. package/dist/theme/palette.d.ts +9 -0
  282. package/dist/theme/studio.d.ts +12 -1
  283. package/package.json +4 -1
  284. package/src/component-names.ts +2 -0
  285. package/src/components/ContextMenuItems.vue +5 -2
  286. package/src/components/LpAutocomplete.vue +6 -1
  287. package/src/components/LpButton.vue +5 -1
  288. package/src/components/LpChart.vue +19 -17
  289. package/src/components/LpCheckbox.vue +7 -2
  290. package/src/components/LpCommandPalette.vue +263 -29
  291. package/src/components/LpCommandScope.vue +35 -0
  292. package/src/components/LpContextMenu.vue +17 -5
  293. package/src/components/LpDataList.vue +2 -2
  294. package/src/components/LpDatePicker.vue +2 -0
  295. package/src/components/LpDateRangePicker.vue +2 -0
  296. package/src/components/LpDisclosure.vue +5 -1
  297. package/src/components/LpDropdownMenu.vue +14 -3
  298. package/src/components/LpEditable.vue +3 -1
  299. package/src/components/LpFormField.vue +3 -0
  300. package/src/components/LpInput.vue +6 -1
  301. package/src/components/LpNumberField.vue +6 -1
  302. package/src/components/LpNumberFlow.vue +12 -2
  303. package/src/components/LpPaletteFacts.vue +11 -6
  304. package/src/components/LpPaletteStats.vue +12 -5
  305. package/src/components/LpPaletteTheme.vue +48 -0
  306. package/src/components/LpPasswordInput.vue +13 -5
  307. package/src/components/LpPopover.vue +4 -0
  308. package/src/components/LpRadioGroup.vue +4 -1
  309. package/src/components/LpRangeSlider.vue +6 -1
  310. package/src/components/LpRepeater.vue +64 -13
  311. package/src/components/LpRollingText.vue +12 -1
  312. package/src/components/LpSecretField.vue +18 -8
  313. package/src/components/LpSegmented.vue +6 -1
  314. package/src/components/LpSelect.vue +44 -10
  315. package/src/components/LpSlider.vue +6 -1
  316. package/src/components/LpSwitch.vue +6 -1
  317. package/src/components/LpTable.vue +35 -2
  318. package/src/components/LpTableOfContents.vue +2 -4
  319. package/src/components/LpTabs.vue +7 -0
  320. package/src/components/LpTagsInput.vue +6 -1
  321. package/src/components/LpTextarea.vue +7 -2
  322. package/src/components/LpThemeStudio.vue +7 -5
  323. package/src/components/LpThemeSwitcher.vue +3 -0
  324. package/src/components/LpTimeField.vue +6 -1
  325. package/src/components/LpTooltip.vue +23 -1
  326. package/src/components/LpUptimeBar.vue +69 -41
  327. package/src/components/PalettePreviewBoundary.vue +5 -0
  328. package/src/components/PickerField.vue +5 -4
  329. package/src/components/commandPalette.ts +22 -1
  330. package/src/components/commandSearch.ts +23 -1
  331. package/src/components/format.ts +10 -0
  332. package/src/components/uptimeBar.ts +98 -0
  333. package/src/composables/scroll.ts +11 -0
  334. package/src/composables/useField.ts +33 -1
  335. package/src/composables/useForm.ts +14 -5
  336. package/src/composables/usePaletteCommands.ts +220 -0
  337. package/src/composables/useReveal.ts +29 -0
  338. package/src/composables/useView.ts +8 -1
  339. package/src/index.ts +18 -1
  340. package/src/kit-icons.ts +1 -1
  341. package/src/theme/palette.ts +26 -0
  342. package/src/theme/studio.ts +15 -8
  343. package/dist/assets/LpTabs-BJ-nrJuI.css +0 -18
  344. package/dist/chunks/LpRepeater-D0VjmD6y.js +0 -140
  345. package/dist/chunks/icons-4IywzkHk.js +0 -43
package/dist/index.js CHANGED
@@ -1,28 +1,28 @@
1
- import { _ } from "./chunks/LayoutCanvas-BsJIzhdd.js";
2
- import { _ as _2 } from "./chunks/LpAddressInput-CNnLTDZg.js";
3
- import { _ as _3 } from "./chunks/LpMapPicker-BtIl7NOM.js";
1
+ import { _ } from "./chunks/LayoutCanvas-Ba4A9QC5.js";
2
+ import { _ as _2 } from "./chunks/LpAddressInput-CD0bzrt-.js";
3
+ import { _ as _3 } from "./chunks/LpMapPicker-Dp5RSCi9.js";
4
4
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
5
- import { _ as _4 } from "./chunks/LpActionBar-CzOFar5t.js";
6
- import { _ as _5 } from "./chunks/LpAlert-C5igj802.js";
7
- import { _ as _6 } from "./chunks/LpAppShell-CEUAB8kK.js";
8
- import { _ as _7 } from "./chunks/LpAutocomplete-D92niDHE.js";
9
- import { _ as _8 } from "./chunks/LpAvatar-CLPl-qOF.js";
10
- import { _ as _9 } from "./chunks/LpBadge-HOEPBYmi.js";
11
- import { _ as _10 } from "./chunks/LpBreadcrumbs-DYoPc3P4.js";
12
- import { _ as _11 } from "./chunks/LpButton-CVxBfGjd.js";
13
- import { _ as _12 } from "./chunks/LpCalendar-pVL91-Pl.js";
5
+ import { _ as _4 } from "./chunks/LpActionBar-B7anGlkI.js";
6
+ import { _ as _5 } from "./chunks/LpAlert-BHi7ARqu.js";
7
+ import { _ as _6 } from "./chunks/LpAppShell-1RmBp6xQ.js";
8
+ import { _ as _7 } from "./chunks/LpAutocomplete-DDqe2M5g.js";
9
+ import { _ as _8 } from "./chunks/LpAvatar-DqfKCIdr.js";
10
+ import { _ as _9 } from "./chunks/LpBadge-C8fKEmTF.js";
11
+ import { _ as _10 } from "./chunks/LpBreadcrumbs-DhcoStFa.js";
12
+ import { _ as _11 } from "./chunks/LpButton-BQDAFXBd.js";
13
+ import { _ as _12 } from "./chunks/LpCalendar-NmrA47J9.js";
14
14
  import { _ as _13 } from "./chunks/LpCard-CqKLnEhl.js";
15
15
  import { default as default2 } from "./components/LpChart.vue.js";
16
16
  import { backgroundOf, csvField, downloadFile, fileStem, inlineSvg, resolveCssColor, svgToPng, toCsv } from "./components/exportData.js";
17
17
  import { CHART_PALETTE, axisTicks, chartSummary, formatTick, markerIndex, niceScale, resolveSlices } from "./components/chart.js";
18
- import { _ as _14 } from "./chunks/LpCheckbox-DHc2bHDe.js";
19
- import { _ as _15 } from "./chunks/LpCodeBlock-BGsQhxw8.js";
18
+ import { _ as _14 } from "./chunks/LpCheckbox-BoOuLnGB.js";
19
+ import { _ as _15 } from "./chunks/LpCodeBlock-Czu-fq1M.js";
20
20
  import { tokenizeLines } from "./components/codeHighlight.js";
21
- import { _ as _16 } from "./chunks/LpColorPicker-DFugXNUi.js";
21
+ import { _ as _16 } from "./chunks/LpColorPicker-Ee1DZiRd.js";
22
22
  import { DEFAULT_SWATCHES, clampHsv, formatColor, hsvToHsl, hsvToRgb, isLight, normalizeHue, opaqueCss, parseColor, parseHex, rgbToHex, rgbToHsv } from "./components/color.js";
23
23
  import { default as default3 } from "./components/LpCommandPalette.vue.js";
24
- import { applyQueryFilters, highlightParts, parseCommandQuery, parsePaletteQuery, rankCommandItems } from "./components/commandSearch.js";
25
- import { commandHasPreview, pushRecent, readRecent, toRecentItem } from "./components/commandPalette.js";
24
+ import { applyQueryFilters, highlightParts, parseCommandQuery, parsePaletteQuery, rankCommandItems, searchCommandItems, swapCommandLayout } from "./components/commandSearch.js";
25
+ import { PALETTE_MODES, commandHasPreview, menuPaletteCommands, pushRecent, readRecent, toRecentItem } from "./components/commandPalette.js";
26
26
  import { _ as _17 } from "./chunks/LpPalettePreview-BNB8T_MY.js";
27
27
  import { default as default4 } from "./components/LpPaletteHeader.vue.js";
28
28
  import { default as default5 } from "./components/LpPaletteFacts.vue.js";
@@ -30,92 +30,92 @@ import { default as default6 } from "./components/LpPaletteStats.vue.js";
30
30
  import { default as default7 } from "./components/LpPaletteSwatches.vue.js";
31
31
  import { default as default8 } from "./components/LpKeys.vue.js";
32
32
  import { comboKeys, comboSteps } from "./components/keys.js";
33
- import { _ as _18 } from "./chunks/LpConfirmDialog-CfGCux8m.js";
34
- import { _ as _19 } from "./chunks/LpConfirmHost-exB7JmcO.js";
33
+ import { _ as _18 } from "./chunks/LpConfirmDialog-i15pulMT.js";
34
+ import { _ as _19 } from "./chunks/LpConfirmHost-D0oGavtd.js";
35
35
  import { confirm, useConfirm } from "./components/confirm.js";
36
- import { _ as _20 } from "./chunks/LpContextMenu-COwOwRgI.js";
37
- import { _ as _21 } from "./chunks/LpDatePicker-BUe1VUC0.js";
38
- import { _ as _22 } from "./chunks/LpDateRangePicker-C_k65vGR.js";
39
- import { _ as _23 } from "./chunks/LpRangeCalendar-c5qj7YcC.js";
36
+ import { _ as _20 } from "./chunks/LpContextMenu-DXpFJjlO.js";
37
+ import { _ as _21 } from "./chunks/LpDatePicker-cC9K-Pk8.js";
38
+ import { _ as _22 } from "./chunks/LpDateRangePicker-BVQKPbvo.js";
39
+ import { _ as _23 } from "./chunks/LpRangeCalendar-l-0nSFmY.js";
40
40
  import { clampRange, dayAllowed, defaultDatePresets, defaultRangePresets, formatRange, normalizeRange, sameRange } from "./components/dateRange.js";
41
- import { _ as _24 } from "./chunks/LpDisclosure-DOarzlAG.js";
41
+ import { _ as _24 } from "./chunks/LpDisclosure-hRnX3FWL.js";
42
42
  import { _ as _25 } from "./chunks/LpDivider-CUX46KR0.js";
43
- import { _ as _26 } from "./chunks/LpDrawer-DGNKRsGq.js";
44
- import { _ as _27 } from "./chunks/LpDropdownMenu-CRgrhdAH.js";
43
+ import { _ as _26 } from "./chunks/LpDrawer-u4rxnuR-.js";
44
+ import { _ as _27 } from "./chunks/LpDropdownMenu-BgZ0Z_Im.js";
45
45
  import { default as default9 } from "./components/LpDropzone.vue.js";
46
- import { _ as _28 } from "./chunks/LpEmptyState-KTKipws2.js";
47
- import { _ as _29 } from "./chunks/LpFileTree-DMISXVHC.js";
46
+ import { _ as _28 } from "./chunks/LpEmptyState-CKFTtQgJ.js";
47
+ import { _ as _29 } from "./chunks/LpFileTree-BH0gNlSJ.js";
48
48
  import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
49
- import { _ as _30 } from "./chunks/LpFieldNotice-CurbNuXI.js";
50
- import { _ as _31 } from "./chunks/LpFormField-BWwgm1E4.js";
51
- import { _ as _32 } from "./chunks/LpIcon-HJP5xMz4.js";
52
- import { i, b, a, c } from "./chunks/icons-4IywzkHk.js";
49
+ import { _ as _30 } from "./chunks/LpFieldNotice-CPI8EwtU.js";
50
+ import { _ as _31 } from "./chunks/LpFormField-gRASfyj2.js";
51
+ import { _ as _32 } from "./chunks/LpIcon-DkP-9mzK.js";
52
+ import { i, b, a, c } from "./chunks/icons-CLu1iR1j.js";
53
53
  import { default as default10 } from "./components/LpImageEditor.vue.js";
54
- import { _ as _33 } from "./chunks/LpInfraNode-CUC3t4na.js";
55
- import { _ as _34 } from "./chunks/LpInput-CDuwODJG.js";
56
- import { _ as _35 } from "./chunks/LpLightbox-XJ0LpTcZ.js";
54
+ import { _ as _33 } from "./chunks/LpInfraNode-yTh4-5qa.js";
55
+ import { _ as _34 } from "./chunks/LpInput-2H-5ILOB.js";
56
+ import { _ as _35 } from "./chunks/LpLightbox-lAt5uIfx.js";
57
57
  import { fileNameOf } from "./components/lightbox.js";
58
58
  import { _ as _36 } from "./chunks/LpLink-Krkjhe_y.js";
59
- import { _ as _37 } from "./chunks/LpLogViewer-elZHbj85.js";
59
+ import { _ as _37 } from "./chunks/LpLogViewer-x78YfhJf.js";
60
60
  import { countLevels, matchPositions, matchesTerm, ringWindow, stepMatch } from "./components/logSearch.js";
61
- import { _ as _38 } from "./chunks/LpMediaGallery-D5swlmZ_.js";
62
- import { _ as _39 } from "./chunks/LpModal-eBMt2Fqn.js";
63
- import { _ as _40 } from "./chunks/LpModalNav-D4Z0wVHR.js";
64
- import { _ as _41 } from "./chunks/LpNotificationBell-DPZmP5dM.js";
65
- import { _ as _42 } from "./chunks/LpNumberField-B9k-h2HE.js";
66
- import { _ as _43 } from "./chunks/LpTimeField-BFQVf_PW.js";
67
- import { _ as _44 } from "./chunks/LpNumberFlow-Cfyh033Q.js";
61
+ import { _ as _38 } from "./chunks/LpMediaGallery-D92oJfY_.js";
62
+ import { _ as _39 } from "./chunks/LpModal-CpH0bNo7.js";
63
+ import { _ as _40 } from "./chunks/LpModalNav-BH4ANQGJ.js";
64
+ import { _ as _41 } from "./chunks/LpNotificationBell-BdUQqZhs.js";
65
+ import { _ as _42 } from "./chunks/LpNumberField-DZY3Z670.js";
66
+ import { _ as _43 } from "./chunks/LpTimeField-DQ8WvPr2.js";
67
+ import { _ as _44 } from "./chunks/LpNumberFlow-5khYxsfX.js";
68
68
  import { _ as _45 } from "./chunks/LpOtpInput-CeBPsM7D.js";
69
- import { _ as _46 } from "./chunks/LpPagination-VNCX6pFC.js";
70
- import { _ as _47 } from "./chunks/LpPasswordInput-DTV18FIh.js";
71
- import { _ as _48 } from "./chunks/LpPie-CFuV7pZv.js";
72
- import { _ as _49 } from "./chunks/LpPhoneInput-C60tx1tC.js";
69
+ import { _ as _46 } from "./chunks/LpPagination-DbeACavM.js";
70
+ import { _ as _47 } from "./chunks/LpPasswordInput-BzAZsf5V.js";
71
+ import { _ as _48 } from "./chunks/LpPie-DdFSTbGE.js";
72
+ import { _ as _49 } from "./chunks/LpPhoneInput-BMpd-0QR.js";
73
73
  import { filterCountries, flagEmoji, loadCountries, matchCountryByValue } from "./components/countries.js";
74
- import { _ as _50 } from "./chunks/LpPopover-BEIcqb9p.js";
75
- import { _ as _51 } from "./chunks/LpProgress-CE-m5OpD.js";
74
+ import { _ as _50 } from "./chunks/LpPopover-DmZ3wUtP.js";
75
+ import { _ as _51 } from "./chunks/LpProgress-BX33EKkN.js";
76
76
  import { _ as _52 } from "./chunks/LpRadio-CWA5Eb3M.js";
77
- import { _ as _53 } from "./chunks/LpRadioGroup-CGBr5nIp.js";
78
- import { _ as _54 } from "./chunks/LpRollingText-DB7upf-5.js";
77
+ import { _ as _53 } from "./chunks/LpRadioGroup-CsXeV9Ct.js";
78
+ import { _ as _54 } from "./chunks/LpRollingText-DiL717LK.js";
79
79
  import { _ as _55 } from "./chunks/LpScrollArea-Hz3-JWUG.js";
80
- import { _ as _56 } from "./chunks/LpSegmented-BO99Sr4m.js";
81
- import { _ as _57 } from "./chunks/LpSection-BW4xJ-Li.js";
82
- import { _ as _58 } from "./chunks/LpSelect-B4f_yRi5.js";
80
+ import { _ as _56 } from "./chunks/LpSegmented-D2VST0o3.js";
81
+ import { _ as _57 } from "./chunks/LpSection-DcQsieHG.js";
82
+ import { _ as _58 } from "./chunks/LpSelect-DYX2-u5A.js";
83
83
  import { fitChips, toggledValues } from "./components/select.js";
84
84
  import { _ as _59 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
85
85
  import { _ as _60 } from "./chunks/LpShift-DXNsauQZ.js";
86
86
  import { _ as _61 } from "./chunks/LpSwap-DzE6M3Mg.js";
87
87
  import { _ as _62 } from "./chunks/LpHintExample-9Py0wc-L.js";
88
88
  import { default as default11 } from "./components/LpShortcutsDialog.vue.js";
89
- import { _ as _63 } from "./chunks/LpSidebar-D-M0Y_7U.js";
89
+ import { _ as _63 } from "./chunks/LpSidebar-D44peKq2.js";
90
90
  import { _ as _64 } from "./chunks/LpSkeleton-BB6XIV-w.js";
91
- import { _ as _65 } from "./chunks/LpSlider-DuoRpOrH.js";
92
- import { _ as _66 } from "./chunks/LpRangeSlider-Dv6lNvHY.js";
91
+ import { _ as _65 } from "./chunks/LpSlider-DxYoCJJO.js";
92
+ import { _ as _66 } from "./chunks/LpRangeSlider-CM-0ZITZ.js";
93
93
  import { _ as _67 } from "./chunks/LpVideoBackdrop-DS1wGv-X.js";
94
94
  import { formatClipTime, isNativeLoop, planLoop, seamProgress, seamReached } from "./components/videoBackdrop.js";
95
95
  import { _ as _68 } from "./chunks/LpSparkline-CExIRDb3.js";
96
- import { _ as _69 } from "./chunks/LpStat-B2ix1Q7t.js";
97
- import { _ as _70 } from "./chunks/LpStepper-DRFfdJaq.js";
98
- import { _ as _71 } from "./chunks/LpSwitch-DrzKrZZV.js";
96
+ import { _ as _69 } from "./chunks/LpStat-DIsQfbeD.js";
97
+ import { _ as _70 } from "./chunks/LpStepper-C9RM_yTG.js";
98
+ import { _ as _71 } from "./chunks/LpSwitch-bGZxUDSx.js";
99
99
  import { default as default12 } from "./components/LpTable.vue.js";
100
100
  import { compareValues } from "./components/tableSort.js";
101
101
  import { resolveRowMenu } from "./components/tableRowMenu.js";
102
- import { _ as _72 } from "./chunks/LpTableOfContents-rYvo8z5T.js";
102
+ import { _ as _72 } from "./chunks/LpTableOfContents-CraicEs4.js";
103
103
  import { default as default13 } from "./components/LpTabs.vue.js";
104
- import { _ as _73 } from "./chunks/LpTagsInput-DgpBFRV2.js";
104
+ import { _ as _73 } from "./chunks/LpTagsInput-DrjmrOge.js";
105
105
  import { addTags, splitTags } from "./components/tags.js";
106
- import { _ as _74 } from "./chunks/LpTextarea-DiWjeVoJ.js";
107
- import { _ as _75 } from "./chunks/LpThemeSwitcher-D5uz0MhK.js";
106
+ import { _ as _74 } from "./chunks/LpTextarea-BbYqmG1S.js";
107
+ import { _ as _75 } from "./chunks/LpThemeSwitcher-C0A5sg_E.js";
108
108
  import { _ as _76 } from "./chunks/LpTilt-B7KHX1zH.js";
109
- import { _ as _77 } from "./chunks/LpToaster-Wv9ksj4q.js";
110
- import { _ as _78 } from "./chunks/LpTooltip-Cz8SQwRt.js";
111
- import { _ as _79 } from "./chunks/LpTour-NfRJNEIP.js";
109
+ import { _ as _77 } from "./chunks/LpToaster-BTTl_wuy.js";
110
+ import { _ as _78 } from "./chunks/LpTooltip-BcBvIx4z.js";
111
+ import { _ as _79 } from "./chunks/LpTour-BgCfNlaW.js";
112
112
  import { holeOf, openContextMenu, panelsAround } from "./components/tour.js";
113
- import { _ as _80 } from "./chunks/LpHintLayer-p4hqzdyA.js";
114
- import { _ as _81 } from "./chunks/LpHints-CCrhRfy9.js";
113
+ import { _ as _80 } from "./chunks/LpHintLayer-C2asBIfs.js";
114
+ import { _ as _81 } from "./chunks/LpHints-CNZQ76JV.js";
115
115
  import { HINT_SIGNALS, contextMenuTip, createHintSystem, dropzoneTip, hintKey, hintSummary, hotkeyTip, localHintStorage, noteDropzone, noteHotkeyTarget, paletteTip, provideHintSystem, runningHintSystem, useHintSystem } from "./composables/useHintSystem.js";
116
116
  import { _ as _82 } from "./chunks/LpTooltipProvider-CftjV7Xc.js";
117
- import { _ as _83 } from "./chunks/LpTopologyCanvas-ZhKthfgz.js";
118
- import { _ as _84 } from "./chunks/LpUptimeBar-DWegV2p6.js";
117
+ import { _ as _83 } from "./chunks/LpTopologyCanvas-B0wEvAoq.js";
118
+ import { _ as _84 } from "./chunks/LpUptimeBar-DRadGq4Y.js";
119
119
  import { deserializeLayout, serializeLayout } from "./layout/tree.js";
120
120
  import { addLeaf, addTab, countBlocks, countLeaves, makeLayout, moveLeaf, removeBlock, removeLeaf, reorderTab, resizeAt, setActiveTab } from "./layout/tree.js";
121
121
  import { blockTitle, defineBlocks } from "./layout/registry.js";
@@ -123,7 +123,7 @@ import { layoutController, useLayout } from "./layout/useLayout.js";
123
123
  import { a as parseTheme, s as serializeTheme } from "./chunks/useTheme-BOV_-AiY.js";
124
124
  import { D, T, b as b2, c as c2, d, e, f, g, l, h, n, i as i2, j, p, r, k, t, m, o, q, u, v } from "./chunks/useTheme-BOV_-AiY.js";
125
125
  import { G, N, d as d2, i as i3, s } from "./chunks/backdrop-Dkf2vM81.js";
126
- import { _ as _85, a as a2, b as b3, c as c3, d as d3, e as e2, u as u2, w } from "./chunks/LpThemeStudio-DguwHdGt.js";
126
+ import { _ as _85, a as a2, b as b3, c as c3, d as d3, e as e2, u as u2, w } from "./chunks/LpThemeStudio-B2nPaG-h.js";
127
127
  import { useClipboard } from "./composables/useClipboard.js";
128
128
  import { activeShortcuts, appleModifierLabel, findHotkeyConflicts, hotkeyConflicts, hotkeySteps, isAppleKeyboard, matchesHotkey, mergeShortcutGroups, parseCombo, pendingHotkey, sequenceProgress, useAppleKeyboard, useHotkeys } from "./composables/useHotkeys.js";
129
129
  import { anyModalOpen, topModalElement, useModalLayer } from "./components/modalDepth.js";
@@ -163,32 +163,32 @@ import { _ as _86 } from "./chunks/LpThemeProvider-DcbfOxsU.js";
163
163
  import { _ as _87 } from "./chunks/LpFrame-BVQCQLDI.js";
164
164
  import { _ as _88 } from "./chunks/LpThemeStudioSection-BwhqYDLf.js";
165
165
  import { isInternalHref, resolveLink } from "./components/link.js";
166
- import { _ as _89 } from "./chunks/LpRepeater-D0VjmD6y.js";
167
- import { _ as _90 } from "./chunks/LpGauge-Bk8TwJj0.js";
168
- import { _ as _91 } from "./chunks/LpQuota-2Sw_gqcJ.js";
169
- import { _ as _92 } from "./chunks/LpStatus-C7kx5PKE.js";
170
- import { _ as _93 } from "./chunks/LpRelativeTime-CKzVqAo9.js";
166
+ import { _ as _89 } from "./chunks/LpRepeater-OvzByE5L.js";
167
+ import { _ as _90 } from "./chunks/LpGauge-BdjPGnqw.js";
168
+ import { _ as _91 } from "./chunks/LpQuota-DqNv1yjs.js";
169
+ import { _ as _92 } from "./chunks/LpStatus-BQU1TUsv.js";
170
+ import { _ as _93 } from "./chunks/LpRelativeTime-UM8EkfrN.js";
171
171
  import { _ as _94 } from "./chunks/LpActivityLine-CJvzrNpj.js";
172
172
  import { TONE_COLOR, TONE_SOFT, arcPath, capacityThresholds, meterFraction, toneAt } from "./components/meter.js";
173
173
  import { TONES, TONE_ALIASES, toneLook, toneOf } from "./components/tone.js";
174
174
  import { formatAmount, quotaSegments, quotaState } from "./components/quota.js";
175
- import { compactNumber, formatBytes } from "./components/format.js";
175
+ import { compactNumber, decimalMark, formatBytes } from "./components/format.js";
176
176
  import { STATUS_LABELS, STATUS_LOOK } from "./components/status.js";
177
177
  import { formatRelativeTime } from "./components/relativeTime.js";
178
- import { _ as _95 } from "./chunks/LpPipeline-D81yh_NX.js";
179
- import { _ as _96 } from "./chunks/LpStepMark-DK-5BKAt.js";
178
+ import { _ as _95 } from "./chunks/LpPipeline-zjEM1Lwc.js";
179
+ import { _ as _96 } from "./chunks/LpStepMark-CXa7DJy_.js";
180
180
  import { childProgress, connectorFilled, currentStepIndex, isSettled, overallStatus, stepElapsed } from "./components/pipeline.js";
181
181
  import { _ as _97 } from "./chunks/LpLoader-DjJEX8hL.js";
182
182
  import { useLoadingGate } from "./composables/useLoadingGate.js";
183
183
  import { useNow } from "./composables/useNow.js";
184
- import { _ as _98 } from "./chunks/LpCountdown-Dtq1ihlJ.js";
184
+ import { _ as _98 } from "./chunks/LpCountdown-DTdMF8DL.js";
185
185
  import { DEFAULT_MILESTONES, DEFAULT_UNIT_LABELS, ceilToSecond, crossedMilestone, formatElapsed, formatTime, msToNextSecond, splitTime, timeParts } from "./components/timeSpan.js";
186
- import { _ as _99 } from "./chunks/LpCopyButton-DzHjnFs0.js";
187
- import { _ as _100 } from "./chunks/LpSecretField-DMfdJ1cQ.js";
188
- import { _ as _101 } from "./chunks/LpDataList-B-5nHfNw.js";
189
- import { _ as _102 } from "./chunks/LpEditable-DTqLt2lT.js";
190
- import { _ as _103 } from "./chunks/LpTruncate-D_5Pfv5B.js";
191
- import { _ as _104 } from "./chunks/LpCodeDisplay-CIKKT2iW.js";
186
+ import { _ as _99 } from "./chunks/LpCopyButton-Dmq7DmFw.js";
187
+ import { _ as _100 } from "./chunks/LpSecretField-DwQiPOko.js";
188
+ import { _ as _101 } from "./chunks/LpDataList-CFPtSsBB.js";
189
+ import { _ as _102 } from "./chunks/LpEditable-CjxuOVh_.js";
190
+ import { _ as _103 } from "./chunks/LpTruncate-TcqfkyJM.js";
191
+ import { _ as _104 } from "./chunks/LpCodeDisplay-BK2FHbtM.js";
192
192
  import { formatRemaining, groupCode, middleTruncate, normalizeCode } from "./components/fieldText.js";
193
193
  import { _ as _105 } from "./chunks/LpHoverCard-spGxyw7T.js";
194
194
  import { _ as _106 } from "./chunks/LpIdenticon-BzdC_qz9.js";
@@ -214,6 +214,10 @@ import { _ as _115 } from "./chunks/LpSpotlight-4F3NeUMY.js";
214
214
  import { _ as _116 } from "./chunks/LpGlowBorder-B8V-QzIl.js";
215
215
  import { _ as _117 } from "./chunks/LpMagnetic-CtXKLa2Y.js";
216
216
  import { spotlightPoint, useSpotlight } from "./composables/useSpotlight.js";
217
+ import { _ as _118 } from "./chunks/LpCommandScope-ubtWDMa0.js";
218
+ import { createPaletteRegistry, mergePaletteCommands, usePaletteCommands, vPalette } from "./composables/usePaletteCommands.js";
219
+ import { u as u3 } from "./chunks/palette-BiY7yQZL.js";
220
+ import { _ as _119 } from "./chunks/LpPaletteTheme-CqWNRwHE.js";
217
221
  const UI_CONFIG_VERSION = 1;
218
222
  function serializeConfig(config) {
219
223
  const out = {
@@ -264,6 +268,7 @@ export {
264
268
  _108 as LpCollapse,
265
269
  _16 as LpColorPicker,
266
270
  default3 as LpCommandPalette,
271
+ _118 as LpCommandScope,
267
272
  _18 as LpConfirmDialog,
268
273
  _19 as LpConfirmHost,
269
274
  _20 as LpContextMenu,
@@ -316,6 +321,7 @@ export {
316
321
  _17 as LpPalettePreview,
317
322
  default6 as LpPaletteStats,
318
323
  default7 as LpPaletteSwatches,
324
+ _119 as LpPaletteTheme,
319
325
  _47 as LpPasswordInput,
320
326
  _49 as LpPhoneInput,
321
327
  _48 as LpPie,
@@ -376,6 +382,7 @@ export {
376
382
  _67 as LpVideoBackdrop,
377
383
  N as NO_BACKDROP_ATTR,
378
384
  OSM_TILES,
385
+ PALETTE_MODES,
379
386
  SCRAMBLE_GLYPHS,
380
387
  PRESET_NAMES as SHADER_PRESETS,
381
388
  STATUS_LABELS,
@@ -432,11 +439,13 @@ export {
432
439
  countLevels,
433
440
  createHintSystem,
434
441
  createNominatimProvider,
442
+ createPaletteRegistry,
435
443
  crossedMilestone,
436
444
  csvField,
437
445
  currentStepIndex,
438
446
  g as dark,
439
447
  dayAllowed,
448
+ decimalMark,
440
449
  deepEqual,
441
450
  defaultDatePresets,
442
451
  defaultRangePresets,
@@ -512,8 +521,10 @@ export {
512
521
  matchPositions,
513
522
  matchesHotkey,
514
523
  matchesTerm,
524
+ menuPaletteCommands,
515
525
  mergeClass,
516
526
  mergeConfig,
527
+ mergePaletteCommands,
517
528
  mergeShortcutGroups,
518
529
  meterFraction,
519
530
  middleTruncate,
@@ -585,6 +596,7 @@ export {
585
596
  scrollToElement,
586
597
  seamProgress,
587
598
  seamReached,
599
+ searchCommandItems,
588
600
  seededRandom,
589
601
  sequenceProgress,
590
602
  serializeConfig,
@@ -604,6 +616,7 @@ export {
604
616
  subtreeIds,
605
617
  subtreeSize,
606
618
  svgToPng,
619
+ swapCommandLayout,
607
620
  t as themeEntries,
608
621
  m as themeFromCookie,
609
622
  o as themeToCssRule,
@@ -649,6 +662,8 @@ export {
649
662
  useNow,
650
663
  useOptimisticToggle,
651
664
  usePaintSelect,
665
+ usePaletteCommands,
666
+ u3 as usePaletteTheme,
652
667
  usePersisted,
653
668
  usePointerFrame,
654
669
  usePortalTarget,
@@ -668,6 +683,7 @@ export {
668
683
  useView,
669
684
  useZoomPan,
670
685
  vHint,
686
+ vPalette,
671
687
  viewDocument,
672
688
  viewWindow,
673
689
  v as violet,
@@ -0,0 +1,9 @@
1
+ import { type MaybeRefOrGetter } from "vue";
2
+ import { type PaletteScope } from "../composables/usePaletteCommands";
3
+ import type { ThemeStudio } from "./studio";
4
+ /** Registers the studio itself; no second list of theme options in the app. */
5
+ export declare function usePaletteTheme(studio: MaybeRefOrGetter<ThemeStudio | undefined>, options?: {
6
+ id?: string;
7
+ label?: string;
8
+ scope?: PaletteScope;
9
+ }): void;
@@ -82,9 +82,20 @@ export interface ThemeStudio {
82
82
  tune(patch: Partial<Omit<StudioState, "theme">>): void;
83
83
  reset(origin?: RevealOrigin): void;
84
84
  }
85
+ export interface PreviewableThemeStudio extends ThemeStudio {
86
+ /** Build a draft for a scoped preview, without applying or persisting it. */
87
+ preview(state: StudioState): {
88
+ theme: TokenSet;
89
+ exported: {
90
+ code: string;
91
+ json: string;
92
+ css: string;
93
+ };
94
+ };
95
+ }
85
96
  /**
86
97
  * The studio state for `storageKey`, made on first use and shared after. A
87
98
  * later caller's `themes` or `system` fill in what the first one left out:
88
99
  * the page may make the studio before the switcher that offers "System".
89
100
  */
90
- export declare function useThemeStudio(options?: ThemeStudioOptions): ThemeStudio;
101
+ export declare function useThemeStudio(options?: ThemeStudioOptions): PreviewableThemeStudio;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.70.0",
3
+ "version": "0.71.0",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -59,6 +59,7 @@
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",
@@ -85,6 +86,7 @@
85
86
  "devDependencies": {
86
87
  "@iconify-json/lucide": "^1.2.112",
87
88
  "@iconify/vue": "^5.0.1",
89
+ "@playwright/test": "^1.64.1",
88
90
  "@tailwindcss/vite": "^4.2.4",
89
91
  "@types/node": "^26.2.0",
90
92
  "@vitejs/plugin-vue": "^6.0.6",
@@ -107,6 +109,7 @@
107
109
  "@vue-flow/core": "^1.48.2",
108
110
  "@vue-flow/minimap": "^1.5.4",
109
111
  "libphonenumber-js": "^1.12.0",
112
+ "tailwind-merge": "^3.6.0",
110
113
  "vaul-vue": "^0.4.1"
111
114
  }
112
115
  }
@@ -22,6 +22,7 @@ export const COMPONENT_NAMES = [
22
22
  "LpCollapse",
23
23
  "LpColorPicker",
24
24
  "LpCommandPalette",
25
+ "LpCommandScope",
25
26
  "LpConfirmDialog",
26
27
  "LpConfirmHost",
27
28
  "LpContextMenu",
@@ -74,6 +75,7 @@ export const COMPONENT_NAMES = [
74
75
  "LpPalettePreview",
75
76
  "LpPaletteStats",
76
77
  "LpPaletteSwatches",
78
+ "LpPaletteTheme",
77
79
  "LpPasswordInput",
78
80
  "LpPhoneInput",
79
81
  "LpPie",
@@ -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>
@@ -10,6 +10,7 @@ export type AutocompleteLabels = {
10
10
  </script>
11
11
 
12
12
  <script setup lang="ts">
13
+ import { usePaletteControl, type PaletteControlOptions } from "../composables/usePaletteCommands"
13
14
  /*
14
15
  * Free-text autocomplete — a text field that suggests as you type but never
15
16
  * forces a choice. Unlike LpSelect (which binds to an option value and requires
@@ -49,6 +50,8 @@ export type AutocompleteSelection = OptionSelection
49
50
 
50
51
  const props = withDefaults(
51
52
  defineProps<{
53
+ /** Contextual palette metadata; false excludes this control. */
54
+ palette?: PaletteControlOptions
52
55
  /** The free text. This is the model — bind with v-model. */
53
56
  modelValue?: string
54
57
  /** Suggestions. Strings or {value,label,description}. */
@@ -85,7 +88,7 @@ const props = withDefaults(
85
88
  selected?: AutocompleteSelection | null
86
89
  labels?: Partial<AutocompleteLabels>
87
90
  }>(),
88
- {
91
+ { palette: undefined,
89
92
  size: "md",
90
93
  clearable: false,
91
94
  filter: true,
@@ -270,6 +273,8 @@ const portalTo = usePortalTarget()
270
273
  // What happens in another document (the page around a frame, or a frame in
271
274
  // the page) is not "outside" for this layer.
272
275
  const guardOutside = useOutsideGuard()
276
+
277
+ usePaletteControl({ disabled: () => field.value.disabled, invalid: () => field.value.invalid })
273
278
  </script>
274
279
 
275
280
  <template>
@@ -5,6 +5,7 @@ export default { inheritAttrs: false }
5
5
  </script>
6
6
 
7
7
  <script setup lang="ts">
8
+ import { usePaletteAction, type PaletteControlOptions } from "../composables/usePaletteCommands"
8
9
  import { tv, type VariantProps } from "tailwind-variants"
9
10
  import { computed, getCurrentInstance, onMounted, onUpdated, ref, useAttrs, type Component, type ComponentPublicInstance } from "vue"
10
11
  import { HINT_SIGNALS, noteHotkeyTarget } from "../composables/useHintSystem"
@@ -86,6 +87,7 @@ type ButtonVariants = VariantProps<typeof button>
86
87
 
87
88
  const props = withDefaults(
88
89
  defineProps<{
90
+ palette?: PaletteControlOptions
89
91
  variant?: ButtonVariants["variant"]
90
92
  size?: ButtonVariants["size"]
91
93
  block?: boolean
@@ -126,7 +128,7 @@ const props = withDefaults(
126
128
  hotkeyGroup?: string
127
129
  labels?: Partial<{ group: string }>
128
130
  }>(),
129
- { type: "button" },
131
+ { palette: undefined, type: "button" },
130
132
  )
131
133
 
132
134
  const emit = defineEmits<{
@@ -282,6 +284,8 @@ const { class: classes, attrs: rest } = useMergedAttrs(() =>
282
284
  loading: busy.value,
283
285
  }),
284
286
  )
287
+
288
+ usePaletteAction({ label: () => typeof attrs["aria-label"] === "string" ? attrs["aria-label"] : undefined, element: () => rootEl(), disabled: () => props.disabled || busy.value })
285
289
  </script>
286
290
 
287
291
  <template>
@@ -1556,23 +1556,25 @@ const { class: rootClass, attrs: rest } = useMergedAttrs(
1556
1556
  </div>
1557
1557
  </LpContextMenu>
1558
1558
 
1559
- <table v-if="dataTable && ready" class="sr-only">
1560
- <caption v-if="title">{{ title }}</caption>
1561
- <thead>
1562
- <tr>
1563
- <th scope="col"></th>
1564
- <th v-for="s in allSeries" :key="s.id" scope="col">{{ s.name }}</th>
1565
- </tr>
1566
- </thead>
1567
- <tbody>
1568
- <tr v-for="(label, i) in labels" :key="i">
1569
- <th scope="row">{{ label }}</th>
1570
- <td v-for="s in allSeries" :key="s.id">
1571
- {{ s.values[i] == null ? "—" : fmtSeries(s, s.values[i] as number) }}
1572
- </td>
1573
- </tr>
1574
- </tbody>
1575
- </table>
1559
+ <div v-if="dataTable && ready" class="sr-only">
1560
+ <table>
1561
+ <caption v-if="title">{{ title }}</caption>
1562
+ <thead>
1563
+ <tr>
1564
+ <th scope="col"></th>
1565
+ <th v-for="s in allSeries" :key="s.id" scope="col">{{ s.name }}</th>
1566
+ </tr>
1567
+ </thead>
1568
+ <tbody>
1569
+ <tr v-for="(label, i) in labels" :key="i">
1570
+ <th scope="row">{{ label }}</th>
1571
+ <td v-for="s in allSeries" :key="s.id">
1572
+ {{ s.values[i] == null ? "—" : fmtSeries(s, s.values[i] as number) }}
1573
+ </td>
1574
+ </tr>
1575
+ </tbody>
1576
+ </table>
1577
+ </div>
1576
1578
  </div>
1577
1579
  </template>
1578
1580
 
@@ -6,6 +6,7 @@ export default { inheritAttrs: false }
6
6
  </script>
7
7
 
8
8
  <script setup lang="ts">
9
+ import { usePaletteControl, type PaletteControlOptions } from "../composables/usePaletteCommands"
9
10
  import { CheckboxIndicator, CheckboxRoot } from "reka-ui"
10
11
  import { computed, useId } from "vue"
11
12
  import LpIcon from "./LpIcon.vue"
@@ -14,7 +15,9 @@ import { useFieldControl } from "../composables/useField"
14
15
  import { useOptimisticToggle } from "../composables/useOptimisticToggle"
15
16
  import { useMergedAttrs } from "../composables/useMergedClass"
16
17
 
17
- const props = defineProps<{
18
+ const props = withDefaults(defineProps<{
19
+ /** Contextual palette metadata; false excludes this control. */
20
+ palette?: PaletteControlOptions
18
21
  modelValue?: boolean
19
22
  /** Mixed state (e.g. a "select all" with a partial selection). Shows a dash. */
20
23
  indeterminate?: boolean
@@ -30,7 +33,7 @@ const props = defineProps<{
30
33
  * (or the `error` event, when the app listens).
31
34
  */
32
35
  action?: (value: boolean) => unknown
33
- }>()
36
+ }>(), { palette: undefined })
34
37
  const emit = defineEmits<{
35
38
  (e: "update:modelValue", value: boolean): void
36
39
  (e: "change", value: boolean): void
@@ -63,6 +66,8 @@ const { class: rootClass, attrs: rest } = useMergedAttrs(() =>
63
66
  props.description ? "items-start" : "items-center",
64
67
  ].join(" "),
65
68
  )
69
+
70
+ usePaletteControl({ label: () => props.label, disabled: () => field.value.disabled || pending.value, editorProps: () => ({ action: undefined, 'onUpdate:modelValue': onUpdate, onChange: undefined }) })
66
71
  </script>
67
72
 
68
73
  <template>