@leavepulse/ui 0.45.1 → 0.46.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 (72) hide show
  1. package/dist/assets/{LpCommandPalette-HzAA4gri.css → LpCommandPalette-5miKYsb-.css} +21 -21
  2. package/dist/assets/{LpDropzone-i4BdMi1H.css → LpDropzone-Ev6X03zj.css} +12 -12
  3. package/dist/assets/{LpTable-CPwWxTJS.css → LpTable-BoeA_TgK.css} +17 -17
  4. package/dist/chunks/{LpAddressInput-CJOYGZlI.js → LpAddressInput-iOJhmRzy.js} +1 -1
  5. package/dist/chunks/{LpAppShell-B07Lf48e.js → LpAppShell-BmMYcEVx.js} +2 -2
  6. package/dist/chunks/{LpAvatar-C1XStdOo.js → LpAvatar-DeSb6H0c.js} +1 -1
  7. package/dist/chunks/{LpCard-C2IvucmX.js → LpCard-BdxkMXjo.js} +1 -1
  8. package/dist/chunks/{LpColorPicker-zz4VGkG4.js → LpColorPicker-BLqPX5Vw.js} +1 -1
  9. package/dist/chunks/{LpConfirmDialog-BTVAR4tF.js → LpConfirmDialog-Ca-CTlxT.js} +1 -1
  10. package/dist/chunks/{LpConfirmHost-Ci_uCHgQ.js → LpConfirmHost-BAaSaT2b.js} +1 -1
  11. package/dist/chunks/{LpContextMenu-BqkAYa9X.js → LpContextMenu-1cKew_Dc.js} +17 -4
  12. package/dist/chunks/{LpDrawer-CfRhHwmE.js → LpDrawer-CBFVD624.js} +1 -1
  13. package/dist/chunks/{LpDropdownMenu-DdJGQzPn.js → LpDropdownMenu-DrpJJBp0.js} +22 -8
  14. package/dist/chunks/{LpFileTree-CNurOvkV.js → LpFileTree-bk5VjBey.js} +2 -2
  15. package/dist/chunks/{LpFileTreeNode-D_qRRdsH.js → LpFileTreeNode-BvMSBM7X.js} +1 -1
  16. package/dist/chunks/{LpLogViewer-KypbgOyo.js → LpLogViewer-BDFXzvcl.js} +2 -2
  17. package/dist/chunks/{LpModal-BzTVeNqe.js → LpModal-JNa3B_Lr.js} +12 -5
  18. package/dist/chunks/{LpModalNav-CjABSGCu.js → LpModalNav-BAxC9et7.js} +10 -3
  19. package/dist/chunks/{LpNotificationBell-CCwyJP5C.js → LpNotificationBell-DsqSyMwS.js} +2 -2
  20. package/dist/chunks/{LpPie-BEJ2SfI6.js → LpPie-BdSnta11.js} +1 -1
  21. package/dist/chunks/{LpScrollArea-Bry1fdOM.js → LpScrollArea-Hz3-JWUG.js} +23 -5
  22. package/dist/chunks/{LpSidebar-Bwws_X29.js → LpSidebar-DpEiGi8L.js} +2 -2
  23. package/dist/chunks/{LpSidebarNav-kx-LdqNU.js → LpSidebarNav-BUuxipX-.js} +2 -2
  24. package/dist/chunks/{LpThemeSwitcher-B4aVPbNC.js → LpThemeSwitcher-BbYFFT5w.js} +1 -1
  25. package/dist/chunks/MenuTitle-J3ZDYjpV.js +56 -0
  26. package/dist/components/LpAddressInput.vue.js +1 -1
  27. package/dist/components/LpAppShell.vue.js +1 -1
  28. package/dist/components/LpAvatar.vue.js +1 -1
  29. package/dist/components/LpCard.vue.js +1 -1
  30. package/dist/components/LpChart.vue.js +1 -1
  31. package/dist/components/LpColorPicker.vue.js +1 -1
  32. package/dist/components/LpCommandPalette.vue.js +6 -3
  33. package/dist/components/LpConfirmDialog.vue.js +1 -1
  34. package/dist/components/LpConfirmHost.vue.js +1 -1
  35. package/dist/components/LpContextMenu.vue.d.ts +11 -0
  36. package/dist/components/LpContextMenu.vue.js +1 -1
  37. package/dist/components/LpDrawer.vue.js +1 -1
  38. package/dist/components/LpDropdownMenu.vue.d.ts +6 -0
  39. package/dist/components/LpDropdownMenu.vue.js +1 -1
  40. package/dist/components/LpDropzone.vue.d.ts +14 -0
  41. package/dist/components/LpDropzone.vue.js +9 -7
  42. package/dist/components/LpFileTree.vue.js +1 -1
  43. package/dist/components/LpFileTreeNode.vue.js +1 -1
  44. package/dist/components/LpLogViewer.vue.js +1 -1
  45. package/dist/components/LpModal.vue.d.ts +7 -5
  46. package/dist/components/LpModal.vue.js +1 -1
  47. package/dist/components/LpModalNav.vue.d.ts +5 -3
  48. package/dist/components/LpModalNav.vue.js +1 -1
  49. package/dist/components/LpNotificationBell.vue.js +1 -1
  50. package/dist/components/LpPie.vue.js +1 -1
  51. package/dist/components/LpScrollArea.vue.d.ts +2 -2
  52. package/dist/components/LpScrollArea.vue.js +1 -1
  53. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  54. package/dist/components/LpSidebar.vue.js +1 -1
  55. package/dist/components/LpSidebarNav.vue.js +1 -1
  56. package/dist/components/LpTable.vue.js +5 -5
  57. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  58. package/dist/components/MenuTitle.vue.d.ts +9 -0
  59. package/dist/components/MenuTitle.vue.js +4 -0
  60. package/dist/composables/useClipboard.js +35 -2
  61. package/dist/index.js +19 -19
  62. package/package.json +1 -1
  63. package/src/components/LpCommandPalette.vue +6 -0
  64. package/src/components/LpContextMenu.vue +19 -1
  65. package/src/components/LpDropdownMenu.vue +14 -2
  66. package/src/components/LpDropzone.vue +13 -5
  67. package/src/components/LpModal.vue +7 -1
  68. package/src/components/LpModalNav.vue +4 -0
  69. package/src/components/LpScrollArea.vue +30 -2
  70. package/src/components/LpTable.vue +1 -1
  71. package/src/components/MenuTitle.vue +34 -0
  72. package/src/composables/useClipboard.ts +49 -7
@@ -5,81 +5,81 @@
5
5
  * pane from its right edge as it grows. Animating the columns themselves made
6
6
  * every line of the list and the pane re-wrap on every frame.
7
7
  */
8
- .lp-cmd-dialog[data-v-bb9a3f4c] {
8
+ .lp-cmd-dialog[data-v-254e59f7] {
9
9
  --lp-cmd-list: min(92vw, 40rem);
10
10
  --lp-cmd-pane: max(0px, min(26rem, 96vw - var(--lp-cmd-list)));
11
11
  width: var(--lp-cmd-list);
12
12
  }
13
- .lp-cmd-split[data-v-bb9a3f4c] {
13
+ .lp-cmd-split[data-v-254e59f7] {
14
14
  transition:
15
15
  width 300ms var(--ease-emphasized, ease),
16
16
  min-height 300ms var(--ease-emphasized, ease);
17
17
  }
18
18
  @media (min-width: 768px) {
19
- .lp-cmd-split .lp-cmd-list[data-v-bb9a3f4c] {
19
+ .lp-cmd-split .lp-cmd-list[data-v-254e59f7] {
20
20
  flex: 0 0 auto;
21
21
  /* the dialog's 1px border on each side */
22
22
  width: calc(var(--lp-cmd-list) - 2px);
23
23
  }
24
- .lp-cmd-dialog[data-pane="open"][data-v-bb9a3f4c] {
24
+ .lp-cmd-dialog[data-pane="open"][data-v-254e59f7] {
25
25
  width: calc(var(--lp-cmd-list) + var(--lp-cmd-pane));
26
26
  min-height: min(76vh, 36rem);
27
27
  }
28
28
  }
29
- .lp-cmd-pane[data-v-bb9a3f4c] {
29
+ .lp-cmd-pane[data-v-254e59f7] {
30
30
  width: var(--lp-cmd-pane);
31
31
  }
32
32
  /*
33
33
  * The pane rides in from the right edge while the dialog opens up to it, and
34
34
  * leaves the same way, for as long as the dialog takes to close over it.
35
35
  */
36
- .lp-cmd-pane-enter-active[data-v-bb9a3f4c],
37
- .lp-cmd-pane-leave-active[data-v-bb9a3f4c] {
36
+ .lp-cmd-pane-enter-active[data-v-254e59f7],
37
+ .lp-cmd-pane-leave-active[data-v-254e59f7] {
38
38
  transition:
39
39
  transform 300ms var(--ease-emphasized, ease),
40
40
  opacity 300ms ease;
41
41
  }
42
- .lp-cmd-pane-enter-from[data-v-bb9a3f4c],
43
- .lp-cmd-pane-leave-to[data-v-bb9a3f4c] {
42
+ .lp-cmd-pane-enter-from[data-v-254e59f7],
43
+ .lp-cmd-pane-leave-to[data-v-254e59f7] {
44
44
  opacity: 0;
45
45
  transform: translateX(40%);
46
46
  }
47
- .lp-cmd-para[data-v-bb9a3f4c] {
48
- animation: lp-cmd-para-in-bb9a3f4c 260ms ease-out both;
47
+ .lp-cmd-para[data-v-254e59f7] {
48
+ animation: lp-cmd-para-in-254e59f7 260ms ease-out both;
49
49
  }
50
- @keyframes lp-cmd-para-in-bb9a3f4c {
50
+ @keyframes lp-cmd-para-in-254e59f7 {
51
51
  from {
52
52
  opacity: 0;
53
53
  transform: translateY(4px);
54
54
  }
55
55
  }
56
56
  @media (prefers-reduced-motion: reduce) {
57
- .lp-cmd-split[data-v-bb9a3f4c],
58
- .lp-cmd-pane-enter-active[data-v-bb9a3f4c],
59
- .lp-cmd-pane-leave-active[data-v-bb9a3f4c] {
57
+ .lp-cmd-split[data-v-254e59f7],
58
+ .lp-cmd-pane-enter-active[data-v-254e59f7],
59
+ .lp-cmd-pane-leave-active[data-v-254e59f7] {
60
60
  transition: none;
61
61
  }
62
- .lp-cmd-para[data-v-bb9a3f4c] {
62
+ .lp-cmd-para[data-v-254e59f7] {
63
63
  animation: none;
64
64
  }
65
65
  }
66
- .lp-cmd-excerpt[data-v-bb9a3f4c] {
66
+ .lp-cmd-excerpt[data-v-254e59f7] {
67
67
  display: -webkit-box;
68
68
  -webkit-box-orient: vertical;
69
69
  overflow: hidden;
70
70
  }
71
71
  /* Each result eases in; honours reduced motion. */
72
- .lp-cmd-item[data-v-bb9a3f4c] {
73
- animation: lp-cmd-in-bb9a3f4c 140ms ease-out both;
72
+ .lp-cmd-item[data-v-254e59f7] {
73
+ animation: lp-cmd-in-254e59f7 140ms ease-out both;
74
74
  }
75
- @keyframes lp-cmd-in-bb9a3f4c {
75
+ @keyframes lp-cmd-in-254e59f7 {
76
76
  from {
77
77
  opacity: 0;
78
78
  transform: translateY(3px);
79
79
  }
80
80
  }
81
81
  @media (prefers-reduced-motion: reduce) {
82
- .lp-cmd-item[data-v-bb9a3f4c] {
82
+ .lp-cmd-item[data-v-254e59f7] {
83
83
  animation: none;
84
84
  }
85
85
  }
@@ -1,9 +1,9 @@
1
1
 
2
- .lp-dropzone__frame rect[data-v-6f6d375e] {
2
+ .lp-dropzone__frame rect[data-v-8f39f653] {
3
3
  stroke: var(--color-line);
4
4
  transition: stroke var(--duration-fast) linear;
5
5
  }
6
- .lp-dropzone:hover .lp-dropzone__frame rect[data-v-6f6d375e] {
6
+ .lp-dropzone:hover .lp-dropzone__frame rect[data-v-8f39f653] {
7
7
  stroke: var(--color-line-strong);
8
8
  }
9
9
 
@@ -12,33 +12,33 @@
12
12
  with every other thing on it; under a drag it is the answer to "can I let go
13
13
  here". One dash period per cycle, so the travel is continuous rather than
14
14
  jumping back at the seam. */
15
- .lp-dropzone--over .lp-dropzone__frame rect[data-v-6f6d375e] {
15
+ .lp-dropzone--over .lp-dropzone__frame rect[data-v-8f39f653] {
16
16
  stroke: var(--color-brand);
17
- animation: lp-dropzone-ants-6f6d375e 500ms linear infinite;
17
+ animation: lp-dropzone-ants-8f39f653 500ms linear infinite;
18
18
  }
19
- @keyframes lp-dropzone-ants-6f6d375e {
19
+ @keyframes lp-dropzone-ants-8f39f653 {
20
20
  to {
21
21
  stroke-dashoffset: -11;
22
22
  }
23
23
  }
24
24
 
25
25
  /* The dashes fade in and the block settles up a few pixels. */
26
- .lp-dropzone[data-v-6f6d375e] {
27
- animation: lp-dropzone-in-6f6d375e var(--duration-slow) var(--ease-settle) both;
26
+ .lp-dropzone[data-v-8f39f653] {
27
+ animation: lp-dropzone-in-8f39f653 var(--duration-slow) var(--ease-settle) both;
28
28
  }
29
- .lp-dropzone--waiting[data-v-6f6d375e] {
29
+ .lp-dropzone--waiting[data-v-8f39f653] {
30
30
  opacity: 0;
31
31
  animation: none;
32
32
  }
33
- @keyframes lp-dropzone-in-6f6d375e {
33
+ @keyframes lp-dropzone-in-8f39f653 {
34
34
  from {
35
35
  opacity: 0;
36
36
  transform: translateY(6px);
37
37
  }
38
38
  }
39
39
  @media (prefers-reduced-motion: reduce) {
40
- .lp-dropzone[data-v-6f6d375e],
41
- .lp-dropzone--waiting[data-v-6f6d375e] {
40
+ .lp-dropzone[data-v-8f39f653],
41
+ .lp-dropzone--waiting[data-v-8f39f653] {
42
42
  opacity: 1;
43
43
  transform: none;
44
44
  animation: none;
@@ -46,7 +46,7 @@ from {
46
46
 
47
47
  /* The ants stop, the colour stays: the brand stroke is what says "drop
48
48
  here", and it says it standing still. */
49
- .lp-dropzone--over .lp-dropzone__frame rect[data-v-6f6d375e] {
49
+ .lp-dropzone--over .lp-dropzone__frame rect[data-v-8f39f653] {
50
50
  animation: none;
51
51
  }
52
52
  }
@@ -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-fff7ed10],
15
- .lp-row-leave-active[data-v-fff7ed10] {
14
+ .lp-row-enter-active[data-v-7fc0998d],
15
+ .lp-row-leave-active[data-v-7fc0998d] {
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-fff7ed10] {
20
+ .lp-row-move[data-v-7fc0998d] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-fff7ed10],
24
- .lp-row-leave-to[data-v-fff7ed10] {
23
+ .lp-row-enter-from[data-v-7fc0998d],
24
+ .lp-row-leave-to[data-v-7fc0998d] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
@@ -35,7 +35,7 @@
35
35
  * drops out of the table layout entirely. Nothing sits below this row to be
36
36
  * dragged around, so simply not animating its exit costs nothing.
37
37
  */
38
- .lp-row-empty.lp-row-leave-active[data-v-fff7ed10] {
38
+ .lp-row-empty.lp-row-leave-active[data-v-7fc0998d] {
39
39
  display: none;
40
40
  }
41
41
 
@@ -54,7 +54,7 @@
54
54
  * once anything is selected. An earlier version collapsed the column to nothing
55
55
  * and floated the hover box over the first cell, where it sat on the text.
56
56
  */
57
- .lp-tick[data-v-fff7ed10] {
57
+ .lp-tick[data-v-7fc0998d] {
58
58
  display: flex;
59
59
  align-items: center;
60
60
  max-width: 0;
@@ -66,17 +66,17 @@
66
66
  padding var(--duration-medium) var(--ease-emphasized),
67
67
  opacity var(--duration-fast) ease;
68
68
  }
69
- .lp-tick-open[data-v-fff7ed10] {
69
+ .lp-tick-open[data-v-7fc0998d] {
70
70
  max-width: 3.25rem;
71
71
  padding-inline: 1rem;
72
72
  opacity: 1;
73
73
  }
74
- .lp-tick-hidden[data-v-fff7ed10],
75
- .lp-tick-cue[data-v-fff7ed10] {
74
+ .lp-tick-hidden[data-v-7fc0998d],
75
+ .lp-tick-cue[data-v-7fc0998d] {
76
76
  opacity: 0;
77
77
  }
78
- tr:hover .lp-tick-cue[data-v-fff7ed10],
79
- .lp-tick-cue[data-v-fff7ed10]:focus-within {
78
+ tr:hover .lp-tick-cue[data-v-7fc0998d],
79
+ .lp-tick-cue[data-v-7fc0998d]:focus-within {
80
80
  opacity: 1;
81
81
  }
82
82
 
@@ -84,15 +84,15 @@ tr:hover .lp-tick-cue[data-v-fff7ed10],
84
84
  turned down the rows change without animating rather than not changing. */
85
85
  /* Only where there is a hover to reveal it; a finger long-presses instead. */
86
86
  @media (hover: none) {
87
- tr:hover .lp-tick-cue[data-v-fff7ed10] {
87
+ tr:hover .lp-tick-cue[data-v-7fc0998d] {
88
88
  opacity: 0;
89
89
  }
90
90
  }
91
91
  @media (prefers-reduced-motion: reduce) {
92
- .lp-row-enter-active[data-v-fff7ed10],
93
- .lp-row-leave-active[data-v-fff7ed10],
94
- .lp-row-move[data-v-fff7ed10],
95
- .lp-tick[data-v-fff7ed10] {
92
+ .lp-row-enter-active[data-v-7fc0998d],
93
+ .lp-row-leave-active[data-v-7fc0998d],
94
+ .lp-row-move[data-v-7fc0998d],
95
+ .lp-tick[data-v-7fc0998d] {
96
96
  transition: none;
97
97
  }
98
98
  }
@@ -7,7 +7,7 @@ import { _ as _sfc_main$3 } from "./LpButton-CKSwC6Mu.js";
7
7
  import { _ as _sfc_main$1 } from "./LpFormField-CtVYj6tO.js";
8
8
  import { _ as _sfc_main$4 } from "./LpIcon-DYtaid0K.js";
9
9
  import { _ as _sfc_main$5 } from "./LpInput-D-YGQbEv.js";
10
- import { _ as _sfc_main$7 } from "./LpModal-BzTVeNqe.js";
10
+ import { _ as _sfc_main$7 } from "./LpModal-JNa3B_Lr.js";
11
11
  import { _ as _sfc_main$6 } from "./LpSelect-DNIL6MB9.js";
12
12
  import { useMergedAttrs } from "../composables/useMergedClass.js";
13
13
  const _hoisted_1 = { class: "flex items-stretch gap-2" };
@@ -2,9 +2,9 @@ import { defineComponent, computed, ref, useId, watch, openBlock, createElementB
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
5
- import { _ as _sfc_main$5 } from "./LpScrollArea-Bry1fdOM.js";
5
+ import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
- import { _ as _sfc_main$1 } from "./LpSidebar-Bwws_X29.js";
7
+ import { _ as _sfc_main$1 } from "./LpSidebar-DpEiGi8L.js";
8
8
  import { useMergedAttrs } from "../composables/useMergedClass.js";
9
9
  const _hoisted_1 = ["href"];
10
10
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
@@ -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-BqkAYa9X.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-1cKew_Dc.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  const __default__ = { inheritAttrs: false };
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, withCtx, resolveDynamicComponent, mergeProps, unref, renderSlot } from "vue";
2
2
  import { tv } from "tailwind-variants";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- import { _ as _sfc_main$1 } from "./LpContextMenu-BqkAYa9X.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-1cKew_Dc.js";
5
5
  const __default__ = { inheritAttrs: false };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  ...__default__,
@@ -5,7 +5,7 @@ import { useFieldControl } from "../composables/useField.js";
5
5
  import { DEFAULT_SWATCHES, formatColor, opaqueCss, parseColor, rgbToHsv, isLight, clampHsv } from "../components/color.js";
6
6
  import { useClipboard } from "../composables/useClipboard.js";
7
7
  import { POPOVER_PANEL } from "../components/dropdown.js";
8
- import { _ as _sfc_main$1 } from "./LpContextMenu-BqkAYa9X.js";
8
+ import { _ as _sfc_main$1 } from "./LpContextMenu-1cKew_Dc.js";
9
9
  import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
10
10
  import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
11
11
  const _hoisted_1 = ["id", "disabled", "aria-label", "aria-invalid", "aria-describedby"];
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, openBlock, createBlock, createSl
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
5
- import { _ as _sfc_main$1 } from "./LpModal-BzTVeNqe.js";
5
+ import { _ as _sfc_main$1 } from "./LpModal-JNa3B_Lr.js";
6
6
  const _hoisted_1 = { class: "inline-flex items-center gap-2.5" };
7
7
  const _hoisted_2 = {
8
8
  key: 0,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createBlock, createCommentVNode } from "vue";
2
2
  import { confirmQueue, settleConfirm } from "../components/confirm.js";
3
- import { _ as _sfc_main$1 } from "./LpConfirmDialog-BTVAR4tF.js";
3
+ import { _ as _sfc_main$1 } from "./LpConfirmDialog-Ca-CTlxT.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpConfirmHost",
6
6
  props: {
@@ -1,12 +1,17 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, normalizeClass, createCommentVNode } from "vue";
2
2
  import { ContextMenuRoot, ContextMenuTrigger, ContextMenuPortal, ContextMenuContent } from "reka-ui";
3
- import { _ as _sfc_main$1 } from "./ContextMenuItems-BtKU7074.js";
3
+ import { _ as _sfc_main$2 } from "./ContextMenuItems-BtKU7074.js";
4
+ import { _ as _sfc_main$1 } from "./MenuTitle-J3ZDYjpV.js";
4
5
  import { POPOVER_PANEL } from "../components/dropdown.js";
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  __name: "LpContextMenu",
7
8
  props: {
8
9
  items: {},
9
- always: { type: Boolean }
10
+ always: { type: Boolean },
11
+ title: {},
12
+ subtitle: {},
13
+ titleIcon: {},
14
+ titleImage: {}
10
15
  },
11
16
  setup(__props) {
12
17
  const props = __props;
@@ -45,16 +50,24 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
45
50
  createVNode(unref(ContextMenuContent), {
46
51
  "collision-padding": 8,
47
52
  class: normalizeClass(PANEL),
53
+ "aria-label": __props.title,
48
54
  onCloseAutoFocus: returnFocus
49
55
  }, {
50
56
  default: withCtx(() => [
51
- createVNode(_sfc_main$1, {
57
+ __props.title ? (openBlock(), createBlock(_sfc_main$1, {
58
+ key: 0,
59
+ title: __props.title,
60
+ subtitle: __props.subtitle,
61
+ icon: __props.titleIcon,
62
+ image: __props.titleImage
63
+ }, null, 8, ["title", "subtitle", "icon", "image"])) : createCommentVNode("", true),
64
+ createVNode(_sfc_main$2, {
52
65
  items: __props.items,
53
66
  panel: PANEL
54
67
  }, null, 8, ["items"])
55
68
  ]),
56
69
  _: 1
57
- })
70
+ }, 8, ["aria-label"])
58
71
  ]),
59
72
  _: 1
60
73
  })) : createCommentVNode("", true)
@@ -4,7 +4,7 @@ import { CLOSE_ICON } from "../components/dropdown.js";
4
4
  import { useGlass } from "../composables/useGlass.js";
5
5
  import { useLabels } from "../composables/useLpConfig.js";
6
6
  import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
7
- import { _ as _sfc_main$2 } from "./LpScrollArea-Bry1fdOM.js";
7
+ import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
8
8
  import { useModalLayer, anyModalOpen } from "../components/modalDepth.js";
9
9
  const _hoisted_1 = { class: "text-base font-semibold text-ink" };
10
10
  const _hoisted_2 = { class: "flex flex-col gap-1" };
@@ -1,11 +1,16 @@
1
- import { defineComponent, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, normalizeClass, createElementBlock, Fragment, renderList, createCommentVNode, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, normalizeClass, createCommentVNode, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString } from "vue";
2
2
  import { DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuItem } from "reka-ui";
3
3
  import { POPOVER_PANEL } from "../components/dropdown.js";
4
- import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
4
+ import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
5
+ import { _ as _sfc_main$1 } from "./MenuTitle-J3ZDYjpV.js";
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  __name: "LpDropdownMenu",
7
8
  props: {
8
- items: {}
9
+ items: {},
10
+ title: {},
11
+ subtitle: {},
12
+ titleIcon: {},
13
+ titleImage: {}
9
14
  },
10
15
  setup(__props) {
11
16
  return (_ctx, _cache) => {
@@ -23,9 +28,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
23
28
  "collision-padding": 8,
24
29
  "side-offset": 6,
25
30
  align: "end",
26
- class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) min-w-44 p-1 outline-none"])
31
+ class: normalizeClass([unref(POPOVER_PANEL), "z-(--z-popover) min-w-44 p-1 outline-none"]),
32
+ "aria-label": __props.title
27
33
  }, {
28
34
  default: withCtx(() => [
35
+ __props.title ? (openBlock(), createBlock(_sfc_main$1, {
36
+ key: 0,
37
+ title: __props.title,
38
+ subtitle: __props.subtitle,
39
+ icon: __props.titleIcon,
40
+ image: __props.titleImage
41
+ }, null, 8, ["title", "subtitle", "icon", "image"])) : createCommentVNode("", true),
29
42
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
30
43
  return openBlock(), createElementBlock(Fragment, { key: i }, [
31
44
  item.separatorBefore ? (openBlock(), createBlock(unref(DropdownMenuSeparator), {
@@ -33,11 +46,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
46
  class: "my-1 h-px bg-line"
34
47
  })) : createCommentVNode("", true),
35
48
  createVNode(unref(DropdownMenuItem), {
36
- class: normalizeClass(["group/item flex cursor-pointer 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-[highlighted]:bg-brand-soft", item.danger ? "text-danger data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger" : "text-ink data-[highlighted]:text-brand"]),
49
+ class: normalizeClass(["group/item flex cursor-pointer 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", item.danger ? "text-danger data-[highlighted]:bg-danger-soft data-[highlighted]:text-danger" : "text-ink data-[highlighted]:text-brand"]),
50
+ disabled: item.disabled,
37
51
  onSelect: ($event) => item.onSelect?.()
38
52
  }, {
39
53
  default: withCtx(() => [
40
- item.icon ? (openBlock(), createBlock(_sfc_main$1, {
54
+ item.icon ? (openBlock(), createBlock(_sfc_main$2, {
41
55
  key: 0,
42
56
  name: item.icon,
43
57
  size: 15,
@@ -46,12 +60,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
46
60
  createTextVNode(" " + toDisplayString(item.label), 1)
47
61
  ]),
48
62
  _: 2
49
- }, 1032, ["class", "onSelect"])
63
+ }, 1032, ["class", "disabled", "onSelect"])
50
64
  ], 64);
51
65
  }), 128))
52
66
  ]),
53
67
  _: 1
54
- }, 8, ["class"])
68
+ }, 8, ["class", "aria-label"])
55
69
  ]),
56
70
  _: 1
57
71
  })
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, ref, watch, computed, openBlock, createElementBlock, mergeProps, unref, Fragment, renderList, normalizeStyle, createBlock, createVNode, withCtx, createElementVNode, renderSlot, 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-BJbZXC8D.js";
4
- import { _ as _sfc_main$3 } from "./LpFileTreeNode-D_qRRdsH.js";
5
- import { _ as _sfc_main$2 } from "./LpScrollArea-Bry1fdOM.js";
4
+ import { _ as _sfc_main$3 } from "./LpFileTreeNode-BvMSBM7X.js";
5
+ import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { useLabels } from "../composables/useLpConfig.js";
8
8
  const _hoisted_1 = {
@@ -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-Bkj13CbW.js";
5
- import { _ as _sfc_main$1 } from "./LpContextMenu-BqkAYa9X.js";
5
+ import { _ as _sfc_main$1 } from "./LpContextMenu-1cKew_Dc.js";
6
6
  import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
7
7
  import { useMergedAttrs } from "../composables/useMergedClass.js";
8
8
  const _hoisted_1 = ["aria-level", "aria-selected", "aria-expanded", "aria-disabled"];
@@ -2,9 +2,9 @@ import { defineComponent, useModel, computed, ref, shallowRef, onMounted, onBefo
2
2
  import { prefersReducedMotion } from "../composables/easing.js";
3
3
  import { useClipboard } from "../composables/useClipboard.js";
4
4
  import { useHotkeys } from "../composables/useHotkeys.js";
5
- import { _ as _sfc_main$3 } from "./LpContextMenu-BqkAYa9X.js";
5
+ import { _ as _sfc_main$3 } from "./LpContextMenu-1cKew_Dc.js";
6
6
  import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
7
- import { _ as _sfc_main$2 } from "./LpScrollArea-Bry1fdOM.js";
7
+ import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
8
8
  import { useMergedAttrs } from "../composables/useMergedClass.js";
9
9
  import { useLabels } from "../composables/useLpConfig.js";
10
10
  import { ringWindow, matchPositions, countLevels, stepMatch } from "../components/logSearch.js";
@@ -6,7 +6,7 @@ import { useShift } from "../composables/useShift.js";
6
6
  import { useModalLayer } from "../components/modalDepth.js";
7
7
  import { CLOSE_ICON } from "../components/dropdown.js";
8
8
  import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
9
- import { _ as _sfc_main$2 } from "./LpScrollArea-Bry1fdOM.js";
9
+ import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
10
10
  const _hoisted_1 = {
11
11
  key: 0,
12
12
  "data-lp-modal-aside": "",
@@ -16,12 +16,16 @@ const _hoisted_2 = {
16
16
  key: 1,
17
17
  class: "flex shrink-0 items-start justify-between gap-4 p-5 pb-3"
18
18
  };
19
- const _hoisted_3 = { class: "flex flex-col gap-1" };
19
+ const _hoisted_3 = { class: "flex min-w-0 flex-1 flex-col gap-1" };
20
20
  const _hoisted_4 = {
21
+ key: 0,
22
+ class: "flex shrink-0 flex-wrap items-center justify-end gap-2"
23
+ };
24
+ const _hoisted_5 = {
21
25
  key: 4,
22
26
  class: "flex shrink-0 justify-end gap-2 p-5 pt-4"
23
27
  };
24
- const _hoisted_5 = {
28
+ const _hoisted_6 = {
25
29
  key: 1,
26
30
  "data-lp-modal-aside": "",
27
31
  class: "flex min-h-0 flex-col"
@@ -194,6 +198,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
194
198
  _: 1
195
199
  })) : createCommentVNode("", true)
196
200
  ]),
201
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_4, [
202
+ renderSlot(_ctx.$slots, "actions")
203
+ ])) : createCommentVNode("", true),
197
204
  createVNode(unref(DialogClose), {
198
205
  "data-lp-dialog-close": "",
199
206
  class: "group flex shrink-0 items-center rounded-md p-1 text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring",
@@ -224,11 +231,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
224
231
  ]),
225
232
  _: 3
226
233
  }, 8, ["class", "content-class"])),
227
- _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_4, [
234
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_5, [
228
235
  renderSlot(_ctx.$slots, "footer")
229
236
  ])) : createCommentVNode("", true)
230
237
  ], 6),
231
- _ctx.$slots.asideEnd ? (openBlock(), createElementBlock("aside", _hoisted_5, [
238
+ _ctx.$slots.asideEnd ? (openBlock(), createElementBlock("aside", _hoisted_6, [
232
239
  renderSlot(_ctx.$slots, "asideEnd")
233
240
  ])) : createCommentVNode("", true)
234
241
  ]),
@@ -3,8 +3,8 @@ import { useGlass } from "../composables/useGlass.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
5
5
  import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
6
- import { _ as _sfc_main$1 } from "./LpModal-BzTVeNqe.js";
7
- import { _ as _sfc_main$4 } from "./LpSidebar-Bwws_X29.js";
6
+ import { _ as _sfc_main$1 } from "./LpModal-JNa3B_Lr.js";
7
+ import { _ as _sfc_main$4 } from "./LpSidebar-DpEiGi8L.js";
8
8
  const _hoisted_1 = { class: "flex items-center gap-2" };
9
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  __name: "LpModalNav",
@@ -161,12 +161,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
161
161
  ]),
162
162
  key: "1"
163
163
  } : void 0,
164
+ _ctx.$slots.actions ? {
165
+ name: "actions",
166
+ fn: withCtx(() => [
167
+ renderSlot(_ctx.$slots, "actions")
168
+ ]),
169
+ key: "2"
170
+ } : void 0,
164
171
  _ctx.$slots.footer ? {
165
172
  name: "footer",
166
173
  fn: withCtx(() => [
167
174
  renderSlot(_ctx.$slots, "footer")
168
175
  ]),
169
- key: "2"
176
+ key: "3"
170
177
  } : void 0
171
178
  ]), 1032, ["glass", "open", "title", "description", "size", "width", "fill-body"]);
172
179
  };
@@ -2,12 +2,12 @@ import { defineComponent, computed, useModel, getCurrentInstance, ref, onMounted
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$8 } from "./LpBadge-Fe0D1bYx.js";
4
4
  import { _ as _sfc_main$7 } from "./LpButton-CKSwC6Mu.js";
5
- import { _ as _sfc_main$5 } from "./LpContextMenu-BqkAYa9X.js";
5
+ import { _ as _sfc_main$5 } from "./LpContextMenu-1cKew_Dc.js";
6
6
  import { _ as _sfc_main$3 } from "./LpEmptyState-BJbZXC8D.js";
7
7
  import { _ as _sfc_main$6 } from "./LpIcon-DYtaid0K.js";
8
8
  import { _ as _sfc_main$1 } from "./LpPopover-DCKeqiVn.js";
9
9
  import { _ as _sfc_main$9 } from "./LpRollingText-DB7upf-5.js";
10
- import { _ as _sfc_main$4 } from "./LpScrollArea-Bry1fdOM.js";
10
+ import { _ as _sfc_main$4 } from "./LpScrollArea-Hz3-JWUG.js";
11
11
  import { _ as _sfc_main$2 } from "./LpShift-DXNsauQZ.js";
12
12
  const _hoisted_1 = { class: "flex items-center justify-between gap-2 px-3 py-2.5" };
13
13
  const _hoisted_2 = { class: "text-sm font-semibold" };
@@ -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-BqkAYa9X.js";
5
+ import { _ as _sfc_main$2 } from "./LpContextMenu-1cKew_Dc.js";
6
6
  import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
7
7
  import { _ as _sfc_main$4 } from "./LpNumberFlow-z4WPZcZu.js";
8
8
  import { _ as _sfc_main$5 } from "./LpRollingText-DB7upf-5.js";