@leavepulse/ui 0.29.2 → 0.29.4

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 (34) hide show
  1. package/dist/assets/{LpTable-ChxURw0m.css → LpTable-Bz3uJNa3.css} +8 -8
  2. package/dist/chunks/{LpAppShell-CGX0DlIW.js → LpAppShell-BJk3b-u4.js} +1 -1
  3. package/dist/chunks/{LpAvatar-CzCE5cXg.js → LpAvatar-D3l4nabg.js} +1 -1
  4. package/dist/chunks/{LpCard-DSefTGEH.js → LpCard-D0M2ZCnB.js} +1 -1
  5. package/dist/chunks/{LpChart-UiU4RhXP.js → LpChart-Bmw7y34Z.js} +1 -1
  6. package/dist/chunks/{LpContextMenu-D0mzXqA7.js → LpContextMenu-B6WBLleS.js} +55 -8
  7. package/dist/chunks/{LpFileTree-BaV7f0O7.js → LpFileTree-DfFqY__1.js} +1 -1
  8. package/dist/chunks/{LpFileTreeNode-BzpBa7R7.js → LpFileTreeNode-COchUMNn.js} +1 -1
  9. package/dist/chunks/{LpLogViewer-CKmEQYnm.js → LpLogViewer-CVaGfTF_.js} +1 -1
  10. package/dist/chunks/{LpNotificationBell-Dvu-b6Vn.js → LpNotificationBell-CTsIcPqX.js} +1 -1
  11. package/dist/chunks/{LpPie-BkjWlfSw.js → LpPie-BL1vTDSM.js} +1 -1
  12. package/dist/chunks/{LpSidebar-CWehDCxN.js → LpSidebar-C_Mr-JPI.js} +1 -1
  13. package/dist/chunks/{LpSidebarNav-5RGNr2D3.js → LpSidebarNav-D6v12-36.js} +1 -1
  14. package/dist/chunks/{LpThemeSwitcher-Dj4VcTu7.js → LpThemeSwitcher-r1te9nB2.js} +1 -1
  15. package/dist/components/LpAppShell.vue.js +1 -1
  16. package/dist/components/LpAvatar.vue.js +1 -1
  17. package/dist/components/LpCard.vue.js +1 -1
  18. package/dist/components/LpChart.vue.js +1 -1
  19. package/dist/components/LpContextMenu.vue.d.ts +7 -0
  20. package/dist/components/LpContextMenu.vue.js +1 -1
  21. package/dist/components/LpFileTree.vue.js +1 -1
  22. package/dist/components/LpFileTreeNode.vue.js +1 -1
  23. package/dist/components/LpLogViewer.vue.js +1 -1
  24. package/dist/components/LpNotificationBell.vue.js +1 -1
  25. package/dist/components/LpPie.vue.js +1 -1
  26. package/dist/components/LpSidebar.vue.js +1 -1
  27. package/dist/components/LpSidebarNav.vue.js +1 -1
  28. package/dist/components/LpTable.vue.d.ts +24 -0
  29. package/dist/components/LpTable.vue.js +247 -118
  30. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  31. package/dist/index.js +12 -12
  32. package/package.json +1 -1
  33. package/src/components/LpContextMenu.vue +49 -0
  34. package/src/components/LpTable.vue +205 -6
@@ -11,17 +11,17 @@
11
11
  * fade before closing the gap and the whole list lurches at the end instead of
12
12
  * gliding.
13
13
  */
14
- .lp-row-enter-active[data-v-359c1c0d],
15
- .lp-row-leave-active[data-v-359c1c0d] {
14
+ .lp-row-enter-active[data-v-f9c874a7],
15
+ .lp-row-leave-active[data-v-f9c874a7] {
16
16
  transition:
17
17
  opacity var(--duration-fast) var(--ease-emphasized),
18
18
  transform var(--duration-fast) var(--ease-emphasized);
19
19
  }
20
- .lp-row-move[data-v-359c1c0d] {
20
+ .lp-row-move[data-v-f9c874a7] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-359c1c0d],
24
- .lp-row-leave-to[data-v-359c1c0d] {
23
+ .lp-row-enter-from[data-v-f9c874a7],
24
+ .lp-row-leave-to[data-v-f9c874a7] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
@@ -37,9 +37,9 @@
37
37
  /* A filter that redraws the list is information, not decoration: with motion
38
38
  turned down the rows change without animating rather than not changing. */
39
39
  @media (prefers-reduced-motion: reduce) {
40
- .lp-row-enter-active[data-v-359c1c0d],
41
- .lp-row-leave-active[data-v-359c1c0d],
42
- .lp-row-move[data-v-359c1c0d] {
40
+ .lp-row-enter-active[data-v-f9c874a7],
41
+ .lp-row-leave-active[data-v-f9c874a7],
42
+ .lp-row-move[data-v-f9c874a7] {
43
43
  transition: none;
44
44
  }
45
45
  }
@@ -3,7 +3,7 @@ import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
4
  import { _ as _sfc_main$5 } from "./LpScrollArea-D8xyKXcF.js";
5
5
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
6
- import { _ as _sfc_main$1 } from "./LpSidebar-CWehDCxN.js";
6
+ import { _ as _sfc_main$1 } from "./LpSidebar-C_Mr-JPI.js";
7
7
  const _hoisted_1 = { class: "flex h-dvh overflow-hidden bg-surface text-ink" };
8
8
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
9
9
  const _hoisted_3 = { class: "relative flex h-16 shrink-0 items-center gap-3 border-b border-line bg-surface px-4 md:px-6" };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, ref, onMounted, openBlock, createBlock, withCtx, createVNode, unref, mergeProps, createCommentVNode, createTextVNode, toDisplayString } from "vue";
2
2
  import { AvatarRoot, AvatarImage, AvatarFallback } from "reka-ui";
3
3
  import { tv } from "tailwind-variants";
4
- import { _ as _sfc_main$1 } from "./LpContextMenu-D0mzXqA7.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-B6WBLleS.js";
5
5
  const __default__ = { inheritAttrs: false };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  ...__default__,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, withCtx, resolveDynamicComponent, mergeProps, renderSlot } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
- import { _ as _sfc_main$1 } from "./LpContextMenu-D0mzXqA7.js";
3
+ import { _ as _sfc_main$1 } from "./LpContextMenu-B6WBLleS.js";
4
4
  const __default__ = { inheritAttrs: false };
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  ...__default__,
@@ -3,7 +3,7 @@ import { Motion } from "motion-v";
3
3
  import { usePillTransition } from "../composables/usePillTransition.js";
4
4
  import { useReveal } from "../composables/useReveal.js";
5
5
  import { normalise, pointCount, resolveLabels, extent, axisTicks, niceScale, yAt, plotWidth, xAt, areaPath, linePath, barPath, plotHeight, nearestIndex, formatTick } from "../components/chart.js";
6
- import { _ as _sfc_main$1 } from "./LpContextMenu-D0mzXqA7.js";
6
+ import { _ as _sfc_main$1 } from "./LpContextMenu-B6WBLleS.js";
7
7
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
8
8
  import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
9
9
  const _hoisted_1 = {
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, renderSlot, openBlock, createBlock, unref, withCtx, createVNode, normalizeClass, createElementBlock, Fragment, renderList, createCommentVNode, createElementVNode, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, computed, renderSlot, openBlock, createBlock, unref, withCtx, createVNode, normalizeClass, createElementBlock, Fragment, renderList, createCommentVNode, createElementVNode, createTextVNode, toDisplayString, withModifiers } from "vue";
2
2
  import { ContextMenuRoot, ContextMenuTrigger, ContextMenuPortal, ContextMenuContent, ContextMenuSeparator, ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent, ContextMenuItem } from "reka-ui";
3
3
  import { POPOVER_PANEL } from "../components/dropdown.js";
4
4
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
@@ -13,6 +13,16 @@ const _hoisted_5 = {
13
13
  key: 0,
14
14
  class: "text-xs text-muted"
15
15
  };
16
+ const _hoisted_6 = { class: "flex items-center gap-2" };
17
+ const _hoisted_7 = {
18
+ key: 0,
19
+ class: "text-xs text-muted"
20
+ };
21
+ const _hoisted_8 = { class: "flex items-center gap-2" };
22
+ const _hoisted_9 = {
23
+ key: 0,
24
+ class: "text-xs text-muted"
25
+ };
16
26
  const ITEM = "group/item flex cursor-pointer select-none items-center gap-2 rounded-md px-2.5 py-1.5 text-sm outline-none transition-[background-color,color] duration-[var(--duration-fast)] data-[disabled]:pointer-events-none data-[disabled]:opacity-45 data-[highlighted]:bg-brand-soft";
17
27
  const ICON = "transition-transform duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-data-[highlighted]/item:translate-x-0.5";
18
28
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -83,13 +93,32 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
83
93
  key: 0,
84
94
  class: "my-1 h-px bg-line"
85
95
  })) : createCommentVNode("", true),
86
- createVNode(unref(ContextMenuItem), {
96
+ sub.checked !== void 0 ? (openBlock(), createBlock(unref(ContextMenuItem), {
97
+ key: 1,
98
+ class: normalizeClass([ITEM, "justify-between text-ink data-[highlighted]:text-brand"]),
99
+ disabled: sub.disabled,
100
+ onSelect: withModifiers(($event) => sub.onSelect?.(), ["prevent"])
101
+ }, {
102
+ default: withCtx(() => [
103
+ createElementVNode("span", _hoisted_2, [
104
+ createVNode(_sfc_main$1, {
105
+ name: sub.checked ? "lucide:check" : "lucide:minus",
106
+ size: 15,
107
+ class: normalizeClass([ICON, sub.checked ? "" : "opacity-25"])
108
+ }, null, 8, ["name", "class"]),
109
+ createTextVNode(" " + toDisplayString(sub.label), 1)
110
+ ]),
111
+ sub.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_3, toDisplayString(sub.shortcut), 1)) : createCommentVNode("", true)
112
+ ]),
113
+ _: 2
114
+ }, 1032, ["class", "disabled", "onSelect"])) : (openBlock(), createBlock(unref(ContextMenuItem), {
115
+ key: 2,
87
116
  class: normalizeClass([ITEM, "justify-between", sub.danger ? "text-danger data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger" : "text-ink data-[highlighted]:text-brand"]),
88
117
  disabled: sub.disabled,
89
118
  onSelect: ($event) => sub.onSelect?.()
90
119
  }, {
91
120
  default: withCtx(() => [
92
- createElementVNode("span", _hoisted_2, [
121
+ createElementVNode("span", _hoisted_4, [
93
122
  sub.icon ? (openBlock(), createBlock(_sfc_main$1, {
94
123
  key: 0,
95
124
  name: sub.icon,
@@ -98,10 +127,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
98
127
  }, null, 8, ["name"])) : createCommentVNode("", true),
99
128
  createTextVNode(" " + toDisplayString(sub.label), 1)
100
129
  ]),
101
- sub.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_3, toDisplayString(sub.shortcut), 1)) : createCommentVNode("", true)
130
+ sub.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_5, toDisplayString(sub.shortcut), 1)) : createCommentVNode("", true)
102
131
  ]),
103
132
  _: 2
104
- }, 1032, ["class", "disabled", "onSelect"])
133
+ }, 1032, ["class", "disabled", "onSelect"]))
105
134
  ], 64);
106
135
  }), 128))
107
136
  ]),
@@ -112,14 +141,32 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
112
141
  }, 1024)
113
142
  ]),
114
143
  _: 2
115
- }, 1024)) : (openBlock(), createBlock(unref(ContextMenuItem), {
144
+ }, 1024)) : item.checked !== void 0 ? (openBlock(), createBlock(unref(ContextMenuItem), {
116
145
  key: 2,
146
+ class: normalizeClass([ITEM, "justify-between text-ink data-[highlighted]:text-brand"]),
147
+ disabled: item.disabled,
148
+ onSelect: withModifiers(($event) => item.onSelect?.(), ["prevent"])
149
+ }, {
150
+ default: withCtx(() => [
151
+ createElementVNode("span", _hoisted_6, [
152
+ createVNode(_sfc_main$1, {
153
+ name: item.checked ? "lucide:check" : "lucide:minus",
154
+ size: 15,
155
+ class: normalizeClass([ICON, item.checked ? "" : "opacity-25"])
156
+ }, null, 8, ["name", "class"]),
157
+ createTextVNode(" " + toDisplayString(item.label), 1)
158
+ ]),
159
+ item.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_7, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true)
160
+ ]),
161
+ _: 2
162
+ }, 1032, ["class", "disabled", "onSelect"])) : (openBlock(), createBlock(unref(ContextMenuItem), {
163
+ key: 3,
117
164
  class: normalizeClass([ITEM, "justify-between", item.danger ? "text-danger data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger" : "text-ink data-[highlighted]:text-brand"]),
118
165
  disabled: item.disabled,
119
166
  onSelect: ($event) => item.onSelect?.()
120
167
  }, {
121
168
  default: withCtx(() => [
122
- createElementVNode("span", _hoisted_4, [
169
+ createElementVNode("span", _hoisted_8, [
123
170
  item.icon ? (openBlock(), createBlock(_sfc_main$1, {
124
171
  key: 0,
125
172
  name: item.icon,
@@ -128,7 +175,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
128
175
  }, null, 8, ["name"])) : createCommentVNode("", true),
129
176
  createTextVNode(" " + toDisplayString(item.label), 1)
130
177
  ]),
131
- item.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_5, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true)
178
+ item.shortcut ? (openBlock(), createElementBlock("kbd", _hoisted_9, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true)
132
179
  ]),
133
180
  _: 2
134
181
  }, 1032, ["class", "disabled", "onSelect"]))
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, watch, computed, openBlock, createElementBlock, Fragment, renderList, normalizeStyle, createBlock, createVNode, withCtx, createElementVNode, renderSlot, mergeProps, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, createCommentVNode } from "vue";
2
2
  import { computeStats, formatSize, sortNodes, subtreeIds, ancestorIds } from "../components/fileTree.js";
3
3
  import { _ as _sfc_main$1 } from "./LpEmptyState-BV3q7Qyi.js";
4
- import { _ as _sfc_main$3 } from "./LpFileTreeNode-BzpBa7R7.js";
4
+ import { _ as _sfc_main$3 } from "./LpFileTreeNode-COchUMNn.js";
5
5
  import { _ as _sfc_main$2 } from "./LpScrollArea-D8xyKXcF.js";
6
6
  const _hoisted_1 = {
7
7
  key: 0,
@@ -2,7 +2,7 @@ import { defineComponent, computed, resolveComponent, openBlock, createElementBl
2
2
  import { prefersReducedMotion, easingToken } from "../composables/easing.js";
3
3
  import { sortNodes, formatSize, formatModified, fileIcon } from "../components/fileTree.js";
4
4
  import { _ as _sfc_main$3 } from "./LpCheckbox-BO0zuuPh.js";
5
- import { _ as _sfc_main$1 } from "./LpContextMenu-D0mzXqA7.js";
5
+ import { _ as _sfc_main$1 } from "./LpContextMenu-B6WBLleS.js";
6
6
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
7
7
  const _hoisted_1 = ["aria-level", "aria-selected", "aria-expanded", "aria-disabled"];
8
8
  const _hoisted_2 = ["data-node-id", "tabindex"];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, shallowRef, computed, onMounted, onBeforeUnmount, watch, nextTick, openBlock, createElementBlock, normalizeClass, createVNode, Transition, withCtx, toDisplayString, createCommentVNode, normalizeStyle, createElementVNode, Fragment, createBlock, resolveDynamicComponent, TransitionGroup, mergeProps, renderList, createTextVNode } from "vue";
2
2
  import { prefersReducedMotion } from "../composables/easing.js";
3
3
  import { useHotkeys } from "../composables/useHotkeys.js";
4
- import { _ as _sfc_main$3 } from "./LpContextMenu-D0mzXqA7.js";
4
+ import { _ as _sfc_main$3 } from "./LpContextMenu-B6WBLleS.js";
5
5
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
6
6
  import { _ as _sfc_main$1 } from "./LpScrollArea-D8xyKXcF.js";
7
7
  const _hoisted_1 = {
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, useModel, getCurrentInstance, openBlock, createBlock, withCtx, createElementVNode, toDisplayString, createElementBlock, createCommentVNode, createVNode, Fragment, renderList, resolveDynamicComponent, normalizeClass, createTextVNode, mergeModels } from "vue";
2
2
  import { _ as _sfc_main$8 } from "./LpBadge-BPodVcJa.js";
3
3
  import { _ as _sfc_main$7 } from "./LpButton-5VXXCjwF.js";
4
- import { _ as _sfc_main$5 } from "./LpContextMenu-D0mzXqA7.js";
4
+ import { _ as _sfc_main$5 } from "./LpContextMenu-B6WBLleS.js";
5
5
  import { _ as _sfc_main$3 } from "./LpEmptyState-BV3q7Qyi.js";
6
6
  import { _ as _sfc_main$6 } from "./LpIcon-CCnX5_2j.js";
7
7
  import { _ as _sfc_main$1 } from "./LpPopover-8268UmlC.js";
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, onBeforeUnmount, openBlock, crea
2
2
  import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
3
3
  import { useReveal } from "../composables/useReveal.js";
4
4
  import { resolveSlices, arcPath, calloutLabels, formatTick } from "../components/chart.js";
5
- import { _ as _sfc_main$2 } from "./LpContextMenu-D0mzXqA7.js";
5
+ import { _ as _sfc_main$2 } from "./LpContextMenu-B6WBLleS.js";
6
6
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
7
7
  import { _ as _sfc_main$4 } from "./LpNumberFlow-amWYaeuA.js";
8
8
  import { _ as _sfc_main$5 } from "./LpRollingText-CM5gkSeF.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, normalizeClass, renderSlot, createCommentVNode, createVNode, createSlots, withCtx, normalizeProps, guardReactiveProps, createBlock } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpDrawer-DAJN5rGK.js";
3
- import { _ as _sfc_main$1 } from "./LpSidebarNav-5RGNr2D3.js";
3
+ import { _ as _sfc_main$1 } from "./LpSidebarNav-D6v12-36.js";
4
4
  const _hoisted_1 = {
5
5
  key: 1,
6
6
  class: "mt-2 flex shrink-0 flex-col gap-2"
@@ -3,7 +3,7 @@ import { Motion } from "motion-v";
3
3
  import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
4
4
  import { usePillTransition } from "../composables/usePillTransition.js";
5
5
  import { _ as _sfc_main$3 } from "./LpBadge-BPodVcJa.js";
6
- import { _ as _sfc_main$4 } from "./LpContextMenu-D0mzXqA7.js";
6
+ import { _ as _sfc_main$4 } from "./LpContextMenu-B6WBLleS.js";
7
7
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
8
8
  import { _ as _sfc_main$1 } from "./LpScrollArea-D8xyKXcF.js";
9
9
  const _hoisted_1 = {
@@ -1,6 +1,6 @@
1
1
  import { computed, readonly, shallowRef, defineComponent, onMounted, ref, openBlock, createBlock, withCtx, createElementVNode, normalizeClass, createElementBlock, normalizeStyle, createVNode, toDisplayString, createCommentVNode } from "vue";
2
2
  import { prefersReducedMotion, easingToken } from "../composables/easing.js";
3
- import { _ as _sfc_main$1 } from "./LpContextMenu-D0mzXqA7.js";
3
+ import { _ as _sfc_main$1 } from "./LpContextMenu-B6WBLleS.js";
4
4
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
5
5
  const sharedShape = { radiusControl: 8, radiusCard: 14, radiusPill: 9999 };
6
6
  const sharedDensity = { spacingUnit: 4, controlSm: 32, controlMd: 38, controlLg: 44 };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-CGX0DlIW.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-BJk3b-u4.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAvatar-CzCE5cXg.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAvatar-D3l4nabg.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCard-DSefTGEH.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCard-D0M2ZCnB.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpChart-UiU4RhXP.js";
1
+ import { _ as _sfc_main } from "../chunks/LpChart-Bmw7y34Z.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -9,6 +9,13 @@ export interface ContextMenuItemDef {
9
9
  onSelect?: () => void;
10
10
  /** Nested submenu. When present, onSelect is ignored. */
11
11
  children?: ContextMenuItemDef[];
12
+ /**
13
+ * Renders as a tick-box rather than a plain item, and the menu stays open on
14
+ * select. For the lists where the point is to set several at once — which
15
+ * columns to show, which values to filter by — and closing after each one
16
+ * would mean reopening the menu for every tick.
17
+ */
18
+ checked?: boolean;
12
19
  }
13
20
  type __VLS_Props = {
14
21
  items: ContextMenuItemDef[];
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpContextMenu-D0mzXqA7.js";
1
+ import { _ as _sfc_main } from "../chunks/LpContextMenu-B6WBLleS.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTree-BaV7f0O7.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTree-DfFqY__1.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTreeNode-BzpBa7R7.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTreeNode-COchUMNn.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLogViewer-CKmEQYnm.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLogViewer-CVaGfTF_.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNotificationBell-Dvu-b6Vn.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNotificationBell-CTsIcPqX.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpPie-BkjWlfSw.js";
1
+ import { _ as _sfc_main } from "../chunks/LpPie-BL1vTDSM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-CWehDCxN.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-C_Mr-JPI.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-5RGNr2D3.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-D6v12-36.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -6,6 +6,21 @@ export interface TableColumn<Row> {
6
6
  width?: string;
7
7
  /** Allow clicking the header to sort by this column. */
8
8
  sortable?: boolean;
9
+ /**
10
+ * Offer "show only these values" in the header's menu, built from the values
11
+ * actually present in the rows. For a column that holds a small vocabulary —
12
+ * a type, a state, a site — where the question is "just the mains leads,
13
+ * please". Pointless on a column of unique values, so it is opt-in.
14
+ */
15
+ filterable?: boolean;
16
+ /**
17
+ * How a raw cell value reads in that filter list. `power_ac` is the stored
18
+ * vocabulary; the menu should say what the column itself says.
19
+ */
20
+ valueLabel?: (value: unknown) => string;
21
+ /** Keep this column out of the show/hide list — an actions column has no
22
+ * name to offer and nothing to gain from being hidden. */
23
+ alwaysVisible?: boolean;
9
24
  }
10
25
  export interface SortState {
11
26
  key: string;
@@ -31,6 +46,15 @@ declare const __VLS_export: <T extends Record<string, unknown>>(__VLS_props: Non
31
46
  /** Per-row right-click menu. Return [] (or omit the prop) to disable it for
32
47
  * a row; the row then keeps the browser's native context menu. */
33
48
  rowMenu?: (row: T) => ContextMenuItemDef[];
49
+ /** Wording for the header's right-click menu. Passed in because the kit
50
+ * carries no translations: an app that leaves these alone gets English. */
51
+ sortAscLabel?: string;
52
+ sortDescLabel?: string;
53
+ sortClearLabel?: string;
54
+ /** Wording for the value filter and the column chooser. */
55
+ filterLabel?: string;
56
+ showAllLabel?: string;
57
+ columnsLabel?: string;
34
58
  } & {
35
59
  "onUpdate:selected"?: ((value: (string | number)[]) => any) | undefined;
36
60
  "onUpdate:sort"?: ((value: SortState | null) => any) | undefined;