@logicplanes/kaeso-ui 0.4.5 → 0.4.7

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 (56) hide show
  1. package/ai/component-guides.md +1 -1
  2. package/ai/component-registry.json +1 -1
  3. package/ai/component-registry.md +1 -1
  4. package/ai/icons.md +1 -1
  5. package/ai/tokens.md +1 -1
  6. package/dist/blocks/pages.js +2 -2
  7. package/dist/blocks/resource-list.js +1 -1
  8. package/dist/chunks/{app-frame-DysOel2X.js → app-frame-CfJ7s3Q0.js} +2 -2
  9. package/dist/chunks/{app-frame-DysOel2X.js.map → app-frame-CfJ7s3Q0.js.map} +1 -1
  10. package/dist/chunks/{core-CmK-8ObW.js → core-B0bULn-t.js} +9 -8
  11. package/dist/chunks/core-B0bULn-t.js.map +1 -0
  12. package/dist/chunks/data-table-z7z6DqMJ.js +602 -0
  13. package/dist/chunks/data-table-z7z6DqMJ.js.map +1 -0
  14. package/dist/chunks/{domain-obd_w9xk.js → domain-BsM9UmAg.js} +2 -2
  15. package/dist/chunks/{domain-obd_w9xk.js.map → domain-BsM9UmAg.js.map} +1 -1
  16. package/dist/chunks/{identity-3Foi5F8w.js → identity-BQoh-UpW.js} +7 -3
  17. package/dist/chunks/identity-BQoh-UpW.js.map +1 -0
  18. package/dist/chunks/{list-B4G-sWwV.js → list-CU_AoVY3.js} +115 -92
  19. package/dist/chunks/list-CU_AoVY3.js.map +1 -0
  20. package/dist/chunks/{page-header-kS5tdmvb.js → page-header-BQijP6Rp.js} +2 -2
  21. package/dist/chunks/{page-header-kS5tdmvb.js.map → page-header-BQijP6Rp.js.map} +1 -1
  22. package/dist/chunks/{theme-provider-DJhORMlc.js → theme-provider-BjXTggqM.js} +6 -2
  23. package/dist/chunks/theme-provider-BjXTggqM.js.map +1 -0
  24. package/dist/chunks/{timeseries-Ck-q0wWn.js → timeseries-nDviPxvQ.js} +3 -3
  25. package/dist/chunks/{timeseries-Ck-q0wWn.js.map → timeseries-nDviPxvQ.js.map} +1 -1
  26. package/dist/components/app-frame.js +1 -1
  27. package/dist/components/charts/bar.js +2 -2
  28. package/dist/components/charts/donut.js +1 -1
  29. package/dist/components/charts/gauge.js +1 -1
  30. package/dist/components/charts/heatmap.js +1 -1
  31. package/dist/components/charts/sankey.js +2 -2
  32. package/dist/components/charts/timeseries.js +1 -1
  33. package/dist/components/charts.js +2 -2
  34. package/dist/components/data-table.js +1 -1
  35. package/dist/components/kaeso/identity.js +1 -1
  36. package/dist/components/kaeso/usage.js +1 -1
  37. package/dist/components/kaeso.js +3 -3
  38. package/dist/components/kaeso.js.map +1 -1
  39. package/dist/components/list.js +1 -1
  40. package/dist/components/page-header.js +1 -1
  41. package/dist/components/playground.js +1 -1
  42. package/dist/components/theme-menu.js +1 -1
  43. package/dist/components/theme-select.js +1 -1
  44. package/dist/components/toast.js +40 -38
  45. package/dist/components/toast.js.map +1 -1
  46. package/dist/index.js +8 -8
  47. package/dist/kaeso.css +8 -0
  48. package/dist/styles.css +1 -1
  49. package/dist/theme.js +1 -1
  50. package/package.json +2 -2
  51. package/dist/chunks/core-CmK-8ObW.js.map +0 -1
  52. package/dist/chunks/data-table-CqY8_6IS.js +0 -581
  53. package/dist/chunks/data-table-CqY8_6IS.js.map +0 -1
  54. package/dist/chunks/identity-3Foi5F8w.js.map +0 -1
  55. package/dist/chunks/list-B4G-sWwV.js.map +0 -1
  56. package/dist/chunks/theme-provider-DJhORMlc.js.map +0 -1
@@ -62,16 +62,16 @@ var O = /* @__PURE__ */ o(() => import("./virtual-rows-CC_kc2PR.js"), { base: ()
62
62
  96: "w-96",
63
63
  120: "w-120"
64
64
  }, j = 520, M = "a[href], button, input, select, textarea, [tabindex], [contenteditable=true]", N = "input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]";
65
- function P(e) {
65
+ function ne(e) {
66
66
  for (let t of e.querySelectorAll("[role=row]")) {
67
67
  let e = t.querySelector("[data-index]");
68
68
  if (e) for (let n of t.querySelectorAll(M)) n !== e && n.getAttribute("tabindex") !== "-1" && n.setAttribute("tabindex", "-1");
69
69
  }
70
70
  }
71
- var F = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable: a, selected: o, onSelectedChange: c, idWidth: l, density: d = "default", wrapSubtitle: f = !1, virtualizeAbove: h = 100, selectionActions: _, selectionBar: w = !0, loading: T, empty: E, className: D, "aria-label": ee, "data-force-row": k }, A) {
72
- let te = n(), [F, ne] = x(/* @__PURE__ */ new Set()), I = o ?? F, B = g((e) => {
73
- o || ne(e), c?.(e);
74
- }, [o, c]), [V, oe] = x(() => new Set((r ?? []).filter((e) => e.defaultCollapsed).map((e) => e.id))), [H, U] = x(-1), [se, ce] = x(null), W = b(null), G = b(null), le = u(W), K = !!le && le < j, q = y(() => {
71
+ var P = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable: a, selected: o, onSelectedChange: c, idWidth: l, density: d = "default", wrapSubtitle: f = !1, virtualizeAbove: h = 100, selectionActions: _, selectionBar: w = !0, loading: T, empty: E, className: D, "aria-label": ee, "data-force-row": k }, A) {
72
+ let te = n(), [P, re] = x(/* @__PURE__ */ new Set()), F = o ?? P, z = g((e) => {
73
+ o || re(e), c?.(e);
74
+ }, [o, c]), [B, se] = x(() => new Set((r ?? []).filter((e) => e.defaultCollapsed).map((e) => e.id))), [V, H] = x(-1), [ce, le] = x(null), U = b(null), W = b(null), ue = u(U), G = !!ue && ue < j, K = y(() => {
75
75
  let e = (e) => e.flatMap((e) => [{
76
76
  kind: "row",
77
77
  item: e,
@@ -89,27 +89,40 @@ var F = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable:
89
89
  kind: "header",
90
90
  group: t,
91
91
  key: `h-${t.id}`
92
- }, ...V.has(t.id) ? [] : e(t.items)]) : e(t ?? []);
92
+ }, ...B.has(t.id) ? [] : e(t.items)]) : e(t ?? []);
93
93
  }, [
94
94
  t,
95
95
  r,
96
- V
97
- ]), ue = q.findIndex((e) => e.kind === "row"), de = r ? r.every((e) => e.items.length === 0) : (t ?? []).length === 0, J = q.length > h, fe = m(), pe = (e) => q[e]?.kind === "header" ? e === 0 ? 36 : 52 : K ? 64 : d === "compact" && !fe ? 36 : 44, [me, Y] = s(O, J), X = me?.VirtualRows, he = b(null);
98
- H >= q.length && U(-1);
99
- let Z = H >= 0 ? H : q.length ? 0 : -1, ge = (e) => {
100
- U(e), J && he.current?.(e);
101
- let t = () => W.current?.querySelector(`[data-index="${e}"]`), n = (e) => {
102
- e && (e.focus(), re(e, G.current));
96
+ B
97
+ ]), de = K.findIndex((e) => e.kind === "row"), fe = r ? r.every((e) => e.items.length === 0) : (t ?? []).length === 0, q = K.length > h, pe = m(), me = (e) => K[e]?.kind === "header" ? e === 0 ? 36 : 52 : G ? 64 : d === "compact" && !pe ? 36 : 44, [he, J] = s(O, q), Y = he?.VirtualRows, ge = b(null);
98
+ V >= K.length && H(-1);
99
+ let _e = V >= 0 ? V : K.length ? 0 : -1, X = (e) => {
100
+ H(e), q && ge.current?.(e);
101
+ let t = () => U.current?.querySelector(`[data-index="${e}"]`), n = (e) => {
102
+ e && (e.focus(), ie(e, W.current));
103
103
  }, r = t();
104
104
  r ? n(r) : requestAnimationFrame(() => n(t()));
105
- }, _e = b(!!X);
105
+ }, Z = b(null);
106
106
  v(() => {
107
- X && !_e.current && H >= 0 && document.activeElement === document.body && W.current?.querySelector(`[data-index="${H}"]`)?.focus(), _e.current = !!X;
107
+ let e = Z.current;
108
+ if (!e || K.some((t) => t.key === e.key) || (Z.current = null, !K.length)) return;
109
+ let t = Math.min(e.index, K.length - 1);
110
+ if (document.activeElement === document.body) return X(t);
111
+ let n = document.activeElement?.closest("[role=dialog], [role=alertdialog]");
112
+ if (!n) return;
113
+ let r = performance.now() + 2e3, i = () => {
114
+ document.activeElement === document.body ? U.current?.isConnected && X(t) : n.contains(document.activeElement) && performance.now() < r && requestAnimationFrame(i);
115
+ };
116
+ requestAnimationFrame(i);
117
+ });
118
+ let ve = b(!!Y);
119
+ v(() => {
120
+ Y && !ve.current && V >= 0 && document.activeElement === document.body && U.current?.querySelector(`[data-index="${V}"]`)?.focus(), ve.current = !!Y;
108
121
  }), v(() => {
109
- let e = W.current;
122
+ let e = U.current;
110
123
  if (!e) return;
111
- P(e);
112
- let t = new MutationObserver(() => P(e));
124
+ ne(e);
125
+ let t = new MutationObserver(() => ne(e));
113
126
  return t.observe(e, {
114
127
  subtree: !0,
115
128
  childList: !0,
@@ -117,10 +130,10 @@ var F = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable:
117
130
  attributeFilter: ["tabindex"]
118
131
  }), () => t.disconnect();
119
132
  }, []);
120
- let ve = (e) => {
121
- let t = new Set(I);
122
- t.has(e) ? t.delete(e) : t.add(e), B(t);
123
- }, ye = (e) => e.flatMap((e) => e.kind === "row" && !e.item.disabled ? [e.item.id] : []), be = (e) => {
133
+ let ye = (e) => {
134
+ let t = new Set(F);
135
+ t.has(e) ? t.delete(e) : t.add(e), z(t);
136
+ }, be = (e) => e.flatMap((e) => e.kind === "row" && !e.item.disabled ? [e.item.id] : []), xe = (e) => {
124
137
  let t = e.target;
125
138
  if (!e.currentTarget.contains(t) || t.closest(N)) return;
126
139
  let n = t.closest("[role=row]"), r = n?.querySelector("[data-index]");
@@ -131,53 +144,53 @@ var F = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable:
131
144
  return;
132
145
  }
133
146
  if (e.defaultPrevented) return;
134
- let s = Number(r.dataset.index), c = q[s], l = c?.kind === "row" ? c.item : void 0;
147
+ let s = Number(r.dataset.index), c = K[s], l = c?.kind === "row" ? c.item : void 0;
135
148
  if (e.altKey) return;
136
149
  if (e.metaKey || e.ctrlKey) {
137
- e.key.toLowerCase() === "a" && a && !e.shiftKey && (e.preventDefault(), B(new Set(ye(q))));
150
+ e.key.toLowerCase() === "a" && a && !e.shiftKey && (e.preventDefault(), z(new Set(be(K))));
138
151
  return;
139
152
  }
140
153
  let u = (t) => {
141
154
  if (e.preventDefault(), e.shiftKey && a) {
142
- let e = se ?? s;
143
- ce(e);
144
- let n = new Set(I);
145
- ye(q.slice(Math.min(e, t), Math.max(e, t) + 1)).forEach((e) => n.add(e)), B(n);
146
- } else ce(null);
147
- ge(t);
155
+ let e = ce ?? s;
156
+ le(e);
157
+ let n = new Set(F);
158
+ be(K.slice(Math.min(e, t), Math.max(e, t) + 1)).forEach((e) => n.add(e)), z(n);
159
+ } else le(null);
160
+ X(t);
148
161
  }, d = () => [...n.querySelectorAll(M)].filter((e) => e !== r && !e.closest("[role=checkbox], [aria-hidden=true], [hidden]") && !e.matches(":disabled, input[type=checkbox]"));
149
- if (e.key === "ArrowDown" || e.key === "j" && !e.shiftKey) u(Math.min(q.length - 1, s + 1));
162
+ if (e.key === "ArrowDown" || e.key === "j" && !e.shiftKey) u(Math.min(K.length - 1, s + 1));
150
163
  else if (e.key === "ArrowUp" || e.key === "k" && !e.shiftKey) u(Math.max(0, s - 1));
151
164
  else if (e.key === "Home") u(0);
152
- else if (e.key === "End") u(q.length - 1);
165
+ else if (e.key === "End") u(K.length - 1);
153
166
  else if (e.key === "ArrowRight" || e.key === "ArrowLeft") {
154
167
  let n = d(), i = o ? -1 : n.indexOf(t), a = e.key === "ArrowRight" ? n[i + 1] : i > 0 ? n[i - 1] : i === 0 ? r : void 0;
155
168
  if (!a) return;
156
169
  e.preventDefault(), a.focus();
157
170
  } else if (!o || !l || e.shiftKey) return;
158
- else (e.key === " " || e.key === "x") && a ? (e.preventDefault(), l.disabled || ve(l.id)) : e.key === "Enter" ? (e.preventDefault(), l.disabled || i?.(l)) : e.key === "Escape" && a && I.size && B(/* @__PURE__ */ new Set());
159
- }, Q = I.size > 0;
171
+ else (e.key === " " || e.key === "x") && a ? (e.preventDefault(), l.disabled || ye(l.id)) : e.key === "Enter" ? (e.preventDefault(), l.disabled || i?.(l)) : e.key === "Escape" && a && F.size && z(/* @__PURE__ */ new Set());
172
+ }, Q = F.size > 0;
160
173
  v(() => {
161
174
  let e = document.activeElement;
162
- Q && e instanceof HTMLElement && W.current?.contains(e) && re(e, G.current);
175
+ Q && e instanceof HTMLElement && U.current?.contains(e) && ie(e, W.current);
163
176
  }, [Q]);
164
- let $ = (e, t) => e.kind === "header" ? /* @__PURE__ */ S(R, {
177
+ let $ = (e, t) => e.kind === "header" ? /* @__PURE__ */ S(L, {
165
178
  title: e.group.title,
166
179
  glyph: e.group.glyph,
167
180
  count: e.group.count ?? e.group.items.length,
168
- collapsed: V.has(e.group.id),
181
+ collapsed: B.has(e.group.id),
169
182
  onToggle: () => {
170
- let t = new Set(V);
171
- t.has(e.group.id) ? t.delete(e.group.id) : t.add(e.group.id), oe(t);
183
+ let t = new Set(B);
184
+ t.has(e.group.id) ? t.delete(e.group.id) : t.add(e.group.id), se(t);
172
185
  },
173
186
  onAdd: e.group.onAdd,
174
187
  addLabel: e.group.addLabel,
175
188
  indent: !!a,
176
189
  first: t === 0,
177
190
  index: t,
178
- active: t === Z,
179
- onFocus: () => U(t)
180
- }, e.key) : /* @__PURE__ */ S(L, {
191
+ active: t === _e,
192
+ onFocus: () => H(t)
193
+ }, e.key) : /* @__PURE__ */ S(I, {
181
194
  index: t,
182
195
  item: e.item,
183
196
  depth: e.depth,
@@ -185,76 +198,86 @@ var F = /* @__PURE__ */ h(function({ items: t, groups: r, onOpen: i, selectable:
185
198
  idWidth: l,
186
199
  density: d,
187
200
  wrapSubtitle: f,
188
- narrow: K,
189
- active: t === Z,
190
- selected: I.has(e.item.id),
201
+ narrow: G,
202
+ active: t === _e,
203
+ selected: F.has(e.item.id),
191
204
  selectable: !!a,
192
205
  selecting: Q,
193
- onSelect: () => ve(e.item.id),
206
+ onSelect: () => ye(e.item.id),
194
207
  onOpen: () => i?.(e.item),
195
- onFocus: () => U(t),
196
- ...k && t === ue ? { "data-force": k } : {}
208
+ onFocus: () => H(t),
209
+ ...k && t === de ? { "data-force": k } : {}
197
210
  }, e.key);
198
211
  return /* @__PURE__ */ C("div", {
199
212
  ref: (e) => {
200
- W.current = e, typeof A == "function" ? A(e) : A && (A.current = e);
213
+ U.current = e, typeof A == "function" ? A(e) : A && (A.current = e);
201
214
  },
202
215
  role: "grid",
203
216
  "aria-label": ee,
204
- "aria-rowcount": q.length || void 0,
217
+ "aria-rowcount": K.length || void 0,
205
218
  "aria-multiselectable": a || void 0,
206
219
  "aria-busy": T || void 0,
207
220
  onKeyDown: (e) => {
208
- Y(), be(e);
221
+ J(), xe(e);
222
+ },
223
+ onPointerEnter: J,
224
+ onPointerDown: J,
225
+ onFocus: (e) => {
226
+ if (J(), !e.currentTarget.contains(e.target)) return;
227
+ let t = Number(e.target.closest("[role=row]")?.querySelector("[data-index]")?.dataset.index), n = K[t];
228
+ Z.current = n ? {
229
+ key: n.key,
230
+ index: t
231
+ } : null;
209
232
  },
210
- onPointerEnter: Y,
211
- onPointerDown: Y,
212
- onFocus: Y,
213
- onWheel: Y,
233
+ onBlur: (e) => {
234
+ e.currentTarget.contains(e.target) && !e.relatedTarget && (Z.current = null);
235
+ },
236
+ onWheel: J,
214
237
  className: e("relative flex flex-col outline-none", te && "overflow-hidden rounded-group bg-raised shadow-xs", D),
215
- children: [T && (de || q.length === 0) ? /* @__PURE__ */ S(ae, {
238
+ children: [T && (fe || K.length === 0) ? /* @__PURE__ */ S(oe, {
216
239
  density: d,
217
240
  grouped: !!r
218
- }) : de && E ? /* @__PURE__ */ S("div", {
241
+ }) : fe && E ? /* @__PURE__ */ S("div", {
219
242
  role: "row",
220
243
  children: /* @__PURE__ */ S("div", {
221
244
  role: "gridcell",
222
245
  children: E
223
246
  })
224
- }) : J && X ? /* @__PURE__ */ S(X, {
225
- count: q.length,
226
- estimateSize: pe,
227
- getScrollElement: () => p(W.current),
228
- scrollTo: he,
229
- row: (e) => $(q[e], e),
230
- measure: K
231
- }) : J ? /* @__PURE__ */ S(ie, {
232
- count: q.length,
233
- estimateSize: pe,
234
- row: (e) => $(q[e], e)
235
- }) : q.map($), a && Q && w && /* @__PURE__ */ S(z, {
236
- ref: G,
237
- count: I.size,
238
- onClear: () => B(/* @__PURE__ */ new Set()),
247
+ }) : q && Y ? /* @__PURE__ */ S(Y, {
248
+ count: K.length,
249
+ estimateSize: me,
250
+ getScrollElement: () => p(U.current),
251
+ scrollTo: ge,
252
+ row: (e) => $(K[e], e),
253
+ measure: G
254
+ }) : q ? /* @__PURE__ */ S(ae, {
255
+ count: K.length,
256
+ estimateSize: me,
257
+ row: (e) => $(K[e], e)
258
+ }) : K.map($), a && Q && w && /* @__PURE__ */ S(R, {
259
+ ref: W,
260
+ count: F.size,
261
+ onClear: () => z(/* @__PURE__ */ new Set()),
239
262
  children: _
240
263
  })]
241
264
  });
242
265
  });
243
- process.env.NODE_ENV !== "production" && (F.displayName = "List");
244
- function ne(e, t) {
266
+ process.env.NODE_ENV !== "production" && (P.displayName = "List");
267
+ function re(e, t) {
245
268
  return t ? e ? "bg-raised-pressed controls-on-fill hover:raised-selected-hover active:raised-selected-hover" : "bg-fill-2 controls-on-fill hover:bg-fill-3 active:bg-fill-3" : e ? "hover:bg-raised-hover hover:controls-on-fill active:bg-raised-pressed" : "hover:bg-fill-1 hover:controls-on-fill active:bg-fill-2";
246
269
  }
247
- function I(e) {
270
+ function F(e) {
248
271
  let t = typeof window > "u" ? null : window.getSelection();
249
272
  return !!t && !t.isCollapsed && !!t.anchorNode && e.contains(t.anchorNode);
250
273
  }
251
- function re(e, t) {
274
+ function ie(e, t) {
252
275
  let n = t?.firstElementChild?.getBoundingClientRect().top;
253
276
  if (n === void 0) return;
254
277
  let r = e.getBoundingClientRect().bottom + 8 - n;
255
278
  r > 0 && p(e)?.scrollBy({ top: r });
256
279
  }
257
- function ie({ count: e, estimateSize: t, row: n }) {
280
+ function ae({ count: e, estimateSize: t, row: n }) {
258
281
  let r = typeof window > "u" ? 1024 : window.innerHeight, i = [], a = 0, o = 12;
259
282
  for (let s = 0; s < e; s++) {
260
283
  if (a >= r && o-- <= 0) {
@@ -275,7 +298,7 @@ function ie({ count: e, estimateSize: t, row: n }) {
275
298
  children: i
276
299
  });
277
300
  }
278
- function ae({ density: t, grouped: n }) {
301
+ function oe({ density: t, grouped: n }) {
279
302
  let i = r();
280
303
  return /* @__PURE__ */ C("div", {
281
304
  role: "presentation",
@@ -317,7 +340,7 @@ function ae({ density: t, grouped: n }) {
317
340
  }, r))]
318
341
  });
319
342
  }
320
- var L = /* @__PURE__ */ h(function({ item: t, index: a, depth: o = 0, lastChild: s, idWidth: l, density: u = "default", wrapSubtitle: d = !1, narrow: p = !1, active: m, selected: h, selectable: g, selecting: _, onSelect: v, onOpen: y, onFocus: b, "data-force": x }, w) {
343
+ var I = /* @__PURE__ */ h(function({ item: t, index: a, depth: o = 0, lastChild: s, idWidth: l, density: u = "default", wrapSubtitle: d = !1, narrow: p = !1, active: m, selected: h, selectable: g, selecting: _, onSelect: v, onOpen: y, onFocus: b, "data-force": x }, w) {
321
344
  let T = n(), E = r(), D = i(), O = p && !!(t.meta || t.date), A = (T || O) && !!t.subtitle, j = A && d, M = !!t.disabled, N = t.avatar && /* @__PURE__ */ S("span", {
322
345
  className: e("flex shrink-0", M && "opacity-50"),
323
346
  children: t.avatar
@@ -336,10 +359,10 @@ var L = /* @__PURE__ */ h(function({ item: t, index: a, depth: o = 0, lastChild:
336
359
  tabIndex: m === !1 ? -1 : 0,
337
360
  onFocus: b,
338
361
  onClick: (e) => {
339
- e.currentTarget.contains(e.target) && !e.target.closest("button, a, [role=checkbox]") && (I(e.currentTarget) || (_ && g ? v?.() : y?.()));
362
+ e.currentTarget.contains(e.target) && !e.target.closest("button, a, [role=checkbox]") && (F(e.currentTarget) || (_ && g ? v?.() : y?.()));
340
363
  },
341
364
  ...x ? { "data-force": x } : {},
342
- className: e("group/row relative flex cursor-pointer items-center gap-12 text-body transition-control focus-ring-inset", T ? "rounded-none px-20" : "rounded-item px-12", A || O || j ? "min-h-56 py-8" : T && u === "default" ? "h-48" : k.density[u].classes, ne(T, !!h), M && "pointer-events-none text-fg-disabled"),
365
+ className: e("group/row relative flex cursor-pointer items-center gap-12 text-body transition-control focus-ring-inset", T ? "rounded-none px-20" : "rounded-item px-12", A || O || j ? "min-h-56 py-8" : T && u === "default" ? "h-48" : k.density[u].classes, re(T, !!h), M && "pointer-events-none text-fg-disabled"),
343
366
  children: [
344
367
  g && /* @__PURE__ */ S("span", {
345
368
  className: e("flex shrink-0 transition-control select-none", _ || h ? "opacity-100" : "opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100"),
@@ -386,10 +409,10 @@ var L = /* @__PURE__ */ h(function({ item: t, index: a, depth: o = 0, lastChild:
386
409
  children: t.subtitle
387
410
  })]
388
411
  }), O && /* @__PURE__ */ C("span", {
389
- className: "flex h-24 min-w-0 items-center gap-8",
412
+ className: "flex min-h-24 min-w-0 flex-wrap items-center gap-x-8",
390
413
  children: [
391
414
  t.meta && /* @__PURE__ */ S("span", {
392
- className: e("flex min-w-0 items-center gap-6 overflow-hidden", M && "opacity-50"),
415
+ className: e("flex min-w-0 max-w-full items-center gap-6 overflow-hidden", M && "opacity-50"),
393
416
  children: t.meta
394
417
  }),
395
418
  t.date && /* @__PURE__ */ S("span", {
@@ -423,8 +446,8 @@ var L = /* @__PURE__ */ h(function({ item: t, index: a, depth: o = 0, lastChild:
423
446
  })
424
447
  });
425
448
  });
426
- process.env.NODE_ENV !== "production" && (L.displayName = "ListRow");
427
- var R = /* @__PURE__ */ h(function({ title: t, glyph: a, count: o, collapsed: s, onToggle: c, onAdd: u, addLabel: d, indent: f, first: p, index: m, active: h, onFocus: g }, _) {
449
+ process.env.NODE_ENV !== "production" && (I.displayName = "ListRow");
450
+ var L = /* @__PURE__ */ h(function({ title: t, glyph: a, count: o, collapsed: s, onToggle: c, onAdd: u, addLabel: d, indent: f, first: p, index: m, active: h, onFocus: g }, _) {
428
451
  let v = n(), y = r(), b = i();
429
452
  return /* @__PURE__ */ S("div", {
430
453
  ref: _,
@@ -485,8 +508,8 @@ var R = /* @__PURE__ */ h(function({ title: t, glyph: a, count: o, collapsed: s,
485
508
  })
486
509
  });
487
510
  });
488
- process.env.NODE_ENV !== "production" && (R.displayName = "GroupHeader");
489
- var z = /* @__PURE__ */ h(function({ count: e, onClear: n, children: r }, o) {
511
+ process.env.NODE_ENV !== "production" && (L.displayName = "GroupHeader");
512
+ var R = /* @__PURE__ */ h(function({ count: e, onClear: n, children: r }, o) {
490
513
  let s = t(), c = i();
491
514
  return typeof document > "u" ? null : E(/* @__PURE__ */ S("div", {
492
515
  ref: o,
@@ -519,8 +542,8 @@ var z = /* @__PURE__ */ h(function({ count: e, onClear: n, children: r }, o) {
519
542
  })
520
543
  }), s ?? document.body);
521
544
  });
522
- process.env.NODE_ENV !== "production" && (z.displayName = "SelectionBar");
523
- var B = /* @__PURE__ */ h(function({ children: t, onClick: n, icon: r, danger: i }, o) {
545
+ process.env.NODE_ENV !== "production" && (R.displayName = "SelectionBar");
546
+ var z = /* @__PURE__ */ h(function({ children: t, onClick: n, icon: r, danger: i }, o) {
524
547
  return /* @__PURE__ */ C("button", {
525
548
  ref: o,
526
549
  type: "button",
@@ -533,8 +556,8 @@ var B = /* @__PURE__ */ h(function({ children: t, onClick: n, icon: r, danger: i
533
556
  }), t]
534
557
  });
535
558
  });
536
- process.env.NODE_ENV !== "production" && (B.displayName = "SelectionAction");
559
+ process.env.NODE_ENV !== "production" && (z.displayName = "SelectionAction");
537
560
  //#endregion
538
- export { L as a, F as i, A as n, B as o, k as r, z as s, R as t };
561
+ export { I as a, P as i, A as n, z as o, k as r, R as s, L as t };
539
562
 
540
- //# sourceMappingURL=list-B4G-sWwV.js.map
563
+ //# sourceMappingURL=list-CU_AoVY3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-CU_AoVY3.js","names":["__icon_Add01Icon","__icon_Cancel01Icon","cn","usePortalContainer","useInset","useGutterPadded","Icon","lazyModule","useLazyModuleRetried","Text","IconButton","useLayoutWidth","Skeleton","TruncatedText","scrollParent","useCoarsePointer","checkbox","n","RowCheckbox","ariaLabel","mod","retry","over","setOver","useState","pressed","setPressed","useEffect","timer","release","onToggle","checked","virtualRows","KAESO_LIST_VARIANTS","KAESO_LIST_DEFAULT_VARIANTS","ID_W","NARROW","FOCUSABLE","TEXT_ENTRY","removeWidgetsFromTabOrder","line","root","primary","widget","List","selectedProp","forceRow","inset","selectedInner","setSelectedInner","selected","setSelected","useCallback","s","onSelectedChange","collapsed","setCollapsed","groups","g","active","setActive","anchor","setAnchor","useRef","bar","width","narrow","flat","useMemo","rows","list","item","c","i","a","items","firstRow","f","none","virtual","virtualizeAbove","coarse","estimateSize","density","rowsModule","retryRows","VirtualRows","scrollTo","tabStop","focusLine","reach","el","clearOfBar","now","lastFocus","last","index","layer","until","wait","hadVirtualRows","useLayoutEffect","observer","toggle","id","enabledIds","lines","onKeyDown","target","onPrimary","row","selectable","moveTo","from","next","widgets","w","at","onOpen","selecting","focused","render","GroupHeader","ListRow","ref","loading","className","LoadingRows","empty","FirstRows","selectionBar","SelectionBar","selectionActions","rowTone","card","selectsText","selection","top","covered","view","total","extra","count","j","padded","grouped","force","t","useUiText","stacked","wraps","wrapSubtitle","off","trailing","onSelect","depth","lastChild","idWidth","first","indent","glyph","title","onAdd","Add01Icon","addLabel","container","createPortal","children","onClear","Cancel01Icon","SelectionAction","danger","icon"],"sources":["../../src/components/list/row-checkbox.tsx","../../src/components/list/list.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\n\nconst checkbox = /* @__PURE__ */ lazyModule(() => import(\"../checkbox/checkbox.js\"), { base: () => import.meta.url });\n\nexport function RowCheckbox({ checked, onToggle, \"aria-label\": ariaLabel }: { checked: boolean; onToggle: () => void; \"aria-label\": string }) {\n const [mod, retry] = useLazyModuleRetried(checkbox, true);\n const [over, setOver] = useState(false);\n const [pressed, setPressed] = useState(false);\n useEffect(() => {\n if (!pressed) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const release = () => {\n timer = setTimeout(() => setPressed(false));\n };\n window.addEventListener(\"pointerup\", release, true);\n window.addEventListener(\"pointercancel\", release, true);\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"pointerup\", release, true);\n window.removeEventListener(\"pointercancel\", release, true);\n };\n }, [pressed]);\n if (mod && !over && !pressed) return <mod.CheckboxBox checked={checked} onCheckedChange={onToggle} aria-label={ariaLabel} />;\n return (\n <span\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n onPointerEnter={() => {\n setOver(true);\n retry();\n }}\n onPointerLeave={() => setOver(false)}\n onPointerDown={() => setPressed(true)}\n onClick={() => {\n onToggle();\n setOver(false);\n setPressed(false);\n }}\n className=\"relative -m-3 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-checkbox\"\n >\n <span aria-hidden className={cn(\"flex size-18 items-center justify-center rounded-checkbox\", checked ? \"bg-ink\" : \"bg-raised shadow-selector\")} />\n </span>\n );\n}\n","import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useGutterPadded, useInset } from \"../../utils/inset.js\";\nimport { Add01Icon as __icon_Add01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Text } from \"../text/text.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useCoarsePointer } from \"../../hooks/use-coarse-pointer.js\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\nimport { RowCheckbox } from \"./row-checkbox.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst virtualRows = /* @__PURE__ */ lazyModule(() => import(\"./virtual-rows.js\"), { base: () => import.meta.url });\n\nexport const KAESO_LIST_VARIANTS = {\n density: {\n default: { classes: \"h-44\" },\n compact: { classes: \"h-36 coarse:h-44\" },\n },\n} as const;\nexport const KAESO_LIST_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport interface ListItemData {\n id: string;\n title: ReactNode;\n textValue?: string | undefined;\n subtitle?: ReactNode | undefined;\n glyph?: ReactNode | undefined;\n leading?: ReactNode | undefined;\n displayId?: string | undefined;\n meta?: ReactNode | undefined;\n date?: ReactNode | undefined;\n avatar?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children?: ListItemData[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ListGroup {\n id: string;\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n items: ListItemData[];\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n defaultCollapsed?: boolean | undefined;\n}\n\ntype Flat = { kind: \"header\"; group: ListGroup; key: string } | { kind: \"row\"; item: ListItemData; depth: 0 | 1; lastChild: boolean; key: string };\n\nexport interface ListProps {\n items?: ListItemData[] | undefined;\n groups?: ListGroup[] | undefined;\n onOpen?: ((item: ListItemData) => void) | undefined;\n selectable?: boolean | undefined;\n selected?: Set<string> | undefined;\n onSelectedChange?: ((selected: Set<string>) => void) | undefined;\n idWidth?: 48 | 64 | 80 | 96 | 120 | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n selectionActions?: ReactNode | undefined;\n selectionBar?: boolean | undefined;\n loading?: boolean | undefined;\n empty?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ID_W = { 48: \"w-48\", 64: \"w-64\", 80: \"w-80\", 96: \"w-96\", 120: \"w-120\" } as const;\n\nconst NARROW = 520;\nconst FOCUSABLE = \"a[href], button, input, select, textarea, [tabindex], [contenteditable=true]\";\nconst TEXT_ENTRY = \"input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]\";\n\nfunction removeWidgetsFromTabOrder(root: HTMLElement) {\n for (const line of root.querySelectorAll<HTMLElement>(\"[role=row]\")) {\n const primary = line.querySelector(\"[data-index]\");\n if (!primary) continue;\n for (const widget of line.querySelectorAll<HTMLElement>(FOCUSABLE)) {\n if (widget !== primary && widget.getAttribute(\"tabindex\") !== \"-1\") widget.setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n\nexport const List = /* @__PURE__ */ forwardRef<HTMLDivElement, ListProps>(function List(\n {\n items,\n groups,\n onOpen,\n selectable,\n selected: selectedProp,\n onSelectedChange,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n virtualizeAbove = 100,\n selectionActions,\n selectionBar = true,\n loading,\n empty,\n className,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n },\n ref,\n) {\n const inset = useInset();\n const [selectedInner, setSelectedInner] = useState<Set<string>>(new Set());\n const selected = selectedProp ?? selectedInner;\n const setSelected = useCallback(\n (s: Set<string>) => {\n if (!selectedProp) setSelectedInner(s);\n onSelectedChange?.(s);\n },\n [selectedProp, onSelectedChange],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set((groups ?? []).filter((g) => g.defaultCollapsed).map((g) => g.id)));\n const [active, setActive] = useState(-1);\n const [anchor, setAnchor] = useState<number | null>(null);\n const root = useRef<HTMLDivElement | null>(null);\n const bar = useRef<HTMLDivElement | null>(null);\n const width = useLayoutWidth(root);\n const narrow = !!width && width < NARROW;\n\n const flat = useMemo<Flat[]>(() => {\n const rows = (list: ListItemData[]): Flat[] =>\n list.flatMap((item) => [\n { kind: \"row\" as const, item, depth: 0 as const, lastChild: false, key: item.id },\n ...(item.children ?? []).map((c, i, a) => ({ kind: \"row\" as const, item: c, depth: 1 as const, lastChild: i === a.length - 1, key: c.id })),\n ]);\n if (groups) return groups.flatMap((g) => [{ kind: \"header\" as const, group: g, key: `h-${g.id}` }, ...(collapsed.has(g.id) ? [] : rows(g.items))]);\n return rows(items ?? []);\n }, [items, groups, collapsed]);\n const firstRow = flat.findIndex((f) => f.kind === \"row\");\n const none = groups ? groups.every((g) => g.items.length === 0) : (items ?? []).length === 0;\n\n const virtual = flat.length > virtualizeAbove;\n const coarse = useCoarsePointer();\n const estimateSize = (i: number) => (flat[i]?.kind === \"header\" ? (i === 0 ? 36 : 52) : narrow ? 64 : density === \"compact\" && !coarse ? 36 : 44);\n const [rowsModule, retryRows] = useLazyModuleRetried(virtualRows, virtual);\n const VirtualRows = rowsModule?.VirtualRows;\n const scrollTo = useRef<((index: number) => void) | null>(null);\n\n if (active >= flat.length) setActive(-1);\n const tabStop = active >= 0 ? active : flat.length ? 0 : -1;\n const focusLine = (i: number) => {\n setActive(i);\n if (virtual) scrollTo.current?.(i);\n const line = () => root.current?.querySelector<HTMLElement>(`[data-index=\"${i}\"]`);\n const reach = (el: HTMLElement | null | undefined) => {\n if (!el) return;\n el.focus();\n clearOfBar(el, bar.current);\n };\n const now = line();\n if (now) reach(now);\n else requestAnimationFrame(() => reach(line()));\n };\n // The line focus was last in. When an action takes that line out of the list (a key disabled\n // under Active, an item archived), focus would fall to the page, also when the row's menu or its\n // confirmation closes after the line has gone; it moves to the line that took its place instead.\n const lastFocus = useRef<{ key: string; index: number } | null>(null);\n useLayoutEffect(() => {\n const last = lastFocus.current;\n if (!last || flat.some((f) => f.key === last.key)) return;\n lastFocus.current = null;\n if (!flat.length) return;\n const index = Math.min(last.index, flat.length - 1);\n if (document.activeElement === document.body) return focusLine(index);\n // Still in the confirmation, which is closing: it would hand focus back to the row, now gone.\n const layer = document.activeElement?.closest(\"[role=dialog], [role=alertdialog]\");\n if (!layer) return;\n const until = performance.now() + 2000;\n const wait = () => {\n if (document.activeElement === document.body) {\n if (root.current?.isConnected) focusLine(index);\n } else if (layer.contains(document.activeElement) && performance.now() < until) requestAnimationFrame(wait);\n };\n requestAnimationFrame(wait);\n });\n const hadVirtualRows = useRef(!!VirtualRows);\n useLayoutEffect(() => {\n if (VirtualRows && !hadVirtualRows.current && active >= 0 && document.activeElement === document.body) {\n root.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`)?.focus();\n }\n hadVirtualRows.current = !!VirtualRows;\n });\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n removeWidgetsFromTabOrder(el);\n const observer = new MutationObserver(() => removeWidgetsFromTabOrder(el));\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n const toggle = (id: string) => {\n const s = new Set(selected);\n if (s.has(id)) s.delete(id);\n else s.add(id);\n setSelected(s);\n };\n const enabledIds = (lines: Flat[]) => lines.flatMap((f) => (f.kind === \"row\" && !f.item.disabled ? [f.item.id] : []));\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (!e.currentTarget.contains(target) || target.closest(TEXT_ENTRY)) return;\n const line = target.closest<HTMLElement>(\"[role=row]\");\n const primary = line?.querySelector<HTMLElement>(\"[data-index]\");\n if (!line || !primary) return;\n const onPrimary = target === primary;\n // A tooltip trigger prevents Escape's default even while its tooltip is still closed; only an open popup keeps the key.\n if (e.key === \"Escape\" && !onPrimary && !e.altKey && !e.metaKey && !e.ctrlKey && !target.closest(\"[data-popup-open], [aria-expanded=true]\")) {\n e.preventDefault();\n primary.focus();\n return;\n }\n if (e.defaultPrevented) return;\n const index = Number(primary.dataset.index);\n const f = flat[index];\n const row = f?.kind === \"row\" ? f.item : undefined;\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n setSelected(new Set(enabledIds(flat)));\n }\n return;\n }\n const moveTo = (next: number) => {\n e.preventDefault();\n if (e.shiftKey && selectable) {\n const from = anchor ?? index;\n setAnchor(from);\n const s = new Set(selected);\n enabledIds(flat.slice(Math.min(from, next), Math.max(from, next) + 1)).forEach((id) => s.add(id));\n setSelected(s);\n } else setAnchor(null);\n focusLine(next);\n };\n const widgets = () =>\n [...line.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => w !== primary && !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n if (e.key === \"ArrowDown\" || (e.key === \"j\" && !e.shiftKey)) moveTo(Math.min(flat.length - 1, index + 1));\n else if (e.key === \"ArrowUp\" || (e.key === \"k\" && !e.shiftKey)) moveTo(Math.max(0, index - 1));\n else if (e.key === \"Home\") moveTo(0);\n else if (e.key === \"End\") moveTo(flat.length - 1);\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n const list = widgets();\n const at = onPrimary ? -1 : list.indexOf(target);\n const next = e.key === \"ArrowRight\" ? list[at + 1] : at > 0 ? list[at - 1] : at === 0 ? primary : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n } else if (!onPrimary || !row || e.shiftKey) {\n return;\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n if (!row.disabled) toggle(row.id);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (!row.disabled) onOpen?.(row);\n } else if (e.key === \"Escape\" && selectable && selected.size) {\n setSelected(new Set());\n }\n };\n const selecting = selected.size > 0;\n useLayoutEffect(() => {\n const focused = document.activeElement;\n if (selecting && focused instanceof HTMLElement && root.current?.contains(focused)) clearOfBar(focused, bar.current);\n }, [selecting]);\n const render = (f: Flat, i: number) =>\n f.kind === \"header\" ? (\n <GroupHeader\n key={f.key}\n title={f.group.title}\n glyph={f.group.glyph}\n count={f.group.count ?? f.group.items.length}\n collapsed={collapsed.has(f.group.id)}\n onToggle={() => {\n const s = new Set(collapsed);\n if (s.has(f.group.id)) s.delete(f.group.id);\n else s.add(f.group.id);\n setCollapsed(s);\n }}\n onAdd={f.group.onAdd}\n addLabel={f.group.addLabel}\n indent={!!selectable}\n first={i === 0}\n index={i}\n active={i === tabStop}\n onFocus={() => setActive(i)}\n />\n ) : (\n <ListRow\n key={f.key}\n index={i}\n item={f.item}\n depth={f.depth}\n lastChild={f.lastChild}\n idWidth={idWidth}\n density={density}\n wrapSubtitle={wrapSubtitle}\n narrow={narrow}\n active={i === tabStop}\n selected={selected.has(f.item.id)}\n selectable={!!selectable}\n selecting={selecting}\n onSelect={() => toggle(f.item.id)}\n onOpen={() => onOpen?.(f.item)}\n onFocus={() => setActive(i)}\n {...(forceRow && i === firstRow ? { \"data-force\": forceRow } : {})}\n />\n );\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) ref.current = e;\n }}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-rowcount={flat.length || undefined}\n aria-multiselectable={selectable || undefined}\n aria-busy={loading || undefined}\n onKeyDown={(e) => {\n retryRows();\n onKeyDown(e);\n }}\n onPointerEnter={retryRows}\n onPointerDown={retryRows}\n onFocus={(e) => {\n retryRows();\n // A row's menu or dialog is a portal: its focus events reach here through React, not the page.\n if (!e.currentTarget.contains(e.target)) return;\n const index = Number((e.target as HTMLElement).closest(\"[role=row]\")?.querySelector<HTMLElement>(\"[data-index]\")?.dataset.index);\n const f = flat[index];\n lastFocus.current = f ? { key: f.key, index } : null;\n }}\n onBlur={(e) => {\n // Focus that goes to nothing (a click on the page) has left the list. Focus that goes to\n // another element may be in the row's menu or dialog, which hands it back to the row when it closes.\n if (e.currentTarget.contains(e.target) && !e.relatedTarget) lastFocus.current = null;\n }}\n onWheel={retryRows}\n className={cn(\"relative flex flex-col outline-none\", inset && \"overflow-hidden rounded-group bg-raised shadow-xs\", className)}\n >\n {loading && (none || flat.length === 0) ? (\n <LoadingRows density={density} grouped={!!groups} />\n ) : none && empty ? (\n <div role=\"row\">\n <div role=\"gridcell\">{empty}</div>\n </div>\n ) : virtual && VirtualRows ? (\n <VirtualRows\n count={flat.length}\n estimateSize={estimateSize}\n getScrollElement={() => scrollParent(root.current)}\n scrollTo={scrollTo}\n row={(i) => render(flat[i]!, i)}\n measure={narrow}\n />\n ) : virtual ? (\n <FirstRows count={flat.length} estimateSize={estimateSize} row={(i) => render(flat[i]!, i)} />\n ) : (\n flat.map(render)\n )}\n {selectable && selecting && selectionBar && (\n <SelectionBar ref={bar} count={selected.size} onClear={() => setSelected(new Set())}>\n {selectionActions}\n </SelectionBar>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"List\";\n\nfunction rowTone(card: boolean, selected: boolean) {\n if (selected)\n return card\n ? \"bg-raised-pressed controls-on-fill hover:raised-selected-hover active:raised-selected-hover\"\n : \"bg-fill-2 controls-on-fill hover:bg-fill-3 active:bg-fill-3\";\n return card ? \"hover:bg-raised-hover hover:controls-on-fill active:bg-raised-pressed\" : \"hover:bg-fill-1 hover:controls-on-fill active:bg-fill-2\";\n}\n\nfunction selectsText(row: HTMLElement) {\n const selection = typeof window === \"undefined\" ? null : window.getSelection();\n return !!selection && !selection.isCollapsed && !!selection.anchorNode && row.contains(selection.anchorNode);\n}\n\nfunction clearOfBar(el: HTMLElement, bar: HTMLElement | null) {\n const top = bar?.firstElementChild?.getBoundingClientRect().top;\n if (top === undefined) return;\n const covered = el.getBoundingClientRect().bottom + 8 - top;\n if (covered > 0) scrollParent(el)?.scrollBy({ top: covered });\n}\n\nfunction FirstRows({ count, estimateSize, row }: { count: number; estimateSize: (index: number) => number; row: (index: number) => ReactNode }) {\n const view = typeof window === \"undefined\" ? 1024 : window.innerHeight;\n const rows: ReactNode[] = [];\n let total = 0;\n let extra = 12;\n for (let i = 0; i < count; i++) {\n if (total >= view && extra-- <= 0) {\n for (let j = i; j < count; j++) total += estimateSize(j);\n break;\n }\n rows.push(\n <div key={i} role=\"presentation\" className=\"absolute top-0 left-0 w-full\" style={{ transform: `translateY(${Math.round(total)}px)` }}>\n {row(i)}\n </div>,\n );\n total += estimateSize(i);\n }\n return (\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: total }}>\n {rows}\n </div>\n );\n}\n\nfunction LoadingRows({ density, grouped }: { density: keyof typeof KAESO_LIST_VARIANTS.density; grouped: boolean }) {\n const padded = useGutterPadded();\n return (\n <div role=\"presentation\">\n {grouped && (\n <div role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className=\"flex h-36 items-center px-12\">\n <Skeleton shape=\"line\" className=\"w-80\" />\n </div>\n </div>\n )}\n {[62, 48, 70, 54, 40, 58].map((w, i) => (\n <div key={i} role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className={cn(\"flex items-center gap-12 px-12\", KAESO_LIST_VARIANTS.density[density].classes)}>\n <Skeleton shape=\"line\" className=\"min-w-0\" style={{ width: `${w}%` }} />\n <span className=\"flex-1\" />\n <Skeleton shape=\"line\" className=\"w-64 shrink-0\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface ListRowProps {\n item: ListItemData;\n index?: number | undefined;\n depth?: 0 | 1 | undefined;\n lastChild?: boolean | undefined;\n idWidth?: keyof typeof ID_W | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n narrow?: boolean | undefined;\n active?: boolean | undefined;\n selected?: boolean | undefined;\n selectable?: boolean | undefined;\n selecting?: boolean | undefined;\n onSelect?: (() => void) | undefined;\n onOpen?: (() => void) | undefined;\n onFocus?: (() => void) | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const ListRow = /* @__PURE__ */ forwardRef<HTMLDivElement, ListRowProps>(function ListRow(\n {\n item,\n index,\n depth = 0,\n lastChild,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n narrow = false,\n active,\n selected,\n selectable,\n selecting,\n onSelect,\n onOpen,\n onFocus,\n \"data-force\": force,\n },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n const lines = narrow && !!(item.meta || item.date);\n const stacked = (card || lines) && !!item.subtitle;\n const wraps = stacked && wrapSubtitle;\n const off = !!item.disabled;\n const trailing = item.avatar && <span className={cn(\"flex shrink-0\", off && \"opacity-50\")}>{item.avatar}</span>;\n return (\n <div\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n className={card ? cn(\"px-0\", index !== undefined && index > 0 && \"hairline-t\") : padded ? \"px-0\" : \"px-24\"}\n >\n <div\n ref={ref}\n role=\"gridcell\"\n aria-selected={selectable ? !!selected : undefined}\n aria-disabled={off || undefined}\n data-index={index}\n data-row=\"\"\n tabIndex={active === false ? -1 : 0}\n onFocus={onFocus}\n onClick={(e: MouseEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.target as Node) || (e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n if (selectsText(e.currentTarget)) return;\n if (selecting && selectable) onSelect?.();\n else onOpen?.();\n }}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/row relative flex cursor-pointer items-center gap-12 text-body transition-control focus-ring-inset\",\n card ? \"rounded-none px-20\" : \"rounded-item px-12\",\n stacked || lines || wraps ? \"min-h-56 py-8\" : card && density === \"default\" ? \"h-48\" : KAESO_LIST_VARIANTS.density[density].classes,\n rowTone(card, !!selected),\n off && \"pointer-events-none text-fg-disabled\",\n )}\n >\n {selectable && (\n <span\n className={cn(\n \"flex shrink-0 transition-control select-none\",\n selecting || selected ? \"opacity-100\" : \"opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100\",\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <RowCheckbox\n checked={!!selected}\n onToggle={() => onSelect?.()}\n aria-label={t(\"list.selectItem\", \"Select {name}\", { name: item.textValue ?? (typeof item.title === \"string\" ? item.title : item.id) })}\n />\n </span>\n )}\n {depth === 1 && (\n <span aria-hidden className=\"relative -ml-4 h-full w-16 shrink-0 self-stretch\">\n <span className={cn(\"absolute left-6 w-1 bg-line-strong forced-line\", lastChild ? \"top-0 h-1/2\" : \"inset-y-0\")} />\n <span className=\"absolute top-1/2 left-6 h-1 w-10 bg-line-strong forced-line\" />\n </span>\n )}\n {item.glyph && <span className={cn(\"flex size-16 shrink-0 items-center justify-center\", off && \"opacity-50\")}>{item.glyph}</span>}\n {item.leading && <span className={cn(\"-mr-4 flex shrink-0\", stacked && \"self-start\", off && \"opacity-50\")}>{item.leading}</span>}\n {item.displayId && (\n <TruncatedText\n className={cn(\n \"shrink-0 mono text-small tabular\",\n off ? \"text-fg-disabled\" : selected ? \"text-fg-secondary\" : \"text-fg-tertiary\",\n idWidth && ID_W[idWidth],\n )}\n >\n {item.displayId}\n </TruncatedText>\n )}\n <span className={cn(\"flex min-w-0 flex-1\", lines ? \"flex-col items-stretch gap-4\" : \"contents\")}>\n <span className={cn(\"flex min-w-0\", lines ? \"w-full\" : \"flex-1\", stacked ? \"flex-col items-start gap-2\" : \"items-baseline gap-8\")}>\n {typeof item.title === \"string\" ? (\n <Text truncate weight=\"medium\" tone={off ? \"inherit\" : \"default\"} className={cn(\"min-w-0 shrink\", stacked && \"max-w-full\")}>\n {item.title}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate font-medium\", off ? \"text-inherit\" : \"text-fg\", stacked && \"max-w-full\")}>{item.title}</span>\n )}\n {item.subtitle && (\n <TruncatedText\n wrap={wraps}\n className={cn(\"min-w-0\", off ? \"text-fg-disabled\" : \"text-fg-secondary\", stacked ? \"max-w-full text-small\" : \"flex-1 basis-0\")}\n >\n {item.subtitle}\n </TruncatedText>\n )}\n </span>\n {lines && (\n <span className=\"flex min-h-24 min-w-0 flex-wrap items-center gap-x-8\">\n {item.meta && <span className={cn(\"flex min-w-0 max-w-full items-center gap-6 overflow-hidden\", off && \"opacity-50\")}>{item.meta}</span>}\n {item.date && (\n <span className={cn(\"shrink-0 text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>{item.date}</span>\n )}\n {trailing}\n {item.actions && <span className=\"ml-auto flex shrink-0 items-center gap-2\">{item.actions}</span>}\n </span>\n )}\n </span>\n {!lines && (item.meta || item.actions) && (\n <span className=\"relative flex shrink-0 items-center gap-6\">\n <span\n className={cn(\n \"flex items-center gap-6\",\n item.actions && \"transition-control group-hover/row:opacity-0 group-focus-within/row:opacity-0\",\n off && \"opacity-50\",\n )}\n >\n {item.meta}\n </span>\n {item.actions && (\n <span\n className={cn(\n \"flex items-center gap-2 opacity-0 transition-control group-hover/row:opacity-100 group-focus-within/row:opacity-100 coarse:opacity-100\",\n item.meta && \"absolute inset-y-0 right-0 coarse:static\",\n )}\n >\n {item.actions}\n </span>\n )}\n </span>\n )}\n {!lines && item.date && (\n <span className={cn(\"min-w-80 shrink-0 text-right text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>\n {item.date}\n </span>\n )}\n {!lines && trailing}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ListRow.displayName = \"ListRow\";\n\nexport interface GroupHeaderProps {\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n collapsed?: boolean | undefined;\n onToggle?: (() => void) | undefined;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n indent?: boolean | undefined;\n first?: boolean | undefined;\n index?: number | undefined;\n active?: boolean | undefined;\n onFocus?: (() => void) | undefined;\n}\n\nexport const GroupHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, GroupHeaderProps>(function GroupHeader(\n { title, glyph, count, collapsed, onToggle, onAdd, addLabel, indent, first, index, active, onFocus },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n return (\n <div\n ref={ref}\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n onFocus={onFocus}\n className={card ? cn(\"group/gh bg-fill-1\", !first && \"hairline-t\") : cn(\"group/gh\", !first && \"pt-16\", padded ? \"px-0\" : \"px-24\")}\n >\n <div role=\"gridcell\" className={cn(\"flex h-36 items-center gap-4\", card && \"pr-12 pl-8\")}>\n <button\n type=\"button\"\n aria-expanded={!collapsed}\n data-index={index}\n tabIndex={active === false ? -1 : 0}\n onClick={onToggle}\n className={cn(\n \"relative flex h-28 min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-small transition-control focus-ring tap-target\",\n card ? \"hover:bg-fill-2 active:bg-fill-3\" : \"hover:bg-fill-1 active:bg-fill-2\",\n )}\n >\n {indent && !card && <span aria-hidden className=\"w-22 shrink-0\" />}\n {glyph && <span className=\"flex size-16 items-center justify-center\">{glyph}</span>}\n <span className=\"truncate font-medium text-fg-secondary\">{title}</span>\n {count !== undefined && <span className=\"text-fg-tertiary tabular\">{count}</span>}\n <svg\n viewBox=\"0 0 8 8\"\n aria-hidden\n className={cn(\"size-10 text-fg-tertiary transition-transform duration-200 ease-standard\", !collapsed && \"rotate-90\")}\n >\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </button>\n <span className=\"flex-1\" />\n {onAdd && (\n <span className=\"flex opacity-0 transition-control group-hover/gh:opacity-100 group-focus-within/gh:opacity-100 coarse:opacity-100\">\n <IconButton icon={__icon_Add01Icon} aria-label={addLabel ?? t(\"list.add\", \"Add\")} size=\"xs\" onClick={onAdd} />\n </span>\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupHeader.displayName = \"GroupHeader\";\n\nexport interface SelectionBarProps {\n count: number;\n onClear: () => void;\n children?: ReactNode | undefined;\n}\n\nexport const SelectionBar = /* @__PURE__ */ forwardRef<HTMLDivElement, SelectionBarProps>(function SelectionBar({ count, onClear, children }, ref) {\n const container = usePortalContainer();\n const t = useUiText();\n if (typeof document === \"undefined\") return null;\n return createPortal(\n <div\n ref={ref}\n role=\"region\"\n aria-label={t(\"list.selection\", \"Selection\")}\n className=\"pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16\"\n >\n <div className=\"pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion\">\n <span className=\"pr-8 tabular\">{t(\"list.selected\", \"{count} selected\", { count: String(count) })}</span>\n <span className=\"mr-4 h-20 w-1 bg-toast-action\" aria-hidden />\n {children}\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={t(\"list.clearSelection\", \"Clear selection\")}\n className=\"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"sm\" />\n </button>\n </div>\n </div>,\n container ?? document.body,\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionBar.displayName = \"SelectionBar\";\n\nexport interface SelectionActionProps {\n children: ReactNode;\n onClick?: (() => void) | undefined;\n icon?: IconData | undefined;\n danger?: boolean | undefined;\n}\n\nexport const SelectionAction = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectionActionProps>(function SelectionAction({ children, onClick, icon, danger }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring\",\n danger ? \"text-toast-danger\" : \"text-toast-fg\",\n icon && \"pl-10\",\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className={danger ? undefined : \"text-toast-fg-secondary\"} />}\n {children}\n </button>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionAction.displayName = \"SelectionAction\";\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { t } from "./icon-CBzOwqrX.js";
4
4
  import { r as n } from "./text-DkKdTVUf.js";
5
- import { s as r } from "./app-frame-DysOel2X.js";
5
+ import { s as r } from "./app-frame-CfJ7s3Q0.js";
6
6
  import { forwardRef as i } from "react";
7
7
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
8
8
  //#region src/components/page-header/page-header.tsx
@@ -42,4 +42,4 @@ process.env.NODE_ENV !== "production" && (l.displayName = "PageHeader");
42
42
  //#endregion
43
43
  export { s as n, l as r, c as t };
44
44
 
45
- //# sourceMappingURL=page-header-kS5tdmvb.js.map
45
+ //# sourceMappingURL=page-header-BQijP6Rp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-header-kS5tdmvb.js","names":["cn","Text","useAppFrame","KAESO_PAGE_HEADER_VARIANTS","KAESO_PAGE_HEADER_DEFAULT_VARIANTS","PageHeader","Heading","className","start","title","icon","Icon","tabs","actions"],"sources":["../../src/components/page-header/page-header.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { useAppFrame } from \"../app-frame/app-frame.js\";\nimport { Text } from \"../text/text.js\";\n\nexport const KAESO_PAGE_HEADER_VARIANTS = {\n size: {\n md: {\n classes: \"min-h-52 flex-wrap gap-x-12 gap-y-8 px-24 py-10 sm:h-52 sm:flex-nowrap sm:py-0\",\n },\n },\n} as const;\nexport const KAESO_PAGE_HEADER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface PageHeaderProps {\n title?: ReactNode | undefined;\n icon?: IconData | undefined;\n tabs?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n start?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const PageHeader = /* @__PURE__ */ forwardRef<HTMLElement, PageHeaderProps>(function PageHeader({ title, icon, tabs, actions, start, className }, ref) {\n const Heading = useAppFrame().embedded ? \"h2\" : \"h1\";\n return (\n <header ref={ref} className={cn(\"flex shrink-0 items-center\", KAESO_PAGE_HEADER_VARIANTS.size.md.classes, className)}>\n {start}\n {title && (\n <Heading className=\"flex min-w-0 flex-1 shrink-4 items-center gap-8 text-body-lg font-semibold text-fg sm:flex-initial\">\n {icon && <Icon icon={icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <Text truncate variant=\"body-lg\" weight=\"semibold\" tone=\"inherit\">\n {title}\n </Text>\n </Heading>\n )}\n {tabs && <div className=\"order-last min-w-0 basis-full sm:order-none sm:ml-8 sm:basis-auto\">{tabs}</div>}\n <div className=\"ml-auto flex shrink-0 items-center gap-8\">{actions}</div>\n </header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PageHeader.displayName = \"PageHeader\";\n"],"mappings":";;;;;;;;AAMA,IAAaG,IAA6B,EACxC,MAAM,EACJ,IAAI,EACF,SAAS,iFACX,EACF,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAWlDC,IAA6B,kBAAyC,SAAoB,EAAE,UAAO,SAAM,SAAM,YAAS,UAAO,gBAAa,GAAK;CAC5J,IAAMC,IAAUJ,EAAY,CAAC,CAAC,WAAW,OAAO;CAChD,OACE,kBAAC,UAAD;EAAa;EAAK,WAAWF,EAAG,8BAA8BG,EAA2B,KAAK,GAAG,SAASI,CAAS;EAAnH,UAAA;GACGC;GACAC,KACC,kBAACH,GAAD;IAAS,WAAU;IAAnB,UAAA,CACGI,KAAQ,kBAACC,GAAD;KAAY;KAAM,MAAK;KAAK,WAAU;IAA8B,CAAA,GAC7E,kBAACV,GAAD;KAAM,UAAA;KAAS,SAAQ;KAAU,QAAO;KAAW,MAAK;KACrD,UAAAQ;IACG,CAAA,CACC;;GAEVG,KAAQ,kBAAC,OAAD;IAAK,WAAU;IAAqE,UAAAA;GAAU,CAAA;GACvG,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAC;GAAa,CAAA;EAClE;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
1
+ {"version":3,"file":"page-header-BQijP6Rp.js","names":["cn","Text","useAppFrame","KAESO_PAGE_HEADER_VARIANTS","KAESO_PAGE_HEADER_DEFAULT_VARIANTS","PageHeader","Heading","className","start","title","icon","Icon","tabs","actions"],"sources":["../../src/components/page-header/page-header.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { useAppFrame } from \"../app-frame/app-frame.js\";\nimport { Text } from \"../text/text.js\";\n\nexport const KAESO_PAGE_HEADER_VARIANTS = {\n size: {\n md: {\n classes: \"min-h-52 flex-wrap gap-x-12 gap-y-8 px-24 py-10 sm:h-52 sm:flex-nowrap sm:py-0\",\n },\n },\n} as const;\nexport const KAESO_PAGE_HEADER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface PageHeaderProps {\n title?: ReactNode | undefined;\n icon?: IconData | undefined;\n tabs?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n start?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const PageHeader = /* @__PURE__ */ forwardRef<HTMLElement, PageHeaderProps>(function PageHeader({ title, icon, tabs, actions, start, className }, ref) {\n const Heading = useAppFrame().embedded ? \"h2\" : \"h1\";\n return (\n <header ref={ref} className={cn(\"flex shrink-0 items-center\", KAESO_PAGE_HEADER_VARIANTS.size.md.classes, className)}>\n {start}\n {title && (\n <Heading className=\"flex min-w-0 flex-1 shrink-4 items-center gap-8 text-body-lg font-semibold text-fg sm:flex-initial\">\n {icon && <Icon icon={icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <Text truncate variant=\"body-lg\" weight=\"semibold\" tone=\"inherit\">\n {title}\n </Text>\n </Heading>\n )}\n {tabs && <div className=\"order-last min-w-0 basis-full sm:order-none sm:ml-8 sm:basis-auto\">{tabs}</div>}\n <div className=\"ml-auto flex shrink-0 items-center gap-8\">{actions}</div>\n </header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PageHeader.displayName = \"PageHeader\";\n"],"mappings":";;;;;;;;AAMA,IAAaG,IAA6B,EACxC,MAAM,EACJ,IAAI,EACF,SAAS,iFACX,EACF,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAWlDC,IAA6B,kBAAyC,SAAoB,EAAE,UAAO,SAAM,SAAM,YAAS,UAAO,gBAAa,GAAK;CAC5J,IAAMC,IAAUJ,EAAY,CAAC,CAAC,WAAW,OAAO;CAChD,OACE,kBAAC,UAAD;EAAa;EAAK,WAAWF,EAAG,8BAA8BG,EAA2B,KAAK,GAAG,SAASI,CAAS;EAAnH,UAAA;GACGC;GACAC,KACC,kBAACH,GAAD;IAAS,WAAU;IAAnB,UAAA,CACGI,KAAQ,kBAACC,GAAD;KAAY;KAAM,MAAK;KAAK,WAAU;IAA8B,CAAA,GAC7E,kBAACV,GAAD;KAAM,UAAA;KAAS,SAAQ;KAAU,QAAO;KAAW,MAAK;KACrD,UAAAQ;IACG,CAAA,CACC;;GAEVG,KAAQ,kBAAC,OAAD;IAAK,WAAU;IAAqE,UAAAA;GAAU,CAAA;GACvG,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAC;GAAa,CAAA;EAClE;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
@@ -36,7 +36,11 @@ function h({ children: e, defaultTheme: n = "system", target: l }) {
36
36
  }, [n]), r(() => {
37
37
  if (d === null) return;
38
38
  let e = l ? l() : document.documentElement;
39
- d === "system" ? e.removeAttribute("data-theme") : e.setAttribute("data-theme", d);
39
+ e.setAttribute("data-k-theming", ""), d === "system" ? e.removeAttribute("data-theme") : e.setAttribute("data-theme", d), getComputedStyle(e).color;
40
+ let t = requestAnimationFrame(() => e.removeAttribute("data-k-theming"));
41
+ return () => {
42
+ cancelAnimationFrame(t), e.removeAttribute("data-k-theming");
43
+ };
40
44
  }, [d, l]);
41
45
  let y = t((e) => {
42
46
  h(e);
@@ -69,4 +73,4 @@ function g() {
69
73
  //#endregion
70
74
  export { g as a, d as i, h as n, u as r, s as t };
71
75
 
72
- //# sourceMappingURL=theme-provider-DJhORMlc.js.map
76
+ //# sourceMappingURL=theme-provider-BjXTggqM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider-BjXTggqM.js","names":["THEME_STORAGE_KEY","THEME_EVENT","modalitySource","installFocusModality","w","d","themeScript","key","ThemeContext","readStored","v","fallback","systemTheme","ThemeProvider","chosen","setThemeState","useState","system","setSystem","theme","defaultTheme","useEffect","mq","onChange","follow","event","el","target","settled","setTheme","useCallback","next","value","useMemo","useTheme","useContext"],"sources":["../../src/theme/theme-provider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState, type ReactNode } from \"react\";\n\nexport type ThemePreference = \"system\" | \"light\" | \"dark\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\nexport const THEME_STORAGE_KEY = \"kaeso:theme\";\nconst THEME_EVENT = \"kaeso:theme-change\";\n\nconst modalitySource = `if(!window.__kModality){window.__kModality=1;document.addEventListener(\"pointerdown\",function(){d.setAttribute(\"data-k-pointer\",\"\")},true);document.addEventListener(\"keydown\",function(e){if(!e.metaKey&&!e.ctrlKey&&!e.altKey){d.removeAttribute(\"data-k-pointer\")}},true)}`;\n\nexport function installFocusModality(): void {\n if (typeof document === \"undefined\") return;\n const w = window as unknown as { __kModality?: number | undefined };\n if (w.__kModality) return;\n w.__kModality = 1;\n const d = document.documentElement;\n document.addEventListener(\"pointerdown\", () => d.setAttribute(\"data-k-pointer\", \"\"), true);\n document.addEventListener(\n \"keydown\",\n (e) => {\n if (!e.metaKey && !e.ctrlKey && !e.altKey) d.removeAttribute(\"data-k-pointer\");\n },\n true,\n );\n}\n\nconst themeScriptFor = (key: string) =>\n `(function(){var d=document.documentElement;try{var t=localStorage.getItem(\"${key}\");if(t===\"light\"||t===\"dark\"){d.setAttribute(\"data-theme\",t)}}catch(e){}${modalitySource}})();`;\n\nexport const themeScript = /* @__PURE__ */ themeScriptFor(THEME_STORAGE_KEY);\n\ninterface ThemeContextValue {\n theme: ThemePreference;\n resolvedTheme: ResolvedTheme;\n setTheme: (theme: ThemePreference) => void;\n}\n\nconst ThemeContext = /* @__PURE__ */ createContext<ThemeContextValue | null>(null);\n\nfunction readStored(fallback: ThemePreference): ThemePreference {\n try {\n const v = localStorage.getItem(THEME_STORAGE_KEY);\n return v === \"light\" || v === \"dark\" ? v : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction systemTheme(): ResolvedTheme {\n if (typeof window === \"undefined\" || !window.matchMedia) return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: ThemePreference | undefined;\n target?: (() => HTMLElement) | undefined;\n}\n\nexport function ThemeProvider({ children, defaultTheme = \"system\", target }: ThemeProviderProps) {\n const [chosen, setThemeState] = useState<ThemePreference | null>(null);\n const [system, setSystem] = useState<ResolvedTheme>(\"light\");\n const theme = chosen ?? defaultTheme;\n\n useEffect(() => {\n installFocusModality();\n setThemeState(readStored(defaultTheme));\n setSystem(systemTheme());\n const mq = window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n const onChange = () => setSystem(mq.matches ? \"dark\" : \"light\");\n const follow = (event: Event) => setThemeState((event as CustomEvent<ThemePreference>).detail);\n mq?.addEventListener(\"change\", onChange);\n window.addEventListener(THEME_EVENT, follow);\n return () => {\n mq?.removeEventListener(\"change\", onChange);\n window.removeEventListener(THEME_EVENT, follow);\n };\n }, [defaultTheme]);\n\n useEffect(() => {\n if (chosen === null) return;\n const el = target ? target() : document.documentElement;\n // Every color changes at once; without this, each control's color transition replays the\n // switch on its own, showing light controls on a dark page for a moment.\n el.setAttribute(\"data-k-theming\", \"\");\n if (chosen === \"system\") el.removeAttribute(\"data-theme\");\n else el.setAttribute(\"data-theme\", chosen);\n void getComputedStyle(el).color;\n const settled = requestAnimationFrame(() => el.removeAttribute(\"data-k-theming\"));\n return () => {\n cancelAnimationFrame(settled);\n el.removeAttribute(\"data-k-theming\");\n };\n }, [chosen, target]);\n\n const setTheme = useCallback((next: ThemePreference) => {\n setThemeState(next);\n try {\n if (next === \"system\") localStorage.removeItem(THEME_STORAGE_KEY);\n else localStorage.setItem(THEME_STORAGE_KEY, next);\n } catch {}\n window.dispatchEvent(new CustomEvent<ThemePreference>(THEME_EVENT, { detail: next }));\n }, []);\n\n const value = useMemo<ThemeContextValue>(() => ({ theme, resolvedTheme: theme === \"system\" ? system : theme, setTheme }), [theme, system, setTheme]);\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") ThemeProvider.displayName = \"ThemeProvider\";\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) {\n return { theme: \"system\", resolvedTheme: \"light\", setTheme: () => undefined };\n }\n return ctx;\n}\n"],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { i as t, r as n } from "./context-BELWW79w.js";
4
4
  import { dateFormatter as r, formatNumber as i, formatPercent as a, formatTimeZone as o } from "../format.js";
5
- import { A as ee, D as s, E as c, O as l, S as te, _ as u, b as ne, g as re, i as ie, n as ae, p as oe, r as se, s as ce, t as d, v as le } from "./core-CmK-8ObW.js";
5
+ import { A as ee, D as s, E as c, O as l, S as te, _ as u, b as ne, g as re, i as ie, n as ae, p as oe, r as se, s as ce, t as d, v as le } from "./core-B0bULn-t.js";
6
6
  import { t as ue } from "./linear-scale-BWKeRqDX.js";
7
- import { a as de, n as fe, o as pe, r as me, s as he, t as ge } from "./domain-obd_w9xk.js";
7
+ import { a as de, n as fe, o as pe, r as me, s as he, t as ge } from "./domain-BsM9UmAg.js";
8
8
  import { forwardRef as f, useId as _e, useMemo as ve, useState as ye } from "react";
9
9
  import { Fragment as be, jsx as p, jsxs as m } from "react/jsx-runtime";
10
10
  import { area as xe, curveMonotoneX as h, line as Se, stack as Ce, stackOffsetDiverging as we } from "d3-shape";
@@ -378,4 +378,4 @@ process.env.NODE_ENV !== "production" && (ze.displayName = "TimeseriesChart");
378
378
  //#endregion
379
379
  export { Me as n, ze as r, Ne as t };
380
380
 
381
- //# sourceMappingURL=timeseries-Ck-q0wWn.js.map
381
+ //# sourceMappingURL=timeseries-nDviPxvQ.js.map