@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
package/README.md CHANGED
@@ -220,3 +220,15 @@ objects are edited, reordered or removed. The slot also provides `index`,
220
220
  `LpInput clearable` adds a clear button that keeps focus in the input, respects
221
221
  disabled/read-only state, and can be combined with the `trailing` slot. Its
222
222
  button text comes from `labels.clear` or the app-wide `input` label scope.
223
+
224
+ ### Browser regression tests
225
+
226
+ ```sh
227
+ bunx playwright install chromium
228
+ bun run test:browser
229
+ ```
230
+
231
+ Playwright starts an isolated Vite server on port 4501. The suite covers field
232
+ locking, secret reveal controls, date/select focus boundaries and a mobile
233
+ form inside a guarded drawer. These checks run in CI and before npm publishing.
234
+ Use `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` to run an existing Chromium installation.
@@ -0,0 +1,21 @@
1
+
2
+ .lp-repeater-move,
3
+ .lp-repeater-enter-active,
4
+ .lp-repeater-leave-active {
5
+ transition: transform var(--duration-fast) var(--ease-emphasized), opacity var(--duration-fast) var(--ease-emphasized);
6
+ }
7
+ .lp-repeater-leave-active {
8
+ position: absolute;
9
+ }
10
+ .lp-repeater-enter-from,
11
+ .lp-repeater-leave-to {
12
+ opacity: 0;
13
+ transform: translateY(-0.5rem);
14
+ }
15
+ @media (prefers-reduced-motion: reduce) {
16
+ .lp-repeater-move,
17
+ .lp-repeater-enter-active,
18
+ .lp-repeater-leave-active {
19
+ transition: none;
20
+ }
21
+ }
@@ -15,6 +15,13 @@
15
15
  white-space: nowrap;
16
16
  backface-visibility: hidden;
17
17
  }
18
+ .lp-roll--wrap {
19
+ max-width: 100%;
20
+ }
21
+ .lp-roll--wrap .lp-roll__item {
22
+ white-space: normal;
23
+ overflow-wrap: anywhere;
24
+ }
18
25
 
19
26
  /* The outgoing copy leaves the flow so the incoming one keeps the baseline. */
20
27
  .lp-roll-up-leave-active,
@@ -1,5 +1,6 @@
1
- import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, resolveDynamicComponent, createCommentVNode, withCtx, normalizeClass, createElementVNode, createTextVNode, toDisplayString, createVNode, withModifiers } from "vue";
1
+ import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, renderList, createBlock, resolveDynamicComponent, createCommentVNode, withCtx, normalizeClass, createElementVNode, createTextVNode, toDisplayString, createVNode, unref, withModifiers } from "vue";
2
2
  import { DropdownMenuPortal, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuSub, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuItem, ContextMenuPortal, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuSub, ContextMenuSeparator, ContextMenuCheckboxItem, ContextMenuItem } from "reka-ui";
3
+ import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
3
4
  import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
4
5
  import MenuShortcut from "../components/MenuShortcut.vue.js";
5
6
  const _hoisted_1 = { class: "flex items-center gap-2" };
@@ -38,6 +39,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
38
39
  }
39
40
  };
40
41
  const P = computed(() => PRIMITIVES[props.kind]);
42
+ const portalTo = usePortalTarget();
43
+ const guardOutside = useOutsideGuard();
41
44
  return (_ctx, _cache) => {
42
45
  const _component_ContextMenuItems = resolveComponent("ContextMenuItems", true);
43
46
  return openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, i) => {
@@ -70,9 +73,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
70
73
  ]),
71
74
  _: 2
72
75
  }, 1032, ["class", "disabled"])),
73
- (openBlock(), createBlock(resolveDynamicComponent(P.value.Portal), null, {
76
+ (openBlock(), createBlock(resolveDynamicComponent(P.value.Portal), { to: unref(portalTo) }, {
74
77
  default: withCtx(() => [
75
78
  (openBlock(), createBlock(resolveDynamicComponent(P.value.SubContent), {
79
+ onInteractOutside: unref(guardOutside),
80
+ onFocusOutside: unref(guardOutside),
81
+ onEscapeKeyDown: unref(guardOutside),
76
82
  "collision-padding": 8,
77
83
  class: normalizeClass(__props.panel),
78
84
  "side-offset": 2,
@@ -86,10 +92,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
86
92
  }, null, 8, ["items", "panel", "kind"])
87
93
  ]),
88
94
  _: 2
89
- }, 1032, ["class"]))
95
+ }, 1064, ["onInteractOutside", "onFocusOutside", "onEscapeKeyDown", "class"]))
90
96
  ]),
91
97
  _: 2
92
- }, 1024))
98
+ }, 1032, ["to"]))
93
99
  ]),
94
100
  _: 2
95
101
  }, 1024)) : item.checked !== void 0 ? (openBlock(), createBlock(resolveDynamicComponent(P.value.CheckboxItem), {
@@ -8,7 +8,7 @@ import { _ as _sfc_main$1 } from "./LpFormField-BWwgm1E4.js";
8
8
  import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
9
9
  import { _ as _sfc_main$5 } from "./LpInput-CDuwODJG.js";
10
10
  import { _ as _sfc_main$7 } from "./LpModal-eBMt2Fqn.js";
11
- import { _ as _sfc_main$6 } from "./LpSelect-B4f_yRi5.js";
11
+ import { _ as _sfc_main$6 } from "./LpSelect-C_8cJtj6.js";
12
12
  import { useFieldControl } from "../composables/useField.js";
13
13
  import { useLabels } from "../composables/useLpConfig.js";
14
14
  import { useMergedAttrs } from "../composables/useMergedClass.js";
@@ -4,7 +4,7 @@ import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
5
5
  import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
6
6
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
7
- import { _ as _sfc_main$1 } from "./LpSidebar-D-M0Y_7U.js";
7
+ import { _ as _sfc_main$1 } from "./LpSidebar-CZRXtvem.js";
8
8
  import { useMergedAttrs, mergeClass } from "../composables/useMergedClass.js";
9
9
  const _hoisted_1 = ["href"];
10
10
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
@@ -4,7 +4,7 @@ import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { useMergedClass } from "../composables/useMergedClass.js";
5
5
  import { BADGE_REMOVE } from "../components/badge.js";
6
6
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
7
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
7
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
8
8
  import { _ as _sfc_main$1 } from "./LpShift-DXNsauQZ.js";
9
9
  import { slotText } from "../components/slotText.js";
10
10
  import { TONES } from "../components/tone.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createElementBlock, mergeProps, unref, createVNode, withCtx, TransitionGroup, normalizeClass, Fragment, renderList, createBlock, createCommentVNode, resolveDynamicComponent } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
3
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
3
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
4
4
  import { _ as _sfc_main$1 } from "./LpShift-DXNsauQZ.js";
5
5
  import { useLabels, useLinkComponent } from "../composables/useLpConfig.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
@@ -4,9 +4,9 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useNow } from "../composables/useNow.js";
5
5
  import { _ as _sfc_main$6 } from "./LpCheckbox-DHc2bHDe.js";
6
6
  import { _ as _sfc_main$3 } from "./LpCopyButton-DzHjnFs0.js";
7
- import { _ as _sfc_main$5 } from "./LpCountdown-Dtq1ihlJ.js";
7
+ import { _ as _sfc_main$5 } from "./LpCountdown-BQnmB4gq.js";
8
8
  import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
9
- import { _ as _sfc_main$1 } from "./LpRollingText-DB7upf-5.js";
9
+ import { _ as _sfc_main$1 } from "./LpRollingText-DiL717LK.js";
10
10
  import { _ as _sfc_main$2 } from "./RevealToggle-C-KzaQGJ.js";
11
11
  import { groupCode } from "../components/fieldText.js";
12
12
  import { toEpoch, formatTime, ceilToSecond, msToNextSecond } from "../components/timeSpan.js";
@@ -7,9 +7,9 @@ import { DEFAULT_SWATCHES, formatColor, opaqueCss, parseColor, rgbToHsv, isLight
7
7
  import { useClipboard } from "../composables/useClipboard.js";
8
8
  import { useLabels } from "../composables/useLpConfig.js";
9
9
  import { POPOVER_PANEL } from "../components/dropdown.js";
10
- import { _ as _sfc_main$1 } from "./LpContextMenu-COwOwRgI.js";
10
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cj96ENDC.js";
11
11
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
12
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
12
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
13
13
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
14
14
  const _hoisted_1 = ["id", "disabled", "aria-label", "aria-invalid", "aria-describedby"];
15
15
  const _hoisted_2 = { class: "min-w-0 flex-1 truncate font-mono text-xs text-muted-strong" };
@@ -2,10 +2,10 @@ import { defineComponent, computed, openBlock, createBlock, unref, withCtx, crea
2
2
  import { ContextMenuRoot, ContextMenuTrigger, ContextMenuPortal, ContextMenuContent } from "reka-ui";
3
3
  import { hints } from "../composables/useHints.js";
4
4
  import { HINT_SIGNALS, noteContextTarget } from "../composables/useHintSystem.js";
5
- import { _ as _sfc_main$2 } from "./ContextMenuItems-B5uE8Znw.js";
5
+ import { _ as _sfc_main$2 } from "./ContextMenuItems-6kxEivBI.js";
6
6
  import { _ as _sfc_main$1 } from "./MenuTitle-BjQZX8tQ.js";
7
7
  import { POPOVER_PANEL } from "../components/dropdown.js";
8
- import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
8
+ import { useView, usePortalTarget, useOutsideGuard, viewDocument } from "../composables/useView.js";
9
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  __name: "LpContextMenu",
11
11
  props: {
@@ -23,10 +23,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
23
23
  const hinted = computed(() => enabled.value && !props.noHint);
24
24
  const PANEL = `${POPOVER_PANEL} z-(--z-popover) min-w-48 p-1 outline-none`;
25
25
  const SELECTABLE = /* @__PURE__ */ new Set(["text", "search", "url", "tel", "password"]);
26
+ const view = useView();
26
27
  let field = null;
27
28
  function rememberField() {
28
- const el = document.activeElement;
29
- const text = el instanceof HTMLTextAreaElement || el instanceof HTMLInputElement && SELECTABLE.has(el.type);
29
+ const el = viewDocument(view.value).activeElement;
30
+ const text = el?.tagName === "TEXTAREA" || el?.tagName === "INPUT" && SELECTABLE.has(el.type);
30
31
  field = text ? { el, value: el.value, start: el.selectionStart ?? 0, end: el.selectionEnd ?? 0 } : null;
31
32
  }
32
33
  let synthetic = false;
@@ -3,7 +3,7 @@ import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useNow } from "../composables/useNow.js";
5
5
  import { _ as _sfc_main$1 } from "./LpProgress-CE-m5OpD.js";
6
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
6
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
7
7
  import { _ as _sfc_main$2 } from "./LpShift-DXNsauQZ.js";
8
8
  import { DEFAULT_UNIT_LABELS, toEpoch, ceilToSecond, timeParts, resolveFormat, padPart, formatTime, DEFAULT_MILESTONES, crossedMilestone, msToNextSecond } from "../components/timeSpan.js";
9
9
  const _hoisted_1 = ["data-urgent", "data-done"];
@@ -3,11 +3,11 @@ import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { _ as _sfc_main$4 } from "./LpCopyButton-DzHjnFs0.js";
5
5
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
6
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
6
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
7
7
  import { _ as _sfc_main$1 } from "./LpTooltip-Cz8SQwRt.js";
8
8
  const _hoisted_1 = { class: "flex min-w-0 items-center gap-1 text-muted" };
9
9
  const _hoisted_2 = ["aria-label"];
10
- const _hoisted_3 = { class: "min-w-0 break-words" };
10
+ const _hoisted_3 = { class: "min-w-0 flex-1 [overflow-wrap:anywhere]" };
11
11
  const _hoisted_4 = {
12
12
  key: 1,
13
13
  class: "text-muted"
@@ -94,7 +94,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
94
  }) : isEmpty(item.value) ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(unref(text).empty), 1)) : rolls(item.value) ? (openBlock(), createBlock(_sfc_main$3, {
95
95
  key: 2,
96
96
  value: item.value,
97
- align: "start"
97
+ align: "start",
98
+ wrap: ""
98
99
  }, null, 8, ["value"])) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
99
100
  createTextVNode(toDisplayString(item.value), 1)
100
101
  ], 64))
@@ -5,7 +5,7 @@ import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { defaultDatePresets, dayAllowed } from "../components/dateRange.js";
6
6
  import { _ as _sfc_main$2 } from "./LpCalendar-pVL91-Pl.js";
7
7
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
8
- import { _ as _sfc_main$1 } from "./PickerField-CHRS1h7K.js";
8
+ import { _ as _sfc_main$1 } from "./PickerField-DoHv0WMH.js";
9
9
  import { _ as _sfc_main$4 } from "./LpTimeField-BFQVf_PW.js";
10
10
  const _hoisted_1 = { class: "flex flex-col" };
11
11
  const _hoisted_2 = {
@@ -35,7 +35,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  doneLabel: {},
36
36
  labels: {}
37
37
  },
38
- emits: ["update:modelValue"],
38
+ emits: ["update:modelValue", "blur"],
39
39
  setup(__props, { emit: __emit }) {
40
40
  const props = __props;
41
41
  const emit = __emit;
@@ -120,7 +120,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
120
120
  "presets-label": unref(text).presets,
121
121
  presets: presetOptions.value,
122
122
  "presets-class": "sm:w-36",
123
- onClear: clear
123
+ onClear: clear,
124
+ onBlur: _cache[3] || (_cache[3] = ($event) => emit("blur", $event))
124
125
  }), {
125
126
  default: withCtx(() => [
126
127
  createElementVNode("div", _hoisted_1, [
@@ -4,7 +4,7 @@ import { useLocale } from "../composables/useLocale.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useMediaQuery } from "../composables/useMediaQuery.js";
6
6
  import { normalizeRange, formatRange, defaultRangePresets, sameRange, allowedRange } from "../components/dateRange.js";
7
- import { _ as _sfc_main$1 } from "./PickerField-CHRS1h7K.js";
7
+ import { _ as _sfc_main$1 } from "./PickerField-DoHv0WMH.js";
8
8
  import { _ as _sfc_main$2 } from "./LpRangeCalendar-c5qj7YcC.js";
9
9
  const __default__ = { inheritAttrs: false };
10
10
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -27,7 +27,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
27
  format: {},
28
28
  labels: {}
29
29
  },
30
- emits: ["update:modelValue"],
30
+ emits: ["update:modelValue", "blur"],
31
31
  setup(__props, { emit: __emit }) {
32
32
  const props = __props;
33
33
  const emit = __emit;
@@ -99,7 +99,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
99
99
  "presets-label": unref(text).presets,
100
100
  presets: presetOptions.value,
101
101
  "presets-class": "sm:w-40",
102
- onClear: _cache[1] || (_cache[1] = ($event) => emit("update:modelValue", void 0))
102
+ onClear: _cache[1] || (_cache[1] = ($event) => emit("update:modelValue", void 0)),
103
+ onBlur: _cache[2] || (_cache[2] = ($event) => emit("blur", $event))
103
104
  }), {
104
105
  default: withCtx(() => [
105
106
  createVNode(_sfc_main$2, {
@@ -2,7 +2,7 @@ import { defineComponent, openBlock, createBlock, unref, withCtx, createVNode, r
2
2
  import { hints } from "../composables/useHints.js";
3
3
  import { HINT_SIGNALS } from "../composables/useHintSystem.js";
4
4
  import { DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent } from "reka-ui";
5
- import { _ as _sfc_main$2 } from "./ContextMenuItems-B5uE8Znw.js";
5
+ import { _ as _sfc_main$2 } from "./ContextMenuItems-6kxEivBI.js";
6
6
  import { POPOVER_PANEL } from "../components/dropdown.js";
7
7
  import { _ as _sfc_main$1 } from "./MenuTitle-BjQZX8tQ.js";
8
8
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
@@ -25,7 +25,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
25
25
  const portalTo = usePortalTarget();
26
26
  const guardOutside = useOutsideGuard();
27
27
  return (_ctx, _cache) => {
28
- return openBlock(), createBlock(unref(DropdownMenuRoot), { "onUpdate:open": opened }, {
28
+ return openBlock(), createBlock(unref(DropdownMenuRoot), {
29
+ modal: false,
30
+ "onUpdate:open": opened
31
+ }, {
29
32
  default: withCtx(() => [
30
33
  createVNode(unref(DropdownMenuTrigger), { "as-child": "" }, {
31
34
  default: withCtx(() => [
@@ -5,7 +5,7 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { _ as _sfc_main$5 } from "./LpFieldNotice-CurbNuXI.js";
6
6
  import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
7
7
  import { _ as _sfc_main$3 } from "./LpLoader-DjJEX8hL.js";
8
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
8
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
9
9
  import { _ as _sfc_main$1 } from "./LpShift-DXNsauQZ.js";
10
10
  const _hoisted_1 = ["role", "tabindex", "aria-disabled", "aria-label", "aria-busy", "title"];
11
11
  const _hoisted_2 = {
@@ -75,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
75
75
  }
76
76
  let committing = false;
77
77
  async function commit(refocus) {
78
- if (!editing.value || committing) return;
78
+ if (!editing.value || committing || !interactive.value) return;
79
79
  const value = props.trim ? draft.value.trim() : draft.value;
80
80
  if (value === props.modelValue) {
81
81
  notice.clear();
@@ -207,12 +207,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
207
207
  "aria-invalid": unref(notice).tone.value === "danger" && !!unref(notice).message.value || void 0,
208
208
  placeholder: __props.placeholder,
209
209
  maxlength: __props.maxlength,
210
+ disabled: __props.disabled,
211
+ readonly: __props.readonly,
210
212
  rows: __props.multiline ? 1 : void 0,
211
213
  class: normalizeClass(["col-start-1 row-start-1 w-full min-w-0 resize-none overflow-hidden bg-transparent text-ink outline-none placeholder:text-muted", PAD[__props.size]]),
212
214
  onInput: _cache[1] || (_cache[1] = ($event) => draft.value = $event.target.value),
213
215
  onKeydown: onFieldKey,
214
216
  onBlur: _cache[2] || (_cache[2] = ($event) => commit(false))
215
- }, null, 40, ["value", "size", "cols", "aria-label", "aria-invalid", "placeholder", "maxlength", "rows", "class"]))
217
+ }, null, 40, ["value", "size", "cols", "aria-label", "aria-invalid", "placeholder", "maxlength", "disabled", "readonly", "rows", "class"]))
216
218
  ], 2),
217
219
  interactive.value ? (openBlock(), createElementBlock("span", {
218
220
  key: 0,
@@ -2,7 +2,7 @@ import { defineComponent, ref, watch, computed, openBlock, createElementBlock, m
2
2
  import { useLocale } from "../composables/useLocale.js";
3
3
  import { computeStats, formatSize, sortNodes, subtreeIds, ancestorIds } from "../components/fileTree.js";
4
4
  import { _ as _sfc_main$2 } from "./LpEmptyState-KTKipws2.js";
5
- import { _ as _sfc_main$4 } from "./LpFileTreeNode-CPXB_Yy3.js";
5
+ import { _ as _sfc_main$4 } from "./LpFileTreeNode-DmPuYNZ_.js";
6
6
  import { _ as _sfc_main$3 } from "./LpScrollArea-Hz3-JWUG.js";
7
7
  import { _ as _sfc_main$1 } from "./LpSkeleton-BB6XIV-w.js";
8
8
  import { usePersisted } from "../composables/usePersisted.js";
@@ -1,9 +1,9 @@
1
1
  import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, mergeProps, unref, createVNode, withCtx, createElementVNode, withModifiers, normalizeStyle, normalizeClass, createBlock, createCommentVNode, renderSlot, createTextVNode, toDisplayString, Fragment, renderList } from "vue";
2
2
  import { sortNodes, formatSize, formatModified, fileIcon } from "../components/fileTree.js";
3
- import { _ as _sfc_main$5 } from "./LpBadge-HOEPBYmi.js";
3
+ import { _ as _sfc_main$5 } from "./LpBadge-BBq1Er9T.js";
4
4
  import { _ as _sfc_main$4 } from "./LpCheckbox-DHc2bHDe.js";
5
5
  import { _ as _sfc_main$6 } from "./LpCollapse-CWS9M_lm.js";
6
- import { _ as _sfc_main$1 } from "./LpContextMenu-COwOwRgI.js";
6
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cj96ENDC.js";
7
7
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
8
8
  import { _ as _sfc_main$2 } from "./LpLoader-DjJEX8hL.js";
9
9
  import { staggerDelay } from "../components/reveal.js";
@@ -4,7 +4,7 @@ import { useLocale } from "../composables/useLocale.js";
4
4
  import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { useRevealedValue } from "../composables/useRevealedValue.js";
6
6
  import { _ as _sfc_main$1 } from "./LpNumberFlow-Cfyh033Q.js";
7
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
7
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
8
8
  import { capacityThresholds, toneAt, GAUGE_SWEEP, arcPath, meterFraction, polar } from "../components/meter.js";
9
9
  import { toneLook } from "../components/tone.js";
10
10
  const _hoisted_1 = ["aria-valuenow", "aria-valuemin", "aria-valuemax", "aria-valuetext", "aria-label"];
@@ -3,7 +3,7 @@ import { PopoverRoot, PopoverAnchor, PopoverPortal, PopoverContent } from "reka-
3
3
  import { hints } from "../composables/useHints.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { PANEL_SURFACE, POPOVER_ANIM } from "../components/dropdown.js";
6
- import { _ as _sfc_main$1 } from "./LpBadge-HOEPBYmi.js";
6
+ import { _ as _sfc_main$1 } from "./LpBadge-BBq1Er9T.js";
7
7
  import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
8
8
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
9
9
  const _hoisted_1 = ["aria-label", "onPointerenter", "onFocus", "onClick"];
@@ -3,8 +3,8 @@ import { provideHintSystem } from "../composables/useHintSystem.js";
3
3
  import { useAppleKeyboard, appleModifierLabel } from "../composables/useHotkeys.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { _ as _sfc_main$3 } from "./LpActionBar-CzOFar5t.js";
6
- import { _ as _sfc_main$2 } from "./LpHintLayer-p4hqzdyA.js";
7
- import { _ as _sfc_main$1 } from "./LpTour-NfRJNEIP.js";
6
+ import { _ as _sfc_main$2 } from "./LpHintLayer-HvwUA5Ec.js";
7
+ import { _ as _sfc_main$1 } from "./LpTour-CY2bFXge.js";
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  __name: "LpHints",
10
10
  props: {
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, unref, createElementVNode, toDisplayString, createBlock, createCommentVNode, withCtx, createTextVNode } from "vue";
2
2
  import { Handle, Position } from "@vue-flow/core";
3
- import { _ as _sfc_main$2 } from "./LpBadge-HOEPBYmi.js";
4
- import { _ as _sfc_main$1 } from "./LpStatus-C7kx5PKE.js";
3
+ import { _ as _sfc_main$2 } from "./LpBadge-BBq1Er9T.js";
4
+ import { _ as _sfc_main$1 } from "./LpStatus-BsGLrpor.js";
5
5
  const _hoisted_1 = { class: "px-[11px] pb-2.5 pt-[9px]" };
6
6
  const _hoisted_2 = { class: "flex items-center gap-[7px]" };
7
7
  const _hoisted_3 = { class: "text-[13px] text-[var(--accent)]" };
@@ -3,8 +3,8 @@ import { usePersisted } from "../composables/usePersisted.js";
3
3
  import { prefersReducedMotion, durationToken, tokenEase } from "../composables/easing.js";
4
4
  import { useClipboard } from "../composables/useClipboard.js";
5
5
  import { useHotkeys } from "../composables/useHotkeys.js";
6
- import { _ as _sfc_main$7 } from "./LpBadge-HOEPBYmi.js";
7
- import { _ as _sfc_main$6 } from "./LpContextMenu-COwOwRgI.js";
6
+ import { _ as _sfc_main$7 } from "./LpBadge-BBq1Er9T.js";
7
+ import { _ as _sfc_main$6 } from "./LpContextMenu-Cj96ENDC.js";
8
8
  import { _ as _sfc_main$4 } from "./LpEmptyState-KTKipws2.js";
9
9
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
10
10
  import { _ as _sfc_main$5 } from "./LpLoader-DjJEX8hL.js";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, watch, computed, openBlock, createElementBlock, renderSlot, mergeProps, unref, Fragment, renderList, createBlock, withCtx, createElementVNode, normalizeClass, toDisplayString, createVNode, createCommentVNode } from "vue";
2
2
  import { useMergedAttrs } from "../composables/useMergedClass.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
- import { _ as _sfc_main$1 } from "./LpContextMenu-COwOwRgI.js";
4
+ import { _ as _sfc_main$1 } from "./LpContextMenu-Cj96ENDC.js";
5
5
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
6
6
  import { _ as _sfc_main$3 } from "./LpLightbox-XJ0LpTcZ.js";
7
7
  const _hoisted_1 = { key: 0 };
@@ -4,7 +4,7 @@ import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { _ as _sfc_main$2 } from "./LpButton-CVxBfGjd.js";
5
5
  import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
6
6
  import { _ as _sfc_main$1 } from "./LpModal-eBMt2Fqn.js";
7
- import { _ as _sfc_main$4 } from "./LpSidebar-D-M0Y_7U.js";
7
+ import { _ as _sfc_main$4 } from "./LpSidebar-CZRXtvem.js";
8
8
  const _hoisted_1 = { class: "flex items-center gap-2" };
9
9
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
10
  __name: "LpModalNav",
@@ -1,14 +1,14 @@
1
1
  import { defineComponent, computed, useModel, getCurrentInstance, openBlock, createBlock, withCtx, createElementVNode, toDisplayString, createElementBlock, createCommentVNode, createVNode, Fragment, renderList, resolveDynamicComponent, normalizeClass, unref, createTextVNode, Transition, mergeModels } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useNow } from "../composables/useNow.js";
4
- import { _ as _sfc_main$a } from "./LpBadge-HOEPBYmi.js";
4
+ import { _ as _sfc_main$a } from "./LpBadge-BBq1Er9T.js";
5
5
  import { _ as _sfc_main$9 } from "./LpButton-CVxBfGjd.js";
6
- import { _ as _sfc_main$6 } from "./LpContextMenu-COwOwRgI.js";
6
+ import { _ as _sfc_main$6 } from "./LpContextMenu-Cj96ENDC.js";
7
7
  import { _ as _sfc_main$4 } from "./LpEmptyState-KTKipws2.js";
8
8
  import { _ as _sfc_main$7 } from "./LpIcon-HJP5xMz4.js";
9
- import { _ as _sfc_main$1 } from "./LpPopover-BEIcqb9p.js";
10
- import { _ as _sfc_main$8 } from "./LpRelativeTime-CKzVqAo9.js";
11
- import { _ as _sfc_main$b } from "./LpRollingText-DB7upf-5.js";
9
+ import { _ as _sfc_main$1 } from "./LpPopover-DmZ3wUtP.js";
10
+ import { _ as _sfc_main$8 } from "./LpRelativeTime-yin9uQP7.js";
11
+ import { _ as _sfc_main$b } from "./LpRollingText-DiL717LK.js";
12
12
  import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
13
13
  import { _ as _sfc_main$3 } from "./LpSkeleton-BB6XIV-w.js";
14
14
  import { _ as _sfc_main$2 } from "./LpShift-DXNsauQZ.js";
@@ -1,4 +1,5 @@
1
- import { defineComponent, useModel, ref, openBlock, createBlock, mergeProps, createSlots, withCtx, renderSlot, createVNode, unref, mergeModels } from "vue";
1
+ import { defineComponent, useModel, ref, openBlock, createBlock, mergeProps, unref, createSlots, withCtx, renderSlot, createCommentVNode, mergeModels } from "vue";
2
+ import { useFieldControl } from "../composables/useField.js";
2
3
  import { useLabels } from "../composables/useLpConfig.js";
3
4
  import { _ as _sfc_main$1 } from "./LpInput-CDuwODJG.js";
4
5
  import { _ as _sfc_main$2 } from "./RevealToggle-C-KzaQGJ.js";
@@ -11,6 +12,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
11
12
  placeholder: {},
12
13
  invalid: { type: Boolean },
13
14
  disabled: { type: Boolean },
15
+ revealable: { type: Boolean, default: true },
14
16
  label: {},
15
17
  hint: {},
16
18
  error: {},
@@ -25,6 +27,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
25
27
  setup(__props, { expose: __expose }) {
26
28
  const props = __props;
27
29
  const visible = useModel(__props, "visible");
30
+ const field = useFieldControl(() => ({ wrapped: false, disabled: props.disabled }));
28
31
  const text = useLabels(
29
32
  "passwordInput",
30
33
  { show: "Show password", hide: "Hide password" },
@@ -42,10 +45,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
42
45
  ref: inner
43
46
  }, _ctx.$attrs, {
44
47
  "model-value": __props.modelValue,
45
- type: visible.value ? "text" : "password",
48
+ type: __props.revealable && visible.value ? "text" : "password",
46
49
  placeholder: __props.placeholder,
47
50
  invalid: __props.invalid,
48
- disabled: __props.disabled,
51
+ disabled: unref(field).disabled,
49
52
  label: __props.label,
50
53
  hint: __props.hint,
51
54
  error: __props.error,
@@ -55,15 +58,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
55
58
  }), createSlots({
56
59
  trailing: withCtx(() => [
57
60
  renderSlot(_ctx.$slots, "actions"),
58
- createVNode(_sfc_main$2, {
61
+ __props.revealable ? (openBlock(), createBlock(_sfc_main$2, {
62
+ key: 0,
59
63
  modelValue: visible.value,
60
64
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
61
65
  "icon-size": __props.size === "sm" ? 14 : 16,
62
66
  "show-label": unref(text).show,
63
67
  "hide-label": unref(text).hide,
64
- disabled: __props.disabled,
68
+ disabled: unref(field).disabled,
65
69
  class: "size-auto rounded-inner p-1 hover:bg-transparent"
66
- }, null, 8, ["modelValue", "icon-size", "show-label", "hide-label", "disabled"])
70
+ }, null, 8, ["modelValue", "icon-size", "show-label", "hide-label", "disabled"])) : createCommentVNode("", true)
67
71
  ]),
68
72
  _: 2
69
73
  }, [
@@ -4,10 +4,10 @@ import { useReveal } from "../composables/useReveal.js";
4
4
  import { useTween, lerp, mixColor } from "../composables/useTween.js";
5
5
  import { resolveSlices, arcPath, calloutLabels, formatTick } from "../components/chart.js";
6
6
  import { _ as _sfc_main$9 } from "./LegendSwatch-BhRjrtzv.js";
7
- import { _ as _sfc_main$4 } from "./LpContextMenu-COwOwRgI.js";
7
+ import { _ as _sfc_main$4 } from "./LpContextMenu-Cj96ENDC.js";
8
8
  import { _ as _sfc_main$3 } from "./LpEmptyState-KTKipws2.js";
9
9
  import { _ as _sfc_main$6 } from "./LpNumberFlow-Cfyh033Q.js";
10
- import { _ as _sfc_main$7 } from "./LpRollingText-DB7upf-5.js";
10
+ import { _ as _sfc_main$7 } from "./LpRollingText-DiL717LK.js";
11
11
  import { _ as _sfc_main$8 } from "./LpShift-DXNsauQZ.js";
12
12
  import { _ as _sfc_main$2 } from "./LpSkeleton-BB6XIV-w.js";
13
13
  import { _ as _sfc_main$1 } from "./LpSwap-DzE6M3Mg.js";
@@ -5,9 +5,9 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { useNow } from "../composables/useNow.js";
6
6
  import { _ as _sfc_main$6 } from "./LpCollapse-CWS9M_lm.js";
7
7
  import { _ as _sfc_main$5 } from "./LpIcon-HJP5xMz4.js";
8
- import { _ as _sfc_main$4 } from "./LpRollingText-DB7upf-5.js";
8
+ import { _ as _sfc_main$4 } from "./LpRollingText-DiL717LK.js";
9
9
  import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
10
- import { _ as _sfc_main$1 } from "./LpStepMark-DK-5BKAt.js";
10
+ import { _ as _sfc_main$1 } from "./LpStepMark-TrzOioa9.js";
11
11
  import { _ as _sfc_main$7 } from "./LpTooltip-Cz8SQwRt.js";
12
12
  import { _ as _sfc_main$2 } from "./StepConnector-37OgEOXA.js";
13
13
  import { stepKey, connectorFilled, currentStepIndex, stepElapsed, childProgress } from "../components/pipeline.js";
@@ -1,9 +1,10 @@
1
- import { defineComponent, useModel, computed, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, normalizeClass, mergeModels } from "vue";
1
+ import { defineComponent, useModel, computed, openBlock, createBlock, unref, withCtx, createVNode, renderSlot, mergeProps, mergeModels } from "vue";
2
2
  import { PopoverRoot, PopoverTrigger, PopoverPortal, PopoverContent } from "reka-ui";
3
3
  import { mergeClass } from "../composables/useMergedClass.js";
4
4
  import { POPOVER_PANEL } from "../components/dropdown.js";
5
5
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
7
+ ...{ inheritAttrs: false },
7
8
  __name: "LpPopover",
8
9
  props: /* @__PURE__ */ mergeModels({
9
10
  side: { default: "bottom" },
@@ -38,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
38
39
  }),
39
40
  createVNode(unref(PopoverPortal), { to: unref(portalTo) }, {
40
41
  default: withCtx(() => [
41
- createVNode(unref(PopoverContent), {
42
+ createVNode(unref(PopoverContent), mergeProps(_ctx.$attrs, {
42
43
  onInteractOutside: unref(guardOutside),
43
44
  onEscapeKeyDown: unref(guardOutside),
44
45
  "collision-padding": 8,
@@ -46,13 +47,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
46
47
  align: __props.align,
47
48
  "side-offset": __props.sideOffset,
48
49
  "aria-label": __props.ariaLabel,
49
- class: normalizeClass(panel.value)
50
- }, {
50
+ class: panel.value
51
+ }), {
51
52
  default: withCtx(() => [
52
53
  renderSlot(_ctx.$slots, "default")
53
54
  ]),
54
55
  _: 3
55
- }, 8, ["onInteractOutside", "onEscapeKeyDown", "side", "align", "side-offset", "aria-label", "class"])
56
+ }, 16, ["onInteractOutside", "onEscapeKeyDown", "side", "align", "side-offset", "aria-label", "class"])
56
57
  ]),
57
58
  _: 3
58
59
  }, 8, ["to"])
@@ -5,7 +5,7 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
5
5
  import { useRevealedValue } from "../composables/useRevealedValue.js";
6
6
  import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
7
7
  import { _ as _sfc_main$1 } from "./LpNumberFlow-Cfyh033Q.js";
8
- import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
8
+ import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
9
9
  import { METER_HEADER, METER_TRACK } from "../components/meter.js";
10
10
  import { quotaState, quotaSegments, formatAmount } from "../components/quota.js";
11
11
  import { toneLook } from "../components/tone.js";
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createBlock, withCtx, createEleme
2
2
  import { useLocale } from "../composables/useLocale.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useNow } from "../composables/useNow.js";
5
- import { _ as _sfc_main$2 } from "./LpRollingText-DB7upf-5.js";
5
+ import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
6
6
  import { _ as _sfc_main$1 } from "./LpTooltip-Cz8SQwRt.js";
7
7
  import { formatRelativeTime } from "../components/relativeTime.js";
8
8
  import { toEpoch } from "../components/timeSpan.js";