lucent-ui 0.1.1 → 0.3.0

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.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsxs as h, jsx as n, Fragment as A } from "react/jsx-runtime";
2
- import { forwardRef as N, useRef as M, useEffect as F, useState as C, useCallback as K, useContext as D, createContext as L, useId as X, useLayoutEffect as Y } from "react";
3
- const J = {
1
+ import { jsxs as m, jsx as n, Fragment as A } from "react/jsx-runtime";
2
+ import { forwardRef as N, useRef as M, useEffect as F, useState as z, useCallback as X, useContext as V, createContext as W, useLayoutEffect as P, useId as J } from "react";
3
+ const Q = {
4
4
  primary: {
5
5
  background: "var(--lucent-accent-default)",
6
6
  color: "var(--lucent-text-on-accent)",
@@ -21,18 +21,18 @@ const J = {
21
21
  color: "#ffffff",
22
22
  border: "1px solid var(--lucent-danger-default)"
23
23
  }
24
- }, Q = {
24
+ }, Z = {
25
25
  sm: { height: "32px", padding: "0 var(--lucent-space-3)", fontSize: "var(--lucent-font-size-sm)" },
26
26
  md: { height: "38px", padding: "0 var(--lucent-space-4)", fontSize: "var(--lucent-font-size-md)" },
27
27
  lg: { height: "46px", padding: "0 var(--lucent-space-5)", fontSize: "var(--lucent-font-size-lg)" }
28
- }, Z = N(
29
- ({ variant: t = "primary", size: e = "md", loading: a = !1, fullWidth: r = !1, spread: o = !1, leftIcon: i, rightIcon: l, chevron: s = !1, disableHoverStyles: u = !1, children: f, disabled: p, style: m, ...c }, d) => {
30
- const g = p ?? a;
31
- return /* @__PURE__ */ h(
28
+ }, ee = N(
29
+ ({ variant: t = "primary", size: e = "md", loading: a = !1, fullWidth: r = !1, spread: o = !1, leftIcon: i, rightIcon: l, chevron: s = !1, disableHoverStyles: d = !1, children: p, disabled: f, style: h, ...c }, u) => {
30
+ const b = f ?? a;
31
+ return /* @__PURE__ */ m(
32
32
  "button",
33
33
  {
34
- ref: d,
35
- disabled: g,
34
+ ref: u,
35
+ disabled: b,
36
36
  "aria-busy": a,
37
37
  style: {
38
38
  display: "inline-flex",
@@ -44,81 +44,81 @@ const J = {
44
44
  lineHeight: 1,
45
45
  letterSpacing: "0.01em",
46
46
  borderRadius: "var(--lucent-radius-lg)",
47
- cursor: g ? "not-allowed" : "pointer",
47
+ cursor: b ? "not-allowed" : "pointer",
48
48
  width: r ? "100%" : void 0,
49
49
  transition: "background var(--lucent-duration-fast) var(--lucent-easing-default), border-color var(--lucent-duration-fast) var(--lucent-easing-default), box-shadow var(--lucent-duration-fast) var(--lucent-easing-default), transform 80ms var(--lucent-easing-default)",
50
50
  whiteSpace: "nowrap",
51
51
  boxSizing: "border-box",
52
52
  outline: "none",
53
53
  margin: 0,
54
- ...Q[e],
55
- ...J[t],
56
- ...m,
57
- ...g && {
54
+ ...Z[e],
55
+ ...Q[t],
56
+ ...h,
57
+ ...b && {
58
58
  background: "var(--lucent-bg-muted)",
59
59
  color: "var(--lucent-text-disabled)",
60
60
  borderColor: "transparent"
61
61
  }
62
62
  },
63
- onMouseEnter: (b) => {
64
- var y;
65
- !g && !u && ee(b.currentTarget, t), (y = c.onMouseEnter) == null || y.call(c, b);
63
+ onMouseEnter: (g) => {
64
+ var x;
65
+ !b && !d && te(g.currentTarget, t), (x = c.onMouseEnter) == null || x.call(c, g);
66
66
  },
67
- onMouseLeave: (b) => {
68
- var y;
69
- !g && !u && te(b.currentTarget, t), (y = c.onMouseLeave) == null || y.call(c, b);
67
+ onMouseLeave: (g) => {
68
+ var x;
69
+ !b && !d && ne(g.currentTarget, t), (x = c.onMouseLeave) == null || x.call(c, g);
70
70
  },
71
- onMouseDown: (b) => {
72
- var y;
73
- g || (b.currentTarget.style.transform = "scale(0.95)"), (y = c.onMouseDown) == null || y.call(c, b);
71
+ onMouseDown: (g) => {
72
+ var x;
73
+ b || (g.currentTarget.style.transform = "scale(0.95)"), (x = c.onMouseDown) == null || x.call(c, g);
74
74
  },
75
- onMouseUp: (b) => {
76
- var y;
77
- b.currentTarget.style.transform = "", (y = c.onMouseUp) == null || y.call(c, b);
75
+ onMouseUp: (g) => {
76
+ var x;
77
+ g.currentTarget.style.transform = "", (x = c.onMouseUp) == null || x.call(c, g);
78
78
  },
79
- onFocus: (b) => {
80
- var y;
81
- b.currentTarget.style.boxShadow = "0 0 0 3px var(--lucent-accent-subtle)", (y = c.onFocus) == null || y.call(c, b);
79
+ onFocus: (g) => {
80
+ var x;
81
+ g.currentTarget.style.boxShadow = "0 0 0 3px var(--lucent-accent-subtle)", (x = c.onFocus) == null || x.call(c, g);
82
82
  },
83
- onBlur: (b) => {
84
- var y;
85
- b.currentTarget.style.boxShadow = "", (y = c.onBlur) == null || y.call(c, b);
83
+ onBlur: (g) => {
84
+ var x;
85
+ g.currentTarget.style.boxShadow = "", (x = c.onBlur) == null || x.call(c, g);
86
86
  },
87
87
  ...c,
88
88
  children: [
89
89
  i,
90
- a ? /* @__PURE__ */ n(re, {}) : f,
90
+ a ? /* @__PURE__ */ n(oe, {}) : p,
91
91
  !a && l,
92
- !a && s && /* @__PURE__ */ n(ae, { size: e })
92
+ !a && s && /* @__PURE__ */ n(re, { size: e })
93
93
  ]
94
94
  }
95
95
  );
96
96
  }
97
97
  );
98
- Z.displayName = "Button";
99
- function ee(t, e) {
98
+ ee.displayName = "Button";
99
+ function te(t, e) {
100
100
  e === "primary" ? (t.style.background = "var(--lucent-accent-hover)", t.style.borderColor = "var(--lucent-accent-hover)") : e === "secondary" ? t.style.background = "var(--lucent-bg-subtle)" : e === "ghost" ? t.style.background = "var(--lucent-bg-muted)" : e === "danger" && (t.style.background = "var(--lucent-danger-hover)", t.style.borderColor = "var(--lucent-danger-hover)");
101
101
  }
102
- function te(t, e) {
102
+ function ne(t, e) {
103
103
  e === "primary" ? (t.style.background = "var(--lucent-accent-default)", t.style.borderColor = "var(--lucent-accent-default)") : e === "secondary" ? t.style.background = "var(--lucent-surface-default)" : e === "ghost" ? t.style.background = "transparent" : e === "danger" && (t.style.background = "var(--lucent-danger-default)", t.style.borderColor = "var(--lucent-danger-default)");
104
104
  }
105
- const ne = { sm: 12, md: 14, lg: 16 };
106
- function ae({ size: t }) {
107
- const e = ne[t];
105
+ const ae = { sm: 12, md: 14, lg: 16 };
106
+ function re({ size: t }) {
107
+ const e = ae[t];
108
108
  return /* @__PURE__ */ n("svg", { width: e, height: e, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": !0, style: { flexShrink: 0, marginLeft: -2 }, children: /* @__PURE__ */ n("polyline", { points: "6 9 12 15 18 9" }) });
109
109
  }
110
- function re() {
111
- return /* @__PURE__ */ h("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", "aria-hidden": !0, style: { animation: "lucent-spin 0.7s linear infinite", flexShrink: 0 }, children: [
110
+ function oe() {
111
+ return /* @__PURE__ */ m("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", "aria-hidden": !0, style: { animation: "lucent-spin 0.7s linear infinite", flexShrink: 0 }, children: [
112
112
  /* @__PURE__ */ n("style", { children: "@keyframes lucent-spin { to { transform: rotate(360deg); } }" }),
113
113
  /* @__PURE__ */ n("path", { d: "M12 2a10 10 0 0 1 10 10" })
114
114
  ] });
115
115
  }
116
- const ot = {
116
+ const st = {
117
117
  id: "button",
118
118
  name: "Button",
119
119
  tier: "atom",
120
120
  domain: "neutral",
121
- specVersion: "0.1",
121
+ specVersion: "1.0",
122
122
  description: "A clickable control that triggers an action. The primary interactive primitive in Lucent UI.",
123
123
  designIntent: 'Buttons communicate available actions. Variant conveys hierarchy: use "primary" for the single most important action in a view, "secondary" for supporting actions, "ghost" for low-emphasis actions in dense UIs, and "danger" exclusively for destructive or irreversible operations. Size should match surrounding content density — prefer "md" as the default and reserve "sm" for toolbars or tables.',
124
124
  props: [
@@ -224,14 +224,14 @@ const ot = {
224
224
  ariaAttributes: ["aria-disabled", "aria-busy"],
225
225
  keyboardInteractions: ["Enter — activates the button", "Space — activates the button"]
226
226
  }
227
- }, V = N(
228
- ({ label: t, helperText: e, errorText: a, leftElement: r, rightElement: o, id: i, style: l, ...s }, u) => {
229
- const f = i ?? `lucent-input-${Math.random().toString(36).slice(2, 7)}`, p = !!a, m = !!s.disabled;
230
- return /* @__PURE__ */ h("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
227
+ }, O = N(
228
+ ({ label: t, helperText: e, errorText: a, leftElement: r, rightElement: o, id: i, style: l, ...s }, d) => {
229
+ const p = i ?? `lucent-input-${Math.random().toString(36).slice(2, 7)}`, f = !!a, h = !!s.disabled;
230
+ return /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
231
231
  t && /* @__PURE__ */ n(
232
232
  "label",
233
233
  {
234
- htmlFor: f,
234
+ htmlFor: p,
235
235
  style: {
236
236
  fontSize: "var(--lucent-font-size-sm)",
237
237
  fontWeight: "var(--lucent-font-weight-medium)",
@@ -241,11 +241,11 @@ const ot = {
241
241
  children: t
242
242
  }
243
243
  ),
244
- /* @__PURE__ */ h("div", { style: { position: "relative", display: "flex", alignItems: "center" }, children: [
244
+ /* @__PURE__ */ m("div", { style: { position: "relative", display: "flex", alignItems: "center" }, children: [
245
245
  r && /* @__PURE__ */ n("span", { style: {
246
246
  position: "absolute",
247
247
  left: "var(--lucent-space-3)",
248
- color: m ? "var(--lucent-text-disabled)" : "var(--lucent-text-secondary)",
248
+ color: h ? "var(--lucent-text-disabled)" : "var(--lucent-text-secondary)",
249
249
  display: "flex",
250
250
  alignItems: "center",
251
251
  pointerEvents: "none"
@@ -253,20 +253,20 @@ const ot = {
253
253
  /* @__PURE__ */ n(
254
254
  "input",
255
255
  {
256
- ref: u,
257
- id: f,
258
- "aria-invalid": p,
259
- "aria-describedby": p ? `${f}-error` : e ? `${f}-helper` : void 0,
256
+ ref: d,
257
+ id: p,
258
+ "aria-invalid": f,
259
+ "aria-describedby": f ? `${p}-error` : e ? `${p}-helper` : void 0,
260
260
  style: {
261
261
  width: "100%",
262
262
  height: "40px",
263
263
  padding: `0 ${o ? "var(--lucent-space-10)" : "var(--lucent-space-3)"} 0 ${r ? "var(--lucent-space-10)" : "var(--lucent-space-3)"}`,
264
264
  fontSize: "var(--lucent-font-size-md)",
265
265
  fontFamily: "var(--lucent-font-family-base)",
266
- color: m ? "var(--lucent-text-disabled)" : "var(--lucent-text-primary)",
267
- background: m ? "var(--lucent-bg-muted)" : "var(--lucent-surface-default)",
268
- border: `1px solid ${m ? "transparent" : p ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"}`,
269
- cursor: m ? "not-allowed" : void 0,
266
+ color: h ? "var(--lucent-text-disabled)" : "var(--lucent-text-primary)",
267
+ background: h ? "var(--lucent-bg-muted)" : "var(--lucent-surface-default)",
268
+ border: `1px solid ${h ? "transparent" : f ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"}`,
269
+ cursor: h ? "not-allowed" : void 0,
270
270
  borderRadius: "var(--lucent-radius-lg)",
271
271
  outline: "none",
272
272
  boxSizing: "border-box",
@@ -274,20 +274,20 @@ const ot = {
274
274
  ...l
275
275
  },
276
276
  onMouseEnter: (c) => {
277
- var d;
278
- !s.disabled && c.currentTarget !== document.activeElement && (c.currentTarget.style.borderColor = p ? "var(--lucent-danger-default)" : "var(--lucent-border-strong)"), (d = s.onMouseEnter) == null || d.call(s, c);
277
+ var u;
278
+ !s.disabled && c.currentTarget !== document.activeElement && (c.currentTarget.style.borderColor = f ? "var(--lucent-danger-default)" : "var(--lucent-border-strong)"), (u = s.onMouseEnter) == null || u.call(s, c);
279
279
  },
280
280
  onMouseLeave: (c) => {
281
- var d;
282
- !s.disabled && c.currentTarget !== document.activeElement && (c.currentTarget.style.borderColor = p ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"), (d = s.onMouseLeave) == null || d.call(s, c);
281
+ var u;
282
+ !s.disabled && c.currentTarget !== document.activeElement && (c.currentTarget.style.borderColor = f ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"), (u = s.onMouseLeave) == null || u.call(s, c);
283
283
  },
284
284
  onFocus: (c) => {
285
- var d;
286
- c.currentTarget.style.borderColor = p ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", c.currentTarget.style.boxShadow = `0 0 0 3px ${p ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (d = s.onFocus) == null || d.call(s, c);
285
+ var u;
286
+ c.currentTarget.style.borderColor = f ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", c.currentTarget.style.boxShadow = `0 0 0 3px ${f ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (u = s.onFocus) == null || u.call(s, c);
287
287
  },
288
288
  onBlur: (c) => {
289
- var d;
290
- c.currentTarget.style.borderColor = p ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", c.currentTarget.style.boxShadow = "none", (d = s.onBlur) == null || d.call(s, c);
289
+ var u;
290
+ c.currentTarget.style.borderColor = f ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", c.currentTarget.style.boxShadow = "none", (u = s.onBlur) == null || u.call(s, c);
291
291
  },
292
292
  ...s
293
293
  }
@@ -295,15 +295,15 @@ const ot = {
295
295
  o && /* @__PURE__ */ n("span", { style: {
296
296
  position: "absolute",
297
297
  right: "var(--lucent-space-3)",
298
- color: m ? "var(--lucent-text-disabled)" : "var(--lucent-text-secondary)",
298
+ color: h ? "var(--lucent-text-disabled)" : "var(--lucent-text-secondary)",
299
299
  display: "flex",
300
300
  alignItems: "center"
301
301
  }, children: o })
302
302
  ] }),
303
- p && /* @__PURE__ */ n(
303
+ f && /* @__PURE__ */ n(
304
304
  "span",
305
305
  {
306
- id: `${f}-error`,
306
+ id: `${p}-error`,
307
307
  role: "alert",
308
308
  style: {
309
309
  fontSize: "var(--lucent-font-size-sm)",
@@ -313,10 +313,10 @@ const ot = {
313
313
  children: a
314
314
  }
315
315
  ),
316
- !p && e && /* @__PURE__ */ n(
316
+ !f && e && /* @__PURE__ */ n(
317
317
  "span",
318
318
  {
319
- id: `${f}-helper`,
319
+ id: `${p}-helper`,
320
320
  style: {
321
321
  fontSize: "var(--lucent-font-size-sm)",
322
322
  color: "var(--lucent-text-secondary)",
@@ -328,8 +328,8 @@ const ot = {
328
328
  ] });
329
329
  }
330
330
  );
331
- V.displayName = "Input";
332
- const it = {
331
+ O.displayName = "Input";
332
+ const ct = {
333
333
  id: "input",
334
334
  name: "Input",
335
335
  tier: "atom",
@@ -361,15 +361,15 @@ const it = {
361
361
  ariaAttributes: ["aria-invalid", "aria-describedby", "aria-label"],
362
362
  keyboardInteractions: ["Tab — focuses the input"]
363
363
  }
364
- }, oe = N(
365
- ({ label: t, helperText: e, errorText: a, autoResize: r = !1, maxLength: o, showCount: i = !1, id: l, value: s, onChange: u, style: f, ...p }, m) => {
366
- const c = M(null), d = m ?? c, g = l ?? `lucent-textarea-${Math.random().toString(36).slice(2, 7)}`, b = !!a, y = typeof s == "string" ? s.length : 0;
364
+ }, ie = N(
365
+ ({ label: t, helperText: e, errorText: a, autoResize: r = !1, maxLength: o, showCount: i = !1, id: l, value: s, onChange: d, style: p, ...f }, h) => {
366
+ const c = M(null), u = h ?? c, b = l ?? `lucent-textarea-${Math.random().toString(36).slice(2, 7)}`, g = !!a, x = typeof s == "string" ? s.length : 0;
367
367
  return F(() => {
368
368
  if (!r) return;
369
- const v = d.current;
370
- v && (v.style.height = "auto", v.style.height = `${v.scrollHeight}px`);
371
- }, [s, r, d]), /* @__PURE__ */ h("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
372
- t && /* @__PURE__ */ n("label", { htmlFor: g, style: {
369
+ const w = u.current;
370
+ w && (w.style.height = "auto", w.style.height = `${w.scrollHeight}px`);
371
+ }, [s, r, u]), /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
372
+ t && /* @__PURE__ */ n("label", { htmlFor: b, style: {
373
373
  fontSize: "var(--lucent-font-size-sm)",
374
374
  fontWeight: "var(--lucent-font-weight-medium)",
375
375
  color: "var(--lucent-text-primary)",
@@ -378,13 +378,13 @@ const it = {
378
378
  /* @__PURE__ */ n(
379
379
  "textarea",
380
380
  {
381
- ref: d,
382
- id: g,
381
+ ref: u,
382
+ id: b,
383
383
  maxLength: o,
384
384
  value: s,
385
- onChange: u,
386
- "aria-invalid": b,
387
- "aria-describedby": b ? `${g}-error` : e ? `${g}-helper` : void 0,
385
+ onChange: d,
386
+ "aria-invalid": g,
387
+ "aria-describedby": g ? `${b}-error` : e ? `${b}-helper` : void 0,
388
388
  style: {
389
389
  width: "100%",
390
390
  minHeight: "100px",
@@ -393,47 +393,47 @@ const it = {
393
393
  fontFamily: "var(--lucent-font-family-base)",
394
394
  color: "var(--lucent-text-primary)",
395
395
  background: "var(--lucent-surface-default)",
396
- border: `1px solid ${b ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"}`,
396
+ border: `1px solid ${g ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"}`,
397
397
  borderRadius: "var(--lucent-radius-md)",
398
398
  outline: "none",
399
399
  resize: r ? "none" : "vertical",
400
400
  boxSizing: "border-box",
401
401
  lineHeight: "var(--lucent-line-height-base)",
402
402
  transition: "border-color var(--lucent-duration-fast) var(--lucent-easing-default)",
403
- ...f
403
+ ...p
404
404
  },
405
- onFocus: (v) => {
406
- var k;
407
- v.currentTarget.style.borderColor = b ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", v.currentTarget.style.boxShadow = `0 0 0 3px ${b ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (k = p.onFocus) == null || k.call(p, v);
405
+ onFocus: (w) => {
406
+ var v;
407
+ w.currentTarget.style.borderColor = g ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", w.currentTarget.style.boxShadow = `0 0 0 3px ${g ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (v = f.onFocus) == null || v.call(f, w);
408
408
  },
409
- onBlur: (v) => {
410
- var k;
411
- v.currentTarget.style.borderColor = b ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", v.currentTarget.style.boxShadow = "none", (k = p.onBlur) == null || k.call(p, v);
409
+ onBlur: (w) => {
410
+ var v;
411
+ w.currentTarget.style.borderColor = g ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", w.currentTarget.style.boxShadow = "none", (v = f.onBlur) == null || v.call(f, w);
412
412
  },
413
- ...p
413
+ ...f
414
414
  }
415
415
  ),
416
- /* @__PURE__ */ h("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start" }, children: [
417
- /* @__PURE__ */ h("div", { children: [
418
- b && /* @__PURE__ */ n("span", { id: `${g}-error`, role: "alert", style: { fontSize: "var(--lucent-font-size-sm)", color: "var(--lucent-danger-text)", fontFamily: "var(--lucent-font-family-base)" }, children: a }),
419
- !b && e && /* @__PURE__ */ n("span", { id: `${g}-helper`, style: { fontSize: "var(--lucent-font-size-sm)", color: "var(--lucent-text-secondary)", fontFamily: "var(--lucent-font-family-base)" }, children: e })
416
+ /* @__PURE__ */ m("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "flex-start" }, children: [
417
+ /* @__PURE__ */ m("div", { children: [
418
+ g && /* @__PURE__ */ n("span", { id: `${b}-error`, role: "alert", style: { fontSize: "var(--lucent-font-size-sm)", color: "var(--lucent-danger-text)", fontFamily: "var(--lucent-font-family-base)" }, children: a }),
419
+ !g && e && /* @__PURE__ */ n("span", { id: `${b}-helper`, style: { fontSize: "var(--lucent-font-size-sm)", color: "var(--lucent-text-secondary)", fontFamily: "var(--lucent-font-family-base)" }, children: e })
420
420
  ] }),
421
- (i || o) && /* @__PURE__ */ h("span", { style: {
421
+ (i || o) && /* @__PURE__ */ m("span", { style: {
422
422
  fontSize: "var(--lucent-font-size-xs)",
423
- color: o && y >= o ? "var(--lucent-danger-text)" : "var(--lucent-text-secondary)",
423
+ color: o && x >= o ? "var(--lucent-danger-text)" : "var(--lucent-text-secondary)",
424
424
  fontFamily: "var(--lucent-font-family-mono)",
425
425
  flexShrink: 0,
426
426
  marginLeft: "var(--lucent-space-2)"
427
427
  }, children: [
428
- y,
428
+ x,
429
429
  o ? `/${o}` : ""
430
430
  ] })
431
431
  ] })
432
432
  ] });
433
433
  }
434
434
  );
435
- oe.displayName = "Textarea";
436
- const st = {
435
+ ie.displayName = "Textarea";
436
+ const dt = {
437
437
  id: "textarea",
438
438
  name: "Textarea",
439
439
  tier: "atom",
@@ -465,7 +465,7 @@ const st = {
465
465
  ariaAttributes: ["aria-multiline", "aria-invalid", "aria-describedby"],
466
466
  keyboardInteractions: ["Tab — focuses the textarea"]
467
467
  }
468
- }, ie = {
468
+ }, le = {
469
469
  neutral: { bg: "var(--lucent-bg-muted)", color: "var(--lucent-text-secondary)", border: "var(--lucent-border-default)" },
470
470
  accent: { bg: "var(--lucent-accent-default)", color: "var(--lucent-text-on-accent)", border: "var(--lucent-accent-default)" },
471
471
  success: { bg: "var(--lucent-success-subtle)", color: "var(--lucent-success-text)", border: "var(--lucent-success-subtle)" },
@@ -476,9 +476,9 @@ const st = {
476
476
  sm: { fontSize: "var(--lucent-font-size-xs)", padding: "0 var(--lucent-space-2)", height: "18px" },
477
477
  md: { fontSize: "var(--lucent-font-size-sm)", padding: "0 var(--lucent-space-2)", height: "22px" }
478
478
  };
479
- function lt({ variant: t = "neutral", size: e = "md", dot: a = !1, children: r, style: o }) {
480
- const i = ie[t], l = se[e];
481
- return /* @__PURE__ */ h("span", { style: {
479
+ function ut({ variant: t = "neutral", size: e = "md", dot: a = !1, children: r, style: o }) {
480
+ const i = le[t], l = se[e];
481
+ return /* @__PURE__ */ m("span", { style: {
482
482
  display: "inline-flex",
483
483
  alignItems: "center",
484
484
  gap: "var(--lucent-space-1)",
@@ -506,7 +506,7 @@ function lt({ variant: t = "neutral", size: e = "md", dot: a = !1, children: r,
506
506
  r
507
507
  ] });
508
508
  }
509
- const ct = {
509
+ const pt = {
510
510
  id: "badge",
511
511
  name: "Badge",
512
512
  tier: "atom",
@@ -531,27 +531,27 @@ const ct = {
531
531
  role: "status",
532
532
  notes: "Use aria-label on the parent element when badge meaning depends on context."
533
533
  }
534
- }, le = {
534
+ }, ce = {
535
535
  xs: 24,
536
536
  sm: 32,
537
537
  md: 40,
538
538
  lg: 56,
539
539
  xl: 80
540
- }, ce = {
540
+ }, de = {
541
541
  xs: "var(--lucent-font-size-xs)",
542
542
  sm: "var(--lucent-font-size-xs)",
543
543
  md: "var(--lucent-font-size-sm)",
544
544
  lg: "var(--lucent-font-size-lg)",
545
545
  xl: "var(--lucent-font-size-xl)"
546
546
  };
547
- function de(t, e) {
547
+ function ue(t, e) {
548
548
  var r, o, i;
549
549
  if (e) return e.slice(0, 2).toUpperCase();
550
550
  const a = t.trim().split(/\s+/);
551
551
  return a.length === 1 ? (((r = a[0]) == null ? void 0 : r[0]) ?? "").toUpperCase() : ((((o = a[0]) == null ? void 0 : o[0]) ?? "") + (((i = a[a.length - 1]) == null ? void 0 : i[0]) ?? "")).toUpperCase();
552
552
  }
553
- function dt({ src: t, alt: e, size: a = "md", initials: r, style: o, ...i }) {
554
- const l = le[a], s = de(e, r), u = {
553
+ function ft({ src: t, alt: e, size: a = "md", initials: r, style: o, ...i }) {
554
+ const l = ce[a], s = ue(e, r), d = {
555
555
  width: l,
556
556
  height: l,
557
557
  borderRadius: "var(--lucent-radius-full)",
@@ -571,7 +571,7 @@ function dt({ src: t, alt: e, size: a = "md", initials: r, style: o, ...i }) {
571
571
  alt: e,
572
572
  width: l,
573
573
  height: l,
574
- style: { ...u, objectFit: "cover" },
574
+ style: { ...d, objectFit: "cover" },
575
575
  ...i
576
576
  }
577
577
  ) : /* @__PURE__ */ n(
@@ -580,10 +580,10 @@ function dt({ src: t, alt: e, size: a = "md", initials: r, style: o, ...i }) {
580
580
  role: "img",
581
581
  "aria-label": e,
582
582
  style: {
583
- ...u,
583
+ ...d,
584
584
  background: "var(--lucent-accent-default)",
585
585
  color: "var(--lucent-text-on-accent)",
586
- fontSize: ce[a],
586
+ fontSize: de[a],
587
587
  fontWeight: "var(--lucent-font-weight-semibold)",
588
588
  fontFamily: "var(--lucent-font-family-base)"
589
589
  },
@@ -591,7 +591,7 @@ function dt({ src: t, alt: e, size: a = "md", initials: r, style: o, ...i }) {
591
591
  }
592
592
  );
593
593
  }
594
- const ut = {
594
+ const mt = {
595
595
  id: "avatar",
596
596
  name: "Avatar",
597
597
  tier: "atom",
@@ -617,21 +617,21 @@ const ut = {
617
617
  ariaAttributes: ["aria-label"],
618
618
  notes: 'When src is present, renders as <img> with alt. When showing initials, renders as <span role="img" aria-label>.'
619
619
  }
620
- }, ue = {
620
+ }, pe = {
621
621
  xs: 12,
622
622
  sm: 16,
623
623
  md: 24,
624
624
  lg: 36
625
- }, pe = {
625
+ }, fe = {
626
626
  xs: 2.5,
627
627
  sm: 2.5,
628
628
  md: 2,
629
629
  lg: 2
630
630
  };
631
- function fe({ size: t = "md", label: e = "Loading…", color: a }) {
632
- const r = ue[t], o = pe[t];
633
- return /* @__PURE__ */ h("span", { role: "status", "aria-label": e, style: { display: "inline-flex", alignItems: "center", justifyContent: "center" }, children: [
634
- /* @__PURE__ */ h(
631
+ function me({ size: t = "md", label: e = "Loading…", color: a }) {
632
+ const r = pe[t], o = fe[t];
633
+ return /* @__PURE__ */ m("span", { role: "status", "aria-label": e, style: { display: "inline-flex", alignItems: "center", justifyContent: "center" }, children: [
634
+ /* @__PURE__ */ m(
635
635
  "svg",
636
636
  {
637
637
  width: r,
@@ -658,7 +658,7 @@ function fe({ size: t = "md", label: e = "Loading…", color: a }) {
658
658
  /* @__PURE__ */ n("span", { style: { position: "absolute", width: 1, height: 1, overflow: "hidden", clip: "rect(0,0,0,0)", whiteSpace: "nowrap" }, children: e })
659
659
  ] });
660
660
  }
661
- const pt = {
661
+ const ht = {
662
662
  id: "spinner",
663
663
  name: "Spinner",
664
664
  tier: "atom",
@@ -683,7 +683,7 @@ const pt = {
683
683
  notes: 'The visible SVG is aria-hidden. The label is conveyed via a visually-hidden span inside role="status".'
684
684
  }
685
685
  };
686
- function ft({ orientation: t = "horizontal", label: e, spacing: a = "var(--lucent-space-4)", style: r }) {
686
+ function gt({ orientation: t = "horizontal", label: e, spacing: a = "var(--lucent-space-4)", style: r }) {
687
687
  return t === "vertical" ? /* @__PURE__ */ n(
688
688
  "span",
689
689
  {
@@ -699,7 +699,7 @@ function ft({ orientation: t = "horizontal", label: e, spacing: a = "var(--lucen
699
699
  ...r
700
700
  }
701
701
  }
702
- ) : e ? /* @__PURE__ */ h(
702
+ ) : e ? /* @__PURE__ */ m(
703
703
  "div",
704
704
  {
705
705
  role: "separator",
@@ -738,7 +738,7 @@ function ft({ orientation: t = "horizontal", label: e, spacing: a = "var(--lucen
738
738
  }
739
739
  );
740
740
  }
741
- const mt = {
741
+ const bt = {
742
742
  id: "divider",
743
743
  name: "Divider",
744
744
  tier: "atom",
@@ -761,7 +761,7 @@ const mt = {
761
761
  role: "separator",
762
762
  ariaAttributes: ["aria-orientation", "aria-label"]
763
763
  }
764
- }, me = { sm: 14, md: 16 }, he = `
764
+ }, he = { sm: 14, md: 16 }, ge = `
765
765
  @keyframes lucent-cb-pop {
766
766
  0% { transform: scale(1); }
767
767
  35% { transform: scale(0.82); }
@@ -773,7 +773,7 @@ const mt = {
773
773
  60% { transform: scale(1.15) rotate(2deg); }
774
774
  100% { opacity: 1; transform: scale(1) rotate(0deg); }
775
775
  }
776
- `, ge = N(
776
+ `, be = N(
777
777
  ({
778
778
  label: t,
779
779
  size: e = "md",
@@ -783,41 +783,41 @@ const mt = {
783
783
  disabled: i,
784
784
  id: l,
785
785
  onChange: s,
786
- style: u,
787
- ...f
788
- }, p) => {
789
- const m = M(null), c = l ?? `lucent-checkbox-${Math.random().toString(36).slice(2, 7)}`, d = me[e], g = r !== void 0, [b, y] = C(o ?? !1), v = g ? !!r : b, k = M(v), [T, S] = C(0);
786
+ style: d,
787
+ ...p
788
+ }, f) => {
789
+ const h = M(null), c = l ?? `lucent-checkbox-${Math.random().toString(36).slice(2, 7)}`, u = he[e], b = r !== void 0, [g, x] = z(o ?? !1), w = b ? !!r : g, v = M(w), [k, y] = z(0);
790
790
  F(() => {
791
- !i && k.current !== v && (k.current = v, S((I) => I + 1));
792
- }, [v, i]);
793
- const q = K(
794
- (I) => {
795
- m.current = I, typeof p == "function" ? p(I) : p && (p.current = I);
791
+ !i && v.current !== w && (v.current = w, y((q) => q + 1));
792
+ }, [w, i]);
793
+ const I = X(
794
+ (q) => {
795
+ h.current = q, typeof f == "function" ? f(q) : f && (f.current = q);
796
796
  },
797
- [p]
797
+ [f]
798
798
  );
799
799
  F(() => {
800
- m.current && (m.current.indeterminate = a);
800
+ h.current && (h.current.indeterminate = a);
801
801
  }, [a]);
802
- const E = (I) => {
803
- g || y(I.target.checked), s == null || s(I);
804
- }, R = i ? "var(--lucent-text-disabled)" : "var(--lucent-text-on-accent)", _ = {
805
- width: d,
806
- height: d,
802
+ const T = (q) => {
803
+ b || x(q.target.checked), s == null || s(q);
804
+ }, R = i ? "var(--lucent-text-disabled)" : "var(--lucent-text-on-accent)", B = {
805
+ width: u,
806
+ height: u,
807
807
  borderRadius: "var(--lucent-radius-sm)",
808
- border: `1.5px solid ${i ? "transparent" : v || a ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)"}`,
809
- background: i ? "var(--lucent-bg-muted)" : v || a ? "var(--lucent-accent-default)" : "var(--lucent-surface-default)",
808
+ border: `1.5px solid ${i ? "transparent" : w || a ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)"}`,
809
+ background: i ? "var(--lucent-bg-muted)" : w || a ? "var(--lucent-accent-default)" : "var(--lucent-surface-default)",
810
810
  display: "inline-flex",
811
811
  alignItems: "center",
812
812
  justifyContent: "center",
813
813
  flexShrink: 0,
814
814
  transition: "background var(--lucent-duration-fast) var(--lucent-easing-default), border-color var(--lucent-duration-fast) var(--lucent-easing-default)",
815
815
  // Re-key forces the animation to restart on every toggle.
816
- animation: T > 0 ? "lucent-cb-pop 220ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" : void 0
816
+ animation: k > 0 ? "lucent-cb-pop 220ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" : void 0
817
817
  };
818
- return /* @__PURE__ */ h(A, { children: [
819
- /* @__PURE__ */ n("style", { children: he }),
820
- /* @__PURE__ */ h(
818
+ return /* @__PURE__ */ m(A, { children: [
819
+ /* @__PURE__ */ n("style", { children: ge }),
820
+ /* @__PURE__ */ m(
821
821
  "label",
822
822
  {
823
823
  style: {
@@ -829,28 +829,28 @@ const mt = {
829
829
  fontSize: e === "sm" ? "var(--lucent-font-size-sm)" : "var(--lucent-font-size-md)",
830
830
  color: i ? "var(--lucent-text-disabled)" : "var(--lucent-text-primary)",
831
831
  userSelect: "none",
832
- ...u
832
+ ...d
833
833
  },
834
834
  children: [
835
835
  /* @__PURE__ */ n(
836
836
  "input",
837
837
  {
838
- ref: q,
838
+ ref: I,
839
839
  type: "checkbox",
840
840
  id: c,
841
- checked: g ? r : b,
841
+ checked: b ? r : g,
842
842
  disabled: i,
843
- onChange: E,
843
+ onChange: T,
844
844
  style: { position: "absolute", opacity: 0, width: 0, height: 0, margin: 0, pointerEvents: "none" },
845
- ...f
845
+ ...p
846
846
  }
847
847
  ),
848
- /* @__PURE__ */ h("span", { "aria-hidden": !0, style: _, children: [
849
- v && !a && /* @__PURE__ */ n(
848
+ /* @__PURE__ */ m("span", { "aria-hidden": !0, style: B, children: [
849
+ w && !a && /* @__PURE__ */ n(
850
850
  "svg",
851
851
  {
852
- width: d - 4,
853
- height: d - 4,
852
+ width: u - 4,
853
+ height: u - 4,
854
854
  viewBox: "0 0 10 10",
855
855
  fill: "none",
856
856
  style: { animation: "lucent-cb-mark 200ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" },
@@ -860,15 +860,15 @@ const mt = {
860
860
  a && /* @__PURE__ */ n(
861
861
  "svg",
862
862
  {
863
- width: d - 4,
864
- height: d - 4,
863
+ width: u - 4,
864
+ height: u - 4,
865
865
  viewBox: "0 0 10 10",
866
866
  fill: "none",
867
867
  style: { animation: "lucent-cb-mark 200ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" },
868
868
  children: /* @__PURE__ */ n("path", { d: "M2 5H8", stroke: R, strokeWidth: 1.5, strokeLinecap: "round" })
869
869
  }
870
870
  )
871
- ] }, T),
871
+ ] }, k),
872
872
  t
873
873
  ]
874
874
  }
@@ -876,8 +876,8 @@ const mt = {
876
876
  ] });
877
877
  }
878
878
  );
879
- ge.displayName = "Checkbox";
880
- const ht = {
879
+ be.displayName = "Checkbox";
880
+ const vt = {
881
881
  id: "checkbox",
882
882
  name: "Checkbox",
883
883
  tier: "atom",
@@ -946,7 +946,7 @@ const ht = {
946
946
  ariaAttributes: ["aria-checked", "aria-disabled"],
947
947
  keyboardInteractions: ["Space — toggles checked state"]
948
948
  }
949
- }, be = `
949
+ }, ve = `
950
950
  @keyframes lucent-radio-pop {
951
951
  0% { transform: scale(1); }
952
952
  35% { transform: scale(0.82); }
@@ -958,7 +958,7 @@ const ht = {
958
958
  60% { transform: scale(1.2); }
959
959
  100% { opacity: 1; transform: scale(1); }
960
960
  }
961
- `, W = L(null);
961
+ `, H = W(null);
962
962
  function ye({
963
963
  name: t,
964
964
  value: e,
@@ -968,7 +968,7 @@ function ye({
968
968
  label: i,
969
969
  children: l
970
970
  }) {
971
- return /* @__PURE__ */ n(W.Provider, { value: { name: t, value: e, onChange: a, disabled: r ?? !1 }, children: /* @__PURE__ */ n(
971
+ return /* @__PURE__ */ n(H.Provider, { value: { name: t, value: e, onChange: a, disabled: r ?? !1 }, children: /* @__PURE__ */ n(
972
972
  "div",
973
973
  {
974
974
  role: "radiogroup",
@@ -983,47 +983,47 @@ function ye({
983
983
  }
984
984
  ) });
985
985
  }
986
- const ve = { sm: 14, md: 16 };
987
- function gt({ value: t, label: e, size: a = "md", disabled: r, id: o, onChange: i, checked: l, ...s }) {
988
- const u = D(W), f = o ?? `lucent-radio-${Math.random().toString(36).slice(2, 7)}`, p = ve[a], m = r ?? (u == null ? void 0 : u.disabled) ?? !1, c = u ? u.value === t : !!l, d = M(c), [g, b] = C(0);
986
+ const xe = { sm: 14, md: 16 };
987
+ function yt({ value: t, label: e, size: a = "md", disabled: r, id: o, onChange: i, checked: l, ...s }) {
988
+ const d = V(H), p = o ?? `lucent-radio-${Math.random().toString(36).slice(2, 7)}`, f = xe[a], h = r ?? (d == null ? void 0 : d.disabled) ?? !1, c = d ? d.value === t : !!l, u = M(c), [b, g] = z(0);
989
989
  F(() => {
990
- !m && d.current !== c && (d.current = c, b((T) => T + 1));
991
- }, [c, m]);
992
- const y = (T) => {
993
- u == null || u.onChange(t), i == null || i(T);
994
- }, v = {
995
- width: p / 2,
996
- height: p / 2,
990
+ !h && u.current !== c && (u.current = c, g((k) => k + 1));
991
+ }, [c, h]);
992
+ const x = (k) => {
993
+ d == null || d.onChange(t), i == null || i(k);
994
+ }, w = {
995
+ width: f / 2,
996
+ height: f / 2,
997
997
  borderRadius: "50%",
998
- background: m ? "var(--lucent-text-disabled)" : "var(--lucent-text-on-accent)",
998
+ background: h ? "var(--lucent-text-disabled)" : "var(--lucent-text-on-accent)",
999
999
  animation: c ? "lucent-radio-dot 200ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" : void 0,
1000
1000
  opacity: c ? 1 : 0
1001
- }, k = {
1002
- width: p,
1003
- height: p,
1001
+ }, v = {
1002
+ width: f,
1003
+ height: f,
1004
1004
  borderRadius: "50%",
1005
- border: `1.5px solid ${m ? "transparent" : c ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)"}`,
1006
- background: m ? "var(--lucent-bg-muted)" : c ? "var(--lucent-accent-default)" : "var(--lucent-surface-default)",
1005
+ border: `1.5px solid ${h ? "transparent" : c ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)"}`,
1006
+ background: h ? "var(--lucent-bg-muted)" : c ? "var(--lucent-accent-default)" : "var(--lucent-surface-default)",
1007
1007
  display: "inline-flex",
1008
1008
  alignItems: "center",
1009
1009
  justifyContent: "center",
1010
1010
  flexShrink: 0,
1011
1011
  transition: "background var(--lucent-duration-fast) var(--lucent-easing-default), border-color var(--lucent-duration-fast) var(--lucent-easing-default)",
1012
- animation: g > 0 ? "lucent-radio-pop 220ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" : void 0
1012
+ animation: b > 0 ? "lucent-radio-pop 220ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards" : void 0
1013
1013
  };
1014
- return /* @__PURE__ */ h(A, { children: [
1015
- /* @__PURE__ */ n("style", { children: be }),
1016
- /* @__PURE__ */ h(
1014
+ return /* @__PURE__ */ m(A, { children: [
1015
+ /* @__PURE__ */ n("style", { children: ve }),
1016
+ /* @__PURE__ */ m(
1017
1017
  "label",
1018
1018
  {
1019
1019
  style: {
1020
1020
  display: "inline-flex",
1021
1021
  alignItems: "center",
1022
1022
  gap: "var(--lucent-space-2)",
1023
- cursor: m ? "not-allowed" : "pointer",
1023
+ cursor: h ? "not-allowed" : "pointer",
1024
1024
  fontFamily: "var(--lucent-font-family-base)",
1025
1025
  fontSize: a === "sm" ? "var(--lucent-font-size-sm)" : "var(--lucent-font-size-md)",
1026
- color: m ? "var(--lucent-text-disabled)" : "var(--lucent-text-primary)",
1026
+ color: h ? "var(--lucent-text-disabled)" : "var(--lucent-text-primary)",
1027
1027
  userSelect: "none"
1028
1028
  },
1029
1029
  children: [
@@ -1031,29 +1031,29 @@ function gt({ value: t, label: e, size: a = "md", disabled: r, id: o, onChange:
1031
1031
  "input",
1032
1032
  {
1033
1033
  type: "radio",
1034
- id: f,
1034
+ id: p,
1035
1035
  value: t,
1036
- name: (u == null ? void 0 : u.name) ?? s.name,
1036
+ name: (d == null ? void 0 : d.name) ?? s.name,
1037
1037
  checked: c,
1038
- disabled: m,
1039
- onChange: y,
1038
+ disabled: h,
1039
+ onChange: x,
1040
1040
  style: { position: "absolute", opacity: 0, width: 0, height: 0, margin: 0, pointerEvents: "none" },
1041
1041
  ...s
1042
1042
  }
1043
1043
  ),
1044
- /* @__PURE__ */ n("span", { "aria-hidden": !0, style: k, children: /* @__PURE__ */ n("span", { style: v }) }, g),
1044
+ /* @__PURE__ */ n("span", { "aria-hidden": !0, style: v, children: /* @__PURE__ */ n("span", { style: w }) }, b),
1045
1045
  e
1046
1046
  ]
1047
1047
  }
1048
1048
  )
1049
1049
  ] });
1050
1050
  }
1051
- function bt({
1051
+ function xt({
1052
1052
  defaultValue: t = "",
1053
1053
  onChange: e,
1054
1054
  ...a
1055
1055
  }) {
1056
- const [r, o] = C(t);
1056
+ const [r, o] = z(t);
1057
1057
  return /* @__PURE__ */ n(
1058
1058
  ye,
1059
1059
  {
@@ -1065,7 +1065,7 @@ function bt({
1065
1065
  }
1066
1066
  );
1067
1067
  }
1068
- const yt = {
1068
+ const wt = {
1069
1069
  id: "radio",
1070
1070
  name: "Radio",
1071
1071
  tier: "atom",
@@ -1142,11 +1142,11 @@ const yt = {
1142
1142
  "Space — selects the focused radio"
1143
1143
  ]
1144
1144
  }
1145
- }, xe = {
1145
+ }, we = {
1146
1146
  sm: { track: [28, 16], thumb: 12 },
1147
1147
  md: { track: [36, 20], thumb: 16 },
1148
1148
  lg: { track: [44, 24], thumb: 20 }
1149
- }, B = "cubic-bezier(0.34, 1.56, 0.64, 1)", we = `
1149
+ }, $ = "cubic-bezier(0.34, 1.56, 0.64, 1)", ke = `
1150
1150
  @keyframes lucent-toggle-pop {
1151
1151
  0% { transform: scale(1); }
1152
1152
  35% { transform: scale(0.94); }
@@ -1154,7 +1154,7 @@ const yt = {
1154
1154
  100% { transform: scale(1); }
1155
1155
  }
1156
1156
  `;
1157
- function vt({
1157
+ function kt({
1158
1158
  label: t,
1159
1159
  size: e = "md",
1160
1160
  checked: a,
@@ -1163,18 +1163,18 @@ function vt({
1163
1163
  id: i,
1164
1164
  onChange: l,
1165
1165
  style: s,
1166
- ...u
1166
+ ...d
1167
1167
  }) {
1168
- const f = i ?? `lucent-toggle-${Math.random().toString(36).slice(2, 7)}`, p = a !== void 0, [m, c] = C(r ?? !1), d = p ? !!a : m, g = M(d), [b, y] = C(0);
1168
+ const p = i ?? `lucent-toggle-${Math.random().toString(36).slice(2, 7)}`, f = a !== void 0, [h, c] = z(r ?? !1), u = f ? !!a : h, b = M(u), [g, x] = z(0);
1169
1169
  F(() => {
1170
- !o && g.current !== d && (g.current = d, y((E) => E + 1));
1171
- }, [d, o]);
1172
- const { track: [v, k], thumb: T } = xe[e], S = d ? v - T - 2 : 2, q = (E) => {
1173
- p || c(E.target.checked), l == null || l(E);
1170
+ !o && b.current !== u && (b.current = u, x((T) => T + 1));
1171
+ }, [u, o]);
1172
+ const { track: [w, v], thumb: k } = we[e], y = u ? w - k - 2 : 2, I = (T) => {
1173
+ f || c(T.target.checked), l == null || l(T);
1174
1174
  };
1175
- return /* @__PURE__ */ h(A, { children: [
1176
- /* @__PURE__ */ n("style", { children: we }),
1177
- /* @__PURE__ */ h(
1175
+ return /* @__PURE__ */ m(A, { children: [
1176
+ /* @__PURE__ */ n("style", { children: ke }),
1177
+ /* @__PURE__ */ m(
1178
1178
  "label",
1179
1179
  {
1180
1180
  style: {
@@ -1194,13 +1194,13 @@ function vt({
1194
1194
  {
1195
1195
  type: "checkbox",
1196
1196
  role: "switch",
1197
- id: f,
1198
- checked: p ? a : m,
1197
+ id: p,
1198
+ checked: f ? a : h,
1199
1199
  disabled: o,
1200
- onChange: q,
1201
- "aria-checked": d,
1200
+ onChange: I,
1201
+ "aria-checked": u,
1202
1202
  style: { position: "absolute", opacity: 0, width: 0, height: 0, margin: 0, pointerEvents: "none" },
1203
- ...u
1203
+ ...d
1204
1204
  }
1205
1205
  ),
1206
1206
  /* @__PURE__ */ n(
@@ -1209,13 +1209,13 @@ function vt({
1209
1209
  "aria-hidden": !0,
1210
1210
  style: {
1211
1211
  position: "relative",
1212
- width: v,
1213
- height: k,
1214
- borderRadius: k / 2,
1215
- background: o ? "var(--lucent-bg-muted)" : d ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)",
1212
+ width: w,
1213
+ height: v,
1214
+ borderRadius: v / 2,
1215
+ background: o ? "var(--lucent-bg-muted)" : u ? "var(--lucent-accent-default)" : "var(--lucent-border-strong)",
1216
1216
  flexShrink: 0,
1217
1217
  transition: "background var(--lucent-duration-fast) var(--lucent-easing-default)",
1218
- animation: b > 0 ? `lucent-toggle-pop 240ms ${B} forwards` : void 0
1218
+ animation: g > 0 ? `lucent-toggle-pop 240ms ${$} forwards` : void 0
1219
1219
  },
1220
1220
  children: /* @__PURE__ */ n(
1221
1221
  "span",
@@ -1223,18 +1223,18 @@ function vt({
1223
1223
  style: {
1224
1224
  position: "absolute",
1225
1225
  top: 2,
1226
- left: S,
1227
- width: T,
1228
- height: T,
1226
+ left: y,
1227
+ width: k,
1228
+ height: k,
1229
1229
  borderRadius: "50%",
1230
1230
  background: "#ffffff",
1231
1231
  boxShadow: "0 1px 3px rgb(0 0 0 / 0.2)",
1232
- transition: `left 260ms ${B}`
1232
+ transition: `left 260ms ${$}`
1233
1233
  }
1234
1234
  }
1235
1235
  )
1236
1236
  },
1237
- b
1237
+ g
1238
1238
  ),
1239
1239
  t
1240
1240
  ]
@@ -1242,7 +1242,7 @@ function vt({
1242
1242
  )
1243
1243
  ] });
1244
1244
  }
1245
- const xt = {
1245
+ const St = {
1246
1246
  id: "toggle",
1247
1247
  name: "Toggle",
1248
1248
  tier: "atom",
@@ -1306,22 +1306,22 @@ const xt = {
1306
1306
  ariaAttributes: ["aria-checked", "aria-disabled"],
1307
1307
  keyboardInteractions: ["Space — toggles the switch state"]
1308
1308
  }
1309
- }, ke = {
1309
+ }, Se = {
1310
1310
  sm: "32px",
1311
1311
  md: "40px",
1312
1312
  lg: "46px"
1313
- }, Se = {
1313
+ }, Te = {
1314
1314
  sm: "var(--lucent-font-size-sm)",
1315
1315
  md: "var(--lucent-font-size-md)",
1316
1316
  lg: "var(--lucent-font-size-lg)"
1317
- }, Te = N(
1318
- ({ options: t, size: e = "md", label: a, helperText: r, errorText: o, placeholder: i, disabled: l, id: s, style: u, ...f }, p) => {
1319
- const m = s ?? `lucent-select-${Math.random().toString(36).slice(2, 7)}`, c = !!o;
1320
- return /* @__PURE__ */ h("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
1317
+ }, Ce = N(
1318
+ ({ options: t, size: e = "md", label: a, helperText: r, errorText: o, placeholder: i, disabled: l, id: s, style: d, ...p }, f) => {
1319
+ const h = s ?? `lucent-select-${Math.random().toString(36).slice(2, 7)}`, c = !!o;
1320
+ return /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)", width: "100%" }, children: [
1321
1321
  a && /* @__PURE__ */ n(
1322
1322
  "label",
1323
1323
  {
1324
- htmlFor: m,
1324
+ htmlFor: h,
1325
1325
  style: {
1326
1326
  fontSize: "var(--lucent-font-size-sm)",
1327
1327
  fontWeight: "var(--lucent-font-weight-medium)",
@@ -1331,20 +1331,20 @@ const xt = {
1331
1331
  children: a
1332
1332
  }
1333
1333
  ),
1334
- /* @__PURE__ */ h("div", { style: { position: "relative", display: "flex", alignItems: "center" }, children: [
1335
- /* @__PURE__ */ h(
1334
+ /* @__PURE__ */ m("div", { style: { position: "relative", display: "flex", alignItems: "center" }, children: [
1335
+ /* @__PURE__ */ m(
1336
1336
  "select",
1337
1337
  {
1338
- ref: p,
1339
- id: m,
1338
+ ref: f,
1339
+ id: h,
1340
1340
  disabled: l,
1341
1341
  "aria-invalid": c,
1342
- "aria-describedby": c ? `${m}-error` : r ? `${m}-helper` : void 0,
1342
+ "aria-describedby": c ? `${h}-error` : r ? `${h}-helper` : void 0,
1343
1343
  style: {
1344
1344
  width: "100%",
1345
- height: ke[e],
1345
+ height: Se[e],
1346
1346
  padding: "0 var(--lucent-space-8) 0 var(--lucent-space-3)",
1347
- fontSize: Se[e],
1347
+ fontSize: Te[e],
1348
1348
  fontFamily: "var(--lucent-font-family-base)",
1349
1349
  color: "var(--lucent-text-primary)",
1350
1350
  background: "var(--lucent-surface-default)",
@@ -1355,28 +1355,28 @@ const xt = {
1355
1355
  appearance: "none",
1356
1356
  cursor: l ? "not-allowed" : "pointer",
1357
1357
  transition: "border-color var(--lucent-duration-fast) var(--lucent-easing-default)",
1358
- ...u
1358
+ ...d
1359
1359
  },
1360
- onMouseEnter: (d) => {
1361
- var g;
1362
- !l && d.currentTarget !== document.activeElement && (d.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-strong)"), (g = f.onMouseEnter) == null || g.call(f, d);
1360
+ onMouseEnter: (u) => {
1361
+ var b;
1362
+ !l && u.currentTarget !== document.activeElement && (u.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-strong)"), (b = p.onMouseEnter) == null || b.call(p, u);
1363
1363
  },
1364
- onMouseLeave: (d) => {
1365
- var g;
1366
- !l && d.currentTarget !== document.activeElement && (d.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"), (g = f.onMouseLeave) == null || g.call(f, d);
1364
+ onMouseLeave: (u) => {
1365
+ var b;
1366
+ !l && u.currentTarget !== document.activeElement && (u.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-default)"), (b = p.onMouseLeave) == null || b.call(p, u);
1367
1367
  },
1368
- onFocus: (d) => {
1369
- var g;
1370
- d.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", d.currentTarget.style.boxShadow = `0 0 0 3px ${c ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (g = f.onFocus) == null || g.call(f, d);
1368
+ onFocus: (u) => {
1369
+ var b;
1370
+ u.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-focus-ring)", u.currentTarget.style.boxShadow = `0 0 0 3px ${c ? "var(--lucent-danger-subtle)" : "var(--lucent-accent-subtle)"}`, (b = p.onFocus) == null || b.call(p, u);
1371
1371
  },
1372
- onBlur: (d) => {
1373
- var g;
1374
- d.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", d.currentTarget.style.boxShadow = "none", (g = f.onBlur) == null || g.call(f, d);
1372
+ onBlur: (u) => {
1373
+ var b;
1374
+ u.currentTarget.style.borderColor = c ? "var(--lucent-danger-default)" : "var(--lucent-border-default)", u.currentTarget.style.boxShadow = "none", (b = p.onBlur) == null || b.call(p, u);
1375
1375
  },
1376
- ...f,
1376
+ ...p,
1377
1377
  children: [
1378
1378
  i && /* @__PURE__ */ n("option", { value: "", disabled: !0, children: i }),
1379
- t.map((d) => /* @__PURE__ */ n("option", { value: d.value, disabled: d.disabled, children: d.label }, d.value))
1379
+ t.map((u) => /* @__PURE__ */ n("option", { value: u.value, disabled: u.disabled, children: u.label }, u.value))
1380
1380
  ]
1381
1381
  }
1382
1382
  ),
@@ -1399,7 +1399,7 @@ const xt = {
1399
1399
  c && /* @__PURE__ */ n(
1400
1400
  "span",
1401
1401
  {
1402
- id: `${m}-error`,
1402
+ id: `${h}-error`,
1403
1403
  role: "alert",
1404
1404
  style: {
1405
1405
  fontSize: "var(--lucent-font-size-sm)",
@@ -1412,7 +1412,7 @@ const xt = {
1412
1412
  !c && r && /* @__PURE__ */ n(
1413
1413
  "span",
1414
1414
  {
1415
- id: `${m}-helper`,
1415
+ id: `${h}-helper`,
1416
1416
  style: {
1417
1417
  fontSize: "var(--lucent-font-size-sm)",
1418
1418
  color: "var(--lucent-text-secondary)",
@@ -1424,8 +1424,8 @@ const xt = {
1424
1424
  ] });
1425
1425
  }
1426
1426
  );
1427
- Te.displayName = "Select";
1428
- const wt = {
1427
+ Ce.displayName = "Select";
1428
+ const Tt = {
1429
1429
  id: "select",
1430
1430
  name: "Select",
1431
1431
  tier: "atom",
@@ -1523,20 +1523,20 @@ const wt = {
1523
1523
  "Escape — closes the list"
1524
1524
  ]
1525
1525
  }
1526
- }, Ce = {
1526
+ }, Ie = {
1527
1527
  neutral: { bg: "var(--lucent-bg-muted)", color: "var(--lucent-text-secondary)", border: "var(--lucent-border-default)", dismissHover: "var(--lucent-border-strong)" },
1528
1528
  accent: { bg: "var(--lucent-accent-subtle)", color: "var(--lucent-accent-active)", border: "var(--lucent-accent-subtle)", dismissHover: "var(--lucent-accent-default)" },
1529
1529
  success: { bg: "var(--lucent-success-subtle)", color: "var(--lucent-success-text)", border: "var(--lucent-success-subtle)", dismissHover: "var(--lucent-success-default)" },
1530
1530
  warning: { bg: "var(--lucent-warning-subtle)", color: "var(--lucent-warning-text)", border: "var(--lucent-warning-subtle)", dismissHover: "var(--lucent-warning-default)" },
1531
1531
  danger: { bg: "var(--lucent-danger-subtle)", color: "var(--lucent-danger-text)", border: "var(--lucent-danger-subtle)", dismissHover: "var(--lucent-danger-default)" },
1532
1532
  info: { bg: "var(--lucent-info-subtle)", color: "var(--lucent-info-text)", border: "var(--lucent-info-subtle)", dismissHover: "var(--lucent-info-default)" }
1533
- }, Ie = {
1533
+ }, ze = {
1534
1534
  sm: { fontSize: "var(--lucent-font-size-xs)", height: "20px", padding: "0 var(--lucent-space-2)", iconSize: 10, gap: "var(--lucent-space-1)" },
1535
1535
  md: { fontSize: "var(--lucent-font-size-sm)", height: "24px", padding: "0 var(--lucent-space-2)", iconSize: 12, gap: "var(--lucent-space-1)" }
1536
1536
  };
1537
- function kt({ children: t, variant: e = "neutral", size: a = "md", onDismiss: r, disabled: o }) {
1538
- const i = Ce[e], l = Ie[a];
1539
- return /* @__PURE__ */ h(
1537
+ function Ct({ children: t, variant: e = "neutral", size: a = "md", onDismiss: r, disabled: o }) {
1538
+ const i = Ie[e], l = ze[a];
1539
+ return /* @__PURE__ */ m(
1540
1540
  "span",
1541
1541
  {
1542
1542
  style: {
@@ -1594,7 +1594,7 @@ function kt({ children: t, variant: e = "neutral", size: a = "md", onDismiss: r,
1594
1594
  }
1595
1595
  );
1596
1596
  }
1597
- const St = {
1597
+ const It = {
1598
1598
  id: "tag",
1599
1599
  name: "Tag",
1600
1600
  tier: "atom",
@@ -1651,64 +1651,64 @@ const St = {
1651
1651
  notes: 'The dismiss button has aria-label="Dismiss" and is keyboard-focusable.',
1652
1652
  keyboardInteractions: ["Enter / Space — activates the dismiss button when focused"]
1653
1653
  }
1654
- }, x = 5, ze = {
1655
- top: { bottom: "100%", left: "50%", transform: "translateX(-50%)", marginBottom: x + 3 },
1656
- bottom: { top: "100%", left: "50%", transform: "translateX(-50%)", marginTop: x + 3 },
1657
- left: { right: "100%", top: "50%", transform: "translateY(-50%)", marginRight: x + 3 },
1658
- right: { left: "100%", top: "50%", transform: "translateY(-50%)", marginLeft: x + 3 }
1659
- }, Me = {
1654
+ }, S = 5, Me = {
1655
+ top: { bottom: "100%", left: "50%", transform: "translateX(-50%)", marginBottom: S + 3 },
1656
+ bottom: { top: "100%", left: "50%", transform: "translateX(-50%)", marginTop: S + 3 },
1657
+ left: { right: "100%", top: "50%", transform: "translateY(-50%)", marginRight: S + 3 },
1658
+ right: { left: "100%", top: "50%", transform: "translateY(-50%)", marginLeft: S + 3 }
1659
+ }, qe = {
1660
1660
  top: {
1661
- bottom: -x,
1661
+ bottom: -S,
1662
1662
  left: "50%",
1663
1663
  transform: "translateX(-50%)",
1664
- borderWidth: `${x}px ${x}px 0 ${x}px`,
1664
+ borderWidth: `${S}px ${S}px 0 ${S}px`,
1665
1665
  borderColor: "var(--lucent-text-primary) transparent transparent transparent"
1666
1666
  },
1667
1667
  bottom: {
1668
- top: -x,
1668
+ top: -S,
1669
1669
  left: "50%",
1670
1670
  transform: "translateX(-50%)",
1671
- borderWidth: `0 ${x}px ${x}px ${x}px`,
1671
+ borderWidth: `0 ${S}px ${S}px ${S}px`,
1672
1672
  borderColor: "transparent transparent var(--lucent-text-primary) transparent"
1673
1673
  },
1674
1674
  left: {
1675
- right: -x,
1675
+ right: -S,
1676
1676
  top: "50%",
1677
1677
  transform: "translateY(-50%)",
1678
- borderWidth: `${x}px 0 ${x}px ${x}px`,
1678
+ borderWidth: `${S}px 0 ${S}px ${S}px`,
1679
1679
  borderColor: "transparent transparent transparent var(--lucent-text-primary)"
1680
1680
  },
1681
1681
  right: {
1682
- left: -x,
1682
+ left: -S,
1683
1683
  top: "50%",
1684
1684
  transform: "translateY(-50%)",
1685
- borderWidth: `${x}px ${x}px ${x}px 0`,
1685
+ borderWidth: `${S}px ${S}px ${S}px 0`,
1686
1686
  borderColor: "transparent var(--lucent-text-primary) transparent transparent"
1687
1687
  }
1688
1688
  };
1689
- function Tt({ content: t, children: e, placement: a = "top", delay: r = 300 }) {
1690
- const [o, i] = C(!1), l = M(null), s = () => {
1689
+ function zt({ content: t, children: e, placement: a = "top", delay: r = 300 }) {
1690
+ const [o, i] = z(!1), l = M(null), s = () => {
1691
1691
  l.current = setTimeout(() => i(!0), r);
1692
- }, u = () => {
1692
+ }, d = () => {
1693
1693
  l.current && clearTimeout(l.current), i(!1);
1694
1694
  };
1695
- return t ? /* @__PURE__ */ h(
1695
+ return t ? /* @__PURE__ */ m(
1696
1696
  "span",
1697
1697
  {
1698
1698
  style: { position: "relative", display: "inline-flex" },
1699
1699
  onMouseEnter: s,
1700
- onMouseLeave: u,
1700
+ onMouseLeave: d,
1701
1701
  onFocus: s,
1702
- onBlur: u,
1702
+ onBlur: d,
1703
1703
  children: [
1704
1704
  e,
1705
- o && /* @__PURE__ */ h(
1705
+ o && /* @__PURE__ */ m(
1706
1706
  "span",
1707
1707
  {
1708
1708
  role: "tooltip",
1709
1709
  style: {
1710
1710
  position: "absolute",
1711
- ...ze[a],
1711
+ ...Me[a],
1712
1712
  background: "var(--lucent-text-primary)",
1713
1713
  color: "var(--lucent-bg-base)",
1714
1714
  padding: "5px 10px",
@@ -1733,7 +1733,7 @@ function Tt({ content: t, children: e, placement: a = "top", delay: r = 300 }) {
1733
1733
  width: 0,
1734
1734
  height: 0,
1735
1735
  borderStyle: "solid",
1736
- ...Me[a]
1736
+ ...qe[a]
1737
1737
  }
1738
1738
  }
1739
1739
  )
@@ -1744,7 +1744,7 @@ function Tt({ content: t, children: e, placement: a = "top", delay: r = 300 }) {
1744
1744
  }
1745
1745
  ) : /* @__PURE__ */ n(A, { children: e });
1746
1746
  }
1747
- const Ct = {
1747
+ const Mt = {
1748
1748
  id: "tooltip",
1749
1749
  name: "Tooltip",
1750
1750
  tier: "atom",
@@ -1793,15 +1793,15 @@ const Ct = {
1793
1793
  ariaAttributes: ['role="tooltip"'],
1794
1794
  notes: 'The tooltip is shown on both hover and focus, making it accessible to keyboard users. Content is exposed via role="tooltip".'
1795
1795
  }
1796
- }, qe = {
1796
+ }, Ee = {
1797
1797
  xs: 12,
1798
1798
  sm: 14,
1799
1799
  md: 16,
1800
1800
  lg: 20,
1801
1801
  xl: 24
1802
1802
  };
1803
- function It({ children: t, size: e = "md", label: a, color: r, style: o }) {
1804
- const i = qe[e];
1803
+ function qt({ children: t, size: e = "md", label: a, color: r, style: o }) {
1804
+ const i = Ee[e];
1805
1805
  return /* @__PURE__ */ n(
1806
1806
  "span",
1807
1807
  {
@@ -1822,7 +1822,7 @@ function It({ children: t, size: e = "md", label: a, color: r, style: o }) {
1822
1822
  }
1823
1823
  );
1824
1824
  }
1825
- const zt = {
1825
+ const Et = {
1826
1826
  id: "icon",
1827
1827
  name: "Icon",
1828
1828
  tier: "atom",
@@ -1870,7 +1870,7 @@ const zt = {
1870
1870
  ariaAttributes: ["aria-label", "aria-hidden"],
1871
1871
  notes: 'aria-hidden="true" is applied automatically when no label is given, hiding the icon from screen readers.'
1872
1872
  }
1873
- }, Ee = {
1873
+ }, Ae = {
1874
1874
  primary: "var(--lucent-text-primary)",
1875
1875
  secondary: "var(--lucent-text-secondary)",
1876
1876
  disabled: "var(--lucent-text-disabled)",
@@ -1880,7 +1880,7 @@ const zt = {
1880
1880
  warning: "var(--lucent-warning-text)",
1881
1881
  danger: "var(--lucent-danger-text)",
1882
1882
  info: "var(--lucent-info-text)"
1883
- }, Ae = {
1883
+ }, Fe = {
1884
1884
  xs: "var(--lucent-font-size-xs)",
1885
1885
  sm: "var(--lucent-font-size-sm)",
1886
1886
  md: "var(--lucent-font-size-md)",
@@ -1888,21 +1888,21 @@ const zt = {
1888
1888
  xl: "var(--lucent-font-size-xl)",
1889
1889
  "2xl": "var(--lucent-font-size-2xl)",
1890
1890
  "3xl": "var(--lucent-font-size-3xl)"
1891
- }, Fe = {
1891
+ }, Re = {
1892
1892
  regular: "var(--lucent-font-weight-regular)",
1893
1893
  medium: "var(--lucent-font-weight-medium)",
1894
1894
  semibold: "var(--lucent-font-weight-semibold)",
1895
1895
  bold: "var(--lucent-font-weight-bold)"
1896
- }, Ne = {
1896
+ }, Be = {
1897
1897
  tight: "var(--lucent-line-height-tight)",
1898
1898
  base: "var(--lucent-line-height-base)",
1899
1899
  relaxed: "var(--lucent-line-height-relaxed)"
1900
- }, Re = {
1900
+ }, Ne = {
1901
1901
  base: "var(--lucent-font-family-base)",
1902
1902
  mono: "var(--lucent-font-family-mono)",
1903
1903
  display: "var(--lucent-font-family-display)"
1904
1904
  };
1905
- function z({
1905
+ function E({
1906
1906
  as: t = "p",
1907
1907
  size: e = "md",
1908
1908
  weight: a = "regular",
@@ -1911,28 +1911,28 @@ function z({
1911
1911
  lineHeight: i = "base",
1912
1912
  family: l = "base",
1913
1913
  truncate: s = !1,
1914
- children: u,
1915
- style: f,
1916
- ...p
1914
+ children: d,
1915
+ style: p,
1916
+ ...f
1917
1917
  }) {
1918
- const m = {
1919
- fontSize: Ae[e],
1920
- fontWeight: Fe[a],
1921
- color: Ee[r],
1918
+ const h = {
1919
+ fontSize: Fe[e],
1920
+ fontWeight: Re[a],
1921
+ color: Ae[r],
1922
1922
  textAlign: o,
1923
- lineHeight: Ne[i],
1924
- fontFamily: Re[l],
1923
+ lineHeight: Be[i],
1924
+ fontFamily: Ne[l],
1925
1925
  margin: 0,
1926
1926
  ...s && {
1927
1927
  overflow: "hidden",
1928
1928
  textOverflow: "ellipsis",
1929
1929
  whiteSpace: "nowrap"
1930
1930
  },
1931
- ...f
1931
+ ...p
1932
1932
  };
1933
- return /* @__PURE__ */ n(t, { style: m, ...p, children: u });
1933
+ return /* @__PURE__ */ n(t, { style: h, ...f, children: d });
1934
1934
  }
1935
- const Mt = {
1935
+ const At = {
1936
1936
  id: "text",
1937
1937
  name: "Text",
1938
1938
  tier: "atom",
@@ -2030,7 +2030,55 @@ const Mt = {
2030
2030
  notes: 'The rendered element determines the implicit ARIA role. Use heading elements (h1–h6) for document headings so screen readers can navigate the page structure. Use `as="label"` with `htmlFor` to associate labels with form controls. Decorative text needs no additional ARIA.'
2031
2031
  }
2032
2032
  };
2033
- function qt({
2033
+ function Ft({
2034
+ children: t,
2035
+ href: e,
2036
+ isActive: a = !1,
2037
+ icon: r,
2038
+ disabled: o = !1,
2039
+ onClick: i,
2040
+ as: l,
2041
+ style: s
2042
+ }) {
2043
+ return /* @__PURE__ */ m(
2044
+ l ?? "a",
2045
+ {
2046
+ href: o ? void 0 : e,
2047
+ onClick: o ? void 0 : i,
2048
+ "aria-current": a ? "page" : void 0,
2049
+ "aria-disabled": o || void 0,
2050
+ style: {
2051
+ display: "flex",
2052
+ alignItems: "center",
2053
+ gap: "var(--lucent-space-2)",
2054
+ padding: "var(--lucent-space-2) var(--lucent-space-3) var(--lucent-space-2) var(--lucent-space-4)",
2055
+ borderRadius: "var(--lucent-radius-md)",
2056
+ background: o ? "transparent" : a ? "var(--lucent-accent-default)" : "transparent",
2057
+ color: o ? "var(--lucent-text-disabled)" : a ? "var(--lucent-text-on-accent)" : "var(--lucent-text-secondary)",
2058
+ fontFamily: "var(--lucent-font-family-base)",
2059
+ fontSize: "var(--lucent-font-size-md)",
2060
+ fontWeight: a ? "var(--lucent-font-weight-medium)" : "var(--lucent-font-weight-regular)",
2061
+ textDecoration: "none",
2062
+ cursor: o ? "not-allowed" : "pointer",
2063
+ transition: "background var(--lucent-duration-fast) var(--lucent-easing-default), color var(--lucent-duration-fast) var(--lucent-easing-default)",
2064
+ userSelect: "none",
2065
+ boxSizing: "border-box",
2066
+ ...s
2067
+ },
2068
+ onMouseEnter: (p) => {
2069
+ !o && !a && (p.currentTarget.style.background = "var(--lucent-bg-muted)");
2070
+ },
2071
+ onMouseLeave: (p) => {
2072
+ !o && !a && (p.currentTarget.style.background = "transparent");
2073
+ },
2074
+ children: [
2075
+ r != null && /* @__PURE__ */ n("span", { style: { display: "flex", flexShrink: 0, color: "inherit" }, children: r }),
2076
+ t
2077
+ ]
2078
+ }
2079
+ );
2080
+ }
2081
+ function Rt({
2034
2082
  label: t,
2035
2083
  htmlFor: e,
2036
2084
  required: a = !1,
@@ -2039,17 +2087,17 @@ function qt({
2039
2087
  children: i,
2040
2088
  style: l
2041
2089
  }) {
2042
- const s = o ?? r, u = o ? "danger" : "secondary";
2043
- return /* @__PURE__ */ h("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)", ...l }, children: [
2044
- t && /* @__PURE__ */ h("div", { style: { display: "flex", alignItems: "baseline", gap: "var(--lucent-space-1)" }, children: [
2045
- /* @__PURE__ */ n(z, { as: "label", size: "sm", weight: "medium", lineHeight: "tight", ...e !== void 0 && { htmlFor: e }, children: t }),
2046
- a && /* @__PURE__ */ n(z, { as: "span", size: "sm", color: "danger", lineHeight: "tight", "aria-hidden": "true", children: "*" })
2090
+ const s = o ?? r, d = o ? "danger" : "secondary";
2091
+ return /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)", ...l }, children: [
2092
+ t && /* @__PURE__ */ m("div", { style: { display: "flex", alignItems: "baseline", gap: "var(--lucent-space-1)" }, children: [
2093
+ /* @__PURE__ */ n(E, { as: "label", size: "sm", weight: "medium", lineHeight: "tight", ...e !== void 0 && { htmlFor: e }, children: t }),
2094
+ a && /* @__PURE__ */ n(E, { as: "span", size: "sm", color: "danger", lineHeight: "tight", "aria-hidden": "true", children: "*" })
2047
2095
  ] }),
2048
2096
  i,
2049
- s && /* @__PURE__ */ n(z, { size: "xs", color: u, lineHeight: "tight", children: s })
2097
+ s && /* @__PURE__ */ n(E, { size: "xs", color: d, lineHeight: "tight", children: s })
2050
2098
  ] });
2051
2099
  }
2052
- const Et = {
2100
+ const Bt = {
2053
2101
  id: "form-field",
2054
2102
  name: "FormField",
2055
2103
  tier: "molecule",
@@ -2135,11 +2183,11 @@ const Et = {
2135
2183
  ariaAttributes: ["aria-required", "aria-describedby"],
2136
2184
  notes: 'Link the wrapped control to an error message using aria-describedby on the control and a matching id on the error element for full screen reader support. The required asterisk is aria-hidden; set aria-required="true" on the control itself.'
2137
2185
  }
2138
- }, Be = () => /* @__PURE__ */ h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2186
+ }, $e = () => /* @__PURE__ */ m("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2139
2187
  /* @__PURE__ */ n("circle", { cx: "6.5", cy: "6.5", r: "4", stroke: "currentColor", strokeWidth: "1.5" }),
2140
2188
  /* @__PURE__ */ n("path", { d: "M9.5 9.5L13 13", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
2141
- ] }), $e = () => /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) });
2142
- function At({
2189
+ ] }), De = () => /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) });
2190
+ function Nt({
2143
2191
  value: t,
2144
2192
  onChange: e,
2145
2193
  placeholder: a = "Search…",
@@ -2148,22 +2196,22 @@ function At({
2148
2196
  isLoading: i = !1,
2149
2197
  disabled: l = !1,
2150
2198
  id: s,
2151
- style: u
2199
+ style: d
2152
2200
  }) {
2153
- const [f, p] = C(!1), [m, c] = C(null), d = M(null), g = f && r.length > 0, b = () => {
2201
+ const [p, f] = z(!1), [h, c] = z(null), u = M(null), b = p && r.length > 0, g = () => {
2154
2202
  e("");
2155
- }, y = (S) => {
2156
- o == null || o(S), p(!1);
2203
+ }, x = (y) => {
2204
+ o == null || o(y), f(!1);
2205
+ }, w = () => {
2206
+ u.current = setTimeout(() => f(!1), 150);
2157
2207
  }, v = () => {
2158
- d.current = setTimeout(() => p(!1), 150);
2159
- }, k = () => {
2160
- d.current && clearTimeout(d.current), p(!0);
2161
- }, T = i ? /* @__PURE__ */ n(fe, { size: "sm" }) : t ? /* @__PURE__ */ n(
2208
+ u.current && clearTimeout(u.current), f(!0);
2209
+ }, k = i ? /* @__PURE__ */ n(me, { size: "sm" }) : t ? /* @__PURE__ */ n(
2162
2210
  "button",
2163
2211
  {
2164
2212
  type: "button",
2165
2213
  "aria-label": "Clear search",
2166
- onClick: b,
2214
+ onClick: g,
2167
2215
  style: {
2168
2216
  display: "flex",
2169
2217
  alignItems: "center",
@@ -2174,32 +2222,32 @@ function At({
2174
2222
  borderRadius: "var(--lucent-radius-sm)",
2175
2223
  color: "var(--lucent-text-secondary)"
2176
2224
  },
2177
- onMouseEnter: (S) => {
2178
- S.currentTarget.style.color = "var(--lucent-text-primary)";
2225
+ onMouseEnter: (y) => {
2226
+ y.currentTarget.style.color = "var(--lucent-text-primary)";
2179
2227
  },
2180
- onMouseLeave: (S) => {
2181
- S.currentTarget.style.color = "var(--lucent-text-secondary)";
2228
+ onMouseLeave: (y) => {
2229
+ y.currentTarget.style.color = "var(--lucent-text-secondary)";
2182
2230
  },
2183
- children: /* @__PURE__ */ n($e, {})
2231
+ children: /* @__PURE__ */ n(De, {})
2184
2232
  }
2185
2233
  ) : null;
2186
- return /* @__PURE__ */ h("div", { style: { position: "relative", ...u }, children: [
2234
+ return /* @__PURE__ */ m("div", { style: { position: "relative", ...d }, children: [
2187
2235
  /* @__PURE__ */ n(
2188
- V,
2236
+ O,
2189
2237
  {
2190
2238
  id: s,
2191
2239
  type: "search",
2192
2240
  value: t,
2193
- onChange: (S) => e(S.target.value),
2241
+ onChange: (y) => e(y.target.value),
2194
2242
  placeholder: a,
2195
2243
  disabled: l,
2196
- leftElement: /* @__PURE__ */ n(Be, {}),
2197
- rightElement: T ?? void 0,
2198
- onFocus: k,
2199
- onBlur: v
2244
+ leftElement: /* @__PURE__ */ n($e, {}),
2245
+ rightElement: k ?? void 0,
2246
+ onFocus: v,
2247
+ onBlur: w
2200
2248
  }
2201
2249
  ),
2202
- g && /* @__PURE__ */ n(
2250
+ b && /* @__PURE__ */ n(
2203
2251
  "div",
2204
2252
  {
2205
2253
  role: "listbox",
@@ -2215,29 +2263,29 @@ function At({
2215
2263
  boxShadow: "var(--lucent-shadow-md)",
2216
2264
  overflow: "hidden"
2217
2265
  },
2218
- children: r.map((S, q) => /* @__PURE__ */ n(
2266
+ children: r.map((y, I) => /* @__PURE__ */ n(
2219
2267
  "div",
2220
2268
  {
2221
2269
  role: "option",
2222
2270
  "aria-selected": !1,
2223
- onMouseDown: () => y(S),
2224
- onMouseEnter: () => c(q),
2271
+ onMouseDown: () => x(y),
2272
+ onMouseEnter: () => c(I),
2225
2273
  onMouseLeave: () => c(null),
2226
2274
  style: {
2227
2275
  padding: "var(--lucent-space-2) var(--lucent-space-3)",
2228
2276
  cursor: "pointer",
2229
- background: m === q ? "var(--lucent-bg-subtle)" : "transparent",
2277
+ background: h === I ? "var(--lucent-bg-subtle)" : "transparent",
2230
2278
  transition: "background var(--lucent-duration-fast) var(--lucent-easing-default)"
2231
2279
  },
2232
- children: /* @__PURE__ */ n(z, { as: "span", size: "md", children: S.label })
2280
+ children: /* @__PURE__ */ n(E, { as: "span", size: "md", children: y.label })
2233
2281
  },
2234
- S.id
2282
+ y.id
2235
2283
  ))
2236
2284
  }
2237
2285
  )
2238
2286
  ] });
2239
2287
  }
2240
- const Ft = {
2288
+ const $t = {
2241
2289
  id: "search-input",
2242
2290
  name: "SearchInput",
2243
2291
  tier: "molecule",
@@ -2333,23 +2381,23 @@ const [results, setResults] = useState([]);
2333
2381
  keyboardInteractions: ["Enter to select focused result", "Escape to close dropdown"],
2334
2382
  notes: 'The results list uses role="listbox" with role="option" items. For full keyboard navigation (arrow keys to move between results), wire up onKeyDown on the Input and manage an activeIndex state.'
2335
2383
  }
2336
- }, De = {
2384
+ }, Le = {
2337
2385
  none: "0",
2338
2386
  sm: "var(--lucent-space-3)",
2339
2387
  md: "var(--lucent-space-4)",
2340
2388
  lg: "var(--lucent-space-6)"
2341
- }, Le = {
2389
+ }, Ve = {
2342
2390
  none: "var(--lucent-shadow-none)",
2343
2391
  sm: "var(--lucent-shadow-sm)",
2344
2392
  md: "var(--lucent-shadow-md)",
2345
2393
  lg: "var(--lucent-shadow-lg)"
2346
- }, Ve = {
2394
+ }, We = {
2347
2395
  none: "var(--lucent-radius-none)",
2348
2396
  sm: "var(--lucent-radius-sm)",
2349
2397
  md: "var(--lucent-radius-md)",
2350
2398
  lg: "var(--lucent-radius-lg)"
2351
2399
  };
2352
- function Nt({
2400
+ function Dt({
2353
2401
  header: t,
2354
2402
  footer: e,
2355
2403
  children: a,
@@ -2358,8 +2406,8 @@ function Nt({
2358
2406
  radius: i = "md",
2359
2407
  style: l
2360
2408
  }) {
2361
- const s = De[r], u = Ve[i];
2362
- return /* @__PURE__ */ h(
2409
+ const s = Le[r], d = We[i];
2410
+ return /* @__PURE__ */ m(
2363
2411
  "div",
2364
2412
  {
2365
2413
  style: {
@@ -2367,8 +2415,8 @@ function Nt({
2367
2415
  flexDirection: "column",
2368
2416
  background: "var(--lucent-surface-default)",
2369
2417
  border: "1px solid var(--lucent-border-default)",
2370
- borderRadius: u,
2371
- boxShadow: Le[o],
2418
+ borderRadius: d,
2419
+ boxShadow: Ve[o],
2372
2420
  overflow: "hidden",
2373
2421
  boxSizing: "border-box",
2374
2422
  ...l
@@ -2399,7 +2447,7 @@ function Nt({
2399
2447
  }
2400
2448
  );
2401
2449
  }
2402
- const Rt = {
2450
+ const Lt = {
2403
2451
  id: "card",
2404
2452
  name: "Card",
2405
2453
  tier: "molecule",
@@ -2484,30 +2532,30 @@ const Rt = {
2484
2532
  accessibility: {
2485
2533
  notes: "Card has no implicit ARIA role. If the card represents a landmark, wrap it in a <section> or <article> and provide an aria-label. For interactive cards (clickable), make the wrapper a <button> or <a> and ensure focus styles are visible."
2486
2534
  }
2487
- }, We = {
2535
+ }, Pe = {
2488
2536
  info: { bg: "var(--lucent-info-subtle)", border: "var(--lucent-info-default)", iconColor: "var(--lucent-info-text)", textColor: "info" },
2489
2537
  success: { bg: "var(--lucent-success-subtle)", border: "var(--lucent-success-default)", iconColor: "var(--lucent-success-text)", textColor: "success" },
2490
2538
  warning: { bg: "var(--lucent-warning-subtle)", border: "var(--lucent-warning-default)", iconColor: "var(--lucent-warning-text)", textColor: "warning" },
2491
2539
  danger: { bg: "var(--lucent-danger-subtle)", border: "var(--lucent-danger-default)", iconColor: "var(--lucent-danger-text)", textColor: "danger" }
2492
- }, Pe = () => /* @__PURE__ */ h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2540
+ }, Oe = () => /* @__PURE__ */ m("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2493
2541
  /* @__PURE__ */ n("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }),
2494
2542
  /* @__PURE__ */ n("path", { d: "M8 5.5V8.5M8 10.5V11", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
2495
- ] }), Oe = () => /* @__PURE__ */ h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2543
+ ] }), He = () => /* @__PURE__ */ m("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2496
2544
  /* @__PURE__ */ n("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }),
2497
2545
  /* @__PURE__ */ n("path", { d: "M5 8L7 10L11 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
2498
- ] }), He = () => /* @__PURE__ */ h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2546
+ ] }), Ge = () => /* @__PURE__ */ m("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2499
2547
  /* @__PURE__ */ n("path", { d: "M8 2L14.5 13H1.5L8 2Z", stroke: "currentColor", strokeWidth: "1.5", strokeLinejoin: "round" }),
2500
2548
  /* @__PURE__ */ n("path", { d: "M8 6V9M8 11V11.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
2501
- ] }), Ge = () => /* @__PURE__ */ h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2549
+ ] }), je = () => /* @__PURE__ */ m("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
2502
2550
  /* @__PURE__ */ n("circle", { cx: "8", cy: "8", r: "6.5", stroke: "currentColor", strokeWidth: "1.5" }),
2503
2551
  /* @__PURE__ */ n("path", { d: "M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
2504
2552
  ] }), Ue = {
2505
- info: /* @__PURE__ */ n(Pe, {}),
2506
- success: /* @__PURE__ */ n(Oe, {}),
2507
- warning: /* @__PURE__ */ n(He, {}),
2508
- danger: /* @__PURE__ */ n(Ge, {})
2509
- }, je = () => /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) });
2510
- function Bt({
2553
+ info: /* @__PURE__ */ n(Oe, {}),
2554
+ success: /* @__PURE__ */ n(He, {}),
2555
+ warning: /* @__PURE__ */ n(Ge, {}),
2556
+ danger: /* @__PURE__ */ n(je, {})
2557
+ }, _e = () => /* @__PURE__ */ n("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ n("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) });
2558
+ function Vt({
2511
2559
  variant: t = "info",
2512
2560
  title: e,
2513
2561
  children: a,
@@ -2515,8 +2563,8 @@ function Bt({
2515
2563
  icon: o,
2516
2564
  style: i
2517
2565
  }) {
2518
- const l = We[t], s = o ?? Ue[t];
2519
- return /* @__PURE__ */ h(
2566
+ const l = Pe[t], s = o ?? Ue[t];
2567
+ return /* @__PURE__ */ m(
2520
2568
  "div",
2521
2569
  {
2522
2570
  role: "alert",
@@ -2545,9 +2593,9 @@ function Bt({
2545
2593
  children: s
2546
2594
  }
2547
2595
  ),
2548
- /* @__PURE__ */ h("div", { style: { flex: 1, display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)" }, children: [
2549
- e && /* @__PURE__ */ n(z, { as: "span", size: "sm", weight: "semibold", color: l.textColor, lineHeight: "tight", children: e }),
2550
- a && /* @__PURE__ */ n(z, { as: "span", size: "sm", color: l.textColor, lineHeight: "base", children: a })
2596
+ /* @__PURE__ */ m("div", { style: { flex: 1, display: "flex", flexDirection: "column", gap: "var(--lucent-space-1)" }, children: [
2597
+ e && /* @__PURE__ */ n(E, { as: "span", size: "sm", weight: "semibold", color: l.textColor, lineHeight: "tight", children: e }),
2598
+ a && /* @__PURE__ */ n(E, { as: "span", size: "sm", color: l.textColor, lineHeight: "base", children: a })
2551
2599
  ] }),
2552
2600
  r && /* @__PURE__ */ n(
2553
2601
  "button",
@@ -2567,20 +2615,20 @@ function Bt({
2567
2615
  color: l.iconColor,
2568
2616
  opacity: 0.7
2569
2617
  },
2570
- onMouseEnter: (u) => {
2571
- u.currentTarget.style.opacity = "1";
2618
+ onMouseEnter: (d) => {
2619
+ d.currentTarget.style.opacity = "1";
2572
2620
  },
2573
- onMouseLeave: (u) => {
2574
- u.currentTarget.style.opacity = "0.7";
2621
+ onMouseLeave: (d) => {
2622
+ d.currentTarget.style.opacity = "0.7";
2575
2623
  },
2576
- children: /* @__PURE__ */ n(je, {})
2624
+ children: /* @__PURE__ */ n(_e, {})
2577
2625
  }
2578
2626
  )
2579
2627
  ]
2580
2628
  }
2581
2629
  );
2582
2630
  }
2583
- const $t = {
2631
+ const Wt = {
2584
2632
  id: "alert",
2585
2633
  name: "Alert",
2586
2634
  tier: "molecule",
@@ -2655,14 +2703,14 @@ const $t = {
2655
2703
  notes: 'role="alert" causes screen readers to announce the content immediately when rendered. For non-urgent status messages, consider using role="status" instead by overriding via style/wrapper.'
2656
2704
  }
2657
2705
  };
2658
- function Dt({
2706
+ function Pt({
2659
2707
  illustration: t,
2660
2708
  title: e,
2661
2709
  description: a,
2662
2710
  action: r,
2663
2711
  style: o
2664
2712
  }) {
2665
- return /* @__PURE__ */ h(
2713
+ return /* @__PURE__ */ m(
2666
2714
  "div",
2667
2715
  {
2668
2716
  style: {
@@ -2689,16 +2737,16 @@ function Dt({
2689
2737
  children: t
2690
2738
  }
2691
2739
  ),
2692
- /* @__PURE__ */ h("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)" }, children: [
2693
- /* @__PURE__ */ n(z, { as: "h3", size: "lg", weight: "semibold", align: "center", lineHeight: "tight", children: e }),
2694
- a && /* @__PURE__ */ n(z, { size: "sm", color: "secondary", align: "center", lineHeight: "relaxed", children: a })
2740
+ /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)" }, children: [
2741
+ /* @__PURE__ */ n(E, { as: "h3", size: "lg", weight: "semibold", align: "center", lineHeight: "tight", children: e }),
2742
+ a && /* @__PURE__ */ n(E, { size: "sm", color: "secondary", align: "center", lineHeight: "relaxed", children: a })
2695
2743
  ] }),
2696
2744
  r != null && /* @__PURE__ */ n("div", { children: r })
2697
2745
  ]
2698
2746
  }
2699
2747
  );
2700
2748
  }
2701
- const Lt = {
2749
+ const Ot = {
2702
2750
  id: "empty-state",
2703
2751
  name: "EmptyState",
2704
2752
  tier: "molecule",
@@ -2769,16 +2817,16 @@ const Lt = {
2769
2817
  accessibility: {
2770
2818
  notes: "The title renders as an h3 by default. If EmptyState appears inside a section with its own heading hierarchy, override by passing a Text component as part of a custom layout. Ensure the action element has a descriptive label for screen readers."
2771
2819
  }
2772
- }, _e = {
2820
+ }, Ke = {
2773
2821
  text: "1em",
2774
2822
  circle: 40,
2775
2823
  rectangle: 40
2776
- }, Ke = {
2824
+ }, Ye = {
2777
2825
  text: "var(--lucent-radius-sm)",
2778
2826
  circle: "var(--lucent-radius-full)",
2779
2827
  rectangle: "var(--lucent-radius-md)"
2780
2828
  };
2781
- function $({
2829
+ function D({
2782
2830
  width: t,
2783
2831
  height: e,
2784
2832
  radius: a,
@@ -2802,7 +2850,7 @@ function $({
2802
2850
  }
2803
2851
  );
2804
2852
  }
2805
- function Vt({
2853
+ function Ht({
2806
2854
  variant: t = "rectangle",
2807
2855
  width: e = "100%",
2808
2856
  height: a,
@@ -2811,39 +2859,39 @@ function Vt({
2811
2859
  radius: i,
2812
2860
  style: l
2813
2861
  }) {
2814
- const s = a ?? _e[t], u = i ?? Ke[t], f = o ? /* @__PURE__ */ n("style", { children: `
2862
+ const s = a ?? Ke[t], d = i ?? Ye[t], p = o ? /* @__PURE__ */ n("style", { children: `
2815
2863
  @keyframes lucent-skeleton-shimmer {
2816
2864
  0% { background-position: 200% 0; }
2817
2865
  100% { background-position: -200% 0; }
2818
2866
  }
2819
2867
  ` }) : null;
2820
- return t === "text" && r > 1 ? /* @__PURE__ */ h(A, { children: [
2821
- f,
2822
- /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)", ...l }, children: Array.from({ length: r }).map((p, m) => /* @__PURE__ */ n(
2823
- $,
2868
+ return t === "text" && r > 1 ? /* @__PURE__ */ m(A, { children: [
2869
+ p,
2870
+ /* @__PURE__ */ n("div", { style: { display: "flex", flexDirection: "column", gap: "var(--lucent-space-2)", ...l }, children: Array.from({ length: r }).map((f, h) => /* @__PURE__ */ n(
2871
+ D,
2824
2872
  {
2825
- width: m === r - 1 ? "70%" : e,
2873
+ width: h === r - 1 ? "70%" : e,
2826
2874
  height: s,
2827
- radius: u,
2875
+ radius: d,
2828
2876
  animate: o
2829
2877
  },
2830
- m
2878
+ h
2831
2879
  )) })
2832
- ] }) : /* @__PURE__ */ h(A, { children: [
2833
- f,
2880
+ ] }) : /* @__PURE__ */ m(A, { children: [
2881
+ p,
2834
2882
  /* @__PURE__ */ n(
2835
- $,
2883
+ D,
2836
2884
  {
2837
2885
  width: t === "circle" ? a ?? 40 : e,
2838
2886
  height: s,
2839
- radius: u,
2887
+ radius: d,
2840
2888
  animate: o,
2841
2889
  ...l !== void 0 && { style: l }
2842
2890
  }
2843
2891
  )
2844
2892
  ] });
2845
2893
  }
2846
- const Wt = {
2894
+ const Gt = {
2847
2895
  id: "skeleton",
2848
2896
  name: "Skeleton",
2849
2897
  tier: "molecule",
@@ -2929,7 +2977,356 @@ const Wt = {
2929
2977
  ariaAttributes: ["aria-busy", "aria-label"],
2930
2978
  notes: 'Wrap loading regions with aria-busy="true" on the container so screen readers know content is loading. Individual Skeleton elements are presentational and do not need ARIA attributes themselves.'
2931
2979
  }
2932
- }, P = {
2980
+ };
2981
+ function jt({ items: t, separator: e = "/", style: a }) {
2982
+ return /* @__PURE__ */ n("nav", { "aria-label": "Breadcrumb", style: a, children: /* @__PURE__ */ n(
2983
+ "ol",
2984
+ {
2985
+ style: {
2986
+ display: "flex",
2987
+ alignItems: "center",
2988
+ flexWrap: "wrap",
2989
+ gap: "var(--lucent-space-1)",
2990
+ listStyle: "none",
2991
+ margin: 0,
2992
+ padding: 0,
2993
+ fontFamily: "var(--lucent-font-family-base)"
2994
+ },
2995
+ children: t.map((r, o) => {
2996
+ const i = o === t.length - 1;
2997
+ return /* @__PURE__ */ m("li", { style: { display: "flex", alignItems: "center", gap: "var(--lucent-space-1)" }, children: [
2998
+ i ? /* @__PURE__ */ n(E, { size: "sm", color: "primary", as: "span", "aria-current": "page", children: r.label }) : r.href != null ? /* @__PURE__ */ n(
2999
+ "a",
3000
+ {
3001
+ href: r.href,
3002
+ onClick: r.onClick,
3003
+ style: {
3004
+ fontSize: "var(--lucent-font-size-sm)",
3005
+ color: "var(--lucent-text-secondary)",
3006
+ textDecoration: "none",
3007
+ fontFamily: "var(--lucent-font-family-base)",
3008
+ transition: "color var(--lucent-duration-fast) var(--lucent-easing-default)"
3009
+ },
3010
+ onMouseEnter: (l) => {
3011
+ l.currentTarget.style.color = "var(--lucent-text-primary)";
3012
+ },
3013
+ onMouseLeave: (l) => {
3014
+ l.currentTarget.style.color = "var(--lucent-text-secondary)";
3015
+ },
3016
+ children: r.label
3017
+ }
3018
+ ) : /* @__PURE__ */ n(
3019
+ "button",
3020
+ {
3021
+ onClick: r.onClick,
3022
+ style: {
3023
+ fontSize: "var(--lucent-font-size-sm)",
3024
+ color: "var(--lucent-text-secondary)",
3025
+ fontFamily: "var(--lucent-font-family-base)",
3026
+ background: "none",
3027
+ border: "none",
3028
+ padding: 0,
3029
+ cursor: "pointer",
3030
+ transition: "color var(--lucent-duration-fast) var(--lucent-easing-default)"
3031
+ },
3032
+ onMouseEnter: (l) => {
3033
+ l.currentTarget.style.color = "var(--lucent-text-primary)";
3034
+ },
3035
+ onMouseLeave: (l) => {
3036
+ l.currentTarget.style.color = "var(--lucent-text-secondary)";
3037
+ },
3038
+ children: r.label
3039
+ }
3040
+ ),
3041
+ !i && /* @__PURE__ */ n("span", { "aria-hidden": !0, style: { color: "var(--lucent-text-disabled)", fontSize: "var(--lucent-font-size-sm)", userSelect: "none" }, children: e })
3042
+ ] }, o);
3043
+ })
3044
+ }
3045
+ ) });
3046
+ }
3047
+ function Ut({ tabs: t, defaultValue: e, value: a, onChange: r, style: o }) {
3048
+ var w;
3049
+ const i = a !== void 0, [l, s] = z(e ?? ((w = t[0]) == null ? void 0 : w.value) ?? ""), d = i ? a : l, [p, f] = z(null), h = M([]), [c, u] = z(null), b = M(!1);
3050
+ P(() => {
3051
+ const v = t.findIndex((y) => y.value === d), k = h.current[v];
3052
+ k && (u({ left: k.offsetLeft, width: k.offsetWidth, animate: b.current }), b.current = !0);
3053
+ }, [d, t]);
3054
+ const g = (v) => {
3055
+ i || s(v), r == null || r(v);
3056
+ }, x = (v, k) => {
3057
+ var R;
3058
+ const y = t.map((B, q) => B.disabled ? -1 : q).filter((B) => B !== -1), I = y.indexOf(k);
3059
+ let T = -1;
3060
+ v.key === "ArrowRight" && (T = y[(I + 1) % y.length] ?? -1), v.key === "ArrowLeft" && (T = y[(I - 1 + y.length) % y.length] ?? -1), v.key === "Home" && (T = y[0] ?? -1), v.key === "End" && (T = y[y.length - 1] ?? -1), T !== -1 && (v.preventDefault(), (R = h.current[T]) == null || R.focus(), g(t[T].value));
3061
+ };
3062
+ return /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", ...o }, children: [
3063
+ /* @__PURE__ */ m(
3064
+ "div",
3065
+ {
3066
+ role: "tablist",
3067
+ style: {
3068
+ position: "relative",
3069
+ display: "flex",
3070
+ borderBottom: "1px solid var(--lucent-border-default)"
3071
+ },
3072
+ children: [
3073
+ t.map((v, k) => {
3074
+ const y = v.value === d, I = v.disabled ?? !1;
3075
+ return /* @__PURE__ */ n(
3076
+ "button",
3077
+ {
3078
+ ref: (T) => {
3079
+ h.current[k] = T;
3080
+ },
3081
+ role: "tab",
3082
+ "aria-selected": y,
3083
+ "aria-controls": `lucent-tabpanel-${v.value}`,
3084
+ id: `lucent-tab-${v.value}`,
3085
+ disabled: I,
3086
+ tabIndex: y ? 0 : -1,
3087
+ onClick: () => {
3088
+ I || g(v.value);
3089
+ },
3090
+ onKeyDown: (T) => x(T, k),
3091
+ onMouseEnter: () => {
3092
+ I || f(k);
3093
+ },
3094
+ onMouseLeave: () => f(null),
3095
+ style: {
3096
+ padding: "var(--lucent-space-1) var(--lucent-space-2) var(--lucent-space-3)",
3097
+ background: "none",
3098
+ border: "none",
3099
+ cursor: I ? "not-allowed" : "pointer",
3100
+ fontFamily: "var(--lucent-font-family-base)",
3101
+ fontSize: "var(--lucent-font-size-md)",
3102
+ fontWeight: y ? "var(--lucent-font-weight-medium)" : "var(--lucent-font-weight-regular)",
3103
+ color: I ? "var(--lucent-text-disabled)" : y ? "var(--lucent-text-primary)" : "var(--lucent-text-secondary)",
3104
+ transition: "color var(--lucent-duration-fast) var(--lucent-easing-default)",
3105
+ whiteSpace: "nowrap",
3106
+ outline: "none"
3107
+ },
3108
+ children: /* @__PURE__ */ n("span", { style: {
3109
+ display: "block",
3110
+ padding: "var(--lucent-space-1) var(--lucent-space-3)",
3111
+ borderRadius: "var(--lucent-radius-md)",
3112
+ background: p === k && !y ? "var(--lucent-bg-subtle)" : "transparent",
3113
+ transition: "background var(--lucent-duration-fast) var(--lucent-easing-default)"
3114
+ }, children: v.label })
3115
+ },
3116
+ v.value
3117
+ );
3118
+ }),
3119
+ c != null && /* @__PURE__ */ n(
3120
+ "span",
3121
+ {
3122
+ "aria-hidden": !0,
3123
+ style: {
3124
+ position: "absolute",
3125
+ bottom: 0,
3126
+ left: c.left,
3127
+ width: c.width,
3128
+ height: 2,
3129
+ background: "var(--lucent-accent-default)",
3130
+ borderRadius: "var(--lucent-radius-sm)",
3131
+ transition: c.animate ? "left 220ms var(--lucent-easing-default), width 220ms var(--lucent-easing-default)" : "none"
3132
+ }
3133
+ }
3134
+ )
3135
+ ]
3136
+ }
3137
+ ),
3138
+ t.map((v) => /* @__PURE__ */ n(
3139
+ "div",
3140
+ {
3141
+ role: "tabpanel",
3142
+ id: `lucent-tabpanel-${v.value}`,
3143
+ "aria-labelledby": `lucent-tab-${v.value}`,
3144
+ hidden: v.value !== d,
3145
+ style: { padding: "var(--lucent-space-4) 0", outline: "none" },
3146
+ tabIndex: 0,
3147
+ children: v.content
3148
+ },
3149
+ v.value
3150
+ ))
3151
+ ] });
3152
+ }
3153
+ const Xe = `
3154
+ @keyframes lucent-collapsible-open {
3155
+ from { opacity: 0; transform: translateY(-4px); }
3156
+ to { opacity: 1; transform: translateY(0); }
3157
+ }
3158
+ `;
3159
+ function _t({ trigger: t, children: e, defaultOpen: a = !1, open: r, onOpenChange: o, style: i }) {
3160
+ const l = r !== void 0, [s, d] = z(a), p = l ? r : s, f = M(null), [h, c] = z(p ? void 0 : 0), u = M(!1);
3161
+ F(() => {
3162
+ const g = f.current;
3163
+ if (g)
3164
+ if (p) {
3165
+ const x = g.scrollHeight;
3166
+ c(x), u.current = !0;
3167
+ const w = setTimeout(() => {
3168
+ c(void 0), u.current = !1;
3169
+ }, 220);
3170
+ return () => clearTimeout(w);
3171
+ } else
3172
+ c(g.scrollHeight), g.getBoundingClientRect(), c(0);
3173
+ }, [p]);
3174
+ const b = () => {
3175
+ const g = !p;
3176
+ l || d(g), o == null || o(g);
3177
+ };
3178
+ return /* @__PURE__ */ m(A, { children: [
3179
+ /* @__PURE__ */ n("style", { children: Xe }),
3180
+ /* @__PURE__ */ m("div", { style: { display: "flex", flexDirection: "column", fontFamily: "var(--lucent-font-family-base)", fontSize: "var(--lucent-font-size-md)", ...i }, children: [
3181
+ /* @__PURE__ */ m(
3182
+ "button",
3183
+ {
3184
+ onClick: b,
3185
+ "aria-expanded": p,
3186
+ style: {
3187
+ display: "flex",
3188
+ alignItems: "center",
3189
+ justifyContent: "space-between",
3190
+ width: "100%",
3191
+ background: "none",
3192
+ border: "none",
3193
+ padding: "var(--lucent-space-3) var(--lucent-space-4)",
3194
+ cursor: "pointer",
3195
+ textAlign: "left",
3196
+ outline: "none",
3197
+ fontFamily: "inherit",
3198
+ fontSize: "inherit"
3199
+ },
3200
+ children: [
3201
+ /* @__PURE__ */ n("span", { style: { flex: 1 }, children: t }),
3202
+ /* @__PURE__ */ n(Je, { open: p })
3203
+ ]
3204
+ }
3205
+ ),
3206
+ /* @__PURE__ */ n(
3207
+ "div",
3208
+ {
3209
+ ref: f,
3210
+ "aria-hidden": !p,
3211
+ style: {
3212
+ overflow: "hidden",
3213
+ height: h !== void 0 ? h : "auto",
3214
+ transition: "height 200ms var(--lucent-easing-default)"
3215
+ },
3216
+ children: /* @__PURE__ */ n(
3217
+ "div",
3218
+ {
3219
+ style: {
3220
+ padding: "var(--lucent-space-2) var(--lucent-space-4) var(--lucent-space-3)",
3221
+ animation: p ? "lucent-collapsible-open 200ms var(--lucent-easing-default) forwards" : void 0
3222
+ },
3223
+ children: e
3224
+ }
3225
+ )
3226
+ }
3227
+ )
3228
+ ] })
3229
+ ] });
3230
+ }
3231
+ function Je({ open: t }) {
3232
+ return /* @__PURE__ */ n(
3233
+ "svg",
3234
+ {
3235
+ width: 16,
3236
+ height: 16,
3237
+ viewBox: "0 0 24 24",
3238
+ fill: "none",
3239
+ stroke: "currentColor",
3240
+ strokeWidth: 2,
3241
+ strokeLinecap: "round",
3242
+ strokeLinejoin: "round",
3243
+ "aria-hidden": !0,
3244
+ style: {
3245
+ flexShrink: 0,
3246
+ color: "var(--lucent-text-secondary)",
3247
+ transform: t ? "rotate(180deg)" : "rotate(0deg)",
3248
+ transition: "transform 200ms var(--lucent-easing-default)"
3249
+ },
3250
+ children: /* @__PURE__ */ n("polyline", { points: "6 9 12 15 18 9" })
3251
+ }
3252
+ );
3253
+ }
3254
+ function L(t) {
3255
+ return typeof t == "number" ? `${t}px` : t;
3256
+ }
3257
+ function Kt({
3258
+ children: t,
3259
+ header: e,
3260
+ sidebar: a,
3261
+ sidebarWidth: r = 240,
3262
+ headerHeight: o = 48,
3263
+ sidebarCollapsed: i = !1,
3264
+ mainStyle: l,
3265
+ style: s
3266
+ }) {
3267
+ const d = L(o), p = L(r);
3268
+ return /* @__PURE__ */ m(
3269
+ "div",
3270
+ {
3271
+ style: {
3272
+ display: "flex",
3273
+ flexDirection: "column",
3274
+ height: "100vh",
3275
+ overflow: "hidden",
3276
+ fontFamily: "var(--lucent-font-family-base)",
3277
+ ...s
3278
+ },
3279
+ children: [
3280
+ e != null && /* @__PURE__ */ n(
3281
+ "div",
3282
+ {
3283
+ style: {
3284
+ flexShrink: 0,
3285
+ height: d,
3286
+ zIndex: 10,
3287
+ background: "var(--lucent-surface-default)"
3288
+ },
3289
+ children: e
3290
+ }
3291
+ ),
3292
+ /* @__PURE__ */ m("div", { style: { display: "flex", flex: 1, overflow: "hidden" }, children: [
3293
+ a != null && /* @__PURE__ */ n(
3294
+ "div",
3295
+ {
3296
+ style: {
3297
+ width: i ? 0 : p,
3298
+ flexShrink: 0,
3299
+ overflow: "hidden",
3300
+ overflowY: i ? "hidden" : "auto",
3301
+ background: "var(--lucent-surface-default)",
3302
+ transition: "width 200ms var(--lucent-easing-default)"
3303
+ },
3304
+ children: a
3305
+ }
3306
+ ),
3307
+ /* @__PURE__ */ n(
3308
+ "main",
3309
+ {
3310
+ style: {
3311
+ flex: 1,
3312
+ overflowY: "auto",
3313
+ minWidth: 0,
3314
+ margin: "0 var(--lucent-space-3) var(--lucent-space-3) 0",
3315
+ border: "1px solid var(--lucent-border-default)",
3316
+ borderRadius: "var(--lucent-radius-lg)",
3317
+ boxShadow: "var(--lucent-shadow-sm)",
3318
+ background: "var(--lucent-surface-default)",
3319
+ ...l
3320
+ },
3321
+ children: t
3322
+ }
3323
+ )
3324
+ ] })
3325
+ ]
3326
+ }
3327
+ );
3328
+ }
3329
+ const G = {
2933
3330
  fontFamilyBase: '"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
2934
3331
  fontFamilyMono: '"DM Mono", "Fira Code", "Cascadia Code", monospace',
2935
3332
  fontFamilyDisplay: '"Georama", "DM Sans", sans-serif',
@@ -2950,7 +3347,7 @@ const Wt = {
2950
3347
  letterSpacingTight: "-0.02em",
2951
3348
  letterSpacingBase: "0em",
2952
3349
  letterSpacingWide: "0.04em"
2953
- }, O = {
3350
+ }, j = {
2954
3351
  space0: "0px",
2955
3352
  space1: "0.25rem",
2956
3353
  space2: "0.5rem",
@@ -2964,38 +3361,38 @@ const Wt = {
2964
3361
  space16: "4rem",
2965
3362
  space20: "5rem",
2966
3363
  space24: "6rem"
2967
- }, H = {
3364
+ }, U = {
2968
3365
  radiusNone: "0px",
2969
3366
  radiusSm: "0.25rem",
2970
3367
  radiusMd: "0.375rem",
2971
3368
  radiusLg: "0.5rem",
2972
3369
  radiusXl: "0.75rem",
2973
3370
  radiusFull: "9999px"
2974
- }, G = {
3371
+ }, _ = {
2975
3372
  durationFast: "100ms",
2976
3373
  durationBase: "200ms",
2977
3374
  durationSlow: "350ms",
2978
3375
  easingDefault: "cubic-bezier(0.4, 0, 0.2, 1)",
2979
3376
  easingEmphasized: "cubic-bezier(0.2, 0, 0, 1)",
2980
3377
  easingDecelerate: "cubic-bezier(0, 0, 0.2, 1)"
2981
- }, Xe = {
3378
+ }, Qe = {
2982
3379
  shadowNone: "none",
2983
3380
  shadowSm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
2984
3381
  shadowMd: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
2985
3382
  shadowLg: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
2986
3383
  shadowXl: "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"
2987
- }, Ye = {
3384
+ }, Ze = {
2988
3385
  shadowNone: "none",
2989
3386
  shadowSm: "0 1px 2px 0 rgb(0 0 0 / 0.3)",
2990
3387
  shadowMd: "0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4)",
2991
3388
  shadowLg: "0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.4)",
2992
3389
  shadowXl: "0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.5)"
2993
- }, U = {
2994
- ...P,
2995
- ...O,
2996
- ...H,
3390
+ }, K = {
2997
3391
  ...G,
2998
- ...Xe,
3392
+ ...j,
3393
+ ...U,
3394
+ ..._,
3395
+ ...Qe,
2999
3396
  // Backgrounds
3000
3397
  bgBase: "#ffffff",
3001
3398
  bgSubtle: "#f9fafb",
@@ -3038,12 +3435,12 @@ const Wt = {
3038
3435
  infoText: "#1d4ed8",
3039
3436
  // Focus
3040
3437
  focusRing: "#111827"
3041
- }, Je = {
3042
- ...P,
3043
- ...O,
3044
- ...H,
3438
+ }, et = {
3045
3439
  ...G,
3046
- ...Ye,
3440
+ ...j,
3441
+ ...U,
3442
+ ..._,
3443
+ ...Ze,
3047
3444
  // Backgrounds
3048
3445
  bgBase: "#0b0d12",
3049
3446
  bgSubtle: "#111318",
@@ -3087,77 +3484,77 @@ const Wt = {
3087
3484
  // Focus
3088
3485
  focusRing: "#f9fafb"
3089
3486
  };
3090
- function Qe(t) {
3487
+ function tt(t) {
3091
3488
  return "--lucent-" + t.replace(/([A-Z])/g, (e) => `-${e.toLowerCase()}`).replace(/([a-z])(\d)/g, (e, a, r) => `${a}-${r}`);
3092
3489
  }
3093
- function Ze(t, e = ":root") {
3094
- const a = Object.entries(t).map(([r, o]) => ` ${Qe(r)}: ${o};`).join(`
3490
+ function nt(t, e = ":root") {
3491
+ const a = Object.entries(t).map(([r, o]) => ` ${tt(r)}: ${o};`).join(`
3095
3492
  `);
3096
3493
  return `${e} {
3097
3494
  ${a}
3098
3495
  }`;
3099
3496
  }
3100
- function et(t) {
3497
+ function at(t) {
3101
3498
  const e = parseInt(t.slice(1, 3), 16) / 255, a = parseInt(t.slice(3, 5), 16) / 255, r = parseInt(t.slice(5, 7), 16) / 255, o = (i) => i <= 0.03928 ? i / 12.92 : Math.pow((i + 0.055) / 1.055, 2.4);
3102
3499
  return 0.2126 * o(e) + 0.7152 * o(a) + 0.0722 * o(r);
3103
3500
  }
3104
- function tt(t) {
3105
- return et(t) < 0.179 ? "#ffffff" : "#000000";
3501
+ function rt(t) {
3502
+ return at(t) < 0.179 ? "#ffffff" : "#000000";
3106
3503
  }
3107
- const j = L({
3504
+ const Y = W({
3108
3505
  theme: "light",
3109
- tokens: U
3506
+ tokens: K
3110
3507
  });
3111
- function Pt({
3508
+ function Yt({
3112
3509
  theme: t = "light",
3113
3510
  tokens: e,
3114
3511
  children: a
3115
3512
  }) {
3116
- const r = X().replace(/:/g, ""), o = t === "dark" ? Je : U, i = e ? { ...o, ...e } : o, l = {
3513
+ const r = J().replace(/:/g, ""), o = t === "dark" ? et : K, i = e ? { ...o, ...e } : o, l = {
3117
3514
  ...i,
3118
- textOnAccent: (e == null ? void 0 : e.textOnAccent) ?? tt(i.accentDefault)
3515
+ textOnAccent: (e == null ? void 0 : e.textOnAccent) ?? rt(i.accentDefault)
3119
3516
  }, s = `html { font-size: 13px; }
3120
- ` + Ze(l, ":root");
3121
- return Y(() => {
3122
- let u = document.getElementById(`lucent-tokens-${r}`);
3123
- return u || (u = document.createElement("style"), u.id = `lucent-tokens-${r}`, document.head.appendChild(u)), u.textContent = s, () => {
3124
- var f;
3125
- (f = document.getElementById(`lucent-tokens-${r}`)) == null || f.remove();
3517
+ ` + nt(l, ":root");
3518
+ return P(() => {
3519
+ let d = document.getElementById(`lucent-tokens-${r}`);
3520
+ return d || (d = document.createElement("style"), d.id = `lucent-tokens-${r}`, document.head.appendChild(d)), d.textContent = s, () => {
3521
+ var p;
3522
+ (p = document.getElementById(`lucent-tokens-${r}`)) == null || p.remove();
3126
3523
  };
3127
- }, [r, s]), /* @__PURE__ */ n(j.Provider, { value: { theme: t, tokens: l }, children: a });
3524
+ }, [r, s]), /* @__PURE__ */ n(Y.Provider, { value: { theme: t, tokens: l }, children: a });
3128
3525
  }
3129
- function Ot() {
3130
- return D(j);
3526
+ function Xt() {
3527
+ return V(Y);
3131
3528
  }
3132
- const Ht = {
3529
+ const Jt = {
3133
3530
  accentDefault: "#e9c96b",
3134
3531
  accentHover: "#ddb84e",
3135
3532
  accentActive: "#c9a33b",
3136
3533
  accentSubtle: "#fef9ec",
3137
3534
  focusRing: "#e9c96b"
3138
3535
  };
3139
- function w(t, e) {
3536
+ function C(t, e) {
3140
3537
  return { field: t, message: e };
3141
3538
  }
3142
- function nt(t) {
3539
+ function ot(t) {
3143
3540
  const e = [];
3144
3541
  if (typeof t != "object" || t === null)
3145
- return { valid: !1, errors: [w("manifest", "Must be a non-null object")] };
3542
+ return { valid: !1, errors: [C("manifest", "Must be a non-null object")] };
3146
3543
  const a = t, r = ["id", "name", "description", "designIntent", "specVersion"];
3147
3544
  for (const i of r)
3148
- (typeof a[i] != "string" || a[i].trim() === "") && e.push(w(i, "Must be a non-empty string"));
3149
- typeof a.id == "string" && !/^[a-z][a-z0-9-]*$/.test(a.id) && e.push(w("id", 'Must be kebab-case (e.g. "button", "form-field")'));
3545
+ (typeof a[i] != "string" || a[i].trim() === "") && e.push(C(i, "Must be a non-empty string"));
3546
+ typeof a.id == "string" && !/^[a-z][a-z0-9-]*$/.test(a.id) && e.push(C("id", 'Must be kebab-case (e.g. "button", "form-field")'));
3150
3547
  const o = ["atom", "molecule", "block", "flow", "overlay"];
3151
- return o.includes(a.tier) || e.push(w("tier", `Must be one of: ${o.join(", ")}`)), (typeof a.domain != "string" || a.domain.trim() === "") && e.push(w("domain", "Must be a non-empty string")), Array.isArray(a.props) ? a.props.forEach((i, l) => {
3152
- const s = i, u = `props[${l}]`;
3153
- (typeof s.name != "string" || s.name === "") && e.push(w(`${u}.name`, "Must be a non-empty string")), (typeof s.type != "string" || s.type === "") && e.push(w(`${u}.type`, "Must be a non-empty string")), typeof s.required != "boolean" && e.push(w(`${u}.required`, "Must be a boolean")), (typeof s.description != "string" || s.description === "") && e.push(w(`${u}.description`, "Must be a non-empty string"));
3154
- }) : e.push(w("props", "Must be an array")), Array.isArray(a.usageExamples) ? a.usageExamples.length === 0 ? e.push(w("usageExamples", "Must have at least one example")) : a.usageExamples.forEach((i, l) => {
3155
- const s = i, u = `usageExamples[${l}]`;
3156
- (typeof s.title != "string" || s.title === "") && e.push(w(`${u}.title`, "Must be a non-empty string")), (typeof s.code != "string" || s.code === "") && e.push(w(`${u}.code`, "Must be a non-empty string"));
3157
- }) : e.push(w("usageExamples", "Must be an array")), Array.isArray(a.compositionGraph) || e.push(w("compositionGraph", "Must be an array (empty array is fine for atoms)")), typeof a.specVersion == "string" && !/^\d+\.\d+$/.test(a.specVersion) && e.push(w("specVersion", 'Must be "MAJOR.MINOR" format, e.g. "0.1"')), { valid: e.length === 0, errors: e };
3548
+ return o.includes(a.tier) || e.push(C("tier", `Must be one of: ${o.join(", ")}`)), (typeof a.domain != "string" || a.domain.trim() === "") && e.push(C("domain", "Must be a non-empty string")), Array.isArray(a.props) ? a.props.forEach((i, l) => {
3549
+ const s = i, d = `props[${l}]`;
3550
+ (typeof s.name != "string" || s.name === "") && e.push(C(`${d}.name`, "Must be a non-empty string")), (typeof s.type != "string" || s.type === "") && e.push(C(`${d}.type`, "Must be a non-empty string")), typeof s.required != "boolean" && e.push(C(`${d}.required`, "Must be a boolean")), (typeof s.description != "string" || s.description === "") && e.push(C(`${d}.description`, "Must be a non-empty string"));
3551
+ }) : e.push(C("props", "Must be an array")), Array.isArray(a.usageExamples) ? a.usageExamples.length === 0 ? e.push(C("usageExamples", "Must have at least one example")) : a.usageExamples.forEach((i, l) => {
3552
+ const s = i, d = `usageExamples[${l}]`;
3553
+ (typeof s.title != "string" || s.title === "") && e.push(C(`${d}.title`, "Must be a non-empty string")), (typeof s.code != "string" || s.code === "") && e.push(C(`${d}.code`, "Must be a non-empty string"));
3554
+ }) : e.push(C("usageExamples", "Must be an array")), Array.isArray(a.compositionGraph) || e.push(C("compositionGraph", "Must be an array (empty array is fine for atoms)")), typeof a.specVersion == "string" && !/^\d+\.\d+$/.test(a.specVersion) && e.push(C("specVersion", 'Must be "MAJOR.MINOR" format, e.g. "0.1"')), { valid: e.length === 0, errors: e };
3158
3555
  }
3159
- function Gt(t) {
3160
- const e = nt(t);
3556
+ function Qt(t) {
3557
+ const e = ot(t);
3161
3558
  if (!e.valid) {
3162
3559
  const a = e.errors.map((r) => ` ${r.field}: ${r.message}`).join(`
3163
3560
  `);
@@ -3165,67 +3562,72 @@ function Gt(t) {
3165
3562
  ${a}`);
3166
3563
  }
3167
3564
  }
3168
- function Ut(t) {
3565
+ function Zt(t) {
3169
3566
  if (typeof t != "object" || t === null) return !1;
3170
3567
  const e = t;
3171
3568
  return typeof e.name == "string" && typeof e.type == "string" && typeof e.required == "boolean" && typeof e.description == "string";
3172
3569
  }
3173
- const jt = "0.1", _t = "0.1.0";
3570
+ const en = "1.0", tn = "0.1.0";
3174
3571
  export {
3175
- Bt as Alert,
3176
- $t as AlertManifest,
3177
- dt as Avatar,
3178
- ut as AvatarManifest,
3179
- lt as Badge,
3180
- ct as BadgeManifest,
3181
- Z as Button,
3182
- ot as ButtonManifest,
3183
- Nt as Card,
3184
- Rt as CardManifest,
3185
- ge as Checkbox,
3186
- ht as CheckboxManifest,
3187
- ft as Divider,
3188
- mt as DividerManifest,
3189
- Dt as EmptyState,
3190
- Lt as EmptyStateManifest,
3191
- qt as FormField,
3192
- Et as FormFieldManifest,
3193
- It as Icon,
3194
- zt as IconManifest,
3195
- V as Input,
3196
- it as InputManifest,
3197
- _t as LUCENT_UI_VERSION,
3198
- Pt as LucentProvider,
3199
- jt as MANIFEST_SPEC_VERSION,
3200
- gt as Radio,
3572
+ Vt as Alert,
3573
+ Wt as AlertManifest,
3574
+ ft as Avatar,
3575
+ mt as AvatarManifest,
3576
+ ut as Badge,
3577
+ pt as BadgeManifest,
3578
+ jt as Breadcrumb,
3579
+ ee as Button,
3580
+ st as ButtonManifest,
3581
+ Dt as Card,
3582
+ Lt as CardManifest,
3583
+ be as Checkbox,
3584
+ vt as CheckboxManifest,
3585
+ _t as Collapsible,
3586
+ gt as Divider,
3587
+ bt as DividerManifest,
3588
+ Pt as EmptyState,
3589
+ Ot as EmptyStateManifest,
3590
+ Rt as FormField,
3591
+ Bt as FormFieldManifest,
3592
+ qt as Icon,
3593
+ Et as IconManifest,
3594
+ O as Input,
3595
+ ct as InputManifest,
3596
+ tn as LUCENT_UI_VERSION,
3597
+ Yt as LucentProvider,
3598
+ en as MANIFEST_SPEC_VERSION,
3599
+ Ft as NavLink,
3600
+ Kt as PageLayout,
3601
+ yt as Radio,
3201
3602
  ye as RadioGroup,
3202
- bt as RadioGroupUncontrolled,
3203
- yt as RadioManifest,
3204
- At as SearchInput,
3205
- Ft as SearchInputManifest,
3206
- Te as Select,
3207
- wt as SelectManifest,
3208
- Vt as Skeleton,
3209
- Wt as SkeletonManifest,
3210
- fe as Spinner,
3211
- pt as SpinnerManifest,
3212
- kt as Tag,
3213
- St as TagManifest,
3214
- z as Text,
3215
- Mt as TextManifest,
3216
- oe as Textarea,
3217
- st as TextareaManifest,
3218
- vt as Toggle,
3219
- xt as ToggleManifest,
3220
- Tt as Tooltip,
3221
- Ct as TooltipManifest,
3222
- Gt as assertManifest,
3223
- Ht as brandTokens,
3224
- Je as darkTokens,
3225
- tt as getContrastText,
3226
- Ut as isValidPropDescriptor,
3227
- U as lightTokens,
3228
- Ze as makeLibraryCSS,
3229
- Ot as useLucent,
3230
- nt as validateManifest
3603
+ xt as RadioGroupUncontrolled,
3604
+ wt as RadioManifest,
3605
+ Nt as SearchInput,
3606
+ $t as SearchInputManifest,
3607
+ Ce as Select,
3608
+ Tt as SelectManifest,
3609
+ Ht as Skeleton,
3610
+ Gt as SkeletonManifest,
3611
+ me as Spinner,
3612
+ ht as SpinnerManifest,
3613
+ Ut as Tabs,
3614
+ Ct as Tag,
3615
+ It as TagManifest,
3616
+ E as Text,
3617
+ At as TextManifest,
3618
+ ie as Textarea,
3619
+ dt as TextareaManifest,
3620
+ kt as Toggle,
3621
+ St as ToggleManifest,
3622
+ zt as Tooltip,
3623
+ Mt as TooltipManifest,
3624
+ Qt as assertManifest,
3625
+ Jt as brandTokens,
3626
+ et as darkTokens,
3627
+ rt as getContrastText,
3628
+ Zt as isValidPropDescriptor,
3629
+ K as lightTokens,
3630
+ nt as makeLibraryCSS,
3631
+ Xt as useLucent,
3632
+ ot as validateManifest
3231
3633
  };