@leavepulse/ui 0.78.1 → 0.78.3

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 (147) hide show
  1. package/dist/chunks/{DropzoneLinkField-CLLhd3WB.js → DropzoneLinkField-CyE7TJ5f.js} +1 -1
  2. package/dist/chunks/LpAddressInput-ft8fQOGx.js +401 -0
  3. package/dist/chunks/{LpAppShell-BKbYCHkx.js → LpAppShell-DRHoQtr-.js} +34 -17
  4. package/dist/chunks/LpAutocomplete-CrZbd0uv.js +310 -0
  5. package/dist/chunks/LpCheckbox-CCWCwD0y.js +129 -0
  6. package/dist/chunks/{LpCodeDisplay-D3BUAhV1.js → LpCodeDisplay-D59uPwRb.js} +1 -1
  7. package/dist/chunks/LpColorPicker-BONURBFN.js +574 -0
  8. package/dist/chunks/LpDatePicker-C2AOtxgF.js +171 -0
  9. package/dist/chunks/{LpDateRangePicker-CNQXdTVv.js → LpDateRangePicker-CiXdIAyh.js} +43 -35
  10. package/dist/chunks/{LpFileTree-C-rJKzEQ.js → LpFileTree-CpNurwZp.js} +2 -2
  11. package/dist/chunks/{LpFileTreeNode-BgYn4U1J.js → LpFileTreeNode-DdF8Cq-s.js} +1 -1
  12. package/dist/chunks/{LpInput-D0O6dpuA.js → LpInput-CbI7z5fQ.js} +3 -4
  13. package/dist/chunks/{LpLogInspector-BdQlX6S-.js → LpLogInspector-CcSJSGan.js} +1 -1
  14. package/dist/chunks/{LpLogViewer-umCZBapN.js → LpLogViewer-CWu49Dko.js} +2 -2
  15. package/dist/chunks/{LpModalNav-gOi1Giz1.js → LpModalNav-DI3BW5ff.js} +1 -1
  16. package/dist/chunks/LpNumberField-C8LfUz_R.js +154 -0
  17. package/dist/chunks/LpOtpInput-B1X9l9no.js +140 -0
  18. package/dist/chunks/{LpPaletteTheme-BIXpZLGe.js → LpPaletteTheme-B-xuZiKK.js} +2 -2
  19. package/dist/chunks/{LpPasswordInput-D4HPhqfV.js → LpPasswordInput-Duc_3wPv.js} +1 -1
  20. package/dist/chunks/{LpPhoneInput-BSL7NX4z.js → LpPhoneInput-CctcRK9K.js} +124 -118
  21. package/dist/chunks/LpRadioGroup-DTM0nd9G.js +103 -0
  22. package/dist/chunks/LpRangeSlider-DJsEZXad.js +97 -0
  23. package/dist/chunks/LpRepeater-Czib3rmv.js +193 -0
  24. package/dist/chunks/{LpSecretField-B2roc4Iz.js → LpSecretField-BtlCk3IH.js} +1 -1
  25. package/dist/chunks/LpSegmented-sskrJKJJ.js +128 -0
  26. package/dist/chunks/LpSelect-JFZehOkd.js +515 -0
  27. package/dist/chunks/{LpSidebar-DDNJzb69.js → LpSidebar-CvRvVBTt.js} +1 -1
  28. package/dist/chunks/LpSlider-C4ilCtZX.js +76 -0
  29. package/dist/chunks/LpSwitch-DyAYTchz.js +122 -0
  30. package/dist/chunks/{LpTableFilter-B_XMOeAh.js → LpTableFilter-CJg5eIcV.js} +2 -2
  31. package/dist/chunks/{LpTagsInput-Dt0mteSj.js → LpTagsInput-CkNxpNYa.js} +4 -3
  32. package/dist/chunks/{LpTextarea-Co0b9PVx.js → LpTextarea-CFK_5QB8.js} +3 -2
  33. package/dist/chunks/{LpThemeStudio-ChU0_Ga8.js → LpThemeStudio-R-wohbCY.js} +2 -2
  34. package/dist/chunks/{LpThemeSwitcher-DmCZ21P_.js → LpThemeSwitcher-Bzy15MCP.js} +1 -1
  35. package/dist/chunks/LpTimeField-B5n0m8m0.js +115 -0
  36. package/dist/chunks/{LpTopologyCanvas-jqz1KCq2.js → LpTopologyCanvas-BNgw9RyZ.js} +2 -2
  37. package/dist/chunks/{LpWorkspaceSwitcher-BeNHCLd5.js → LpWorkspaceSwitcher-ugv-fyig.js} +1 -1
  38. package/dist/components/DropzoneLinkField.vue.js +1 -1
  39. package/dist/components/LpAddressInput.vue.d.ts +4 -0
  40. package/dist/components/LpAddressInput.vue.js +1 -1
  41. package/dist/components/LpAlert.vue.d.ts +3 -3
  42. package/dist/components/LpAppShell.vue.d.ts +19 -1
  43. package/dist/components/LpAppShell.vue.js +1 -1
  44. package/dist/components/LpAutocomplete.vue.d.ts +4 -0
  45. package/dist/components/LpAutocomplete.vue.js +1 -1
  46. package/dist/components/LpBadge.vue.d.ts +2 -2
  47. package/dist/components/LpChart.vue.d.ts +1 -1
  48. package/dist/components/LpCheckbox.vue.d.ts +4 -0
  49. package/dist/components/LpCheckbox.vue.js +1 -1
  50. package/dist/components/LpCodeDisplay.vue.js +1 -1
  51. package/dist/components/LpCollapse.vue.d.ts +1 -1
  52. package/dist/components/LpColorPicker.vue.d.ts +5 -3
  53. package/dist/components/LpColorPicker.vue.js +1 -1
  54. package/dist/components/LpDatePicker.vue.js +1 -1
  55. package/dist/components/LpDateRangePicker.vue.js +1 -1
  56. package/dist/components/LpDropzone.vue.js +1 -1
  57. package/dist/components/LpFileTree.vue.js +1 -1
  58. package/dist/components/LpFileTreeNode.vue.js +1 -1
  59. package/dist/components/LpImageEditor.vue.d.ts +1 -1
  60. package/dist/components/LpInput.vue.js +1 -1
  61. package/dist/components/LpLogInspector.vue.js +1 -1
  62. package/dist/components/LpLogViewer.vue.js +1 -1
  63. package/dist/components/LpModalNav.vue.js +1 -1
  64. package/dist/components/LpNumberField.vue.d.ts +4 -0
  65. package/dist/components/LpNumberField.vue.js +1 -1
  66. package/dist/components/LpOtpInput.vue.d.ts +4 -0
  67. package/dist/components/LpOtpInput.vue.js +1 -1
  68. package/dist/components/LpPaletteTheme.vue.js +1 -1
  69. package/dist/components/LpPasswordInput.vue.js +1 -1
  70. package/dist/components/LpPhoneInput.vue.d.ts +4 -0
  71. package/dist/components/LpPhoneInput.vue.js +1 -1
  72. package/dist/components/LpRadioGroup.vue.d.ts +4 -0
  73. package/dist/components/LpRadioGroup.vue.js +1 -1
  74. package/dist/components/LpRangeSlider.vue.d.ts +4 -0
  75. package/dist/components/LpRangeSlider.vue.js +1 -1
  76. package/dist/components/LpRepeater.vue.d.ts +2 -0
  77. package/dist/components/LpRepeater.vue.js +1 -1
  78. package/dist/components/LpScrollArea.vue.d.ts +1 -1
  79. package/dist/components/LpSecretField.vue.js +1 -1
  80. package/dist/components/LpSegmented.vue.d.ts +4 -0
  81. package/dist/components/LpSegmented.vue.js +1 -1
  82. package/dist/components/LpSelect.vue.d.ts +2 -0
  83. package/dist/components/LpSelect.vue.js +1 -1
  84. package/dist/components/LpShinyText.vue.d.ts +1 -1
  85. package/dist/components/LpSidebar.vue.d.ts +1 -1
  86. package/dist/components/LpSidebar.vue.js +1 -1
  87. package/dist/components/LpSlider.vue.d.ts +4 -0
  88. package/dist/components/LpSlider.vue.js +1 -1
  89. package/dist/components/LpSwitch.vue.d.ts +4 -0
  90. package/dist/components/LpSwitch.vue.js +1 -1
  91. package/dist/components/LpTable.vue.js +2 -2
  92. package/dist/components/LpTableFilter.vue.js +1 -1
  93. package/dist/components/LpTabs.vue.d.ts +1 -1
  94. package/dist/components/LpTagsInput.vue.js +1 -1
  95. package/dist/components/LpTextarea.vue.js +1 -1
  96. package/dist/components/LpThemeStudio.vue.js +1 -1
  97. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  98. package/dist/components/LpTimeField.vue.d.ts +4 -0
  99. package/dist/components/LpTimeField.vue.js +1 -1
  100. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  101. package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
  102. package/dist/components/calendar.d.ts +2 -0
  103. package/dist/composables/useField.d.ts +50 -0
  104. package/dist/composables/useField.js +31 -2
  105. package/dist/composables/useMergedClass.d.ts +6 -2
  106. package/dist/composables/useMergedClass.js +6 -6
  107. package/dist/index.js +34 -34
  108. package/package.json +1 -1
  109. package/src/components/LpAddressInput.vue +8 -4
  110. package/src/components/LpAppShell.vue +56 -18
  111. package/src/components/LpAutocomplete.vue +11 -5
  112. package/src/components/LpCheckbox.vue +8 -6
  113. package/src/components/LpColorPicker.vue +7 -4
  114. package/src/components/LpDatePicker.vue +8 -4
  115. package/src/components/LpDateRangePicker.vue +8 -4
  116. package/src/components/LpInput.vue +3 -4
  117. package/src/components/LpNumberField.vue +11 -6
  118. package/src/components/LpOtpInput.vue +8 -6
  119. package/src/components/LpPhoneInput.vue +11 -6
  120. package/src/components/LpRadioGroup.vue +9 -5
  121. package/src/components/LpRangeSlider.vue +8 -4
  122. package/src/components/LpRepeater.vue +16 -4
  123. package/src/components/LpSegmented.vue +8 -4
  124. package/src/components/LpSelect.vue +8 -7
  125. package/src/components/LpSlider.vue +8 -4
  126. package/src/components/LpSwitch.vue +8 -5
  127. package/src/components/LpTagsInput.vue +4 -3
  128. package/src/components/LpTextarea.vue +3 -2
  129. package/src/components/LpTimeField.vue +8 -6
  130. package/src/components/calendar.ts +2 -0
  131. package/src/composables/useField.ts +52 -0
  132. package/src/composables/useMergedClass.ts +11 -5
  133. package/dist/chunks/LpAddressInput-BSS49jpm.js +0 -393
  134. package/dist/chunks/LpAutocomplete-DkY6CSyD.js +0 -302
  135. package/dist/chunks/LpCheckbox-D6RuDW4X.js +0 -124
  136. package/dist/chunks/LpColorPicker-COHzV68R.js +0 -567
  137. package/dist/chunks/LpDatePicker-DwSDY0mt.js +0 -163
  138. package/dist/chunks/LpNumberField-Csg-1Zh_.js +0 -148
  139. package/dist/chunks/LpOtpInput-BRpLBbOD.js +0 -132
  140. package/dist/chunks/LpRadioGroup-BrazjLY_.js +0 -95
  141. package/dist/chunks/LpRangeSlider-fz61tzc-.js +0 -89
  142. package/dist/chunks/LpRepeater-BkJHSPI1.js +0 -180
  143. package/dist/chunks/LpSegmented-DbEJhbv-.js +0 -123
  144. package/dist/chunks/LpSelect-Y-iuSymW.js +0 -512
  145. package/dist/chunks/LpSlider-A4ixovgS.js +0 -68
  146. package/dist/chunks/LpSwitch-DnC2-0aV.js +0 -115
  147. package/dist/chunks/LpTimeField-DeOcKWJq.js +0 -110
@@ -0,0 +1,122 @@
1
+ import { defineComponent, useSlots, computed, useId, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, resolveDynamicComponent, normalizeClass, createElementBlock, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createVNode, mergeProps } from "vue";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
3
+ import { usePaletteControl } from "../composables/usePaletteCommands.js";
4
+ import { SwitchRoot, SwitchThumb } from "reka-ui";
5
+ import { useOwnField, mergeDescribedBy } from "../composables/useField.js";
6
+ import { useOptimisticToggle } from "../composables/useOptimisticToggle.js";
7
+ import { _ as _sfc_main$2 } from "./LpLoader-Bf1yZwaU.js";
8
+ import { useMergedAttrs } from "../composables/useMergedClass.js";
9
+ const _hoisted_1 = {
10
+ key: 0,
11
+ class: "flex min-w-0 flex-col"
12
+ };
13
+ const _hoisted_2 = {
14
+ key: 1,
15
+ class: "flex min-w-0 flex-col"
16
+ };
17
+ const __default__ = { inheritAttrs: false };
18
+ const _sfc_main = /* @__PURE__ */ defineComponent({
19
+ ...__default__,
20
+ __name: "LpSwitch",
21
+ props: {
22
+ palette: { type: [Boolean, Object], default: void 0 },
23
+ modelValue: { type: Boolean },
24
+ disabled: { type: Boolean },
25
+ error: {},
26
+ label: {},
27
+ description: {},
28
+ labelPosition: { default: "end" },
29
+ action: {}
30
+ },
31
+ emits: ["update:modelValue", "done", "error"],
32
+ setup(__props, { emit: __emit }) {
33
+ const props = __props;
34
+ const emit = __emit;
35
+ const { pending, set } = useOptimisticToggle(() => props.action, emit);
36
+ const slots = useSlots();
37
+ const labelled = computed(() => Boolean(props.label || props.description || slots.default));
38
+ const TRACK = "group/switch inline-flex h-5 w-9 shrink-0 items-center rounded-pill border border-line bg-surface-soft px-0.5 outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-55";
39
+ const THUMB = "h-3.5 w-3.5 rounded-full bg-ink shadow transition-[translate,width,background-color] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-active/switch:w-5 group-data-[state=checked]/switch:translate-x-4 group-data-[state=checked]/switch:bg-ink-inverse group-data-[state=checked]/switch:group-active/switch:translate-x-2.5 motion-reduce:group-active/switch:w-3.5";
40
+ const { class: rootClass, attrs: rest } = useMergedAttrs(() => {
41
+ if (!labelled.value) return TRACK;
42
+ return props.labelPosition === "start" ? "flex w-full cursor-pointer items-center justify-between gap-3 text-sm text-ink" : "inline-flex cursor-pointer items-center gap-2 text-sm text-ink";
43
+ }, () => ownAttrs());
44
+ const { field, wrapper, ownAttrs } = useOwnField(() => ({
45
+ error: props.error,
46
+ id: typeof rest.value.id === "string" ? rest.value.id : void 0,
47
+ disabled: props.disabled
48
+ }));
49
+ const descriptionId = `${useId()}-description`;
50
+ const describedBy = computed(
51
+ () => mergeDescribedBy(rest.value["aria-describedby"], props.description && labelled.value ? descriptionId : void 0, field.value.describedBy)
52
+ );
53
+ function onUpdate(value) {
54
+ void set(value);
55
+ }
56
+ usePaletteControl({ label: () => props.label, disabled: () => field.value.disabled || pending.value, editorProps: () => ({ action: void 0, "onUpdate:modelValue": onUpdate }) });
57
+ return (_ctx, _cache) => {
58
+ return openBlock(), createBlock(_sfc_main$1, normalizeProps(guardReactiveProps(unref(wrapper))), {
59
+ default: withCtx(() => [
60
+ (openBlock(), createBlock(resolveDynamicComponent(labelled.value ? "label" : "span"), {
61
+ class: normalizeClass(labelled.value ? [unref(rootClass), unref(field).disabled && "cursor-not-allowed"] : "contents")
62
+ }, {
63
+ default: withCtx(() => [
64
+ labelled.value && __props.labelPosition === "start" ? (openBlock(), createElementBlock("span", _hoisted_1, [
65
+ renderSlot(_ctx.$slots, "default", {}, () => [
66
+ createTextVNode(toDisplayString(__props.label), 1)
67
+ ]),
68
+ __props.description ? (openBlock(), createElementBlock("span", {
69
+ key: 0,
70
+ id: descriptionId,
71
+ class: "text-xs text-muted"
72
+ }, toDisplayString(__props.description), 1)) : createCommentVNode("", true)
73
+ ])) : createCommentVNode("", true),
74
+ createVNode(unref(SwitchRoot), mergeProps(unref(rest), {
75
+ id: unref(field).id,
76
+ "model-value": __props.modelValue,
77
+ disabled: unref(field).disabled,
78
+ required: unref(field).required,
79
+ "aria-describedby": describedBy.value,
80
+ "aria-busy": unref(pending) || void 0,
81
+ class: labelled.value ? TRACK : unref(rootClass),
82
+ "onUpdate:modelValue": onUpdate
83
+ }), {
84
+ default: withCtx(() => [
85
+ createVNode(unref(SwitchThumb), {
86
+ class: normalizeClass([THUMB, "grid place-items-center"])
87
+ }, {
88
+ default: withCtx(() => [
89
+ createVNode(_sfc_main$2, {
90
+ active: unref(pending),
91
+ size: "inline",
92
+ "aria-hidden": "true",
93
+ class: "text-[10px] text-ink-inverse group-data-[state=checked]/switch:text-ink"
94
+ }, null, 8, ["active"])
95
+ ]),
96
+ _: 1
97
+ }, 8, ["class"])
98
+ ]),
99
+ _: 1
100
+ }, 16, ["id", "model-value", "disabled", "required", "aria-describedby", "aria-busy", "class"]),
101
+ labelled.value && __props.labelPosition === "end" ? (openBlock(), createElementBlock("span", _hoisted_2, [
102
+ renderSlot(_ctx.$slots, "default", {}, () => [
103
+ createTextVNode(toDisplayString(__props.label), 1)
104
+ ]),
105
+ __props.description ? (openBlock(), createElementBlock("span", {
106
+ key: 0,
107
+ id: descriptionId,
108
+ class: "text-xs text-muted"
109
+ }, toDisplayString(__props.description), 1)) : createCommentVNode("", true)
110
+ ])) : createCommentVNode("", true)
111
+ ]),
112
+ _: 3
113
+ }, 8, ["class"]))
114
+ ]),
115
+ _: 3
116
+ }, 16);
117
+ };
118
+ }
119
+ });
120
+ export {
121
+ _sfc_main as _
122
+ };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createBlock, createCommentVNode, createElementVNode, Fragment, unref, normalizeClass, toDisplayString, createVNode, withCtx, renderList } from "vue";
2
- import { _ as _sfc_main$3 } from "./LpCheckbox-D6RuDW4X.js";
3
- import { _ as _sfc_main$1 } from "./LpInput-D0O6dpuA.js";
2
+ import { _ as _sfc_main$3 } from "./LpCheckbox-CCWCwD0y.js";
3
+ import { _ as _sfc_main$1 } from "./LpInput-CbI7z5fQ.js";
4
4
  import { _ as _sfc_main$2 } from "./LpShift-DAgS_d2x.js";
5
5
  import { usePaintSelect } from "../composables/usePaintSelect.js";
6
6
  import { matchesQuery, onlyValues, unhideValues, hideAllValues, invertHidden } from "../components/tableFilter.js";
@@ -2,7 +2,7 @@ import { defineComponent, useAttrs, computed, ref, useId, watch, openBlock, crea
2
2
  import { isNode, isInputElement } from "../composables/realm.js";
3
3
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
4
4
  import { TagsInputRoot, TagsInputItem, TagsInputItemText, TagsInputItemDelete, TagsInputInput, PopoverRoot, PopoverAnchor, PopoverPortal, PopoverContent } from "reka-ui";
5
- import { useField, useFieldControl, mergeDescribedBy, fieldWrapperBinds } from "../composables/useField.js";
5
+ import { useField, wrapsItself, useFieldControl, mergeDescribedBy, fieldWrapperBinds } from "../composables/useField.js";
6
6
  import { prefersReducedMotion } from "../composables/easing.js";
7
7
  import { useFieldNotice } from "../composables/useFieldNotice.js";
8
8
  import { useShift } from "../composables/useShift.js";
@@ -82,9 +82,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
82
82
  () => props.labels
83
83
  );
84
84
  const attrs = useAttrs();
85
- const hasField = computed(() => !!props.label || !!props.hint || !!props.error);
85
+ const outerFieldOf = useField();
86
+ const hasField = computed(() => wrapsItself(props, outerFieldOf));
86
87
  const notice = useFieldNotice();
87
- const outerField = useField();
88
+ const outerField = outerFieldOf;
88
89
  const ownField = ref(null);
89
90
  function bindField(c) {
90
91
  ownField.value = hasField.value && c ? c : null;
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, useAttrs, ref, watch, nextTick, onMounted, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createElementVNode, mergeProps } from "vue";
2
2
  import { nodeWindow } from "../composables/realm.js";
3
3
  import { usePaletteControl } from "../composables/usePaletteCommands.js";
4
- import { useFieldControl, fieldWrapperBinds, mergeDescribedBy } from "../composables/useField.js";
4
+ import { useField, wrapsItself, useFieldControl, fieldWrapperBinds, mergeDescribedBy } from "../composables/useField.js";
5
5
  import { mergeClass } from "../composables/useMergedClass.js";
6
6
  import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
7
7
  const _hoisted_1 = ["id", "value", "placeholder", "rows", "disabled", "required", "aria-invalid", "aria-describedby"];
@@ -26,7 +26,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
26
26
  emits: ["update:modelValue"],
27
27
  setup(__props, { expose: __expose }) {
28
28
  const props = __props;
29
- const hasField = computed(() => !!props.label || !!props.hint || !!props.error);
29
+ const outerFieldOf = useField();
30
+ const hasField = computed(() => wrapsItself(props, outerFieldOf));
30
31
  const attrs = useAttrs();
31
32
  const textareaAttrs = computed(() => {
32
33
  const { class: _c, style: _s, ...rest } = attrs;
@@ -4,9 +4,9 @@ import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { useThemeStudio, STUDIO_BRANDS, STUDIO_SYSTEM } from "../theme/studio.js";
5
5
  import { _ as _sfc_main$1 } from "./LpButton-DSHioIfD.js";
6
6
  import { _ as _sfc_main$7 } from "./LpCodeBlock-DBqy4RLd.js";
7
- import { _ as _sfc_main$4 } from "./LpColorPicker-COHzV68R.js";
7
+ import { _ as _sfc_main$4 } from "./LpColorPicker-BONURBFN.js";
8
8
  import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
9
- import { _ as _sfc_main$5 } from "./LpSegmented-DbEJhbv-.js";
9
+ import { _ as _sfc_main$5 } from "./LpSegmented-sskrJKJJ.js";
10
10
  import { _ as _sfc_main$6 } from "./LpDisclosure-DG7JCo-d.js";
11
11
  import { _ as _sfc_main$8 } from "./LpThemeProvider-XK6ZeWAE.js";
12
12
  import { _ as _sfc_main$3 } from "./LpThemeStudioSection-B7bt8Iyg.js";
@@ -11,7 +11,7 @@ import { _ as _sfc_main$1 } from "./LpContextMenu-Bx_IhQDS.js";
11
11
  import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
12
12
  import { _ as _sfc_main$4 } from "./LpRollingText-B54Pje7P.js";
13
13
  import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
14
- import { _ as _sfc_main$5 } from "./LpThemeStudio-ChU0_Ga8.js";
14
+ import { _ as _sfc_main$5 } from "./LpThemeStudio-R-wohbCY.js";
15
15
  const _hoisted_1 = ["aria-label", "title"];
16
16
  const _hoisted_2 = {
17
17
  key: 1,
@@ -0,0 +1,115 @@
1
+ import { defineComponent, computed, openBlock, createBlock, normalizeProps, guardReactiveProps, unref, withCtx, createVNode, mergeProps, createCommentVNode, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString } from "vue";
2
+ import { _ as _sfc_main$1 } from "./FieldWrapper-DnuMTrqW.js";
3
+ import { CONTROL_SIZE } from "../components/controlSize.js";
4
+ import { usePaletteControl } from "../composables/usePaletteCommands.js";
5
+ import { Time } from "@internationalized/date";
6
+ import { TimeFieldRoot, TimeFieldInput } from "reka-ui";
7
+ import { useOwnField, mergeDescribedBy, focusLeft } from "../composables/useField.js";
8
+ import { useMergedAttrs } from "../composables/useMergedClass.js";
9
+ import { _ as _sfc_main$2 } from "./LpIcon-C6JpQ5td.js";
10
+ const __default__ = { inheritAttrs: false };
11
+ const _sfc_main = /* @__PURE__ */ defineComponent({
12
+ ...__default__,
13
+ __name: "LpTimeField",
14
+ props: {
15
+ palette: { type: [Boolean, Object], default: void 0 },
16
+ modelValue: {},
17
+ disabled: { type: Boolean },
18
+ invalid: { type: Boolean },
19
+ error: {},
20
+ size: { default: "md" },
21
+ hourCycle: { default: 24 },
22
+ locale: {},
23
+ icon: { type: Boolean, default: true }
24
+ },
25
+ emits: ["update:modelValue", "blur"],
26
+ setup(__props, { emit: __emit }) {
27
+ const props = __props;
28
+ const emit = __emit;
29
+ function onFocusOut(event) {
30
+ if (focusLeft(event)) emit("blur", event);
31
+ }
32
+ const value = computed(() => {
33
+ const match = /^(\d{2}):(\d{2})/.exec(props.modelValue || "");
34
+ return match ? new Time(Number(match[1]), Number(match[2])) : void 0;
35
+ });
36
+ function onUpdate(next) {
37
+ if (!next || typeof next !== "object" || !("hour" in next) || !("minute" in next)) {
38
+ emit("update:modelValue", void 0);
39
+ return;
40
+ }
41
+ const pad = (n) => String(n).padStart(2, "0");
42
+ emit("update:modelValue", `${pad(next.hour)}:${pad(next.minute)}`);
43
+ }
44
+ const { field, wrapper, ownAttrs } = useOwnField(() => ({
45
+ error: props.error,
46
+ invalid: props.invalid,
47
+ disabled: props.disabled
48
+ }));
49
+ const shellSize = CONTROL_SIZE;
50
+ const { class: rootClass, attrs: rest } = useMergedAttrs(() => [
51
+ "flex w-full items-center gap-0.5 rounded-control border bg-surface-soft px-3 text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2 focus-within:ring-ring data-[disabled]:cursor-not-allowed data-[disabled]:opacity-55",
52
+ shellSize[props.size],
53
+ field.value.invalid ? "border-danger focus-within:ring-danger-soft" : "border-line focus-within:border-brand"
54
+ ].join(" "), () => ownAttrs());
55
+ usePaletteControl({ disabled: () => field.value.disabled, invalid: () => field.value.invalid });
56
+ return (_ctx, _cache) => {
57
+ return openBlock(), createBlock(_sfc_main$1, normalizeProps(guardReactiveProps(unref(wrapper))), {
58
+ default: withCtx(() => [
59
+ createVNode(unref(TimeFieldRoot), mergeProps({
60
+ "model-value": value.value,
61
+ "hour-cycle": __props.hourCycle,
62
+ locale: __props.locale,
63
+ granularity: "minute",
64
+ disabled: unref(field).disabled,
65
+ required: unref(field).required,
66
+ "aria-invalid": unref(field).invalid || void 0,
67
+ "aria-labelledby": unref(field).labelId,
68
+ class: unref(rootClass)
69
+ }, unref(rest), {
70
+ "aria-describedby": unref(mergeDescribedBy)(unref(rest)["aria-describedby"], unref(field).describedBy),
71
+ "onUpdate:modelValue": onUpdate,
72
+ onFocusout: onFocusOut
73
+ }), {
74
+ default: withCtx(({ segments }) => [
75
+ __props.icon ? (openBlock(), createBlock(_sfc_main$2, {
76
+ key: 0,
77
+ name: "lucide:clock",
78
+ size: 15,
79
+ class: "mr-1.5 shrink-0 text-muted"
80
+ })) : createCommentVNode("", true),
81
+ (openBlock(true), createElementBlock(Fragment, null, renderList(segments, (item, i) => {
82
+ return openBlock(), createElementBlock(Fragment, { key: i }, [
83
+ item.part === "literal" ? (openBlock(), createBlock(unref(TimeFieldInput), {
84
+ key: 0,
85
+ part: item.part,
86
+ class: "text-muted"
87
+ }, {
88
+ default: withCtx(() => [
89
+ createTextVNode(toDisplayString(item.value), 1)
90
+ ]),
91
+ _: 2
92
+ }, 1032, ["part"])) : (openBlock(), createBlock(unref(TimeFieldInput), {
93
+ key: 1,
94
+ part: item.part,
95
+ class: "rounded-sm px-0.5 tabular-nums outline-none focus:bg-brand-soft focus:text-brand data-[placeholder]:text-muted"
96
+ }, {
97
+ default: withCtx(() => [
98
+ createTextVNode(toDisplayString(item.value), 1)
99
+ ]),
100
+ _: 2
101
+ }, 1032, ["part"]))
102
+ ], 64);
103
+ }), 128))
104
+ ]),
105
+ _: 1
106
+ }, 16, ["model-value", "hour-cycle", "locale", "disabled", "required", "aria-invalid", "aria-labelledby", "class", "aria-describedby"])
107
+ ]),
108
+ _: 1
109
+ }, 16);
110
+ };
111
+ }
112
+ });
113
+ export {
114
+ _sfc_main as _
115
+ };
@@ -11,10 +11,10 @@ import { backgroundOf, resolveCssColor, svgToPng } from "../components/exportDat
11
11
  import { _ as _sfc_main$6 } from "./LpButton-DSHioIfD.js";
12
12
  import { _ as _sfc_main$7 } from "./LpIcon-C6JpQ5td.js";
13
13
  import { _ as _sfc_main$3 } from "./LpInfraNode-Bb5nbuFY.js";
14
- import { _ as _sfc_main$5 } from "./LpInput-D0O6dpuA.js";
14
+ import { _ as _sfc_main$5 } from "./LpInput-CbI7z5fQ.js";
15
15
  import { _ as _sfc_main$1 } from "./LpLaneNode-Bqcdm8Rf.js";
16
16
  import { _ as _sfc_main$2 } from "./LpServiceNode-Cln2ntdw.js";
17
- import { _ as _sfc_main$8 } from "./LpSlider-A4ixovgS.js";
17
+ import { _ as _sfc_main$8 } from "./LpSlider-C4ilCtZX.js";
18
18
  import { _ as _sfc_main$4 } from "./LpWaypointEdge-D8yHlQiw.js";
19
19
  import { diffTopology, detailAtZoom, collapseChildren, clusterGraph, findNodes, findPath, neighborhood, groupBoxes, nodeName, frameSize, edgeLabelText, nearestInDirection, absolutePositions, layeredLayout, topologyToSvg } from "../components/topologyGraph.js";
20
20
  const _hoisted_1 = {
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, openBlock, createElementBlock, Fragment
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$2 } from "./LpButton-DSHioIfD.js";
4
4
  import { _ as _sfc_main$1 } from "./LpDropdownMenu-CLzxIOgM.js";
5
- import { _ as _sfc_main$4 } from "./LpInput-D0O6dpuA.js";
5
+ import { _ as _sfc_main$4 } from "./LpInput-CbI7z5fQ.js";
6
6
  import { _ as _sfc_main$3 } from "./LpModal-DDvrSAnf.js";
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
8
  __name: "LpWorkspaceSwitcher",
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/DropzoneLinkField-CLLhd3WB.js";
1
+ import { _ as _sfc_main } from "../chunks/DropzoneLinkField-CyE7TJ5f.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -21,6 +21,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
21
21
  disabled?: boolean;
22
22
  /** Mark every part of the address invalid (also set by a surrounding LpFormField's error). */
23
23
  invalid?: boolean;
24
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
25
+ error?: string;
24
26
  size?: "sm" | "md" | "lg";
25
27
  /** Hide the map button when picking a point makes no sense. */
26
28
  hideMap?: boolean;
@@ -48,6 +50,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
48
50
  disabled?: boolean;
49
51
  /** Mark every part of the address invalid (also set by a surrounding LpFormField's error). */
50
52
  invalid?: boolean;
53
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
54
+ error?: string;
51
55
  size?: "sm" | "md" | "lg";
52
56
  /** Hide the map button when picking a point makes no sense. */
53
57
  hideMap?: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-BSS49jpm.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-ft8fQOGx.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,7 +1,7 @@
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
- variant?: "info" | "success" | "warning" | "danger" | undefined;
4
+ variant?: "info" | "danger" | "success" | "warning" | undefined;
5
5
  title?: string;
6
6
  icon?: string;
7
7
  /**
@@ -19,7 +19,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
19
19
  */
20
20
  busy?: boolean;
21
21
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
22
- variant?: "info" | "success" | "warning" | "danger" | undefined;
22
+ variant?: "info" | "danger" | "success" | "warning" | undefined;
23
23
  title?: string;
24
24
  icon?: string;
25
25
  /**
@@ -37,7 +37,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
37
37
  */
38
38
  busy?: boolean;
39
39
  }> & Readonly<{}>, {
40
- variant: "info" | "success" | "warning" | "danger";
40
+ variant: "info" | "danger" | "success" | "warning";
41
41
  busy: boolean;
42
42
  live: "assertive" | "polite" | false;
43
43
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
@@ -54,6 +54,15 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
54
54
  * `min-h-[calc(100dvh-4rem)]` or `fullBleed`. `"region"`: the shell is
55
55
  * the viewport and the page scrolls inside main. Read once: changing it
56
56
  * remounts the page.
57
+ *
58
+ * A page's own sticky parts keep clear of the shell's with two variables
59
+ * set inside it: `--lp-shell-top`, how much of the window's top the shell
60
+ * covers (the header, 0 while `headerCollapse` has it away, plus the
61
+ * sub-page row), and `--lp-shell-bottom`, how much of its foot (the bottom
62
+ * bar). Both change as those do, and are 0px in `"region"` and on a
63
+ * `fullBleed` page, where nothing of the shell's lies over the page:
64
+ * `position: sticky; top: var(--lp-shell-top)`. Keep the page's sticky
65
+ * layers under `--z-sticky`, the shell's.
57
66
  */
58
67
  scroll?: "document" | "region";
59
68
  /**
@@ -210,6 +219,15 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
210
219
  * `min-h-[calc(100dvh-4rem)]` or `fullBleed`. `"region"`: the shell is
211
220
  * the viewport and the page scrolls inside main. Read once: changing it
212
221
  * remounts the page.
222
+ *
223
+ * A page's own sticky parts keep clear of the shell's with two variables
224
+ * set inside it: `--lp-shell-top`, how much of the window's top the shell
225
+ * covers (the header, 0 while `headerCollapse` has it away, plus the
226
+ * sub-page row), and `--lp-shell-bottom`, how much of its foot (the bottom
227
+ * bar). Both change as those do, and are 0px in `"region"` and on a
228
+ * `fullBleed` page, where nothing of the shell's lies over the page:
229
+ * `position: sticky; top: var(--lp-shell-top)`. Keep the page's sticky
230
+ * layers under `--z-sticky`, the shell's.
213
231
  */
214
232
  scroll?: "document" | "region";
215
233
  /**
@@ -313,8 +331,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
313
331
  "onNav-mode"?: ((mode: NavMode) => any) | undefined;
314
332
  }>, {
315
333
  scroll: "document" | "region";
316
- contentClass: string;
317
334
  compact: boolean;
335
+ contentClass: string;
318
336
  mobileBreakpoint: "sm" | "md" | "lg" | "xl";
319
337
  divider: boolean;
320
338
  pageScrollbar: boolean;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-BKbYCHkx.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-DRHoQtr-.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -24,6 +24,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
24
24
  size?: "sm" | "md" | "lg";
25
25
  icon?: string;
26
26
  invalid?: boolean;
27
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
28
+ error?: string;
27
29
  emptyText?: string;
28
30
  loading?: boolean;
29
31
  loadingText?: string;
@@ -65,6 +67,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
65
67
  size?: "sm" | "md" | "lg";
66
68
  icon?: string;
67
69
  invalid?: boolean;
70
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
71
+ error?: string;
68
72
  emptyText?: string;
69
73
  loading?: boolean;
70
74
  loadingText?: string;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAutocomplete-DkY6CSyD.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAutocomplete-CrZbd0uv.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,7 +1,7 @@
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?: "info" | "error" | "action" | "muted" | "outline" | "success" | "warning" | "accent" | "neutral" | "brand" | "danger" | "ok" | undefined;
4
+ tone?: "info" | "error" | "action" | "muted" | "outline" | "danger" | "accent" | "success" | "warning" | "neutral" | "brand" | "ok" | undefined;
5
5
  /** `sm` is the one that does not disturb a text-sm line it sits on. */
6
6
  size?: "md" | "sm" | "lg" | undefined;
7
7
  dot?: boolean;
@@ -12,7 +12,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
12
12
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
13
13
  remove: () => any;
14
14
  }, string, import("vue").PublicProps, Readonly<{
15
- tone?: "info" | "error" | "action" | "muted" | "outline" | "success" | "warning" | "accent" | "neutral" | "brand" | "danger" | "ok" | undefined;
15
+ tone?: "info" | "error" | "action" | "muted" | "outline" | "danger" | "accent" | "success" | "warning" | "neutral" | "brand" | "ok" | undefined;
16
16
  /** `sm` is the one that does not disturb a text-sm line it sits on. */
17
17
  size?: "md" | "sm" | "lg" | undefined;
18
18
  dot?: boolean;
@@ -261,8 +261,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
261
261
  animate: boolean;
262
262
  height: number;
263
263
  smooth: number;
264
- range: ChartRange | null;
265
264
  markers: ChartMarker[];
265
+ range: ChartRange | null;
266
266
  showGrid: boolean;
267
267
  showXAxis: boolean;
268
268
  showYAxis: boolean;
@@ -8,6 +8,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
8
8
  /** Mixed state (e.g. a "select all" with a partial selection). Shows a dash. */
9
9
  indeterminate?: boolean;
10
10
  disabled?: boolean;
11
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
12
+ error?: string;
11
13
  label?: string;
12
14
  /** Secondary line under the label, as on LpSwitch. */
13
15
  description?: string;
@@ -33,6 +35,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
33
35
  /** Mixed state (e.g. a "select all" with a partial selection). Shows a dash. */
34
36
  indeterminate?: boolean;
35
37
  disabled?: boolean;
38
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
39
+ error?: string;
36
40
  label?: string;
37
41
  /** Secondary line under the label, as on LpSwitch. */
38
42
  description?: string;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCheckbox-D6RuDW4X.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCheckbox-CCWCwD0y.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCodeDisplay-D3BUAhV1.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCodeDisplay-D59uPwRb.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -44,8 +44,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
44
44
  onOpened?: (() => any) | undefined;
45
45
  onClosed?: (() => any) | undefined;
46
46
  }>, {
47
- fade: boolean;
48
47
  axis: "height" | "width" | "both";
48
+ fade: boolean;
49
49
  keepMounted: boolean;
50
50
  lazy: boolean;
51
51
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
@@ -40,6 +40,8 @@ type __VLS_Props = {
40
40
  hideInput?: boolean;
41
41
  disabled?: boolean;
42
42
  invalid?: boolean;
43
+ /** A message under the control, as on LpInput: it marks it invalid and shows under it (what `form.field()` hands it). */
44
+ error?: string;
43
45
  size?: "sm" | "md" | "lg";
44
46
  /** Trigger text beside the swatch. Defaults to the colour's own value. */
45
47
  label?: string;
@@ -95,7 +97,7 @@ type __VLS_Props = {
95
97
  */
96
98
  copyToast?: string | false;
97
99
  };
98
- declare var __VLS_68: {
100
+ declare var __VLS_74: {
99
101
  color: string;
100
102
  hsv: {
101
103
  h: number;
@@ -105,7 +107,7 @@ declare var __VLS_68: {
105
107
  };
106
108
  };
107
109
  type __VLS_Slots = {} & {
108
- default?: (props: typeof __VLS_68) => any;
110
+ default?: (props: typeof __VLS_74) => any;
109
111
  };
110
112
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
111
113
  open: import("vue").Ref<boolean, boolean>;
@@ -121,12 +123,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
121
123
  selected: boolean;
122
124
  align: "start" | "center" | "end";
123
125
  modelValue: string;
126
+ alpha: boolean;
124
127
  variant: "field" | "swatch";
125
128
  side: "top" | "right" | "bottom" | "left";
126
129
  recent: boolean;
127
130
  recentKey: string;
128
131
  recentLimit: number;
129
- alpha: boolean;
130
132
  swatches: readonly string[];
131
133
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
132
134
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpColorPicker-COHzV68R.js";
1
+ import { _ as _sfc_main } from "../chunks/LpColorPicker-BONURBFN.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDatePicker-DwSDY0mt.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDatePicker-C2AOtxgF.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDateRangePicker-CNQXdTVv.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDateRangePicker-CiXdIAyh.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -6,7 +6,7 @@ import { useLabels } from "../composables/useLpConfig.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { useReveal } from "../composables/useReveal.js";
8
8
  import { PopoverRoot, PopoverAnchor, PopoverPortal, PopoverContent } from "reka-ui";
9
- import { _ as _sfc_main$1 } from "../chunks/DropzoneLinkField-CLLhd3WB.js";
9
+ import { _ as _sfc_main$1 } from "../chunks/DropzoneLinkField-CyE7TJ5f.js";
10
10
  import { POPOVER_PANEL } from "./dropdown.js";
11
11
  import { _ as _sfc_main$2 } from "../chunks/LpIcon-C6JpQ5td.js";
12
12
  import { inTextField } from "../composables/textEntry.js";
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTree-C-rJKzEQ.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTree-CpNurwZp.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTreeNode-BgYn4U1J.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTreeNode-DdF8Cq-s.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };