@leavepulse/ui 0.44.0 → 0.45.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 (265) hide show
  1. package/README.md +49 -3
  2. package/dist/assets/{LpCommandPalette-DCP5g2ik.css → LpCommandPalette-nGNnzXqQ.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-BwX8uo4_.js} +7 -7
  11. package/dist/chunks/{LpAlert-DkOIjsbq.js → LpAlert-B6ilrM7T.js} +1 -1
  12. package/dist/chunks/{LpAppShell-BUKPcHco.js → LpAppShell-C53_RaGF.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-DCw5jR1t.js} +3 -3
  23. package/dist/chunks/{LpConfirmHost-CDm0Wtpv.js → LpConfirmHost-CbywMpMP.js} +1 -1
  24. package/dist/chunks/{LpContextMenu-DQw5dGfG.js → LpContextMenu-BqkAYa9X.js} +2 -1
  25. package/dist/chunks/{LpDatePicker-Drirx1AK.js → LpDatePicker-DuusgT69.js} +13 -9
  26. package/dist/chunks/LpDateRangePicker-DHeuznfC.js +208 -0
  27. package/dist/chunks/{LpDisclosure-ChQYmjlR.js → LpDisclosure-Cc23-JOT.js} +1 -1
  28. package/dist/chunks/{LpDrawer-bScx-KMO.js → LpDrawer-Dt4aB4Fr.js} +2 -2
  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-DMMDQHAu.js} +3 -3
  42. package/dist/chunks/{LpModalNav-DPg5H9f3.js → LpModalNav-BVPDyIup.js} +4 -4
  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-CQNB0-yU.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-DpJvoCOh.js} +37 -3
  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 +61 -10
  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.js +1 -1
  164. package/dist/components/LpTooltip.vue.js +1 -1
  165. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  166. package/dist/components/LpUptimeBar.vue.js +1 -1
  167. package/dist/components/chart.js +3 -2
  168. package/dist/components/commandSearch.js +3 -0
  169. package/dist/components/dateRange.d.ts +43 -0
  170. package/dist/components/dateRange.js +76 -0
  171. package/dist/components/exportData.d.ts +58 -0
  172. package/dist/components/exportData.js +165 -0
  173. package/dist/components/logSearch.d.ts +18 -0
  174. package/dist/components/logSearch.js +36 -0
  175. package/dist/components/phone.d.ts +41 -0
  176. package/dist/components/phone.js +80 -0
  177. package/dist/components/tableFilter.d.ts +36 -0
  178. package/dist/components/tableFilter.js +84 -0
  179. package/dist/components/tags.d.ts +20 -0
  180. package/dist/components/tags.js +37 -0
  181. package/dist/composables/useField.d.ts +4 -0
  182. package/dist/composables/useFieldNotice.d.ts +17 -0
  183. package/dist/composables/useFieldNotice.js +28 -0
  184. package/dist/composables/useForm.d.ts +53 -0
  185. package/dist/composables/useForm.js +207 -0
  186. package/dist/composables/useHotkeys.d.ts +65 -5
  187. package/dist/composables/useHotkeys.js +170 -9
  188. package/dist/composables/useInputMask.d.ts +59 -0
  189. package/dist/composables/useInputMask.js +170 -0
  190. package/dist/composables/usePaintSelect.d.ts +22 -0
  191. package/dist/composables/usePaintSelect.js +169 -0
  192. package/dist/composables/useShift.js +7 -2
  193. package/dist/icons-all.d.ts +1 -0
  194. package/dist/icons-all.js +3 -0
  195. package/dist/icons.d.ts +14 -1
  196. package/dist/index.d.ts +29 -3
  197. package/dist/index.js +195 -138
  198. package/dist/kit-icons.d.ts +2 -0
  199. package/dist/theme/backdrop.d.ts +12 -0
  200. package/dist/theme/presets.d.ts +0 -2
  201. package/package.json +13 -4
  202. package/src/component-names.ts +4 -0
  203. package/src/components/ContextMenuItems.vue +1 -1
  204. package/src/components/LayoutNode.vue +11 -2
  205. package/src/components/LpActionBar.vue +1 -1
  206. package/src/components/LpAutocomplete.vue +1 -0
  207. package/src/components/LpAvatar.vue +2 -2
  208. package/src/components/LpButton.vue +1 -1
  209. package/src/components/LpChart.vue +80 -1
  210. package/src/components/LpColorPicker.vue +34 -1
  211. package/src/components/LpCommandPalette.vue +81 -7
  212. package/src/components/LpContextMenu.vue +1 -1
  213. package/src/components/LpDatePicker.vue +8 -3
  214. package/src/components/LpDateRangePicker.vue +224 -0
  215. package/src/components/LpDropdownMenu.vue +1 -0
  216. package/src/components/LpFieldNotice.vue +65 -0
  217. package/src/components/LpFormField.vue +33 -4
  218. package/src/components/LpIcon.vue +22 -4
  219. package/src/components/LpInput.vue +46 -6
  220. package/src/components/LpLogViewer.vue +225 -22
  221. package/src/components/LpModal.vue +1 -1
  222. package/src/components/LpNotificationBell.vue +15 -7
  223. package/src/components/LpPhoneInput.vue +179 -20
  224. package/src/components/LpPie.vue +8 -5
  225. package/src/components/LpPopover.vue +1 -0
  226. package/src/components/LpRangeCalendar.vue +365 -0
  227. package/src/components/LpRollingText.vue +3 -0
  228. package/src/components/LpScrollArea.vue +22 -2
  229. package/src/components/LpSelect.vue +0 -0
  230. package/src/components/LpShortcutsDialog.vue +77 -8
  231. package/src/components/LpStepper.vue +23 -10
  232. package/src/components/LpSwitch.vue +1 -1
  233. package/src/components/LpTable.vue +584 -65
  234. package/src/components/LpTableFilter.vue +175 -0
  235. package/src/components/LpTagsInput.vue +364 -0
  236. package/src/components/LpThemeSwitcher.vue +19 -23
  237. package/src/components/LpToaster.vue +49 -1
  238. package/src/components/LpTooltip.vue +9 -2
  239. package/src/components/LpTopologyCanvas.vue +7 -1
  240. package/src/components/chart.ts +5 -3
  241. package/src/components/commandSearch.ts +6 -0
  242. package/src/components/dateRange.ts +134 -0
  243. package/src/components/exportData.ts +228 -0
  244. package/src/components/logSearch.ts +46 -0
  245. package/src/components/phone.ts +140 -0
  246. package/src/components/tableFilter.ts +122 -0
  247. package/src/components/tags.ts +62 -0
  248. package/src/composables/useField.ts +4 -0
  249. package/src/composables/useFieldNotice.ts +59 -0
  250. package/src/composables/useForm.ts +314 -0
  251. package/src/composables/useHotkeys.ts +269 -13
  252. package/src/composables/useInputMask.ts +254 -0
  253. package/src/composables/usePaintSelect.ts +243 -0
  254. package/src/composables/useShift.ts +13 -2
  255. package/src/iconSubset.d.mts +10 -0
  256. package/src/iconSubset.mjs +51 -0
  257. package/src/icons-all.ts +10 -0
  258. package/src/icons.ts +59 -8
  259. package/src/index.ts +37 -3
  260. package/src/kit-icons.ts +5 -0
  261. package/src/nuxt.ts +30 -2
  262. package/src/runtime/theme.plugin.ts +2 -2
  263. package/src/theme/backdrop.ts +69 -0
  264. package/src/theme/presets.ts +6 -64
  265. package/src/tokens/tokens.css +46 -0
@@ -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-DMMDQHAu.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-CQNB0-yU.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 & {