@octavius2929-personal/design-system 0.5.1 → 0.7.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
@@ -23,7 +23,7 @@ function useToggle(initial = false) {
23
23
  return [on, toggle, setOn];
24
24
  }
25
25
 
26
- // src/components/button/use-styles.ts
26
+ // src/components/typography/use-styles.ts
27
27
  import { useMemo as useMemo2 } from "react";
28
28
 
29
29
  // src/theme/context/theme-context.tsx
@@ -117,6 +117,65 @@ function useTheme() {
117
117
  return useContext(ThemeContext) ?? DEFAULT_VALUE;
118
118
  }
119
119
 
120
+ // src/theme/typography.css.ts
121
+ var text = { eyebrow: "typography_text_eyebrow__1wmlzy0", display: "typography_text_display__1wmlzy1", h1: "typography_text_h1__1wmlzy2", h2: "typography_text_h2__1wmlzy3", h3: "typography_text_h3__1wmlzy4", h4: "typography_text_h4__1wmlzy5", body: "typography_text_body__1wmlzy6", lead: "typography_text_lead__1wmlzy7", small: "typography_text_small__1wmlzy8", caption: "typography_text_caption__1wmlzy9", code: "typography_text_code__1wmlzya", blackletter: "typography_text_blackletter__1wmlzyb" };
122
+
123
+ // src/components/typography/use-styles.css.ts
124
+ var align = { left: "use-styles_align_left__d74jf69", center: "use-styles_align_center__d74jf6a", right: "use-styles_align_right__d74jf6b" };
125
+ var base = "use-styles_base__d74jf60";
126
+ var color = { fg1: "use-styles_color_fg1__d74jf61", fg2: "use-styles_color_fg2__d74jf62", fg3: "use-styles_color_fg3__d74jf63", accent: "use-styles_color_accent__d74jf64", danger: "use-styles_color_danger__d74jf65", ok: "use-styles_color_ok__d74jf66", warn: "use-styles_color_warn__d74jf67", info: "use-styles_color_info__d74jf68" };
127
+
128
+ // src/components/typography/use-styles.ts
129
+ function useStyles({
130
+ variant: variant2,
131
+ color: color2,
132
+ align: align2
133
+ }) {
134
+ const { themeClass } = useTheme();
135
+ const className = useMemo2(
136
+ () => [
137
+ themeClass,
138
+ base,
139
+ text[variant2],
140
+ color2 && color[color2],
141
+ align2 && align[align2]
142
+ ].filter(Boolean).join(" "),
143
+ [themeClass, variant2, color2, align2]
144
+ );
145
+ return { text: className };
146
+ }
147
+
148
+ // src/components/typography/index.tsx
149
+ import { jsx as jsx2 } from "react/jsx-runtime";
150
+ var defaultElement = {
151
+ display: "h1",
152
+ h1: "h1",
153
+ h2: "h2",
154
+ h3: "h3",
155
+ h4: "h4",
156
+ body: "p",
157
+ lead: "p",
158
+ small: "span",
159
+ caption: "span",
160
+ eyebrow: "span",
161
+ code: "code",
162
+ blackletter: "span"
163
+ };
164
+ function Typography({
165
+ variant: variant2,
166
+ as,
167
+ color: color2,
168
+ align: align2,
169
+ ...rest
170
+ }) {
171
+ const Component = as ?? defaultElement[variant2];
172
+ const { text: text2 } = useStyles({ variant: variant2, color: color2, align: align2 });
173
+ return /* @__PURE__ */ jsx2(Component, { ...rest, className: text2 });
174
+ }
175
+
176
+ // src/components/button/use-styles.ts
177
+ import { useMemo as useMemo3 } from "react";
178
+
120
179
  // src/components/button/use-styles.css.ts
121
180
  var full = "use-styles_full__1pbtill4";
122
181
  var root = "use-styles_root__1pbtill0";
@@ -127,7 +186,7 @@ var tone = { filledInk: "use-styles_tone_filledInk__1pbtill5", filledAccent: "us
127
186
  function toneKey(variant2, tone4) {
128
187
  return `${variant2}${tone4 === "ink" ? "Ink" : "Accent"}`;
129
188
  }
130
- function useStyles({
189
+ function useStyles2({
131
190
  variant: variant2 = "filled",
132
191
  tone: tone4 = "ink",
133
192
  size: size3 = "md",
@@ -135,7 +194,7 @@ function useStyles({
135
194
  className
136
195
  }) {
137
196
  const { themeClass } = useTheme();
138
- const container = useMemo2(
197
+ const container = useMemo3(
139
198
  () => [
140
199
  themeClass,
141
200
  root,
@@ -150,7 +209,7 @@ function useStyles({
150
209
  }
151
210
 
152
211
  // src/components/button/index.tsx
153
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
212
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
154
213
  var ICON_SIZE = { sm: 14, md: 16, lg: 18 };
155
214
  function Button({
156
215
  variant: variant2,
@@ -163,17 +222,17 @@ function Button({
163
222
  children,
164
223
  ...rest
165
224
  }) {
166
- const { container } = useStyles({ variant: variant2, tone: tone4, size: size3, full: full2, className });
225
+ const { container } = useStyles2({ variant: variant2, tone: tone4, size: size3, full: full2, className });
167
226
  const iconSize = ICON_SIZE[size3];
168
227
  return /* @__PURE__ */ jsxs("button", { className: container, ...rest, children: [
169
- StartIcon && /* @__PURE__ */ jsx2(StartIcon, { size: iconSize }),
228
+ StartIcon && /* @__PURE__ */ jsx3(StartIcon, { size: iconSize }),
170
229
  children,
171
- EndIcon && /* @__PURE__ */ jsx2(EndIcon, { size: iconSize })
230
+ EndIcon && /* @__PURE__ */ jsx3(EndIcon, { size: iconSize })
172
231
  ] });
173
232
  }
174
233
 
175
234
  // src/components/divider/use-styles.ts
176
- import { useMemo as useMemo3 } from "react";
235
+ import { useMemo as useMemo4 } from "react";
177
236
 
178
237
  // src/components/divider/use-styles.css.ts
179
238
  var horizontal = "use-styles_horizontal__1n7v7yj1";
@@ -184,9 +243,9 @@ var root2 = "use-styles_root__1n7v7yj0";
184
243
  var vertical = "use-styles_vertical__1n7v7yj2";
185
244
 
186
245
  // src/components/divider/use-styles.ts
187
- function useStyles2({ vertical: vertical2, hasLabel }) {
246
+ function useStyles3({ vertical: vertical2, hasLabel }) {
188
247
  const { themeClass } = useTheme();
189
- const root24 = useMemo3(
248
+ const root24 = useMemo4(
190
249
  () => [
191
250
  themeClass,
192
251
  root2,
@@ -198,22 +257,22 @@ function useStyles2({ vertical: vertical2, hasLabel }) {
198
257
  }
199
258
 
200
259
  // src/components/divider/index.tsx
201
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
260
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
202
261
  function Divider({ vertical: vertical2, label: label7, ...rest }) {
203
262
  const hasLabel = label7 != null;
204
- const { root: root24, line: line2, label: labelClass } = useStyles2({ vertical: vertical2, hasLabel });
263
+ const { root: root24, line: line2, label: labelClass } = useStyles3({ vertical: vertical2, hasLabel });
205
264
  if (hasLabel) {
206
265
  return /* @__PURE__ */ jsxs2("div", { role: "separator", className: root24, ...rest, children: [
207
- /* @__PURE__ */ jsx3("span", { className: line2 }),
208
- /* @__PURE__ */ jsx3("span", { className: labelClass, children: label7 }),
209
- /* @__PURE__ */ jsx3("span", { className: line2 })
266
+ /* @__PURE__ */ jsx4("span", { className: line2 }),
267
+ /* @__PURE__ */ jsx4("span", { className: labelClass, children: label7 }),
268
+ /* @__PURE__ */ jsx4("span", { className: line2 })
210
269
  ] });
211
270
  }
212
- return /* @__PURE__ */ jsx3("div", { role: "separator", className: root24, ...rest });
271
+ return /* @__PURE__ */ jsx4("div", { role: "separator", className: root24, ...rest });
213
272
  }
214
273
 
215
274
  // src/components/avatar/use-styles.ts
216
- import { useMemo as useMemo4 } from "react";
275
+ import { useMemo as useMemo5 } from "react";
217
276
 
218
277
  // src/components/avatar/use-styles.css.ts
219
278
  var root3 = "use-styles_root__1mn1rmu0";
@@ -221,13 +280,13 @@ var size2 = { sm: "use-styles_size_sm__1mn1rmu1", md: "use-styles_size_md__1mn1r
221
280
  var variant = { "default": "use-styles_variant_default__1mn1rmu4", filled: "use-styles_variant_filled__1mn1rmu5" };
222
281
 
223
282
  // src/components/avatar/use-styles.ts
224
- function useStyles3({
283
+ function useStyles4({
225
284
  size: size3 = "md",
226
285
  filled,
227
286
  className
228
287
  }) {
229
288
  const { themeClass } = useTheme();
230
- const root24 = useMemo4(
289
+ const root24 = useMemo5(
231
290
  () => [
232
291
  themeClass,
233
292
  root3,
@@ -241,14 +300,14 @@ function useStyles3({
241
300
  }
242
301
 
243
302
  // src/components/avatar/index.tsx
244
- import { jsx as jsx4 } from "react/jsx-runtime";
303
+ import { jsx as jsx5 } from "react/jsx-runtime";
245
304
  function Avatar({ size: size3, filled, className, children, ...rest }) {
246
- const { root: root24 } = useStyles3({ size: size3, filled, className });
247
- return /* @__PURE__ */ jsx4("span", { className: root24, ...rest, children });
305
+ const { root: root24 } = useStyles4({ size: size3, filled, className });
306
+ return /* @__PURE__ */ jsx5("span", { className: root24, ...rest, children });
248
307
  }
249
308
 
250
309
  // src/components/badge/use-styles.ts
251
- import { useMemo as useMemo5 } from "react";
310
+ import { useMemo as useMemo6 } from "react";
252
311
 
253
312
  // src/components/badge/use-styles.css.ts
254
313
  var dot = "use-styles_dot__1wpei6p1";
@@ -256,31 +315,31 @@ var root4 = "use-styles_root__1wpei6p0";
256
315
  var tone2 = { ink: "use-styles_tone_ink__1wpei6p2", accent: "use-styles_tone_accent__1wpei6p3" };
257
316
 
258
317
  // src/components/badge/use-styles.ts
259
- function useStyles4({
318
+ function useStyles5({
260
319
  tone: tone4 = "ink",
261
320
  className
262
321
  }) {
263
322
  const { themeClass } = useTheme();
264
- const root24 = useMemo5(
323
+ const root24 = useMemo6(
265
324
  () => [themeClass, root4, className].filter(Boolean).join(" "),
266
325
  [themeClass, className]
267
326
  );
268
- const dot3 = useMemo5(() => [dot, tone2[tone4]].join(" "), [tone4]);
327
+ const dot3 = useMemo6(() => [dot, tone2[tone4]].join(" "), [tone4]);
269
328
  return { root: root24, dot: dot3 };
270
329
  }
271
330
 
272
331
  // src/components/badge/index.tsx
273
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
332
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
274
333
  function Badge({ count, tone: tone4, className, children, ...rest }) {
275
- const { root: root24, dot: dot3 } = useStyles4({ tone: tone4, className });
334
+ const { root: root24, dot: dot3 } = useStyles5({ tone: tone4, className });
276
335
  return /* @__PURE__ */ jsxs3("span", { className: root24, ...rest, children: [
277
336
  children,
278
- count != null && /* @__PURE__ */ jsx5("span", { className: dot3, children: count })
337
+ count != null && /* @__PURE__ */ jsx6("span", { className: dot3, children: count })
279
338
  ] });
280
339
  }
281
340
 
282
341
  // src/components/progress/use-styles.ts
283
- import { useMemo as useMemo6 } from "react";
342
+ import { useMemo as useMemo7 } from "react";
284
343
 
285
344
  // src/components/progress/use-styles.css.ts
286
345
  var bar = "use-styles_bar__kbop7v3";
@@ -289,14 +348,14 @@ var spinner = "use-styles_spinner__kbop7v5";
289
348
  var track = "use-styles_track__kbop7v2";
290
349
 
291
350
  // src/components/progress/use-styles.ts
292
- function useStyles5({
351
+ function useStyles6({
293
352
  variant: variant2 = "linear",
294
353
  value,
295
354
  className
296
355
  }) {
297
356
  const { themeClass } = useTheme();
298
357
  const indeterminate2 = value === void 0;
299
- return useMemo6(() => {
358
+ return useMemo7(() => {
300
359
  const root24 = (...classes) => [themeClass, ...classes, className].filter(Boolean).join(" ");
301
360
  if (variant2 === "circular") {
302
361
  return { track: "", bar: "", spinner: root24(spinner) };
@@ -310,7 +369,7 @@ function useStyles5({
310
369
  }
311
370
 
312
371
  // src/components/progress/index.tsx
313
- import { jsx as jsx6 } from "react/jsx-runtime";
372
+ import { jsx as jsx7 } from "react/jsx-runtime";
314
373
  function Progress({
315
374
  variant: variant2 = "linear",
316
375
  value,
@@ -318,10 +377,10 @@ function Progress({
318
377
  className,
319
378
  ...rest
320
379
  }) {
321
- const { track: track4, bar: bar2, spinner: spinner2 } = useStyles5({ variant: variant2, value, className });
380
+ const { track: track4, bar: bar2, spinner: spinner2 } = useStyles6({ variant: variant2, value, className });
322
381
  const indeterminate2 = value === void 0;
323
382
  if (variant2 === "circular") {
324
- return /* @__PURE__ */ jsx6(
383
+ return /* @__PURE__ */ jsx7(
325
384
  "span",
326
385
  {
327
386
  className: spinner2,
@@ -334,7 +393,7 @@ function Progress({
334
393
  }
335
394
  );
336
395
  }
337
- return /* @__PURE__ */ jsx6(
396
+ return /* @__PURE__ */ jsx7(
338
397
  "div",
339
398
  {
340
399
  className: track4,
@@ -343,13 +402,13 @@ function Progress({
343
402
  "aria-valuemin": indeterminate2 ? void 0 : 0,
344
403
  "aria-valuemax": indeterminate2 ? void 0 : 100,
345
404
  ...rest,
346
- children: /* @__PURE__ */ jsx6("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
405
+ children: /* @__PURE__ */ jsx7("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
347
406
  }
348
407
  );
349
408
  }
350
409
 
351
410
  // src/components/icons/x/index.tsx
352
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
411
+ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
353
412
  function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
354
413
  return /* @__PURE__ */ jsxs4(
355
414
  "svg",
@@ -366,15 +425,15 @@ function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
366
425
  "aria-hidden": "true",
367
426
  ...rest,
368
427
  children: [
369
- /* @__PURE__ */ jsx7("path", { d: "M18 6 6 18" }),
370
- /* @__PURE__ */ jsx7("path", { d: "m6 6 12 12" })
428
+ /* @__PURE__ */ jsx8("path", { d: "M18 6 6 18" }),
429
+ /* @__PURE__ */ jsx8("path", { d: "m6 6 12 12" })
371
430
  ]
372
431
  }
373
432
  );
374
433
  }
375
434
 
376
435
  // src/components/chip/use-styles.ts
377
- import { useMemo as useMemo7 } from "react";
436
+ import { useMemo as useMemo8 } from "react";
378
437
 
379
438
  // src/components/chip/use-styles.css.ts
380
439
  var clickable = "use-styles_clickable__1axilf44";
@@ -384,13 +443,13 @@ var selected = "use-styles_selected__1axilf43";
384
443
  var tone3 = { ink: "use-styles_tone_ink__1axilf41", accent: "use-styles_tone_accent__1axilf42" };
385
444
 
386
445
  // src/components/chip/use-styles.ts
387
- function useStyles6({
446
+ function useStyles7({
388
447
  selected: selected3,
389
448
  tone: tone4 = "ink",
390
449
  clickable: clickable2
391
450
  }) {
392
451
  const { themeClass } = useTheme();
393
- const root24 = useMemo7(
452
+ const root24 = useMemo8(
394
453
  () => [
395
454
  themeClass,
396
455
  root5,
@@ -403,24 +462,24 @@ function useStyles6({
403
462
  }
404
463
 
405
464
  // src/components/chip/index.tsx
406
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
465
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
407
466
  function Chip({ selected: selected3, tone: tone4, onDelete, onClick, children, ...rest }) {
408
467
  const clickable2 = Boolean(onClick);
409
- const { root: root24, deleteBtn: deleteBtn2 } = useStyles6({ selected: selected3, tone: tone4, clickable: clickable2 });
468
+ const { root: root24, deleteBtn: deleteBtn2 } = useStyles7({ selected: selected3, tone: tone4, clickable: clickable2 });
410
469
  const handleDelete = (event) => {
411
470
  event.stopPropagation();
412
471
  onDelete?.();
413
472
  };
414
473
  return /* @__PURE__ */ jsxs5("span", { className: root24, onClick, ...rest, children: [
415
474
  children,
416
- onDelete && /* @__PURE__ */ jsx8("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ jsx8(XIcon, { size: 13 }) })
475
+ onDelete && /* @__PURE__ */ jsx9("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ jsx9(XIcon, { size: 13 }) })
417
476
  ] });
418
477
  }
419
478
 
420
479
  // src/components/icons/check/index.tsx
421
- import { jsx as jsx9 } from "react/jsx-runtime";
480
+ import { jsx as jsx10 } from "react/jsx-runtime";
422
481
  function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
423
- return /* @__PURE__ */ jsx9(
482
+ return /* @__PURE__ */ jsx10(
424
483
  "svg",
425
484
  {
426
485
  xmlns: "http://www.w3.org/2000/svg",
@@ -434,13 +493,13 @@ function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
434
493
  strokeLinejoin: "round",
435
494
  "aria-hidden": "true",
436
495
  ...rest,
437
- children: /* @__PURE__ */ jsx9("path", { d: "M20 6 9 17l-5-5" })
496
+ children: /* @__PURE__ */ jsx10("path", { d: "M20 6 9 17l-5-5" })
438
497
  }
439
498
  );
440
499
  }
441
500
 
442
501
  // src/components/checkbox/use-styles.ts
443
- import { useMemo as useMemo8 } from "react";
502
+ import { useMemo as useMemo9 } from "react";
444
503
 
445
504
  // src/components/checkbox/use-styles.css.ts
446
505
  var box = "use-styles_box__9zoga91";
@@ -451,13 +510,13 @@ var input = "surfaces_srOnly__6hs0fg0";
451
510
  var root6 = "use-styles_root__9zoga90";
452
511
 
453
512
  // src/components/checkbox/use-styles.ts
454
- function useStyles7({ checked, disabled: disabled3 }) {
513
+ function useStyles8({ checked, disabled: disabled3 }) {
455
514
  const { themeClass } = useTheme();
456
- const root24 = useMemo8(
515
+ const root24 = useMemo9(
457
516
  () => [themeClass, root6, disabled3 && disabled].filter(Boolean).join(" "),
458
517
  [themeClass, disabled3]
459
518
  );
460
- const box2 = useMemo8(
519
+ const box2 = useMemo9(
461
520
  () => [box, checked && boxChecked].filter(Boolean).join(" "),
462
521
  [checked]
463
522
  );
@@ -465,7 +524,7 @@ function useStyles7({ checked, disabled: disabled3 }) {
465
524
  }
466
525
 
467
526
  // src/components/checkbox/index.tsx
468
- import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
527
+ import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
469
528
  function Checkbox({
470
529
  checked = false,
471
530
  onChange,
@@ -473,13 +532,13 @@ function Checkbox({
473
532
  disabled: disabled3 = false,
474
533
  id
475
534
  }) {
476
- const { root: root24, input: input6, box: box2, check: check2 } = useStyles7({ checked, disabled: disabled3 });
535
+ const { root: root24, input: input6, box: box2, check: check2 } = useStyles8({ checked, disabled: disabled3 });
477
536
  const handleChange = (e) => {
478
537
  if (disabled3) return;
479
538
  onChange?.(e.target.checked);
480
539
  };
481
540
  return /* @__PURE__ */ jsxs6("label", { className: root24, children: [
482
- /* @__PURE__ */ jsx10(
541
+ /* @__PURE__ */ jsx11(
483
542
  "input",
484
543
  {
485
544
  type: "checkbox",
@@ -490,13 +549,13 @@ function Checkbox({
490
549
  onChange: handleChange
491
550
  }
492
551
  ),
493
- /* @__PURE__ */ jsx10("span", { className: box2, children: checked && /* @__PURE__ */ jsx10(CheckIcon, { size: 12, className: check2 }) }),
552
+ /* @__PURE__ */ jsx11("span", { className: box2, children: checked && /* @__PURE__ */ jsx11(CheckIcon, { size: 12, className: check2 }) }),
494
553
  label7
495
554
  ] });
496
555
  }
497
556
 
498
557
  // src/components/radio/use-styles.ts
499
- import { useMemo as useMemo9 } from "react";
558
+ import { useMemo as useMemo10 } from "react";
500
559
 
501
560
  // src/components/radio/use-styles.css.ts
502
561
  var circle = "use-styles_circle__vy61b42";
@@ -507,12 +566,12 @@ var label2 = "use-styles_label__vy61b44";
507
566
  var root7 = "use-styles_root__vy61b40";
508
567
 
509
568
  // src/components/radio/use-styles.ts
510
- function useStyles8({
569
+ function useStyles9({
511
570
  disabled: disabled3,
512
571
  className
513
572
  }) {
514
573
  const { themeClass } = useTheme();
515
- const root24 = useMemo9(
574
+ const root24 = useMemo10(
516
575
  () => [themeClass, root7, disabled3 && disabled2, className].filter(Boolean).join(" "),
517
576
  [themeClass, disabled3, className]
518
577
  );
@@ -526,11 +585,11 @@ function useStyles8({
526
585
  }
527
586
 
528
587
  // src/components/radio/index.tsx
529
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
588
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
530
589
  function Radio({ checked, onChange, label: label7, name, value, disabled: disabled3 }) {
531
- const { root: root24, input: input6, circle: circle2, dot: dot3, label: labelClass } = useStyles8({ disabled: disabled3 });
590
+ const { root: root24, input: input6, circle: circle2, dot: dot3, label: labelClass } = useStyles9({ disabled: disabled3 });
532
591
  return /* @__PURE__ */ jsxs7("label", { className: root24, children: [
533
- /* @__PURE__ */ jsx11(
592
+ /* @__PURE__ */ jsx12(
534
593
  "input",
535
594
  {
536
595
  className: input6,
@@ -542,13 +601,13 @@ function Radio({ checked, onChange, label: label7, name, value, disabled: disabl
542
601
  onChange
543
602
  }
544
603
  ),
545
- /* @__PURE__ */ jsx11("span", { className: circle2, children: checked && /* @__PURE__ */ jsx11("span", { className: dot3 }) }),
546
- label7 != null && /* @__PURE__ */ jsx11("span", { className: labelClass, children: label7 })
604
+ /* @__PURE__ */ jsx12("span", { className: circle2, children: checked && /* @__PURE__ */ jsx12("span", { className: dot3 }) }),
605
+ label7 != null && /* @__PURE__ */ jsx12("span", { className: labelClass, children: label7 })
547
606
  ] });
548
607
  }
549
608
 
550
609
  // src/components/switch/use-styles.ts
551
- import { useMemo as useMemo10 } from "react";
610
+ import { useMemo as useMemo11 } from "react";
552
611
 
553
612
  // src/components/switch/use-styles.css.ts
554
613
  var input3 = "surfaces_srOnly__6hs0fg0";
@@ -560,9 +619,9 @@ var track2 = "use-styles_track__1r6kem71";
560
619
  var trackChecked = "use-styles_trackChecked__1r6kem72";
561
620
 
562
621
  // src/components/switch/use-styles.ts
563
- function useStyles9({ checked }) {
622
+ function useStyles10({ checked }) {
564
623
  const { themeClass } = useTheme();
565
- return useMemo10(
624
+ return useMemo11(
566
625
  () => ({
567
626
  root: [themeClass, root8].filter(Boolean).join(" "),
568
627
  input: input3,
@@ -575,11 +634,11 @@ function useStyles9({ checked }) {
575
634
  }
576
635
 
577
636
  // src/components/switch/index.tsx
578
- import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
637
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
579
638
  function Switch({ checked = false, onChange, label: label7, disabled: disabled3 }) {
580
- const { root: root24, input: input6, track: track4, knob: knob2, label: labelClass } = useStyles9({ checked });
639
+ const { root: root24, input: input6, track: track4, knob: knob2, label: labelClass } = useStyles10({ checked });
581
640
  return /* @__PURE__ */ jsxs8("label", { className: root24, children: [
582
- /* @__PURE__ */ jsx12(
641
+ /* @__PURE__ */ jsx13(
583
642
  "input",
584
643
  {
585
644
  type: "checkbox",
@@ -594,21 +653,147 @@ function Switch({ checked = false, onChange, label: label7, disabled: disabled3
594
653
  }
595
654
  }
596
655
  ),
597
- /* @__PURE__ */ jsx12("span", { className: track4, children: /* @__PURE__ */ jsx12("span", { className: knob2 }) }),
598
- label7 != null && /* @__PURE__ */ jsx12("span", { className: labelClass, children: label7 })
656
+ /* @__PURE__ */ jsx13("span", { className: track4, children: /* @__PURE__ */ jsx13("span", { className: knob2 }) }),
657
+ label7 != null && /* @__PURE__ */ jsx13("span", { className: labelClass, children: label7 })
658
+ ] });
659
+ }
660
+
661
+ // src/components/base-field/index.tsx
662
+ import { useId } from "react";
663
+
664
+ // src/components/base-field/use-styles.ts
665
+ import { useMemo as useMemo12 } from "react";
666
+
667
+ // src/components/base-field/use-styles.css.ts
668
+ var field = "use-styles_field__1c3cgd3";
669
+ var helpText = "use-styles_helpText__1c3cgd8";
670
+ var helpTextError = "use-styles_helpTextError__1c3cgd9";
671
+ var input4 = "use-styles_input__1c3cgd4";
672
+ var inputError = "use-styles_inputError__1c3cgd5";
673
+ var inputStartPad = "use-styles_inputStartPad__1c3cgd6";
674
+ var inputTrailingPad = "use-styles_inputTrailingPad__1c3cgd7";
675
+ var labelText = "use-styles_labelText__1c3cgd1";
676
+ var labelTextError = "use-styles_labelTextError__1c3cgd2";
677
+ var root9 = "use-styles_root__1c3cgd0";
678
+ var startIconSlot = "use-styles_startIconSlot__1c3cgda";
679
+ var trailingSlot = "use-styles_trailingSlot__1c3cgdb";
680
+
681
+ // src/components/base-field/use-styles.ts
682
+ function useStyles11({ error, hasStartIcon, hasTrailing, className }) {
683
+ const { themeClass } = useTheme();
684
+ return useMemo12(() => {
685
+ const root24 = [themeClass, root9].filter(Boolean).join(" ");
686
+ const labelText2 = [labelText, error && labelTextError].filter(Boolean).join(" ");
687
+ const input6 = [
688
+ input4,
689
+ error && inputError,
690
+ hasStartIcon && inputStartPad,
691
+ hasTrailing && inputTrailingPad,
692
+ className
693
+ ].filter(Boolean).join(" ");
694
+ const helpText2 = [helpText, error && helpTextError].filter(Boolean).join(" ");
695
+ return {
696
+ root: root24,
697
+ labelText: labelText2,
698
+ field,
699
+ input: input6,
700
+ helpText: helpText2,
701
+ startIconSlot,
702
+ trailingSlot
703
+ };
704
+ }, [themeClass, error, hasStartIcon, hasTrailing, className]);
705
+ }
706
+
707
+ // src/components/base-field/index.tsx
708
+ import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
709
+ function BaseField({
710
+ label: label7,
711
+ help,
712
+ error,
713
+ startIcon: StartIcon,
714
+ trailing: trailing2,
715
+ id,
716
+ className,
717
+ children
718
+ }) {
719
+ const autoId = useId();
720
+ const controlId = id ?? autoId;
721
+ const helpId = help != null ? `${controlId}-help` : void 0;
722
+ const classes = useStyles11({
723
+ error,
724
+ hasStartIcon: StartIcon != null,
725
+ hasTrailing: trailing2 != null,
726
+ className
727
+ });
728
+ const control = {
729
+ id: controlId,
730
+ className: classes.input,
731
+ "aria-describedby": helpId,
732
+ "aria-invalid": error ? true : void 0
733
+ };
734
+ return /* @__PURE__ */ jsxs9("div", { className: classes.root, children: [
735
+ label7 != null && /* @__PURE__ */ jsx14("label", { htmlFor: controlId, className: classes.labelText, children: label7 }),
736
+ /* @__PURE__ */ jsxs9("div", { className: classes.field, children: [
737
+ StartIcon != null && /* @__PURE__ */ jsx14("span", { className: classes.startIconSlot, children: /* @__PURE__ */ jsx14(StartIcon, { size: 18 }) }),
738
+ children(control),
739
+ trailing2 != null && /* @__PURE__ */ jsx14("span", { className: classes.trailingSlot, children: trailing2 })
740
+ ] }),
741
+ help != null && /* @__PURE__ */ jsx14("span", { id: helpId, className: classes.helpText, children: help })
599
742
  ] });
600
743
  }
601
744
 
602
745
  // src/components/text-field/index.tsx
603
- import {
604
- useId,
605
- useState as useState3
606
- } from "react";
746
+ import { jsx as jsx15 } from "react/jsx-runtime";
747
+ function TextField({
748
+ label: label7,
749
+ help,
750
+ error,
751
+ startIcon,
752
+ multiline,
753
+ rows,
754
+ type = "text",
755
+ onChange,
756
+ className,
757
+ id,
758
+ ...rest
759
+ }) {
760
+ return /* @__PURE__ */ jsx15(
761
+ BaseField,
762
+ {
763
+ label: label7,
764
+ help,
765
+ error,
766
+ startIcon,
767
+ id,
768
+ className,
769
+ children: (control) => multiline ? /* @__PURE__ */ jsx15(
770
+ "textarea",
771
+ {
772
+ ...rest,
773
+ ...control,
774
+ rows: rows ?? 4,
775
+ onChange: (e) => onChange?.(e.target.value)
776
+ }
777
+ ) : /* @__PURE__ */ jsx15(
778
+ "input",
779
+ {
780
+ ...rest,
781
+ ...control,
782
+ type,
783
+ onChange: (e) => onChange?.(e.target.value)
784
+ }
785
+ )
786
+ }
787
+ );
788
+ }
789
+
790
+ // src/components/password-field/index.tsx
791
+ import { useState as useState3 } from "react";
607
792
 
608
793
  // src/components/icons/eye/index.tsx
609
- import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
794
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
610
795
  function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
611
- return /* @__PURE__ */ jsxs9(
796
+ return /* @__PURE__ */ jsxs10(
612
797
  "svg",
613
798
  {
614
799
  xmlns: "http://www.w3.org/2000/svg",
@@ -623,17 +808,17 @@ function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
623
808
  "aria-hidden": "true",
624
809
  ...rest,
625
810
  children: [
626
- /* @__PURE__ */ jsx13("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
627
- /* @__PURE__ */ jsx13("circle", { cx: "12", cy: "12", r: "3" })
811
+ /* @__PURE__ */ jsx16("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
812
+ /* @__PURE__ */ jsx16("circle", { cx: "12", cy: "12", r: "3" })
628
813
  ]
629
814
  }
630
815
  );
631
816
  }
632
817
 
633
818
  // src/components/icons/eye-off/index.tsx
634
- import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
819
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
635
820
  function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
636
- return /* @__PURE__ */ jsxs10(
821
+ return /* @__PURE__ */ jsxs11(
637
822
  "svg",
638
823
  {
639
824
  xmlns: "http://www.w3.org/2000/svg",
@@ -648,136 +833,142 @@ function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
648
833
  "aria-hidden": "true",
649
834
  ...rest,
650
835
  children: [
651
- /* @__PURE__ */ jsx14("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
652
- /* @__PURE__ */ jsx14("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }),
653
- /* @__PURE__ */ jsx14("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }),
654
- /* @__PURE__ */ jsx14("path", { d: "m2 2 20 20" })
836
+ /* @__PURE__ */ jsx17("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
837
+ /* @__PURE__ */ jsx17("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }),
838
+ /* @__PURE__ */ jsx17("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }),
839
+ /* @__PURE__ */ jsx17("path", { d: "m2 2 20 20" })
655
840
  ]
656
841
  }
657
842
  );
658
843
  }
659
844
 
660
- // src/components/text-field/use-styles.ts
661
- import { useMemo as useMemo11 } from "react";
845
+ // src/components/password-field/use-styles.ts
846
+ import { useMemo as useMemo13 } from "react";
662
847
 
663
- // src/components/text-field/use-styles.css.ts
664
- var field = "use-styles_field__vat8gv3";
665
- var helpText = "use-styles_helpText__vat8gv8";
666
- var helpTextError = "use-styles_helpTextError__vat8gv9";
667
- var input4 = "use-styles_input__vat8gv4";
668
- var inputError = "use-styles_inputError__vat8gv5";
669
- var inputRevealPad = "use-styles_inputRevealPad__vat8gv7";
670
- var inputStartPad = "use-styles_inputStartPad__vat8gv6";
671
- var labelText = "use-styles_labelText__vat8gv1";
672
- var labelTextError = "use-styles_labelTextError__vat8gv2";
673
- var revealButton = "use-styles_revealButton__vat8gvb";
674
- var root9 = "use-styles_root__vat8gv0";
675
- var startIcon = "use-styles_startIcon__vat8gva";
676
-
677
- // src/components/text-field/use-styles.ts
678
- function useStyles10({ error, hasStartIcon, hasReveal, className }) {
679
- const { themeClass } = useTheme();
680
- return useMemo11(() => {
681
- const root24 = [themeClass, root9].filter(Boolean).join(" ");
682
- const labelText2 = [labelText, error && labelTextError].filter(Boolean).join(" ");
683
- const input6 = [
684
- input4,
685
- error && inputError,
686
- hasStartIcon && inputStartPad,
687
- hasReveal && inputRevealPad,
688
- className
689
- ].filter(Boolean).join(" ");
690
- const helpText2 = [helpText, error && helpTextError].filter(Boolean).join(" ");
691
- return {
692
- root: root24,
693
- labelText: labelText2,
694
- field,
695
- input: input6,
696
- helpText: helpText2,
697
- startIcon,
698
- revealButton
699
- };
700
- }, [themeClass, error, hasStartIcon, hasReveal, className]);
848
+ // src/components/password-field/use-styles.css.ts
849
+ var revealButton = "use-styles_revealButton__rsu9d50";
850
+
851
+ // src/components/password-field/use-styles.ts
852
+ function useStyles12() {
853
+ return useMemo13(() => ({ revealButton }), []);
701
854
  }
702
855
 
703
- // src/components/text-field/index.tsx
704
- import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
705
- function TextField({
856
+ // src/components/password-field/index.tsx
857
+ import { jsx as jsx18 } from "react/jsx-runtime";
858
+ function PasswordField({
706
859
  label: label7,
707
860
  help,
708
861
  error,
709
- startIcon: StartIcon,
710
- multiline,
711
- rows,
712
- type = "text",
862
+ startIcon,
713
863
  onChange,
714
- className,
715
864
  id,
865
+ className,
716
866
  ...rest
717
867
  }) {
718
868
  const [reveal, setReveal] = useState3(false);
719
- const isPassword = type === "password";
720
- const hasReveal = isPassword;
721
- const effectiveType = isPassword ? reveal ? "text" : "password" : type;
722
- const autoId = useId();
723
- const controlId = id ?? autoId;
724
- const classes = useStyles10({
725
- error,
726
- hasStartIcon: Boolean(StartIcon),
727
- hasReveal,
728
- className
729
- });
730
- const handleInputChange = (e) => {
731
- onChange?.(e.target.value);
732
- };
733
- const handleTextareaChange = (e) => {
869
+ const classes = useStyles12();
870
+ const handleChange = (e) => {
734
871
  onChange?.(e.target.value);
735
872
  };
736
873
  const handleToggleMouseDown = (e) => {
737
874
  e.preventDefault();
738
875
  };
739
- return /* @__PURE__ */ jsxs11("div", { className: classes.root, children: [
740
- label7 != null && /* @__PURE__ */ jsx15("label", { htmlFor: controlId, className: classes.labelText, children: label7 }),
741
- /* @__PURE__ */ jsxs11("div", { className: classes.field, children: [
742
- StartIcon != null && /* @__PURE__ */ jsx15("span", { className: classes.startIcon, children: /* @__PURE__ */ jsx15(StartIcon, { size: 18 }) }),
743
- multiline ? /* @__PURE__ */ jsx15(
744
- "textarea",
745
- {
746
- id: controlId,
747
- className: classes.input,
748
- rows: rows ?? 4,
749
- onChange: handleTextareaChange,
750
- ...rest
751
- }
752
- ) : /* @__PURE__ */ jsx15(
876
+ const toggleButton = /* @__PURE__ */ jsx18(
877
+ "button",
878
+ {
879
+ type: "button",
880
+ tabIndex: -1,
881
+ className: classes.revealButton,
882
+ "aria-label": reveal ? "Ocultar contrase\xF1a" : "Mostrar contrase\xF1a",
883
+ onMouseDown: handleToggleMouseDown,
884
+ onClick: () => setReveal((r) => !r),
885
+ children: reveal ? /* @__PURE__ */ jsx18(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ jsx18(EyeIcon, { size: 18 })
886
+ }
887
+ );
888
+ return /* @__PURE__ */ jsx18(
889
+ BaseField,
890
+ {
891
+ label: label7,
892
+ help,
893
+ error,
894
+ startIcon,
895
+ trailing: toggleButton,
896
+ id,
897
+ className,
898
+ children: (control) => /* @__PURE__ */ jsx18("input", { ...rest, ...control, type: reveal ? "text" : "password", onChange: handleChange })
899
+ }
900
+ );
901
+ }
902
+
903
+ // src/components/money-field/index.tsx
904
+ import { useMemo as useMemo14, useState as useState4 } from "react";
905
+ import { jsx as jsx19 } from "react/jsx-runtime";
906
+ function parseAmount(raw) {
907
+ const cleaned = raw.replace(/[^0-9.-]/g, "");
908
+ if (cleaned === "" || cleaned === "-" || cleaned === ".") return null;
909
+ const n = Number.parseFloat(cleaned);
910
+ return Number.isNaN(n) ? null : n;
911
+ }
912
+ function MoneyField({
913
+ value,
914
+ onChange,
915
+ currency = "USD",
916
+ locale = "en-US",
917
+ label: label7,
918
+ help,
919
+ error,
920
+ startIcon,
921
+ id,
922
+ className,
923
+ onFocus,
924
+ onBlur,
925
+ ...rest
926
+ }) {
927
+ const [focused, setFocused] = useState4(false);
928
+ const [draft, setDraft] = useState4("");
929
+ const formatter = useMemo14(
930
+ () => new Intl.NumberFormat(locale, { style: "currency", currency }),
931
+ [locale, currency]
932
+ );
933
+ const displayValue = focused ? draft : value != null ? formatter.format(value) : "";
934
+ const handleFocus = (e) => {
935
+ setDraft(value != null ? String(value) : "");
936
+ setFocused(true);
937
+ onFocus?.(e);
938
+ };
939
+ const handleChange = (e) => setDraft(e.target.value);
940
+ const handleBlur = (e) => {
941
+ setFocused(false);
942
+ onChange?.(parseAmount(draft));
943
+ onBlur?.(e);
944
+ };
945
+ return /* @__PURE__ */ jsx19(
946
+ BaseField,
947
+ {
948
+ label: label7,
949
+ help,
950
+ error,
951
+ startIcon,
952
+ id,
953
+ className,
954
+ children: (control) => /* @__PURE__ */ jsx19(
753
955
  "input",
754
956
  {
755
- id: controlId,
756
- className: classes.input,
757
- type: effectiveType,
758
- onChange: handleInputChange,
759
- ...rest
760
- }
761
- ),
762
- hasReveal && /* @__PURE__ */ jsx15(
763
- "button",
764
- {
765
- type: "button",
766
- tabIndex: -1,
767
- className: classes.revealButton,
768
- "aria-label": reveal ? "Ocultar contrase\xF1a" : "Mostrar contrase\xF1a",
769
- onMouseDown: handleToggleMouseDown,
770
- onClick: () => setReveal((r) => !r),
771
- children: reveal ? /* @__PURE__ */ jsx15(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ jsx15(EyeIcon, { size: 18 })
957
+ ...rest,
958
+ ...control,
959
+ inputMode: "decimal",
960
+ value: displayValue,
961
+ onFocus: handleFocus,
962
+ onChange: handleChange,
963
+ onBlur: handleBlur
772
964
  }
773
965
  )
774
- ] }),
775
- help != null && /* @__PURE__ */ jsx15("span", { className: classes.helpText, children: help })
776
- ] });
966
+ }
967
+ );
777
968
  }
778
969
 
779
970
  // src/components/icon-button/use-styles.ts
780
- import { useMemo as useMemo12 } from "react";
971
+ import { useMemo as useMemo15 } from "react";
781
972
 
782
973
  // src/components/icon-button/use-styles.css.ts
783
974
  var accent = "use-styles_accent__18np0q02";
@@ -785,12 +976,12 @@ var active = "use-styles_active__18np0q01";
785
976
  var root10 = "use-styles_root__18np0q00";
786
977
 
787
978
  // src/components/icon-button/use-styles.ts
788
- function useStyles11({
979
+ function useStyles13({
789
980
  active: active2 = false,
790
981
  tone: tone4 = "ink"
791
982
  }) {
792
983
  const { themeClass } = useTheme();
793
- const root24 = useMemo12(
984
+ const root24 = useMemo15(
794
985
  () => [themeClass, root10, tone4 === "accent" && accent, active2 && active].filter(Boolean).join(" "),
795
986
  [themeClass, active2, tone4]
796
987
  );
@@ -798,14 +989,14 @@ function useStyles11({
798
989
  }
799
990
 
800
991
  // src/components/icon-button/index.tsx
801
- import { jsx as jsx16 } from "react/jsx-runtime";
992
+ import { jsx as jsx20 } from "react/jsx-runtime";
802
993
  function IconButton({ icon: Icon, active: active2, tone: tone4, title, ...rest }) {
803
- const { root: root24 } = useStyles11({ active: active2, tone: tone4 });
804
- return /* @__PURE__ */ jsx16("button", { className: root24, "aria-label": title, title, ...rest, children: /* @__PURE__ */ jsx16(Icon, { size: 18 }) });
994
+ const { root: root24 } = useStyles13({ active: active2, tone: tone4 });
995
+ return /* @__PURE__ */ jsx20("button", { className: root24, "aria-label": title, title, ...rest, children: /* @__PURE__ */ jsx20(Icon, { size: 18 }) });
805
996
  }
806
997
 
807
998
  // src/components/card/use-styles.ts
808
- import { useMemo as useMemo13 } from "react";
999
+ import { useMemo as useMemo16 } from "react";
809
1000
 
810
1001
  // src/components/card/use-styles.css.ts
811
1002
  var body = "use-styles_body__1fuvd022";
@@ -814,29 +1005,29 @@ var header = "use-styles_header__1fuvd021";
814
1005
  var root11 = "use-styles_root__1fuvd020";
815
1006
 
816
1007
  // src/components/card/use-styles.ts
817
- function useStyles12() {
1008
+ function useStyles14() {
818
1009
  const { themeClass } = useTheme();
819
- const root24 = useMemo13(() => `${themeClass} ${root11}`, [themeClass]);
1010
+ const root24 = useMemo16(() => `${themeClass} ${root11}`, [themeClass]);
820
1011
  return { root: root24, header, body, footer };
821
1012
  }
822
1013
 
823
1014
  // src/components/card/index.tsx
824
- import { jsx as jsx17 } from "react/jsx-runtime";
1015
+ import { jsx as jsx21 } from "react/jsx-runtime";
825
1016
  function CardRoot({ children, ...rest }) {
826
- const { root: root24 } = useStyles12();
827
- return /* @__PURE__ */ jsx17("div", { className: root24, ...rest, children });
1017
+ const { root: root24 } = useStyles14();
1018
+ return /* @__PURE__ */ jsx21("div", { className: root24, ...rest, children });
828
1019
  }
829
1020
  function CardHeader({ children, ...rest }) {
830
- const { header: header3 } = useStyles12();
831
- return /* @__PURE__ */ jsx17("div", { className: header3, ...rest, children });
1021
+ const { header: header3 } = useStyles14();
1022
+ return /* @__PURE__ */ jsx21("div", { className: header3, ...rest, children });
832
1023
  }
833
1024
  function CardBody({ children, ...rest }) {
834
- const { body: body4 } = useStyles12();
835
- return /* @__PURE__ */ jsx17("div", { className: body4, ...rest, children });
1025
+ const { body: body3 } = useStyles14();
1026
+ return /* @__PURE__ */ jsx21("div", { className: body3, ...rest, children });
836
1027
  }
837
1028
  function CardFooter({ children, ...rest }) {
838
- const { footer: footer2 } = useStyles12();
839
- return /* @__PURE__ */ jsx17("div", { className: footer2, ...rest, children });
1029
+ const { footer: footer2 } = useStyles14();
1030
+ return /* @__PURE__ */ jsx21("div", { className: footer2, ...rest, children });
840
1031
  }
841
1032
  CardRoot.displayName = "Card";
842
1033
  CardHeader.displayName = "Card.Header";
@@ -849,7 +1040,7 @@ var Card = Object.assign(CardRoot, {
849
1040
  });
850
1041
 
851
1042
  // src/components/icons/circle-check/index.tsx
852
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1043
+ import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
853
1044
  function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
854
1045
  return /* @__PURE__ */ jsxs12(
855
1046
  "svg",
@@ -866,15 +1057,15 @@ function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
866
1057
  "aria-hidden": "true",
867
1058
  ...rest,
868
1059
  children: [
869
- /* @__PURE__ */ jsx18("circle", { cx: "12", cy: "12", r: "10" }),
870
- /* @__PURE__ */ jsx18("path", { d: "m9 12 2 2 4-4" })
1060
+ /* @__PURE__ */ jsx22("circle", { cx: "12", cy: "12", r: "10" }),
1061
+ /* @__PURE__ */ jsx22("path", { d: "m9 12 2 2 4-4" })
871
1062
  ]
872
1063
  }
873
1064
  );
874
1065
  }
875
1066
 
876
1067
  // src/components/icons/circle-x/index.tsx
877
- import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1068
+ import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
878
1069
  function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
879
1070
  return /* @__PURE__ */ jsxs13(
880
1071
  "svg",
@@ -891,16 +1082,16 @@ function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
891
1082
  "aria-hidden": "true",
892
1083
  ...rest,
893
1084
  children: [
894
- /* @__PURE__ */ jsx19("circle", { cx: "12", cy: "12", r: "10" }),
895
- /* @__PURE__ */ jsx19("path", { d: "m15 9-6 6" }),
896
- /* @__PURE__ */ jsx19("path", { d: "m9 9 6 6" })
1085
+ /* @__PURE__ */ jsx23("circle", { cx: "12", cy: "12", r: "10" }),
1086
+ /* @__PURE__ */ jsx23("path", { d: "m15 9-6 6" }),
1087
+ /* @__PURE__ */ jsx23("path", { d: "m9 9 6 6" })
897
1088
  ]
898
1089
  }
899
1090
  );
900
1091
  }
901
1092
 
902
1093
  // src/components/icons/info/index.tsx
903
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
1094
+ import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
904
1095
  function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
905
1096
  return /* @__PURE__ */ jsxs14(
906
1097
  "svg",
@@ -917,16 +1108,16 @@ function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
917
1108
  "aria-hidden": "true",
918
1109
  ...rest,
919
1110
  children: [
920
- /* @__PURE__ */ jsx20("circle", { cx: "12", cy: "12", r: "10" }),
921
- /* @__PURE__ */ jsx20("path", { d: "M12 16v-4" }),
922
- /* @__PURE__ */ jsx20("path", { d: "M12 8h.01" })
1111
+ /* @__PURE__ */ jsx24("circle", { cx: "12", cy: "12", r: "10" }),
1112
+ /* @__PURE__ */ jsx24("path", { d: "M12 16v-4" }),
1113
+ /* @__PURE__ */ jsx24("path", { d: "M12 8h.01" })
923
1114
  ]
924
1115
  }
925
1116
  );
926
1117
  }
927
1118
 
928
1119
  // src/components/icons/triangle-alert/index.tsx
929
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1120
+ import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
930
1121
  function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
931
1122
  return /* @__PURE__ */ jsxs15(
932
1123
  "svg",
@@ -943,46 +1134,42 @@ function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
943
1134
  "aria-hidden": "true",
944
1135
  ...rest,
945
1136
  children: [
946
- /* @__PURE__ */ jsx21("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }),
947
- /* @__PURE__ */ jsx21("path", { d: "M12 9v4" }),
948
- /* @__PURE__ */ jsx21("path", { d: "M12 17h.01" })
1137
+ /* @__PURE__ */ jsx25("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }),
1138
+ /* @__PURE__ */ jsx25("path", { d: "M12 9v4" }),
1139
+ /* @__PURE__ */ jsx25("path", { d: "M12 17h.01" })
949
1140
  ]
950
1141
  }
951
1142
  );
952
1143
  }
953
1144
 
954
1145
  // src/components/alert/use-styles.ts
955
- import { useMemo as useMemo14 } from "react";
1146
+ import { useMemo as useMemo17 } from "react";
956
1147
 
957
1148
  // src/components/alert/use-styles.css.ts
958
- var body2 = "use-styles_body__ivsh6u8";
959
1149
  var content = "use-styles_content__ivsh6u6";
960
1150
  var iconSlot = "use-styles_iconSlot__ivsh6u5";
961
1151
  var root12 = "use-styles_root__ivsh6u0";
962
1152
  var severity = { info: "use-styles_severity_info__ivsh6u1", ok: "use-styles_severity_ok__ivsh6u2", warn: "use-styles_severity_warn__ivsh6u3", danger: "use-styles_severity_danger__ivsh6u4" };
963
- var titleText = "use-styles_titleText__ivsh6u7";
964
1153
 
965
1154
  // src/components/alert/use-styles.ts
966
- function useStyles13({
1155
+ function useStyles15({
967
1156
  severity: severity2 = "info",
968
1157
  className
969
1158
  }) {
970
1159
  const { themeClass } = useTheme();
971
- const root24 = useMemo14(
1160
+ const root24 = useMemo17(
972
1161
  () => [themeClass, root12, severity[severity2], className].filter(Boolean).join(" "),
973
1162
  [themeClass, severity2, className]
974
1163
  );
975
1164
  return {
976
1165
  root: root24,
977
1166
  iconSlot,
978
- content,
979
- titleText,
980
- body: body2
1167
+ content
981
1168
  };
982
1169
  }
983
1170
 
984
1171
  // src/components/alert/index.tsx
985
- import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1172
+ import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
986
1173
  var defaultIcons = {
987
1174
  info: InfoIcon,
988
1175
  ok: CircleCheckIcon,
@@ -997,22 +1184,22 @@ function Alert({
997
1184
  children,
998
1185
  ...rest
999
1186
  }) {
1000
- const styles = useStyles13({ severity: severity2, className });
1187
+ const styles = useStyles15({ severity: severity2, className });
1001
1188
  const IconComponent = icon ?? defaultIcons[severity2];
1002
1189
  return /* @__PURE__ */ jsxs16("div", { role: "alert", className: styles.root, ...rest, children: [
1003
- /* @__PURE__ */ jsx22("span", { className: styles.iconSlot, children: /* @__PURE__ */ jsx22(IconComponent, {}) }),
1190
+ /* @__PURE__ */ jsx26("span", { className: styles.iconSlot, children: /* @__PURE__ */ jsx26(IconComponent, {}) }),
1004
1191
  /* @__PURE__ */ jsxs16("div", { className: styles.content, children: [
1005
- title != null && /* @__PURE__ */ jsx22("div", { className: styles.titleText, children: title }),
1006
- children != null && /* @__PURE__ */ jsx22("div", { className: styles.body, children })
1192
+ title != null && /* @__PURE__ */ jsx26(Typography, { variant: "h4", children: title }),
1193
+ children != null && /* @__PURE__ */ jsx26(Typography, { variant: "body", color: "fg2", children })
1007
1194
  ] })
1008
1195
  ] });
1009
1196
  }
1010
1197
 
1011
1198
  // src/components/tooltip/index.tsx
1012
- import { cloneElement, useId as useId2, useState as useState4 } from "react";
1199
+ import { cloneElement, useId as useId2, useState as useState5 } from "react";
1013
1200
 
1014
1201
  // src/components/tooltip/use-styles.ts
1015
- import { useMemo as useMemo15 } from "react";
1202
+ import { useMemo as useMemo18 } from "react";
1016
1203
 
1017
1204
  // src/components/tooltip/use-styles.css.ts
1018
1205
  var bubble = "use-styles_bubble__h9kvh1 surfaces_inkySurface__6hs0fg2";
@@ -1020,15 +1207,15 @@ var placement = { top: "use-styles_placement_top__h9kvh2", bottom: "use-styles_p
1020
1207
  var wrapper = "use-styles_wrapper__h9kvh0";
1021
1208
 
1022
1209
  // src/components/tooltip/use-styles.ts
1023
- function useStyles14({
1210
+ function useStyles16({
1024
1211
  placement: placement2 = "top"
1025
1212
  }) {
1026
1213
  const { themeClass } = useTheme();
1027
- const wrapper4 = useMemo15(
1214
+ const wrapper4 = useMemo18(
1028
1215
  () => [themeClass, wrapper].filter(Boolean).join(" "),
1029
1216
  [themeClass]
1030
1217
  );
1031
- const bubble2 = useMemo15(
1218
+ const bubble2 = useMemo18(
1032
1219
  () => [bubble, placement[placement2]].filter(Boolean).join(" "),
1033
1220
  [placement2]
1034
1221
  );
@@ -1036,11 +1223,11 @@ function useStyles14({
1036
1223
  }
1037
1224
 
1038
1225
  // src/components/tooltip/index.tsx
1039
- import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
1226
+ import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
1040
1227
  function Tooltip({ label: label7, children, placement: placement2 }) {
1041
- const [open, setOpen] = useState4(false);
1228
+ const [open, setOpen] = useState5(false);
1042
1229
  const tooltipId = useId2();
1043
- const { wrapper: wrapper4, bubble: bubble2 } = useStyles14({ placement: placement2 });
1230
+ const { wrapper: wrapper4, bubble: bubble2 } = useStyles16({ placement: placement2 });
1044
1231
  const show = () => setOpen(true);
1045
1232
  const hide = () => setOpen(false);
1046
1233
  const previousDescribedBy = children.props["aria-describedby"];
@@ -1048,17 +1235,17 @@ function Tooltip({ label: label7, children, placement: placement2 }) {
1048
1235
  const trigger2 = cloneElement(children, { "aria-describedby": describedBy });
1049
1236
  return /* @__PURE__ */ jsxs17("span", { className: wrapper4, onMouseEnter: show, onMouseLeave: hide, onFocus: show, onBlur: hide, children: [
1050
1237
  trigger2,
1051
- open && /* @__PURE__ */ jsx23("span", { id: tooltipId, role: "tooltip", className: bubble2, children: label7 })
1238
+ open && /* @__PURE__ */ jsx27("span", { id: tooltipId, role: "tooltip", className: bubble2, children: label7 })
1052
1239
  ] });
1053
1240
  }
1054
1241
 
1055
1242
  // src/components/select/index.tsx
1056
- import { useEffect as useEffect3, useId as useId3, useRef as useRef2, useState as useState5 } from "react";
1243
+ import { useEffect as useEffect3, useId as useId3, useRef as useRef2, useState as useState6 } from "react";
1057
1244
 
1058
1245
  // src/components/icons/chevron-down/index.tsx
1059
- import { jsx as jsx24 } from "react/jsx-runtime";
1246
+ import { jsx as jsx28 } from "react/jsx-runtime";
1060
1247
  function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1061
- return /* @__PURE__ */ jsx24(
1248
+ return /* @__PURE__ */ jsx28(
1062
1249
  "svg",
1063
1250
  {
1064
1251
  xmlns: "http://www.w3.org/2000/svg",
@@ -1072,13 +1259,13 @@ function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1072
1259
  strokeLinejoin: "round",
1073
1260
  "aria-hidden": "true",
1074
1261
  ...rest,
1075
- children: /* @__PURE__ */ jsx24("path", { d: "m6 9 6 6 6-6" })
1262
+ children: /* @__PURE__ */ jsx28("path", { d: "m6 9 6 6 6-6" })
1076
1263
  }
1077
1264
  );
1078
1265
  }
1079
1266
 
1080
1267
  // src/components/select/use-styles.ts
1081
- import { useMemo as useMemo16 } from "react";
1268
+ import { useMemo as useMemo19 } from "react";
1082
1269
 
1083
1270
  // src/components/select/use-styles.css.ts
1084
1271
  var chevron = "use-styles_chevron__1w1czpb4";
@@ -1093,11 +1280,11 @@ var root13 = "use-styles_root__1w1czpb0";
1093
1280
  var trigger = "use-styles_trigger__1w1czpb2";
1094
1281
 
1095
1282
  // src/components/select/use-styles.ts
1096
- function useStyles15({
1283
+ function useStyles17({
1097
1284
  open = false
1098
1285
  }) {
1099
1286
  const { themeClass } = useTheme();
1100
- return useMemo16(() => {
1287
+ return useMemo19(() => {
1101
1288
  const chevron3 = [chevron, open && chevronOpen].filter(Boolean).join(" ");
1102
1289
  return {
1103
1290
  root: [themeClass, root13].filter(Boolean).join(" "),
@@ -1112,10 +1299,10 @@ function useStyles15({
1112
1299
  }
1113
1300
 
1114
1301
  // src/components/select/index.tsx
1115
- import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
1302
+ import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
1116
1303
  function Select({ options, value, onChange, placeholder: placeholder2, label: label7, disabled: disabled3 }) {
1117
- const [open, setOpen] = useState5(false);
1118
- const [activeIndex, setActiveIndex] = useState5(0);
1304
+ const [open, setOpen] = useState6(false);
1305
+ const [activeIndex, setActiveIndex] = useState6(0);
1119
1306
  const rootRef = useRef2(null);
1120
1307
  const baseId = useId3();
1121
1308
  const labelId = `${baseId}-label`;
@@ -1128,7 +1315,7 @@ function Select({ options, value, onChange, placeholder: placeholder2, label: la
1128
1315
  chevron: chevron3,
1129
1316
  menu: menu2,
1130
1317
  optionClass
1131
- } = useStyles15({ open });
1318
+ } = useStyles17({ open });
1132
1319
  useEffect3(() => {
1133
1320
  if (!open) return;
1134
1321
  const onPointerDown = (event) => {
@@ -1190,7 +1377,7 @@ function Select({ options, value, onChange, placeholder: placeholder2, label: la
1190
1377
  }
1191
1378
  };
1192
1379
  return /* @__PURE__ */ jsxs18("div", { ref: rootRef, className: root24, children: [
1193
- label7 && /* @__PURE__ */ jsx25("span", { id: labelId, className: labelClass, children: label7 }),
1380
+ label7 && /* @__PURE__ */ jsx29("span", { id: labelId, className: labelClass, children: label7 }),
1194
1381
  /* @__PURE__ */ jsxs18(
1195
1382
  "button",
1196
1383
  {
@@ -1211,17 +1398,17 @@ function Select({ options, value, onChange, placeholder: placeholder2, label: la
1211
1398
  },
1212
1399
  onKeyDown: handleKeyDown,
1213
1400
  children: [
1214
- selected3 ? selected3.label : /* @__PURE__ */ jsx25("span", { className: placeholderClass, children: placeholder2 }),
1215
- /* @__PURE__ */ jsx25("span", { className: chevron3, children: /* @__PURE__ */ jsx25(ChevronDownIcon, { size: 18 }) })
1401
+ selected3 ? selected3.label : /* @__PURE__ */ jsx29("span", { className: placeholderClass, children: placeholder2 }),
1402
+ /* @__PURE__ */ jsx29("span", { className: chevron3, children: /* @__PURE__ */ jsx29(ChevronDownIcon, { size: 18 }) })
1216
1403
  ]
1217
1404
  }
1218
1405
  ),
1219
- open && /* @__PURE__ */ jsx25("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1406
+ open && /* @__PURE__ */ jsx29("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1220
1407
  const isSelected = option2.value === value;
1221
1408
  const isActive = index === activeIndex;
1222
1409
  return (
1223
1410
  // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard nav lives on the trigger via aria-activedescendant; options are not focusable.
1224
- /* @__PURE__ */ jsx25(
1411
+ /* @__PURE__ */ jsx29(
1225
1412
  "div",
1226
1413
  {
1227
1414
  id: optionId(index),
@@ -1240,7 +1427,7 @@ function Select({ options, value, onChange, placeholder: placeholder2, label: la
1240
1427
  }
1241
1428
 
1242
1429
  // src/components/slider/use-styles.ts
1243
- import { useMemo as useMemo17 } from "react";
1430
+ import { useMemo as useMemo20 } from "react";
1244
1431
 
1245
1432
  // src/components/slider/use-styles.css.ts
1246
1433
  var input5 = "use-styles_input__okw59n3";
@@ -1252,9 +1439,9 @@ var track3 = "use-styles_track__okw59n1";
1252
1439
  var wrapper2 = "use-styles_wrapper__okw59n6";
1253
1440
 
1254
1441
  // src/components/slider/use-styles.ts
1255
- function useStyles16() {
1442
+ function useStyles18() {
1256
1443
  const { themeClass } = useTheme();
1257
- return useMemo17(() => {
1444
+ return useMemo20(() => {
1258
1445
  const root24 = [themeClass, root14].filter(Boolean).join(" ");
1259
1446
  return {
1260
1447
  wrapper: wrapper2,
@@ -1269,7 +1456,7 @@ function useStyles16() {
1269
1456
  }
1270
1457
 
1271
1458
  // src/components/slider/index.tsx
1272
- import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
1459
+ import { jsx as jsx30, jsxs as jsxs19 } from "react/jsx-runtime";
1273
1460
  function Slider({
1274
1461
  value = 0,
1275
1462
  onChange,
@@ -1279,7 +1466,7 @@ function Slider({
1279
1466
  disabled: disabled3,
1280
1467
  label: label7
1281
1468
  }) {
1282
- const { wrapper: wrapper4, label: labelClass, root: root24, track: track4, range: range2, thumb: thumb2, input: input6 } = useStyles16();
1469
+ const { wrapper: wrapper4, label: labelClass, root: root24, track: track4, range: range2, thumb: thumb2, input: input6 } = useStyles18();
1283
1470
  const span = max - min;
1284
1471
  const percent = span > 0 ? (value - min) / span * 100 : 0;
1285
1472
  const clamped = Math.max(0, Math.min(100, percent));
@@ -1287,11 +1474,11 @@ function Slider({
1287
1474
  onChange?.(Number(e.target.value));
1288
1475
  };
1289
1476
  return /* @__PURE__ */ jsxs19("span", { className: wrapper4, children: [
1290
- label7 ? /* @__PURE__ */ jsx26("span", { className: labelClass, children: label7 }) : null,
1477
+ label7 ? /* @__PURE__ */ jsx30("span", { className: labelClass, children: label7 }) : null,
1291
1478
  /* @__PURE__ */ jsxs19("span", { className: root24, children: [
1292
- /* @__PURE__ */ jsx26("span", { className: track4 }),
1293
- /* @__PURE__ */ jsx26("span", { className: range2, style: { width: `${clamped}%` } }),
1294
- /* @__PURE__ */ jsx26(
1479
+ /* @__PURE__ */ jsx30("span", { className: track4 }),
1480
+ /* @__PURE__ */ jsx30("span", { className: range2, style: { width: `${clamped}%` } }),
1481
+ /* @__PURE__ */ jsx30(
1295
1482
  "input",
1296
1483
  {
1297
1484
  className: input6,
@@ -1304,16 +1491,16 @@ function Slider({
1304
1491
  onChange: handleChange
1305
1492
  }
1306
1493
  ),
1307
- /* @__PURE__ */ jsx26("span", { className: thumb2, style: { left: `${clamped}%` } })
1494
+ /* @__PURE__ */ jsx30("span", { className: thumb2, style: { left: `${clamped}%` } })
1308
1495
  ] })
1309
1496
  ] });
1310
1497
  }
1311
1498
 
1312
1499
  // src/components/accordion/index.tsx
1313
- import { useState as useState6 } from "react";
1500
+ import { useState as useState7 } from "react";
1314
1501
 
1315
1502
  // src/components/accordion/use-styles.ts
1316
- import { useMemo as useMemo18 } from "react";
1503
+ import { useMemo as useMemo21 } from "react";
1317
1504
 
1318
1505
  // src/components/accordion/use-styles.css.ts
1319
1506
  var chevron2 = "use-styles_chevron__1cjrdh93";
@@ -1324,9 +1511,9 @@ var panel = "use-styles_panel__1cjrdh95";
1324
1511
  var root15 = "use-styles_root__1cjrdh90";
1325
1512
 
1326
1513
  // src/components/accordion/use-styles.ts
1327
- function useStyles17({ className }) {
1514
+ function useStyles19({ className }) {
1328
1515
  const { themeClass } = useTheme();
1329
- return useMemo18(
1516
+ return useMemo21(
1330
1517
  () => ({
1331
1518
  root: [themeClass, root15, className].filter(Boolean).join(" "),
1332
1519
  item,
@@ -1339,15 +1526,15 @@ function useStyles17({ className }) {
1339
1526
  }
1340
1527
 
1341
1528
  // src/components/accordion/index.tsx
1342
- import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
1529
+ import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
1343
1530
  function Accordion({
1344
1531
  items,
1345
1532
  multiple = false,
1346
1533
  defaultOpen = [],
1347
1534
  className
1348
1535
  }) {
1349
- const [open, setOpen] = useState6(defaultOpen);
1350
- const { root: root24, item: item3, header: header3, chevronFor, panel: panel2 } = useStyles17({ className });
1536
+ const [open, setOpen] = useState7(defaultOpen);
1537
+ const { root: root24, item: item3, header: header3, chevronFor, panel: panel2 } = useStyles19({ className });
1351
1538
  const toggle = (id) => {
1352
1539
  setOpen((current2) => {
1353
1540
  const isOpen = current2.includes(id);
@@ -1355,7 +1542,7 @@ function Accordion({
1355
1542
  return multiple ? [...current2, id] : [id];
1356
1543
  });
1357
1544
  };
1358
- return /* @__PURE__ */ jsx27("div", { className: root24, children: items.map((it) => {
1545
+ return /* @__PURE__ */ jsx31("div", { className: root24, children: items.map((it) => {
1359
1546
  const isOpen = open.includes(it.id);
1360
1547
  const panelId = `accordion-panel-${it.id}`;
1361
1548
  const headerId = `accordion-header-${it.id}`;
@@ -1371,11 +1558,11 @@ function Accordion({
1371
1558
  onClick: () => toggle(it.id),
1372
1559
  children: [
1373
1560
  it.title,
1374
- /* @__PURE__ */ jsx27(ChevronDownIcon, { className: chevronFor(isOpen) })
1561
+ /* @__PURE__ */ jsx31(ChevronDownIcon, { className: chevronFor(isOpen) })
1375
1562
  ]
1376
1563
  }
1377
1564
  ),
1378
- isOpen && /* @__PURE__ */ jsx27("div", { id: panelId, className: panel2, role: "region", "aria-labelledby": headerId, children: it.content })
1565
+ isOpen && /* @__PURE__ */ jsx31("div", { id: panelId, className: panel2, role: "region", "aria-labelledby": headerId, children: it.content })
1379
1566
  ] }, it.id);
1380
1567
  }) });
1381
1568
  }
@@ -1384,9 +1571,9 @@ function Accordion({
1384
1571
  import { Fragment } from "react";
1385
1572
 
1386
1573
  // src/components/icons/chevron-right/index.tsx
1387
- import { jsx as jsx28 } from "react/jsx-runtime";
1574
+ import { jsx as jsx32 } from "react/jsx-runtime";
1388
1575
  function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1389
- return /* @__PURE__ */ jsx28(
1576
+ return /* @__PURE__ */ jsx32(
1390
1577
  "svg",
1391
1578
  {
1392
1579
  xmlns: "http://www.w3.org/2000/svg",
@@ -1400,13 +1587,13 @@ function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1400
1587
  strokeLinejoin: "round",
1401
1588
  "aria-hidden": "true",
1402
1589
  ...rest,
1403
- children: /* @__PURE__ */ jsx28("path", { d: "m9 18 6-6-6-6" })
1590
+ children: /* @__PURE__ */ jsx32("path", { d: "m9 18 6-6-6-6" })
1404
1591
  }
1405
1592
  );
1406
1593
  }
1407
1594
 
1408
1595
  // src/components/breadcrumbs/use-styles.ts
1409
- import { useMemo as useMemo19 } from "react";
1596
+ import { useMemo as useMemo22 } from "react";
1410
1597
 
1411
1598
  // src/components/breadcrumbs/use-styles.css.ts
1412
1599
  var crumb = "use-styles_crumb__7u0du61";
@@ -1415,9 +1602,9 @@ var root16 = "use-styles_root__7u0du60";
1415
1602
  var separator = "use-styles_separator__7u0du63";
1416
1603
 
1417
1604
  // src/components/breadcrumbs/use-styles.ts
1418
- function useStyles18({ className }) {
1605
+ function useStyles20({ className }) {
1419
1606
  const { themeClass } = useTheme();
1420
- const root24 = useMemo19(
1607
+ const root24 = useMemo22(
1421
1608
  () => [themeClass, root16, className].filter(Boolean).join(" "),
1422
1609
  [themeClass, className]
1423
1610
  );
@@ -1425,23 +1612,23 @@ function useStyles18({ className }) {
1425
1612
  }
1426
1613
 
1427
1614
  // src/components/breadcrumbs/index.tsx
1428
- import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
1615
+ import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
1429
1616
  function Breadcrumbs({ items, className, ...rest }) {
1430
- const { root: root24, crumb: crumb2, current: current2, separator: separator2 } = useStyles18({ className });
1431
- return /* @__PURE__ */ jsx29("nav", { "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1617
+ const { root: root24, crumb: crumb2, current: current2, separator: separator2 } = useStyles20({ className });
1618
+ return /* @__PURE__ */ jsx33("nav", { "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1432
1619
  const isLast = index === items.length - 1;
1433
1620
  const key = index;
1434
1621
  return /* @__PURE__ */ jsxs21(Fragment, { children: [
1435
- isLast ? /* @__PURE__ */ jsx29("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ jsx29("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ jsx29("span", { className: crumb2, children: item3.label }),
1436
- !isLast && /* @__PURE__ */ jsx29("span", { className: separator2, children: /* @__PURE__ */ jsx29(ChevronRightIcon, { size: 14 }) })
1622
+ isLast ? /* @__PURE__ */ jsx33("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ jsx33("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ jsx33("span", { className: crumb2, children: item3.label }),
1623
+ !isLast && /* @__PURE__ */ jsx33("span", { className: separator2, children: /* @__PURE__ */ jsx33(ChevronRightIcon, { size: 14 }) })
1437
1624
  ] }, key);
1438
1625
  }) });
1439
1626
  }
1440
1627
 
1441
1628
  // src/components/icons/chevron-left/index.tsx
1442
- import { jsx as jsx30 } from "react/jsx-runtime";
1629
+ import { jsx as jsx34 } from "react/jsx-runtime";
1443
1630
  function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1444
- return /* @__PURE__ */ jsx30(
1631
+ return /* @__PURE__ */ jsx34(
1445
1632
  "svg",
1446
1633
  {
1447
1634
  xmlns: "http://www.w3.org/2000/svg",
@@ -1455,13 +1642,13 @@ function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1455
1642
  strokeLinejoin: "round",
1456
1643
  "aria-hidden": "true",
1457
1644
  ...rest,
1458
- children: /* @__PURE__ */ jsx30("path", { d: "m15 18-6-6 6-6" })
1645
+ children: /* @__PURE__ */ jsx34("path", { d: "m15 18-6-6 6-6" })
1459
1646
  }
1460
1647
  );
1461
1648
  }
1462
1649
 
1463
1650
  // src/components/pagination/use-styles.ts
1464
- import { useMemo as useMemo20 } from "react";
1651
+ import { useMemo as useMemo23 } from "react";
1465
1652
 
1466
1653
  // src/components/pagination/use-styles.css.ts
1467
1654
  var ellipsis = "use-styles_ellipsis__1azgzoh3";
@@ -1471,9 +1658,9 @@ var pageBtn = "use-styles_pageBtn__1azgzoh1";
1471
1658
  var root17 = "use-styles_root__1azgzoh0";
1472
1659
 
1473
1660
  // src/components/pagination/use-styles.ts
1474
- function useStyles19() {
1661
+ function useStyles21() {
1475
1662
  const { themeClass } = useTheme();
1476
- return useMemo20(
1663
+ return useMemo23(
1477
1664
  () => ({
1478
1665
  root: [themeClass, root17].filter(Boolean).join(" "),
1479
1666
  pageBtnFor: (active2) => [pageBtn, active2 && pageActive].filter(Boolean).join(" "),
@@ -1485,7 +1672,7 @@ function useStyles19() {
1485
1672
  }
1486
1673
 
1487
1674
  // src/components/pagination/index.tsx
1488
- import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
1675
+ import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
1489
1676
  function buildItems(count, page, siblingCount) {
1490
1677
  const total = Math.max(1, count);
1491
1678
  const first = 1;
@@ -1500,13 +1687,13 @@ function buildItems(count, page, siblingCount) {
1500
1687
  return items;
1501
1688
  }
1502
1689
  function Pagination({ count, page = 1, onChange, siblingCount = 1 }) {
1503
- const { root: root24, pageBtnFor, ellipsis: ellipsis2, nav: nav2 } = useStyles19();
1690
+ const { root: root24, pageBtnFor, ellipsis: ellipsis2, nav: nav2 } = useStyles21();
1504
1691
  const total = Math.max(1, count);
1505
1692
  const current2 = Math.min(Math.max(1, page), total);
1506
1693
  const items = buildItems(total, current2, siblingCount);
1507
1694
  const go = (n) => onChange?.(Math.min(Math.max(1, n), total));
1508
1695
  return /* @__PURE__ */ jsxs22("nav", { className: root24, "aria-label": "Pagination", children: [
1509
- /* @__PURE__ */ jsx31(
1696
+ /* @__PURE__ */ jsx35(
1510
1697
  "button",
1511
1698
  {
1512
1699
  type: "button",
@@ -1514,14 +1701,14 @@ function Pagination({ count, page = 1, onChange, siblingCount = 1 }) {
1514
1701
  "aria-label": "Previous page",
1515
1702
  disabled: current2 <= 1,
1516
1703
  onClick: () => go(current2 - 1),
1517
- children: /* @__PURE__ */ jsx31(ChevronLeftIcon, { size: 18 })
1704
+ children: /* @__PURE__ */ jsx35(ChevronLeftIcon, { size: 18 })
1518
1705
  }
1519
1706
  ),
1520
1707
  items.map(
1521
1708
  (item3, index) => item3 === "ellipsis" ? (
1522
1709
  // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render
1523
- /* @__PURE__ */ jsx31("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
1524
- ) : /* @__PURE__ */ jsx31(
1710
+ /* @__PURE__ */ jsx35("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
1711
+ ) : /* @__PURE__ */ jsx35(
1525
1712
  "button",
1526
1713
  {
1527
1714
  type: "button",
@@ -1533,7 +1720,7 @@ function Pagination({ count, page = 1, onChange, siblingCount = 1 }) {
1533
1720
  item3
1534
1721
  )
1535
1722
  ),
1536
- /* @__PURE__ */ jsx31(
1723
+ /* @__PURE__ */ jsx35(
1537
1724
  "button",
1538
1725
  {
1539
1726
  type: "button",
@@ -1541,7 +1728,7 @@ function Pagination({ count, page = 1, onChange, siblingCount = 1 }) {
1541
1728
  "aria-label": "Next page",
1542
1729
  disabled: current2 >= total,
1543
1730
  onClick: () => go(current2 + 1),
1544
- children: /* @__PURE__ */ jsx31(ChevronRightIcon, { size: 18 })
1731
+ children: /* @__PURE__ */ jsx35(ChevronRightIcon, { size: 18 })
1545
1732
  }
1546
1733
  )
1547
1734
  ] });
@@ -1551,7 +1738,7 @@ function Pagination({ count, page = 1, onChange, siblingCount = 1 }) {
1551
1738
  import { Fragment as Fragment2 } from "react";
1552
1739
 
1553
1740
  // src/components/stepper/use-styles.ts
1554
- import { useMemo as useMemo21 } from "react";
1741
+ import { useMemo as useMemo24 } from "react";
1555
1742
 
1556
1743
  // src/components/stepper/use-styles.css.ts
1557
1744
  var connector = "use-styles_connector__79pt4e7";
@@ -1564,9 +1751,9 @@ var root18 = "use-styles_root__79pt4e0";
1564
1751
  var step = "use-styles_step__79pt4e1";
1565
1752
 
1566
1753
  // src/components/stepper/use-styles.ts
1567
- function useStyles20({ className }) {
1754
+ function useStyles22({ className }) {
1568
1755
  const { themeClass } = useTheme();
1569
- return useMemo21(() => {
1756
+ return useMemo24(() => {
1570
1757
  const root24 = [themeClass, root18, className].filter(Boolean).join(" ");
1571
1758
  const markerFor = (state) => [
1572
1759
  marker,
@@ -1579,27 +1766,27 @@ function useStyles20({ className }) {
1579
1766
  }
1580
1767
 
1581
1768
  // src/components/stepper/index.tsx
1582
- import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
1769
+ import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
1583
1770
  function Stepper({ steps, active: active2 = 0, className, ...rest }) {
1584
- const { root: root24, step: step2, connector: connector2, markerFor, labelFor } = useStyles20({ className });
1585
- return /* @__PURE__ */ jsx32("div", { className: root24, ...rest, children: steps.map((s, index) => {
1771
+ const { root: root24, step: step2, connector: connector2, markerFor, labelFor } = useStyles22({ className });
1772
+ return /* @__PURE__ */ jsx36("div", { className: root24, ...rest, children: steps.map((s, index) => {
1586
1773
  const state = index < active2 ? "done" : index === active2 ? "active" : "upcoming";
1587
1774
  const isActive = state === "active";
1588
1775
  return (
1589
1776
  // biome-ignore lint/suspicious/noArrayIndexKey: steps are a static, ordered list with no stable id.
1590
1777
  /* @__PURE__ */ jsxs23(Fragment2, { children: [
1591
1778
  /* @__PURE__ */ jsxs23("div", { className: step2, "aria-current": isActive ? "step" : void 0, children: [
1592
- /* @__PURE__ */ jsx32("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ jsx32(CheckIcon, { size: 14 }) : index + 1 }),
1593
- /* @__PURE__ */ jsx32("span", { className: labelFor(isActive), children: s.label })
1779
+ /* @__PURE__ */ jsx36("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ jsx36(CheckIcon, { size: 14 }) : index + 1 }),
1780
+ /* @__PURE__ */ jsx36("span", { className: labelFor(isActive), children: s.label })
1594
1781
  ] }),
1595
- index < steps.length - 1 && /* @__PURE__ */ jsx32("span", { "data-part": "connector", className: connector2 })
1782
+ index < steps.length - 1 && /* @__PURE__ */ jsx36("span", { "data-part": "connector", className: connector2 })
1596
1783
  ] }, index)
1597
1784
  );
1598
1785
  }) });
1599
1786
  }
1600
1787
 
1601
1788
  // src/components/tabs/use-styles.ts
1602
- import { useMemo as useMemo22 } from "react";
1789
+ import { useMemo as useMemo25 } from "react";
1603
1790
 
1604
1791
  // src/components/tabs/use-styles.css.ts
1605
1792
  var root19 = "use-styles_root__1l4m7t40";
@@ -1607,9 +1794,9 @@ var tab = "use-styles_tab__1l4m7t41";
1607
1794
  var tabActive = "use-styles_tabActive__1l4m7t42";
1608
1795
 
1609
1796
  // src/components/tabs/use-styles.ts
1610
- function useStyles21() {
1797
+ function useStyles23() {
1611
1798
  const { themeClass } = useTheme();
1612
- return useMemo22(() => {
1799
+ return useMemo25(() => {
1613
1800
  const root24 = [themeClass, root19].filter(Boolean).join(" ");
1614
1801
  const tabClass = (active2) => [tab, active2 && tabActive].filter(Boolean).join(" ");
1615
1802
  return { root: root24, tab, tabClass };
@@ -1617,12 +1804,12 @@ function useStyles21() {
1617
1804
  }
1618
1805
 
1619
1806
  // src/components/tabs/index.tsx
1620
- import { jsx as jsx33 } from "react/jsx-runtime";
1807
+ import { jsx as jsx37 } from "react/jsx-runtime";
1621
1808
  function Tabs({ items, value, onChange }) {
1622
- const { root: root24, tabClass } = useStyles21();
1623
- return /* @__PURE__ */ jsx33("div", { role: "tablist", className: root24, children: items.map((item3) => {
1809
+ const { root: root24, tabClass } = useStyles23();
1810
+ return /* @__PURE__ */ jsx37("div", { role: "tablist", className: root24, children: items.map((item3) => {
1624
1811
  const active2 = item3.value === value;
1625
- return /* @__PURE__ */ jsx33(
1812
+ return /* @__PURE__ */ jsx37(
1626
1813
  "button",
1627
1814
  {
1628
1815
  type: "button",
@@ -1642,11 +1829,11 @@ import {
1642
1829
  cloneElement as cloneElement2,
1643
1830
  useEffect as useEffect4,
1644
1831
  useRef as useRef3,
1645
- useState as useState7
1832
+ useState as useState8
1646
1833
  } from "react";
1647
1834
 
1648
1835
  // src/components/menu/use-styles.ts
1649
- import { useMemo as useMemo23 } from "react";
1836
+ import { useMemo as useMemo26 } from "react";
1650
1837
 
1651
1838
  // src/components/menu/use-styles.css.ts
1652
1839
  var danger = "use-styles_danger__1uyxaj3";
@@ -1655,9 +1842,9 @@ var list = "use-styles_list__1uyxaj1 surfaces_panelSurface__6hs0fg1";
1655
1842
  var wrapper3 = "use-styles_wrapper__1uyxaj0";
1656
1843
 
1657
1844
  // src/components/menu/use-styles.ts
1658
- function useStyles22() {
1845
+ function useStyles24() {
1659
1846
  const { themeClass } = useTheme();
1660
- return useMemo23(
1847
+ return useMemo26(
1661
1848
  () => ({
1662
1849
  wrapper: [themeClass, wrapper3].filter(Boolean).join(" "),
1663
1850
  list,
@@ -1669,14 +1856,14 @@ function useStyles22() {
1669
1856
  }
1670
1857
 
1671
1858
  // src/components/menu/index.tsx
1672
- import { jsx as jsx34, jsxs as jsxs24 } from "react/jsx-runtime";
1859
+ import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
1673
1860
  function assignRef(ref, value) {
1674
1861
  if (typeof ref === "function") ref(value);
1675
1862
  else if (ref) ref.current = value;
1676
1863
  }
1677
1864
  function Menu({ trigger: trigger2, items }) {
1678
- const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles22();
1679
- const [open, setOpen] = useState7(false);
1865
+ const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles24();
1866
+ const [open, setOpen] = useState8(false);
1680
1867
  const rootRef = useRef3(null);
1681
1868
  const listRef = useRef3(null);
1682
1869
  const triggerRef = useRef3(null);
@@ -1758,7 +1945,7 @@ function Menu({ trigger: trigger2, items }) {
1758
1945
  });
1759
1946
  return /* @__PURE__ */ jsxs24("div", { ref: rootRef, className: wrapper4, children: [
1760
1947
  clonedTrigger,
1761
- open && /* @__PURE__ */ jsx34("div", { ref: listRef, role: "menu", className: list2, onKeyDown: onMenuKeyDown, children: items.map((entry, index) => /* @__PURE__ */ jsx34(
1948
+ open && /* @__PURE__ */ jsx38("div", { ref: listRef, role: "menu", className: list2, onKeyDown: onMenuKeyDown, children: items.map((entry, index) => /* @__PURE__ */ jsx38(
1762
1949
  "button",
1763
1950
  {
1764
1951
  type: "button",
@@ -1785,24 +1972,22 @@ import {
1785
1972
  import { createPortal } from "react-dom";
1786
1973
 
1787
1974
  // src/components/dialog/use-styles.ts
1788
- import { useMemo as useMemo24 } from "react";
1975
+ import { useMemo as useMemo27 } from "react";
1789
1976
 
1790
1977
  // src/components/dialog/use-styles.css.ts
1791
- var actions = "use-styles_actions__5tstu84";
1792
- var body3 = "use-styles_body__5tstu83";
1978
+ var actions = "use-styles_actions__5tstu83";
1979
+ var body2 = "use-styles_body__5tstu82";
1793
1980
  var overlay = "use-styles_overlay__5tstu80";
1794
1981
  var surface = "use-styles_surface__5tstu81";
1795
- var titleText2 = "use-styles_titleText__5tstu82";
1796
1982
 
1797
1983
  // src/components/dialog/use-styles.ts
1798
- function useStyles23() {
1984
+ function useStyles25() {
1799
1985
  const { themeClass } = useTheme();
1800
- return useMemo24(
1986
+ return useMemo27(
1801
1987
  () => ({
1802
1988
  overlay: [themeClass, overlay].filter(Boolean).join(" "),
1803
1989
  surface,
1804
- titleText: titleText2,
1805
- body: body3,
1990
+ body: body2,
1806
1991
  actions
1807
1992
  }),
1808
1993
  [themeClass]
@@ -1810,10 +1995,10 @@ function useStyles23() {
1810
1995
  }
1811
1996
 
1812
1997
  // src/components/dialog/index.tsx
1813
- import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
1998
+ import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
1814
1999
  var FOCUSABLE = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
1815
2000
  function Dialog({ open, onClose, title, actions: actions3, children }) {
1816
- const { overlay: overlay2, surface: surface2, titleText: titleText3, body: body4, actions: actionsClass } = useStyles23();
2001
+ const { overlay: overlay2, surface: surface2, body: body3, actions: actionsClass } = useStyles25();
1817
2002
  const surfaceRef = useRef4(null);
1818
2003
  const previouslyFocused = useRef4(null);
1819
2004
  const generatedId = useId4();
@@ -1870,7 +2055,7 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
1870
2055
  };
1871
2056
  return createPortal(
1872
2057
  // biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.
1873
- /* @__PURE__ */ jsx35("div", { className: overlay2, "data-testid": "dialog-overlay", onClick: onClose, children: /* @__PURE__ */ jsxs25(
2058
+ /* @__PURE__ */ jsx39("div", { className: overlay2, "data-testid": "dialog-overlay", onClick: onClose, children: /* @__PURE__ */ jsxs25(
1874
2059
  "div",
1875
2060
  {
1876
2061
  ref: surfaceRef,
@@ -1882,9 +2067,9 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
1882
2067
  onClick: stop,
1883
2068
  onKeyDown: onSurfaceKeyDown,
1884
2069
  children: [
1885
- title != null && /* @__PURE__ */ jsx35("h2", { id: titleId, className: titleText3, children: title }),
1886
- children != null && /* @__PURE__ */ jsx35("div", { className: body4, children }),
1887
- actions3 != null && /* @__PURE__ */ jsx35("div", { className: actionsClass, children: actions3 })
2070
+ title != null && /* @__PURE__ */ jsx39(Typography, { variant: "h3", as: "h2", id: titleId, children: title }),
2071
+ children != null && /* @__PURE__ */ jsx39("div", { className: body3, children: /* @__PURE__ */ jsx39(Typography, { variant: "body", color: "fg2", children }) }),
2072
+ actions3 != null && /* @__PURE__ */ jsx39("div", { className: actionsClass, children: actions3 })
1888
2073
  ]
1889
2074
  }
1890
2075
  ) }),
@@ -1896,7 +2081,7 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
1896
2081
  import { createPortal as createPortal2 } from "react-dom";
1897
2082
 
1898
2083
  // src/components/snackbar/use-styles.ts
1899
- import { useMemo as useMemo25 } from "react";
2084
+ import { useMemo as useMemo28 } from "react";
1900
2085
 
1901
2086
  // src/components/snackbar/use-styles.css.ts
1902
2087
  var closeBtn = "use-styles_closeBtn__ihzsep2";
@@ -1904,9 +2089,9 @@ var message = "use-styles_message__ihzsep1";
1904
2089
  var root20 = "use-styles_root__ihzsep0 surfaces_inkySurface__6hs0fg2";
1905
2090
 
1906
2091
  // src/components/snackbar/use-styles.ts
1907
- function useStyles24() {
2092
+ function useStyles26() {
1908
2093
  const { themeClass } = useTheme();
1909
- return useMemo25(
2094
+ return useMemo28(
1910
2095
  () => ({
1911
2096
  root: [themeClass, root20].filter(Boolean).join(" "),
1912
2097
  message,
@@ -1917,22 +2102,22 @@ function useStyles24() {
1917
2102
  }
1918
2103
 
1919
2104
  // src/components/snackbar/index.tsx
1920
- import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
2105
+ import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
1921
2106
  function Snackbar({ open, message: message2, action, onClose }) {
1922
- const { root: root24, message: messageClass, closeBtn: closeBtn2 } = useStyles24();
2107
+ const { root: root24, message: messageClass, closeBtn: closeBtn2 } = useStyles26();
1923
2108
  if (!open || typeof document === "undefined") return null;
1924
2109
  return createPortal2(
1925
2110
  /* @__PURE__ */ jsxs26("div", { role: "status", className: root24, children: [
1926
- /* @__PURE__ */ jsx36("span", { className: messageClass, children: message2 }),
2111
+ /* @__PURE__ */ jsx40("span", { className: messageClass, children: message2 }),
1927
2112
  action,
1928
- onClose && /* @__PURE__ */ jsx36("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ jsx36(XIcon, { size: 18 }) })
2113
+ onClose && /* @__PURE__ */ jsx40("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ jsx40(XIcon, { size: 18 }) })
1929
2114
  ] }),
1930
2115
  document.body
1931
2116
  );
1932
2117
  }
1933
2118
 
1934
2119
  // src/components/table/use-styles.ts
1935
- import { useMemo as useMemo26 } from "react";
2120
+ import { useMemo as useMemo29 } from "react";
1936
2121
 
1937
2122
  // src/components/table/use-styles.css.ts
1938
2123
  var alignRight = "use-styles_alignRight__1n2cz6i3";
@@ -1941,9 +2126,9 @@ var td = "use-styles_td__1n2cz6i2";
1941
2126
  var th = "use-styles_th__1n2cz6i1";
1942
2127
 
1943
2128
  // src/components/table/use-styles.ts
1944
- function useStyles25({ className }) {
2129
+ function useStyles27({ className }) {
1945
2130
  const { themeClass } = useTheme();
1946
- const root24 = useMemo26(
2131
+ const root24 = useMemo29(
1947
2132
  () => [themeClass, root21, className].filter(Boolean).join(" "),
1948
2133
  [themeClass, className]
1949
2134
  );
@@ -1951,7 +2136,7 @@ function useStyles25({ className }) {
1951
2136
  }
1952
2137
 
1953
2138
  // src/components/table/index.tsx
1954
- import { jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
2139
+ import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
1955
2140
  function Table({
1956
2141
  columns,
1957
2142
  rows,
@@ -1959,17 +2144,17 @@ function Table({
1959
2144
  className,
1960
2145
  ...rest
1961
2146
  }) {
1962
- const { root: root24, th: th2, td: td2, alignRight: alignRight2 } = useStyles25({ className });
2147
+ const { root: root24, th: th2, td: td2, alignRight: alignRight2 } = useStyles27({ className });
1963
2148
  const headClass = (column) => column.align === "right" ? `${th2} ${alignRight2}` : th2;
1964
2149
  const cellClass = (column) => column.align === "right" ? `${td2} ${alignRight2}` : td2;
1965
2150
  return /* @__PURE__ */ jsxs27("table", { className: root24, ...rest, children: [
1966
- /* @__PURE__ */ jsx37("thead", { children: /* @__PURE__ */ jsx37("tr", { children: columns.map((column) => /* @__PURE__ */ jsx37("th", { className: headClass(column), children: column.header }, column.key)) }) }),
1967
- /* @__PURE__ */ jsx37("tbody", { children: rows.map((row, index) => /* @__PURE__ */ jsx37("tr", { children: columns.map((column) => /* @__PURE__ */ jsx37("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
2151
+ /* @__PURE__ */ jsx41("thead", { children: /* @__PURE__ */ jsx41("tr", { children: columns.map((column) => /* @__PURE__ */ jsx41("th", { className: headClass(column), children: column.header }, column.key)) }) }),
2152
+ /* @__PURE__ */ jsx41("tbody", { children: rows.map((row, index) => /* @__PURE__ */ jsx41("tr", { children: columns.map((column) => /* @__PURE__ */ jsx41("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
1968
2153
  ] });
1969
2154
  }
1970
2155
 
1971
2156
  // src/components/app-bar/use-styles.ts
1972
- import { useMemo as useMemo27 } from "react";
2157
+ import { useMemo as useMemo30 } from "react";
1973
2158
 
1974
2159
  // src/components/app-bar/use-styles.css.ts
1975
2160
  var actions2 = "use-styles_actions__1h133nh2";
@@ -1977,9 +2162,9 @@ var brand = "use-styles_brand__1h133nh1";
1977
2162
  var root22 = "use-styles_root__1h133nh0";
1978
2163
 
1979
2164
  // src/components/app-bar/use-styles.ts
1980
- function useStyles26({ className }) {
2165
+ function useStyles28({ className }) {
1981
2166
  const { themeClass } = useTheme();
1982
- const root24 = useMemo27(
2167
+ const root24 = useMemo30(
1983
2168
  () => [themeClass, root22, className].filter(Boolean).join(" "),
1984
2169
  [themeClass, className]
1985
2170
  );
@@ -1987,18 +2172,18 @@ function useStyles26({ className }) {
1987
2172
  }
1988
2173
 
1989
2174
  // src/components/app-bar/index.tsx
1990
- import { jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
2175
+ import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
1991
2176
  function AppBar({ brand: brand2, actions: actions3, className, children, ...rest }) {
1992
- const styles = useStyles26({ className });
2177
+ const styles = useStyles28({ className });
1993
2178
  return /* @__PURE__ */ jsxs28("header", { className: styles.root, ...rest, children: [
1994
- brand2 !== void 0 ? /* @__PURE__ */ jsx38("div", { className: styles.brand, children: brand2 }) : null,
2179
+ brand2 !== void 0 ? /* @__PURE__ */ jsx42("div", { className: styles.brand, children: brand2 }) : null,
1995
2180
  children,
1996
- actions3 !== void 0 ? /* @__PURE__ */ jsx38("div", { className: styles.actions, children: actions3 }) : null
2181
+ actions3 !== void 0 ? /* @__PURE__ */ jsx42("div", { className: styles.actions, children: actions3 }) : null
1997
2182
  ] });
1998
2183
  }
1999
2184
 
2000
2185
  // src/components/list-item/use-styles.ts
2001
- import { useMemo as useMemo28 } from "react";
2186
+ import { useMemo as useMemo31 } from "react";
2002
2187
 
2003
2188
  // src/components/list-item/use-styles.css.ts
2004
2189
  var content2 = "use-styles_content__kbreq13";
@@ -2008,12 +2193,12 @@ var selected2 = "use-styles_selected__kbreq11";
2008
2193
  var trailing = "use-styles_trailing__kbreq14";
2009
2194
 
2010
2195
  // src/components/list-item/use-styles.ts
2011
- function useStyles27({
2196
+ function useStyles29({
2012
2197
  selected: selected3,
2013
2198
  className
2014
2199
  }) {
2015
2200
  const { themeClass } = useTheme();
2016
- const root24 = useMemo28(
2201
+ const root24 = useMemo31(
2017
2202
  () => [themeClass, root23, selected3 && selected2, className].filter(Boolean).join(" "),
2018
2203
  [themeClass, selected3, className]
2019
2204
  );
@@ -2021,7 +2206,7 @@ function useStyles27({
2021
2206
  }
2022
2207
 
2023
2208
  // src/components/list-item/index.tsx
2024
- import { jsx as jsx39, jsxs as jsxs29 } from "react/jsx-runtime";
2209
+ import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
2025
2210
  function ListItem({
2026
2211
  leading: leading2,
2027
2212
  trailing: trailing2,
@@ -2030,18 +2215,18 @@ function ListItem({
2030
2215
  children,
2031
2216
  ...rest
2032
2217
  }) {
2033
- const styles = useStyles27({ selected: selected3, className });
2218
+ const styles = useStyles29({ selected: selected3, className });
2034
2219
  return /* @__PURE__ */ jsxs29("div", { className: styles.root, ...rest, children: [
2035
- leading2 != null && /* @__PURE__ */ jsx39("span", { className: styles.leading, children: leading2 }),
2036
- /* @__PURE__ */ jsx39("span", { className: styles.content, children }),
2037
- trailing2 != null && /* @__PURE__ */ jsx39("span", { className: styles.trailing, children: trailing2 })
2220
+ leading2 != null && /* @__PURE__ */ jsx43("span", { className: styles.leading, children: leading2 }),
2221
+ /* @__PURE__ */ jsx43("span", { className: styles.content, children }),
2222
+ trailing2 != null && /* @__PURE__ */ jsx43("span", { className: styles.trailing, children: trailing2 })
2038
2223
  ] });
2039
2224
  }
2040
2225
 
2041
2226
  // src/components/icons/chevron-up/index.tsx
2042
- import { jsx as jsx40 } from "react/jsx-runtime";
2227
+ import { jsx as jsx44 } from "react/jsx-runtime";
2043
2228
  function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2044
- return /* @__PURE__ */ jsx40(
2229
+ return /* @__PURE__ */ jsx44(
2045
2230
  "svg",
2046
2231
  {
2047
2232
  xmlns: "http://www.w3.org/2000/svg",
@@ -2055,13 +2240,13 @@ function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2055
2240
  strokeLinejoin: "round",
2056
2241
  "aria-hidden": "true",
2057
2242
  ...rest,
2058
- children: /* @__PURE__ */ jsx40("path", { d: "m18 15-6-6-6 6" })
2243
+ children: /* @__PURE__ */ jsx44("path", { d: "m18 15-6-6-6 6" })
2059
2244
  }
2060
2245
  );
2061
2246
  }
2062
2247
 
2063
2248
  // src/components/icons/search/index.tsx
2064
- import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
2249
+ import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
2065
2250
  function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2066
2251
  return /* @__PURE__ */ jsxs30(
2067
2252
  "svg",
@@ -2078,15 +2263,15 @@ function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2078
2263
  "aria-hidden": "true",
2079
2264
  ...rest,
2080
2265
  children: [
2081
- /* @__PURE__ */ jsx41("circle", { cx: "11", cy: "11", r: "8" }),
2082
- /* @__PURE__ */ jsx41("path", { d: "m21 21-4.3-4.3" })
2266
+ /* @__PURE__ */ jsx45("circle", { cx: "11", cy: "11", r: "8" }),
2267
+ /* @__PURE__ */ jsx45("path", { d: "m21 21-4.3-4.3" })
2083
2268
  ]
2084
2269
  }
2085
2270
  );
2086
2271
  }
2087
2272
 
2088
2273
  // src/components/icons/plus/index.tsx
2089
- import { jsx as jsx42, jsxs as jsxs31 } from "react/jsx-runtime";
2274
+ import { jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
2090
2275
  function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2091
2276
  return /* @__PURE__ */ jsxs31(
2092
2277
  "svg",
@@ -2103,17 +2288,17 @@ function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2103
2288
  "aria-hidden": "true",
2104
2289
  ...rest,
2105
2290
  children: [
2106
- /* @__PURE__ */ jsx42("path", { d: "M5 12h14" }),
2107
- /* @__PURE__ */ jsx42("path", { d: "M12 5v14" })
2291
+ /* @__PURE__ */ jsx46("path", { d: "M5 12h14" }),
2292
+ /* @__PURE__ */ jsx46("path", { d: "M12 5v14" })
2108
2293
  ]
2109
2294
  }
2110
2295
  );
2111
2296
  }
2112
2297
 
2113
2298
  // src/components/icons/minus/index.tsx
2114
- import { jsx as jsx43 } from "react/jsx-runtime";
2299
+ import { jsx as jsx47 } from "react/jsx-runtime";
2115
2300
  function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2116
- return /* @__PURE__ */ jsx43(
2301
+ return /* @__PURE__ */ jsx47(
2117
2302
  "svg",
2118
2303
  {
2119
2304
  xmlns: "http://www.w3.org/2000/svg",
@@ -2127,13 +2312,13 @@ function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2127
2312
  strokeLinejoin: "round",
2128
2313
  "aria-hidden": "true",
2129
2314
  ...rest,
2130
- children: /* @__PURE__ */ jsx43("path", { d: "M5 12h14" })
2315
+ children: /* @__PURE__ */ jsx47("path", { d: "M5 12h14" })
2131
2316
  }
2132
2317
  );
2133
2318
  }
2134
2319
 
2135
2320
  // src/components/icons/more-horizontal/index.tsx
2136
- import { jsx as jsx44, jsxs as jsxs32 } from "react/jsx-runtime";
2321
+ import { jsx as jsx48, jsxs as jsxs32 } from "react/jsx-runtime";
2137
2322
  function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2138
2323
  return /* @__PURE__ */ jsxs32(
2139
2324
  "svg",
@@ -2150,16 +2335,13 @@ function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2150
2335
  "aria-hidden": "true",
2151
2336
  ...rest,
2152
2337
  children: [
2153
- /* @__PURE__ */ jsx44("circle", { cx: "12", cy: "12", r: "1" }),
2154
- /* @__PURE__ */ jsx44("circle", { cx: "19", cy: "12", r: "1" }),
2155
- /* @__PURE__ */ jsx44("circle", { cx: "5", cy: "12", r: "1" })
2338
+ /* @__PURE__ */ jsx48("circle", { cx: "12", cy: "12", r: "1" }),
2339
+ /* @__PURE__ */ jsx48("circle", { cx: "19", cy: "12", r: "1" }),
2340
+ /* @__PURE__ */ jsx48("circle", { cx: "5", cy: "12", r: "1" })
2156
2341
  ]
2157
2342
  }
2158
2343
  );
2159
2344
  }
2160
-
2161
- // src/theme/typography.css.ts
2162
- var text = { eyebrow: "typography_text_eyebrow__1wmlzy0", display: "typography_text_display__1wmlzy1", h1: "typography_text_h1__1wmlzy2", h2: "typography_text_h2__1wmlzy3", h3: "typography_text_h3__1wmlzy4", h4: "typography_text_h4__1wmlzy5", body: "typography_text_body__1wmlzy6", lead: "typography_text_lead__1wmlzy7", small: "typography_text_small__1wmlzy8", caption: "typography_text_caption__1wmlzy9", code: "typography_text_code__1wmlzya", blackletter: "typography_text_blackletter__1wmlzyb" };
2163
2345
  export {
2164
2346
  Accordion,
2165
2347
  Alert,
@@ -2187,8 +2369,10 @@ export {
2187
2369
  ListItem,
2188
2370
  Menu,
2189
2371
  MinusIcon,
2372
+ MoneyField,
2190
2373
  MoreHorizontalIcon,
2191
2374
  Pagination,
2375
+ PasswordField,
2192
2376
  PlusIcon,
2193
2377
  Progress,
2194
2378
  Radio,
@@ -2204,6 +2388,7 @@ export {
2204
2388
  ThemeProvider,
2205
2389
  Tooltip,
2206
2390
  TriangleAlertIcon,
2391
+ Typography,
2207
2392
  XIcon,
2208
2393
  colorVars,
2209
2394
  modeNames,