@leavepulse/ui 0.70.1 → 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 (321) hide show
  1. package/README.md +91 -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/{LpTable-DHxEQ_-3.css → LpTable-DHvorDiU.css} +19 -19
  6. package/dist/assets/LpTabs-CO3EcsNV.css +18 -0
  7. package/dist/chunks/{ContextMenuItems-6kxEivBI.js → ContextMenuItems-eS7qx9gD.js} +1 -1
  8. package/dist/chunks/{DropzoneLinkField-Bw8Flkhk.js → DropzoneLinkField-DkFhdfEJ.js} +2 -2
  9. package/dist/chunks/{FieldWrapper-BiennROB.js → FieldWrapper-YzbvvC3M.js} +1 -1
  10. package/dist/chunks/{LayoutCanvas-BsJIzhdd.js → LayoutCanvas-Ba4A9QC5.js} +1 -1
  11. package/dist/chunks/{LayoutNode-DJVhkSGk.js → LayoutNode-CTTTLMDM.js} +1 -1
  12. package/dist/chunks/{LpActionBar-CzOFar5t.js → LpActionBar-B7anGlkI.js} +2 -2
  13. package/dist/chunks/{LpAddressInput-Chv_Xf8q.js → LpAddressInput-CD0bzrt-.js} +7 -7
  14. package/dist/chunks/{LpAlert-C5igj802.js → LpAlert-BHi7ARqu.js} +1 -1
  15. package/dist/chunks/{LpAppShell-BiWByLmt.js → LpAppShell-1RmBp6xQ.js} +3 -3
  16. package/dist/chunks/{LpAutocomplete-D92niDHE.js → LpAutocomplete-DDqe2M5g.js} +5 -2
  17. package/dist/chunks/{LpAvatar-CLPl-qOF.js → LpAvatar-DqfKCIdr.js} +1 -1
  18. package/dist/chunks/{LpBadge-BBq1Er9T.js → LpBadge-C8fKEmTF.js} +1 -1
  19. package/dist/chunks/{LpBreadcrumbs-JKEi_yFF.js → LpBreadcrumbs-DhcoStFa.js} +1 -1
  20. package/dist/chunks/{LpButton-CVxBfGjd.js → LpButton-BQDAFXBd.js} +3 -0
  21. package/dist/chunks/{LpCalendar-pVL91-Pl.js → LpCalendar-NmrA47J9.js} +1 -1
  22. package/dist/chunks/{LpCheckbox-DHc2bHDe.js → LpCheckbox-BoOuLnGB.js} +5 -2
  23. package/dist/chunks/{LpCodeBlock-BGsQhxw8.js → LpCodeBlock-Czu-fq1M.js} +2 -2
  24. package/dist/chunks/{LpCodeDisplay-CbJMs-IK.js → LpCodeDisplay-BK2FHbtM.js} +5 -5
  25. package/dist/chunks/{LpColorPicker-B7HSIFmn.js → LpColorPicker-Ee1DZiRd.js} +2 -2
  26. package/dist/chunks/LpCommandScope-ubtWDMa0.js +53 -0
  27. package/dist/chunks/{LpConfirmDialog-CfGCux8m.js → LpConfirmDialog-i15pulMT.js} +3 -3
  28. package/dist/chunks/{LpConfirmHost-exB7JmcO.js → LpConfirmHost-D0oGavtd.js} +1 -1
  29. package/dist/chunks/{LpContextMenu-Cj96ENDC.js → LpContextMenu-DXpFJjlO.js} +13 -3
  30. package/dist/chunks/{LpCopyButton-DzHjnFs0.js → LpCopyButton-Dmq7DmFw.js} +3 -3
  31. package/dist/chunks/{LpCountdown-BQnmB4gq.js → LpCountdown-DTdMF8DL.js} +1 -1
  32. package/dist/chunks/{LpDataList-CHNYQw7h.js → LpDataList-CFPtSsBB.js} +3 -3
  33. package/dist/chunks/{LpDatePicker-ac1_6o5P.js → LpDatePicker-cC9K-Pk8.js} +4 -4
  34. package/dist/chunks/{LpDateRangePicker-B15gYrZJ.js → LpDateRangePicker-BVQKPbvo.js} +2 -2
  35. package/dist/chunks/{LpDisclosure-DOarzlAG.js → LpDisclosure-hRnX3FWL.js} +4 -1
  36. package/dist/chunks/{LpDrawer-DGNKRsGq.js → LpDrawer-u4rxnuR-.js} +1 -1
  37. package/dist/chunks/{LpDropdownMenu-R4aYVtVV.js → LpDropdownMenu-BgZ0Z_Im.js} +13 -3
  38. package/dist/chunks/{LpEditable-Ws3DNQHn.js → LpEditable-CjxuOVh_.js} +2 -2
  39. package/dist/chunks/{LpEmptyState-KTKipws2.js → LpEmptyState-CKFTtQgJ.js} +1 -1
  40. package/dist/chunks/{LpFieldNotice-CurbNuXI.js → LpFieldNotice-CPI8EwtU.js} +1 -1
  41. package/dist/chunks/{LpFileTree-DDNg34tJ.js → LpFileTree-BH0gNlSJ.js} +2 -2
  42. package/dist/chunks/{LpFileTreeNode-DmPuYNZ_.js → LpFileTreeNode-gPVB1oXM.js} +4 -4
  43. package/dist/chunks/{LpFormField-BWwgm1E4.js → LpFormField-gRASfyj2.js} +4 -1
  44. package/dist/chunks/{LpGauge-C14Z9503.js → LpGauge-BdjPGnqw.js} +1 -1
  45. package/dist/chunks/{LpHintLayer-HvwUA5Ec.js → LpHintLayer-C2asBIfs.js} +2 -2
  46. package/dist/chunks/{LpHints-DxbPKOzQ.js → LpHints-CNZQ76JV.js} +3 -3
  47. package/dist/chunks/{LpIcon-HJP5xMz4.js → LpIcon-DkP-9mzK.js} +1 -1
  48. package/dist/chunks/{LpInfraNode-D64hywJI.js → LpInfraNode-yTh4-5qa.js} +2 -2
  49. package/dist/chunks/{LpInput-CDuwODJG.js → LpInput-2H-5ILOB.js} +5 -2
  50. package/dist/chunks/{LpLightbox-XJ0LpTcZ.js → LpLightbox-lAt5uIfx.js} +2 -2
  51. package/dist/chunks/{LpLogViewer-DKK4ySZl.js → LpLogViewer-x78YfhJf.js} +5 -5
  52. package/dist/chunks/{LpMapPicker-BtIl7NOM.js → LpMapPicker-Dp5RSCi9.js} +1 -1
  53. package/dist/chunks/{LpMediaGallery-rmI1DjKN.js → LpMediaGallery-D92oJfY_.js} +3 -3
  54. package/dist/chunks/{LpModal-eBMt2Fqn.js → LpModal-CpH0bNo7.js} +1 -1
  55. package/dist/chunks/{LpModalNav-DiyFCHiZ.js → LpModalNav-BH4ANQGJ.js} +4 -4
  56. package/dist/chunks/{LpNotificationBell-D-WhE5m2.js → LpNotificationBell-BdUQqZhs.js} +6 -6
  57. package/dist/chunks/{LpNumberField-B9k-h2HE.js → LpNumberField-DZY3Z670.js} +4 -1
  58. package/dist/chunks/{LpNumberFlow-Cfyh033Q.js → LpNumberFlow-5khYxsfX.js} +6 -3
  59. package/dist/chunks/{LpPagination-VNCX6pFC.js → LpPagination-DbeACavM.js} +1 -1
  60. package/dist/chunks/LpPaletteTheme-CqWNRwHE.js +104 -0
  61. package/dist/chunks/{LpPasswordInput-GL2KOFK8.js → LpPasswordInput-BzAZsf5V.js} +4 -2
  62. package/dist/chunks/{LpPhoneInput-C60tx1tC.js → LpPhoneInput-BMpd-0QR.js} +2 -2
  63. package/dist/chunks/{LpPie-BgXZ3xmm.js → LpPie-DdFSTbGE.js} +4 -4
  64. package/dist/chunks/{LpPipeline-B31h41Mu.js → LpPipeline-zjEM1Lwc.js} +3 -3
  65. package/dist/chunks/{LpProgress-CE-m5OpD.js → LpProgress-BX33EKkN.js} +1 -1
  66. package/dist/chunks/{LpQuota-DaL8TgNe.js → LpQuota-DqNv1yjs.js} +2 -2
  67. package/dist/chunks/{LpRadioGroup-CGBr5nIp.js → LpRadioGroup-CsXeV9Ct.js} +4 -1
  68. package/dist/chunks/{LpRangeCalendar-c5qj7YcC.js → LpRangeCalendar-l-0nSFmY.js} +1 -1
  69. package/dist/chunks/{LpRangeSlider-Dv6lNvHY.js → LpRangeSlider-CM-0ZITZ.js} +3 -0
  70. package/dist/chunks/{LpRelativeTime-yin9uQP7.js → LpRelativeTime-UM8EkfrN.js} +1 -1
  71. package/dist/chunks/{LpRepeater-D0S7jjwr.js → LpRepeater-OvzByE5L.js} +2 -2
  72. package/dist/chunks/{LpSecretField-CfWyHv9m.js → LpSecretField-DwQiPOko.js} +9 -7
  73. package/dist/chunks/{LpSection-BW4xJ-Li.js → LpSection-DcQsieHG.js} +1 -1
  74. package/dist/chunks/{LpSegmented-BO99Sr4m.js → LpSegmented-D2VST0o3.js} +4 -1
  75. package/dist/chunks/{LpSelect-C_8cJtj6.js → LpSelect-DYX2-u5A.js} +36 -6
  76. package/dist/chunks/{LpSidebar-CZRXtvem.js → LpSidebar-D44peKq2.js} +3 -3
  77. package/dist/chunks/{LpSidebarNav-DBg1U1oW.js → LpSidebarNav--VwkXO_a.js} +3 -3
  78. package/dist/chunks/{LpSlider-DuoRpOrH.js → LpSlider-DxYoCJJO.js} +3 -0
  79. package/dist/chunks/{LpStat-DFKlPJgy.js → LpStat-DIsQfbeD.js} +3 -3
  80. package/dist/chunks/{LpStatus-BsGLrpor.js → LpStatus-BQU1TUsv.js} +1 -1
  81. package/dist/chunks/{LpStepMark-TrzOioa9.js → LpStepMark-CXa7DJy_.js} +1 -1
  82. package/dist/chunks/{LpStepper-BbnS5jUr.js → LpStepper-C9RM_yTG.js} +1 -1
  83. package/dist/chunks/{LpSwitch-DrzKrZZV.js → LpSwitch-bGZxUDSx.js} +3 -0
  84. package/dist/chunks/{LpTableFilter-DyvHGbOk.js → LpTableFilter-CTZMqFDU.js} +2 -2
  85. package/dist/chunks/{LpTableOfContents-rYvo8z5T.js → LpTableOfContents-CraicEs4.js} +2 -2
  86. package/dist/chunks/{LpTagsInput-DZg80W-B.js → LpTagsInput-DrjmrOge.js} +8 -5
  87. package/dist/chunks/{LpTextarea-DiWjeVoJ.js → LpTextarea-BbYqmG1S.js} +4 -1
  88. package/dist/chunks/{LpThemeStudio-DxVZMtzN.js → LpThemeStudio-B2nPaG-h.js} +18 -14
  89. package/dist/chunks/{LpThemeSwitcher-CadVBTBn.js → LpThemeSwitcher-C0A5sg_E.js} +5 -3
  90. package/dist/chunks/{LpTimeField-BFQVf_PW.js → LpTimeField-DQ8WvPr2.js} +4 -1
  91. package/dist/chunks/{LpToaster-Wv9ksj4q.js → LpToaster-BTTl_wuy.js} +2 -2
  92. package/dist/chunks/{LpTooltip-Cz8SQwRt.js → LpTooltip-BcBvIx4z.js} +23 -5
  93. package/dist/chunks/{LpTopologyCanvas-C17A1XCb.js → LpTopologyCanvas-B0wEvAoq.js} +1 -1
  94. package/dist/chunks/{LpTour-CY2bFXge.js → LpTour-BgCfNlaW.js} +1 -1
  95. package/dist/chunks/{LpTruncate-D_5Pfv5B.js → LpTruncate-TcqfkyJM.js} +2 -2
  96. package/dist/chunks/{LpUptimeBar-Tew1Ykx4.js → LpUptimeBar-DRadGq4Y.js} +136 -47
  97. package/dist/chunks/{MenuTitle-BjQZX8tQ.js → MenuTitle-Dab3EGOp.js} +1 -1
  98. package/dist/chunks/{OptionContent-CmYUUeWj.js → OptionContent-DPzNsybd.js} +1 -1
  99. package/dist/chunks/PalettePreviewBoundary-B0Hhu3Yw.js +20 -0
  100. package/dist/chunks/{PickerField-DoHv0WMH.js → PickerField-DwLw7j0L.js} +1 -1
  101. package/dist/chunks/{RevealToggle-C-KzaQGJ.js → RevealToggle-BVFM_FAU.js} +3 -3
  102. package/dist/chunks/{TourCard-BJ8i7dk0.js → TourCard--2IfgnUU.js} +2 -2
  103. package/dist/chunks/icons-CLu1iR1j.js +43 -0
  104. package/dist/chunks/palette-BiY7yQZL.js +29 -0
  105. package/dist/component-names.d.ts +1 -1
  106. package/dist/components/ContextMenuItems.vue.js +1 -1
  107. package/dist/components/DropzoneLinkField.vue.js +1 -1
  108. package/dist/components/FieldWrapper.vue.js +1 -1
  109. package/dist/components/LayoutCanvas.vue.js +1 -1
  110. package/dist/components/LayoutNode.vue.js +1 -1
  111. package/dist/components/LpActionBar.vue.js +1 -1
  112. package/dist/components/LpAddressInput.vue.d.ts +1 -1
  113. package/dist/components/LpAddressInput.vue.js +1 -1
  114. package/dist/components/LpAlert.vue.d.ts +3 -3
  115. package/dist/components/LpAlert.vue.js +1 -1
  116. package/dist/components/LpAppShell.vue.js +1 -1
  117. package/dist/components/LpAutocomplete.vue.d.ts +7 -1
  118. package/dist/components/LpAutocomplete.vue.js +1 -1
  119. package/dist/components/LpAvatar.vue.js +1 -1
  120. package/dist/components/LpBadge.vue.d.ts +2 -2
  121. package/dist/components/LpBadge.vue.js +1 -1
  122. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  123. package/dist/components/LpButton.vue.d.ts +4 -0
  124. package/dist/components/LpButton.vue.js +1 -1
  125. package/dist/components/LpCalendar.vue.js +1 -1
  126. package/dist/components/LpChart.vue.js +2 -2
  127. package/dist/components/LpCheckbox.vue.d.ts +8 -1
  128. package/dist/components/LpCheckbox.vue.js +1 -1
  129. package/dist/components/LpCodeBlock.vue.js +1 -1
  130. package/dist/components/LpCodeDisplay.vue.js +1 -1
  131. package/dist/components/LpColorPicker.vue.d.ts +2 -2
  132. package/dist/components/LpColorPicker.vue.js +1 -1
  133. package/dist/components/LpCommandPalette.vue.d.ts +43 -7
  134. package/dist/components/LpCommandPalette.vue.js +451 -126
  135. package/dist/components/LpCommandScope.vue.d.ts +28 -0
  136. package/dist/components/LpCommandScope.vue.js +4 -0
  137. package/dist/components/LpConfirmDialog.vue.js +1 -1
  138. package/dist/components/LpConfirmHost.vue.js +1 -1
  139. package/dist/components/LpContextMenu.vue.d.ts +5 -1
  140. package/dist/components/LpContextMenu.vue.js +1 -1
  141. package/dist/components/LpCopyButton.vue.d.ts +1 -1
  142. package/dist/components/LpCopyButton.vue.js +1 -1
  143. package/dist/components/LpCountdown.vue.js +1 -1
  144. package/dist/components/LpDataList.vue.js +1 -1
  145. package/dist/components/LpDatePicker.vue.js +1 -1
  146. package/dist/components/LpDateRangePicker.vue.js +1 -1
  147. package/dist/components/LpDisclosure.vue.d.ts +4 -0
  148. package/dist/components/LpDisclosure.vue.js +1 -1
  149. package/dist/components/LpDock.vue.js +2 -2
  150. package/dist/components/LpDrawer.vue.js +1 -1
  151. package/dist/components/LpDropdownMenu.vue.d.ts +5 -1
  152. package/dist/components/LpDropdownMenu.vue.js +1 -1
  153. package/dist/components/LpDropzone.vue.js +2 -2
  154. package/dist/components/LpEditable.vue.js +1 -1
  155. package/dist/components/LpEmptyState.vue.js +1 -1
  156. package/dist/components/LpFieldNotice.vue.js +1 -1
  157. package/dist/components/LpFileTree.vue.d.ts +1 -1
  158. package/dist/components/LpFileTree.vue.js +1 -1
  159. package/dist/components/LpFileTreeNode.vue.js +1 -1
  160. package/dist/components/LpFormField.vue.js +1 -1
  161. package/dist/components/LpGauge.vue.js +1 -1
  162. package/dist/components/LpHintLayer.vue.js +1 -1
  163. package/dist/components/LpHints.vue.js +1 -1
  164. package/dist/components/LpIcon.vue.js +1 -1
  165. package/dist/components/LpImageEditor.vue.js +3 -2
  166. package/dist/components/LpInfraNode.vue.js +1 -1
  167. package/dist/components/LpInput.vue.d.ts +6 -0
  168. package/dist/components/LpInput.vue.js +1 -1
  169. package/dist/components/LpLightbox.vue.js +1 -1
  170. package/dist/components/LpLoader.vue.d.ts +1 -1
  171. package/dist/components/LpLogViewer.vue.js +1 -1
  172. package/dist/components/LpMapPicker.vue.js +1 -1
  173. package/dist/components/LpMediaGallery.vue.d.ts +2 -2
  174. package/dist/components/LpMediaGallery.vue.js +1 -1
  175. package/dist/components/LpModal.vue.js +1 -1
  176. package/dist/components/LpModalNav.vue.js +1 -1
  177. package/dist/components/LpNotificationBell.vue.js +1 -1
  178. package/dist/components/LpNumberField.vue.d.ts +6 -0
  179. package/dist/components/LpNumberField.vue.js +1 -1
  180. package/dist/components/LpNumberFlow.vue.js +1 -1
  181. package/dist/components/LpPagination.vue.js +1 -1
  182. package/dist/components/LpPaletteFacts.vue.d.ts +1 -0
  183. package/dist/components/LpPaletteFacts.vue.js +40 -26
  184. package/dist/components/LpPaletteHeader.vue.js +2 -2
  185. package/dist/components/LpPaletteStats.vue.d.ts +1 -0
  186. package/dist/components/LpPaletteStats.vue.js +45 -21
  187. package/dist/components/LpPaletteTheme.vue.d.ts +7 -0
  188. package/dist/components/LpPaletteTheme.vue.js +4 -0
  189. package/dist/components/LpPasswordInput.vue.js +1 -1
  190. package/dist/components/LpPhoneInput.vue.js +1 -1
  191. package/dist/components/LpPie.vue.js +1 -1
  192. package/dist/components/LpPipeline.vue.js +1 -1
  193. package/dist/components/LpProgress.vue.d.ts +1 -1
  194. package/dist/components/LpProgress.vue.js +1 -1
  195. package/dist/components/LpQuota.vue.js +1 -1
  196. package/dist/components/LpRadioGroup.vue.d.ts +6 -1
  197. package/dist/components/LpRadioGroup.vue.js +1 -1
  198. package/dist/components/LpRangeCalendar.vue.js +1 -1
  199. package/dist/components/LpRangeSlider.vue.d.ts +6 -0
  200. package/dist/components/LpRangeSlider.vue.js +1 -1
  201. package/dist/components/LpRelativeTime.vue.js +1 -1
  202. package/dist/components/LpRepeater.vue.js +1 -1
  203. package/dist/components/LpSecretField.vue.js +1 -1
  204. package/dist/components/LpSection.vue.js +1 -1
  205. package/dist/components/LpSegmented.vue.d.ts +6 -0
  206. package/dist/components/LpSegmented.vue.js +1 -1
  207. package/dist/components/LpSelect.vue.d.ts +3 -0
  208. package/dist/components/LpSelect.vue.js +1 -1
  209. package/dist/components/LpShinyText.vue.d.ts +1 -1
  210. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  211. package/dist/components/LpSidebar.vue.js +1 -1
  212. package/dist/components/LpSidebarNav.vue.js +1 -1
  213. package/dist/components/LpSlider.vue.d.ts +6 -0
  214. package/dist/components/LpSlider.vue.js +1 -1
  215. package/dist/components/LpStat.vue.js +1 -1
  216. package/dist/components/LpStatus.vue.js +1 -1
  217. package/dist/components/LpStepMark.vue.js +1 -1
  218. package/dist/components/LpStepper.vue.js +1 -1
  219. package/dist/components/LpSwitch.vue.d.ts +6 -0
  220. package/dist/components/LpSwitch.vue.js +1 -1
  221. package/dist/components/LpTable.vue.d.ts +6 -0
  222. package/dist/components/LpTable.vue.js +74 -35
  223. package/dist/components/LpTableFilter.vue.js +1 -1
  224. package/dist/components/LpTableOfContents.vue.js +1 -1
  225. package/dist/components/LpTabs.vue.d.ts +1 -1
  226. package/dist/components/LpTabs.vue.js +14 -5
  227. package/dist/components/LpTagsInput.vue.d.ts +6 -0
  228. package/dist/components/LpTagsInput.vue.js +1 -1
  229. package/dist/components/LpTextarea.vue.d.ts +8 -1
  230. package/dist/components/LpTextarea.vue.js +1 -1
  231. package/dist/components/LpThemeStudio.vue.js +1 -1
  232. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  233. package/dist/components/LpTimeField.vue.d.ts +6 -0
  234. package/dist/components/LpTimeField.vue.js +1 -1
  235. package/dist/components/LpToaster.vue.js +1 -1
  236. package/dist/components/LpTooltip.vue.js +1 -1
  237. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  238. package/dist/components/LpTour.vue.js +1 -1
  239. package/dist/components/LpTruncate.vue.js +1 -1
  240. package/dist/components/LpUptimeBar.vue.d.ts +18 -9
  241. package/dist/components/LpUptimeBar.vue.js +1 -1
  242. package/dist/components/MenuTitle.vue.js +1 -1
  243. package/dist/components/OptionContent.vue.js +1 -1
  244. package/dist/components/PalettePreviewBoundary.vue.d.ts +13 -0
  245. package/dist/components/PalettePreviewBoundary.vue.js +4 -0
  246. package/dist/components/PickerField.vue.js +1 -1
  247. package/dist/components/RevealToggle.vue.js +1 -1
  248. package/dist/components/TourCard.vue.js +1 -1
  249. package/dist/components/commandPalette.d.ts +33 -0
  250. package/dist/components/commandPalette.js +21 -1
  251. package/dist/components/commandSearch.d.ts +5 -0
  252. package/dist/components/commandSearch.js +22 -2
  253. package/dist/components/format.d.ts +7 -0
  254. package/dist/components/format.js +4 -0
  255. package/dist/components/menuWhen.js +1 -1
  256. package/dist/components/uptimeBar.d.ts +45 -0
  257. package/dist/components/uptimeBar.js +51 -0
  258. package/dist/composables/scroll.d.ts +5 -0
  259. package/dist/composables/scroll.js +7 -0
  260. package/dist/composables/useField.d.ts +4 -0
  261. package/dist/composables/useField.js +3 -0
  262. package/dist/composables/usePaletteCommands.d.ts +61 -0
  263. package/dist/composables/usePaletteCommands.js +220 -0
  264. package/dist/composables/useReveal.js +21 -0
  265. package/dist/composables/useView.js +5 -1
  266. package/dist/icons-all.js +1 -1
  267. package/dist/index.d.ts +14 -1
  268. package/dist/index.js +101 -85
  269. package/dist/theme/palette.d.ts +9 -0
  270. package/dist/theme/studio.d.ts +12 -1
  271. package/package.json +1 -1
  272. package/src/component-names.ts +2 -0
  273. package/src/components/LpAutocomplete.vue +6 -1
  274. package/src/components/LpButton.vue +5 -1
  275. package/src/components/LpCheckbox.vue +7 -2
  276. package/src/components/LpCommandPalette.vue +263 -29
  277. package/src/components/LpCommandScope.vue +35 -0
  278. package/src/components/LpContextMenu.vue +13 -2
  279. package/src/components/LpDisclosure.vue +5 -1
  280. package/src/components/LpDropdownMenu.vue +13 -2
  281. package/src/components/LpFormField.vue +3 -0
  282. package/src/components/LpInput.vue +6 -1
  283. package/src/components/LpNumberField.vue +6 -1
  284. package/src/components/LpNumberFlow.vue +12 -2
  285. package/src/components/LpPaletteFacts.vue +11 -6
  286. package/src/components/LpPaletteStats.vue +12 -5
  287. package/src/components/LpPaletteTheme.vue +48 -0
  288. package/src/components/LpPasswordInput.vue +3 -0
  289. package/src/components/LpRadioGroup.vue +4 -1
  290. package/src/components/LpRangeSlider.vue +6 -1
  291. package/src/components/LpSecretField.vue +3 -0
  292. package/src/components/LpSegmented.vue +6 -1
  293. package/src/components/LpSelect.vue +41 -2
  294. package/src/components/LpSlider.vue +6 -1
  295. package/src/components/LpSwitch.vue +6 -1
  296. package/src/components/LpTable.vue +35 -2
  297. package/src/components/LpTableOfContents.vue +2 -4
  298. package/src/components/LpTabs.vue +7 -0
  299. package/src/components/LpTagsInput.vue +6 -1
  300. package/src/components/LpTextarea.vue +7 -2
  301. package/src/components/LpThemeStudio.vue +7 -5
  302. package/src/components/LpThemeSwitcher.vue +3 -0
  303. package/src/components/LpTimeField.vue +6 -1
  304. package/src/components/LpTooltip.vue +23 -1
  305. package/src/components/LpUptimeBar.vue +69 -41
  306. package/src/components/PalettePreviewBoundary.vue +5 -0
  307. package/src/components/commandPalette.ts +22 -1
  308. package/src/components/commandSearch.ts +23 -1
  309. package/src/components/format.ts +10 -0
  310. package/src/components/uptimeBar.ts +98 -0
  311. package/src/composables/scroll.ts +11 -0
  312. package/src/composables/useField.ts +7 -0
  313. package/src/composables/usePaletteCommands.ts +220 -0
  314. package/src/composables/useReveal.ts +29 -0
  315. package/src/composables/useView.ts +5 -1
  316. package/src/index.ts +18 -1
  317. package/src/kit-icons.ts +1 -1
  318. package/src/theme/palette.ts +26 -0
  319. package/src/theme/studio.ts +15 -8
  320. package/dist/assets/LpTabs-BJ-nrJuI.css +0 -18
  321. package/dist/chunks/icons-4IywzkHk.js +0 -43
package/README.md CHANGED
@@ -232,3 +232,94 @@ Playwright starts an isolated Vite server on port 4501. The suite covers field
232
232
  locking, secret reveal controls, date/select focus boundaries and a mobile
233
233
  form inside a guarded drawer. These checks run in CI and before npm publishing.
234
234
  Use `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` to run an existing Chromium installation.
235
+
236
+ ### Contextual command palette
237
+
238
+ Wrap the application (or a page and its palette) in `LpCommandScope`. Nested
239
+ scopes share a registry, prioritise page commands, and unregister on unmount.
240
+ `isolated` starts a separate registry for an embedded application or demo.
241
+
242
+ ```vue
243
+ <script setup lang="ts">
244
+ import { ref } from 'vue'
245
+ import {
246
+ LpCommandScope, LpCommandPalette, LpFormField, LpNumberField,
247
+ useThemeStudio,
248
+ } from '@leavepulse/ui'
249
+
250
+ const studio = useThemeStudio()
251
+ const open = ref(false)
252
+ const cpu = ref(4)
253
+ </script>
254
+
255
+ <template>
256
+ <LpCommandScope id="settings" label="Settings" :theme="studio">
257
+ <LpFormField label="CPU limit">
258
+ <LpNumberField v-model="cpu" :min="1" :max="128" :palette="{ id: 'cpu' }" />
259
+ </LpFormField>
260
+ <LpCommandPalette v-model:open="open" preview-pane recent-key="my-app-palette" />
261
+ </LpCommandScope>
262
+ </template>
263
+ ```
264
+
265
+ Named kit fields, buttons, tabs and disclosures register automatically in a
266
+ scope. A field uses its own label, its `LpFormField` label or `aria-label`.
267
+ `palette` metadata (`id`, `label`, `description`, `keywords`) refines its metadata;
268
+ `:palette="false"` excludes it. Passwords and secrets are excluded even when
269
+ revealed. Previews reuse the original component's model bindings and constraints;
270
+ Enter opens an editor on narrow screens too. Escape returns to results.
271
+ Preview components and compound control internals are excluded from discovery.
272
+
273
+ Tables take `:palette="{ id: 'services', label: 'Services', labelKey: 'name' }"`.
274
+ They publish the currently loaded/filtered rows and their existing `rowMenu`
275
+ actions. Searching an entire remote dataset still needs a search provider.
276
+ Menus with a title reuse their existing item definitions. `discover=false` on a
277
+ scope disables automatic component discovery while retaining manual commands and
278
+ an explicitly supplied Theme studio. `context=false` on the palette excludes
279
+ contextual commands.
280
+
281
+ Inside a descendant page component, `usePaletteCommands(() => [...])` registers
282
+ reactive manual commands for that page's lifetime. Alternatively pass `commands`
283
+ to `LpCommandScope` directly. Manual `commands` passed to the palette replace a
284
+ registered command with the same ID. `previewComponent` provides a rich preview;
285
+ `editInPreview` makes Enter focus it. Native markup can opt in with the locally
286
+ imported `vPalette` directive:
287
+
288
+ ```vue
289
+ <button v-palette="{ id: 'refresh', label: 'Refresh servers', action: 'click' }"
290
+ @click="refresh">Refresh</button>
291
+ ```
292
+
293
+ The directive defaults to focusing its target. `afterClose` on a manual command
294
+ runs after the palette releases its focus trap, suitable for focusing a field
295
+ or a lazily revealed section. Page hints can prepare that section in `onSelect`
296
+ and locate its existing `v-hint` target in `afterClose`.
297
+
298
+ Theme uses the same `ThemeStudio` as `LpThemeSwitcher` / `LpThemeStudio`; these
299
+ components also register it when inside a scope. The palette editor keeps a
300
+ local draft, shows it through `LpThemeProvider`, and commits only on Apply.
301
+ Revert or closing the editor discards pending edits. `usePaletteTheme(studio)`
302
+ registers a studio explicitly from a descendant component.
303
+
304
+ `modes` accepts providers under `people`, `channels`, `roles`, `commands`, `help`.
305
+ Their sigils are `@`, `#`, `&`, `>`, `?`. People/channels/roles appear when supplied;
306
+ commands and keyboard help are provided by default. Each provider is the same
307
+ static array or abortable `CommandFetcher` used by `children`.
308
+
309
+ Pin the highlighted leaf with the star button or Alt+P in the search box.
310
+ Pins have their own group and storage (`pinnedKey`, defaulting to
311
+ `${recentKey}:pinned`) and do not expire from recent history. Bind `pinned` /
312
+ `update:pinned` for external storage. Persistence uses the kit's configured
313
+ storage adapter.
314
+
315
+ A `prompt` command accepts `{ placeholder, initial, validate, submit }`.
316
+ Validation may be asynchronous; errors keep the input open, and changing the
317
+ value or leaving the step invalidates an outstanding validation. Async actions
318
+ are awaited, duplicate execution is blocked, and failures remain visible.
319
+ `undo(result)` adds an Undo toast only after successful execution; the application
320
+ supplies the actual inverse operation. Preview actions have visible buttons as
321
+ well as the Tab menu, including an Actions button on phones.
322
+
323
+ `LpPaletteFacts` and `LpPaletteStats` accept `loading`. Known labels retain their
324
+ place, values become skeletons; empty item lists receive placeholder rows.
325
+ Try the complete example at `/component/context-palette` in the preview.
@@ -5,71 +5,78 @@
5
5
  * pane from its right edge as it grows. Animating the columns themselves made
6
6
  * every line of the list and the pane re-wrap on every frame.
7
7
  */
8
- .lp-cmd-dialog[data-v-9c48e89a] {
8
+ .lp-cmd-dialog[data-v-e9366efe] {
9
9
  --lp-cmd-list: min(92vw, 40rem);
10
10
  --lp-cmd-pane: max(0px, min(26rem, 96vw - var(--lp-cmd-list)));
11
11
  width: var(--lp-cmd-list);
12
12
  }
13
- .lp-cmd-split[data-v-9c48e89a] {
13
+ .lp-cmd-split[data-v-e9366efe] {
14
14
  transition:
15
15
  width 300ms var(--ease-emphasized, ease),
16
16
  min-height 300ms var(--ease-emphasized, ease);
17
17
  }
18
18
  @media (min-width: 768px) {
19
- .lp-cmd-split .lp-cmd-list[data-v-9c48e89a] {
19
+ .lp-cmd-split .lp-cmd-list[data-v-e9366efe] {
20
20
  flex: 0 0 auto;
21
21
  /* the dialog's 1px border on each side */
22
22
  width: calc(var(--lp-cmd-list) - 2px);
23
23
  }
24
- .lp-cmd-dialog[data-pane="open"][data-v-9c48e89a] {
24
+ .lp-cmd-dialog[data-pane="open"][data-v-e9366efe] {
25
25
  width: calc(var(--lp-cmd-list) + var(--lp-cmd-pane));
26
26
  min-height: min(76vh, 36rem);
27
27
  }
28
28
  }
29
- .lp-cmd-pane[data-v-9c48e89a] {
29
+ .lp-cmd-pane[data-v-e9366efe] {
30
30
  width: var(--lp-cmd-pane);
31
31
  }
32
+ .lp-cmd-dialog[data-editing] .lp-cmd-pane[data-v-e9366efe] {
33
+ width: 100%;
34
+ }
35
+ .lp-cmd-dialog[data-editing][data-v-e9366efe] {
36
+ width: var(--lp-cmd-list);
37
+ min-height: 0;
38
+ }
32
39
  /*
33
40
  * The pane rides in from the right edge while the dialog opens up to it, and
34
41
  * leaves the same way, for as long as the dialog takes to close over it.
35
42
  */
36
- .lp-cmd-pane-enter-active[data-v-9c48e89a],
37
- .lp-cmd-pane-leave-active[data-v-9c48e89a] {
43
+ .lp-cmd-pane-enter-active[data-v-e9366efe],
44
+ .lp-cmd-pane-leave-active[data-v-e9366efe] {
38
45
  transition:
39
46
  transform 300ms var(--ease-emphasized, ease),
40
47
  opacity 300ms ease;
41
48
  }
42
- .lp-cmd-pane-enter-from[data-v-9c48e89a],
43
- .lp-cmd-pane-leave-to[data-v-9c48e89a] {
49
+ .lp-cmd-pane-enter-from[data-v-e9366efe],
50
+ .lp-cmd-pane-leave-to[data-v-e9366efe] {
44
51
  opacity: 0;
45
52
  transform: translateX(40%);
46
53
  }
47
- .lp-cmd-para[data-v-9c48e89a] {
54
+ .lp-cmd-para[data-v-e9366efe] {
48
55
  --rise: 4px;
49
56
  animation: rise-in 260ms ease-out both;
50
57
  }
51
58
  @media (prefers-reduced-motion: reduce) {
52
- .lp-cmd-split[data-v-9c48e89a],
53
- .lp-cmd-pane-enter-active[data-v-9c48e89a],
54
- .lp-cmd-pane-leave-active[data-v-9c48e89a] {
59
+ .lp-cmd-split[data-v-e9366efe],
60
+ .lp-cmd-pane-enter-active[data-v-e9366efe],
61
+ .lp-cmd-pane-leave-active[data-v-e9366efe] {
55
62
  transition: none;
56
63
  }
57
- .lp-cmd-para[data-v-9c48e89a] {
64
+ .lp-cmd-para[data-v-e9366efe] {
58
65
  animation: none;
59
66
  }
60
67
  }
61
- .lp-cmd-excerpt[data-v-9c48e89a] {
68
+ .lp-cmd-excerpt[data-v-e9366efe] {
62
69
  display: -webkit-box;
63
70
  -webkit-box-orient: vertical;
64
71
  overflow: hidden;
65
72
  }
66
73
  /* Each result eases in; honours reduced motion. */
67
- .lp-cmd-item[data-v-9c48e89a] {
74
+ .lp-cmd-item[data-v-e9366efe] {
68
75
  --rise: 3px;
69
76
  animation: rise-in 140ms ease-out both;
70
77
  }
71
78
  @media (prefers-reduced-motion: reduce) {
72
- .lp-cmd-item[data-v-9c48e89a] {
79
+ .lp-cmd-item[data-v-e9366efe] {
73
80
  animation: none;
74
81
  }
75
82
  }
@@ -1,8 +1,8 @@
1
1
 
2
- .lp-palette-facts[data-v-f1ab3788] {
2
+ .lp-palette-facts[data-v-949a8890] {
3
3
  min-width: 0;
4
4
  }
5
- .lp-palette-facts__title[data-v-f1ab3788] {
5
+ .lp-palette-facts__title[data-v-949a8890] {
6
6
  margin: 0 0 0.4rem;
7
7
  color: var(--color-muted);
8
8
  font-size: 11px;
@@ -10,14 +10,14 @@
10
10
  letter-spacing: 0.08em;
11
11
  text-transform: uppercase;
12
12
  }
13
- .lp-palette-facts__list[data-v-f1ab3788] {
13
+ .lp-palette-facts__list[data-v-949a8890] {
14
14
  display: grid;
15
15
  gap: 2px;
16
16
  margin: 0;
17
17
  padding: 0;
18
18
  list-style: none;
19
19
  }
20
- .lp-palette-facts__row[data-v-f1ab3788] {
20
+ .lp-palette-facts__row[data-v-949a8890] {
21
21
  display: flex;
22
22
  min-width: 0;
23
23
  align-items: center;
@@ -29,26 +29,26 @@
29
29
  font-size: 0.8125rem;
30
30
  transition: background-color var(--duration-fast, 150ms) ease;
31
31
  }
32
- .lp-palette-facts--plain .lp-palette-facts__row[data-v-f1ab3788] {
32
+ .lp-palette-facts--plain .lp-palette-facts__row[data-v-949a8890] {
33
33
  padding: 0.15rem 0;
34
34
  background: transparent;
35
35
  }
36
- .lp-palette-facts__row.is-current[data-v-f1ab3788] {
36
+ .lp-palette-facts__row.is-current[data-v-949a8890] {
37
37
  background: var(--color-brand-soft);
38
38
  }
39
- .lp-palette-facts--plain .lp-palette-facts__row.is-current[data-v-f1ab3788] {
39
+ .lp-palette-facts--plain .lp-palette-facts__row.is-current[data-v-949a8890] {
40
40
  background: transparent;
41
41
  color: var(--color-brand);
42
42
  }
43
- .lp-palette-facts__icon[data-v-f1ab3788] {
43
+ .lp-palette-facts__icon[data-v-949a8890] {
44
44
  flex-shrink: 0;
45
45
  color: var(--color-muted);
46
46
  transition: color var(--duration-fast, 150ms) ease;
47
47
  }
48
- .is-current .lp-palette-facts__icon[data-v-f1ab3788] {
48
+ .is-current .lp-palette-facts__icon[data-v-949a8890] {
49
49
  color: var(--color-brand);
50
50
  }
51
- .lp-palette-facts__dot[data-v-f1ab3788] {
51
+ .lp-palette-facts__dot[data-v-949a8890] {
52
52
  width: 0.55rem;
53
53
  height: 0.55rem;
54
54
  flex-shrink: 0;
@@ -56,24 +56,24 @@
56
56
  border-radius: 9999px;
57
57
  box-shadow: 0 0 0 1px var(--color-line);
58
58
  }
59
- .lp-palette-facts__label[data-v-f1ab3788] {
59
+ .lp-palette-facts__label[data-v-949a8890] {
60
60
  display: flex;
61
61
  min-width: 0;
62
62
  flex: 1;
63
63
  flex-direction: column;
64
64
  }
65
- .lp-palette-facts__name[data-v-f1ab3788] {
65
+ .lp-palette-facts__name[data-v-949a8890] {
66
66
  overflow: hidden;
67
67
  text-overflow: ellipsis;
68
68
  white-space: nowrap;
69
69
  }
70
- .lp-palette-facts__hint[data-v-f1ab3788] {
70
+ .lp-palette-facts__hint[data-v-949a8890] {
71
71
  margin-top: 1px;
72
72
  color: var(--color-muted);
73
73
  font-size: 0.75rem;
74
74
  line-height: 1.45;
75
75
  }
76
- .lp-palette-facts__value[data-v-f1ab3788] {
76
+ .lp-palette-facts__value[data-v-949a8890] {
77
77
  display: inline-flex;
78
78
  min-width: 0;
79
79
  max-width: 55%;
@@ -85,9 +85,9 @@
85
85
  font-variant-numeric: tabular-nums;
86
86
  white-space: nowrap;
87
87
  }
88
- .lp-palette-facts__value[data-v-f1ab3788] .lp-roll {
88
+ .lp-palette-facts__value[data-v-949a8890] .lp-roll {
89
89
  max-width: 100%;
90
90
  }
91
- .lp-palette-facts__value--mono[data-v-f1ab3788] {
91
+ .lp-palette-facts__value--mono[data-v-949a8890] {
92
92
  font-family: var(--font-mono, ui-monospace, monospace);
93
93
  }
@@ -1,24 +1,24 @@
1
1
 
2
- .lp-palette-stats[data-v-dc30a10e] {
2
+ .lp-palette-stats[data-v-3d47406a] {
3
3
  display: grid;
4
4
  gap: 0.5rem;
5
5
  margin: 0;
6
6
  }
7
- .lp-palette-stats__tile[data-v-dc30a10e] {
7
+ .lp-palette-stats__tile[data-v-3d47406a] {
8
8
  min-width: 0;
9
9
  padding: 0.5rem 0.65rem;
10
10
  border: 1px solid var(--color-line);
11
11
  border-radius: var(--radius-control);
12
12
  background: color-mix(in srgb, var(--color-surface-soft) 55%, transparent);
13
13
  }
14
- dt[data-v-dc30a10e] {
14
+ dt[data-v-3d47406a] {
15
15
  overflow: hidden;
16
16
  color: var(--color-muted);
17
17
  font-size: 11px;
18
18
  text-overflow: ellipsis;
19
19
  white-space: nowrap;
20
20
  }
21
- dd[data-v-dc30a10e] {
21
+ dd[data-v-3d47406a] {
22
22
  display: flex;
23
23
  min-width: 0;
24
24
  margin: 2px 0 0;
@@ -28,6 +28,6 @@ dd[data-v-dc30a10e] {
28
28
  font-variant-numeric: tabular-nums;
29
29
  line-height: 1.3;
30
30
  }
31
- dd[data-v-dc30a10e] .lp-roll {
31
+ dd[data-v-3d47406a] .lp-roll {
32
32
  max-width: 100%;
33
33
  }
@@ -11,17 +11,17 @@
11
11
  * fade before closing the gap and the whole list lurches at the end instead of
12
12
  * gliding.
13
13
  */
14
- .lp-row-enter-active[data-v-18479205],
15
- .lp-row-leave-active[data-v-18479205] {
14
+ .lp-row-enter-active[data-v-c1911001],
15
+ .lp-row-leave-active[data-v-c1911001] {
16
16
  transition:
17
17
  opacity var(--duration-fast) var(--ease-emphasized),
18
18
  transform var(--duration-fast) var(--ease-emphasized);
19
19
  }
20
- .lp-row-move[data-v-18479205] {
20
+ .lp-row-move[data-v-c1911001] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-18479205],
24
- .lp-row-leave-to[data-v-18479205] {
23
+ .lp-row-enter-from[data-v-c1911001],
24
+ .lp-row-leave-to[data-v-c1911001] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
@@ -35,7 +35,7 @@
35
35
  * drops out of the table layout entirely. Nothing sits below this row to be
36
36
  * dragged around, so simply not animating its exit costs nothing.
37
37
  */
38
- .lp-row-empty.lp-row-leave-active[data-v-18479205] {
38
+ .lp-row-empty.lp-row-leave-active[data-v-c1911001] {
39
39
  display: none;
40
40
  }
41
41
 
@@ -54,7 +54,7 @@
54
54
  * once anything is selected. An earlier version collapsed the column to nothing
55
55
  * and floated the hover box over the first cell, where it sat on the text.
56
56
  */
57
- .lp-tick[data-v-18479205] {
57
+ .lp-tick[data-v-c1911001] {
58
58
  display: flex;
59
59
  align-items: center;
60
60
  max-width: 0;
@@ -66,17 +66,17 @@
66
66
  padding var(--duration-medium) var(--ease-emphasized),
67
67
  opacity var(--duration-fast) ease;
68
68
  }
69
- .lp-tick-open[data-v-18479205] {
69
+ .lp-tick-open[data-v-c1911001] {
70
70
  max-width: 3.25rem;
71
71
  padding-inline: 1rem;
72
72
  opacity: 1;
73
73
  }
74
- .lp-tick-hidden[data-v-18479205],
75
- .lp-tick-cue[data-v-18479205] {
74
+ .lp-tick-hidden[data-v-c1911001],
75
+ .lp-tick-cue[data-v-c1911001] {
76
76
  opacity: 0;
77
77
  }
78
- tr:hover .lp-tick-cue[data-v-18479205],
79
- .lp-tick-cue[data-v-18479205]:focus-within {
78
+ tr:hover .lp-tick-cue[data-v-c1911001],
79
+ .lp-tick-cue[data-v-c1911001]:focus-within {
80
80
  opacity: 1;
81
81
  }
82
82
 
@@ -84,24 +84,24 @@ tr:hover .lp-tick-cue[data-v-18479205],
84
84
  turned down the rows change without animating rather than not changing. */
85
85
  /* Only where there is a hover to reveal it; a finger long-presses instead. */
86
86
  @media (hover: none) {
87
- tr:hover .lp-tick-cue[data-v-18479205] {
87
+ tr:hover .lp-tick-cue[data-v-c1911001] {
88
88
  opacity: 0;
89
89
  }
90
90
 
91
91
  /* Nor is there anything for the column's width to hold until then: on a
92
92
  touch screen it stays closed until a long press starts selecting, and
93
93
  eases open like the rest of the column. */
94
- .lp-tick-hidden[data-v-18479205],
95
- .lp-tick-cue[data-v-18479205] {
94
+ .lp-tick-hidden[data-v-c1911001],
95
+ .lp-tick-cue[data-v-c1911001] {
96
96
  max-width: 0;
97
97
  padding-inline: 0;
98
98
  }
99
99
  }
100
100
  @media (prefers-reduced-motion: reduce) {
101
- .lp-row-enter-active[data-v-18479205],
102
- .lp-row-leave-active[data-v-18479205],
103
- .lp-row-move[data-v-18479205],
104
- .lp-tick[data-v-18479205] {
101
+ .lp-row-enter-active[data-v-c1911001],
102
+ .lp-row-leave-active[data-v-c1911001],
103
+ .lp-row-move[data-v-c1911001],
104
+ .lp-tick[data-v-c1911001] {
105
105
  transition: none;
106
106
  }
107
107
  }
@@ -0,0 +1,18 @@
1
+
2
+ .lp-tab-badge-enter-active[data-v-2c920d5a],
3
+ .lp-tab-badge-leave-active[data-v-2c920d5a] {
4
+ transition:
5
+ opacity var(--duration-fast) var(--ease-emphasized),
6
+ transform var(--duration-fast) var(--ease-emphasized);
7
+ }
8
+ .lp-tab-badge-enter-from[data-v-2c920d5a],
9
+ .lp-tab-badge-leave-to[data-v-2c920d5a] {
10
+ opacity: 0;
11
+ transform: scale(0.6);
12
+ }
13
+ @media (prefers-reduced-motion: reduce) {
14
+ .lp-tab-badge-enter-active[data-v-2c920d5a],
15
+ .lp-tab-badge-leave-active[data-v-2c920d5a] {
16
+ transition: none;
17
+ }
18
+ }
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, resolveDynamicComponent, createCommentVNode, withCtx, normalizeClass, createElementVNode, createTextVNode, toDisplayString, createVNode, unref, withModifiers } from "vue";
2
2
  import { DropdownMenuPortal, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuSub, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuItem, ContextMenuPortal, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuSub, ContextMenuSeparator, ContextMenuCheckboxItem, ContextMenuItem } from "reka-ui";
3
3
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
4
- import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
4
+ import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
5
5
  import MenuShortcut from "../components/MenuShortcut.vue.js";
6
6
  const _hoisted_1 = { class: "flex items-center gap-2" };
7
7
  const _hoisted_2 = { class: "flex items-center gap-2" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, useModel, ref, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode, toDisplayString, normalizeClass, mergeModels } from "vue";
2
- import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
3
- import { _ as _sfc_main$1 } from "./LpInput-CDuwODJG.js";
2
+ import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
3
+ import { _ as _sfc_main$1 } from "./LpInput-2H-5ILOB.js";
4
4
  const _hoisted_1 = { class: "flex w-full flex-col gap-1.5" };
5
5
  const _hoisted_2 = { class: "flex items-center gap-2" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, useAttrs, ref, openBlock, createBlock, resolveDynamicComponent, normalizeStyle, unref, normalizeClass, withCtx, renderSlot } from "vue";
2
- import { _ as _sfc_main$1 } from "./LpFormField-BWwgm1E4.js";
2
+ import { _ as _sfc_main$1 } from "./LpFormField-gRASfyj2.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{ inheritAttrs: false },
5
5
  __name: "FieldWrapper",
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createVNode, withCtx, renderSlot, normalizeProps, guardReactiveProps } from "vue";
2
- import { _ as _sfc_main$1 } from "./LayoutNode-DJVhkSGk.js";
2
+ import { _ as _sfc_main$1 } from "./LayoutNode-CTTTLMDM.js";
3
3
  import { resizeAt, setActiveTab, reorderTab, removeBlock, moveLeaf } from "../layout/tree.js";
4
4
  import { layoutController } from "../layout/useLayout.js";
5
5
  const _hoisted_1 = { class: "flex min-h-0 min-w-0 flex-1" };
@@ -2,7 +2,7 @@ import { defineComponent, ref, computed, onBeforeUnmount, resolveComponent, open
2
2
  import { Motion } from "motion-v";
3
3
  import { usePillTransition } from "../composables/usePillTransition.js";
4
4
  import { blockTitle } from "../layout/registry.js";
5
- import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
5
+ import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
6
6
  const _hoisted_1 = ["onPointerdown"];
7
7
  const _hoisted_2 = {
8
8
  key: 1,
@@ -2,8 +2,8 @@ import { defineComponent, useSlots, computed, ref, watch, openBlock, createBlock
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useBarStack } from "../components/actionBar.js";
4
4
  import { CLOSE_ICON } from "../components/dropdown.js";
5
- import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
6
- import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
5
+ import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
6
+ import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
7
7
  import { _ as _sfc_main$3 } from "./LpLoader-DjJEX8hL.js";
8
8
  import { usePortalTarget } from "../composables/useView.js";
9
9
  import { useResizeObserver } from "../composables/useResizeObserver.js";
@@ -2,13 +2,13 @@ import { defineComponent, defineAsyncComponent, computed, watch, ref, onMounted,
2
2
  import { useAsyncTask } from "../composables/useAsyncTask.js";
3
3
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress } from "../components/address.js";
4
4
  import { flagEmoji, loadCountries } from "../components/countries.js";
5
- import { _ as _sfc_main$2 } from "./LpAutocomplete-D92niDHE.js";
6
- import { _ as _sfc_main$3 } from "./LpButton-CVxBfGjd.js";
7
- import { _ as _sfc_main$1 } from "./LpFormField-BWwgm1E4.js";
8
- import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
9
- import { _ as _sfc_main$5 } from "./LpInput-CDuwODJG.js";
10
- import { _ as _sfc_main$7 } from "./LpModal-eBMt2Fqn.js";
11
- import { _ as _sfc_main$6 } from "./LpSelect-C_8cJtj6.js";
5
+ import { _ as _sfc_main$2 } from "./LpAutocomplete-DDqe2M5g.js";
6
+ import { _ as _sfc_main$3 } from "./LpButton-BQDAFXBd.js";
7
+ import { _ as _sfc_main$1 } from "./LpFormField-gRASfyj2.js";
8
+ import { _ as _sfc_main$4 } from "./LpIcon-DkP-9mzK.js";
9
+ import { _ as _sfc_main$5 } from "./LpInput-2H-5ILOB.js";
10
+ import { _ as _sfc_main$7 } from "./LpModal-CpH0bNo7.js";
11
+ import { _ as _sfc_main$6 } from "./LpSelect-DYX2-u5A.js";
12
12
  import { useFieldControl } from "../composables/useField.js";
13
13
  import { useLabels } from "../composables/useLpConfig.js";
14
14
  import { useMergedAttrs } from "../composables/useMergedClass.js";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, watch, computed, useSlots, openBlock, createElementBlock, mergeProps, unref, createElementVNode, createVNode, Transition, withCtx, createBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
4
+ import { _ as _sfc_main$2 } from "./LpIcon-DkP-9mzK.js";
5
5
  import { _ as _sfc_main$1 } from "./LpLoader-DjJEX8hL.js";
6
6
  import { _ as _sfc_main$3 } from "./LpSwap-DzE6M3Mg.js";
7
7
  import { slotText } from "../components/slotText.js";
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, computed, useModel, ref, useId, watch, openBlock, createElementBlock, mergeProps, unref, createElementVNode, withModifiers, toDisplayString, createVNode, createSlots, withCtx, renderSlot, normalizeProps, guardReactiveProps, normalizeClass, createBlock, mergeModels } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
- import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
4
- import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
3
+ import { _ as _sfc_main$2 } from "./LpButton-BQDAFXBd.js";
4
+ import { _ as _sfc_main$3 } from "./LpIcon-DkP-9mzK.js";
5
5
  import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
- import { _ as _sfc_main$1 } from "./LpSidebar-CZRXtvem.js";
7
+ import { _ as _sfc_main$1 } from "./LpSidebar-D44peKq2.js";
8
8
  import { useMergedAttrs, mergeClass } from "../composables/useMergedClass.js";
9
9
  const _hoisted_1 = ["href"];
10
10
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
@@ -1,11 +1,12 @@
1
1
  import { defineComponent, computed, useAttrs, ref, watch, useId, openBlock, createBlock, unref, normalizeStyle, normalizeClass, withCtx, createVNode, createElementBlock, createCommentVNode, createElementVNode, mergeProps, Transition, toDisplayString, withModifiers, createTextVNode, Fragment, renderList, nextTick } from "vue";
2
+ import { usePaletteControl } from "../composables/usePaletteCommands.js";
2
3
  import { ComboboxRoot, ComboboxAnchor, ComboboxInput, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxItem } from "reka-ui";
3
4
  import { useFieldControl } from "../composables/useField.js";
4
5
  import { useInputFilter } from "../composables/useInputFilter.js";
5
6
  import { useLabels } from "../composables/useLpConfig.js";
6
7
  import { CLOSE_ICON, POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
7
- import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
8
- import { _ as _sfc_main$2 } from "./OptionContent-CmYUUeWj.js";
8
+ import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
9
+ import { _ as _sfc_main$2 } from "./OptionContent-DPzNsybd.js";
9
10
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
10
11
  const _hoisted_1 = ["src"];
11
12
  const _hoisted_2 = { class: "relative flex min-w-0 flex-1 self-stretch" };
@@ -25,6 +26,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
25
26
  ...__default__,
26
27
  __name: "LpAutocomplete",
27
28
  props: {
29
+ palette: { type: [Boolean, Object], default: void 0 },
28
30
  modelValue: {},
29
31
  options: {},
30
32
  placeholder: {},
@@ -159,6 +161,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
159
161
  }
160
162
  const portalTo = usePortalTarget();
161
163
  const guardOutside = useOutsideGuard();
164
+ usePaletteControl({ disabled: () => field.value.disabled, invalid: () => field.value.invalid });
162
165
  return (_ctx, _cache) => {
163
166
  return openBlock(), createBlock(unref(ComboboxRoot), {
164
167
  open: open.value,
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, onMounted, openBlock, createBlock, unre
2
2
  import { AvatarRoot, AvatarImage, AvatarFallback } from "reka-ui";
3
3
  import { tv } from "tailwind-variants";
4
4
  import { MenuWhen } from "../components/menuWhen.js";
5
- import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
5
+ import { _ as _sfc_main$2 } from "./LpIcon-DkP-9mzK.js";
6
6
  import { _ as _sfc_main$1 } from "./LpIdenticon-BzdC_qz9.js";
7
7
  import { useMergedAttrs } from "../composables/useMergedClass.js";
8
8
  const __default__ = { inheritAttrs: false };
@@ -3,7 +3,7 @@ import { tv } from "tailwind-variants";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { useMergedClass } from "../composables/useMergedClass.js";
5
5
  import { BADGE_REMOVE } from "../components/badge.js";
6
- import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
6
+ import { _ as _sfc_main$3 } from "./LpIcon-DkP-9mzK.js";
7
7
  import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
8
8
  import { _ as _sfc_main$1 } from "./LpShift-DXNsauQZ.js";
9
9
  import { slotText } from "../components/slotText.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createElementBlock, mergeProps, unref, createVNode, withCtx, TransitionGroup, normalizeClass, Fragment, renderList, createBlock, createCommentVNode, resolveDynamicComponent } from "vue";
2
- import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
2
+ import { _ as _sfc_main$2 } from "./LpIcon-DkP-9mzK.js";
3
3
  import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
4
4
  import { _ as _sfc_main$1 } from "./LpShift-DXNsauQZ.js";
5
5
  import { useLabels, useLinkComponent } from "../composables/useLpConfig.js";
@@ -1,4 +1,5 @@
1
1
  import { defineComponent, useAttrs, getCurrentInstance, ref, computed, onMounted, onUpdated, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, renderSlot, createElementBlock, normalizeClass, createVNode, createCommentVNode } from "vue";
2
+ import { usePaletteAction } from "../composables/usePaletteCommands.js";
2
3
  import { tv } from "tailwind-variants";
3
4
  import { HINT_SIGNALS, noteHotkeyTarget } from "../composables/useHintSystem.js";
4
5
  import { hints } from "../composables/useHints.js";
@@ -13,6 +14,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13
14
  ...__default__,
14
15
  __name: "LpButton",
15
16
  props: {
17
+ palette: { type: [Boolean, Object], default: void 0 },
16
18
  variant: {},
17
19
  size: {},
18
20
  block: { type: Boolean },
@@ -205,6 +207,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
205
207
  loading: busy.value
206
208
  })
207
209
  );
210
+ usePaletteAction({ label: () => typeof attrs["aria-label"] === "string" ? attrs["aria-label"] : void 0, element: () => rootEl(), disabled: () => props.disabled || busy.value });
208
211
  return (_ctx, _cache) => {
209
212
  return openBlock(), createBlock(resolveDynamicComponent(resolved.value.is), mergeProps({
210
213
  ref_key: "root",
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, shallowRef, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementVNode, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString } from "vue";
2
2
  import { today, getLocalTimeZone, parseDate } from "@internationalized/date";
3
3
  import { CalendarRoot, CalendarHeader, CalendarPrev, CalendarHeading, CalendarNext, CalendarGrid, CalendarGridHead, CalendarGridRow, CalendarHeadCell, CalendarGridBody, CalendarCell, CalendarCellTrigger } from "reka-ui";
4
- import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
4
+ import { _ as _sfc_main$1 } from "./LpIcon-DkP-9mzK.js";
5
5
  import { useLabels } from "../composables/useLpConfig.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { CALENDAR_LABELS, CALENDAR_NAV, CALENDAR_FRAME } from "../components/calendar.js";