@leavepulse/ui 0.34.0 → 0.36.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 (55) hide show
  1. package/dist/assets/{LpTable-Ckoi05Am.css → LpTable-DfSwPCJ-.css} +21 -8
  2. package/dist/chunks/{LpAddressInput-FZXfljWV.js → LpAddressInput-D4t8WFD-.js} +1 -1
  3. package/dist/chunks/{LpConfirmDialog-CQBVaLpo.js → LpConfirmDialog-CxbizvSB.js} +1 -1
  4. package/dist/chunks/LpModal-7LvuAA7U.js +224 -0
  5. package/dist/chunks/LpModalNav-DBMGlq_x.js +166 -0
  6. package/dist/component-names.d.ts +1 -1
  7. package/dist/components/LpActionBar.vue.d.ts +1 -1
  8. package/dist/components/LpAddressInput.vue.d.ts +3 -3
  9. package/dist/components/LpAddressInput.vue.js +1 -1
  10. package/dist/components/LpAppShell.vue.d.ts +4 -1
  11. package/dist/components/LpAutocomplete.vue.d.ts +1 -1
  12. package/dist/components/LpBadge.vue.d.ts +2 -2
  13. package/dist/components/LpCodeBlock.vue.d.ts +1 -1
  14. package/dist/components/LpColorPicker.vue.d.ts +9 -4
  15. package/dist/components/LpConfirmDialog.vue.js +1 -1
  16. package/dist/components/LpDropzone.vue.d.ts +4 -4
  17. package/dist/components/LpFileTree.vue.d.ts +4 -4
  18. package/dist/components/LpFormField.vue.d.ts +1 -1
  19. package/dist/components/LpLaneNode.vue.d.ts +11 -0
  20. package/dist/components/LpLightbox.vue.d.ts +2 -2
  21. package/dist/components/LpLogViewer.vue.d.ts +1 -1
  22. package/dist/components/LpMapPicker.vue.d.ts +1 -1
  23. package/dist/components/LpMediaGallery.vue.d.ts +1 -1
  24. package/dist/components/LpModal.vue.d.ts +9 -5
  25. package/dist/components/LpModal.vue.js +1 -1
  26. package/dist/components/LpModalNav.vue.d.ts +63 -0
  27. package/dist/components/LpModalNav.vue.js +4 -0
  28. package/dist/components/LpPie.vue.d.ts +22 -4
  29. package/dist/components/LpPopover.vue.d.ts +1 -1
  30. package/dist/components/LpProgress.vue.d.ts +2 -2
  31. package/dist/components/LpRollingText.vue.d.ts +3 -3
  32. package/dist/components/LpSelect.vue.d.ts +6 -6
  33. package/dist/components/LpShift.vue.d.ts +1 -1
  34. package/dist/components/LpShortcutsDialog.vue.d.ts +1 -1
  35. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  36. package/dist/components/LpSidebar.vue.d.ts +7 -1
  37. package/dist/components/LpSidebarNav.vue.d.ts +2 -2
  38. package/dist/components/LpSlider.vue.d.ts +2 -2
  39. package/dist/components/LpSparkline.vue.d.ts +2 -2
  40. package/dist/components/LpTable.vue.d.ts +9 -9
  41. package/dist/components/LpTable.vue.js +7 -4
  42. package/dist/components/LpTabs.vue.d.ts +1 -1
  43. package/dist/components/LpThemeSwitcher.vue.d.ts +1 -1
  44. package/dist/components/LpTilt.vue.d.ts +1 -1
  45. package/dist/components/LpTooltip.vue.d.ts +1 -1
  46. package/dist/components/LpTopologyCanvas.vue.d.ts +1 -1
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +75 -73
  49. package/package.json +1 -1
  50. package/src/component-names.ts +1 -0
  51. package/src/components/LpModal.vue +69 -1
  52. package/src/components/LpModalNav.vue +202 -0
  53. package/src/components/LpTable.vue +22 -2
  54. package/src/index.ts +1 -0
  55. package/dist/chunks/LpModal-DAqXzsm-.js +0 -192
@@ -11,21 +11,34 @@
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-d139c3bb],
15
- .lp-row-leave-active[data-v-d139c3bb] {
14
+ .lp-row-enter-active[data-v-1fada8e7],
15
+ .lp-row-leave-active[data-v-1fada8e7] {
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-d139c3bb] {
20
+ .lp-row-move[data-v-1fada8e7] {
21
21
  transition: transform var(--duration-medium) var(--ease-emphasized);
22
22
  }
23
- .lp-row-enter-from[data-v-d139c3bb],
24
- .lp-row-leave-to[data-v-d139c3bb] {
23
+ .lp-row-enter-from[data-v-1fada8e7],
24
+ .lp-row-leave-to[data-v-1fada8e7] {
25
25
  opacity: 0;
26
26
  transform: translateX(-0.5rem);
27
27
  }
28
28
 
29
+ /*
30
+ * The empty-state row leaves at once, without the fade. It and the first real
31
+ * rows would otherwise share the table for the length of the animation, and a
32
+ * row of blank height sits above them — the table jumps once on every load.
33
+ *
34
+ * `position: absolute` is what a list would use here, but a positioned `<tr>`
35
+ * drops out of the table layout entirely. Nothing sits below this row to be
36
+ * dragged around, so simply not animating its exit costs nothing.
37
+ */
38
+ .lp-row-empty.lp-row-leave-active[data-v-1fada8e7] {
39
+ display: none;
40
+ }
41
+
29
42
  /*
30
43
  * The leaving row stays in the flow. Taking it out with `position: absolute` is
31
44
  * the usual trick for a list, but a `<tr>` positioned that way loses the table's
@@ -37,9 +50,9 @@
37
50
  /* A filter that redraws the list is information, not decoration: with motion
38
51
  turned down the rows change without animating rather than not changing. */
39
52
  @media (prefers-reduced-motion: reduce) {
40
- .lp-row-enter-active[data-v-d139c3bb],
41
- .lp-row-leave-active[data-v-d139c3bb],
42
- .lp-row-move[data-v-d139c3bb] {
53
+ .lp-row-enter-active[data-v-1fada8e7],
54
+ .lp-row-leave-active[data-v-1fada8e7],
55
+ .lp-row-move[data-v-1fada8e7] {
43
56
  transition: none;
44
57
  }
45
58
  }
@@ -6,7 +6,7 @@ import { _ as _sfc_main$3 } from "./LpButton-5VXXCjwF.js";
6
6
  import { _ as _sfc_main$1 } from "./LpFormField-CazBc2-a.js";
7
7
  import { _ as _sfc_main$4 } from "./LpIcon-CCnX5_2j.js";
8
8
  import { _ as _sfc_main$5 } from "./LpInput-9EXWUM9B.js";
9
- import { _ as _sfc_main$7 } from "./LpModal-DAqXzsm-.js";
9
+ import { _ as _sfc_main$7 } from "./LpModal-7LvuAA7U.js";
10
10
  import { _ as _sfc_main$6 } from "./LpSelect-ANIVtrpM.js";
11
11
  import { useMergedAttrs } from "../composables/useMergedClass.js";
12
12
  const _hoisted_1 = { class: "flex items-stretch gap-2" };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, createSlots, withCtx, renderSlot, createVNode, createTextVNode, toDisplayString, createElementVNode, normalizeClass } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$1 } from "./LpModal-DAqXzsm-.js";
4
+ import { _ as _sfc_main$1 } from "./LpModal-7LvuAA7U.js";
5
5
  const _hoisted_1 = { class: "inline-flex items-center gap-2.5" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
7
  __name: "LpConfirmDialog",
@@ -0,0 +1,224 @@
1
+ import { defineComponent, computed, useSlots, watch, onBeforeUnmount, ref, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, createElementVNode, createElementBlock, renderSlot, createCommentVNode, mergeProps, createTextVNode, toDisplayString, normalizeClass } from "vue";
2
+ import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from "reka-ui";
3
+ import { useShift } from "../composables/useShift.js";
4
+ import { useModalLayer } from "../components/modalDepth.js";
5
+ import { CLOSE_ICON } from "../components/dropdown.js";
6
+ import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
7
+ import { _ as _sfc_main$2 } from "./LpScrollArea-D8xyKXcF.js";
8
+ const _hoisted_1 = {
9
+ key: 0,
10
+ "data-lp-modal-aside": "",
11
+ class: "pointer-events-auto flex min-h-0 flex-col"
12
+ };
13
+ const _hoisted_2 = {
14
+ key: 0,
15
+ class: "flex shrink-0 items-start justify-between gap-4 p-5 pb-3"
16
+ };
17
+ const _hoisted_3 = { class: "flex flex-col gap-1" };
18
+ const _hoisted_4 = {
19
+ key: 3,
20
+ class: "flex shrink-0 justify-end gap-2 p-5 pt-4"
21
+ };
22
+ const _hoisted_5 = {
23
+ key: 1,
24
+ "data-lp-modal-aside": "",
25
+ class: "pointer-events-auto flex min-h-0 flex-col"
26
+ };
27
+ const _sfc_main = /* @__PURE__ */ defineComponent({
28
+ __name: "LpModal",
29
+ props: {
30
+ open: { type: Boolean },
31
+ title: {},
32
+ description: {},
33
+ size: { default: "md" },
34
+ width: {},
35
+ fillBody: { type: Boolean },
36
+ autoFocus: { default: "auto" }
37
+ },
38
+ emits: ["update:open"],
39
+ setup(__props) {
40
+ const { claim, release, layer } = useModalLayer();
41
+ const props = __props;
42
+ const onInteractOutside = (event) => {
43
+ const target = event.target;
44
+ if (target instanceof Element && target.closest("[data-lp-modal-aside]")) {
45
+ event.preventDefault();
46
+ }
47
+ };
48
+ const describedByAttrs = computed(
49
+ () => props.description ? {} : { "aria-describedby": void 0 }
50
+ );
51
+ const widthClass = computed(() => {
52
+ if (props.width) return "";
53
+ return {
54
+ sm: "w-[min(92vw,24rem)]",
55
+ md: "w-[min(92vw,28rem)]",
56
+ lg: "w-[min(92vw,34rem)]",
57
+ xl: "w-[min(92vw,42rem)]",
58
+ "2xl": "w-[min(94vw,56rem)]",
59
+ "3xl": "w-[min(95vw,72rem)]",
60
+ full: "w-[96vw]"
61
+ }[props.size];
62
+ });
63
+ const slots = useSlots();
64
+ const hasAside = computed(() => Boolean(slots.aside || slots.asideEnd));
65
+ watch(() => props.open, (open) => open ? claim() : release(), { immediate: true });
66
+ onBeforeUnmount(release);
67
+ const bodyPad = computed(
68
+ () => [
69
+ "px-5",
70
+ props.title || slots.title ? "pt-1" : "pt-5",
71
+ slots.footer ? "" : "pb-5"
72
+ ].filter(Boolean).join(" ")
73
+ );
74
+ const panelRef = ref(null);
75
+ const AUTO_FOCUS_ORDER = [
76
+ "input:not([type=hidden]):not([disabled]):not([readonly])",
77
+ "textarea:not([disabled]):not([readonly])",
78
+ "select:not([disabled])",
79
+ "[data-lp-autofocus]",
80
+ "button:not([disabled]):not([data-lp-dialog-close])",
81
+ "[href]",
82
+ "[tabindex]:not([tabindex='-1'])"
83
+ ];
84
+ function onOpenAutoFocus(event) {
85
+ if (props.autoFocus === "none") return;
86
+ const panel = panelRef.value?.$el;
87
+ if (!(panel instanceof HTMLElement)) return;
88
+ const selectors = props.autoFocus === "auto" ? AUTO_FOCUS_ORDER : [props.autoFocus];
89
+ for (const selector of selectors) {
90
+ const target = panel.querySelector(selector);
91
+ if (!target || target.hasAttribute("disabled")) continue;
92
+ event.preventDefault();
93
+ if (!target.closest("[data-lp-ring-owner]")) {
94
+ target.setAttribute("data-lp-focus-ring", "");
95
+ target.addEventListener(
96
+ "blur",
97
+ () => target.removeAttribute("data-lp-focus-ring"),
98
+ { once: true }
99
+ );
100
+ }
101
+ target.focus();
102
+ return;
103
+ }
104
+ }
105
+ const {
106
+ el: sizedEl,
107
+ tweening,
108
+ resizing
109
+ } = useShift({ axis: "height", enabled: () => props.open });
110
+ watch(
111
+ () => props.open ? panelRef.value : null,
112
+ (panel) => {
113
+ const el = panel?.$el;
114
+ sizedEl.value = el instanceof HTMLElement ? el : null;
115
+ },
116
+ { flush: "post" }
117
+ );
118
+ return (_ctx, _cache) => {
119
+ return openBlock(), createBlock(unref(DialogRoot), {
120
+ open: __props.open,
121
+ "onUpdate:open": _cache[0] || (_cache[0] = (v) => _ctx.$emit("update:open", v))
122
+ }, {
123
+ default: withCtx(() => [
124
+ createVNode(unref(DialogPortal), null, {
125
+ default: withCtx(() => [
126
+ createVNode(unref(DialogOverlay), {
127
+ class: "lp-scrim fixed inset-0 data-[state=open]:animate-[fade-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[fade-out_120ms_ease]",
128
+ style: normalizeStyle({ zIndex: unref(layer).scrim })
129
+ }, null, 8, ["style"]),
130
+ createElementVNode("div", {
131
+ class: "fixed inset-0 flex items-center justify-center pointer-events-none",
132
+ style: normalizeStyle({ zIndex: unref(layer).panel })
133
+ }, [
134
+ createElementVNode("div", {
135
+ class: "flex items-start",
136
+ style: normalizeStyle(hasAside.value ? { maxHeight: "min(90vh, calc(100dvh - 2rem))" } : void 0)
137
+ }, [
138
+ _ctx.$slots.aside ? (openBlock(), createElementBlock("aside", _hoisted_1, [
139
+ renderSlot(_ctx.$slots, "aside")
140
+ ])) : createCommentVNode("", true),
141
+ createVNode(unref(DialogContent), mergeProps({
142
+ ref_key: "panelRef",
143
+ ref: panelRef,
144
+ class: ["pointer-events-auto flex max-h-[min(90vh,calc(100dvh-2rem))] min-h-0 flex-col overflow-hidden rounded-card border border-line bg-surface-raised shadow-panel outline-none data-[state=open]:animate-[rise-in_var(--duration-medium)_var(--ease-emphasized)] data-[state=closed]:animate-[rise-out_120ms_cubic-bezier(0.4,0,1,1)]", [widthClass.value, unref(tweening) ? "transition-[height] duration-fast ease-[var(--ease-emphasized)] motion-reduce:transition-none" : ""]],
145
+ style: { ...__props.width ? { width: __props.width } : {}, ...hasAside.value ? { alignSelf: "stretch" } : {} }
146
+ }, describedByAttrs.value, {
147
+ onOpenAutoFocus,
148
+ onInteractOutside,
149
+ onPointerDownOutside: onInteractOutside
150
+ }), {
151
+ default: withCtx(() => [
152
+ __props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("header", _hoisted_2, [
153
+ createElementVNode("div", _hoisted_3, [
154
+ createVNode(unref(DialogTitle), { class: "text-base font-semibold text-ink" }, {
155
+ default: withCtx(() => [
156
+ renderSlot(_ctx.$slots, "title", {}, () => [
157
+ createTextVNode(toDisplayString(__props.title), 1)
158
+ ])
159
+ ]),
160
+ _: 3
161
+ }),
162
+ __props.description ? (openBlock(), createBlock(unref(DialogDescription), {
163
+ key: 0,
164
+ class: "text-sm text-muted"
165
+ }, {
166
+ default: withCtx(() => [
167
+ createTextVNode(toDisplayString(__props.description), 1)
168
+ ]),
169
+ _: 1
170
+ })) : createCommentVNode("", true)
171
+ ]),
172
+ createVNode(unref(DialogClose), {
173
+ "data-lp-dialog-close": "",
174
+ 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",
175
+ "aria-label": "Close"
176
+ }, {
177
+ default: withCtx(() => [
178
+ createVNode(_sfc_main$1, {
179
+ name: "lucide:x",
180
+ size: 18,
181
+ class: normalizeClass(unref(CLOSE_ICON))
182
+ }, null, 8, ["class"])
183
+ ]),
184
+ _: 1
185
+ })
186
+ ])) : createCommentVNode("", true),
187
+ __props.fillBody ? (openBlock(), createElementBlock("div", {
188
+ key: 1,
189
+ class: normalizeClass(["flex min-h-0 flex-1 flex-col overflow-hidden text-sm text-ink/90", bodyPad.value])
190
+ }, [
191
+ renderSlot(_ctx.$slots, "default")
192
+ ], 2)) : (openBlock(), createBlock(_sfc_main$2, {
193
+ key: 2,
194
+ class: normalizeClass(["min-h-0 flex-1 text-sm text-ink/90", unref(resizing) ? "[&_[data-scrollbarimpl]]:invisible" : ""]),
195
+ "content-class": bodyPad.value
196
+ }, {
197
+ default: withCtx(() => [
198
+ renderSlot(_ctx.$slots, "default")
199
+ ]),
200
+ _: 3
201
+ }, 8, ["class", "content-class"])),
202
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_4, [
203
+ renderSlot(_ctx.$slots, "footer")
204
+ ])) : createCommentVNode("", true)
205
+ ]),
206
+ _: 3
207
+ }, 16, ["class", "style"]),
208
+ _ctx.$slots.asideEnd ? (openBlock(), createElementBlock("aside", _hoisted_5, [
209
+ renderSlot(_ctx.$slots, "asideEnd")
210
+ ])) : createCommentVNode("", true)
211
+ ], 4)
212
+ ], 4)
213
+ ]),
214
+ _: 3
215
+ })
216
+ ]),
217
+ _: 3
218
+ }, 8, ["open"]);
219
+ };
220
+ }
221
+ });
222
+ export {
223
+ _sfc_main as _
224
+ };
@@ -0,0 +1,166 @@
1
+ import { defineComponent, ref, computed, openBlock, createBlock, createSlots, withCtx, renderSlot, createElementVNode, normalizeClass, createVNode, createCommentVNode, createTextVNode, toDisplayString } from "vue";
2
+ import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
+ import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
+ import { _ as _sfc_main$1 } from "./LpModal-7LvuAA7U.js";
5
+ import { _ as _sfc_main$4 } from "./LpSidebar-DcYavim2.js";
6
+ const _hoisted_1 = { class: "flex items-center gap-2" };
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ __name: "LpModalNav",
9
+ props: {
10
+ open: { type: Boolean },
11
+ modelValue: {},
12
+ items: {},
13
+ sections: {},
14
+ title: {},
15
+ description: {},
16
+ size: { default: "2xl" },
17
+ width: {},
18
+ navWidth: { default: "13rem" },
19
+ searchable: { type: Boolean },
20
+ searchPlaceholder: {},
21
+ loading: { type: Boolean },
22
+ mobileBreakpoint: { default: "lg" },
23
+ navLabel: { default: "Sections" },
24
+ navSide: { default: "start" },
25
+ fillBody: { type: Boolean }
26
+ },
27
+ emits: ["update:open", "update:modelValue"],
28
+ setup(__props, { emit: __emit }) {
29
+ const props = __props;
30
+ const emit = __emit;
31
+ const navOpen = ref(false);
32
+ const active = computed({
33
+ get: () => props.modelValue ?? "",
34
+ set: (v) => emit("update:modelValue", v)
35
+ });
36
+ const hasNav = computed(() => Boolean(props.items?.length || props.sections?.length));
37
+ const RAIL_GAP = {
38
+ sm: "sm:mr-3",
39
+ md: "md:mr-3",
40
+ lg: "lg:mr-3",
41
+ xl: "xl:mr-3"
42
+ };
43
+ const RAIL_GAP_END = {
44
+ sm: "sm:ml-3",
45
+ md: "md:ml-3",
46
+ lg: "lg:ml-3",
47
+ xl: "xl:ml-3"
48
+ };
49
+ const TRIGGER_VISIBILITY = {
50
+ sm: "sm:hidden",
51
+ md: "md:hidden",
52
+ lg: "lg:hidden",
53
+ xl: "xl:hidden"
54
+ };
55
+ const railClass = computed(
56
+ () => (props.navSide === "end" ? RAIL_GAP_END : RAIL_GAP)[props.mobileBreakpoint]
57
+ );
58
+ const triggerClass = computed(() => TRIGGER_VISIBILITY[props.mobileBreakpoint]);
59
+ const railStyle = { maxHeight: "min(90vh, calc(100dvh - 2rem))" };
60
+ return (_ctx, _cache) => {
61
+ return openBlock(), createBlock(_sfc_main$1, {
62
+ open: __props.open,
63
+ title: __props.title,
64
+ description: __props.description,
65
+ size: __props.size,
66
+ width: __props.width,
67
+ "fill-body": __props.fillBody,
68
+ "onUpdate:open": _cache[5] || (_cache[5] = ($event) => emit("update:open", $event))
69
+ }, createSlots({
70
+ title: withCtx(() => [
71
+ createElementVNode("div", _hoisted_1, [
72
+ hasNav.value ? (openBlock(), createBlock(_sfc_main$2, {
73
+ key: 0,
74
+ variant: "ghost",
75
+ size: "sm",
76
+ square: "",
77
+ "aria-label": __props.navLabel,
78
+ class: normalizeClass(triggerClass.value),
79
+ onClick: _cache[4] || (_cache[4] = ($event) => navOpen.value = true)
80
+ }, {
81
+ default: withCtx(() => [
82
+ createVNode(_sfc_main$3, {
83
+ name: "lucide:menu",
84
+ size: 18
85
+ })
86
+ ]),
87
+ _: 1
88
+ }, 8, ["aria-label", "class"])) : createCommentVNode("", true),
89
+ renderSlot(_ctx.$slots, "title", {}, () => [
90
+ createTextVNode(toDisplayString(__props.title), 1)
91
+ ])
92
+ ])
93
+ ]),
94
+ default: withCtx(() => [
95
+ renderSlot(_ctx.$slots, "default")
96
+ ]),
97
+ _: 2
98
+ }, [
99
+ hasNav.value && __props.navSide === "start" ? {
100
+ name: "aside",
101
+ fn: withCtx(() => [
102
+ createElementVNode("div", {
103
+ class: normalizeClass(railClass.value)
104
+ }, [
105
+ createVNode(_sfc_main$4, {
106
+ modelValue: active.value,
107
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => active.value = $event),
108
+ open: navOpen.value,
109
+ "onUpdate:open": _cache[1] || (_cache[1] = ($event) => navOpen.value = $event),
110
+ variant: "panel",
111
+ items: __props.items,
112
+ sections: __props.sections,
113
+ width: __props.navWidth,
114
+ searchable: __props.searchable,
115
+ "search-placeholder": __props.searchPlaceholder,
116
+ loading: __props.loading,
117
+ responsive: "",
118
+ "mobile-breakpoint": __props.mobileBreakpoint,
119
+ style: railStyle,
120
+ class: "rounded-card border border-line bg-surface-raised p-2 shadow-panel"
121
+ }, null, 8, ["modelValue", "open", "items", "sections", "width", "searchable", "search-placeholder", "loading", "mobile-breakpoint"])
122
+ ], 2)
123
+ ]),
124
+ key: "0"
125
+ } : void 0,
126
+ hasNav.value && __props.navSide === "end" ? {
127
+ name: "asideEnd",
128
+ fn: withCtx(() => [
129
+ createElementVNode("div", {
130
+ class: normalizeClass(railClass.value)
131
+ }, [
132
+ createVNode(_sfc_main$4, {
133
+ modelValue: active.value,
134
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => active.value = $event),
135
+ open: navOpen.value,
136
+ "onUpdate:open": _cache[3] || (_cache[3] = ($event) => navOpen.value = $event),
137
+ variant: "panel",
138
+ items: __props.items,
139
+ sections: __props.sections,
140
+ width: __props.navWidth,
141
+ searchable: __props.searchable,
142
+ "search-placeholder": __props.searchPlaceholder,
143
+ loading: __props.loading,
144
+ responsive: "",
145
+ "mobile-breakpoint": __props.mobileBreakpoint,
146
+ style: railStyle,
147
+ class: "rounded-card border border-line bg-surface-raised p-2 shadow-panel"
148
+ }, null, 8, ["modelValue", "open", "items", "sections", "width", "searchable", "search-placeholder", "loading", "mobile-breakpoint"])
149
+ ], 2)
150
+ ]),
151
+ key: "1"
152
+ } : void 0,
153
+ _ctx.$slots.footer ? {
154
+ name: "footer",
155
+ fn: withCtx(() => [
156
+ renderSlot(_ctx.$slots, "footer")
157
+ ]),
158
+ key: "2"
159
+ } : void 0
160
+ ]), 1032, ["open", "title", "description", "size", "width", "fill-body"]);
161
+ };
162
+ }
163
+ });
164
+ export {
165
+ _sfc_main as _
166
+ };
@@ -1 +1 @@
1
- export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LayoutNode", "LpActionBar", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpChart", "LpCheckbox", "LpCodeBlock", "LpColorPicker", "LpCommandPalette", "LpConfirmDialog", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpDropzone", "LpEmptyState", "LpFileTree", "LpFileTreeNode", "LpFormField", "LpIcon", "LpImageEditor", "LpInfraNode", "LpInput", "LpLaneNode", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpMediaGallery", "LpModal", "LpNotificationBell", "LpNumberField", "LpNumberFlow", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPie", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpRollingText", "LpScrollArea", "LpSection", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSidebarNav", "LpSkeleton", "LpSlider", "LpSparkline", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeSwitcher", "LpTilt", "LpToaster", "LpTooltip", "LpTopologyCanvas", "LpUptimeBar", "LpWaypointEdge"];
1
+ export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LayoutNode", "LpActionBar", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpChart", "LpCheckbox", "LpCodeBlock", "LpColorPicker", "LpCommandPalette", "LpConfirmDialog", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpDropzone", "LpEmptyState", "LpFileTree", "LpFileTreeNode", "LpFormField", "LpIcon", "LpImageEditor", "LpInfraNode", "LpInput", "LpLaneNode", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpMediaGallery", "LpModal", "LpModalNav", "LpNotificationBell", "LpNumberField", "LpNumberFlow", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPie", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpRollingText", "LpScrollArea", "LpSection", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSidebarNav", "LpSkeleton", "LpSlider", "LpSparkline", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeSwitcher", "LpTilt", "LpToaster", "LpTooltip", "LpTopologyCanvas", "LpUptimeBar", "LpWaypointEdge"];
@@ -70,8 +70,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
70
70
  onDismiss?: (() => any) | undefined;
71
71
  }>, {
72
72
  width: "contained" | "full";
73
- variant: "default" | "danger";
74
73
  open: boolean;
74
+ variant: "default" | "danger";
75
75
  actions: ActionBarAction[];
76
76
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
77
77
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -58,9 +58,9 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
58
58
  debounce: number;
59
59
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
60
60
  map?: (props: {
61
- point: any;
62
- setPoint: any;
63
- tiles: any;
61
+ point: LatLon | undefined;
62
+ setPoint: (next: LatLon) => Promise<void>;
63
+ tiles: TileSource;
64
64
  }) => any;
65
65
  }>;
66
66
  type __VLS_WithSlots<T, S> = T & {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-FZXfljWV.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-D4t8WFD-.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -101,7 +101,10 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
101
101
  } & {
102
102
  'sidebar-footer'?: (props: {}) => any;
103
103
  } & {
104
- 'sidebar-item'?: (props: any) => any;
104
+ 'sidebar-item'?: (props: {
105
+ item: SidebarItem;
106
+ active: boolean;
107
+ }) => any;
105
108
  } & {
106
109
  'header-title'?: (props: {}) => any;
107
110
  } & {
@@ -40,9 +40,9 @@ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {
40
40
  size: "sm" | "md" | "lg";
41
41
  filter: boolean;
42
42
  placeholder: string;
43
+ loading: boolean;
43
44
  clearable: boolean;
44
45
  emptyText: string;
45
- loading: boolean;
46
46
  loadingText: string;
47
47
  minChars: number;
48
48
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,12 +1,12 @@
1
1
  declare const _default: typeof __VLS_export;
2
2
  export default _default;
3
3
  declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
4
- tone?: "danger" | "action" | "outline" | "success" | "warning" | "neutral" | "brand" | undefined;
4
+ tone?: "action" | "outline" | "danger" | "success" | "warning" | "neutral" | "brand" | undefined;
5
5
  /** `sm` is the one that does not disturb a text-sm line it sits on. */
6
6
  size?: "sm" | "md" | "lg" | undefined;
7
7
  dot?: boolean;
8
8
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
9
- tone?: "danger" | "action" | "outline" | "success" | "warning" | "neutral" | "brand" | undefined;
9
+ tone?: "action" | "outline" | "danger" | "success" | "warning" | "neutral" | "brand" | undefined;
10
10
  /** `sm` is the one that does not disturb a text-sm line it sits on. */
11
11
  size?: "sm" | "md" | "lg" | undefined;
12
12
  dot?: boolean;
@@ -49,8 +49,8 @@ declare const __VLS_export: import('vue').DefineComponent<{
49
49
  "onUpdate:locked"?: ((value: boolean) => any) | undefined;
50
50
  }>, {
51
51
  lang: CodeLang;
52
- lineNumbers: boolean;
53
52
  wrap: boolean;
53
+ lineNumbers: boolean;
54
54
  locked: boolean;
55
55
  lockToggle: boolean;
56
56
  copyable: boolean;
@@ -82,8 +82,13 @@ type __VLS_Props = {
82
82
  copyToast?: string | false;
83
83
  };
84
84
  declare var __VLS_56: {
85
- color: any;
86
- hsv: any;
85
+ color: string;
86
+ hsv: {
87
+ h: number;
88
+ s: number;
89
+ v: number;
90
+ a: number;
91
+ };
87
92
  };
88
93
  type __VLS_Slots = {} & {
89
94
  default?: (props: typeof __VLS_56) => any;
@@ -98,10 +103,10 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
98
103
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
99
104
  }>, {
100
105
  size: "sm" | "md" | "lg";
101
- modelValue: string;
102
106
  format: ColorFormat;
103
- side: "top" | "right" | "bottom" | "left";
104
107
  align: "start" | "center" | "end";
108
+ modelValue: string;
109
+ side: "top" | "right" | "bottom" | "left";
105
110
  alpha: boolean;
106
111
  swatches: readonly string[];
107
112
  recent: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpConfirmDialog-CQBVaLpo.js";
1
+ import { _ as _sfc_main } from "../chunks/LpConfirmDialog-CxbizvSB.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -71,16 +71,16 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
71
71
  cause: "type" | "size";
72
72
  }[]) => any) | undefined;
73
73
  }>, {
74
- icon: string;
75
- hint: string;
76
74
  title: string;
77
75
  animate: boolean;
76
+ icon: string;
77
+ accept: string;
78
78
  multiple: boolean;
79
+ hint: string;
79
80
  tone: "sunken" | "flush" | "soft";
80
- accept: string;
81
81
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
82
82
  default?: (props: {
83
- over: any;
83
+ over: boolean;
84
84
  }) => any;
85
85
  }>;
86
86
  type __VLS_WithSlots<T, S> = T & {
@@ -53,11 +53,11 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
53
53
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
54
54
  expand: (node: FileNode) => any;
55
55
  select: (node: FileNode) => any;
56
- open: (node: FileNode) => any;
57
56
  summary: (summary: FileTreeSummary) => any;
57
+ open: (node: FileNode) => any;
58
+ collapse: (node: FileNode) => any;
58
59
  "update:selected": (id: string) => any;
59
60
  "update:expanded": (ids: string[]) => any;
60
- collapse: (node: FileNode) => any;
61
61
  "update:checked": (ids: string[]) => any;
62
62
  }, string, import('vue').PublicProps, Readonly<{
63
63
  nodes: FileNode[];
@@ -92,11 +92,11 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
92
92
  }> & Readonly<{
93
93
  onExpand?: ((node: FileNode) => any) | undefined;
94
94
  onSelect?: ((node: FileNode) => any) | undefined;
95
- onOpen?: ((node: FileNode) => any) | undefined;
96
95
  onSummary?: ((summary: FileTreeSummary) => any) | undefined;
96
+ onOpen?: ((node: FileNode) => any) | undefined;
97
+ onCollapse?: ((node: FileNode) => any) | undefined;
97
98
  "onUpdate:selected"?: ((id: string) => any) | undefined;
98
99
  "onUpdate:expanded"?: ((ids: string[]) => any) | undefined;
99
- onCollapse?: ((node: FileNode) => any) | undefined;
100
100
  "onUpdate:checked"?: ((ids: string[]) => any) | undefined;
101
101
  }>, {
102
102
  sort: boolean;
@@ -12,7 +12,7 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
12
12
  required?: boolean;
13
13
  }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
14
14
  default?: (props: {
15
- id: any;
15
+ id: string;
16
16
  }) => any;
17
17
  } & {
18
18
  hint?: (props: {}) => any;