@leavepulse/ui 0.70.0 → 0.70.1

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 (135) hide show
  1. package/README.md +12 -0
  2. package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
  3. package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
  4. package/dist/chunks/{ContextMenuItems-B5uE8Znw.js → ContextMenuItems-6kxEivBI.js} +10 -4
  5. package/dist/chunks/{LpAddressInput-CNnLTDZg.js → LpAddressInput-Chv_Xf8q.js} +1 -1
  6. package/dist/chunks/{LpAppShell-CEUAB8kK.js → LpAppShell-BiWByLmt.js} +1 -1
  7. package/dist/chunks/{LpBadge-HOEPBYmi.js → LpBadge-BBq1Er9T.js} +1 -1
  8. package/dist/chunks/{LpBreadcrumbs-DYoPc3P4.js → LpBreadcrumbs-JKEi_yFF.js} +1 -1
  9. package/dist/chunks/{LpCodeDisplay-CIKKT2iW.js → LpCodeDisplay-CbJMs-IK.js} +2 -2
  10. package/dist/chunks/{LpColorPicker-DFugXNUi.js → LpColorPicker-B7HSIFmn.js} +2 -2
  11. package/dist/chunks/{LpContextMenu-COwOwRgI.js → LpContextMenu-Cj96ENDC.js} +5 -4
  12. package/dist/chunks/{LpCountdown-Dtq1ihlJ.js → LpCountdown-BQnmB4gq.js} +1 -1
  13. package/dist/chunks/{LpDataList-B-5nHfNw.js → LpDataList-CHNYQw7h.js} +4 -3
  14. package/dist/chunks/{LpDatePicker-BUe1VUC0.js → LpDatePicker-ac1_6o5P.js} +4 -3
  15. package/dist/chunks/{LpDateRangePicker-C_k65vGR.js → LpDateRangePicker-B15gYrZJ.js} +4 -3
  16. package/dist/chunks/{LpDropdownMenu-CRgrhdAH.js → LpDropdownMenu-R4aYVtVV.js} +5 -2
  17. package/dist/chunks/{LpEditable-DTqLt2lT.js → LpEditable-Ws3DNQHn.js} +5 -3
  18. package/dist/chunks/{LpFileTree-DMISXVHC.js → LpFileTree-DDNg34tJ.js} +1 -1
  19. package/dist/chunks/{LpFileTreeNode-CPXB_Yy3.js → LpFileTreeNode-DmPuYNZ_.js} +2 -2
  20. package/dist/chunks/{LpGauge-Bk8TwJj0.js → LpGauge-C14Z9503.js} +1 -1
  21. package/dist/chunks/{LpHintLayer-p4hqzdyA.js → LpHintLayer-HvwUA5Ec.js} +1 -1
  22. package/dist/chunks/{LpHints-CCrhRfy9.js → LpHints-DxbPKOzQ.js} +2 -2
  23. package/dist/chunks/{LpInfraNode-CUC3t4na.js → LpInfraNode-D64hywJI.js} +2 -2
  24. package/dist/chunks/{LpLogViewer-elZHbj85.js → LpLogViewer-DKK4ySZl.js} +2 -2
  25. package/dist/chunks/{LpMediaGallery-D5swlmZ_.js → LpMediaGallery-rmI1DjKN.js} +1 -1
  26. package/dist/chunks/{LpModalNav-D4Z0wVHR.js → LpModalNav-DiyFCHiZ.js} +1 -1
  27. package/dist/chunks/{LpNotificationBell-DPZmP5dM.js → LpNotificationBell-D-WhE5m2.js} +5 -5
  28. package/dist/chunks/{LpPasswordInput-DTV18FIh.js → LpPasswordInput-GL2KOFK8.js} +10 -6
  29. package/dist/chunks/{LpPie-CFuV7pZv.js → LpPie-BgXZ3xmm.js} +2 -2
  30. package/dist/chunks/{LpPipeline-D81yh_NX.js → LpPipeline-B31h41Mu.js} +2 -2
  31. package/dist/chunks/{LpPopover-BEIcqb9p.js → LpPopover-DmZ3wUtP.js} +6 -5
  32. package/dist/chunks/{LpQuota-2Sw_gqcJ.js → LpQuota-DaL8TgNe.js} +1 -1
  33. package/dist/chunks/{LpRelativeTime-CKzVqAo9.js → LpRelativeTime-yin9uQP7.js} +1 -1
  34. package/dist/chunks/LpRepeater-D0S7jjwr.js +180 -0
  35. package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
  36. package/dist/chunks/{LpSecretField-DMfdJ1cQ.js → LpSecretField-CfWyHv9m.js} +19 -10
  37. package/dist/chunks/{LpSelect-B4f_yRi5.js → LpSelect-C_8cJtj6.js} +10 -15
  38. package/dist/chunks/{LpSidebar-D-M0Y_7U.js → LpSidebar-CZRXtvem.js} +1 -1
  39. package/dist/chunks/{LpSidebarNav-DF-TYxOV.js → LpSidebarNav-DBg1U1oW.js} +2 -2
  40. package/dist/chunks/{LpStat-B2ix1Q7t.js → LpStat-DFKlPJgy.js} +1 -1
  41. package/dist/chunks/{LpStatus-C7kx5PKE.js → LpStatus-BsGLrpor.js} +2 -2
  42. package/dist/chunks/{LpStepMark-DK-5BKAt.js → LpStepMark-TrzOioa9.js} +1 -1
  43. package/dist/chunks/{LpStepper-DRFfdJaq.js → LpStepper-BbnS5jUr.js} +1 -1
  44. package/dist/chunks/{LpTagsInput-DgpBFRV2.js → LpTagsInput-DZg80W-B.js} +1 -1
  45. package/dist/chunks/{LpThemeStudio-DguwHdGt.js → LpThemeStudio-DxVZMtzN.js} +1 -1
  46. package/dist/chunks/{LpThemeSwitcher-D5uz0MhK.js → LpThemeSwitcher-CadVBTBn.js} +3 -3
  47. package/dist/chunks/{LpTopologyCanvas-ZhKthfgz.js → LpTopologyCanvas-C17A1XCb.js} +1 -1
  48. package/dist/chunks/{LpTour-NfRJNEIP.js → LpTour-CY2bFXge.js} +1 -1
  49. package/dist/chunks/{LpUptimeBar-DWegV2p6.js → LpUptimeBar-Tew1Ykx4.js} +1 -1
  50. package/dist/chunks/{PickerField-CHRS1h7K.js → PickerField-DoHv0WMH.js} +25 -16
  51. package/dist/chunks/{TourCard-BXuVHsfn.js → TourCard-BJ8i7dk0.js} +1 -1
  52. package/dist/components/ContextMenuItems.vue.js +1 -1
  53. package/dist/components/LpAddressInput.vue.js +1 -1
  54. package/dist/components/LpAppShell.vue.js +1 -1
  55. package/dist/components/LpBadge.vue.js +1 -1
  56. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  57. package/dist/components/LpChart.vue.js +26 -24
  58. package/dist/components/LpCodeDisplay.vue.js +1 -1
  59. package/dist/components/LpColorPicker.vue.js +1 -1
  60. package/dist/components/LpContextMenu.vue.js +1 -1
  61. package/dist/components/LpCountdown.vue.js +1 -1
  62. package/dist/components/LpDataList.vue.js +1 -1
  63. package/dist/components/LpDatePicker.vue.d.ts +2 -0
  64. package/dist/components/LpDatePicker.vue.js +1 -1
  65. package/dist/components/LpDateRangePicker.vue.d.ts +2 -0
  66. package/dist/components/LpDateRangePicker.vue.js +1 -1
  67. package/dist/components/LpDropdownMenu.vue.js +1 -1
  68. package/dist/components/LpEditable.vue.js +1 -1
  69. package/dist/components/LpFileTree.vue.js +1 -1
  70. package/dist/components/LpFileTreeNode.vue.js +1 -1
  71. package/dist/components/LpGauge.vue.js +1 -1
  72. package/dist/components/LpHintLayer.vue.js +1 -1
  73. package/dist/components/LpHints.vue.js +1 -1
  74. package/dist/components/LpInfraNode.vue.js +1 -1
  75. package/dist/components/LpLogViewer.vue.js +1 -1
  76. package/dist/components/LpMediaGallery.vue.js +1 -1
  77. package/dist/components/LpModalNav.vue.js +1 -1
  78. package/dist/components/LpNotificationBell.vue.js +1 -1
  79. package/dist/components/LpPaletteFacts.vue.js +1 -1
  80. package/dist/components/LpPaletteStats.vue.js +1 -1
  81. package/dist/components/LpPasswordInput.vue.d.ts +7 -1
  82. package/dist/components/LpPasswordInput.vue.js +1 -1
  83. package/dist/components/LpPie.vue.js +1 -1
  84. package/dist/components/LpPipeline.vue.js +1 -1
  85. package/dist/components/LpPopover.vue.js +1 -1
  86. package/dist/components/LpQuota.vue.js +1 -1
  87. package/dist/components/LpRelativeTime.vue.js +1 -1
  88. package/dist/components/LpRepeater.vue.js +1 -1
  89. package/dist/components/LpRollingText.vue.d.ts +2 -0
  90. package/dist/components/LpRollingText.vue.js +1 -1
  91. package/dist/components/LpSecretField.vue.js +1 -1
  92. package/dist/components/LpSelect.vue.js +1 -1
  93. package/dist/components/LpSidebar.vue.js +1 -1
  94. package/dist/components/LpSidebarNav.vue.js +1 -1
  95. package/dist/components/LpStat.vue.js +1 -1
  96. package/dist/components/LpStatus.vue.js +1 -1
  97. package/dist/components/LpStepMark.vue.js +1 -1
  98. package/dist/components/LpStepper.vue.js +1 -1
  99. package/dist/components/LpTable.vue.js +4 -4
  100. package/dist/components/LpTabs.vue.js +3 -3
  101. package/dist/components/LpTagsInput.vue.js +1 -1
  102. package/dist/components/LpThemeStudio.vue.js +1 -1
  103. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  104. package/dist/components/LpTopologyCanvas.vue.js +1 -1
  105. package/dist/components/LpTour.vue.js +1 -1
  106. package/dist/components/LpUptimeBar.vue.js +1 -1
  107. package/dist/components/PickerField.vue.d.ts +5 -3
  108. package/dist/components/PickerField.vue.js +1 -1
  109. package/dist/components/TourCard.vue.js +1 -1
  110. package/dist/components/menuWhen.js +1 -1
  111. package/dist/composables/useField.d.ts +5 -0
  112. package/dist/composables/useField.js +21 -1
  113. package/dist/composables/useForm.js +13 -4
  114. package/dist/composables/useView.js +4 -1
  115. package/dist/index.js +43 -43
  116. package/package.json +4 -1
  117. package/src/components/ContextMenuItems.vue +5 -2
  118. package/src/components/LpChart.vue +19 -17
  119. package/src/components/LpContextMenu.vue +4 -3
  120. package/src/components/LpDataList.vue +2 -2
  121. package/src/components/LpDatePicker.vue +2 -0
  122. package/src/components/LpDateRangePicker.vue +2 -0
  123. package/src/components/LpDropdownMenu.vue +1 -1
  124. package/src/components/LpEditable.vue +3 -1
  125. package/src/components/LpPasswordInput.vue +10 -5
  126. package/src/components/LpPopover.vue +4 -0
  127. package/src/components/LpRepeater.vue +64 -13
  128. package/src/components/LpRollingText.vue +12 -1
  129. package/src/components/LpSecretField.vue +15 -8
  130. package/src/components/LpSelect.vue +4 -9
  131. package/src/components/PickerField.vue +5 -4
  132. package/src/composables/useField.ts +26 -1
  133. package/src/composables/useForm.ts +14 -5
  134. package/src/composables/useView.ts +3 -0
  135. package/dist/chunks/LpRepeater-D0VjmD6y.js +0 -140
@@ -0,0 +1,180 @@
1
+ import { defineComponent, useModel, ref, openBlock, createElementBlock, mergeProps, unref, createElementVNode, toDisplayString, createCommentVNode, createVNode, withCtx, createTextVNode, TransitionGroup, Fragment, renderList, renderSlot, mergeModels, nextTick } from "vue";
2
+ import { useFieldControl } from "../composables/useField.js";
3
+ import { useLabels } from "../composables/useLpConfig.js";
4
+ import { useMergedAttrs } from "../composables/useMergedClass.js";
5
+ import { useRepeater } from "../composables/useRepeater.js";
6
+ import { usePrefersReducedMotion } from "../composables/useReducedMotion.js";
7
+ import { _ as _sfc_main$1 } from "./LpButton-CVxBfGjd.js";
8
+ import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
9
+ import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
10
+ import '../assets/LpRepeater-C1Cw27hj.css';const _hoisted_1 = { class: "flex items-center justify-between gap-2" };
11
+ const _hoisted_2 = {
12
+ key: 0,
13
+ class: "text-sm font-medium text-ink"
14
+ };
15
+ const _hoisted_3 = { class: "min-w-0 flex-1" };
16
+ const _hoisted_4 = {
17
+ key: "empty",
18
+ class: "text-xs text-muted"
19
+ };
20
+ const focusable = 'input:not([type="hidden"]):not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled]), [tabindex="0"], [contenteditable="true"]';
21
+ const _sfc_main = /* @__PURE__ */ defineComponent({
22
+ ...{ inheritAttrs: false },
23
+ __name: "LpRepeater",
24
+ props: /* @__PURE__ */ mergeModels({
25
+ createItem: { type: Function },
26
+ itemKey: { type: Function },
27
+ label: {},
28
+ disabled: { type: Boolean },
29
+ labels: {}
30
+ }, {
31
+ "modelValue": { default: () => [] },
32
+ "modelModifiers": {}
33
+ }),
34
+ emits: ["update:modelValue"],
35
+ setup(__props, { expose: __expose }) {
36
+ const props = __props;
37
+ const model = useModel(__props, "modelValue");
38
+ const field = useFieldControl(() => ({ wrapped: false, disabled: props.disabled }));
39
+ const text = useLabels("repeater", { add: "Add item", remove: "Remove item {index}", empty: "No items" }, () => props.labels);
40
+ const list = useRepeater({
41
+ value: () => model.value,
42
+ set: (items) => {
43
+ model.value = items;
44
+ },
45
+ createItem: () => props.createItem(),
46
+ itemKey: () => props.itemKey,
47
+ disabled: () => field.value.disabled
48
+ });
49
+ const { rows } = list;
50
+ const rowsHost = ref(null);
51
+ const reducedMotion = usePrefersReducedMotion();
52
+ const addButton = ref(null);
53
+ function focusRow(index) {
54
+ rowAt(index)?.querySelector(focusable)?.focus({ preventScroll: true });
55
+ }
56
+ function rowAt(index) {
57
+ return Array.from(rowsHost.value?.children ?? []).filter(
58
+ (node) => node.hasAttribute("data-lp-repeater-row") && !node.hasAttribute("inert")
59
+ )[index];
60
+ }
61
+ function beforeLeave(el) {
62
+ const row = el;
63
+ row.style.width = `${row.offsetWidth}px`;
64
+ row.style.top = `${row.offsetTop}px`;
65
+ row.setAttribute("inert", "");
66
+ row.setAttribute("aria-hidden", "true");
67
+ }
68
+ function beforeEnter(el) {
69
+ const row = el;
70
+ row.removeAttribute("inert");
71
+ row.removeAttribute("aria-hidden");
72
+ row.style.removeProperty("top");
73
+ row.style.removeProperty("width");
74
+ }
75
+ async function add() {
76
+ if (field.value.disabled) return;
77
+ list.add();
78
+ await nextTick();
79
+ focusRow(model.value.length - 1);
80
+ }
81
+ async function remove(index) {
82
+ if (field.value.disabled) return;
83
+ const row = rowAt(index);
84
+ const restore = row?.contains(row.ownerDocument.activeElement);
85
+ list.remove(index);
86
+ if (!restore) return;
87
+ await nextTick();
88
+ if (model.value.length) focusRow(Math.min(index, model.value.length - 1));
89
+ else addButton.value?.$el?.focus({ preventScroll: true });
90
+ }
91
+ __expose({ add, remove, update: list.update });
92
+ const { class: rootClass, attrs: rest } = useMergedAttrs("flex min-w-0 flex-col gap-2");
93
+ return (_ctx, _cache) => {
94
+ return openBlock(), createElementBlock("div", mergeProps(unref(rest), { class: unref(rootClass) }), [
95
+ createElementVNode("div", _hoisted_1, [
96
+ __props.label ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
97
+ createVNode(_sfc_main$1, {
98
+ ref_key: "addButton",
99
+ ref: addButton,
100
+ size: "xs",
101
+ variant: "ghost",
102
+ disabled: unref(field).disabled,
103
+ onClick: add
104
+ }, {
105
+ default: withCtx(() => [
106
+ createVNode(_sfc_main$2, {
107
+ name: "lucide:plus",
108
+ size: 14
109
+ }),
110
+ createTextVNode(toDisplayString(unref(text).add), 1)
111
+ ]),
112
+ _: 1
113
+ }, 8, ["disabled"])
114
+ ]),
115
+ createVNode(_sfc_main$3, { axis: "height" }, {
116
+ default: withCtx(() => [
117
+ createElementVNode("div", {
118
+ ref_key: "rowsHost",
119
+ ref: rowsHost,
120
+ class: "relative flex min-w-0 flex-col gap-2"
121
+ }, [
122
+ createVNode(TransitionGroup, {
123
+ name: "lp-repeater",
124
+ css: !unref(reducedMotion),
125
+ onBeforeEnter: beforeEnter,
126
+ onBeforeLeave: beforeLeave
127
+ }, {
128
+ default: withCtx(() => [
129
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), ({ item, key }, index) => {
130
+ return openBlock(), createElementBlock("div", {
131
+ key,
132
+ "data-lp-repeater-row": "",
133
+ class: "flex min-w-0 items-start gap-2"
134
+ }, [
135
+ createElementVNode("div", _hoisted_3, [
136
+ renderSlot(_ctx.$slots, "default", {
137
+ item,
138
+ index,
139
+ disabled: unref(field).disabled,
140
+ update: (next) => unref(list).update(index, next),
141
+ remove: () => remove(index)
142
+ })
143
+ ]),
144
+ createVNode(_sfc_main$1, {
145
+ variant: "ghost",
146
+ size: "sm",
147
+ square: "",
148
+ disabled: unref(field).disabled,
149
+ "aria-label": unref(text).remove.replace("{index}", String(index + 1)),
150
+ onClick: ($event) => remove(index)
151
+ }, {
152
+ default: withCtx(() => [
153
+ createVNode(_sfc_main$2, {
154
+ name: "lucide:x",
155
+ size: 14
156
+ })
157
+ ]),
158
+ _: 1
159
+ }, 8, ["disabled", "aria-label", "onClick"])
160
+ ]);
161
+ }), 128)),
162
+ !unref(rows).length ? (openBlock(), createElementBlock("div", _hoisted_4, [
163
+ renderSlot(_ctx.$slots, "empty", {}, () => [
164
+ createTextVNode(toDisplayString(unref(text).empty), 1)
165
+ ])
166
+ ])) : createCommentVNode("", true)
167
+ ]),
168
+ _: 3
169
+ }, 8, ["css"])
170
+ ], 512)
171
+ ]),
172
+ _: 3
173
+ })
174
+ ], 16);
175
+ };
176
+ }
177
+ });
178
+ export {
179
+ _sfc_main as _
180
+ };
@@ -1,12 +1,13 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, Transition, withCtx, renderSlot, createTextVNode, toDisplayString } from "vue";
2
- import '../assets/LpRollingText-BGnE6q9j.css';const _sfc_main = /* @__PURE__ */ defineComponent({
2
+ import '../assets/LpRollingText-dyOXedGO.css';const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  __name: "LpRollingText",
4
4
  props: {
5
5
  value: {},
6
6
  mode: { default: "slide" },
7
7
  direction: { default: "up" },
8
8
  duration: { default: 320 },
9
- align: { default: "center" }
9
+ align: { default: "center" },
10
+ wrap: { type: Boolean }
10
11
  },
11
12
  setup(__props) {
12
13
  const props = __props;
@@ -25,7 +26,7 @@ import '../assets/LpRollingText-BGnE6q9j.css';const _sfc_main = /* @__PURE__ */
25
26
  }));
26
27
  return (_ctx, _cache) => {
27
28
  return openBlock(), createElementBlock("span", {
28
- class: normalizeClass(["lp-roll relative inline-flex overflow-hidden align-bottom", justify.value]),
29
+ class: normalizeClass(["lp-roll relative inline-flex overflow-hidden align-bottom", [justify.value, __props.wrap && "lp-roll--wrap"]]),
29
30
  style: normalizeStyle(style.value)
30
31
  }, [
31
32
  createVNode(Transition, { name: name.value }, {
@@ -2,12 +2,13 @@ import { defineComponent, useModel, computed, ref, watch, onMounted, onBeforeUnm
2
2
  import { prefersReducedMotion } from "../composables/easing.js";
3
3
  import { useScramble } from "../composables/useScramble.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
+ import { useFieldControl } from "../composables/useField.js";
5
6
  import { mergeClass } from "../composables/useMergedClass.js";
6
7
  import { _ as _sfc_main$5 } from "./FieldWrapper-BiennROB.js";
7
8
  import { _ as _sfc_main$3 } from "./LpButton-CVxBfGjd.js";
8
9
  import { _ as _sfc_main$2 } from "./LpCopyButton-DzHjnFs0.js";
9
10
  import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
10
- import { _ as _sfc_main$1 } from "./LpPasswordInput-DTV18FIh.js";
11
+ import { _ as _sfc_main$1 } from "./LpPasswordInput-GL2KOFK8.js";
11
12
  import { _ as _sfc_main$6 } from "./LpShift-DXNsauQZ.js";
12
13
  import { _ as _sfc_main$8 } from "./LpTooltip-Cz8SQwRt.js";
13
14
  import { _ as _sfc_main$7 } from "./RevealToggle-C-KzaQGJ.js";
@@ -57,7 +58,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
57
58
  setup(__props, { emit: __emit }) {
58
59
  const props = __props;
59
60
  const emit = __emit;
60
- const revealed = useModel(__props, "revealed");
61
+ const revealedModel = useModel(__props, "revealed");
62
+ const revealed = computed({
63
+ get: () => props.revealable && revealedModel.value,
64
+ set: (value) => {
65
+ revealedModel.value = value;
66
+ }
67
+ });
61
68
  const text = useLabels(
62
69
  "secretField",
63
70
  {
@@ -71,6 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
71
78
  () => props.labels
72
79
  );
73
80
  const secret = computed(() => (props.input ? props.modelValue : props.value) ?? "");
81
+ const control = useFieldControl(() => ({ wrapped: false, disabled: props.disabled }));
74
82
  const decrypt = useScramble(() => revealed.value ? secret.value : "", { onChange: true, duration: 650 });
75
83
  const mask = computed(() => "•".repeat(props.maskLength));
76
84
  let hideTimer;
@@ -117,7 +125,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
117
125
  () => mergeClass(
118
126
  "relative flex w-full items-center gap-1 overflow-hidden rounded-control border bg-surface-soft text-ink transition-colors duration-(--duration-fast)",
119
127
  props.error ? "border-danger" : "border-line",
120
- props.disabled ? "opacity-55" : "",
128
+ control.value.disabled ? "opacity-55" : "",
121
129
  props.wrap ? "py-1.5" : "",
122
130
  { sm: "min-h-(--size-control-sm) pl-2.5 pr-1 text-xs", md: "min-h-(--size-control-md) pl-3 pr-1.5 text-sm", lg: "min-h-(--size-control-lg) pl-3.5 pr-1.5 text-sm" }[props.size]
123
131
  )
@@ -133,7 +141,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
133
141
  class: "[&_input]:font-mono",
134
142
  "model-value": __props.modelValue,
135
143
  placeholder: __props.placeholder,
136
- disabled: __props.disabled,
144
+ disabled: unref(control).disabled,
145
+ revealable: __props.revealable,
137
146
  label: __props.label,
138
147
  hint: __props.hint,
139
148
  error: __props.error,
@@ -147,7 +156,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
147
156
  value: secret.value,
148
157
  size: "xs",
149
158
  class: "size-7",
150
- disabled: __props.disabled,
159
+ disabled: unref(control).disabled,
151
160
  onCopied: _cache[0] || (_cache[0] = (t) => emit("copied", t))
152
161
  }, null, 8, ["value", "disabled"])) : createCommentVNode("", true),
153
162
  renderSlot(_ctx.$slots, "actions"),
@@ -160,7 +169,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
160
169
  "aria-label": unref(text).regenerate,
161
170
  title: unref(text).regenerate,
162
171
  action: __props.regenerate,
163
- disabled: __props.disabled
172
+ disabled: unref(control).disabled
164
173
  }, {
165
174
  default: withCtx(() => [
166
175
  createVNode(_sfc_main$4, {
@@ -180,7 +189,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
180
189
  ]),
181
190
  key: "0"
182
191
  } : void 0
183
- ]), 1040, ["visible", "model-value", "placeholder", "disabled", "label", "hint", "error", "size", "labels"])) : (openBlock(), createBlock(_sfc_main$5, {
192
+ ]), 1040, ["visible", "model-value", "placeholder", "disabled", "revealable", "label", "hint", "error", "size", "labels"])) : (openBlock(), createBlock(_sfc_main$5, {
184
193
  key: 1,
185
194
  wrapped: !!(__props.label || __props.hint || __props.error),
186
195
  id: unref(id),
@@ -239,7 +248,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
239
248
  "icon-size": iconSize.value,
240
249
  "show-label": unref(text).show,
241
250
  "hide-label": unref(text).hide,
242
- disabled: __props.disabled,
251
+ disabled: unref(control).disabled,
243
252
  controls: unref(id),
244
253
  class: "size-7"
245
254
  }, null, 8, ["modelValue", "icon-size", "show-label", "hide-label", "disabled", "controls"])) : createCommentVNode("", true),
@@ -248,7 +257,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
248
257
  value: secret.value,
249
258
  size: copySize.value,
250
259
  class: "size-7 text-muted hover:text-ink",
251
- disabled: __props.disabled,
260
+ disabled: unref(control).disabled,
252
261
  onCopied: _cache[4] || (_cache[4] = (t) => emit("copied", t))
253
262
  }, null, 8, ["value", "size", "disabled"])) : createCommentVNode("", true),
254
263
  renderSlot(_ctx.$slots, "actions"),
@@ -264,7 +273,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
264
273
  square: "",
265
274
  class: "size-7 text-muted hover:text-ink",
266
275
  action: __props.regenerate,
267
- disabled: __props.disabled
276
+ disabled: unref(control).disabled
268
277
  }, {
269
278
  default: withCtx(() => [
270
279
  createVNode(_sfc_main$4, {
@@ -1,12 +1,12 @@
1
- import { defineComponent, computed, ref, useId, useAttrs, reactive, watch, nextTick, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementVNode, toDisplayString, createElementBlock, TransitionGroup, Fragment, renderList, createCommentVNode, withModifiers, createTextVNode, normalizeStyle } from "vue";
1
+ import { defineComponent, computed, ref, useAttrs, useId, reactive, watch, nextTick, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementVNode, toDisplayString, createElementBlock, TransitionGroup, Fragment, renderList, createCommentVNode, withModifiers, createTextVNode, normalizeStyle } from "vue";
2
2
  import { ComboboxRoot, ComboboxAnchor, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxInput, ComboboxViewport, ComboboxEmpty, ComboboxItem, ComboboxItemIndicator } from "reka-ui";
3
- import { useFieldControl } from "../composables/useField.js";
3
+ import { useFieldControl, useFieldBlur } from "../composables/useField.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  import { POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
7
7
  import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
8
8
  import { _ as _sfc_main$3 } from "./OptionContent-CmYUUeWj.js";
9
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
9
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
10
10
  import { fitChips, toggledValues } from "../components/select.js";
11
11
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
12
12
  import { useResizeObserver } from "../composables/useResizeObserver.js";
@@ -112,12 +112,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
112
112
  isOpen.value = open;
113
113
  query.value = "";
114
114
  }
115
- const partOf = `lp-select-${useId()}`;
116
- function onFocusOut(event) {
117
- const next = event.relatedTarget;
118
- const inside = !!next && typeof next.closest === "function" && !!next.closest(`[data-lp-select-part="${partOf}"]`);
119
- if (!inside) emit("blur", event);
120
- }
115
+ const { partId, onFocusOut } = useFieldBlur((event) => emit("blur", event));
121
116
  const attrs = useAttrs();
122
117
  const valueId = `lp-select-${useId()}-value`;
123
118
  const valueText = computed(() => chips.value.length ? chipNames.value : displayLabel.value || placeholderText.value);
@@ -254,8 +249,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
254
249
  }), {
255
250
  default: withCtx(() => [
256
251
  createVNode(unref(ComboboxAnchor), {
257
- "data-lp-select-part": partOf,
258
- onFocusout: onFocusOut,
252
+ "data-lp-field-part": unref(partId),
253
+ onFocusout: unref(onFocusOut),
259
254
  class: normalizeClass([
260
255
  anchorHeight.value,
261
256
  "group flex w-full items-center gap-2 rounded-control border bg-surface-soft px-3 text-sm text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2",
@@ -394,12 +389,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
394
389
  })
395
390
  ]),
396
391
  _: 1
397
- }, 8, ["class"]),
392
+ }, 8, ["data-lp-field-part", "onFocusout", "class"]),
398
393
  createVNode(unref(ComboboxPortal), { to: unref(portalTo) }, {
399
394
  default: withCtx(() => [
400
395
  createVNode(unref(ComboboxContent), {
401
- "data-lp-select-part": partOf,
402
- onFocusout: onFocusOut,
396
+ "data-lp-field-part": unref(partId),
397
+ onFocusout: unref(onFocusOut),
403
398
  onInteractOutside: unref(guardOutside),
404
399
  onEscapeKeyDown: unref(guardOutside),
405
400
  position: "popper",
@@ -455,7 +450,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
455
450
  })
456
451
  ]),
457
452
  _: 1
458
- }, 8, ["onInteractOutside", "onEscapeKeyDown", "class"])
453
+ }, 8, ["data-lp-field-part", "onFocusout", "onInteractOutside", "onEscapeKeyDown", "class"])
459
454
  ]),
460
455
  _: 1
461
456
  }, 8, ["to"])
@@ -3,7 +3,7 @@ import { usePersisted } from "../composables/usePersisted.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { _ as _sfc_main$3 } from "./LpDrawer-DGNKRsGq.js";
5
5
  import { _ as _sfc_main$1 } from "./LpInput-CDuwODJG.js";
6
- import { _ as _sfc_main$2 } from "./LpSidebarNav-DF-TYxOV.js";
6
+ import { _ as _sfc_main$2 } from "./LpSidebarNav-DBg1U1oW.js";
7
7
  const _hoisted_1 = ["aria-label"];
8
8
  const _hoisted_2 = {
9
9
  key: 2,
@@ -2,8 +2,8 @@ import { defineComponent, computed, ref, openBlock, createBlock, mergeProps, unr
2
2
  import { Motion } from "motion-v";
3
3
  import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
4
4
  import { usePillTransition } from "../composables/usePillTransition.js";
5
- import { _ as _sfc_main$4 } from "./LpBadge-HOEPBYmi.js";
6
- import { _ as _sfc_main$5 } from "./LpContextMenu-COwOwRgI.js";
5
+ import { _ as _sfc_main$4 } from "./LpBadge-BBq1Er9T.js";
6
+ import { _ as _sfc_main$5 } from "./LpContextMenu-Cj96ENDC.js";
7
7
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
8
8
  import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
9
9
  import { _ as _sfc_main$1 } from "./LpSkeleton-BB6XIV-w.js";
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, u
2
2
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
3
3
  import { _ as _sfc_main$4 } from "./LpNumberFlow-Cfyh033Q.js";
4
4
  import { _ as _sfc_main$3 } from "./LpSkeleton-BB6XIV-w.js";
5
- import { _ as _sfc_main$1 } from "./LpStatus-C7kx5PKE.js";
5
+ import { _ as _sfc_main$1 } from "./LpStatus-BsGLrpor.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  import { TONES } from "../components/tone.js";
8
8
  const _hoisted_1 = { class: "flex items-center gap-2" };
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, createElementVNode, normalizeClass, normalizeStyle, createElementBlock, toDisplayString, createVNode } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- import { _ as _sfc_main$1 } from "./LpBadge-HOEPBYmi.js";
5
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
4
+ import { _ as _sfc_main$1 } from "./LpBadge-BBq1Er9T.js";
5
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
6
6
  import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
7
7
  import { TONE_COLOR } from "../components/meter.js";
8
8
  import { STATUS_LABELS, STATUS_LOOK } from "../components/status.js";
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, u
2
2
  import { useMergedAttrs } from "../composables/useMergedClass.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
4
4
  import { _ as _sfc_main$2 } from "./LpLoader-DjJEX8hL.js";
5
- import { _ as _sfc_main$1 } from "./LpRollingText-DB7upf-5.js";
5
+ import { _ as _sfc_main$1 } from "./LpRollingText-DiL717LK.js";
6
6
  import { TONES } from "../components/tone.js";
7
7
  import '../assets/LpStepMark-Drvx33Vg.css';const _hoisted_1 = ["role", "aria-label", "aria-hidden", "data-status"];
8
8
  const _hoisted_2 = {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, mergeProps, unref, Fragment, renderList, createElementVNode, createVNode, normalizeClass, createTextVNode, toDisplayString, createBlock, createCommentVNode } from "vue";
2
- import { _ as _sfc_main$1 } from "./LpStepMark-DK-5BKAt.js";
2
+ import { _ as _sfc_main$1 } from "./LpStepMark-TrzOioa9.js";
3
3
  import { _ as _sfc_main$2 } from "./StepConnector-37OgEOXA.js";
4
4
  import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  const _hoisted_1 = ["aria-current"];
@@ -9,7 +9,7 @@ import { mergeClass } from "../composables/useMergedClass.js";
9
9
  import { _ as _sfc_main$4 } from "./LpFieldNotice-CurbNuXI.js";
10
10
  import { _ as _sfc_main$1 } from "./FieldWrapper-BiennROB.js";
11
11
  import { BADGE_REMOVE } from "../components/badge.js";
12
- import { _ as _sfc_main$2 } from "./LpBadge-HOEPBYmi.js";
12
+ import { _ as _sfc_main$2 } from "./LpBadge-BBq1Er9T.js";
13
13
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
14
14
  import { _ as _sfc_main$5 } from "./OptionContent-CmYUUeWj.js";
15
15
  import { POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
@@ -5,7 +5,7 @@ import { parseColor, rgbToHex } from "../components/color.js";
5
5
  import { p as presets, u as useTheme, o as themeToCssRule, s as serializeTheme } from "./useTheme-BOV_-AiY.js";
6
6
  import { _ as _sfc_main$1 } from "./LpButton-CVxBfGjd.js";
7
7
  import { _ as _sfc_main$6 } from "./LpCodeBlock-BGsQhxw8.js";
8
- import { _ as _sfc_main$4 } from "./LpColorPicker-DFugXNUi.js";
8
+ import { _ as _sfc_main$4 } from "./LpColorPicker-B7HSIFmn.js";
9
9
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
10
10
  import { _ as _sfc_main$5 } from "./LpSegmented-BO99Sr4m.js";
11
11
  import { _ as _sfc_main$3 } from "./LpThemeStudioSection-BwhqYDLf.js";
@@ -3,11 +3,11 @@ import { PopoverRoot, PopoverAnchor, PopoverPortal, PopoverContent } from "reka-
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
5
5
  import { u as useTheme, p as presets } from "./useTheme-BOV_-AiY.js";
6
- import { u as useThemeStudio, S as STUDIO_SYSTEM, _ as _sfc_main$5 } from "./LpThemeStudio-DguwHdGt.js";
6
+ import { u as useThemeStudio, S as STUDIO_SYSTEM, _ as _sfc_main$5 } from "./LpThemeStudio-DxVZMtzN.js";
7
7
  import { POPOVER_PANEL } from "../components/dropdown.js";
8
- import { _ as _sfc_main$1 } from "./LpContextMenu-COwOwRgI.js";
8
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cj96ENDC.js";
9
9
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
10
- import { _ as _sfc_main$4 } from "./LpRollingText-DB7upf-5.js";
10
+ import { _ as _sfc_main$4 } from "./LpRollingText-DiL717LK.js";
11
11
  import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
12
12
  const _hoisted_1 = ["aria-label", "title"];
13
13
  const _hoisted_2 = {
@@ -3,7 +3,7 @@ import { Background } from "@vue-flow/background";
3
3
  import { Controls } from "@vue-flow/controls";
4
4
  import { MarkerType, useVueFlow, VueFlow, SelectionMode, Panel } from "@vue-flow/core";
5
5
  import { MiniMap } from "@vue-flow/minimap";
6
- import { _ as _sfc_main$3 } from "./LpInfraNode-CUC3t4na.js";
6
+ import { _ as _sfc_main$3 } from "./LpInfraNode-D64hywJI.js";
7
7
  import { _ as _sfc_main$1 } from "./LpLaneNode-HtnQf2FF.js";
8
8
  import { _ as _sfc_main$2 } from "./LpServiceNode-D8uJ8sGk.js";
9
9
  import { _ as _sfc_main$4 } from "./LpWaypointEdge-D8yHlQiw.js";
@@ -8,7 +8,7 @@ import { useMediaQuery } from "../composables/useMediaQuery.js";
8
8
  import { useView, usePortalTarget, viewDocument, viewWindow } from "../composables/useView.js";
9
9
  import { scrollToElement } from "../composables/scroll.js";
10
10
  import { PANEL_SURFACE } from "../components/dropdown.js";
11
- import { _ as _sfc_main$1 } from "./TourCard-BXuVHsfn.js";
11
+ import { _ as _sfc_main$1 } from "./TourCard-BJ8i7dk0.js";
12
12
  import { holeOf, panelsAround, holeClip } from "../components/tour.js";
13
13
  const _hoisted_1 = ["aria-label"];
14
14
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, openBlock, createElementBlock, mergeProps, unref, toDisplayString, createCommentVNode, createElementVNode, createVNode, withCtx, createBlock, Fragment, renderList, normalizeStyle, createTextVNode } from "vue";
2
2
  import { _ as _sfc_main$5 } from "./LpNumberFlow-Cfyh033Q.js";
3
- import { _ as _sfc_main$4 } from "./LpRollingText-DB7upf-5.js";
3
+ import { _ as _sfc_main$4 } from "./LpRollingText-DiL717LK.js";
4
4
  import { _ as _sfc_main$2 } from "./LpSkeleton-BB6XIV-w.js";
5
5
  import { _ as _sfc_main$1 } from "./LpSwap-DzE6M3Mg.js";
6
6
  import { _ as _sfc_main$3 } from "./LpTooltip-Cz8SQwRt.js";
@@ -1,18 +1,20 @@
1
1
  import { defineComponent, useModel, useAttrs, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createVNode, withCtx, Fragment, renderList, toDisplayString, createCommentVNode, renderSlot, createElementVNode, mergeProps, mergeModels } from "vue";
2
+ import { useFieldBlur } from "../composables/useField.js";
2
3
  import { mergeClass } from "../composables/useMergedClass.js";
3
4
  import { PICKER_PRESETS, PICKER_PRESET, PICKER_TRIGGER, PICKER_SIZE, pickerTone, PICKER_CLEAR } from "../components/calendar.js";
4
5
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
5
- import { _ as _sfc_main$1 } from "./LpPopover-BEIcqb9p.js";
6
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
7
- const _hoisted_1 = ["id", "disabled", "aria-invalid", "aria-describedby"];
8
- const _hoisted_2 = {
6
+ import { _ as _sfc_main$1 } from "./LpPopover-DmZ3wUtP.js";
7
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
8
+ const _hoisted_1 = ["data-lp-field-part"];
9
+ const _hoisted_2 = ["id", "disabled", "aria-invalid", "aria-describedby"];
10
+ const _hoisted_3 = {
9
11
  key: 0,
10
12
  class: "w-[15px] shrink-0",
11
13
  "aria-hidden": "true"
12
14
  };
13
- const _hoisted_3 = ["aria-label"];
14
- const _hoisted_4 = ["disabled", "aria-pressed", "onClick"];
15
- const _hoisted_5 = ["aria-label"];
15
+ const _hoisted_4 = ["aria-label"];
16
+ const _hoisted_5 = ["disabled", "aria-pressed", "onClick"];
17
+ const _hoisted_6 = ["aria-label"];
16
18
  const _sfc_main = /* @__PURE__ */ defineComponent({
17
19
  ...{ inheritAttrs: false },
18
20
  __name: "PickerField",
@@ -31,18 +33,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
33
  "open": { type: Boolean },
32
34
  "openModifiers": {}
33
35
  }),
34
- emits: /* @__PURE__ */ mergeModels(["clear"], ["update:open"]),
35
- setup(__props) {
36
+ emits: /* @__PURE__ */ mergeModels(["clear", "blur"], ["update:open"]),
37
+ setup(__props, { emit: __emit }) {
36
38
  const open = useModel(__props, "open");
39
+ const emit = __emit;
40
+ const { partId, onFocusOut } = useFieldBlur((event) => emit("blur", event));
37
41
  const attrs = useAttrs();
38
42
  return (_ctx, _cache) => {
39
43
  return openBlock(), createElementBlock("div", {
44
+ "data-lp-field-part": unref(partId),
45
+ onFocusout: _cache[2] || (_cache[2] = //@ts-ignore
46
+ (...args) => unref(onFocusOut) && unref(onFocusOut)(...args)),
40
47
  class: normalizeClass(unref(mergeClass)("relative w-full", unref(attrs).class)),
41
48
  style: normalizeStyle(unref(attrs).style)
42
49
  }, [
43
50
  createVNode(_sfc_main$1, {
44
51
  open: open.value,
45
52
  "onUpdate:open": _cache[0] || (_cache[0] = ($event) => open.value = $event),
53
+ "data-lp-field-part": unref(partId),
54
+ onFocusout: unref(onFocusOut),
46
55
  align: "start",
47
56
  "panel-class": "flex w-auto max-w-[calc(100vw-1rem)] flex-col rounded-card p-0 sm:flex-row"
48
57
  }, {
@@ -65,13 +74,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
65
74
  align: "start",
66
75
  class: normalizeClass(["min-w-0 flex-1", !__props.display && "text-muted"])
67
76
  }, null, 8, ["value", "class"]),
68
- __props.clearable ? (openBlock(), createElementBlock("span", _hoisted_2)) : createCommentVNode("", true),
77
+ __props.clearable ? (openBlock(), createElementBlock("span", _hoisted_3)) : createCommentVNode("", true),
69
78
  createVNode(_sfc_main$2, {
70
79
  name: "lucide:chevron-down",
71
80
  size: 15,
72
81
  class: "shrink-0 text-muted transition-transform duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-data-[state=open]:rotate-180 motion-reduce:transition-none"
73
82
  })
74
- ], 16, _hoisted_1)
83
+ ], 16, _hoisted_2)
75
84
  ]),
76
85
  default: withCtx(() => [
77
86
  __props.presets.length ? (openBlock(), createElementBlock("div", {
@@ -88,13 +97,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
88
97
  "aria-pressed": preset.selected,
89
98
  class: normalizeClass(unref(PICKER_PRESET)),
90
99
  onClick: preset.select
91
- }, toDisplayString(preset.label), 11, _hoisted_4);
100
+ }, toDisplayString(preset.label), 11, _hoisted_5);
92
101
  }), 128))
93
- ], 10, _hoisted_3)) : createCommentVNode("", true),
102
+ ], 10, _hoisted_4)) : createCommentVNode("", true),
94
103
  renderSlot(_ctx.$slots, "default")
95
104
  ]),
96
105
  _: 3
97
- }, 8, ["open"]),
106
+ }, 8, ["open", "data-lp-field-part", "onFocusout"]),
98
107
  __props.clearable ? (openBlock(), createElementBlock("button", {
99
108
  key: 0,
100
109
  type: "button",
@@ -106,8 +115,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
106
115
  name: "lucide:x",
107
116
  size: 15
108
117
  })
109
- ], 10, _hoisted_5)) : createCommentVNode("", true)
110
- ], 6);
118
+ ], 10, _hoisted_6)) : createCommentVNode("", true)
119
+ ], 46, _hoisted_1);
111
120
  };
112
121
  }
113
122
  });
@@ -2,7 +2,7 @@ import { defineComponent, openBlock, createElementBlock, Fragment, createVNode,
2
2
  import { _ as _sfc_main$5 } from "./LpButton-CVxBfGjd.js";
3
3
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
4
4
  import LpKeys from "../components/LpKeys.vue.js";
5
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
5
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
7
  import { _ as _sfc_main$1 } from "./LpSwap-DzE6M3Mg.js";
8
8
  const _hoisted_1 = { class: "flex items-start justify-between gap-3" };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/ContextMenuItems-B5uE8Znw.js";
1
+ import { _ as _sfc_main } from "../chunks/ContextMenuItems-6kxEivBI.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-CNnLTDZg.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-Chv_Xf8q.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-CEUAB8kK.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-BiWByLmt.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };