@leavepulse/ui 0.44.0 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/README.md +49 -3
  2. package/dist/assets/{LpCommandPalette-DCP5g2ik.css → LpCommandPalette-HzAA4gri.css} +21 -21
  3. package/dist/assets/{LpRollingText-CR1mb0Vt.css → LpRollingText-BGnE6q9j.css} +3 -0
  4. package/dist/assets/{LpShortcutsDialog-ChUyU7oV.css → LpShortcutsDialog-CqYX3yy6.css} +28 -7
  5. package/dist/assets/{LpTable-DDQNdf86.css → LpTable-CPwWxTJS.css} +49 -9
  6. package/dist/chunks/{ContextMenuItems-CrfeNPWT.js → ContextMenuItems-BtKU7074.js} +2 -1
  7. package/dist/chunks/{LayoutCanvas-D-jPOAvg.js → LayoutCanvas-BkaGXTjx.js} +1 -1
  8. package/dist/chunks/{LayoutNode-D8Xy9N-o.js → LayoutNode-B3_9E1Xa.js} +9 -5
  9. package/dist/chunks/{LpActionBar-BbwCF6l5.js → LpActionBar-CnfFVIwC.js} +3 -3
  10. package/dist/chunks/{LpAddressInput-BrOqkZqg.js → LpAddressInput-CJOYGZlI.js} +7 -7
  11. package/dist/chunks/{LpAlert-DkOIjsbq.js → LpAlert-B6ilrM7T.js} +1 -1
  12. package/dist/chunks/{LpAppShell-BUKPcHco.js → LpAppShell-B07Lf48e.js} +4 -4
  13. package/dist/chunks/{LpAutocomplete-DxV3Y9h4.js → LpAutocomplete-C8IgSMsi.js} +2 -1
  14. package/dist/chunks/{LpAvatar-ClBbEYZN.js → LpAvatar-C1XStdOo.js} +3 -3
  15. package/dist/chunks/{LpBreadcrumbs-B8IJgFIc.js → LpBreadcrumbs-CQJd73Gm.js} +1 -1
  16. package/dist/chunks/{LpButton-kqJBHIIb.js → LpButton-CKSwC6Mu.js} +1 -1
  17. package/dist/chunks/{LpCalendar-B7Ko5RdR.js → LpCalendar-DrA2McTU.js} +1 -1
  18. package/dist/chunks/{LpCard-CpRByR0q.js → LpCard-C2IvucmX.js} +1 -1
  19. package/dist/chunks/{LpCheckbox-DpqchzH4.js → LpCheckbox-Bkj13CbW.js} +1 -1
  20. package/dist/chunks/{LpCodeBlock-DeHJPq7p.js → LpCodeBlock-ca7ANFyW.js} +1 -1
  21. package/dist/chunks/{LpColorPicker-Bhf1qxhB.js → LpColorPicker-zz4VGkG4.js} +46 -20
  22. package/dist/chunks/{LpConfirmDialog-CIUOSnWo.js → LpConfirmDialog-BTVAR4tF.js} +3 -3
  23. package/dist/chunks/{LpConfirmHost-CDm0Wtpv.js → LpConfirmHost-Ci_uCHgQ.js} +1 -1
  24. package/dist/chunks/{LpContextMenu-DQw5dGfG.js → LpContextMenu-BqkAYa9X.js} +2 -1
  25. package/dist/chunks/{LpDatePicker-Drirx1AK.js → LpDatePicker-BrdFtSTy.js} +16 -10
  26. package/dist/chunks/LpDateRangePicker-Drd7EbIz.js +210 -0
  27. package/dist/chunks/{LpDisclosure-ChQYmjlR.js → LpDisclosure-Cc23-JOT.js} +1 -1
  28. package/dist/chunks/{LpDrawer-bScx-KMO.js → LpDrawer-CfRhHwmE.js} +3 -3
  29. package/dist/chunks/{LpDropdownMenu-DJpoqRCb.js → LpDropdownMenu-DdJGQzPn.js} +2 -1
  30. package/dist/chunks/{LpEmptyState-Dsdqz1Wj.js → LpEmptyState-BJbZXC8D.js} +1 -1
  31. package/dist/chunks/LpFieldNotice-wtieLUTj.js +64 -0
  32. package/dist/chunks/{LpFileTree-CSI_5SK2.js → LpFileTree-CNurOvkV.js} +3 -3
  33. package/dist/chunks/{LpFileTreeNode-B4MiSQX2.js → LpFileTreeNode-D_qRRdsH.js} +3 -3
  34. package/dist/chunks/{LpFormField-CIk5qosh.js → LpFormField-CtVYj6tO.js} +29 -15
  35. package/dist/chunks/{LpIcon-CCnX5_2j.js → LpIcon-DYtaid0K.js} +20 -6
  36. package/dist/chunks/{LpInput-C0e8y8_d.js → LpInput-D-YGQbEv.js} +39 -16
  37. package/dist/chunks/{LpLightbox-Mr0W_6HK.js → LpLightbox-DSDahF23.js} +1 -1
  38. package/dist/chunks/{LpLogViewer-YBOaFnc_.js → LpLogViewer-KypbgOyo.js} +252 -58
  39. package/dist/chunks/{LpMapPicker-NUzS9e37.js → LpMapPicker-Cc84LaM3.js} +1 -1
  40. package/dist/chunks/{LpMediaGallery-DfJmMW0I.js → LpMediaGallery-YKr-cQPN.js} +2 -2
  41. package/dist/chunks/{LpModal-DPwGKBPv.js → LpModal-BzTVeNqe.js} +3 -3
  42. package/dist/chunks/{LpModalNav-DPg5H9f3.js → LpModalNav-CjABSGCu.js} +14 -8
  43. package/dist/chunks/{LpNotificationBell-t5yn-siX.js → LpNotificationBell-CCwyJP5C.js} +26 -14
  44. package/dist/chunks/{LpNumberField-DWnQKktS.js → LpNumberField-B77O-z28.js} +1 -1
  45. package/dist/chunks/{LpPagination-DFngX7Xo.js → LpPagination-BcDlo3r_.js} +1 -1
  46. package/dist/chunks/{LpPasswordInput-CWVDuBJ5.js → LpPasswordInput-eKzQhbQP.js} +2 -2
  47. package/dist/chunks/{LpPhoneInput-CD-ZTeSd.js → LpPhoneInput-BCbrrhgE.js} +126 -23
  48. package/dist/chunks/{LpPie-BLco31Nx.js → LpPie-BEJ2SfI6.js} +9 -10
  49. package/dist/chunks/{LpPopover-p_e_shN3.js → LpPopover-DCKeqiVn.js} +1 -0
  50. package/dist/chunks/LpRangeCalendar-DZuaRV0W.js +331 -0
  51. package/dist/chunks/{LpRollingText-CM5gkSeF.js → LpRollingText-DB7upf-5.js} +1 -1
  52. package/dist/chunks/{LpScrollArea-D8xyKXcF.js → LpScrollArea-Bry1fdOM.js} +14 -2
  53. package/dist/chunks/{LpSection-aM6J_u51.js → LpSection-tKEH0jYf.js} +1 -1
  54. package/dist/chunks/{LpSegmented-Dejd7cIx.js → LpSegmented-C09EEam2.js} +1 -1
  55. package/dist/chunks/{LpSelect-DrRD9I7L.js → LpSelect-DNIL6MB9.js} +20 -23
  56. package/dist/chunks/{LpSidebar-BgwUNWpJ.js → LpSidebar-Bwws_X29.js} +3 -3
  57. package/dist/chunks/{LpSidebarNav-Bqxz8aWT.js → LpSidebarNav-kx-LdqNU.js} +3 -3
  58. package/dist/chunks/{LpStat-dXtyrdX9.js → LpStat-B-7udBRP.js} +1 -1
  59. package/dist/chunks/{LpStepper-Bk-XaQYU.js → LpStepper-C7XiVKZj.js} +34 -19
  60. package/dist/chunks/{LpSwitch-B1aLKulj.js → LpSwitch-OrcOJX9m.js} +1 -1
  61. package/dist/chunks/LpTableFilter-BV8PpLM9.js +158 -0
  62. package/dist/chunks/{LpTabs-_qMVaZJ6.js → LpTabs-29iW1XOx.js} +1 -1
  63. package/dist/chunks/LpTagsInput-D1SuqbhB.js +300 -0
  64. package/dist/chunks/{LpTextarea-yP8hGedR.js → LpTextarea-uuScWo6-.js} +1 -1
  65. package/dist/chunks/{LpThemeProvider-Wjm7Tuit.js → LpThemeProvider-Be4r2TQX.js} +1 -1
  66. package/dist/chunks/{LpThemeSwitcher-CKLc10KZ.js → LpThemeSwitcher-B4aVPbNC.js} +19 -22
  67. package/dist/chunks/{LpTimeField-C5HRgS5H.js → LpTimeField-Cqe7fXnh.js} +1 -1
  68. package/dist/chunks/{LpToaster--oT6lfhL.js → LpToaster-DTtWuKvq.js} +76 -9
  69. package/dist/chunks/{LpTooltip-CBdzeKNf.js → LpTooltip-CXVKcOXT.js} +3 -2
  70. package/dist/chunks/{LpTopologyCanvas-DocsLal3.js → LpTopologyCanvas-6ozNrQKh.js} +2 -1
  71. package/dist/chunks/{LpUptimeBar-DLtxOMRy.js → LpUptimeBar-ugcv25xj.js} +2 -2
  72. package/dist/chunks/icons-CkA0njzm.js +43 -0
  73. package/dist/chunks/{useTheme-C8JHUlPM.js → useTheme-DJm1JSsY.js} +47 -50
  74. package/dist/component-names.d.ts +1 -1
  75. package/dist/components/ContextMenuItems.vue.js +1 -1
  76. package/dist/components/LayoutCanvas.vue.js +1 -1
  77. package/dist/components/LayoutNode.vue.js +1 -1
  78. package/dist/components/LpActionBar.vue.js +1 -1
  79. package/dist/components/LpAddressInput.vue.js +1 -1
  80. package/dist/components/LpAlert.vue.js +1 -1
  81. package/dist/components/LpAppShell.vue.js +1 -1
  82. package/dist/components/LpAutocomplete.vue.js +1 -1
  83. package/dist/components/LpAvatar.vue.js +1 -1
  84. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  85. package/dist/components/LpButton.vue.d.ts +2 -2
  86. package/dist/components/LpButton.vue.js +1 -1
  87. package/dist/components/LpCalendar.vue.js +1 -1
  88. package/dist/components/LpCard.vue.js +1 -1
  89. package/dist/components/LpChart.vue.d.ts +16 -1
  90. package/dist/components/LpChart.vue.js +63 -5
  91. package/dist/components/LpCheckbox.vue.js +1 -1
  92. package/dist/components/LpCodeBlock.vue.js +1 -1
  93. package/dist/components/LpColorPicker.vue.d.ts +2 -2
  94. package/dist/components/LpColorPicker.vue.js +1 -1
  95. package/dist/components/LpCommandPalette.vue.d.ts +6 -0
  96. package/dist/components/LpCommandPalette.vue.js +62 -11
  97. package/dist/components/LpConfirmDialog.vue.js +1 -1
  98. package/dist/components/LpConfirmHost.vue.js +1 -1
  99. package/dist/components/LpContextMenu.vue.js +1 -1
  100. package/dist/components/LpDatePicker.vue.js +1 -1
  101. package/dist/components/LpDateRangePicker.vue.d.ts +60 -0
  102. package/dist/components/LpDateRangePicker.vue.js +4 -0
  103. package/dist/components/LpDisclosure.vue.js +1 -1
  104. package/dist/components/LpDrawer.vue.js +1 -1
  105. package/dist/components/LpDropdownMenu.vue.js +1 -1
  106. package/dist/components/LpDropzone.vue.js +1 -1
  107. package/dist/components/LpEmptyState.vue.js +1 -1
  108. package/dist/components/LpFieldNotice.vue.d.ts +8 -0
  109. package/dist/components/LpFieldNotice.vue.js +4 -0
  110. package/dist/components/LpFileTree.vue.js +1 -1
  111. package/dist/components/LpFileTreeNode.vue.js +1 -1
  112. package/dist/components/LpFormField.vue.d.ts +4 -1
  113. package/dist/components/LpFormField.vue.js +1 -1
  114. package/dist/components/LpIcon.vue.d.ts +0 -1
  115. package/dist/components/LpIcon.vue.js +1 -1
  116. package/dist/components/LpImageEditor.vue.js +2 -2
  117. package/dist/components/LpInput.vue.d.ts +19 -0
  118. package/dist/components/LpInput.vue.js +1 -1
  119. package/dist/components/LpLightbox.vue.js +1 -1
  120. package/dist/components/LpLogViewer.vue.d.ts +52 -1
  121. package/dist/components/LpLogViewer.vue.js +1 -1
  122. package/dist/components/LpMapPicker.vue.js +1 -1
  123. package/dist/components/LpMediaGallery.vue.js +1 -1
  124. package/dist/components/LpModal.vue.js +1 -1
  125. package/dist/components/LpModalNav.vue.js +1 -1
  126. package/dist/components/LpNotificationBell.vue.js +1 -1
  127. package/dist/components/LpNumberField.vue.js +1 -1
  128. package/dist/components/LpPagination.vue.js +1 -1
  129. package/dist/components/LpPasswordInput.vue.js +1 -1
  130. package/dist/components/LpPhoneInput.vue.d.ts +13 -0
  131. package/dist/components/LpPhoneInput.vue.js +1 -1
  132. package/dist/components/LpPie.vue.js +1 -1
  133. package/dist/components/LpPopover.vue.js +1 -1
  134. package/dist/components/LpProgress.vue.d.ts +1 -1
  135. package/dist/components/LpRangeCalendar.vue.d.ts +51 -0
  136. package/dist/components/LpRangeCalendar.vue.js +4 -0
  137. package/dist/components/LpRollingText.vue.d.ts +1 -1
  138. package/dist/components/LpRollingText.vue.js +1 -1
  139. package/dist/components/LpScrollArea.vue.d.ts +2 -2
  140. package/dist/components/LpScrollArea.vue.js +1 -1
  141. package/dist/components/LpSection.vue.js +1 -1
  142. package/dist/components/LpSegmented.vue.js +1 -1
  143. package/dist/components/LpSelect.vue.js +1 -1
  144. package/dist/components/LpShortcutsDialog.vue.d.ts +6 -0
  145. package/dist/components/LpShortcutsDialog.vue.js +56 -14
  146. package/dist/components/LpSidebar.vue.js +1 -1
  147. package/dist/components/LpSidebarNav.vue.js +1 -1
  148. package/dist/components/LpStat.vue.js +1 -1
  149. package/dist/components/LpStepper.vue.js +1 -1
  150. package/dist/components/LpSwitch.vue.js +1 -1
  151. package/dist/components/LpTable.vue.d.ts +84 -2
  152. package/dist/components/LpTable.vue.js +481 -107
  153. package/dist/components/LpTableFilter.vue.d.ts +31 -0
  154. package/dist/components/LpTableFilter.vue.js +4 -0
  155. package/dist/components/LpTabs.vue.js +1 -1
  156. package/dist/components/LpTagsInput.vue.d.ts +77 -0
  157. package/dist/components/LpTagsInput.vue.js +4 -0
  158. package/dist/components/LpTextarea.vue.js +1 -1
  159. package/dist/components/LpThemeProvider.vue.js +1 -1
  160. package/dist/components/LpThemeSwitcher.vue.d.ts +2 -2
  161. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  162. package/dist/components/LpTimeField.vue.js +1 -1
  163. package/dist/components/LpToaster.vue.d.ts +2 -0
  164. package/dist/components/LpToaster.vue.js +1 -1
  165. package/dist/components/LpTooltip.vue.js +1 -1
  166. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  167. package/dist/components/LpUptimeBar.vue.js +1 -1
  168. package/dist/components/chart.js +3 -2
  169. package/dist/components/commandSearch.js +3 -0
  170. package/dist/components/dateRange.d.ts +43 -0
  171. package/dist/components/dateRange.js +76 -0
  172. package/dist/components/exportData.d.ts +58 -0
  173. package/dist/components/exportData.js +165 -0
  174. package/dist/components/logSearch.d.ts +18 -0
  175. package/dist/components/logSearch.js +36 -0
  176. package/dist/components/phone.d.ts +41 -0
  177. package/dist/components/phone.js +80 -0
  178. package/dist/components/tableFilter.d.ts +36 -0
  179. package/dist/components/tableFilter.js +84 -0
  180. package/dist/components/tags.d.ts +20 -0
  181. package/dist/components/tags.js +37 -0
  182. package/dist/composables/useField.d.ts +4 -0
  183. package/dist/composables/useFieldNotice.d.ts +17 -0
  184. package/dist/composables/useFieldNotice.js +28 -0
  185. package/dist/composables/useForm.d.ts +53 -0
  186. package/dist/composables/useForm.js +207 -0
  187. package/dist/composables/useHotkeys.d.ts +65 -5
  188. package/dist/composables/useHotkeys.js +170 -9
  189. package/dist/composables/useInputMask.d.ts +59 -0
  190. package/dist/composables/useInputMask.js +170 -0
  191. package/dist/composables/useLocale.d.ts +2 -0
  192. package/dist/composables/useLocale.js +9 -0
  193. package/dist/composables/usePaintSelect.d.ts +22 -0
  194. package/dist/composables/usePaintSelect.js +169 -0
  195. package/dist/composables/useShift.js +7 -2
  196. package/dist/icons-all.d.ts +1 -0
  197. package/dist/icons-all.js +3 -0
  198. package/dist/icons.d.ts +14 -1
  199. package/dist/index.d.ts +29 -3
  200. package/dist/index.js +195 -138
  201. package/dist/kit-icons.d.ts +2 -0
  202. package/dist/theme/backdrop.d.ts +12 -0
  203. package/dist/theme/presets.d.ts +0 -2
  204. package/package.json +13 -4
  205. package/src/component-names.ts +4 -0
  206. package/src/components/ContextMenuItems.vue +1 -1
  207. package/src/components/LayoutNode.vue +11 -2
  208. package/src/components/LpActionBar.vue +1 -1
  209. package/src/components/LpAutocomplete.vue +1 -0
  210. package/src/components/LpAvatar.vue +2 -2
  211. package/src/components/LpButton.vue +1 -1
  212. package/src/components/LpChart.vue +80 -1
  213. package/src/components/LpColorPicker.vue +34 -1
  214. package/src/components/LpCommandPalette.vue +82 -8
  215. package/src/components/LpContextMenu.vue +1 -1
  216. package/src/components/LpDatePicker.vue +11 -4
  217. package/src/components/LpDateRangePicker.vue +226 -0
  218. package/src/components/LpDrawer.vue +1 -1
  219. package/src/components/LpDropdownMenu.vue +1 -0
  220. package/src/components/LpFieldNotice.vue +65 -0
  221. package/src/components/LpFormField.vue +33 -4
  222. package/src/components/LpIcon.vue +22 -4
  223. package/src/components/LpInput.vue +46 -6
  224. package/src/components/LpLogViewer.vue +225 -22
  225. package/src/components/LpModal.vue +2 -2
  226. package/src/components/LpModalNav.vue +13 -2
  227. package/src/components/LpNotificationBell.vue +15 -7
  228. package/src/components/LpPhoneInput.vue +179 -20
  229. package/src/components/LpPie.vue +8 -5
  230. package/src/components/LpPopover.vue +1 -0
  231. package/src/components/LpRangeCalendar.vue +365 -0
  232. package/src/components/LpRollingText.vue +3 -0
  233. package/src/components/LpScrollArea.vue +22 -2
  234. package/src/components/LpSelect.vue +0 -0
  235. package/src/components/LpShortcutsDialog.vue +77 -8
  236. package/src/components/LpStepper.vue +23 -10
  237. package/src/components/LpSwitch.vue +1 -1
  238. package/src/components/LpTable.vue +584 -65
  239. package/src/components/LpTableFilter.vue +175 -0
  240. package/src/components/LpTagsInput.vue +364 -0
  241. package/src/components/LpThemeSwitcher.vue +19 -23
  242. package/src/components/LpToaster.vue +91 -5
  243. package/src/components/LpTooltip.vue +9 -2
  244. package/src/components/LpTopologyCanvas.vue +7 -1
  245. package/src/components/chart.ts +5 -3
  246. package/src/components/commandSearch.ts +6 -0
  247. package/src/components/dateRange.ts +134 -0
  248. package/src/components/exportData.ts +228 -0
  249. package/src/components/logSearch.ts +46 -0
  250. package/src/components/phone.ts +140 -0
  251. package/src/components/tableFilter.ts +122 -0
  252. package/src/components/tags.ts +62 -0
  253. package/src/composables/useField.ts +4 -0
  254. package/src/composables/useFieldNotice.ts +59 -0
  255. package/src/composables/useForm.ts +314 -0
  256. package/src/composables/useHotkeys.ts +269 -13
  257. package/src/composables/useInputMask.ts +254 -0
  258. package/src/composables/useLocale.ts +14 -0
  259. package/src/composables/usePaintSelect.ts +243 -0
  260. package/src/composables/useShift.ts +13 -2
  261. package/src/iconSubset.d.mts +10 -0
  262. package/src/iconSubset.mjs +51 -0
  263. package/src/icons-all.ts +10 -0
  264. package/src/icons.ts +59 -8
  265. package/src/index.ts +37 -3
  266. package/src/kit-icons.ts +5 -0
  267. package/src/nuxt.ts +30 -2
  268. package/src/runtime/theme.plugin.ts +2 -2
  269. package/src/theme/backdrop.ts +69 -0
  270. package/src/theme/presets.ts +6 -64
  271. package/src/tokens/tokens.css +53 -4
@@ -5,10 +5,11 @@ import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
5
5
  import { usePillTransition } from "../composables/usePillTransition.js";
6
6
  import { useReveal } from "../composables/useReveal.js";
7
7
  import { normalise, pointCount, resolveLabels, extent, axisTicks, plotHeight, plotWidth, xAt, yAt, areaPath, linePath, barPath, markerIndex, chartSummary, niceScale, nearestIndex, formatTick } from "./chart.js";
8
- import { _ as _sfc_main$1 } from "../chunks/LpContextMenu-DQw5dGfG.js";
9
- import { _ as _sfc_main$2 } from "../chunks/LpIcon-CCnX5_2j.js";
8
+ import { _ as _sfc_main$1 } from "../chunks/LpContextMenu-BqkAYa9X.js";
9
+ import { _ as _sfc_main$2 } from "../chunks/LpIcon-DYtaid0K.js";
10
10
  import { _ as _sfc_main$3 } from "../chunks/LpShift-DXNsauQZ.js";
11
11
  import { useMergedAttrs } from "../composables/useMergedClass.js";
12
+ import { toCsv, downloadFile, fileStem, svgToPng, backgroundOf, resolveCssColor } from "./exportData.js";
12
13
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
13
14
  import '../assets/LpChart-CzgCGaAA.css';const _hoisted_1 = {
14
15
  key: 0,
@@ -111,11 +112,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
111
112
  menuItems: {}
112
113
  },
113
114
  emits: ["pointClick", "pointContextMenu"],
114
- setup(__props, { emit: __emit }) {
115
+ setup(__props, { expose: __expose, emit: __emit }) {
115
116
  const props = __props;
116
117
  const strings = useLabels(
117
118
  "chart",
118
- { empty: "No data", rightAxis: "Measured on the right axis", point: "Point" },
119
+ { empty: "No data", rightAxis: "Measured on the right axis", point: "Point", xColumn: "Label" },
119
120
  () => props.text
120
121
  );
121
122
  const emit = __emit;
@@ -658,6 +659,61 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
658
659
  const readout = computed(
659
660
  () => keyboard.value && active.value >= 0 ? `${labels.value[active.value] ?? `${strings.value.point} ${active.value + 1}`}: ${tooltipRows.value.map((r) => `${r.name} ${r.text}`).join(", ")}` : ""
660
661
  );
662
+ const svgEl = ref(null);
663
+ function exportCsv(options = {}) {
664
+ const rows = labels.value.map((label, i) => ({ label, i }));
665
+ const csv = toCsv(rows, [
666
+ { key: "label", label: strings.value.xColumn },
667
+ ...allSeries.value.map((s) => ({ key: s.id, label: s.name, value: (r) => s.values[r.i] }))
668
+ ], options);
669
+ if (options.download !== false) {
670
+ downloadFile(`${fileStem(options.filename ?? props.title, "chart")}.csv`, csv, "text/csv;charset=utf-8");
671
+ }
672
+ return csv;
673
+ }
674
+ async function exportPng(options = {}) {
675
+ const svg = svgEl.value;
676
+ if (!svg || typeof document === "undefined") return null;
677
+ const style = getComputedStyle(root.value ?? svg);
678
+ const font = style.fontFamily;
679
+ const ink = style.getPropertyValue("--color-ink").trim() || style.color;
680
+ const muted = style.getPropertyValue("--color-muted-strong").trim() || style.color;
681
+ const legend = props.showLegend && allSeries.value.length > 1 ? visible.value : [];
682
+ const blob = await svgToPng(svg, {
683
+ scale: options.scale,
684
+ padding: 16,
685
+ background: options.background ?? backgroundOf(root.value),
686
+ header: (ctx) => {
687
+ let y = 0;
688
+ if (props.title) {
689
+ ctx.font = `500 14px ${font}`;
690
+ ctx.fillStyle = ink;
691
+ ctx.textBaseline = "top";
692
+ ctx.fillText(props.title, 0, y);
693
+ y += 22;
694
+ }
695
+ if (legend.length) {
696
+ ctx.font = `12px ${font}`;
697
+ ctx.textBaseline = "middle";
698
+ let x = 0;
699
+ for (const s of legend) {
700
+ ctx.fillStyle = resolveCssColor(s.color, root.value ?? svg);
701
+ ctx.beginPath();
702
+ ctx.arc(x + 4, y + 8, 4, 0, Math.PI * 2);
703
+ ctx.fill();
704
+ ctx.fillStyle = muted;
705
+ ctx.fillText(s.name, x + 14, y + 8);
706
+ x += 14 + ctx.measureText(s.name).width + 16;
707
+ }
708
+ y += 24;
709
+ }
710
+ return y ? y + 8 : 0;
711
+ }
712
+ });
713
+ if (options.download !== false) downloadFile(`${fileStem(options.filename ?? props.title, "chart")}.png`, blob);
714
+ return blob;
715
+ }
716
+ __expose({ exportCsv, exportPng });
661
717
  const { class: rootClass, attrs: rest } = useMergedAttrs(
662
718
  "flex w-full flex-col gap-3"
663
719
  );
@@ -719,6 +775,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
719
775
  createElementVNode("span", _hoisted_11, toDisplayString(__props.emptyLabel ?? unref(strings).empty), 1)
720
776
  ])) : width.value > 0 ? (openBlock(), createElementBlock("svg", {
721
777
  key: 1,
778
+ ref_key: "svgEl",
779
+ ref: svgEl,
722
780
  width: width.value,
723
781
  height: __props.height,
724
782
  class: "overflow-visible touch-none select-none",
@@ -1038,7 +1096,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1038
1096
  };
1039
1097
  }
1040
1098
  });
1041
- const LpChart = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bd77643a"]]);
1099
+ const LpChart = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1c25e280"]]);
1042
1100
  export {
1043
1101
  LpChart as default
1044
1102
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCheckbox-DpqchzH4.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCheckbox-Bkj13CbW.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCodeBlock-DeHJPq7p.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCodeBlock-ca7ANFyW.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -81,7 +81,7 @@ type __VLS_Props = {
81
81
  */
82
82
  copyToast?: string | false;
83
83
  };
84
- declare var __VLS_56: {
84
+ declare var __VLS_61: {
85
85
  color: string;
86
86
  hsv: {
87
87
  h: number;
@@ -91,7 +91,7 @@ declare var __VLS_56: {
91
91
  };
92
92
  };
93
93
  type __VLS_Slots = {} & {
94
- default?: (props: typeof __VLS_56) => any;
94
+ default?: (props: typeof __VLS_61) => any;
95
95
  };
96
96
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
97
97
  open: import("vue").Ref<boolean, boolean>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpColorPicker-Bhf1qxhB.js";
1
+ import { _ as _sfc_main } from "../chunks/LpColorPicker-zz4VGkG4.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -129,6 +129,12 @@ type __VLS_Props = {
129
129
  * so a stored history never resurrects a command that has gone away.
130
130
  */
131
131
  recent?: string[];
132
+ /**
133
+ * Let the palette keep the history itself, in localStorage under this key:
134
+ * every top-level command run is remembered, newest first. Ignored while
135
+ * `recent` is bound, which stays the way to store it somewhere else.
136
+ */
137
+ recentKey?: string;
132
138
  /** How many recent commands to surface. */
133
139
  recentLimit?: number;
134
140
  /** Headings the palette adds itself. */
@@ -1,7 +1,7 @@
1
- import { defineComponent, ref, useId, computed, shallowRef, useSlots, watch, nextTick, onBeforeUnmount, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, withModifiers, createTextVNode, toDisplayString, createElementVNode, createElementBlock, Fragment, renderList, createCommentVNode, withDirectives, withKeys, vModelText, resolveDynamicComponent, Transition, renderSlot } from "vue";
1
+ import { defineComponent, ref, useId, computed, shallowRef, watch, useSlots, nextTick, onBeforeUnmount, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, withModifiers, createTextVNode, toDisplayString, createElementVNode, createElementBlock, Fragment, renderList, createCommentVNode, withDirectives, withKeys, vModelText, resolveDynamicComponent, Transition, renderSlot } from "vue";
2
2
  import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription } from "reka-ui";
3
- import { _ as _sfc_main$1 } from "../chunks/LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-D8xyKXcF.js";
3
+ import { _ as _sfc_main$1 } from "../chunks/LpIcon-DYtaid0K.js";
4
+ import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-Bry1fdOM.js";
5
5
  import { useAsyncTask } from "../composables/useAsyncTask.js";
6
6
  import { useGlass } from "../composables/useGlass.js";
7
7
  import { useClipboard } from "../composables/useClipboard.js";
@@ -10,7 +10,7 @@ import { useModalLayer } from "./modalDepth.js";
10
10
  import { useLabels } from "../composables/useLpConfig.js";
11
11
  import { parseCommandQuery, rankCommandItems } from "./commandSearch.js";
12
12
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
13
- import '../assets/LpCommandPalette-DCP5g2ik.css';const _hoisted_1 = { class: "flex shrink-0 items-center gap-2.5 border-b border-line px-4" };
13
+ import '../assets/LpCommandPalette-HzAA4gri.css';const _hoisted_1 = { class: "flex shrink-0 items-center gap-2.5 border-b border-line px-4" };
14
14
  const _hoisted_2 = ["title", "onClick"];
15
15
  const _hoisted_3 = ["aria-activedescendant", "placeholder", "onKeydown"];
16
16
  const _hoisted_4 = { class: "shrink-0 rounded border border-line px-1.5 py-0.5 text-[10px] text-muted" };
@@ -56,7 +56,7 @@ const _hoisted_19 = {
56
56
  key: 0,
57
57
  class: "rounded-xs bg-brand/25 text-ink"
58
58
  };
59
- const _hoisted_20 = { class: "flex shrink-0 items-center gap-4 border-t border-line px-4 py-2.5 text-[11px] text-muted" };
59
+ const _hoisted_20 = { class: "flex shrink-0 items-center gap-4 border-t border-line px-4 py-2.5 text-[11px] text-muted [@media(hover:none)_and_(pointer:coarse)]:hidden" };
60
60
  const _hoisted_21 = { class: "flex items-center gap-1" };
61
61
  const _hoisted_22 = { class: "flex items-center gap-1" };
62
62
  const _hoisted_23 = {
@@ -69,6 +69,7 @@ const _hoisted_24 = {
69
69
  };
70
70
  const _hoisted_25 = { class: "ml-auto flex items-center gap-1" };
71
71
  const _hoisted_26 = { class: "rounded border border-line px-1 text-[10px]" };
72
+ const RECENT_KEEP = 20;
72
73
  const STAGGER_MS = 45;
73
74
  const STAGGER_MAX = 10;
74
75
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -83,6 +84,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
83
84
  debounce: { default: 250 },
84
85
  minChars: { default: 1 },
85
86
  recent: {},
87
+ recentKey: {},
86
88
  recentLimit: { default: 5 },
87
89
  recentLabel: { default: "Recent" },
88
90
  resultsLabel: { default: "Results" },
@@ -165,6 +167,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
165
167
  event.stopPropagation();
166
168
  enter({ id: `${c.id}:actions`, label: c.label, icon: c.icon, children: actions });
167
169
  }
170
+ watch(
171
+ () => props.commands,
172
+ (commands) => {
173
+ if (!trail.value.length) return;
174
+ let level = commands;
175
+ const next = [];
176
+ for (const step of trail.value) {
177
+ const fresh = level.find((c) => c.id === step.id);
178
+ if (!fresh) return;
179
+ next.push(fresh);
180
+ level = Array.isArray(fresh.children) ? fresh.children : [];
181
+ }
182
+ trail.value = next;
183
+ const last = next[next.length - 1];
184
+ if (last && Array.isArray(last.children)) modeItems.value = last.children;
185
+ }
186
+ );
168
187
  function enter(c) {
169
188
  trailState.value = [...trailState.value, { query: query.value, selectedId: selectedId.value }];
170
189
  trail.value = [...trail.value, c];
@@ -241,11 +260,35 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
241
260
  const seen = new Set(ranked.value.map((c) => c.id));
242
261
  return found.value.filter((c) => !seen.has(c.id)).map((c) => c.group ? c : { ...c, group: props.resultsLabel });
243
262
  });
263
+ const ownRecent = ref([]);
264
+ watch(
265
+ () => props.recentKey,
266
+ (key) => {
267
+ if (!key || typeof localStorage === "undefined") return;
268
+ try {
269
+ const stored = JSON.parse(localStorage.getItem(key) ?? "[]");
270
+ ownRecent.value = Array.isArray(stored) ? stored.filter((v) => typeof v === "string") : [];
271
+ } catch {
272
+ ownRecent.value = [];
273
+ }
274
+ },
275
+ { immediate: true }
276
+ );
277
+ function remember(id) {
278
+ const key = props.recentKey;
279
+ if (!key || props.recent) return;
280
+ ownRecent.value = [id, ...ownRecent.value.filter((v) => v !== id)].slice(0, RECENT_KEEP);
281
+ try {
282
+ localStorage.setItem(key, JSON.stringify(ownRecent.value));
283
+ } catch {
284
+ }
285
+ }
286
+ const recentIds = computed(() => props.recent ?? (props.recentKey ? ownRecent.value : []));
244
287
  const recentItems = computed(() => {
245
- if (mode.value || query.value.trim() || !props.recent?.length) return [];
288
+ if (mode.value || query.value.trim() || !recentIds.value.length) return [];
246
289
  const byId = new Map(props.commands.map((c) => [c.id, c]));
247
290
  const out = [];
248
- for (const id of props.recent) {
291
+ for (const id of recentIds.value) {
249
292
  const c = byId.get(id);
250
293
  if (c && !c.disabled && !out.includes(c)) out.push(c);
251
294
  if (out.length >= props.recentLimit) break;
@@ -295,6 +338,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
295
338
  const paragraphs = computed(
296
339
  () => (active.value?.preview ?? active.value?.excerpt ?? "").split(/\n{2,}/).map((part) => part.trim()).filter(Boolean)
297
340
  );
341
+ const paneDescription = computed(() => {
342
+ const description = active.value?.description?.trim();
343
+ if (!description) return void 0;
344
+ const body = paragraphs.value.join(" ");
345
+ return body.startsWith(description) ? void 0 : description;
346
+ });
298
347
  watch(
299
348
  () => active.value?.id,
300
349
  async () => {
@@ -435,9 +484,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
435
484
  return;
436
485
  }
437
486
  emit("run", c.id, c);
487
+ if (!mode.value) remember(c.id);
438
488
  if (c.keepOpen) {
439
489
  query.value = "";
440
- select(0);
490
+ if (mode.value) void nextTick(() => select(Math.max(0, flat.value.findIndex((x) => x.id === c.id))));
491
+ else select(0);
441
492
  inputRef.value?.focus();
442
493
  return;
443
494
  }
@@ -503,7 +554,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
503
554
  createVNode(unref(DialogContent), {
504
555
  ref_key: "contentRef",
505
556
  ref: contentRef,
506
- class: normalizeClass(["lp-cmd-dialog fixed left-1/2 top-[12vh] flex max-h-[76vh] -translate-x-1/2 flex-col overflow-hidden rounded-card border border-line shadow-panel outline-none data-[state=open]:animate-[pop-in_160ms_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_130ms_ease]", [unref(frosted) ? unref(layer).nested ? "lp-glass-overlay--nested" : "lp-glass-overlay" : "bg-surface-raised", __props.previewPane && "lp-cmd-split"]]),
557
+ class: normalizeClass(["lp-cmd-dialog fixed left-1/2 top-[12vh] flex max-h-[76vh] -translate-x-1/2 flex-col overflow-hidden rounded-card border border-line shadow-panel outline-none data-[state=open]:animate-[pop-in_160ms_var(--ease-emphasized)] data-[state=closed]:animate-[pop-out_130ms_ease]", [unref(frosted) ? unref(layer).nested ? "lp-glass-overlay lp-glass-overlay--nested" : "lp-glass-overlay" : "bg-surface-raised", __props.previewPane && "lp-cmd-split"]]),
507
558
  style: normalizeStyle({ zIndex: unref(layer).panel }),
508
559
  "data-pane": paneOpen.value ? "open" : void 0,
509
560
  onOpenAutoFocus: _cache[2] || (_cache[2] = withModifiers(() => {
@@ -730,7 +781,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
730
781
  }, null, 8, ["name"])) : createCommentVNode("", true),
731
782
  createElementVNode("h3", _hoisted_17, toDisplayString(active.value.label), 1)
732
783
  ]),
733
- active.value.description ? (openBlock(), createElementBlock("p", _hoisted_18, toDisplayString(active.value.description), 1)) : createCommentVNode("", true),
784
+ paneDescription.value ? (openBlock(), createElementBlock("p", _hoisted_18, toDisplayString(paneDescription.value), 1)) : createCommentVNode("", true),
734
785
  (openBlock(true), createElementBlock(Fragment, null, renderList(paragraphs.value, (para, i) => {
735
786
  return openBlock(), createElementBlock("p", {
736
787
  key: i,
@@ -793,7 +844,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
793
844
  };
794
845
  }
795
846
  });
796
- const LpCommandPalette = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7fa6825e"]]);
847
+ const LpCommandPalette = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bb9a3f4c"]]);
797
848
  export {
798
849
  LpCommandPalette as default
799
850
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpConfirmDialog-CIUOSnWo.js";
1
+ import { _ as _sfc_main } from "../chunks/LpConfirmDialog-BTVAR4tF.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpConfirmHost-CDm0Wtpv.js";
1
+ import { _ as _sfc_main } from "../chunks/LpConfirmHost-Ci_uCHgQ.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpContextMenu-DQw5dGfG.js";
1
+ import { _ as _sfc_main } from "../chunks/LpContextMenu-BqkAYa9X.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDatePicker-Drirx1AK.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDatePicker-BrdFtSTy.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -0,0 +1,60 @@
1
+ import { type DateRange, type DateRangePreset } from "./dateRange";
2
+ export interface DateRangePickerLabels extends Record<string, string> {
3
+ placeholder: string;
4
+ clear: string;
5
+ presets: string;
6
+ today: string;
7
+ last7: string;
8
+ last30: string;
9
+ thisMonth: string;
10
+ lastMonth: string;
11
+ }
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ declare const __VLS_export: import("vue").DefineComponent<{
15
+ /** Selected range (v-model). */
16
+ modelValue?: DateRange;
17
+ placeholder?: string;
18
+ min?: string;
19
+ max?: string;
20
+ isDisabled?: (iso: string) => boolean;
21
+ isDateUnavailable?: (iso: string) => boolean;
22
+ /** Longest allowed range, in days. */
23
+ maximumDays?: number;
24
+ /** Shortcut ranges; an empty list hides them. Defaults to the built-in set. */
25
+ presets?: DateRangePreset[];
26
+ clearable?: boolean;
27
+ disabled?: boolean;
28
+ invalid?: boolean;
29
+ size?: "sm" | "md" | "lg";
30
+ locale?: string;
31
+ /** Intl format for the displayed ends. */
32
+ format?: Intl.DateTimeFormatOptions;
33
+ labels?: Partial<DateRangePickerLabels>;
34
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
35
+ "update:modelValue": (value: DateRange | undefined) => any;
36
+ }, string, import("vue").PublicProps, Readonly<{
37
+ /** Selected range (v-model). */
38
+ modelValue?: DateRange;
39
+ placeholder?: string;
40
+ min?: string;
41
+ max?: string;
42
+ isDisabled?: (iso: string) => boolean;
43
+ isDateUnavailable?: (iso: string) => boolean;
44
+ /** Longest allowed range, in days. */
45
+ maximumDays?: number;
46
+ /** Shortcut ranges; an empty list hides them. Defaults to the built-in set. */
47
+ presets?: DateRangePreset[];
48
+ clearable?: boolean;
49
+ disabled?: boolean;
50
+ invalid?: boolean;
51
+ size?: "sm" | "md" | "lg";
52
+ locale?: string;
53
+ /** Intl format for the displayed ends. */
54
+ format?: Intl.DateTimeFormatOptions;
55
+ labels?: Partial<DateRangePickerLabels>;
56
+ }> & Readonly<{
57
+ "onUpdate:modelValue"?: ((value: DateRange | undefined) => any) | undefined;
58
+ }>, {
59
+ size: "sm" | "md" | "lg";
60
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,4 @@
1
+ import { _ as _sfc_main } from "../chunks/LpDateRangePicker-Drd7EbIz.js";
2
+ export {
3
+ _sfc_main as default
4
+ };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDisclosure-ChQYmjlR.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDisclosure-Cc23-JOT.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDrawer-bScx-KMO.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDrawer-CfRhHwmE.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDropdownMenu-DJpoqRCb.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDropdownMenu-DdJGQzPn.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, onMounted, watch, onBeforeUnmount, openBlock, createElementBlock, mergeProps, unref, withModifiers, createElementVNode, renderSlot, createVNode, normalizeClass, toDisplayString, createCommentVNode } from "vue";
2
2
  import { useMergedAttrs } from "../composables/useMergedClass.js";
3
3
  import { useReveal } from "../composables/useReveal.js";
4
- import { _ as _sfc_main$1 } from "../chunks/LpIcon-CCnX5_2j.js";
4
+ import { _ as _sfc_main$1 } from "../chunks/LpIcon-DYtaid0K.js";
5
5
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
6
6
  import '../assets/LpDropzone-i4BdMi1H.css';const _hoisted_1 = ["disabled"];
7
7
  const _hoisted_2 = {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpEmptyState-Dsdqz1Wj.js";
1
+ import { _ as _sfc_main } from "../chunks/LpEmptyState-BJbZXC8D.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -0,0 +1,8 @@
1
+ import type { FieldNotice } from "../composables/useFieldNotice";
2
+ type __VLS_Props = {
3
+ notice: FieldNotice;
4
+ id?: 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/LpFieldNotice-wtieLUTj.js";
2
+ export {
3
+ _sfc_main as default
4
+ };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTree-CSI_5SK2.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTree-CNurOvkV.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTreeNode-B4MiSQX2.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTreeNode-D_qRRdsH.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -9,7 +9,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
9
9
  id?: string;
10
10
  invalid?: boolean;
11
11
  disabled?: boolean;
12
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
12
+ }, {
13
+ notify: (text: string, options?: import("../index.js").FieldNoticeOptions) => void;
14
+ clearNotice: () => void;
15
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
13
16
  label?: string;
14
17
  hint?: string;
15
18
  error?: string;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFormField-CIk5qosh.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFormField-CtVYj6tO.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,3 @@
1
- import "../icons";
2
1
  type __VLS_Props = {
3
2
  /** iconify name, e.g. "lucide:check". Bare names assume the lucide set. */
4
3
  name: string;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpIcon-CCnX5_2j.js";
1
+ import { _ as _sfc_main } from "../chunks/LpIcon-DYtaid0K.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -4,9 +4,9 @@ import { isSideways, coverScale, cropGeometry } from "./imageCrop.js";
4
4
  import { useHotkeys } from "../composables/useHotkeys.js";
5
5
  import { useReveal } from "../composables/useReveal.js";
6
6
  import { useZoomPan } from "../composables/useZoomPan.js";
7
- import { _ as _sfc_main$1 } from "../chunks/LpButton-kqJBHIIb.js";
7
+ import { _ as _sfc_main$1 } from "../chunks/LpButton-CKSwC6Mu.js";
8
8
  import "reka-ui";
9
- import { _ as _sfc_main$2 } from "../chunks/LpIcon-CCnX5_2j.js";
9
+ import { _ as _sfc_main$2 } from "../chunks/LpIcon-DYtaid0K.js";
10
10
  import { useMergedAttrs } from "../composables/useMergedClass.js";
11
11
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
12
12
  import '../assets/LpImageEditor-CbMA82g8.css';const _hoisted_1 = ["aria-label"];
@@ -1,3 +1,4 @@
1
+ import { type MaskSpec, type MaskTokens } from "../composables/useInputMask";
1
2
  declare const _default: typeof __VLS_export;
2
3
  export default _default;
3
4
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
@@ -28,6 +29,14 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
28
29
  * disallowed input/paste at the source — cursor- and IME-safe.
29
30
  */
30
31
  restrict?: RegExp;
32
+ /**
33
+ * Format-as-you-type mask ("+0 (000) 000-00-00", a list, or a function of
34
+ * the raw value). The model holds the masked text; `update:raw` carries
35
+ * the accepted characters alone.
36
+ */
37
+ mask?: MaskSpec;
38
+ /** Extra or replacement mask tokens, one-character RegExps by key. */
39
+ maskTokens?: MaskTokens;
31
40
  }, {
32
41
  focus: (options?: FocusOptions) => void | undefined;
33
42
  blur: () => void | undefined;
@@ -35,6 +44,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
35
44
  input: import("vue").Ref<HTMLInputElement | null, HTMLInputElement | null>;
36
45
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
37
46
  "update:modelValue": (value: string) => any;
47
+ "update:raw": (value: string) => any;
38
48
  }, string, import("vue").PublicProps, Readonly<{
39
49
  modelValue?: string;
40
50
  size?: "md" | "sm" | "lg" | undefined;
@@ -63,8 +73,17 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
63
73
  * disallowed input/paste at the source — cursor- and IME-safe.
64
74
  */
65
75
  restrict?: RegExp;
76
+ /**
77
+ * Format-as-you-type mask ("+0 (000) 000-00-00", a list, or a function of
78
+ * the raw value). The model holds the masked text; `update:raw` carries
79
+ * the accepted characters alone.
80
+ */
81
+ mask?: MaskSpec;
82
+ /** Extra or replacement mask tokens, one-character RegExps by key. */
83
+ maskTokens?: MaskTokens;
66
84
  }> & Readonly<{
67
85
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
86
+ "onUpdate:raw"?: ((value: string) => any) | undefined;
68
87
  }>, {
69
88
  type: string;
70
89
  size: "md" | "sm" | "lg";
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpInput-C0e8y8_d.js";
1
+ import { _ as _sfc_main } from "../chunks/LpInput-D-YGQbEv.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLightbox-Mr0W_6HK.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLightbox-DSDahF23.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };