@leavepulse/ui 0.24.0 → 0.24.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.
@@ -3,7 +3,7 @@ import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
4
  import { _ as _sfc_main$5 } from "./LpScrollArea-D8xyKXcF.js";
5
5
  import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
6
- import { _ as _sfc_main$1 } from "./LpSidebar-D3GGLSE7.js";
6
+ import { _ as _sfc_main$1 } from "./LpSidebar-7Vpy2IJc.js";
7
7
  const _hoisted_1 = { class: "flex h-dvh overflow-hidden bg-surface text-ink" };
8
8
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
9
9
  const _hoisted_3 = { class: "flex h-16 shrink-0 items-center gap-3 border-b border-line bg-surface px-4 md:px-6" };
@@ -212,7 +212,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
212
212
  }), 128)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
213
213
  createElementVNode("button", {
214
214
  type: "button",
215
- class: "lp-fold-toggle flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-left text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring",
215
+ class: "lp-fold-toggle flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-left text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
216
216
  "aria-expanded": openState[seg.id],
217
217
  onClick: ($event) => toggleFold(seg.id)
218
218
  }, [
@@ -36,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
36
36
  "onUpdate:open": onToggle
37
37
  }, {
38
38
  default: withCtx(() => [
39
- createVNode(unref(CollapsibleTrigger), { class: "group flex w-full items-center gap-2 px-3 py-2.5 text-sm font-semibold text-ink outline-none focus-visible:ring-2 focus-visible:ring-ring" }, {
39
+ createVNode(unref(CollapsibleTrigger), { class: "group flex w-full items-center gap-2 px-3 py-2.5 text-sm font-semibold text-ink outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring" }, {
40
40
  default: withCtx(() => [
41
41
  __props.icon ? (openBlock(), createBlock(_sfc_main$1, {
42
42
  key: 0,
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, watch, computed, openBlock, createElementBlock, Fragment, renderList, normalizeStyle, createBlock, createVNode, withCtx, createElementVNode, renderSlot, mergeProps, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, createCommentVNode } from "vue";
2
2
  import { computeStats, formatSize, sortNodes, subtreeIds, ancestorIds } from "../components/fileTree.js";
3
3
  import { _ as _sfc_main$1 } from "./LpEmptyState-BV3q7Qyi.js";
4
- import { _ as _sfc_main$3 } from "./LpFileTreeNode-D7WgUPcJ.js";
4
+ import { _ as _sfc_main$3 } from "./LpFileTreeNode-BEZIvxHi.js";
5
5
  import { _ as _sfc_main$2 } from "./LpScrollArea-D8xyKXcF.js";
6
6
  const _hoisted_1 = {
7
7
  key: 0,
@@ -127,7 +127,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
127
127
  createElementVNode("div", {
128
128
  "data-node-id": __props.node.id,
129
129
  tabindex: isFocused.value ? 0 : -1,
130
- class: normalizeClass(["group/row relative flex min-w-0 cursor-pointer select-none items-center gap-1.5 rounded-control py-1 pr-2 text-sm outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring", [
130
+ class: normalizeClass(["group/row relative flex min-w-0 cursor-pointer select-none items-center gap-1.5 rounded-control py-1 pr-2 text-sm outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring", [
131
131
  __props.node.disabled ? "cursor-not-allowed text-muted/50" : isSelected.value ? "bg-brand-soft text-ink" : "text-muted hover:bg-surface-soft hover:text-ink"
132
132
  ]]),
133
133
  style: normalizeStyle({ paddingLeft: `${__props.depth * 14 + 6}px` }),
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, normalizeClass, renderSlot, createCommentVNode, createVNode, createSlots, withCtx, normalizeProps, guardReactiveProps, createBlock } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpDrawer-DAJN5rGK.js";
3
- import { _ as _sfc_main$1 } from "./LpSidebarNav-X14xMdPa.js";
3
+ import { _ as _sfc_main$1 } from "./LpSidebarNav-CFX5NxGs.js";
4
4
  const _hoisted_1 = {
5
5
  key: 1,
6
6
  class: "mt-2 flex shrink-0 flex-col gap-2"
@@ -74,7 +74,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
74
74
  disabled: item.href ? void 0 : item.disabled,
75
75
  "aria-current": __props.itemActive(item) ? "page" : void 0,
76
76
  "aria-disabled": item.disabled || void 0,
77
- class: normalizeClass(["group/item relative flex items-center gap-3 rounded-control px-3 py-2 text-sm font-medium outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring", item.disabled ? "cursor-not-allowed text-muted/50" : __props.itemActive(item) ? "text-ink" : "text-muted hover:text-ink"]),
77
+ class: normalizeClass(["group/item relative flex items-center gap-3 rounded-control px-3 py-2 text-sm font-medium outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring", item.disabled ? "cursor-not-allowed text-muted/50" : __props.itemActive(item) ? "text-ink" : "text-muted hover:text-ink"]),
78
78
  onClick: ($event) => emit("activate", item)
79
79
  }, {
80
80
  default: withCtx(() => [
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-CaQYQKZV.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-B5k0J3Cf.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCodeBlock-CSiOSPs8.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCodeBlock-rS_6mO3D.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDisclosure-DP6yfgfM.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDisclosure-BnwP4Q-b.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTree-nU1wRRxZ.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTree-H7Ho8uoq.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTreeNode-D7WgUPcJ.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTreeNode-BEZIvxHi.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-D3GGLSE7.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-7Vpy2IJc.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-X14xMdPa.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-CFX5NxGs.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { _ as _2 } from "./chunks/LpAddressInput-BTqnUXZG.js";
3
3
  import { _ as _3 } from "./chunks/LpMapPicker-DFKrd1Ne.js";
4
4
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
5
5
  import { _ as _4 } from "./chunks/LpAlert-BAYHDSS1.js";
6
- import { _ as _5 } from "./chunks/LpAppShell-CaQYQKZV.js";
6
+ import { _ as _5 } from "./chunks/LpAppShell-B5k0J3Cf.js";
7
7
  import { _ as _6 } from "./chunks/LpAutocomplete-DExlIZe_.js";
8
8
  import { _ as _7 } from "./chunks/LpAvatar-CzCE5cXg.js";
9
9
  import { _ as _8 } from "./chunks/LpBadge-BPodVcJa.js";
@@ -12,17 +12,17 @@ import { _ as _10 } from "./chunks/LpButton-5VXXCjwF.js";
12
12
  import { _ as _11 } from "./chunks/LpCalendar-B7ZL0ty3.js";
13
13
  import { _ as _12 } from "./chunks/LpCard-BmrTvWOe.js";
14
14
  import { _ as _13 } from "./chunks/LpCheckbox-BO0zuuPh.js";
15
- import { _ as _14 } from "./chunks/LpCodeBlock-CSiOSPs8.js";
15
+ import { _ as _14 } from "./chunks/LpCodeBlock-rS_6mO3D.js";
16
16
  import { default as default2 } from "./components/LpCommandPalette.vue.js";
17
17
  import { _ as _15 } from "./chunks/LpConfirmDialog-CObRah9c.js";
18
18
  import { _ as _16 } from "./chunks/LpContextMenu-D0mzXqA7.js";
19
19
  import { _ as _17 } from "./chunks/LpDatePicker-dY2q4dr4.js";
20
- import { _ as _18 } from "./chunks/LpDisclosure-DP6yfgfM.js";
20
+ import { _ as _18 } from "./chunks/LpDisclosure-BnwP4Q-b.js";
21
21
  import { _ as _19 } from "./chunks/LpDivider-CUX46KR0.js";
22
22
  import { _ as _20 } from "./chunks/LpDrawer-DAJN5rGK.js";
23
23
  import { _ as _21 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
24
24
  import { _ as _22 } from "./chunks/LpEmptyState-BV3q7Qyi.js";
25
- import { _ as _23 } from "./chunks/LpFileTree-nU1wRRxZ.js";
25
+ import { _ as _23 } from "./chunks/LpFileTree-H7Ho8uoq.js";
26
26
  import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
27
27
  import { _ as _24 } from "./chunks/LpFormField-CesaPWPO.js";
28
28
  import { _ as _25 } from "./chunks/LpIcon-CCnX5_2j.js";
@@ -50,7 +50,7 @@ import { _ as _44 } from "./chunks/LpSelect-Cw8-gL5F.js";
50
50
  import { _ as _45 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
51
51
  import { _ as _46 } from "./chunks/LpShift-DXNsauQZ.js";
52
52
  import { default as default3 } from "./components/LpShortcutsDialog.vue.js";
53
- import { _ as _47 } from "./chunks/LpSidebar-D3GGLSE7.js";
53
+ import { _ as _47 } from "./chunks/LpSidebar-7Vpy2IJc.js";
54
54
  import { _ as _48 } from "./chunks/LpSkeleton-eSFIo4kD.js";
55
55
  import { _ as _49 } from "./chunks/LpSlider-B1SF3pRV.js";
56
56
  import { _ as _50 } from "./chunks/LpStat-CdbEFOvn.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.24.0",
3
+ "version": "0.24.1",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -268,7 +268,7 @@ function onInput(e: Event) {
268
268
  v-else
269
269
  ><button
270
270
  type="button"
271
- class="lp-fold-toggle flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-left text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink focus-visible:ring-2 focus-visible:ring-ring"
271
+ class="lp-fold-toggle flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-left text-muted outline-none transition-colors duration-[var(--duration-fast)] hover:text-ink focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"
272
272
  :aria-expanded="openState[seg.id]"
273
273
  @click="toggleFold(seg.id)"
274
274
  ><LpIcon
@@ -61,7 +61,7 @@ function onToggle(value: boolean) {
61
61
  @update:open="onToggle"
62
62
  >
63
63
  <CollapsibleTrigger
64
- class="group flex w-full items-center gap-2 px-3 py-2.5 text-sm font-semibold text-ink outline-none focus-visible:ring-2 focus-visible:ring-ring"
64
+ class="group flex w-full items-center gap-2 px-3 py-2.5 text-sm font-semibold text-ink outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"
65
65
  >
66
66
  <LpIcon v-if="icon" :name="icon" :size="14" class="text-muted" />
67
67
  <span class="min-w-0 flex-1 text-left">
@@ -163,10 +163,13 @@ function onActivate() {
163
163
  >
164
164
  <!-- Passthrough when the node has no menu, so the row keeps the native one. -->
165
165
  <LpContextMenu :items="node.menu ?? []">
166
+ <!-- The ring is drawn inset, like LpTable's rows: a row spans the full
167
+ width of the branch, and a branch clips its overflow to animate its
168
+ height, so an outset ring loses its left and right edge. -->
166
169
  <div
167
170
  :data-node-id="node.id"
168
171
  :tabindex="isFocused ? 0 : -1"
169
- class="group/row relative flex min-w-0 cursor-pointer select-none items-center gap-1.5 rounded-control py-1 pr-2 text-sm outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring"
172
+ class="group/row relative flex min-w-0 cursor-pointer select-none items-center gap-1.5 rounded-control py-1 pr-2 text-sm outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"
170
173
  :class="[
171
174
  node.disabled
172
175
  ? 'cursor-not-allowed text-muted/50'
@@ -78,7 +78,7 @@ const pillTransition = usePillTransition()
78
78
  :disabled="item.href ? undefined : item.disabled"
79
79
  :aria-current="itemActive(item) ? 'page' : undefined"
80
80
  :aria-disabled="item.disabled || undefined"
81
- class="group/item relative flex items-center gap-3 rounded-control px-3 py-2 text-sm font-medium outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring"
81
+ class="group/item relative flex items-center gap-3 rounded-control px-3 py-2 text-sm font-medium outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"
82
82
  :class="item.disabled
83
83
  ? 'cursor-not-allowed text-muted/50'
84
84
  : itemActive(item)