@leavepulse/ui 0.43.3 → 0.44.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 (340) hide show
  1. package/README.md +75 -7
  2. package/dist/assets/{LpCommandPalette-DH7sPcKP.css → LpCommandPalette-DCP5g2ik.css} +21 -21
  3. package/dist/assets/{LpDropzone-BBoWvi-J.css → LpDropzone-i4BdMi1H.css} +12 -12
  4. package/dist/assets/{LpImageEditor-Ct7Y3aNu.css → LpImageEditor-CbMA82g8.css} +6 -6
  5. package/dist/assets/{LpShortcutsDialog-C6YoQ8_M.css → LpShortcutsDialog-ChUyU7oV.css} +7 -7
  6. package/dist/assets/{LpSkeleton-D7xU8IPV.css → LpSkeleton-H3Z5dEIk.css} +4 -1
  7. package/dist/assets/{LpTable-BgPLJOXa.css → LpTable-DDQNdf86.css} +9 -9
  8. package/dist/chunks/ContextMenuItems-CrfeNPWT.js +123 -0
  9. package/dist/chunks/{LayoutCanvas-Dd20boUG.js → LayoutCanvas-D-jPOAvg.js} +26 -9
  10. package/dist/chunks/{LayoutNode-DGpZA9LX.js → LayoutNode-D8Xy9N-o.js} +20 -8
  11. package/dist/chunks/{LpActionBar-BlvtGB2P.js → LpActionBar-BbwCF6l5.js} +24 -10
  12. package/dist/chunks/{LpAddressInput-B-Zvxsn7.js → LpAddressInput-BrOqkZqg.js} +53 -48
  13. package/dist/chunks/{LpAlert-BAYHDSS1.js → LpAlert-DkOIjsbq.js} +15 -8
  14. package/dist/chunks/{LpAppShell-BGQVIY-3.js → LpAppShell-BUKPcHco.js} +51 -24
  15. package/dist/chunks/{LpAutocomplete-DExlIZe_.js → LpAutocomplete-DxV3Y9h4.js} +50 -23
  16. package/dist/chunks/{LpAvatar-B3-xAOH3.js → LpAvatar-ClBbEYZN.js} +17 -8
  17. package/dist/chunks/LpBreadcrumbs-B8IJgFIc.js +95 -0
  18. package/dist/chunks/{LpButton-5VXXCjwF.js → LpButton-kqJBHIIb.js} +44 -14
  19. package/dist/chunks/{LpCard-BhI1N_vL.js → LpCard-CpRByR0q.js} +1 -1
  20. package/dist/chunks/{LpCheckbox-CVccKYaH.js → LpCheckbox-DpqchzH4.js} +7 -3
  21. package/dist/chunks/{LpCodeBlock-Bo0B4TFR.js → LpCodeBlock-DeHJPq7p.js} +48 -16
  22. package/dist/chunks/{LpColorPicker-BlXea7LM.js → LpColorPicker-Bhf1qxhB.js} +32 -9
  23. package/dist/chunks/{LpConfirmDialog-Q-bxff8z.js → LpConfirmDialog-CIUOSnWo.js} +58 -16
  24. package/dist/chunks/LpConfirmHost-CDm0Wtpv.js +49 -0
  25. package/dist/chunks/LpContextMenu-DQw5dGfG.js +68 -0
  26. package/dist/chunks/LpDatePicker-Drirx1AK.js +191 -0
  27. package/dist/chunks/{LpDrawer-BZ6k3hvo.js → LpDrawer-bScx-KMO.js} +63 -26
  28. package/dist/chunks/{LpFileTree-_5vFBgaK.js → LpFileTree-CSI_5SK2.js} +23 -8
  29. package/dist/chunks/{LpFileTreeNode-BdcIYKIE.js → LpFileTreeNode-B4MiSQX2.js} +2 -2
  30. package/dist/chunks/LpFormField-CIk5qosh.js +87 -0
  31. package/dist/chunks/{LpInput-9EXWUM9B.js → LpInput-C0e8y8_d.js} +26 -11
  32. package/dist/chunks/{LpLightbox-2sYVMY-S.js → LpLightbox-Mr0W_6HK.js} +147 -60
  33. package/dist/chunks/{LpLink-DCND-zyu.js → LpLink-Krkjhe_y.js} +15 -6
  34. package/dist/chunks/{LpLogViewer-CaRy5MeS.js → LpLogViewer-YBOaFnc_.js} +68 -34
  35. package/dist/chunks/{LpMapPicker-ul4oYno6.js → LpMapPicker-NUzS9e37.js} +38 -13
  36. package/dist/chunks/{LpMediaGallery-FF-NquIo.js → LpMediaGallery-DfJmMW0I.js} +6 -3
  37. package/dist/chunks/{LpModal-Bt0pQCI_.js → LpModal-DPwGKBPv.js} +49 -26
  38. package/dist/chunks/{LpModalNav-YaifHrXC.js → LpModalNav-DPg5H9f3.js} +9 -6
  39. package/dist/chunks/{LpNotificationBell-DyGGsMAM.js → LpNotificationBell-t5yn-siX.js} +58 -24
  40. package/dist/chunks/{LpNumberField-CWuX08iX.js → LpNumberField-DWnQKktS.js} +20 -7
  41. package/dist/chunks/{LpNumberFlow-amWYaeuA.js → LpNumberFlow-z4WPZcZu.js} +22 -12
  42. package/dist/chunks/{LpOtpInput-y2v-pmiN.js → LpOtpInput-CziPF3Oq.js} +37 -8
  43. package/dist/chunks/{LpPagination-5FxjmmB5.js → LpPagination-DFngX7Xo.js} +30 -19
  44. package/dist/chunks/{LpPasswordInput--sjYCkLS.js → LpPasswordInput-CWVDuBJ5.js} +10 -7
  45. package/dist/chunks/{LpPhoneInput-BDSKVl_z.js → LpPhoneInput-CD-ZTeSd.js} +57 -33
  46. package/dist/chunks/{LpPie-D6OnzwlJ.js → LpPie-BLco31Nx.js} +78 -21
  47. package/dist/chunks/{LpPopover-8268UmlC.js → LpPopover-p_e_shN3.js} +4 -2
  48. package/dist/chunks/{LpProgress-Btq5W4Ut.js → LpProgress-CBU1iI69.js} +5 -4
  49. package/dist/chunks/{LpRadioGroup-xPIuVDO_.js → LpRadioGroup-DmEW0l78.js} +9 -2
  50. package/dist/chunks/{LpSegmented-fV0Sk92p.js → LpSegmented-Dejd7cIx.js} +7 -3
  51. package/dist/chunks/{LpSelect-ANIVtrpM.js → LpSelect-DrRD9I7L.js} +40 -18
  52. package/dist/chunks/{LpSidebar-ClBUwoEz.js → LpSidebar-BgwUNWpJ.js} +30 -22
  53. package/dist/chunks/{LpSidebarNav-llOcs_Fn.js → LpSidebarNav-Bqxz8aWT.js} +14 -9
  54. package/dist/chunks/{LpSkeleton-CTI-vBgW.js → LpSkeleton-BB6XIV-w.js} +1 -1
  55. package/dist/chunks/{LpSlider-BwNIBkAK.js → LpSlider-Cuzmrd7p.js} +7 -2
  56. package/dist/chunks/{LpSparkline-C6xQ2dwv.js → LpSparkline-CB80N8SJ.js} +11 -4
  57. package/dist/chunks/{LpStat-CQaW8R--.js → LpStat-dXtyrdX9.js} +1 -1
  58. package/dist/chunks/{LpSwitch-Blizvqyt.js → LpSwitch-B1aLKulj.js} +40 -26
  59. package/dist/chunks/{LpTableOfContents-CjvxPMpU.js → LpTableOfContents-BUcAfGPQ.js} +36 -41
  60. package/dist/chunks/{LpTabs-Cefe_lys.js → LpTabs-_qMVaZJ6.js} +19 -5
  61. package/dist/chunks/LpTextarea-yP8hGedR.js +77 -0
  62. package/dist/chunks/LpThemeProvider-Wjm7Tuit.js +35 -0
  63. package/dist/chunks/LpThemeSwitcher-CKLc10KZ.js +169 -0
  64. package/dist/chunks/{LpTilt-DuyKbpkA.js → LpTilt-B7KHX1zH.js} +2 -2
  65. package/dist/chunks/{LpTimeField-K6nAGboX.js → LpTimeField-C5HRgS5H.js} +13 -7
  66. package/dist/chunks/{LpToaster-gDB1EaU3.js → LpToaster--oT6lfhL.js} +57 -28
  67. package/dist/chunks/{LpTooltip-hCLPAqMG.js → LpTooltip-CBdzeKNf.js} +13 -6
  68. package/dist/chunks/LpTooltipProvider-CftjV7Xc.js +25 -0
  69. package/dist/chunks/{LpTopologyCanvas-Cm1L39uL.js → LpTopologyCanvas-DocsLal3.js} +6 -1
  70. package/dist/chunks/{LpUptimeBar-DvAMno0S.js → LpUptimeBar-DLtxOMRy.js} +43 -14
  71. package/dist/chunks/{LpThemeSwitcher-Cue-myST.js → useTheme-C8JHUlPM.js} +173 -215
  72. package/dist/component-names.d.ts +1 -1
  73. package/dist/components/ContextMenuItems.vue.d.ts +8 -0
  74. package/dist/components/ContextMenuItems.vue.js +4 -0
  75. package/dist/components/LayoutCanvas.vue.js +1 -1
  76. package/dist/components/LayoutNode.vue.d.ts +4 -0
  77. package/dist/components/LayoutNode.vue.js +1 -1
  78. package/dist/components/LpActionBar.vue.d.ts +3 -0
  79. package/dist/components/LpActionBar.vue.js +1 -1
  80. package/dist/components/LpAddressInput.vue.d.ts +1 -1
  81. package/dist/components/LpAddressInput.vue.js +1 -1
  82. package/dist/components/LpAlert.vue.d.ts +9 -0
  83. package/dist/components/LpAlert.vue.js +1 -1
  84. package/dist/components/LpAppShell.vue.d.ts +10 -0
  85. package/dist/components/LpAppShell.vue.js +1 -1
  86. package/dist/components/LpAutocomplete.vue.d.ts +31 -6
  87. package/dist/components/LpAutocomplete.vue.js +1 -1
  88. package/dist/components/LpAvatar.vue.d.ts +3 -3
  89. package/dist/components/LpAvatar.vue.js +1 -1
  90. package/dist/components/LpBadge.vue.d.ts +2 -2
  91. package/dist/components/LpBreadcrumbs.vue.d.ts +13 -9
  92. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  93. package/dist/components/LpButton.vue.d.ts +35 -98
  94. package/dist/components/LpButton.vue.js +1 -1
  95. package/dist/components/LpCard.vue.js +1 -1
  96. package/dist/components/LpChart.vue.d.ts +31 -2
  97. package/dist/components/LpChart.vue.js +317 -95
  98. package/dist/components/LpCheckbox.vue.js +1 -1
  99. package/dist/components/LpCodeBlock.vue.d.ts +2 -0
  100. package/dist/components/LpCodeBlock.vue.js +1 -1
  101. package/dist/components/LpColorPicker.vue.js +1 -1
  102. package/dist/components/LpCommandPalette.vue.d.ts +8 -10
  103. package/dist/components/LpCommandPalette.vue.js +88 -78
  104. package/dist/components/LpConfirmDialog.vue.d.ts +15 -3
  105. package/dist/components/LpConfirmDialog.vue.js +1 -1
  106. package/dist/components/LpConfirmHost.vue.d.ts +9 -0
  107. package/dist/components/LpConfirmHost.vue.js +4 -0
  108. package/dist/components/LpContextMenu.vue.d.ts +3 -5
  109. package/dist/components/LpContextMenu.vue.js +1 -1
  110. package/dist/components/LpDatePicker.vue.d.ts +24 -6
  111. package/dist/components/LpDatePicker.vue.js +1 -1
  112. package/dist/components/LpDrawer.vue.d.ts +10 -0
  113. package/dist/components/LpDrawer.vue.js +1 -1
  114. package/dist/components/LpDropzone.vue.js +22 -6
  115. package/dist/components/LpFileTree.vue.d.ts +11 -2
  116. package/dist/components/LpFileTree.vue.js +1 -1
  117. package/dist/components/LpFileTreeNode.vue.js +1 -1
  118. package/dist/components/LpFormField.vue.d.ts +9 -0
  119. package/dist/components/LpFormField.vue.js +1 -1
  120. package/dist/components/LpImageEditor.vue.js +92 -57
  121. package/dist/components/LpInput.vue.d.ts +3 -3
  122. package/dist/components/LpInput.vue.js +1 -1
  123. package/dist/components/LpLightbox.vue.d.ts +17 -0
  124. package/dist/components/LpLightbox.vue.js +1 -1
  125. package/dist/components/LpLink.vue.d.ts +11 -11
  126. package/dist/components/LpLink.vue.js +1 -1
  127. package/dist/components/LpLogViewer.vue.d.ts +20 -2
  128. package/dist/components/LpLogViewer.vue.js +1 -1
  129. package/dist/components/LpMapPicker.vue.d.ts +4 -4
  130. package/dist/components/LpMapPicker.vue.js +1 -1
  131. package/dist/components/LpMediaGallery.vue.js +1 -1
  132. package/dist/components/LpModal.vue.d.ts +16 -6
  133. package/dist/components/LpModal.vue.js +1 -1
  134. package/dist/components/LpModalNav.vue.d.ts +0 -1
  135. package/dist/components/LpModalNav.vue.js +1 -1
  136. package/dist/components/LpNotificationBell.vue.d.ts +11 -2
  137. package/dist/components/LpNotificationBell.vue.js +1 -1
  138. package/dist/components/LpNumberField.vue.d.ts +2 -0
  139. package/dist/components/LpNumberField.vue.js +1 -1
  140. package/dist/components/LpNumberFlow.vue.js +1 -1
  141. package/dist/components/LpOtpInput.vue.js +1 -1
  142. package/dist/components/LpPagination.vue.d.ts +2 -0
  143. package/dist/components/LpPagination.vue.js +1 -1
  144. package/dist/components/LpPasswordInput.vue.js +1 -1
  145. package/dist/components/LpPhoneInput.vue.js +1 -1
  146. package/dist/components/LpPie.vue.d.ts +21 -2
  147. package/dist/components/LpPie.vue.js +1 -1
  148. package/dist/components/LpPopover.vue.d.ts +2 -0
  149. package/dist/components/LpPopover.vue.js +1 -1
  150. package/dist/components/LpProgress.vue.js +1 -1
  151. package/dist/components/LpRadioGroup.vue.js +1 -1
  152. package/dist/components/LpSection.vue.d.ts +1 -1
  153. package/dist/components/LpSegmented.vue.d.ts +5 -0
  154. package/dist/components/LpSegmented.vue.js +1 -1
  155. package/dist/components/LpSelect.vue.d.ts +1 -0
  156. package/dist/components/LpSelect.vue.js +1 -1
  157. package/dist/components/LpShortcutsDialog.vue.d.ts +1 -1
  158. package/dist/components/LpShortcutsDialog.vue.js +11 -8
  159. package/dist/components/LpSidebar.vue.d.ts +6 -2
  160. package/dist/components/LpSidebar.vue.js +1 -1
  161. package/dist/components/LpSidebarNav.vue.js +1 -1
  162. package/dist/components/LpSkeleton.vue.js +1 -1
  163. package/dist/components/LpSlider.vue.js +1 -1
  164. package/dist/components/LpSparkline.vue.d.ts +1 -0
  165. package/dist/components/LpSparkline.vue.js +1 -1
  166. package/dist/components/LpStat.vue.js +1 -1
  167. package/dist/components/LpSwitch.vue.js +1 -1
  168. package/dist/components/LpTable.vue.d.ts +23 -1
  169. package/dist/components/LpTable.vue.js +74 -36
  170. package/dist/components/LpTableOfContents.vue.d.ts +4 -2
  171. package/dist/components/LpTableOfContents.vue.js +1 -1
  172. package/dist/components/LpTabs.vue.d.ts +2 -0
  173. package/dist/components/LpTabs.vue.js +1 -1
  174. package/dist/components/LpTextarea.vue.d.ts +19 -6
  175. package/dist/components/LpTextarea.vue.js +1 -1
  176. package/dist/components/LpThemeProvider.vue.d.ts +22 -0
  177. package/dist/components/LpThemeProvider.vue.js +4 -0
  178. package/dist/components/LpThemeSwitcher.vue.d.ts +13 -0
  179. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  180. package/dist/components/LpTilt.vue.js +1 -1
  181. package/dist/components/LpTimeField.vue.js +1 -1
  182. package/dist/components/LpToaster.vue.d.ts +6 -1
  183. package/dist/components/LpToaster.vue.js +1 -1
  184. package/dist/components/LpTooltip.vue.d.ts +1 -2
  185. package/dist/components/LpTooltip.vue.js +1 -1
  186. package/dist/components/LpTooltipProvider.vue.d.ts +22 -0
  187. package/dist/components/LpTooltipProvider.vue.js +4 -0
  188. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  189. package/dist/components/LpUptimeBar.vue.d.ts +4 -0
  190. package/dist/components/LpUptimeBar.vue.js +1 -1
  191. package/dist/components/chart.d.ts +32 -1
  192. package/dist/components/chart.js +39 -4
  193. package/dist/components/codeHighlight.d.ts +6 -0
  194. package/dist/components/codeHighlight.js +92 -20
  195. package/dist/components/color.d.ts +1 -1
  196. package/dist/components/color.js +20 -9
  197. package/dist/components/commandSearch.d.ts +0 -1
  198. package/dist/components/commandSearch.js +1 -17
  199. package/dist/components/confirm.d.ts +25 -0
  200. package/dist/components/confirm.js +26 -0
  201. package/dist/components/countries.d.ts +6 -0
  202. package/dist/components/countries.js +7 -0
  203. package/dist/components/fileTree.js +16 -7
  204. package/dist/components/imageCrop.d.ts +42 -0
  205. package/dist/components/imageCrop.js +47 -0
  206. package/dist/components/link.d.ts +12 -0
  207. package/dist/components/link.js +19 -0
  208. package/dist/components/modalDepth.d.ts +18 -2
  209. package/dist/components/modalDepth.js +17 -5
  210. package/dist/components/otp.d.ts +5 -0
  211. package/dist/components/otp.js +10 -0
  212. package/dist/components/sidebar.d.ts +7 -1
  213. package/dist/components/tableSort.d.ts +8 -0
  214. package/dist/components/tableSort.js +31 -0
  215. package/dist/composables/useField.d.ts +34 -0
  216. package/dist/composables/useField.js +45 -0
  217. package/dist/composables/useFormDraft.d.ts +10 -3
  218. package/dist/composables/useFormDraft.js +9 -14
  219. package/dist/composables/useHotkeys.d.ts +17 -1
  220. package/dist/composables/useHotkeys.js +55 -18
  221. package/dist/composables/useInputFilter.d.ts +17 -0
  222. package/dist/composables/useInputFilter.js +47 -10
  223. package/dist/composables/useLpConfig.d.ts +24 -0
  224. package/dist/composables/useLpConfig.js +44 -0
  225. package/dist/composables/useRovingFocus.js +7 -0
  226. package/dist/composables/useTilt.d.ts +2 -2
  227. package/dist/composables/useTilt.js +5 -6
  228. package/dist/composables/useToast.d.ts +20 -0
  229. package/dist/composables/useToast.js +28 -4
  230. package/dist/composables/useZoomPan.d.ts +3 -3
  231. package/dist/composables/useZoomPan.js +4 -4
  232. package/dist/index.d.ts +33 -3
  233. package/dist/index.js +185 -139
  234. package/dist/layout/tree.d.ts +2 -0
  235. package/dist/layout/tree.js +16 -1
  236. package/dist/layout/useLayout.d.ts +15 -0
  237. package/dist/layout/useLayout.js +41 -14
  238. package/dist/theme/useTheme.d.ts +32 -9
  239. package/package.json +8 -7
  240. package/src/component-names.ts +5 -7
  241. package/src/components/ContextMenuItems.vue +88 -0
  242. package/src/components/LayoutCanvas.vue +26 -6
  243. package/src/components/LayoutNode.vue +19 -2
  244. package/src/components/LpActionBar.vue +30 -7
  245. package/src/components/LpAddressInput.vue +57 -41
  246. package/src/components/LpAlert.vue +16 -3
  247. package/src/components/LpAppShell.vue +45 -12
  248. package/src/components/LpAutocomplete.vue +46 -10
  249. package/src/components/LpAvatar.vue +19 -5
  250. package/src/components/LpBreadcrumbs.vue +65 -41
  251. package/src/components/LpButton.vue +59 -13
  252. package/src/components/LpChart.vue +272 -28
  253. package/src/components/LpCheckbox.vue +7 -3
  254. package/src/components/LpCodeBlock.vue +50 -14
  255. package/src/components/LpColorPicker.vue +39 -9
  256. package/src/components/LpCommandPalette.vue +36 -25
  257. package/src/components/LpConfirmDialog.vue +68 -17
  258. package/src/components/LpConfirmHost.vue +59 -0
  259. package/src/components/LpContextMenu.vue +14 -115
  260. package/src/components/LpDatePicker.vue +99 -68
  261. package/src/components/LpDrawer.vue +56 -19
  262. package/src/components/LpDropzone.vue +21 -4
  263. package/src/components/LpFileTree.vue +33 -7
  264. package/src/components/LpFormField.vue +30 -7
  265. package/src/components/LpImageEditor.vue +96 -57
  266. package/src/components/LpInput.vue +18 -7
  267. package/src/components/LpLightbox.vue +140 -29
  268. package/src/components/LpLink.vue +24 -13
  269. package/src/components/LpLogViewer.vue +86 -17
  270. package/src/components/LpMapPicker.vue +36 -13
  271. package/src/components/LpMediaGallery.vue +8 -2
  272. package/src/components/LpModal.vue +53 -27
  273. package/src/components/LpModalNav.vue +5 -2
  274. package/src/components/LpNotificationBell.vue +63 -17
  275. package/src/components/LpNumberField.vue +21 -6
  276. package/src/components/LpNumberFlow.vue +26 -10
  277. package/src/components/LpOtpInput.vue +43 -8
  278. package/src/components/LpPagination.vue +23 -7
  279. package/src/components/LpPasswordInput.vue +4 -1
  280. package/src/components/LpPhoneInput.vue +53 -27
  281. package/src/components/LpPie.vue +94 -15
  282. package/src/components/LpPopover.vue +3 -0
  283. package/src/components/LpProgress.vue +5 -3
  284. package/src/components/LpRadioGroup.vue +9 -2
  285. package/src/components/LpSegmented.vue +12 -2
  286. package/src/components/LpSelect.vue +0 -0
  287. package/src/components/LpShortcutsDialog.vue +8 -3
  288. package/src/components/LpSidebar.vue +14 -9
  289. package/src/components/LpSidebarNav.vue +17 -5
  290. package/src/components/LpSkeleton.vue +4 -1
  291. package/src/components/LpSlider.vue +7 -1
  292. package/src/components/LpSparkline.vue +11 -3
  293. package/src/components/LpSwitch.vue +30 -7
  294. package/src/components/LpTable.vue +91 -32
  295. package/src/components/LpTableOfContents.vue +50 -32
  296. package/src/components/LpTabs.vue +23 -6
  297. package/src/components/LpTextarea.vue +44 -6
  298. package/src/components/LpThemeProvider.vue +41 -0
  299. package/src/components/LpThemeSwitcher.vue +64 -17
  300. package/src/components/LpTilt.vue +2 -2
  301. package/src/components/LpTimeField.vue +14 -3
  302. package/src/components/LpToaster.vue +66 -26
  303. package/src/components/LpTooltip.vue +22 -5
  304. package/src/components/LpTooltipProvider.vue +24 -0
  305. package/src/components/LpTopologyCanvas.vue +12 -1
  306. package/src/components/LpUptimeBar.vue +46 -8
  307. package/src/components/chart.ts +77 -5
  308. package/src/components/codeHighlight.ts +111 -15
  309. package/src/components/color.ts +30 -9
  310. package/src/components/commandSearch.ts +0 -17
  311. package/src/components/confirm.ts +58 -0
  312. package/src/components/countries.ts +12 -0
  313. package/src/components/fileTree.ts +19 -7
  314. package/src/components/imageCrop.ts +107 -0
  315. package/src/components/link.ts +34 -0
  316. package/src/components/modalDepth.ts +48 -6
  317. package/src/components/otp.ts +16 -0
  318. package/src/components/sidebar.ts +7 -1
  319. package/src/components/tableSort.ts +37 -0
  320. package/src/composables/useField.ts +79 -0
  321. package/src/composables/useFormDraft.ts +25 -20
  322. package/src/composables/useHotkeys.ts +89 -18
  323. package/src/composables/useInputFilter.ts +77 -14
  324. package/src/composables/useLpConfig.ts +87 -0
  325. package/src/composables/useRovingFocus.ts +11 -0
  326. package/src/composables/useTilt.ts +5 -6
  327. package/src/composables/useToast.ts +56 -4
  328. package/src/composables/useZoomPan.ts +6 -6
  329. package/src/index.ts +38 -3
  330. package/src/layout/tree.ts +30 -0
  331. package/src/layout/useLayout.ts +68 -18
  332. package/src/nuxt.ts +59 -17
  333. package/src/runtime/config.plugin.ts +14 -0
  334. package/src/runtime/theme.plugin.ts +42 -22
  335. package/src/theme/useTheme.ts +206 -100
  336. package/dist/chunks/LpBreadcrumbs-p4jHe_V-.js +0 -62
  337. package/dist/chunks/LpContextMenu-CwW1QXe_.js +0 -217
  338. package/dist/chunks/LpDatePicker-CwOToxGq.js +0 -164
  339. package/dist/chunks/LpFormField-CazBc2-a.js +0 -62
  340. package/dist/chunks/LpTextarea-t7F6gv8E.js +0 -47
@@ -1,7 +1,18 @@
1
- import { computed, readonly, shallowRef, defineComponent, onMounted, ref, openBlock, createBlock, withCtx, createElementVNode, normalizeClass, createElementBlock, normalizeStyle, createVNode, toDisplayString, createCommentVNode } from "vue";
1
+ import { computed, readonly, shallowRef } from "vue";
2
2
  import { prefersReducedMotion, easingToken } from "../composables/easing.js";
3
- import { _ as _sfc_main$1 } from "./LpContextMenu-CwW1QXe_.js";
4
- import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
3
+ const NO_BACKDROP_ATTR = "data-lp-no-backdrop";
4
+ function isBrokenBackdropEngine(nav = navigator) {
5
+ const ua = nav.userAgent;
6
+ if (!/AppleWebKit/.test(ua)) return false;
7
+ if (/Chrome|Chromium|Edg\//.test(ua)) return false;
8
+ return !/Mac|iPhone|iPad|iPod/.test(nav.platform || "");
9
+ }
10
+ function detectBackdropFilter(root = document.documentElement) {
11
+ if (typeof navigator === "undefined") return true;
12
+ const usable = !isBrokenBackdropEngine();
13
+ root.toggleAttribute(NO_BACKDROP_ATTR, !usable);
14
+ return usable;
15
+ }
5
16
  const sharedShape = { radiusControl: 8, radiusCard: 14, radiusPill: 9999 };
6
17
  const sharedDensity = { spacingUnit: 4, controlSm: 32, controlMd: 38, controlLg: 44 };
7
18
  const interFont = {
@@ -274,19 +285,6 @@ const nord = {
274
285
  font: { ...interFont }
275
286
  };
276
287
  const presets = { dark, light, lime, leavepulse, rose, amber, violet, nord };
277
- const NO_BACKDROP_ATTR = "data-lp-no-backdrop";
278
- function isBrokenBackdropEngine(nav = navigator) {
279
- const ua = nav.userAgent;
280
- if (!/AppleWebKit/.test(ua)) return false;
281
- if (/Chrome|Chromium|Edg\//.test(ua)) return false;
282
- return !/Mac|iPhone|iPad|iPod/.test(nav.platform || "");
283
- }
284
- function detectBackdropFilter(root = document.documentElement) {
285
- if (typeof navigator === "undefined") return true;
286
- const usable = !isBrokenBackdropEngine();
287
- root.toggleAttribute(NO_BACKDROP_ATTR, !usable);
288
- return usable;
289
- }
290
288
  const COLOR_VARS = {
291
289
  surface: "--color-surface",
292
290
  surfaceRaised: "--color-surface-raised",
@@ -344,42 +342,103 @@ const DEFAULT_SURFACE = {
344
342
  };
345
343
  const CACHE_KEY = "leavepulse-ui-theme";
346
344
  const _current = shallowRef(null);
345
+ const _system = shallowRef(null);
347
346
  let _hydrated = false;
348
347
  let _fallback = null;
349
- function hydrateOnce() {
350
- if (_hydrated || typeof window === "undefined") return;
351
- _hydrated = true;
348
+ const DARK_QUERY = "(prefers-color-scheme: dark)";
349
+ let _media = null;
350
+ function prefersDarkScheme() {
351
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return true;
352
+ return window.matchMedia(DARK_QUERY).matches || !window.matchMedia("(prefers-color-scheme: light)").matches;
353
+ }
354
+ function pick(system, dark2 = prefersDarkScheme()) {
355
+ return dark2 ? system.dark : system.light;
356
+ }
357
+ function onSchemeChange(event) {
358
+ const system = _system.value;
359
+ if (!system) return;
360
+ const theme = pick(system, event.matches);
361
+ applyTheme(theme);
362
+ _current.value = theme;
363
+ }
364
+ function followSystem(system) {
365
+ _system.value = system;
366
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
367
+ if (system && !_media) {
368
+ _media = window.matchMedia(DARK_QUERY);
369
+ _media.addEventListener("change", onSchemeChange);
370
+ } else if (!system && _media) {
371
+ _media.removeEventListener("change", onSchemeChange);
372
+ _media = null;
373
+ }
374
+ }
375
+ function readCache() {
352
376
  try {
353
377
  const cached = localStorage.getItem(CACHE_KEY);
354
- if (cached) {
355
- _current.value = parseTheme(cached);
356
- applyTheme(_current.value);
357
- return;
378
+ if (!cached) return null;
379
+ const raw = JSON.parse(cached);
380
+ if (raw && typeof raw === "object" && raw.system) {
381
+ return {
382
+ system: {
383
+ light: parseTheme(JSON.stringify(raw.system.light)),
384
+ dark: parseTheme(JSON.stringify(raw.system.dark))
385
+ }
386
+ };
358
387
  }
388
+ return { theme: parseTheme(cached) };
359
389
  } catch {
390
+ return null;
360
391
  }
361
- if (_fallback) {
392
+ }
393
+ function hydrateOnce() {
394
+ if (_hydrated || typeof window === "undefined") return;
395
+ _hydrated = true;
396
+ const cached = readCache();
397
+ if (cached?.system) {
398
+ followSystem(cached.system);
399
+ _current.value = pick(cached.system);
400
+ writeThemeCookie(systemCookieValue(cached.system));
401
+ } else if (cached?.theme) {
402
+ _current.value = cached.theme;
403
+ writeThemeCookie(cached.theme.name);
404
+ } else if (_fallback) {
362
405
  _current.value = _fallback;
363
- applyTheme(_fallback);
406
+ } else {
407
+ return;
364
408
  }
409
+ applyTheme(_current.value);
365
410
  }
366
- function applyTheme(theme, root = document.documentElement) {
411
+ const DERIVED_VARS = [
412
+ ["--color-surface-overlay", "color-mix(in srgb, var(--color-surface-raised) 94%, transparent)"],
413
+ ["--color-node-compute", "var(--color-action)"],
414
+ ["--color-node-transit", "var(--color-accent)"],
415
+ ["--color-node-edge", "var(--color-brand)"],
416
+ ["--color-node-unknown", "var(--color-line-strong)"]
417
+ ];
418
+ function themeEntries(input) {
419
+ const theme = normalizeTheme(input);
420
+ const out = [];
367
421
  for (const [key, cssVar] of Object.entries(COLOR_VARS)) {
368
- root.style.setProperty(cssVar, theme.colors[key]);
422
+ out.push([cssVar, theme.colors[key]]);
369
423
  }
370
424
  for (const [key, cssVar] of Object.entries(SHAPE_VARS)) {
371
- root.style.setProperty(cssVar, `${theme.shape[key]}px`);
425
+ out.push([cssVar, `${theme.shape[key]}px`]);
372
426
  }
373
427
  for (const [key, cssVar] of Object.entries(DENSITY_VARS)) {
374
- root.style.setProperty(cssVar, `${theme.density[key]}px`);
428
+ out.push([cssVar, `${theme.density[key]}px`]);
375
429
  }
376
430
  for (const [key, cssVar] of Object.entries(FONT_VARS)) {
377
- root.style.setProperty(cssVar, theme.font[key]);
431
+ out.push([cssVar, theme.font[key]]);
378
432
  }
379
433
  const surface = theme.surface ?? DEFAULT_SURFACE;
380
434
  for (const [key, cssVar] of Object.entries(SURFACE_VARS)) {
381
- root.style.setProperty(cssVar, surface[key]);
435
+ out.push([cssVar, surface[key]]);
382
436
  }
437
+ for (const [cssVar, value] of DERIVED_VARS) out.push([cssVar, value]);
438
+ return out;
439
+ }
440
+ function applyTheme(theme, root = document.documentElement) {
441
+ for (const [cssVar, value] of themeEntries(theme)) root.style.setProperty(cssVar, value);
383
442
  root.dataset.themeMode = theme.mode;
384
443
  root.style.colorScheme = theme.mode;
385
444
  detectBackdropFilter(root);
@@ -420,47 +479,36 @@ function serializeTheme(theme) {
420
479
  return JSON.stringify(theme);
421
480
  }
422
481
  function themeToCssVars(theme) {
423
- const decls = [];
424
- for (const [key, cssVar] of Object.entries(COLOR_VARS)) {
425
- decls.push(`${cssVar}: ${theme.colors[key]}`);
426
- }
427
- for (const [key, cssVar] of Object.entries(SHAPE_VARS)) {
428
- decls.push(`${cssVar}: ${theme.shape[key]}px`);
429
- }
430
- for (const [key, cssVar] of Object.entries(DENSITY_VARS)) {
431
- decls.push(`${cssVar}: ${theme.density[key]}px`);
432
- }
433
- for (const [key, cssVar] of Object.entries(FONT_VARS)) {
434
- decls.push(`${cssVar}: ${theme.font[key]}`);
435
- }
436
- const surface = theme.surface ?? DEFAULT_SURFACE;
437
- for (const [key, cssVar] of Object.entries(SURFACE_VARS)) {
438
- decls.push(`${cssVar}: ${surface[key]}`);
439
- }
440
- return decls.join("; ");
482
+ return themeEntries(theme).map(([cssVar, value]) => `${cssVar}: ${value}`).join("; ");
441
483
  }
442
484
  function themeToCssRule(theme, selector = ":root") {
443
485
  return `${selector} { color-scheme: ${theme.mode}; ${themeToCssVars(theme)}; }`;
444
486
  }
445
- const DEFAULT_FONT = {
446
- sans: '"Inter", "Segoe UI", system-ui, sans-serif',
447
- mono: '"JetBrains Mono", "SF Mono", ui-monospace, monospace'
448
- };
487
+ function normalizeTheme(raw) {
488
+ const mode = raw.mode === "light" ? "light" : "dark";
489
+ const base = mode === "light" ? light : dark;
490
+ return {
491
+ name: typeof raw.name === "string" ? raw.name : base.name,
492
+ mode,
493
+ colors: { ...base.colors, ...raw.colors },
494
+ shape: { ...base.shape, ...raw.shape },
495
+ density: { ...base.density, ...raw.density },
496
+ font: { ...base.font, ...raw.font },
497
+ surface: raw.surface ? { ...DEFAULT_SURFACE, ...raw.surface } : void 0
498
+ };
499
+ }
449
500
  function parseTheme(json) {
450
501
  const raw = JSON.parse(json);
451
502
  if (!raw || typeof raw !== "object" || !raw.colors || !raw.shape || !raw.density) {
452
503
  throw new Error("Invalid theme: missing colors/shape/density");
453
504
  }
454
- return { ...raw, font: raw.font ?? DEFAULT_FONT };
505
+ return normalizeTheme(raw);
455
506
  }
456
507
  function bootstrapTheme(fallback) {
457
- let theme = fallback;
458
- try {
459
- const cached = localStorage.getItem(CACHE_KEY);
460
- if (cached) theme = parseTheme(cached);
461
- } catch {
462
- }
463
- applyTheme(theme);
508
+ const cached = typeof window === "undefined" ? null : readCache();
509
+ const theme = cached?.system ? pick(cached.system) : cached?.theme ?? fallback;
510
+ if (cached?.system) followSystem(cached.system);
511
+ if (typeof document !== "undefined") applyTheme(theme);
464
512
  return theme;
465
513
  }
466
514
  function cacheTheme(theme) {
@@ -470,203 +518,113 @@ function cacheTheme(theme) {
470
518
  }
471
519
  writeThemeCookie(theme.name);
472
520
  }
521
+ function cacheSystemThemes(system) {
522
+ try {
523
+ localStorage.setItem(CACHE_KEY, JSON.stringify({ system }));
524
+ } catch {
525
+ }
526
+ writeThemeCookie(systemCookieValue(system));
527
+ }
473
528
  const THEME_COOKIE = "lp-theme";
529
+ const SYSTEM_PREFIX = "system:";
474
530
  const COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
475
- function writeThemeCookie(name) {
531
+ function systemCookieValue(system) {
532
+ return `${SYSTEM_PREFIX}${system.light.name}|${system.dark.name}`;
533
+ }
534
+ function writeThemeCookie(value) {
476
535
  if (typeof document === "undefined") return;
477
- document.cookie = `${THEME_COOKIE}=${encodeURIComponent(name)}; path=/; max-age=${COOKIE_MAX_AGE}; samesite=lax`;
536
+ document.cookie = `${THEME_COOKIE}=${encodeURIComponent(value)}; path=/; max-age=${COOKIE_MAX_AGE}; samesite=lax`;
537
+ }
538
+ function safeDecode(value) {
539
+ try {
540
+ return decodeURIComponent(value);
541
+ } catch {
542
+ return value;
543
+ }
478
544
  }
479
- function themeFromCookie(cookieValue, themes) {
545
+ function themeFromCookie(cookieValue, themes, options = {}) {
480
546
  if (!cookieValue) return null;
481
- const name = decodeURIComponent(cookieValue);
482
- return themes.find((theme) => theme.name === name) ?? null;
547
+ const find = (name) => themes.find((theme) => theme.name === name) ?? null;
548
+ for (const value of [cookieValue, safeDecode(cookieValue)]) {
549
+ if (value.startsWith(SYSTEM_PREFIX)) {
550
+ const [lightName = "", darkName = ""] = value.slice(SYSTEM_PREFIX.length).split("|");
551
+ const wanted = options.prefersDark === false ? lightName : darkName;
552
+ const found2 = find(wanted);
553
+ if (found2) return found2;
554
+ continue;
555
+ }
556
+ const found = find(value);
557
+ if (found) return found;
558
+ }
559
+ return null;
483
560
  }
484
561
  function useTheme() {
485
562
  hydrateOnce();
486
- const setTheme = (theme, origin) => {
487
- if (origin) applyThemeWithTransition(theme, origin);
488
- else applyThemeWithTransition(theme);
563
+ const commit = (theme) => {
564
+ followSystem(null);
489
565
  cacheTheme(theme);
490
566
  _current.value = theme;
491
567
  };
492
568
  return {
493
569
  current: readonly(_current),
494
570
  currentName: computed(() => _current.value?.name ?? ""),
495
- setTheme,
571
+ system: computed(() => _system.value !== null),
572
+ setTheme: (theme, origin) => {
573
+ applyThemeWithTransition(theme, origin);
574
+ commit(theme);
575
+ },
576
+ setSystem: (themes, origin) => {
577
+ const theme = pick(themes);
578
+ applyThemeWithTransition(theme, origin);
579
+ followSystem(themes);
580
+ cacheSystemThemes(themes);
581
+ _current.value = theme;
582
+ },
496
583
  init: (fallback) => {
497
584
  _fallback = fallback;
498
- if (!_hydrated) hydrateOnce();
499
- if (!_current.value) {
500
- _current.value = bootstrapTheme(fallback);
501
- }
585
+ hydrateOnce();
586
+ if (!_current.value) _current.value = bootstrapTheme(fallback);
502
587
  return _current.value;
503
588
  },
504
589
  apply: (theme) => {
505
590
  applyTheme(theme);
506
- cacheTheme(theme);
507
- _current.value = theme;
591
+ commit(theme);
508
592
  },
509
- /**
510
- * Apply + cache a theme with the circular reveal animation. Pass the click
511
- * point (e.g. from a toggle's `event`) as `origin` so the circle grows from
512
- * the button; omit it to reveal from the viewport centre.
513
- */
514
593
  applyWithTransition: (theme, origin) => {
515
594
  applyThemeWithTransition(theme, origin);
516
- cacheTheme(theme);
517
- _current.value = theme;
595
+ commit(theme);
518
596
  },
519
597
  serialize: serializeTheme,
520
598
  parse: parseTheme,
521
599
  bootstrap: bootstrapTheme
522
600
  };
523
601
  }
524
- const _hoisted_1 = ["aria-label", "title"];
525
- const _hoisted_2 = {
526
- key: 2,
527
- class: "text-sm font-medium"
528
- };
529
- const _sfc_main = /* @__PURE__ */ defineComponent({
530
- __name: "LpThemeSwitcher",
531
- props: {
532
- modelValue: {},
533
- themes: {},
534
- cycleThemes: {},
535
- variant: { default: "swatch" },
536
- showLabel: { type: Boolean },
537
- default: {},
538
- transition: { type: Boolean, default: true },
539
- size: { default: "md" },
540
- "aria-label": {}
541
- },
542
- emits: ["update:modelValue", "change"],
543
- setup(__props, { emit: __emit }) {
544
- const props = __props;
545
- const emit = __emit;
546
- const theme = useTheme();
547
- const list = computed(
548
- () => props.themes && props.themes.length ? props.themes : Object.values(presets)
549
- );
550
- const activeName = computed(
551
- () => props.modelValue ?? (theme.currentName.value || list.value[0]?.name || "")
552
- );
553
- const active = computed(
554
- () => list.value.find((t) => t.name === activeName.value) ?? list.value[0]
555
- );
556
- onMounted(() => {
557
- if (props.default == null) return;
558
- const fallback = typeof props.default === "string" ? list.value.find((t) => t.name === props.default) : props.default;
559
- if (fallback) theme.init(fallback);
560
- });
561
- const SIZES = { sm: "size-7", md: "size-8", lg: "size-9" };
562
- const ICON_SIZE = { sm: 15, md: 16, lg: 18 };
563
- const wantsLabel = computed(() => props.showLabel || props.variant === "pill");
564
- const bareIcon = computed(() => props.variant === "icon" && !wantsLabel.value);
565
- function applyTheme2(t, ev) {
566
- if (props.transition) {
567
- theme.setTheme(t, ev ? { x: ev.clientX, y: ev.clientY } : void 0);
568
- } else {
569
- theme.apply(t);
570
- }
571
- emit("update:modelValue", t.name);
572
- emit("change", t);
573
- }
574
- const cycleList = computed(() => {
575
- if (!props.cycleThemes?.length) return list.value;
576
- const resolved = props.cycleThemes.map(
577
- (t) => typeof t === "string" ? list.value.find((x) => x.name === t) : t
578
- ).filter((t) => Boolean(t));
579
- return resolved.length ? resolved : list.value;
580
- });
581
- function cycle(ev) {
582
- const arr = cycleList.value;
583
- if (!arr.length) return;
584
- const i = arr.findIndex((t) => t.name === activeName.value);
585
- const next = arr[(i + 1) % arr.length];
586
- if (next) applyTheme2(next, ev);
587
- }
588
- const menu = computed(
589
- () => list.value.map((t) => ({
590
- label: t.name,
591
- icon: t.name === activeName.value ? "lucide:check" : t.mode === "dark" ? "lucide:moon" : "lucide:sun",
592
- onSelect: () => applyTheme2(t)
593
- }))
594
- );
595
- const hydrated = ref(false);
596
- onMounted(() => {
597
- hydrated.value = true;
598
- });
599
- const labelName = computed(
600
- () => hydrated.value ? activeName.value : list.value[0]?.name ?? ""
601
- );
602
- const triggerLabel = computed(
603
- () => props["aria-label"] ?? `Theme: ${labelName.value}. Click to switch, right-click to choose.`
604
- );
605
- return (_ctx, _cache) => {
606
- return openBlock(), createBlock(_sfc_main$1, { items: menu.value }, {
607
- default: withCtx(() => [
608
- createElementVNode("button", {
609
- type: "button",
610
- "aria-label": triggerLabel.value,
611
- title: triggerLabel.value,
612
- class: normalizeClass([
613
- "inline-flex items-center justify-center gap-2 rounded-control outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",
614
- bareIcon.value ? [SIZES[__props.size], "text-muted hover:bg-surface-soft hover:text-ink"] : [
615
- "border border-line bg-surface-raised px-1.5 text-ink hover:border-line-strong",
616
- wantsLabel.value ? "py-1 pr-2.5" : ""
617
- ]
618
- ]),
619
- onClick: cycle
620
- }, [
621
- __props.variant !== "icon" ? (openBlock(), createElementBlock("span", {
622
- key: 0,
623
- class: normalizeClass(["grid shrink-0 place-items-center rounded-control border border-line/60", SIZES[__props.size]]),
624
- style: normalizeStyle({ background: active.value?.colors.surface })
625
- }, [
626
- createElementVNode("span", {
627
- class: "size-3 rounded-full",
628
- style: normalizeStyle({ background: active.value?.colors.brand })
629
- }, null, 4)
630
- ], 6)) : (openBlock(), createElementBlock("span", {
631
- key: 1,
632
- class: normalizeClass(["grid shrink-0 place-items-center", SIZES[__props.size]])
633
- }, [
634
- createVNode(_sfc_main$2, {
635
- name: active.value?.mode === "dark" ? "lucide:moon" : "lucide:sun",
636
- size: ICON_SIZE[__props.size]
637
- }, null, 8, ["name", "size"])
638
- ], 2)),
639
- wantsLabel.value ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(labelName.value), 1)) : createCommentVNode("", true)
640
- ], 10, _hoisted_1)
641
- ]),
642
- _: 1
643
- }, 8, ["items"]);
644
- };
645
- }
646
- });
647
602
  export {
648
603
  DEFAULT_SURFACE as D,
649
604
  NO_BACKDROP_ATTR as N,
650
605
  THEME_COOKIE as T,
651
- _sfc_main as _,
652
606
  parseTheme as a,
653
607
  amber as b,
654
608
  applyTheme as c,
655
609
  applyThemeWithTransition as d,
656
610
  bootstrapTheme as e,
657
- dark as f,
658
- detectBackdropFilter as g,
659
- light as h,
611
+ cacheSystemThemes as f,
612
+ dark as g,
613
+ detectBackdropFilter as h,
660
614
  isBrokenBackdropEngine as i,
661
- lime as j,
662
- themeToCssRule as k,
615
+ light as j,
616
+ lime as k,
663
617
  leavepulse as l,
664
- themeToCssVars as m,
618
+ normalizeTheme as m,
665
619
  nord as n,
620
+ prefersDarkScheme as o,
666
621
  presets as p,
622
+ themeFromCookie as q,
667
623
  rose as r,
668
624
  serializeTheme as s,
669
- themeFromCookie as t,
625
+ themeEntries as t,
670
626
  useTheme as u,
671
- violet as v
627
+ themeToCssRule as v,
628
+ themeToCssVars as w,
629
+ violet as x
672
630
  };
@@ -1 +1 @@
1
- export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LayoutNode", "LpActionBar", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpChart", "LpCheckbox", "LpCodeBlock", "LpColorPicker", "LpCommandPalette", "LpConfirmDialog", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpDropzone", "LpEmptyState", "LpFileTree", "LpFileTreeNode", "LpFormField", "LpIcon", "LpImageEditor", "LpInfraNode", "LpInput", "LpLaneNode", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpMediaGallery", "LpModal", "LpModalNav", "LpNotificationBell", "LpNumberField", "LpNumberFlow", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPie", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpRollingText", "LpScrollArea", "LpSection", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSidebarNav", "LpSkeleton", "LpSlider", "LpSparkline", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeSwitcher", "LpTilt", "LpTimeField", "LpToaster", "LpTooltip", "LpTopologyCanvas", "LpUptimeBar", "LpWaypointEdge"];
1
+ export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LpActionBar", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpChart", "LpCheckbox", "LpCodeBlock", "LpColorPicker", "LpCommandPalette", "LpConfirmDialog", "LpConfirmHost", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpDropzone", "LpEmptyState", "LpFileTree", "LpFormField", "LpIcon", "LpImageEditor", "LpInfraNode", "LpInput", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpMediaGallery", "LpModal", "LpModalNav", "LpNotificationBell", "LpNumberField", "LpNumberFlow", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPie", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpRollingText", "LpScrollArea", "LpSection", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSkeleton", "LpSlider", "LpSparkline", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeProvider", "LpThemeSwitcher", "LpTilt", "LpTimeField", "LpToaster", "LpTooltip", "LpTooltipProvider", "LpTopologyCanvas", "LpUptimeBar"];
@@ -0,0 +1,8 @@
1
+ import type { ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ type __VLS_Props = {
3
+ items: ContextMenuItemDef[];
4
+ panel: string;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { _ as _sfc_main } from "../chunks/ContextMenuItems-CrfeNPWT.js";
2
+ export {
3
+ _sfc_main as default
4
+ };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LayoutCanvas-Dd20boUG.js";
1
+ import { _ as _sfc_main } from "../chunks/LayoutCanvas-D-jPOAvg.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -21,6 +21,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
21
21
  "remove-block": (leafId: string, index: number) => any;
22
22
  "reorder-tab": (leafId: string, from: number, to: number) => any;
23
23
  resize: (parent: Split, index: number, deltaFraction: number) => any;
24
+ "resize-start": () => any;
25
+ "resize-end": () => any;
24
26
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
25
27
  onDragstart?: ((id: string) => any) | undefined;
26
28
  onDragend?: (() => any) | undefined;
@@ -29,6 +31,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
29
31
  "onRemove-block"?: ((leafId: string, index: number) => any) | undefined;
30
32
  "onReorder-tab"?: ((leafId: string, from: number, to: number) => any) | undefined;
31
33
  onResize?: ((parent: Split, index: number, deltaFraction: number) => any) | undefined;
34
+ "onResize-start"?: (() => any) | undefined;
35
+ "onResize-end"?: (() => any) | undefined;
32
36
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
37
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
38
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LayoutNode-DGpZA9LX.js";
1
+ import { _ as _sfc_main } from "../chunks/LayoutNode-D8Xy9N-o.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -55,6 +55,9 @@ type __VLS_Props = {
55
55
  maxWidth?: string;
56
56
  /** Accessible name for the landmark. Falls back to `title`. */
57
57
  ariaLabel?: string;
58
+ labels?: Partial<{
59
+ dismiss: string;
60
+ }>;
58
61
  };
59
62
  declare var __VLS_18: {}, __VLS_20: {};
60
63
  type __VLS_Slots = {} & {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpActionBar-BlvtGB2P.js";
1
+ import { _ as _sfc_main } from "../chunks/LpActionBar-BbwCF6l5.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -59,7 +59,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
59
59
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
60
60
  map?: (props: {
61
61
  point: LatLon | undefined;
62
- setPoint: (next: LatLon) => Promise<void>;
62
+ setPoint: (next: LatLon) => void;
63
63
  tiles: TileSource;
64
64
  }) => any;
65
65
  }>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-B-Zvxsn7.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-BrOqkZqg.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -26,6 +26,14 @@ type __VLS_Props = {
26
26
  variant?: AlertVariants["variant"];
27
27
  title?: string;
28
28
  icon?: string;
29
+ /**
30
+ * Announce the alert to screen readers when it appears. "assertive"
31
+ * (role=alert) interrupts and is for something that needs action now,
32
+ * "polite" (role=status) waits its turn, false reads it in place. By
33
+ * default only `danger` interrupts: an info or success banner that is part
34
+ * of the page from the start should not be shouted on load.
35
+ */
36
+ live?: "assertive" | "polite" | false;
29
37
  };
30
38
  declare var __VLS_6: {};
31
39
  type __VLS_Slots = {} & {
@@ -33,6 +41,7 @@ type __VLS_Slots = {} & {
33
41
  };
34
42
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
35
43
  variant: "info" | "danger" | "success" | "warning";
44
+ live: "assertive" | "polite" | false;
36
45
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
46
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
38
47
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAlert-BAYHDSS1.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAlert-DkOIjsbq.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -40,6 +40,11 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
40
40
  fullBleed?: boolean;
41
41
  /** Loading skeleton for the nav. */
42
42
  loading?: boolean;
43
+ /** Text overrides: the burger's name and the skip link. */
44
+ labels?: Partial<{
45
+ openMenu: string;
46
+ skipToContent: string;
47
+ }>;
43
48
  }, {
44
49
  openDrawer: () => void;
45
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
@@ -85,6 +90,11 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
85
90
  fullBleed?: boolean;
86
91
  /** Loading skeleton for the nav. */
87
92
  loading?: boolean;
93
+ /** Text overrides: the burger's name and the skip link. */
94
+ labels?: Partial<{
95
+ openMenu: string;
96
+ skipToContent: string;
97
+ }>;
88
98
  }> & Readonly<{
89
99
  onSelect?: ((item: SidebarItem) => any) | undefined;
90
100
  "onUpdate:modelValue"?: ((id: string) => any) | undefined;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-BGQVIY-3.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-BUKPcHco.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };