@sentropic/design-system-vue 0.36.57 → 0.36.59

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.
@@ -0,0 +1,437 @@
1
+ import { computed, defineComponent, h, onBeforeUnmount, onMounted, provide, ref, watch, } from "vue";
2
+ import { classNames } from "./classNames.js";
3
+ /**
4
+ * Bound ratified by the chat consumer lane: beyond 4 sections, stacking
5
+ * collapsible regions in a pane capped at 640px makes scrolling unmanageable
6
+ * and the single-owner rule becomes untenable. Enforced as a dev-time
7
+ * `console.warn` in `register()` (this package's established convention —
8
+ * see NavActionStack/WaterfallChart — is to warn and degrade, never throw or
9
+ * silently truncate); exported here so the bound is also visible through
10
+ * types/docs to a consumer reading `PanelStackProps`.
11
+ */
12
+ export const PANEL_STACK_MAX_SECTIONS = 4;
13
+ // At most PANEL_STACK_MAX_SECTIONS `PanelSection` children (default slot)
14
+ // are supported — see that constant's doc comment for why.
15
+ /**
16
+ * Context contract shared with PanelSection. Every shape-dependent branch
17
+ * (sticky-item vs split-primary) is decided HERE and only here — PanelSection
18
+ * never reads `shape`, it only calls these four functions/callback. If the
19
+ * consumer-lane contract for these two shapes changes, this is the one place
20
+ * to touch.
21
+ */
22
+ export const PANEL_STACK_KEY = Symbol("st-panel-stack");
23
+ // Same registration technique as SelectableList/SelectableRow: a section
24
+ // registers its root element on mount and unregisters on destroy; the
25
+ // ordered view is derived lazily via `compareDocumentPosition` rather than
26
+ // sorted eagerly on every register, so "first registered" fallbacks always
27
+ // mean "first in DOM order", not "first mounted".
28
+ function sortByDom(list) {
29
+ return [...list].sort((a, b) => {
30
+ const pos = a.el.compareDocumentPosition(b.el);
31
+ if (pos & Node.DOCUMENT_POSITION_FOLLOWING)
32
+ return -1;
33
+ if (pos & Node.DOCUMENT_POSITION_PRECEDING)
34
+ return 1;
35
+ return 0;
36
+ });
37
+ }
38
+ // Default for the `primaryMinHeight` prop. The prop — not this constant — is
39
+ // the single source of truth for BOTH the JS auto-collapse threshold below
40
+ // AND the CSS floor: `setup()` emits it as an inline
41
+ // `--st-component-panelStack-primaryMinBlockSize` custom property on the
42
+ // stack root, and styles.css's `.st-panelSection__body--scrollOwner` rule
43
+ // consumes that same variable (with a literal `160px` fallback matching this
44
+ // constant, for the rare case the inline style hasn't landed). This constant
45
+ // only supplies the default VALUE when the prop is omitted; it is never read
46
+ // via getComputedStyle (jsdom, this package's test environment, does not
47
+ // reliably resolve CSS custom properties in computed style).
48
+ export const PRIMARY_MIN_BLOCK_SIZE_PX = 160;
49
+ /**
50
+ * Stacks several PanelSection children inside ONE panel so a docked chat can
51
+ * share a pane with other content. The invariant is the whole point: exactly
52
+ * one element in the stack has `overflow: auto` at any moment, and the stack
53
+ * itself NEVER scrolls — see PanelStack.svelte (the frozen reference this
54
+ * component mirrors) and styles.css's `.st-panelStack` rule.
55
+ */
56
+ export const PanelStack = defineComponent({
57
+ name: "PanelStack",
58
+ props: {
59
+ shape: { type: String, default: "sticky-item" },
60
+ label: { type: String, default: undefined },
61
+ expanded: { type: String, default: undefined },
62
+ defaultExpanded: { type: String, default: null },
63
+ onExpandedChange: {
64
+ type: Function,
65
+ default: undefined,
66
+ },
67
+ primary: { type: String, default: undefined },
68
+ primaryMinHeight: { type: Number, default: undefined },
69
+ class: { type: String, default: undefined },
70
+ },
71
+ emits: {
72
+ expandedChange: (_id) => true,
73
+ },
74
+ setup(props, { slots, attrs, emit }) {
75
+ // --- Mount-order registry -------------------------------------------
76
+ const entries = ref([]);
77
+ const orderedEntries = computed(() => sortByDom(entries.value));
78
+ const firstId = computed(() => orderedEntries.value[0]?.id ?? null);
79
+ // Independent open/closed state for split-primary's NON-primary
80
+ // sections. Always uncontrolled — the API exposes no prop for it, only
81
+ // `primary` is stable for that shape.
82
+ const openSecondary = ref(new Set());
83
+ // --- Auto-collapse (split-primary only) bookkeeping ------------------
84
+ const stackEl = ref(null);
85
+ const stackHeight = ref(0);
86
+ const primaryHeaderHeight = ref(0);
87
+ /** Latest observed ROOT (header+current body) height per registered id. */
88
+ const rootHeights = ref(new Map());
89
+ /** Secondaries force-collapsed by the algorithm despite `openSecondary`
90
+ * wanting them open — distinct from the user's own intent so an
91
+ * explicit re-open (toggle) can always clear it. */
92
+ const autoCollapsed = ref(new Set());
93
+ /** MRU order (oldest first) of ids the user explicitly opened. Drives
94
+ * "collapse the LEAST recently expanded secondary first" — the
95
+ * algorithm never touches this list itself, only `toggle()` does, so a
96
+ * user re-open always makes that section the last one considered for
97
+ * collapse again. */
98
+ const expansionOrder = ref([]);
99
+ // The `primaryMinHeight` prop is the single source of truth for the JS
100
+ // threshold below AND (via the inline style set on the root, in the
101
+ // render function) the CSS floor — see PRIMARY_MIN_BLOCK_SIZE_PX's doc
102
+ // comment.
103
+ const effectivePrimaryMinHeight = computed(() => props.primaryMinHeight ?? PRIMARY_MIN_BLOCK_SIZE_PX);
104
+ let resizeObserver = null;
105
+ let observedPrimaryHeaderEl = null;
106
+ function ensureResizeObserver() {
107
+ if (resizeObserver)
108
+ return resizeObserver;
109
+ // Guard: jsdom (this package's test environment) and some SSR/older
110
+ // environments have no ResizeObserver at all. Auto-collapse simply
111
+ // never engages there — `stackHeight` stays 0, the decision watcher
112
+ // below is a permanent no-op — rather than throwing.
113
+ if (typeof ResizeObserver === "undefined")
114
+ return null;
115
+ resizeObserver = new ResizeObserver((observedEntries) => {
116
+ for (const entry of observedEntries) {
117
+ const height = entry.contentRect.height;
118
+ if (entry.target === stackEl.value) {
119
+ stackHeight.value = height;
120
+ }
121
+ else if (entry.target === observedPrimaryHeaderEl) {
122
+ primaryHeaderHeight.value = height;
123
+ }
124
+ else {
125
+ const found = entries.value.find((e) => e.el === entry.target);
126
+ if (found) {
127
+ const next = new Map(rootHeights.value);
128
+ next.set(found.id, height);
129
+ rootHeights.value = next;
130
+ }
131
+ }
132
+ }
133
+ });
134
+ return resizeObserver;
135
+ }
136
+ function register(id, el, headerEl) {
137
+ entries.value = [...entries.value.filter((e) => e.el !== el), { id, el, headerEl }];
138
+ // Dev-time visibility only — see PANEL_STACK_MAX_SECTIONS' doc comment.
139
+ // Never truncated/hidden: every registered section still renders and
140
+ // participates normally, this is a nudge, not an enforcement mechanism.
141
+ if (entries.value.length > PANEL_STACK_MAX_SECTIONS) {
142
+ console.warn(`[PanelStack] ${entries.value.length} sections registered — the stack is designed for at most ${PANEL_STACK_MAX_SECTIONS}. Beyond that, stacked collapsible regions in a capped pane become unmanageable to scroll and the single-scroll-owner contract gets hard to reason about. Consider splitting into multiple panes.`);
143
+ }
144
+ const observer = ensureResizeObserver();
145
+ observer?.observe(el);
146
+ return () => {
147
+ observer?.unobserve(el);
148
+ entries.value = entries.value.filter((e) => e.el !== el);
149
+ // Drop any stale open/closed/measurement record for a section that no
150
+ // longer exists, so a LATER section re-registered under the same id
151
+ // doesn't silently inherit a dead instance's state.
152
+ if (openSecondary.value.has(id)) {
153
+ const next = new Set(openSecondary.value);
154
+ next.delete(id);
155
+ openSecondary.value = next;
156
+ }
157
+ if (autoCollapsed.value.has(id)) {
158
+ const next = new Set(autoCollapsed.value);
159
+ next.delete(id);
160
+ autoCollapsed.value = next;
161
+ }
162
+ if (expansionOrder.value.includes(id)) {
163
+ expansionOrder.value = expansionOrder.value.filter((x) => x !== id);
164
+ }
165
+ if (rootHeights.value.has(id)) {
166
+ const next = new Map(rootHeights.value);
167
+ next.delete(id);
168
+ rootHeights.value = next;
169
+ }
170
+ };
171
+ }
172
+ // Controlled vs uncontrolled `expanded` — same dual-prop idiom as
173
+ // SelectableList's `value`/`internal` (controlled whenever the prop is
174
+ // passed at all, including explicit `null`). `internalExpanded` is the
175
+ // raw seed / last explicit choice, set ONCE from `defaultExpanded` at
176
+ // setup time — same idiom as RangeSlider's `defaultValue`, never re-synced
177
+ // to a later prop change.
178
+ const controlled = computed(() => props.expanded !== undefined);
179
+ const internalExpanded = ref(props.defaultExpanded ?? null);
180
+ const effectiveExpandedId = computed(() => {
181
+ if (controlled.value)
182
+ return props.expanded ?? null;
183
+ if (internalExpanded.value !== null && entries.value.some((e) => e.id === internalExpanded.value)) {
184
+ return internalExpanded.value;
185
+ }
186
+ return firstId.value;
187
+ });
188
+ // sticky-item's resolved expanded/scroll-owner id — a SINGLE value, used
189
+ // by BOTH `isExpanded` and `isScrollOwner` below, because in this shape
190
+ // "expanded" and "scroll owner" are the same thing by definition:
191
+ // exactly one section is expanded and it owns the scroll. Reporting them
192
+ // from two different values (the raw controlled prop for one, a healed
193
+ // fallback for the other) would let a section render as the visible,
194
+ // scrolling `--scrollOwner` while its own trigger claims
195
+ // `aria-expanded="false"` — a real defect (a screen reader announcing
196
+ // "collapsed" for content that is on screen and scrolling), not a
197
+ // faithful reflection of the controlled contract. "Never override a
198
+ // controlled value" means never WRITING `props.expanded` and never
199
+ // firing `expandedChange` on the consumer's behalf — both still hold
200
+ // here — it does not mean this derived, read-only rendering decision has
201
+ // to reproduce an invalid raw value verbatim.
202
+ //
203
+ // Deliberately NOT always equal to `effectiveExpandedId`, though the two
204
+ // coincide in every normal case (uncontrolled, controlled-valid,
205
+ // controlled-null) — they diverge only for the one case below:
206
+ // - `expanded === null`: an explicit, deliberate "everything
207
+ // collapsed". Honored as-is — zero scroll owners is correct here,
208
+ // because there is no expanded content to be unreachable.
209
+ // - `expanded` a non-null id matching NO registered section: a
210
+ // mistake, not an intent — the consumer meant to expand a real
211
+ // section and silently got none. Heals to the first registered
212
+ // section, same fallback `effectiveExpandedId` itself already uses
213
+ // for the uncontrolled case, and that section is reported as
214
+ // expanded consistently with it actually being the scroll owner.
215
+ const stickyScrollOwnerId = computed(() => {
216
+ const id = effectiveExpandedId.value;
217
+ if (id === null)
218
+ return null;
219
+ if (entries.value.some((e) => e.id === id))
220
+ return id;
221
+ return firstId.value;
222
+ });
223
+ // Dev-time visibility for the "mistake" case above — same convention as
224
+ // PANEL_STACK_MAX_SECTIONS: warn, never throw, never silently rewrite the
225
+ // consumer's own controlled prop. Scoped to sticky-item (the only shape
226
+ // `expanded` drives). Warns AT MOST ONCE per component instance lifetime
227
+ // — not once per distinct invalid value, and the guard is never reset —
228
+ // so a consumer that never fixes the misconfiguration isn't spammed
229
+ // every time `entries` happens to change (e.g. a dynamic section
230
+ // list) or the invalid id itself changes.
231
+ let hasWarnedInvalidExpanded = false;
232
+ watch([() => props.expanded, entries, () => props.shape], () => {
233
+ if (hasWarnedInvalidExpanded)
234
+ return;
235
+ if (props.shape === "split-primary")
236
+ return;
237
+ if (!controlled.value)
238
+ return;
239
+ const id = props.expanded ?? null;
240
+ if (id === null)
241
+ return; // deliberate "everything collapsed" — not a misconfiguration.
242
+ if (entries.value.some((e) => e.id === id))
243
+ return; // valid — nothing to warn about.
244
+ hasWarnedInvalidExpanded = true;
245
+ console.warn(`[PanelStack] expanded="${id}" does not match any registered section. The controlled value is left untouched — it is never overridden — but the stack still needs exactly one scroll owner, so the first registered section is used as a fallback scroll owner. Pass a valid section id, or null, to silence this.`);
246
+ });
247
+ // split-primary: the section matching `primary`, or — if `primary` is
248
+ // unset or matches no registered section (a misconfiguration) — the
249
+ // first EXPANDED section in DOM order, or — if nothing is expanded
250
+ // either — the first registered section, so the stack still never
251
+ // degrades to zero scroll owners.
252
+ const effectivePrimary = computed(() => {
253
+ if (props.shape !== "split-primary")
254
+ return null;
255
+ if (props.primary !== undefined && entries.value.some((e) => e.id === props.primary)) {
256
+ return props.primary;
257
+ }
258
+ const firstExpandedId = orderedEntries.value.find((e) => openSecondary.value.has(e.id))?.id;
259
+ if (firstExpandedId !== undefined)
260
+ return firstExpandedId;
261
+ return firstId.value;
262
+ });
263
+ // Observe the stack root's own block size for the auto-collapse budget.
264
+ onMounted(() => {
265
+ const observer = ensureResizeObserver();
266
+ if (observer && stackEl.value)
267
+ observer.observe(stackEl.value);
268
+ });
269
+ onBeforeUnmount(() => {
270
+ resizeObserver?.disconnect();
271
+ });
272
+ // Retarget the header observer whenever the primary changes (designation,
273
+ // fallback resolution, or a section unmounting). `watch` with an explicit
274
+ // source list — rather than `watchEffect` — means reads inside the
275
+ // callback body (none here besides the sources themselves) never become
276
+ // extra dependencies; there is nothing reactive written here besides the
277
+ // plain `observedPrimaryHeaderEl` closure variable.
278
+ watch([effectivePrimary, entries], () => {
279
+ const primaryId = effectivePrimary.value;
280
+ const nextHeaderEl = primaryId
281
+ ? (entries.value.find((e) => e.id === primaryId)?.headerEl ?? null)
282
+ : null;
283
+ const observer = ensureResizeObserver();
284
+ if (!observer) {
285
+ observedPrimaryHeaderEl = nextHeaderEl;
286
+ return;
287
+ }
288
+ if (observedPrimaryHeaderEl && observedPrimaryHeaderEl !== nextHeaderEl) {
289
+ observer.unobserve(observedPrimaryHeaderEl);
290
+ }
291
+ if (nextHeaderEl && nextHeaderEl !== observedPrimaryHeaderEl) {
292
+ observer.observe(nextHeaderEl);
293
+ }
294
+ observedPrimaryHeaderEl = nextHeaderEl;
295
+ }, { immediate: true });
296
+ // THE decision. Re-evaluates only when a REAL measurement changes
297
+ // (stackHeight / primaryHeaderHeight / rootHeights / entries) or the
298
+ // primary itself changes — `openSecondary` / `autoCollapsed` /
299
+ // `expansionOrder` are read INSIDE the callback body, never listed as a
300
+ // `watch` source, so this watcher's own write to `autoCollapsed` below
301
+ // can never re-trigger itself with stale (pre-layout) measurements: in
302
+ // Vue, unlike `watchEffect`, a `watch(sources, cb)` callback body is not
303
+ // a tracking scope — only the explicit `sources` array establishes
304
+ // dependencies. That is what guarantees convergence: each pass collapses
305
+ // at most one NEW secondary, using measurements that are always either
306
+ // accurate (untouched by this pass) or correctly reflect an EARLIER pass
307
+ // once the observer catches up — never a same-tick avalanche.
308
+ // `autoCollapsed` only ever grows here; it only shrinks via an explicit
309
+ // user `toggle()`, so no id can be added and removed in a loop by this
310
+ // watcher alone, and the candidate pool is bounded by the section count
311
+ // (≤ PANEL_STACK_MAX_SECTIONS - 1 secondaries) — so it always reaches a
312
+ // fixed point in a bounded number of measurement-driven passes.
313
+ watch([
314
+ stackHeight,
315
+ primaryHeaderHeight,
316
+ rootHeights,
317
+ entries,
318
+ effectivePrimary,
319
+ () => props.shape,
320
+ effectivePrimaryMinHeight,
321
+ ], () => {
322
+ if (props.shape !== "split-primary")
323
+ return;
324
+ const primaryId = effectivePrimary.value;
325
+ if (primaryId === null)
326
+ return;
327
+ if (stackHeight.value === 0)
328
+ return; // not measured yet — nothing to decide.
329
+ let secondaryTotal = 0;
330
+ for (const e of entries.value) {
331
+ if (e.id === primaryId)
332
+ continue;
333
+ secondaryTotal += rootHeights.value.get(e.id) ?? 0;
334
+ }
335
+ const available = stackHeight.value - primaryHeaderHeight.value - secondaryTotal;
336
+ if (available >= effectivePrimaryMinHeight.value)
337
+ return;
338
+ const candidate = expansionOrder.value.find((id) => id !== primaryId && openSecondary.value.has(id) && !autoCollapsed.value.has(id));
339
+ if (candidate === undefined)
340
+ return; // nothing left to collapse — degenerate case, do no more.
341
+ autoCollapsed.value = new Set(autoCollapsed.value).add(candidate);
342
+ });
343
+ function setExpanded(id) {
344
+ if (!controlled.value)
345
+ internalExpanded.value = id;
346
+ // `emit` already routes to the `onExpandedChange` prop/listener — do
347
+ // NOT also call `props.onExpandedChange?.(id)` here, or a consumer
348
+ // wired through the prop would be notified twice.
349
+ emit("expandedChange", id);
350
+ }
351
+ function isPrimary(id) {
352
+ return props.shape === "split-primary" && id === effectivePrimary.value;
353
+ }
354
+ function isExpanded(id) {
355
+ if (props.shape === "split-primary") {
356
+ if (id === effectivePrimary.value)
357
+ return true;
358
+ return openSecondary.value.has(id) && !autoCollapsed.value.has(id);
359
+ }
360
+ // sticky-item: expanded and scroll owner are the same thing by
361
+ // definition — exactly one section is expanded and it owns the
362
+ // scroll — so this MUST resolve from `stickyScrollOwnerId`, not the
363
+ // raw `effectiveExpandedId`. They already coincide in every normal
364
+ // case (uncontrolled, controlled-valid, controlled-null); the only
365
+ // case where they'd diverge is a controlled `expanded` pointing at a
366
+ // non-existent id, and reporting that section's raw (unmatched) value
367
+ // here would render an `aria-expanded="false"` trigger on a body that
368
+ // is visibly, scrollably on screen (`--scrollOwner`) — content a
369
+ // screen reader would announce as collapsed while sighted users see
370
+ // it open. The controlled prop itself is still never written and
371
+ // `expandedChange` still never fires on its own; only what ARIA
372
+ // reports about the section that's ALREADY rendered as scroll owner
373
+ // changes.
374
+ return id === stickyScrollOwnerId.value;
375
+ }
376
+ function isScrollOwner(id) {
377
+ return props.shape === "split-primary" ? id === effectivePrimary.value : id === stickyScrollOwnerId.value;
378
+ }
379
+ function toggle(id) {
380
+ if (props.shape === "split-primary") {
381
+ if (id === effectivePrimary.value)
382
+ return; // primary has no disclosure button; guard anyway.
383
+ // Toggle acts on what's currently RENDERED (isExpanded), not the raw
384
+ // `openSecondary` flag, so a click on an auto-collapsed (visually
385
+ // closed) section always reads as "open it" to the user, never as a
386
+ // second, confusing "close" of a section they already see as closed.
387
+ if (isExpanded(id)) {
388
+ const next = new Set(openSecondary.value);
389
+ next.delete(id);
390
+ openSecondary.value = next;
391
+ expansionOrder.value = expansionOrder.value.filter((x) => x !== id);
392
+ }
393
+ else {
394
+ const next = new Set(openSecondary.value);
395
+ next.add(id);
396
+ openSecondary.value = next;
397
+ if (autoCollapsed.value.has(id)) {
398
+ const nextAuto = new Set(autoCollapsed.value);
399
+ nextAuto.delete(id);
400
+ autoCollapsed.value = nextAuto;
401
+ }
402
+ // Move to the most-recently-expanded end — an explicit re-open
403
+ // always makes this section the LAST one the algorithm would
404
+ // collapse again.
405
+ expansionOrder.value = [...expansionOrder.value.filter((x) => x !== id), id];
406
+ }
407
+ return;
408
+ }
409
+ // sticky-item: radio semantics — clicking the already-expanded header
410
+ // (including the first-section fallback) is a no-op, there is no
411
+ // "collapse to zero" gesture.
412
+ if (effectiveExpandedId.value === id)
413
+ return;
414
+ setExpanded(id);
415
+ }
416
+ provide(PANEL_STACK_KEY, {
417
+ isPrimary,
418
+ isExpanded,
419
+ isScrollOwner,
420
+ toggle,
421
+ register,
422
+ });
423
+ return () => h("div", {
424
+ ...attrs,
425
+ class: classNames("st-panelStack", props.class),
426
+ // Single source of truth for both the JS auto-collapse threshold
427
+ // (effectivePrimaryMinHeight, read above) and the CSS floor —
428
+ // styles.css's `.st-panelSection__body--scrollOwner` rule reads
429
+ // this same custom property, so the two can never drift apart.
430
+ style: { "--st-component-panelStack-primaryMinBlockSize": `${effectivePrimaryMinHeight.value}px` },
431
+ role: "group",
432
+ "aria-label": props.label,
433
+ ref: stackEl,
434
+ }, slots.default?.());
435
+ },
436
+ });
437
+ //# sourceMappingURL=PanelStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelStack.js","sourceRoot":"","sources":["../src/PanelStack.ts"],"names":[],"mappings":"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"}
package/dist/Popper.d.ts CHANGED
@@ -218,11 +218,11 @@ export declare const Popper: import("vue").DefineComponent<import("vue").Extract
218
218
  anchor: HTMLElement | null;
219
219
  flip: boolean;
220
220
  placement: PopperPlacement;
221
+ closeOnEscape: boolean;
221
222
  arrow: boolean;
222
223
  strategy: PopperStrategy;
223
224
  portal: boolean;
224
225
  onPlacementChange: (placement: PopperPlacement) => void;
225
226
  trapFocus: boolean;
226
- closeOnEscape: boolean;
227
227
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
228
228
  //# sourceMappingURL=Popper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../src/Popper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../src/Popper.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,QAAQ,EACd,MAAM,KAAK,CAAC;AAGb,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,yDAAyD;IACzD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG;IAC1D,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACpB,CAGA;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,eAAe,CAEnF;AASD,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAwD3D;AAaD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;;cAIG,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;;;;;;;;cAIjB,QAAQ,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;cAK1B,QAAQ,CAAC,cAAc,CAAC;;;;;;;;;;;;cAIhC,QAAQ,CAAC,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;;;;;;;;;;;;cAM9C,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;;;kCAKV,eAAe;;;cAxB3B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;;;;;;;;cAIjB,QAAQ,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;cAK1B,QAAQ,CAAC,cAAc,CAAC;;;;;;;;;;;;cAIhC,QAAQ,CAAC,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;;;;;;;;;;;;cAM9C,QAAQ,CAAC,MAAM,IAAI,CAAC;;;;;;;;;mBAAL,IAAI;;;;;;;;;mCANE,eAAe,KAAK,IAAI;;4EAsPnE,CAAC"}
@@ -101,7 +101,7 @@ export declare const RadioGroup: import("vue").DefineComponent<import("vue").Ext
101
101
  class: string;
102
102
  onChange: (value: string) => void;
103
103
  disabled: boolean;
104
- orientation: "horizontal" | "vertical";
104
+ orientation: "vertical" | "horizontal";
105
105
  value: string;
106
106
  helperText: string;
107
107
  options: RadioGroupOption[];
@@ -92,9 +92,9 @@ export declare const TreeView: import("vue").DefineComponent<import("vue").Extra
92
92
  class: string;
93
93
  label: string;
94
94
  selected: string;
95
+ defaultExpanded: string[];
95
96
  selectedId: string;
96
97
  expandedIds: string[];
97
98
  defaultExpandedIds: string[];
98
- defaultExpanded: string[];
99
99
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
100
100
  //# sourceMappingURL=TreeView.d.ts.map
package/dist/index.d.ts CHANGED
@@ -83,7 +83,7 @@ export type { SelectProps, SelectSize, SelectOption } from "./Select.js";
83
83
  export { SideNav } from "./SideNav.js";
84
84
  export type { SideNavProps, SideNavItem } from "./SideNav.js";
85
85
  export { AppShell } from "./AppShell.js";
86
- export type { AppShellPanelCollapse, AppShellProps, AppShellUtilityMode, AppShellUtilitySide, AppShellVariant } from "./AppShell.js";
86
+ export type { AppShellPanelCollapse, AppShellPanelKey, AppShellProps, AppShellUtilityMode, AppShellUtilitySide, AppShellVariant, } from "./AppShell.js";
87
87
  export { NavShell } from "./NavShell.js";
88
88
  export type { NavShellProps, NavShellSide, NavShellVariant } from "./NavShell.js";
89
89
  export { NavRail } from "./NavRail.js";
@@ -439,4 +439,8 @@ export { TimeRangePicker } from "./TimeRangePicker.js";
439
439
  export type { TimeRangePickerProps, TimeRangePickerSize, TimeRangePickerPlacement, TimeRangePickerAlign, TimeRangePickerTimeFormat, } from "./TimeRangePicker.js";
440
440
  export { DEFAULT_TIME_RANGE_PRESETS, parsePresetMs, resolveRelative, splitAbsolute, composeAbsolute, formatPresetLabel, formatTriggerLabel, } from "./timeRange.js";
441
441
  export type { TimeRange, TimeRangeMode, TimeRangePreset, AbsoluteDraft, AbsoluteSplit, } from "./timeRange.js";
442
+ export { PanelStack, PANEL_STACK_MAX_SECTIONS } from "./PanelStack.js";
443
+ export type { PanelStackShape, PanelStackProps } from "./PanelStack.js";
444
+ export { PanelSection } from "./PanelSection.js";
445
+ export type { PanelSectionProps } from "./PanelSection.js";
442
446
  //# sourceMappingURL=index.d.ts.map