@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
@@ -16,6 +16,14 @@ export interface LogViewerLabels {
16
16
  /** `{n}` is replaced by the count. */
17
17
  identical: string;
18
18
  jump: string;
19
+ search: string;
20
+ clearSearch: string;
21
+ previousMatch: string;
22
+ nextMatch: string;
23
+ /** `{current}` and `{total}` are replaced. */
24
+ matchCount: string;
25
+ noMatches: string;
26
+ levels: string;
19
27
  }
20
28
  export type LogLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal" | "success";
21
29
  export interface LogLine {
@@ -87,8 +95,32 @@ declare const __VLS_export: import("vue").DefineComponent<{
87
95
  * so a duplicate level word / timestamp doesn't repeat in the message body.
88
96
  */
89
97
  parse?: boolean;
98
+ /**
99
+ * Keep only the newest N lines on screen. The consumer can keep pushing
100
+ * into the same array (or hand over a longer one) and the viewer shows the
101
+ * tail; trimming the source itself is still the cheaper way to cap memory.
102
+ */
103
+ maxLines?: number;
104
+ /**
105
+ * A bar above the stream with a search box (Enter / Shift+Enter or F3 step
106
+ * through matches) and level chips. The term binds via `v-model:search`,
107
+ * the chosen levels via `v-model:levels`.
108
+ */
109
+ toolbar?: boolean;
90
110
  labels?: Partial<LogViewerLabels>;
91
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
111
+ } & {
112
+ /** The toolbar's search term. Without the toolbar, `highlight` is the term. */
113
+ search?: string;
114
+ /** Levels to show. Empty shows every level. */
115
+ levels?: LogLevel[];
116
+ }, {
117
+ next: () => void;
118
+ previous: () => void;
119
+ focusSearch: () => void | undefined;
120
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
121
+ "update:search": (value: string) => any;
122
+ "update:levels": (value: LogLevel[]) => any;
123
+ } & {
92
124
  filter: (by: {
93
125
  source?: string;
94
126
  level?: LogLevel;
@@ -152,12 +184,31 @@ declare const __VLS_export: import("vue").DefineComponent<{
152
184
  * so a duplicate level word / timestamp doesn't repeat in the message body.
153
185
  */
154
186
  parse?: boolean;
187
+ /**
188
+ * Keep only the newest N lines on screen. The consumer can keep pushing
189
+ * into the same array (or hand over a longer one) and the viewer shows the
190
+ * tail; trimming the source itself is still the cheaper way to cap memory.
191
+ */
192
+ maxLines?: number;
193
+ /**
194
+ * A bar above the stream with a search box (Enter / Shift+Enter or F3 step
195
+ * through matches) and level chips. The term binds via `v-model:search`,
196
+ * the chosen levels via `v-model:levels`.
197
+ */
198
+ toolbar?: boolean;
155
199
  labels?: Partial<LogViewerLabels>;
200
+ } & {
201
+ /** The toolbar's search term. Without the toolbar, `highlight` is the term. */
202
+ search?: string;
203
+ /** Levels to show. Empty shows every level. */
204
+ levels?: LogLevel[];
156
205
  }> & Readonly<{
157
206
  onFilter?: ((by: {
158
207
  source?: string;
159
208
  level?: LogLevel;
160
209
  }) => any) | undefined;
210
+ "onUpdate:search"?: ((value: string) => any) | undefined;
211
+ "onUpdate:levels"?: ((value: LogLevel[]) => any) | undefined;
161
212
  "onReach-top"?: (() => any) | undefined;
162
213
  }>, {
163
214
  height: string;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLogViewer-YBOaFnc_.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLogViewer-KypbgOyo.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpMapPicker-NUzS9e37.js";
1
+ import { _ as _sfc_main } from "../chunks/LpMapPicker-Cc84LaM3.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpMediaGallery-DfJmMW0I.js";
1
+ import { _ as _sfc_main } from "../chunks/LpMediaGallery-YKr-cQPN.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModal-DPwGKBPv.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModal-BzTVeNqe.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModalNav-DPg5H9f3.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModalNav-CjABSGCu.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNotificationBell-t5yn-siX.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNotificationBell-CCwyJP5C.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNumberField-DWnQKktS.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNumberField-B77O-z28.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPagination-DFngX7Xo.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPagination-BcDlo3r_.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPasswordInput-CWVDuBJ5.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPasswordInput-eKzQhbQP.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -6,6 +6,17 @@ export interface PhoneDetail {
6
6
  dialCode: string;
7
7
  /** National part (digits after the dial code). */
8
8
  number: string;
9
+ /** Normalised "+380501234567"; empty when there are no digits. */
10
+ e164: string;
11
+ /** The length fits the country. False until the formatter has loaded. */
12
+ possible: boolean;
13
+ /** A real number for the country. False until the formatter has loaded. */
14
+ valid: boolean;
15
+ /**
16
+ * "MOBILE", "FIXED_LINE"… when known. The `min` metadata the field loads does
17
+ * not carry number types, so this stays undefined unless that changes.
18
+ */
19
+ type?: string;
9
20
  }
10
21
  declare const _default: typeof __VLS_export;
11
22
  export default _default;
@@ -16,6 +27,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
16
27
  only?: string[];
17
28
  /** Default country (ISO2) used when the field is empty. */
18
29
  defaultCountry?: string;
30
+ /** Unset shows an example number for the active country. */
19
31
  placeholder?: string;
20
32
  disabled?: boolean;
21
33
  invalid?: boolean;
@@ -32,6 +44,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
32
44
  only?: string[];
33
45
  /** Default country (ISO2) used when the field is empty. */
34
46
  defaultCountry?: string;
47
+ /** Unset shows an example number for the active country. */
35
48
  placeholder?: string;
36
49
  disabled?: boolean;
37
50
  invalid?: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPhoneInput-CD-ZTeSd.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPhoneInput-BCbrrhgE.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPie-BLco31Nx.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPie-BEJ2SfI6.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPopover-p_e_shN3.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPopover-DCKeqiVn.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -52,9 +52,9 @@ type __VLS_Props = {
52
52
  };
53
53
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
54
54
  size: number;
55
+ duration: number;
55
56
  max: number;
56
57
  value: number;
57
- duration: number;
58
58
  variant: "bar" | "ring";
59
59
  tone: "brand" | "action" | "danger" | "accent" | "auto";
60
60
  animateOnMount: boolean;
@@ -0,0 +1,51 @@
1
+ import { type DateRange } from "./dateRange";
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
4
+ export interface RangeCalendarLabels extends Record<string, string> {
5
+ previous: string;
6
+ next: string;
7
+ }
8
+ /** How a range changed: picked by two clicks, or an end reshaped. */
9
+ export type RangeChange = {
10
+ via: "pick" | "drag" | "keyboard";
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<{
13
+ /** Selected range, ISO "YYYY-MM-DD" ends (v-model). */
14
+ modelValue?: DateRange;
15
+ min?: string;
16
+ max?: string;
17
+ /** Days that cannot be picked at all. */
18
+ isDisabled?: (iso: string) => boolean;
19
+ /** Days a range may not include (struck through, and a range cannot span them). */
20
+ isDateUnavailable?: (iso: string) => boolean;
21
+ /** Months shown side by side. */
22
+ months?: number;
23
+ /** Longest allowed range, in days. */
24
+ maximumDays?: number;
25
+ locale?: string;
26
+ weekdayFormat?: "narrow" | "short" | "long";
27
+ labels?: Partial<RangeCalendarLabels>;
28
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
29
+ "update:modelValue": (value: DateRange, change: RangeChange) => any;
30
+ }, string, import("vue").PublicProps, Readonly<{
31
+ /** Selected range, ISO "YYYY-MM-DD" ends (v-model). */
32
+ modelValue?: DateRange;
33
+ min?: string;
34
+ max?: string;
35
+ /** Days that cannot be picked at all. */
36
+ isDisabled?: (iso: string) => boolean;
37
+ /** Days a range may not include (struck through, and a range cannot span them). */
38
+ isDateUnavailable?: (iso: string) => boolean;
39
+ /** Months shown side by side. */
40
+ months?: number;
41
+ /** Longest allowed range, in days. */
42
+ maximumDays?: number;
43
+ locale?: string;
44
+ weekdayFormat?: "narrow" | "short" | "long";
45
+ labels?: Partial<RangeCalendarLabels>;
46
+ }> & Readonly<{
47
+ "onUpdate:modelValue"?: ((value: DateRange, change: RangeChange) => any) | undefined;
48
+ }>, {
49
+ weekdayFormat: "narrow" | "short" | "long";
50
+ months: number;
51
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -0,0 +1,4 @@
1
+ import { _ as _sfc_main } from "../chunks/LpRangeCalendar-DZuaRV0W.js";
2
+ export {
3
+ _sfc_main as default
4
+ };
@@ -19,9 +19,9 @@ type __VLS_Slots = {} & {
19
19
  };
20
20
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
21
  mode: "slide" | "flip";
22
+ duration: number;
22
23
  direction: "up" | "down";
23
24
  align: "start" | "center" | "end";
24
- duration: number;
25
25
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
26
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
27
27
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpRollingText-CM5gkSeF.js";
1
+ import { _ as _sfc_main } from "../chunks/LpRollingText-DB7upf-5.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -4,9 +4,9 @@ type __VLS_Props = {
4
4
  contentClass?: string;
5
5
  barInsetTop?: string;
6
6
  };
7
- declare var __VLS_44: {};
7
+ declare var __VLS_46: {};
8
8
  type __VLS_Slots = {} & {
9
- default?: (props: typeof __VLS_44) => any;
9
+ default?: (props: typeof __VLS_46) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
12
12
  viewportEl: import("vue").ComputedRef<HTMLElement | null>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpScrollArea-D8xyKXcF.js";
1
+ import { _ as _sfc_main } from "../chunks/LpScrollArea-Bry1fdOM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSection-aM6J_u51.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSection-tKEH0jYf.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSegmented-Dejd7cIx.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSegmented-C09EEam2.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSelect-DrRD9I7L.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSelect-DNIL6MB9.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -8,6 +8,12 @@ type __VLS_Props = {
8
8
  description?: string;
9
9
  /** Frosted glass panel, passed to LpModal. Follows `provideGlass` when unset. */
10
10
  glass?: boolean;
11
+ /**
12
+ * A key that toggles the reference, e.g. "F1". Bound only while the dialog
13
+ * is mounted, also inside inputs and over other overlays, and the browser's
14
+ * own use of the key (Chrome opens its help page on F1) is suppressed.
15
+ */
16
+ hotkey?: string;
11
17
  };
12
18
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
13
19
  "update:open": (value: boolean) => any;
@@ -1,9 +1,14 @@
1
- import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString } from "vue";
2
- import { _ as _sfc_main$1 } from "../chunks/LpModal-DPwGKBPv.js";
3
- import { useAppleKeyboard, mergeShortcutGroups, activeShortcuts, appleModifierLabel } from "../composables/useHotkeys.js";
1
+ import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString, createTextVNode, createCommentVNode } from "vue";
2
+ import { _ as _sfc_main$1 } from "../chunks/LpModal-BzTVeNqe.js";
3
+ import { useAppleKeyboard, mergeShortcutGroups, activeShortcuts, useHotkeys, appleModifierLabel } from "../composables/useHotkeys.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
6
- import '../assets/LpShortcutsDialog-ChUyU7oV.css';const _hoisted_1 = { class: "shortcut-groups" };
6
+ import '../assets/LpShortcutsDialog-CqYX3yy6.css';const _hoisted_1 = { class: "shortcut-groups" };
7
+ const _hoisted_2 = ["aria-label", "title"];
8
+ const _hoisted_3 = {
9
+ key: 0,
10
+ class: "shortcut-then"
11
+ };
7
12
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
13
  __name: "LpShortcutsDialog",
9
14
  props: {
@@ -12,18 +17,39 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
12
17
  live: { type: Boolean, default: false },
13
18
  title: { default: void 0 },
14
19
  description: {},
15
- glass: { type: Boolean, default: void 0 }
20
+ glass: { type: Boolean, default: void 0 },
21
+ hotkey: {}
16
22
  },
17
23
  emits: ["update:open"],
18
24
  setup(__props, { emit: __emit }) {
19
25
  const props = __props;
20
- const text = useLabels("shortcuts", { title: "Keyboard shortcuts" });
26
+ const text = useLabels("shortcuts", {
27
+ title: "Keyboard shortcuts",
28
+ then: "then",
29
+ conflict: "Also bound elsewhere: only one of them runs",
30
+ group: "General"
31
+ });
21
32
  const apple = useAppleKeyboard();
22
- function keysOf(combo) {
23
- return combo.split(/\+(?!$)/);
33
+ function keysOf(chord) {
34
+ return chord.split(/\+(?!$)/);
35
+ }
36
+ function stepsOf(combo) {
37
+ return combo.trim().split(/\s+/);
24
38
  }
25
39
  const shown = computed(() => props.live ? mergeShortcutGroups(props.groups, activeShortcuts.value) : props.groups);
26
40
  const emit = __emit;
41
+ useHotkeys(
42
+ () => props.hotkey ? [
43
+ {
44
+ key: props.hotkey,
45
+ allowInInput: true,
46
+ overLayers: true,
47
+ repeat: false,
48
+ help: { group: text.value.group, label: props.title ?? text.value.title },
49
+ handler: () => emit("update:open", !props.open)
50
+ }
51
+ ] : []
52
+ );
27
53
  return (_ctx, _cache) => {
28
54
  return openBlock(), createBlock(_sfc_main$1, {
29
55
  glass: props.glass,
@@ -47,12 +73,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
73
  key: entry.combo,
48
74
  class: "shortcut-row"
49
75
  }, [
50
- createElementVNode("dt", null, toDisplayString(entry.label), 1),
76
+ createElementVNode("dt", null, [
77
+ createTextVNode(toDisplayString(entry.label) + " ", 1),
78
+ entry.conflict ? (openBlock(), createElementBlock("span", {
79
+ key: 0,
80
+ class: "shortcut-conflict",
81
+ role: "img",
82
+ "aria-label": unref(text).conflict,
83
+ title: unref(text).conflict
84
+ }, "!", 8, _hoisted_2)) : createCommentVNode("", true)
85
+ ]),
51
86
  createElementVNode("dd", null, [
52
- (openBlock(true), createElementBlock(Fragment, null, renderList(keysOf(entry.combo), (key, index) => {
53
- return openBlock(), createElementBlock("kbd", {
54
- key: `${key}-${index}`
55
- }, toDisplayString(unref(appleModifierLabel)(key.trim(), unref(apple))), 1);
87
+ (openBlock(true), createElementBlock(Fragment, null, renderList(stepsOf(entry.combo), (step, stepIndex) => {
88
+ return openBlock(), createElementBlock(Fragment, {
89
+ key: `${step}-${stepIndex}`
90
+ }, [
91
+ stepIndex ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(unref(text).then), 1)) : createCommentVNode("", true),
92
+ (openBlock(true), createElementBlock(Fragment, null, renderList(keysOf(step), (key, index) => {
93
+ return openBlock(), createElementBlock("kbd", {
94
+ key: `${key}-${index}`
95
+ }, toDisplayString(unref(appleModifierLabel)(key.trim(), unref(apple))), 1);
96
+ }), 128))
97
+ ], 64);
56
98
  }), 128))
57
99
  ])
58
100
  ]);
@@ -67,7 +109,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
67
109
  };
68
110
  }
69
111
  });
70
- const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b7784bfc"]]);
112
+ const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1c4cf3fa"]]);
71
113
  export {
72
114
  LpShortcutsDialog as default
73
115
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-BgwUNWpJ.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-Bwws_X29.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-Bqxz8aWT.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-kx-LdqNU.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpStat-dXtyrdX9.js";
1
+ import { _ as _sfc_main } from "../chunks/LpStat-B-7udBRP.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpStepper-Bk-XaQYU.js";
1
+ import { _ as _sfc_main } from "../chunks/LpStepper-C7XiVKZj.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSwitch-B1aLKulj.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSwitch-OrcOJX9m.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,9 +1,16 @@
1
1
  import { type ContextMenuItemDef } from "./LpContextMenu.vue";
2
+ import { type CsvOptions } from "./exportData";
2
3
  export interface TableColumn<Row> {
3
4
  key: string;
4
5
  label: string;
5
6
  align?: "left" | "right" | "center";
6
7
  width?: string;
8
+ /**
9
+ * Keep the cell on one line. For ids, codes, dates and amounts, which a
10
+ * narrow screen otherwise breaks at a hyphen or a space ("ORD-" / "1040");
11
+ * the table scrolls sideways instead.
12
+ */
13
+ nowrap?: boolean;
7
14
  /** Allow clicking the header to sort by this column. */
8
15
  sortable?: boolean;
9
16
  /** The value this column sorts by, when the cell holds something else. */
@@ -22,6 +29,8 @@ export interface TableColumn<Row> {
22
29
  * vocabulary; the menu should say what the column itself says.
23
30
  */
24
31
  valueLabel?: (value: unknown) => string;
32
+ /** The value a CSV export writes for this column; the raw cell by default. */
33
+ exportValue?: (row: Row) => unknown;
25
34
  /** Keep this column out of the show/hide list — an actions column has no
26
35
  * name to offer and nothing to gain from being hidden. */
27
36
  alwaysVisible?: boolean;
@@ -37,6 +46,41 @@ export interface TableLabels {
37
46
  filter: string;
38
47
  showAll: string;
39
48
  columns: string;
49
+ exportCsv: string;
50
+ selectAll: string;
51
+ shortcutsGroup: string;
52
+ filterColumn: string;
53
+ filterSearch: string;
54
+ filterAll: string;
55
+ filterNone: string;
56
+ filterInvert: string;
57
+ filterOnly: string;
58
+ filterOnlyShown: string;
59
+ filterAddShown: string;
60
+ filterNoValues: string;
61
+ filterNothingShown: string;
62
+ clearFilter: string;
63
+ clearFilters: string;
64
+ noMatches: string;
65
+ resetFilters: string;
66
+ rowCount: string;
67
+ rowsTotal: string;
68
+ selectedCount: string;
69
+ clearSelection: string;
70
+ pageSelected: string;
71
+ selectAllMatching: string;
72
+ allMatchingSelected: string;
73
+ }
74
+ export interface TableExportOptions extends CsvOptions {
75
+ /**
76
+ * Which rows: every row in the current order, the rows the header filters
77
+ * leave, or the selected ones. With `load` only the loaded page is known.
78
+ */
79
+ scope?: "all" | "filtered" | "selected";
80
+ /** File name without extension. */
81
+ filename?: string;
82
+ /** Return the CSV without offering a download. */
83
+ download?: boolean;
40
84
  }
41
85
  export interface SortState {
42
86
  key: string;
@@ -91,8 +135,15 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
91
135
  rowKey?: keyof T | ((row: T) => string | number);
92
136
  emptyLabel?: string;
93
137
  emptyIcon?: string;
94
- /** Render a leading checkbox column; selection binds via v-model:selected. */
95
- selectable?: boolean;
138
+ /**
139
+ * Rows can be selected (v-model:selected). `true` shows a tick column,
140
+ * where pressing a tick and sweeping ticks the run. `"hold"` keeps the
141
+ * column out of sight until it is needed: a long press on a row selects it
142
+ * (and the same press goes on selecting the rows it is dragged across), the
143
+ * column slides in, and while anything is selected a click on a row toggles
144
+ * it. Emptying the selection, or Escape, slides the column away again.
145
+ */
146
+ selectable?: boolean | "hold";
96
147
  /** Selected row keys (v-model:selected). */
97
148
  selected?: (string | number)[];
98
149
  /** Active sort (v-model:sort). When set, the parent owns ordering (server
@@ -112,17 +163,41 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
112
163
  filterLabel?: string;
113
164
  showAllLabel?: string;
114
165
  columnsLabel?: string;
166
+ /** Offer a CSV download in a toolbar above the table and in its menu. */
167
+ exportable?: boolean;
168
+ /** File name for that download, without extension. */
169
+ exportFilename?: string;
115
170
  /** All of the wording above in one object, and the config-level scope "table". */
116
171
  labels?: Partial<TableLabels>;
172
+ /** Row height: `compact` for dense data, `comfortable` (default) otherwise. */
173
+ density?: "comfortable" | "compact";
174
+ /**
175
+ * Always show the bar above the table with the row count. It shows on its
176
+ * own while filters are active or rows are selected.
177
+ */
178
+ summary?: boolean;
179
+ /**
180
+ * Remember sort, value filters and hidden columns across visits under this
181
+ * key (localStorage). Only plain filter values (text, numbers) are kept.
182
+ */
183
+ persist?: string;
184
+ /**
185
+ * With `load`: the user chose "select all N" beyond the loaded page
186
+ * (v-model:allMatching). The keys in `selected` are then only the loaded
187
+ * ones; acting on everything that matches is the consumer's to do.
188
+ */
189
+ allMatching?: boolean;
117
190
  } & {
118
191
  "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
119
192
  "onUpdate:sort"?: ((value: SortState | null) => any) | undefined;
193
+ "onUpdate:allMatching"?: ((value: boolean) => any) | undefined;
120
194
  onRowClick?: ((row: T) => any) | undefined;
121
195
  }> & (typeof globalThis extends {
122
196
  __VLS_PROPS_FALLBACK: infer P;
123
197
  } ? P : {});
124
198
  expose: (exposed: import("vue").ShallowUnwrapRef<{
125
199
  reload: () => void;
200
+ exportCsv: (options?: TableExportOptions) => string;
126
201
  }>) => void;
127
202
  attrs: any;
128
203
  slots: {
@@ -130,10 +205,17 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
130
205
  row: T;
131
206
  value: unknown;
132
207
  }) => any) | undefined;
208
+ } & {
209
+ bulk?: (props: {
210
+ selected: (string | number)[];
211
+ allMatching: boolean;
212
+ clear: () => void;
213
+ }) => any;
133
214
  };
134
215
  emit: {
135
216
  (e: "update:selected", value: (string | number)[]): void;
136
217
  (e: "update:sort", value: SortState | null): void;
218
+ (e: "update:allMatching", value: boolean): void;
137
219
  (e: "rowClick", row: T): void;
138
220
  };
139
221
  }>) => import("vue").VNode & {