@octavius2929-personal/design-system 0.12.0 → 0.13.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.cjs CHANGED
@@ -62,6 +62,7 @@ __export(index_exports, {
62
62
  Switch: () => Switch,
63
63
  Table: () => Table,
64
64
  Tabs: () => Tabs,
65
+ TestIdProvider: () => TestIdProvider,
65
66
  TextField: () => TextField,
66
67
  ThemeProvider: () => ThemeProvider,
67
68
  Tooltip: () => Tooltip,
@@ -75,6 +76,7 @@ __export(index_exports, {
75
76
  theme: () => vars,
76
77
  themes: () => themes,
77
78
  usePrevious: () => usePrevious,
79
+ useTestId: () => useTestId,
78
80
  useTheme: () => useTheme,
79
81
  useToggle: () => useToggle
80
82
  });
@@ -291,10 +293,56 @@ TypographyForwarded.displayName = "Typography";
291
293
  var Typography = TypographyForwarded;
292
294
 
293
295
  // src/components/button/index.tsx
296
+ var import_react10 = require("react");
297
+
298
+ // src/testing/states.ts
299
+ function states(map) {
300
+ const active2 = Object.keys(map).filter((key) => map[key]);
301
+ return active2.length > 0 ? active2.join(" ") : void 0;
302
+ }
303
+
304
+ // src/testing/use-test-id.ts
294
305
  var import_react8 = require("react");
295
306
 
296
- // src/components/button/use-styles.ts
307
+ // src/testing/compose.ts
308
+ function normalizeSegment(seg) {
309
+ return seg.trim().replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
310
+ }
311
+ function composeTestId(parts) {
312
+ return parts.filter((p) => typeof p === "string" && p.trim() !== "").map(normalizeSegment).join("__");
313
+ }
314
+
315
+ // src/testing/context/test-id-context.tsx
297
316
  var import_react7 = require("react");
317
+ var import_jsx_runtime4 = require("react/jsx-runtime");
318
+ var TestIdContext = (0, import_react7.createContext)([]);
319
+ function TestIdProvider({ context, children }) {
320
+ const parent = (0, import_react7.useContext)(TestIdContext);
321
+ const value = (0, import_react7.useMemo)(
322
+ () => [...parent, normalizeSegment(context)].filter((seg) => seg !== ""),
323
+ [parent, context]
324
+ );
325
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TestIdContext.Provider, { value, children });
326
+ }
327
+ function useTestIdContext() {
328
+ return (0, import_react7.useContext)(TestIdContext);
329
+ }
330
+
331
+ // src/testing/use-test-id.ts
332
+ function useTestId(type, ownTestId) {
333
+ const ctx = useTestIdContext();
334
+ const testId = composeTestId([type, ...ctx, ownTestId]);
335
+ return (0, import_react8.useMemo)(
336
+ () => ({
337
+ testId,
338
+ slot: (name) => `${testId}__${normalizeSegment(name)}`
339
+ }),
340
+ [testId]
341
+ );
342
+ }
343
+
344
+ // src/components/button/use-styles.ts
345
+ var import_react9 = require("react");
298
346
 
299
347
  // src/components/button/use-styles.css.ts
300
348
  var full = "use-styles_full__1pbtill4";
@@ -315,7 +363,7 @@ function useStyles3({
315
363
  className
316
364
  }) {
317
365
  const { themeClass } = useTheme();
318
- const container = (0, import_react7.useMemo)(
366
+ const container = (0, import_react9.useMemo)(
319
367
  () => [
320
368
  themeClass,
321
369
  root,
@@ -330,9 +378,9 @@ function useStyles3({
330
378
  }
331
379
 
332
380
  // src/components/button/index.tsx
333
- var import_jsx_runtime4 = require("react/jsx-runtime");
381
+ var import_jsx_runtime5 = require("react/jsx-runtime");
334
382
  var ICON_SIZE = { sm: 14, md: 16, lg: 18 };
335
- var Button = (0, import_react8.forwardRef)(function Button2({
383
+ var Button = (0, import_react10.forwardRef)(function Button2({
336
384
  variant: variant2,
337
385
  tone: tone4,
338
386
  size: size3 = "md",
@@ -341,23 +389,36 @@ var Button = (0, import_react8.forwardRef)(function Button2({
341
389
  full: full2,
342
390
  className,
343
391
  type = "button",
392
+ testId,
344
393
  children,
345
394
  ...rest
346
395
  }, ref) {
347
396
  const { container } = useStyles3({ variant: variant2, tone: tone4, size: size3, full: full2, className });
397
+ const { testId: dataTestId } = useTestId("button", testId);
348
398
  const iconSize = ICON_SIZE[size3];
349
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("button", { ref, type, className: container, ...rest, children: [
350
- StartIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(StartIcon, { size: iconSize }),
351
- children,
352
- EndIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(EndIcon, { size: iconSize })
353
- ] });
399
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
400
+ "button",
401
+ {
402
+ ref,
403
+ type,
404
+ className: container,
405
+ "data-testid": dataTestId,
406
+ "data-state": states({ disabled: rest.disabled }),
407
+ ...rest,
408
+ children: [
409
+ StartIcon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StartIcon, { size: iconSize }),
410
+ children,
411
+ EndIcon && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(EndIcon, { size: iconSize })
412
+ ]
413
+ }
414
+ );
354
415
  });
355
416
 
356
417
  // src/components/divider/index.tsx
357
- var import_react10 = require("react");
418
+ var import_react12 = require("react");
358
419
 
359
420
  // src/components/divider/use-styles.ts
360
- var import_react9 = require("react");
421
+ var import_react11 = require("react");
361
422
 
362
423
  // src/components/divider/use-styles.css.ts
363
424
  var horizontal = "use-styles_horizontal__1n7v7yj1";
@@ -370,7 +431,7 @@ var vertical = "use-styles_vertical__1n7v7yj2";
370
431
  // src/components/divider/use-styles.ts
371
432
  function useStyles4({ vertical: vertical2, hasLabel }) {
372
433
  const { themeClass } = useTheme();
373
- const root24 = (0, import_react9.useMemo)(
434
+ const root24 = (0, import_react11.useMemo)(
374
435
  () => [
375
436
  themeClass,
376
437
  root2,
@@ -382,25 +443,25 @@ function useStyles4({ vertical: vertical2, hasLabel }) {
382
443
  }
383
444
 
384
445
  // src/components/divider/index.tsx
385
- var import_jsx_runtime5 = require("react/jsx-runtime");
386
- var Divider = (0, import_react10.forwardRef)(function Divider2({ vertical: vertical2, label: label7, ...rest }, ref) {
446
+ var import_jsx_runtime6 = require("react/jsx-runtime");
447
+ var Divider = (0, import_react12.forwardRef)(function Divider2({ vertical: vertical2, label: label7, ...rest }, ref) {
387
448
  const hasLabel = label7 != null;
388
449
  const { root: root24, line: line2, label: labelClass } = useStyles4({ vertical: vertical2, hasLabel });
389
450
  if (hasLabel) {
390
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { ref, role: "separator", className: root24, ...rest, children: [
391
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: line2 }),
392
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: labelClass, children: label7 }),
393
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: line2 })
451
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { ref, role: "separator", className: root24, ...rest, children: [
452
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: line2 }),
453
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: labelClass, children: label7 }),
454
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: line2 })
394
455
  ] });
395
456
  }
396
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { ref, role: "separator", className: root24, ...rest });
457
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { ref, role: "separator", className: root24, ...rest });
397
458
  });
398
459
 
399
460
  // src/components/avatar/index.tsx
400
- var import_react12 = require("react");
461
+ var import_react14 = require("react");
401
462
 
402
463
  // src/components/avatar/use-styles.ts
403
- var import_react11 = require("react");
464
+ var import_react13 = require("react");
404
465
 
405
466
  // src/components/avatar/use-styles.css.ts
406
467
  var root3 = "use-styles_root__1mn1rmu0";
@@ -414,7 +475,7 @@ function useStyles5({
414
475
  className
415
476
  }) {
416
477
  const { themeClass } = useTheme();
417
- const root24 = (0, import_react11.useMemo)(
478
+ const root24 = (0, import_react13.useMemo)(
418
479
  () => [
419
480
  themeClass,
420
481
  root3,
@@ -428,17 +489,17 @@ function useStyles5({
428
489
  }
429
490
 
430
491
  // src/components/avatar/index.tsx
431
- var import_jsx_runtime6 = require("react/jsx-runtime");
432
- var Avatar = (0, import_react12.forwardRef)(function Avatar2({ size: size3, filled, className, children, ...rest }, ref) {
492
+ var import_jsx_runtime7 = require("react/jsx-runtime");
493
+ var Avatar = (0, import_react14.forwardRef)(function Avatar2({ size: size3, filled, className, children, ...rest }, ref) {
433
494
  const { root: root24 } = useStyles5({ size: size3, filled, className });
434
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { ref, className: root24, ...rest, children });
495
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { ref, className: root24, ...rest, children });
435
496
  });
436
497
 
437
498
  // src/components/badge/index.tsx
438
- var import_react14 = require("react");
499
+ var import_react16 = require("react");
439
500
 
440
501
  // src/components/badge/use-styles.ts
441
- var import_react13 = require("react");
502
+ var import_react15 = require("react");
442
503
 
443
504
  // src/components/badge/use-styles.css.ts
444
505
  var dot = "use-styles_dot__1wpei6p1";
@@ -451,29 +512,29 @@ function useStyles6({
451
512
  className
452
513
  }) {
453
514
  const { themeClass } = useTheme();
454
- const root24 = (0, import_react13.useMemo)(
515
+ const root24 = (0, import_react15.useMemo)(
455
516
  () => [themeClass, root4, className].filter(Boolean).join(" "),
456
517
  [themeClass, className]
457
518
  );
458
- const dot3 = (0, import_react13.useMemo)(() => [dot, tone2[tone4]].join(" "), [tone4]);
519
+ const dot3 = (0, import_react15.useMemo)(() => [dot, tone2[tone4]].join(" "), [tone4]);
459
520
  return { root: root24, dot: dot3 };
460
521
  }
461
522
 
462
523
  // src/components/badge/index.tsx
463
- var import_jsx_runtime7 = require("react/jsx-runtime");
464
- var Badge = (0, import_react14.forwardRef)(function Badge2({ count, tone: tone4, className, children, ...rest }, ref) {
524
+ var import_jsx_runtime8 = require("react/jsx-runtime");
525
+ var Badge = (0, import_react16.forwardRef)(function Badge2({ count, tone: tone4, className, children, ...rest }, ref) {
465
526
  const { root: root24, dot: dot3 } = useStyles6({ tone: tone4, className });
466
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { ref, className: root24, ...rest, children: [
527
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { ref, className: root24, ...rest, children: [
467
528
  children,
468
- count != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: dot3, children: count })
529
+ count != null && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: dot3, children: count })
469
530
  ] });
470
531
  });
471
532
 
472
533
  // src/components/progress/index.tsx
473
- var import_react16 = require("react");
534
+ var import_react18 = require("react");
474
535
 
475
536
  // src/components/progress/use-styles.ts
476
- var import_react15 = require("react");
537
+ var import_react17 = require("react");
477
538
 
478
539
  // src/components/progress/use-styles.css.ts
479
540
  var bar = "use-styles_bar__kbop7v3";
@@ -489,7 +550,7 @@ function useStyles7({
489
550
  }) {
490
551
  const { themeClass } = useTheme();
491
552
  const indeterminate2 = value === void 0;
492
- return (0, import_react15.useMemo)(() => {
553
+ return (0, import_react17.useMemo)(() => {
493
554
  const root24 = (...classes) => [themeClass, ...classes, className].filter(Boolean).join(" ");
494
555
  if (variant2 === "circular") {
495
556
  return { track: "", bar: "", spinner: root24(spinner) };
@@ -503,12 +564,12 @@ function useStyles7({
503
564
  }
504
565
 
505
566
  // src/components/progress/index.tsx
506
- var import_jsx_runtime8 = require("react/jsx-runtime");
507
- var Progress = (0, import_react16.forwardRef)(function Progress2({ variant: variant2 = "linear", value, size: size3 = 20, className, ...rest }, ref) {
567
+ var import_jsx_runtime9 = require("react/jsx-runtime");
568
+ var Progress = (0, import_react18.forwardRef)(function Progress2({ variant: variant2 = "linear", value, size: size3 = 20, className, ...rest }, ref) {
508
569
  const { track: track4, bar: bar2, spinner: spinner2 } = useStyles7({ variant: variant2, value, className });
509
570
  const indeterminate2 = value === void 0;
510
571
  if (variant2 === "circular") {
511
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
572
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
512
573
  "span",
513
574
  {
514
575
  ref,
@@ -522,7 +583,7 @@ var Progress = (0, import_react16.forwardRef)(function Progress2({ variant: vari
522
583
  }
523
584
  );
524
585
  }
525
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
586
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
526
587
  "div",
527
588
  {
528
589
  ref,
@@ -532,18 +593,18 @@ var Progress = (0, import_react16.forwardRef)(function Progress2({ variant: vari
532
593
  "aria-valuemin": indeterminate2 ? void 0 : 0,
533
594
  "aria-valuemax": indeterminate2 ? void 0 : 100,
534
595
  ...rest,
535
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
596
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
536
597
  }
537
598
  );
538
599
  });
539
600
 
540
601
  // src/components/chip/index.tsx
541
- var import_react18 = require("react");
602
+ var import_react20 = require("react");
542
603
 
543
604
  // src/components/icons/x/index.tsx
544
- var import_jsx_runtime9 = require("react/jsx-runtime");
605
+ var import_jsx_runtime10 = require("react/jsx-runtime");
545
606
  function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
546
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
607
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
547
608
  "svg",
548
609
  {
549
610
  xmlns: "http://www.w3.org/2000/svg",
@@ -558,15 +619,15 @@ function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
558
619
  "aria-hidden": "true",
559
620
  ...rest,
560
621
  children: [
561
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M18 6 6 18" }),
562
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "m6 6 12 12" })
622
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M18 6 6 18" }),
623
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "m6 6 12 12" })
563
624
  ]
564
625
  }
565
626
  );
566
627
  }
567
628
 
568
629
  // src/components/chip/use-styles.ts
569
- var import_react17 = require("react");
630
+ var import_react19 = require("react");
570
631
 
571
632
  // src/components/chip/use-styles.css.ts
572
633
  var clickable = "use-styles_clickable__1axilf44";
@@ -582,7 +643,7 @@ function useStyles8({
582
643
  clickable: clickable2
583
644
  }) {
584
645
  const { themeClass } = useTheme();
585
- const root24 = (0, import_react17.useMemo)(
646
+ const root24 = (0, import_react19.useMemo)(
586
647
  () => [
587
648
  themeClass,
588
649
  root5,
@@ -595,27 +656,27 @@ function useStyles8({
595
656
  }
596
657
 
597
658
  // src/components/chip/index.tsx
598
- var import_jsx_runtime10 = require("react/jsx-runtime");
599
- var Chip = (0, import_react18.forwardRef)(function Chip2({ selected: selected3, tone: tone4, onDelete, onClick, children, ...rest }, ref) {
659
+ var import_jsx_runtime11 = require("react/jsx-runtime");
660
+ var Chip = (0, import_react20.forwardRef)(function Chip2({ selected: selected3, tone: tone4, onDelete, onClick, children, ...rest }, ref) {
600
661
  const clickable2 = Boolean(onClick);
601
662
  const { root: root24, deleteBtn: deleteBtn2 } = useStyles8({ selected: selected3, tone: tone4, clickable: clickable2 });
602
663
  const handleDelete = (event) => {
603
664
  event.stopPropagation();
604
665
  onDelete?.();
605
666
  };
606
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { ref, className: root24, onClick, ...rest, children: [
667
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { ref, className: root24, onClick, ...rest, children: [
607
668
  children,
608
- onDelete && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(XIcon, { size: 13 }) })
669
+ onDelete && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(XIcon, { size: 13 }) })
609
670
  ] });
610
671
  });
611
672
 
612
673
  // src/components/checkbox/index.tsx
613
- var import_react20 = require("react");
674
+ var import_react22 = require("react");
614
675
 
615
676
  // src/components/icons/check/index.tsx
616
- var import_jsx_runtime11 = require("react/jsx-runtime");
677
+ var import_jsx_runtime12 = require("react/jsx-runtime");
617
678
  function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
618
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
679
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
619
680
  "svg",
620
681
  {
621
682
  xmlns: "http://www.w3.org/2000/svg",
@@ -629,13 +690,13 @@ function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
629
690
  strokeLinejoin: "round",
630
691
  "aria-hidden": "true",
631
692
  ...rest,
632
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "M20 6 9 17l-5-5" })
693
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M20 6 9 17l-5-5" })
633
694
  }
634
695
  );
635
696
  }
636
697
 
637
698
  // src/components/checkbox/use-styles.ts
638
- var import_react19 = require("react");
699
+ var import_react21 = require("react");
639
700
 
640
701
  // src/components/checkbox/use-styles.css.ts
641
702
  var box = "use-styles_box__9zoga91";
@@ -648,11 +709,11 @@ var root6 = "use-styles_root__9zoga90";
648
709
  // src/components/checkbox/use-styles.ts
649
710
  function useStyles9({ checked, disabled: disabled3 }) {
650
711
  const { themeClass } = useTheme();
651
- const root24 = (0, import_react19.useMemo)(
712
+ const root24 = (0, import_react21.useMemo)(
652
713
  () => [themeClass, root6, disabled3 && disabled].filter(Boolean).join(" "),
653
714
  [themeClass, disabled3]
654
715
  );
655
- const box2 = (0, import_react19.useMemo)(
716
+ const box2 = (0, import_react21.useMemo)(
656
717
  () => [box, checked && boxChecked].filter(Boolean).join(" "),
657
718
  [checked]
658
719
  );
@@ -660,15 +721,15 @@ function useStyles9({ checked, disabled: disabled3 }) {
660
721
  }
661
722
 
662
723
  // src/components/checkbox/index.tsx
663
- var import_jsx_runtime12 = require("react/jsx-runtime");
664
- var Checkbox = (0, import_react20.forwardRef)(function Checkbox2({ checked = false, onChange, label: label7, disabled: disabled3 = false, id, ...rest }, ref) {
724
+ var import_jsx_runtime13 = require("react/jsx-runtime");
725
+ var Checkbox = (0, import_react22.forwardRef)(function Checkbox2({ checked = false, onChange, label: label7, disabled: disabled3 = false, id, ...rest }, ref) {
665
726
  const { root: root24, input: input6, box: box2, check: check2 } = useStyles9({ checked, disabled: disabled3 });
666
727
  const handleChange = (e) => {
667
728
  if (disabled3) return;
668
729
  onChange?.(e.target.checked);
669
730
  };
670
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("label", { className: root24, children: [
671
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
731
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("label", { className: root24, children: [
732
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
672
733
  "input",
673
734
  {
674
735
  ref,
@@ -681,16 +742,16 @@ var Checkbox = (0, import_react20.forwardRef)(function Checkbox2({ checked = fal
681
742
  ...rest
682
743
  }
683
744
  ),
684
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: box2, children: checked && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(CheckIcon, { size: 12, className: check2 }) }),
745
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: box2, children: checked && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CheckIcon, { size: 12, className: check2 }) }),
685
746
  label7
686
747
  ] });
687
748
  });
688
749
 
689
750
  // src/components/radio/index.tsx
690
- var import_react22 = require("react");
751
+ var import_react24 = require("react");
691
752
 
692
753
  // src/components/radio/use-styles.ts
693
- var import_react21 = require("react");
754
+ var import_react23 = require("react");
694
755
 
695
756
  // src/components/radio/use-styles.css.ts
696
757
  var circle = "use-styles_circle__vy61b42";
@@ -706,7 +767,7 @@ function useStyles10({
706
767
  className
707
768
  }) {
708
769
  const { themeClass } = useTheme();
709
- const root24 = (0, import_react21.useMemo)(
770
+ const root24 = (0, import_react23.useMemo)(
710
771
  () => [themeClass, root7, disabled3 && disabled2, className].filter(Boolean).join(" "),
711
772
  [themeClass, disabled3, className]
712
773
  );
@@ -720,11 +781,11 @@ function useStyles10({
720
781
  }
721
782
 
722
783
  // src/components/radio/index.tsx
723
- var import_jsx_runtime13 = require("react/jsx-runtime");
724
- var Radio = (0, import_react22.forwardRef)(function Radio2({ checked, onChange, label: label7, name, value, disabled: disabled3, ...rest }, ref) {
784
+ var import_jsx_runtime14 = require("react/jsx-runtime");
785
+ var Radio = (0, import_react24.forwardRef)(function Radio2({ checked, onChange, label: label7, name, value, disabled: disabled3, ...rest }, ref) {
725
786
  const { root: root24, input: input6, circle: circle2, dot: dot3, label: labelClass } = useStyles10({ disabled: disabled3 });
726
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("label", { className: root24, children: [
727
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
787
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: root24, children: [
788
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
728
789
  "input",
729
790
  {
730
791
  ref,
@@ -738,16 +799,16 @@ var Radio = (0, import_react22.forwardRef)(function Radio2({ checked, onChange,
738
799
  ...rest
739
800
  }
740
801
  ),
741
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: circle2, children: checked && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: dot3 }) }),
742
- label7 != null && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: labelClass, children: label7 })
802
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: circle2, children: checked && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: dot3 }) }),
803
+ label7 != null && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: labelClass, children: label7 })
743
804
  ] });
744
805
  });
745
806
 
746
807
  // src/components/switch/index.tsx
747
- var import_react24 = require("react");
808
+ var import_react26 = require("react");
748
809
 
749
810
  // src/components/switch/use-styles.ts
750
- var import_react23 = require("react");
811
+ var import_react25 = require("react");
751
812
 
752
813
  // src/components/switch/use-styles.css.ts
753
814
  var input3 = "surfaces_srOnly__1qa7atn0";
@@ -761,7 +822,7 @@ var trackChecked = "use-styles_trackChecked__1r6kem72";
761
822
  // src/components/switch/use-styles.ts
762
823
  function useStyles11({ checked }) {
763
824
  const { themeClass } = useTheme();
764
- return (0, import_react23.useMemo)(
825
+ return (0, import_react25.useMemo)(
765
826
  () => ({
766
827
  root: [themeClass, root8].filter(Boolean).join(" "),
767
828
  input: input3,
@@ -774,11 +835,11 @@ function useStyles11({ checked }) {
774
835
  }
775
836
 
776
837
  // src/components/switch/index.tsx
777
- var import_jsx_runtime14 = require("react/jsx-runtime");
778
- var Switch = (0, import_react24.forwardRef)(function Switch2({ checked = false, onChange, label: label7, disabled: disabled3, ...rest }, ref) {
838
+ var import_jsx_runtime15 = require("react/jsx-runtime");
839
+ var Switch = (0, import_react26.forwardRef)(function Switch2({ checked = false, onChange, label: label7, disabled: disabled3, ...rest }, ref) {
779
840
  const { root: root24, input: input6, track: track4, knob: knob2, label: labelClass } = useStyles11({ checked });
780
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("label", { className: root24, children: [
781
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
841
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { className: root24, children: [
842
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
782
843
  "input",
783
844
  {
784
845
  ref,
@@ -795,19 +856,19 @@ var Switch = (0, import_react24.forwardRef)(function Switch2({ checked = false,
795
856
  ...rest
796
857
  }
797
858
  ),
798
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: track4, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: knob2 }) }),
799
- label7 != null && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: labelClass, children: label7 })
859
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: track4, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: knob2 }) }),
860
+ label7 != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: labelClass, children: label7 })
800
861
  ] });
801
862
  });
802
863
 
803
864
  // src/components/text-field/index.tsx
804
- var import_react27 = require("react");
865
+ var import_react29 = require("react");
805
866
 
806
867
  // src/components/base-field/index.tsx
807
- var import_react26 = require("react");
868
+ var import_react28 = require("react");
808
869
 
809
870
  // src/components/base-field/use-styles.ts
810
- var import_react25 = require("react");
871
+ var import_react27 = require("react");
811
872
 
812
873
  // src/components/base-field/use-styles.css.ts
813
874
  var field = "use-styles_field__1c3cgd3";
@@ -826,7 +887,7 @@ var trailingSlot = "use-styles_trailingSlot__1c3cgdb";
826
887
  // src/components/base-field/use-styles.ts
827
888
  function useStyles12({ error, hasStartIcon, hasTrailing, className }) {
828
889
  const { themeClass } = useTheme();
829
- return (0, import_react25.useMemo)(() => {
890
+ return (0, import_react27.useMemo)(() => {
830
891
  const root24 = [themeClass, root9].filter(Boolean).join(" ");
831
892
  const labelText2 = [labelText, error && labelTextError].filter(Boolean).join(" ");
832
893
  const input6 = [
@@ -850,9 +911,9 @@ function useStyles12({ error, hasStartIcon, hasTrailing, className }) {
850
911
  }
851
912
 
852
913
  // src/components/base-field/index.tsx
853
- var import_jsx_runtime15 = require("react/jsx-runtime");
854
- var BaseField = (0, import_react26.forwardRef)(function BaseField2({ label: label7, help, error, startIcon: StartIcon, trailing: trailing2, id, className, children }, ref) {
855
- const autoId = (0, import_react26.useId)();
914
+ var import_jsx_runtime16 = require("react/jsx-runtime");
915
+ var BaseField = (0, import_react28.forwardRef)(function BaseField2({ label: label7, help, error, startIcon: StartIcon, trailing: trailing2, id, className, testId, children }, ref) {
916
+ const autoId = (0, import_react28.useId)();
856
917
  const controlId = id ?? autoId;
857
918
  const errorMessage = error != null && error !== false && error !== true && error !== "" ? error : null;
858
919
  const hasError = error === true || errorMessage != null;
@@ -864,27 +925,30 @@ var BaseField = (0, import_react26.forwardRef)(function BaseField2({ label: labe
864
925
  hasTrailing: trailing2 != null,
865
926
  className
866
927
  });
928
+ const { testId: rootTestId, slot } = useTestId("field", testId);
867
929
  const control = {
868
930
  id: controlId,
869
931
  className: classes.input,
870
932
  ref,
871
933
  "aria-describedby": messageId,
872
- "aria-invalid": hasError ? true : void 0
934
+ "aria-invalid": hasError ? true : void 0,
935
+ "data-testid": slot("input")
873
936
  };
874
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: classes.root, children: [
875
- label7 != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("label", { htmlFor: controlId, className: classes.labelText, children: label7 }),
876
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: classes.field, children: [
877
- StartIcon != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: classes.startIconSlot, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StartIcon, { size: 18 }) }),
937
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: classes.root, "data-testid": rootTestId, "data-state": states({ error: hasError }), children: [
938
+ label7 != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: controlId, className: classes.labelText, "data-testid": slot("label"), children: label7 }),
939
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: classes.field, children: [
940
+ StartIcon != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: classes.startIconSlot, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(StartIcon, { size: 18 }) }),
878
941
  children(control),
879
- trailing2 != null && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: classes.trailingSlot, children: trailing2 })
942
+ trailing2 != null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: classes.trailingSlot, children: trailing2 })
880
943
  ] }),
881
944
  message2 != null && // `aria-live` solo cuando el mensaje es un error: anuncia la validación al aparecer.
882
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
945
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
883
946
  "span",
884
947
  {
885
948
  id: messageId,
886
949
  className: classes.helpText,
887
950
  "aria-live": errorMessage ? "polite" : void 0,
951
+ "data-testid": slot("message"),
888
952
  children: message2
889
953
  }
890
954
  )
@@ -892,12 +956,12 @@ var BaseField = (0, import_react26.forwardRef)(function BaseField2({ label: labe
892
956
  });
893
957
 
894
958
  // src/components/text-field/index.tsx
895
- var import_jsx_runtime16 = (
959
+ var import_jsx_runtime17 = (
896
960
  // En multiline el control es un <textarea>: no reenviamos `controlRef` porque el
897
961
  // tipo público de la ref es HTMLInputElement (la ref aplica solo a la rama <input>).
898
962
  require("react/jsx-runtime")
899
963
  );
900
- var TextField = (0, import_react27.forwardRef)(function TextField2({
964
+ var TextField = (0, import_react29.forwardRef)(function TextField2({
901
965
  label: label7,
902
966
  help,
903
967
  error,
@@ -908,9 +972,11 @@ var TextField = (0, import_react27.forwardRef)(function TextField2({
908
972
  onChange,
909
973
  className,
910
974
  id,
975
+ testId,
911
976
  ...rest
912
977
  }, ref) {
913
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
978
+ const rawTestId = rest["data-testid"];
979
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
914
980
  BaseField,
915
981
  {
916
982
  ref,
@@ -920,19 +986,22 @@ var TextField = (0, import_react27.forwardRef)(function TextField2({
920
986
  startIcon,
921
987
  id,
922
988
  className,
923
- children: ({ ref: controlRef, ...control }) => multiline ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
989
+ testId,
990
+ children: ({ ref: controlRef, ...control }) => multiline ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
924
991
  "textarea",
925
992
  {
926
993
  ...rest,
927
994
  ...control,
995
+ "data-testid": rawTestId ?? control["data-testid"],
928
996
  rows: rows ?? 4,
929
997
  onChange: (e) => onChange?.(e.target.value)
930
998
  }
931
- ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
999
+ ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
932
1000
  "input",
933
1001
  {
934
1002
  ...rest,
935
1003
  ...control,
1004
+ "data-testid": rawTestId ?? control["data-testid"],
936
1005
  ref: controlRef,
937
1006
  type,
938
1007
  onChange: (e) => onChange?.(e.target.value)
@@ -943,12 +1012,12 @@ var TextField = (0, import_react27.forwardRef)(function TextField2({
943
1012
  });
944
1013
 
945
1014
  // src/components/password-field/index.tsx
946
- var import_react29 = require("react");
1015
+ var import_react31 = require("react");
947
1016
 
948
1017
  // src/components/icons/eye/index.tsx
949
- var import_jsx_runtime17 = require("react/jsx-runtime");
1018
+ var import_jsx_runtime18 = require("react/jsx-runtime");
950
1019
  function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
951
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1020
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
952
1021
  "svg",
953
1022
  {
954
1023
  xmlns: "http://www.w3.org/2000/svg",
@@ -963,17 +1032,17 @@ function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
963
1032
  "aria-hidden": "true",
964
1033
  ...rest,
965
1034
  children: [
966
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
967
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("circle", { cx: "12", cy: "12", r: "3" })
1035
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
1036
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("circle", { cx: "12", cy: "12", r: "3" })
968
1037
  ]
969
1038
  }
970
1039
  );
971
1040
  }
972
1041
 
973
1042
  // src/components/icons/eye-off/index.tsx
974
- var import_jsx_runtime18 = require("react/jsx-runtime");
1043
+ var import_jsx_runtime19 = require("react/jsx-runtime");
975
1044
  function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
976
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1045
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
977
1046
  "svg",
978
1047
  {
979
1048
  xmlns: "http://www.w3.org/2000/svg",
@@ -988,31 +1057,31 @@ function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
988
1057
  "aria-hidden": "true",
989
1058
  ...rest,
990
1059
  children: [
991
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
992
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("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" }),
993
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("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" }),
994
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m2 2 20 20" })
1060
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
1061
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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" }),
1062
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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" }),
1063
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("path", { d: "m2 2 20 20" })
995
1064
  ]
996
1065
  }
997
1066
  );
998
1067
  }
999
1068
 
1000
1069
  // src/components/password-field/use-styles.ts
1001
- var import_react28 = require("react");
1070
+ var import_react30 = require("react");
1002
1071
 
1003
1072
  // src/components/password-field/use-styles.css.ts
1004
1073
  var revealButton = "use-styles_revealButton__rsu9d50";
1005
1074
 
1006
1075
  // src/components/password-field/use-styles.ts
1007
1076
  function useStyles13() {
1008
- return (0, import_react28.useMemo)(() => ({ revealButton }), []);
1077
+ return (0, import_react30.useMemo)(() => ({ revealButton }), []);
1009
1078
  }
1010
1079
 
1011
1080
  // src/components/password-field/index.tsx
1012
- var import_jsx_runtime19 = require("react/jsx-runtime");
1013
- var PasswordField = (0, import_react29.forwardRef)(
1081
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1082
+ var PasswordField = (0, import_react31.forwardRef)(
1014
1083
  function PasswordField2({ label: label7, help, error, startIcon, onChange, id, className, ...rest }, ref) {
1015
- const [reveal, setReveal] = (0, import_react29.useState)(false);
1084
+ const [reveal, setReveal] = (0, import_react31.useState)(false);
1016
1085
  const classes = useStyles13();
1017
1086
  const handleChange = (e) => {
1018
1087
  onChange?.(e.target.value);
@@ -1020,7 +1089,7 @@ var PasswordField = (0, import_react29.forwardRef)(
1020
1089
  const handleToggleMouseDown = (e) => {
1021
1090
  e.preventDefault();
1022
1091
  };
1023
- const toggleButton = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1092
+ const toggleButton = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1024
1093
  "button",
1025
1094
  {
1026
1095
  type: "button",
@@ -1029,10 +1098,10 @@ var PasswordField = (0, import_react29.forwardRef)(
1029
1098
  "aria-label": reveal ? "Ocultar contrase\xF1a" : "Mostrar contrase\xF1a",
1030
1099
  onMouseDown: handleToggleMouseDown,
1031
1100
  onClick: () => setReveal((r) => !r),
1032
- children: reveal ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(EyeIcon, { size: 18 })
1101
+ children: reveal ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(EyeIcon, { size: 18 })
1033
1102
  }
1034
1103
  );
1035
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1104
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1036
1105
  BaseField,
1037
1106
  {
1038
1107
  ref,
@@ -1043,7 +1112,7 @@ var PasswordField = (0, import_react29.forwardRef)(
1043
1112
  trailing: toggleButton,
1044
1113
  id,
1045
1114
  className,
1046
- children: (control) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1115
+ children: (control) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1047
1116
  "input",
1048
1117
  {
1049
1118
  ...rest,
@@ -1058,15 +1127,15 @@ var PasswordField = (0, import_react29.forwardRef)(
1058
1127
  );
1059
1128
 
1060
1129
  // src/components/money-field/index.tsx
1061
- var import_react30 = require("react");
1062
- var import_jsx_runtime20 = require("react/jsx-runtime");
1130
+ var import_react32 = require("react");
1131
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1063
1132
  function parseAmount(raw) {
1064
1133
  const cleaned = raw.replace(/[^0-9.-]/g, "");
1065
1134
  if (cleaned === "" || cleaned === "-" || cleaned === ".") return null;
1066
1135
  const n = Number.parseFloat(cleaned);
1067
1136
  return Number.isNaN(n) ? null : n;
1068
1137
  }
1069
- var MoneyField = (0, import_react30.forwardRef)(function MoneyField2({
1138
+ var MoneyField = (0, import_react32.forwardRef)(function MoneyField2({
1070
1139
  value,
1071
1140
  onChange,
1072
1141
  currency = "USD",
@@ -1081,9 +1150,9 @@ var MoneyField = (0, import_react30.forwardRef)(function MoneyField2({
1081
1150
  onBlur,
1082
1151
  ...rest
1083
1152
  }, ref) {
1084
- const [focused, setFocused] = (0, import_react30.useState)(false);
1085
- const [draft, setDraft] = (0, import_react30.useState)("");
1086
- const formatter = (0, import_react30.useMemo)(
1153
+ const [focused, setFocused] = (0, import_react32.useState)(false);
1154
+ const [draft, setDraft] = (0, import_react32.useState)("");
1155
+ const formatter = (0, import_react32.useMemo)(
1087
1156
  () => new Intl.NumberFormat(locale, { style: "currency", currency }),
1088
1157
  [locale, currency]
1089
1158
  );
@@ -1099,7 +1168,7 @@ var MoneyField = (0, import_react30.forwardRef)(function MoneyField2({
1099
1168
  onChange?.(parseAmount(draft));
1100
1169
  onBlur?.(e);
1101
1170
  };
1102
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1171
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1103
1172
  BaseField,
1104
1173
  {
1105
1174
  ref,
@@ -1109,7 +1178,7 @@ var MoneyField = (0, import_react30.forwardRef)(function MoneyField2({
1109
1178
  startIcon,
1110
1179
  id,
1111
1180
  className,
1112
- children: (control) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1181
+ children: (control) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1113
1182
  "input",
1114
1183
  {
1115
1184
  ...rest,
@@ -1126,10 +1195,10 @@ var MoneyField = (0, import_react30.forwardRef)(function MoneyField2({
1126
1195
  });
1127
1196
 
1128
1197
  // src/components/icon-button/index.tsx
1129
- var import_react32 = require("react");
1198
+ var import_react34 = require("react");
1130
1199
 
1131
1200
  // src/components/icon-button/use-styles.ts
1132
- var import_react31 = require("react");
1201
+ var import_react33 = require("react");
1133
1202
 
1134
1203
  // src/components/icon-button/use-styles.css.ts
1135
1204
  var accent = "use-styles_accent__18np0q02";
@@ -1142,7 +1211,7 @@ function useStyles14({
1142
1211
  tone: tone4 = "ink"
1143
1212
  }) {
1144
1213
  const { themeClass } = useTheme();
1145
- const root24 = (0, import_react31.useMemo)(
1214
+ const root24 = (0, import_react33.useMemo)(
1146
1215
  () => [themeClass, root10, tone4 === "accent" && accent, active2 && active].filter(Boolean).join(" "),
1147
1216
  [themeClass, active2, tone4]
1148
1217
  );
@@ -1150,8 +1219,8 @@ function useStyles14({
1150
1219
  }
1151
1220
 
1152
1221
  // src/components/icon-button/index.tsx
1153
- var import_jsx_runtime21 = require("react/jsx-runtime");
1154
- var IconButton = (0, import_react32.forwardRef)(function IconButton2({ icon: Icon, active: active2, tone: tone4, title, type = "button", ...rest }, ref) {
1222
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1223
+ var IconButton = (0, import_react34.forwardRef)(function IconButton2({ icon: Icon, active: active2, tone: tone4, title, type = "button", testId, ...rest }, ref) {
1155
1224
  if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
1156
1225
  const restProps = rest;
1157
1226
  const hasName = title.trim() !== "" || restProps["aria-label"] != null || restProps["aria-labelledby"] != null;
@@ -1160,14 +1229,28 @@ var IconButton = (0, import_react32.forwardRef)(function IconButton2({ icon: Ico
1160
1229
  }
1161
1230
  }
1162
1231
  const { root: root24 } = useStyles14({ active: active2, tone: tone4 });
1163
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("button", { ref, type, className: root24, "aria-label": title, title, ...rest, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon, { size: 18 }) });
1232
+ const { testId: dataTestId } = useTestId("button", testId);
1233
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1234
+ "button",
1235
+ {
1236
+ ref,
1237
+ type,
1238
+ className: root24,
1239
+ "aria-label": title,
1240
+ title,
1241
+ "data-testid": dataTestId,
1242
+ "data-state": states({ active: active2, disabled: rest.disabled }),
1243
+ ...rest,
1244
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Icon, { size: 18 })
1245
+ }
1246
+ );
1164
1247
  });
1165
1248
 
1166
1249
  // src/components/card/index.tsx
1167
- var import_react34 = require("react");
1250
+ var import_react36 = require("react");
1168
1251
 
1169
1252
  // src/components/card/use-styles.ts
1170
- var import_react33 = require("react");
1253
+ var import_react35 = require("react");
1171
1254
 
1172
1255
  // src/components/card/use-styles.css.ts
1173
1256
  var body = "use-styles_body__1fuvd022";
@@ -1178,27 +1261,27 @@ var root11 = "use-styles_root__1fuvd020";
1178
1261
  // src/components/card/use-styles.ts
1179
1262
  function useStyles15() {
1180
1263
  const { themeClass } = useTheme();
1181
- const root24 = (0, import_react33.useMemo)(() => `${themeClass} ${root11}`, [themeClass]);
1264
+ const root24 = (0, import_react35.useMemo)(() => `${themeClass} ${root11}`, [themeClass]);
1182
1265
  return { root: root24, header, body, footer };
1183
1266
  }
1184
1267
 
1185
1268
  // src/components/card/index.tsx
1186
- var import_jsx_runtime22 = require("react/jsx-runtime");
1187
- var CardRoot = (0, import_react34.forwardRef)(function Card({ children, ...rest }, ref) {
1269
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1270
+ var CardRoot = (0, import_react36.forwardRef)(function Card({ children, ...rest }, ref) {
1188
1271
  const { root: root24 } = useStyles15();
1189
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, className: root24, ...rest, children });
1272
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { ref, className: root24, ...rest, children });
1190
1273
  });
1191
1274
  function CardHeader({ children, ...rest }) {
1192
1275
  const { header: header3 } = useStyles15();
1193
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: header3, ...rest, children });
1276
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: header3, ...rest, children });
1194
1277
  }
1195
1278
  function CardBody({ children, ...rest }) {
1196
1279
  const { body: body3 } = useStyles15();
1197
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: body3, ...rest, children });
1280
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: body3, ...rest, children });
1198
1281
  }
1199
1282
  function CardFooter({ children, ...rest }) {
1200
1283
  const { footer: footer2 } = useStyles15();
1201
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: footer2, ...rest, children });
1284
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: footer2, ...rest, children });
1202
1285
  }
1203
1286
  CardRoot.displayName = "Card";
1204
1287
  CardHeader.displayName = "Card.Header";
@@ -1211,12 +1294,12 @@ var Card2 = Object.assign(CardRoot, {
1211
1294
  });
1212
1295
 
1213
1296
  // src/components/alert/index.tsx
1214
- var import_react36 = require("react");
1297
+ var import_react38 = require("react");
1215
1298
 
1216
1299
  // src/components/icons/circle-check/index.tsx
1217
- var import_jsx_runtime23 = require("react/jsx-runtime");
1300
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1218
1301
  function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1219
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1302
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1220
1303
  "svg",
1221
1304
  {
1222
1305
  xmlns: "http://www.w3.org/2000/svg",
@@ -1231,17 +1314,17 @@ function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1231
1314
  "aria-hidden": "true",
1232
1315
  ...rest,
1233
1316
  children: [
1234
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1235
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("path", { d: "m9 12 2 2 4-4" })
1317
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1318
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "m9 12 2 2 4-4" })
1236
1319
  ]
1237
1320
  }
1238
1321
  );
1239
1322
  }
1240
1323
 
1241
1324
  // src/components/icons/circle-x/index.tsx
1242
- var import_jsx_runtime24 = require("react/jsx-runtime");
1325
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1243
1326
  function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1244
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
1327
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1245
1328
  "svg",
1246
1329
  {
1247
1330
  xmlns: "http://www.w3.org/2000/svg",
@@ -1256,18 +1339,18 @@ function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1256
1339
  "aria-hidden": "true",
1257
1340
  ...rest,
1258
1341
  children: [
1259
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1260
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "m15 9-6 6" }),
1261
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("path", { d: "m9 9 6 6" })
1342
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1343
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { d: "m15 9-6 6" }),
1344
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { d: "m9 9 6 6" })
1262
1345
  ]
1263
1346
  }
1264
1347
  );
1265
1348
  }
1266
1349
 
1267
1350
  // src/components/icons/info/index.tsx
1268
- var import_jsx_runtime25 = require("react/jsx-runtime");
1351
+ var import_jsx_runtime26 = require("react/jsx-runtime");
1269
1352
  function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1270
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
1353
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1271
1354
  "svg",
1272
1355
  {
1273
1356
  xmlns: "http://www.w3.org/2000/svg",
@@ -1282,18 +1365,18 @@ function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1282
1365
  "aria-hidden": "true",
1283
1366
  ...rest,
1284
1367
  children: [
1285
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1286
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { d: "M12 16v-4" }),
1287
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("path", { d: "M12 8h.01" })
1368
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
1369
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M12 16v-4" }),
1370
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M12 8h.01" })
1288
1371
  ]
1289
1372
  }
1290
1373
  );
1291
1374
  }
1292
1375
 
1293
1376
  // src/components/icons/triangle-alert/index.tsx
1294
- var import_jsx_runtime26 = require("react/jsx-runtime");
1377
+ var import_jsx_runtime27 = require("react/jsx-runtime");
1295
1378
  function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1296
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
1379
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
1297
1380
  "svg",
1298
1381
  {
1299
1382
  xmlns: "http://www.w3.org/2000/svg",
@@ -1308,16 +1391,16 @@ function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1308
1391
  "aria-hidden": "true",
1309
1392
  ...rest,
1310
1393
  children: [
1311
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("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" }),
1312
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M12 9v4" }),
1313
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M12 17h.01" })
1394
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("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" }),
1395
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { d: "M12 9v4" }),
1396
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { d: "M12 17h.01" })
1314
1397
  ]
1315
1398
  }
1316
1399
  );
1317
1400
  }
1318
1401
 
1319
1402
  // src/components/alert/use-styles.ts
1320
- var import_react35 = require("react");
1403
+ var import_react37 = require("react");
1321
1404
 
1322
1405
  // src/components/alert/use-styles.css.ts
1323
1406
  var content = "use-styles_content__ivsh6u6";
@@ -1331,7 +1414,7 @@ function useStyles16({
1331
1414
  className
1332
1415
  }) {
1333
1416
  const { themeClass } = useTheme();
1334
- const root24 = (0, import_react35.useMemo)(
1417
+ const root24 = (0, import_react37.useMemo)(
1335
1418
  () => [themeClass, root12, severity[severity2], className].filter(Boolean).join(" "),
1336
1419
  [themeClass, severity2, className]
1337
1420
  );
@@ -1343,30 +1426,30 @@ function useStyles16({
1343
1426
  }
1344
1427
 
1345
1428
  // src/components/alert/index.tsx
1346
- var import_jsx_runtime27 = require("react/jsx-runtime");
1429
+ var import_jsx_runtime28 = require("react/jsx-runtime");
1347
1430
  var defaultIcons = {
1348
1431
  info: InfoIcon,
1349
1432
  ok: CircleCheckIcon,
1350
1433
  warn: TriangleAlertIcon,
1351
1434
  danger: CircleXIcon
1352
1435
  };
1353
- var Alert = (0, import_react36.forwardRef)(function Alert2({ severity: severity2 = "info", title, icon, className, children, ...rest }, ref) {
1436
+ var Alert = (0, import_react38.forwardRef)(function Alert2({ severity: severity2 = "info", title, icon, className, children, ...rest }, ref) {
1354
1437
  const styles = useStyles16({ severity: severity2, className });
1355
1438
  const IconComponent = icon ?? defaultIcons[severity2];
1356
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { ref, role: "alert", className: styles.root, ...rest, children: [
1357
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: styles.iconSlot, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(IconComponent, {}) }),
1358
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: styles.content, children: [
1359
- title != null && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Typography, { variant: "h4", children: title }),
1360
- children != null && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Typography, { variant: "body", color: "fg2", children })
1439
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { ref, role: "alert", className: styles.root, ...rest, children: [
1440
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: styles.iconSlot, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(IconComponent, {}) }),
1441
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: styles.content, children: [
1442
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Typography, { variant: "h4", children: title }),
1443
+ children != null && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Typography, { variant: "body", color: "fg2", children })
1361
1444
  ] })
1362
1445
  ] });
1363
1446
  });
1364
1447
 
1365
1448
  // src/components/tooltip/index.tsx
1366
- var import_react38 = require("react");
1449
+ var import_react40 = require("react");
1367
1450
 
1368
1451
  // src/components/tooltip/use-styles.ts
1369
- var import_react37 = require("react");
1452
+ var import_react39 = require("react");
1370
1453
 
1371
1454
  // src/components/tooltip/use-styles.css.ts
1372
1455
  var bubble = "use-styles_bubble__h9kvh1 surfaces_inkySurface__1qa7atn2";
@@ -1378,11 +1461,11 @@ function useStyles17({
1378
1461
  placement: placement2 = "top"
1379
1462
  }) {
1380
1463
  const { themeClass } = useTheme();
1381
- const wrapper4 = (0, import_react37.useMemo)(
1464
+ const wrapper4 = (0, import_react39.useMemo)(
1382
1465
  () => [themeClass, wrapper].filter(Boolean).join(" "),
1383
1466
  [themeClass]
1384
1467
  );
1385
- const bubble2 = (0, import_react37.useMemo)(
1468
+ const bubble2 = (0, import_react39.useMemo)(
1386
1469
  () => [bubble, placement[placement2]].filter(Boolean).join(" "),
1387
1470
  [placement2]
1388
1471
  );
@@ -1390,13 +1473,13 @@ function useStyles17({
1390
1473
  }
1391
1474
 
1392
1475
  // src/components/tooltip/index.tsx
1393
- var import_jsx_runtime28 = require("react/jsx-runtime");
1476
+ var import_jsx_runtime29 = require("react/jsx-runtime");
1394
1477
  var HIDE_DELAY = 120;
1395
- var Tooltip = (0, import_react38.forwardRef)(function Tooltip2({ label: label7, children, placement: placement2 }, ref) {
1396
- const [open, setOpen] = (0, import_react38.useState)(false);
1397
- const tooltipId = (0, import_react38.useId)();
1478
+ var Tooltip = (0, import_react40.forwardRef)(function Tooltip2({ label: label7, children, placement: placement2 }, ref) {
1479
+ const [open, setOpen] = (0, import_react40.useState)(false);
1480
+ const tooltipId = (0, import_react40.useId)();
1398
1481
  const { wrapper: wrapper4, bubble: bubble2 } = useStyles17({ placement: placement2 });
1399
- const hideTimer = (0, import_react38.useRef)(null);
1482
+ const hideTimer = (0, import_react40.useRef)(null);
1400
1483
  const clearHide = () => {
1401
1484
  if (hideTimer.current) {
1402
1485
  clearTimeout(hideTimer.current);
@@ -1415,7 +1498,7 @@ var Tooltip = (0, import_react38.forwardRef)(function Tooltip2({ label: label7,
1415
1498
  clearHide();
1416
1499
  setOpen(false);
1417
1500
  };
1418
- (0, import_react38.useEffect)(() => {
1501
+ (0, import_react40.useEffect)(() => {
1419
1502
  return () => {
1420
1503
  if (hideTimer.current) clearTimeout(hideTimer.current);
1421
1504
  };
@@ -1428,8 +1511,8 @@ var Tooltip = (0, import_react38.forwardRef)(function Tooltip2({ label: label7,
1428
1511
  };
1429
1512
  const previousDescribedBy = children.props["aria-describedby"];
1430
1513
  const describedBy = open ? [previousDescribedBy, tooltipId].filter(Boolean).join(" ") : previousDescribedBy;
1431
- const trigger2 = (0, import_react38.cloneElement)(children, { "aria-describedby": describedBy });
1432
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
1514
+ const trigger2 = (0, import_react40.cloneElement)(children, { "aria-describedby": describedBy });
1515
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
1433
1516
  "span",
1434
1517
  {
1435
1518
  ref,
@@ -1441,7 +1524,7 @@ var Tooltip = (0, import_react38.forwardRef)(function Tooltip2({ label: label7,
1441
1524
  onKeyDown: handleKeyDown,
1442
1525
  children: [
1443
1526
  trigger2,
1444
- open && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
1527
+ open && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1445
1528
  "span",
1446
1529
  {
1447
1530
  id: tooltipId,
@@ -1458,12 +1541,12 @@ var Tooltip = (0, import_react38.forwardRef)(function Tooltip2({ label: label7,
1458
1541
  });
1459
1542
 
1460
1543
  // src/components/select/index.tsx
1461
- var import_react40 = require("react");
1544
+ var import_react42 = require("react");
1462
1545
 
1463
1546
  // src/components/icons/chevron-down/index.tsx
1464
- var import_jsx_runtime29 = require("react/jsx-runtime");
1547
+ var import_jsx_runtime30 = require("react/jsx-runtime");
1465
1548
  function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1466
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
1549
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1467
1550
  "svg",
1468
1551
  {
1469
1552
  xmlns: "http://www.w3.org/2000/svg",
@@ -1477,13 +1560,13 @@ function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1477
1560
  strokeLinejoin: "round",
1478
1561
  "aria-hidden": "true",
1479
1562
  ...rest,
1480
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("path", { d: "m6 9 6 6 6-6" })
1563
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("path", { d: "m6 9 6 6 6-6" })
1481
1564
  }
1482
1565
  );
1483
1566
  }
1484
1567
 
1485
1568
  // src/components/select/use-styles.ts
1486
- var import_react39 = require("react");
1569
+ var import_react41 = require("react");
1487
1570
 
1488
1571
  // src/components/select/use-styles.css.ts
1489
1572
  var chevron = "use-styles_chevron__1w1czpb4";
@@ -1502,7 +1585,7 @@ function useStyles18({
1502
1585
  open = false
1503
1586
  }) {
1504
1587
  const { themeClass } = useTheme();
1505
- return (0, import_react39.useMemo)(() => {
1588
+ return (0, import_react41.useMemo)(() => {
1506
1589
  const chevron3 = [chevron, open && chevronOpen].filter(Boolean).join(" ");
1507
1590
  return {
1508
1591
  root: [themeClass, root13].filter(Boolean).join(" "),
@@ -1517,17 +1600,17 @@ function useStyles18({
1517
1600
  }
1518
1601
 
1519
1602
  // src/components/select/index.tsx
1520
- var import_jsx_runtime30 = require("react/jsx-runtime");
1521
- var Select = (0, import_react40.forwardRef)(function Select2({ options, value, onChange, placeholder: placeholder2, label: label7, disabled: disabled3, ...rest }, ref) {
1522
- const [open, setOpen] = (0, import_react40.useState)(false);
1523
- const [activeIndex, setActiveIndex] = (0, import_react40.useState)(0);
1524
- const rootRef = (0, import_react40.useRef)(null);
1603
+ var import_jsx_runtime31 = require("react/jsx-runtime");
1604
+ var Select = (0, import_react42.forwardRef)(function Select2({ options, value, onChange, placeholder: placeholder2, label: label7, disabled: disabled3, ...rest }, ref) {
1605
+ const [open, setOpen] = (0, import_react42.useState)(false);
1606
+ const [activeIndex, setActiveIndex] = (0, import_react42.useState)(0);
1607
+ const rootRef = (0, import_react42.useRef)(null);
1525
1608
  const setRootRef = (node) => {
1526
1609
  rootRef.current = node;
1527
1610
  if (typeof ref === "function") ref(node);
1528
1611
  else if (ref) ref.current = node;
1529
1612
  };
1530
- const baseId = (0, import_react40.useId)();
1613
+ const baseId = (0, import_react42.useId)();
1531
1614
  const labelId = `${baseId}-label`;
1532
1615
  const optionId = (index) => `${baseId}-option-${index}`;
1533
1616
  const {
@@ -1539,7 +1622,7 @@ var Select = (0, import_react40.forwardRef)(function Select2({ options, value, o
1539
1622
  menu: menu2,
1540
1623
  optionClass
1541
1624
  } = useStyles18({ open });
1542
- (0, import_react40.useEffect)(() => {
1625
+ (0, import_react42.useEffect)(() => {
1543
1626
  if (!open) return;
1544
1627
  const onPointerDown = (event) => {
1545
1628
  if (rootRef.current && !rootRef.current.contains(event.target)) {
@@ -1599,9 +1682,9 @@ var Select = (0, import_react40.forwardRef)(function Select2({ options, value, o
1599
1682
  break;
1600
1683
  }
1601
1684
  };
1602
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { ref: setRootRef, className: root24, ...rest, children: [
1603
- label7 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { id: labelId, className: labelClass, children: label7 }),
1604
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
1685
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { ref: setRootRef, className: root24, ...rest, children: [
1686
+ label7 && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { id: labelId, className: labelClass, children: label7 }),
1687
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
1605
1688
  "button",
1606
1689
  {
1607
1690
  type: "button",
@@ -1621,17 +1704,17 @@ var Select = (0, import_react40.forwardRef)(function Select2({ options, value, o
1621
1704
  },
1622
1705
  onKeyDown: handleKeyDown,
1623
1706
  children: [
1624
- selected3 ? selected3.label : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: placeholderClass, children: placeholder2 }),
1625
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: chevron3, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(ChevronDownIcon, { size: 18 }) })
1707
+ selected3 ? selected3.label : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: placeholderClass, children: placeholder2 }),
1708
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: chevron3, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ChevronDownIcon, { size: 18 }) })
1626
1709
  ]
1627
1710
  }
1628
1711
  ),
1629
- open && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1712
+ open && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1630
1713
  const isSelected = option2.value === value;
1631
1714
  const isActive = index === activeIndex;
1632
1715
  return (
1633
1716
  // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard nav lives on the trigger via aria-activedescendant; options are not focusable.
1634
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1717
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1635
1718
  "div",
1636
1719
  {
1637
1720
  id: optionId(index),
@@ -1650,10 +1733,10 @@ var Select = (0, import_react40.forwardRef)(function Select2({ options, value, o
1650
1733
  });
1651
1734
 
1652
1735
  // src/components/slider/index.tsx
1653
- var import_react42 = require("react");
1736
+ var import_react44 = require("react");
1654
1737
 
1655
1738
  // src/components/slider/use-styles.ts
1656
- var import_react41 = require("react");
1739
+ var import_react43 = require("react");
1657
1740
 
1658
1741
  // src/components/slider/use-styles.css.ts
1659
1742
  var input5 = "use-styles_input__okw59n3";
@@ -1667,7 +1750,7 @@ var wrapper2 = "use-styles_wrapper__okw59n6";
1667
1750
  // src/components/slider/use-styles.ts
1668
1751
  function useStyles19() {
1669
1752
  const { themeClass } = useTheme();
1670
- return (0, import_react41.useMemo)(() => {
1753
+ return (0, import_react43.useMemo)(() => {
1671
1754
  const root24 = [themeClass, root14].filter(Boolean).join(" ");
1672
1755
  return {
1673
1756
  wrapper: wrapper2,
@@ -1682,8 +1765,8 @@ function useStyles19() {
1682
1765
  }
1683
1766
 
1684
1767
  // src/components/slider/index.tsx
1685
- var import_jsx_runtime31 = require("react/jsx-runtime");
1686
- var Slider = (0, import_react42.forwardRef)(function Slider2({ value = 0, onChange, min = 0, max = 100, step: step2 = 1, disabled: disabled3, label: label7, ...rest }, ref) {
1768
+ var import_jsx_runtime32 = require("react/jsx-runtime");
1769
+ var Slider = (0, import_react44.forwardRef)(function Slider2({ value = 0, onChange, min = 0, max = 100, step: step2 = 1, disabled: disabled3, label: label7, ...rest }, ref) {
1687
1770
  const { wrapper: wrapper4, label: labelClass, root: root24, track: track4, range: range2, thumb: thumb2, input: input6 } = useStyles19();
1688
1771
  const span = max - min;
1689
1772
  const percent = span > 0 ? (value - min) / span * 100 : 0;
@@ -1691,12 +1774,12 @@ var Slider = (0, import_react42.forwardRef)(function Slider2({ value = 0, onChan
1691
1774
  const handleChange = (e) => {
1692
1775
  onChange?.(Number(e.target.value));
1693
1776
  };
1694
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: wrapper4, children: [
1695
- label7 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: labelClass, children: label7 }) : null,
1696
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("span", { className: root24, children: [
1697
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: track4 }),
1698
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: range2, style: { width: `${clamped}%` } }),
1699
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1777
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: wrapper4, children: [
1778
+ label7 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: labelClass, children: label7 }) : null,
1779
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: root24, children: [
1780
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: track4 }),
1781
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: range2, style: { width: `${clamped}%` } }),
1782
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1700
1783
  "input",
1701
1784
  {
1702
1785
  ref,
@@ -1711,16 +1794,16 @@ var Slider = (0, import_react42.forwardRef)(function Slider2({ value = 0, onChan
1711
1794
  ...rest
1712
1795
  }
1713
1796
  ),
1714
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: thumb2, style: { left: `${clamped}%` } })
1797
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: thumb2, style: { left: `${clamped}%` } })
1715
1798
  ] })
1716
1799
  ] });
1717
1800
  });
1718
1801
 
1719
1802
  // src/components/accordion/index.tsx
1720
- var import_react44 = require("react");
1803
+ var import_react46 = require("react");
1721
1804
 
1722
1805
  // src/components/accordion/use-styles.ts
1723
- var import_react43 = require("react");
1806
+ var import_react45 = require("react");
1724
1807
 
1725
1808
  // src/components/accordion/use-styles.css.ts
1726
1809
  var chevron2 = "use-styles_chevron__1cjrdh93";
@@ -1733,7 +1816,7 @@ var root15 = "use-styles_root__1cjrdh90";
1733
1816
  // src/components/accordion/use-styles.ts
1734
1817
  function useStyles20({ className }) {
1735
1818
  const { themeClass } = useTheme();
1736
- return (0, import_react43.useMemo)(
1819
+ return (0, import_react45.useMemo)(
1737
1820
  () => ({
1738
1821
  root: [themeClass, root15, className].filter(Boolean).join(" "),
1739
1822
  item,
@@ -1746,9 +1829,9 @@ function useStyles20({ className }) {
1746
1829
  }
1747
1830
 
1748
1831
  // src/components/accordion/index.tsx
1749
- var import_jsx_runtime32 = require("react/jsx-runtime");
1750
- var Accordion = (0, import_react44.forwardRef)(function Accordion2({ items, multiple = false, defaultOpen = [], className }, ref) {
1751
- const [open, setOpen] = (0, import_react44.useState)(defaultOpen);
1832
+ var import_jsx_runtime33 = require("react/jsx-runtime");
1833
+ var Accordion = (0, import_react46.forwardRef)(function Accordion2({ items, multiple = false, defaultOpen = [], className }, ref) {
1834
+ const [open, setOpen] = (0, import_react46.useState)(defaultOpen);
1752
1835
  const { root: root24, item: item3, header: header3, chevronFor, panel: panel3 } = useStyles20({ className });
1753
1836
  const toggle = (id) => {
1754
1837
  setOpen((current2) => {
@@ -1757,12 +1840,12 @@ var Accordion = (0, import_react44.forwardRef)(function Accordion2({ items, mult
1757
1840
  return multiple ? [...current2, id] : [id];
1758
1841
  });
1759
1842
  };
1760
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { ref, className: root24, children: items.map((it) => {
1843
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ref, className: root24, children: items.map((it) => {
1761
1844
  const isOpen = open.includes(it.id);
1762
1845
  const panelId = `accordion-panel-${it.id}`;
1763
1846
  const headerId = `accordion-header-${it.id}`;
1764
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: item3, children: [
1765
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
1847
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: item3, children: [
1848
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
1766
1849
  "button",
1767
1850
  {
1768
1851
  type: "button",
@@ -1773,22 +1856,22 @@ var Accordion = (0, import_react44.forwardRef)(function Accordion2({ items, mult
1773
1856
  onClick: () => toggle(it.id),
1774
1857
  children: [
1775
1858
  it.title,
1776
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ChevronDownIcon, { className: chevronFor(isOpen) })
1859
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ChevronDownIcon, { className: chevronFor(isOpen) })
1777
1860
  ]
1778
1861
  }
1779
1862
  ),
1780
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { id: panelId, className: panel3, role: "region", "aria-labelledby": headerId, children: it.content })
1863
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { id: panelId, className: panel3, role: "region", "aria-labelledby": headerId, children: it.content })
1781
1864
  ] }, it.id);
1782
1865
  }) });
1783
1866
  });
1784
1867
 
1785
1868
  // src/components/breadcrumbs/index.tsx
1786
- var import_react46 = require("react");
1869
+ var import_react48 = require("react");
1787
1870
 
1788
1871
  // src/components/icons/chevron-right/index.tsx
1789
- var import_jsx_runtime33 = require("react/jsx-runtime");
1872
+ var import_jsx_runtime34 = require("react/jsx-runtime");
1790
1873
  function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1791
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1874
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
1792
1875
  "svg",
1793
1876
  {
1794
1877
  xmlns: "http://www.w3.org/2000/svg",
@@ -1802,13 +1885,13 @@ function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1802
1885
  strokeLinejoin: "round",
1803
1886
  "aria-hidden": "true",
1804
1887
  ...rest,
1805
- children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("path", { d: "m9 18 6-6-6-6" })
1888
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "m9 18 6-6-6-6" })
1806
1889
  }
1807
1890
  );
1808
1891
  }
1809
1892
 
1810
1893
  // src/components/breadcrumbs/use-styles.ts
1811
- var import_react45 = require("react");
1894
+ var import_react47 = require("react");
1812
1895
 
1813
1896
  // src/components/breadcrumbs/use-styles.css.ts
1814
1897
  var crumb = "use-styles_crumb__7u0du61";
@@ -1819,7 +1902,7 @@ var separator = "use-styles_separator__7u0du63";
1819
1902
  // src/components/breadcrumbs/use-styles.ts
1820
1903
  function useStyles21({ className }) {
1821
1904
  const { themeClass } = useTheme();
1822
- const root24 = (0, import_react45.useMemo)(
1905
+ const root24 = (0, import_react47.useMemo)(
1823
1906
  () => [themeClass, root16, className].filter(Boolean).join(" "),
1824
1907
  [themeClass, className]
1825
1908
  );
@@ -1827,26 +1910,26 @@ function useStyles21({ className }) {
1827
1910
  }
1828
1911
 
1829
1912
  // src/components/breadcrumbs/index.tsx
1830
- var import_jsx_runtime34 = require("react/jsx-runtime");
1831
- var Breadcrumbs = (0, import_react46.forwardRef)(function Breadcrumbs2({ items, className, ...rest }, ref) {
1913
+ var import_jsx_runtime35 = require("react/jsx-runtime");
1914
+ var Breadcrumbs = (0, import_react48.forwardRef)(function Breadcrumbs2({ items, className, ...rest }, ref) {
1832
1915
  const { root: root24, crumb: crumb2, current: current2, separator: separator2 } = useStyles21({ className });
1833
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("nav", { ref, "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1916
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("nav", { ref, "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1834
1917
  const isLast = index === items.length - 1;
1835
1918
  const key = index;
1836
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_react46.Fragment, { children: [
1837
- isLast ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: crumb2, children: item3.label }),
1838
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: separator2, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(ChevronRightIcon, { size: 14 }) })
1919
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_react48.Fragment, { children: [
1920
+ isLast ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: crumb2, children: item3.label }),
1921
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: separator2, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ChevronRightIcon, { size: 14 }) })
1839
1922
  ] }, key);
1840
1923
  }) });
1841
1924
  });
1842
1925
 
1843
1926
  // src/components/pagination/index.tsx
1844
- var import_react48 = require("react");
1927
+ var import_react50 = require("react");
1845
1928
 
1846
1929
  // src/components/icons/chevron-left/index.tsx
1847
- var import_jsx_runtime35 = require("react/jsx-runtime");
1930
+ var import_jsx_runtime36 = require("react/jsx-runtime");
1848
1931
  function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1849
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
1932
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1850
1933
  "svg",
1851
1934
  {
1852
1935
  xmlns: "http://www.w3.org/2000/svg",
@@ -1860,13 +1943,13 @@ function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1860
1943
  strokeLinejoin: "round",
1861
1944
  "aria-hidden": "true",
1862
1945
  ...rest,
1863
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "m15 18-6-6 6-6" })
1946
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("path", { d: "m15 18-6-6 6-6" })
1864
1947
  }
1865
1948
  );
1866
1949
  }
1867
1950
 
1868
1951
  // src/components/pagination/use-styles.ts
1869
- var import_react47 = require("react");
1952
+ var import_react49 = require("react");
1870
1953
 
1871
1954
  // src/components/pagination/use-styles.css.ts
1872
1955
  var ellipsis = "use-styles_ellipsis__1azgzoh3";
@@ -1878,7 +1961,7 @@ var root17 = "use-styles_root__1azgzoh0";
1878
1961
  // src/components/pagination/use-styles.ts
1879
1962
  function useStyles22() {
1880
1963
  const { themeClass } = useTheme();
1881
- return (0, import_react47.useMemo)(
1964
+ return (0, import_react49.useMemo)(
1882
1965
  () => ({
1883
1966
  root: [themeClass, root17].filter(Boolean).join(" "),
1884
1967
  pageBtnFor: (active2) => [pageBtn, active2 && pageActive].filter(Boolean).join(" "),
@@ -1890,7 +1973,7 @@ function useStyles22() {
1890
1973
  }
1891
1974
 
1892
1975
  // src/components/pagination/index.tsx
1893
- var import_jsx_runtime36 = require("react/jsx-runtime");
1976
+ var import_jsx_runtime37 = require("react/jsx-runtime");
1894
1977
  function buildItems(count, page, siblingCount) {
1895
1978
  const total = Math.max(1, count);
1896
1979
  const first = 1;
@@ -1904,14 +1987,14 @@ function buildItems(count, page, siblingCount) {
1904
1987
  if (last > first) items.push(last);
1905
1988
  return items;
1906
1989
  }
1907
- var Pagination = (0, import_react48.forwardRef)(function Pagination2({ count, page = 1, onChange, siblingCount = 1, ...rest }, ref) {
1990
+ var Pagination = (0, import_react50.forwardRef)(function Pagination2({ count, page = 1, onChange, siblingCount = 1, ...rest }, ref) {
1908
1991
  const { root: root24, pageBtnFor, ellipsis: ellipsis2, nav: nav2 } = useStyles22();
1909
1992
  const total = Math.max(1, count);
1910
1993
  const current2 = Math.min(Math.max(1, page), total);
1911
1994
  const items = buildItems(total, current2, siblingCount);
1912
1995
  const go = (n) => onChange?.(Math.min(Math.max(1, n), total));
1913
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("nav", { ref, className: root24, "aria-label": "Pagination", ...rest, children: [
1914
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
1996
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("nav", { ref, className: root24, "aria-label": "Pagination", ...rest, children: [
1997
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1915
1998
  "button",
1916
1999
  {
1917
2000
  type: "button",
@@ -1919,14 +2002,14 @@ var Pagination = (0, import_react48.forwardRef)(function Pagination2({ count, pa
1919
2002
  "aria-label": "Previous page",
1920
2003
  disabled: current2 <= 1,
1921
2004
  onClick: () => go(current2 - 1),
1922
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronLeftIcon, { size: 18 })
2005
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ChevronLeftIcon, { size: 18 })
1923
2006
  }
1924
2007
  ),
1925
2008
  items.map(
1926
2009
  (item3, index) => item3 === "ellipsis" ? (
1927
2010
  // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render
1928
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
1929
- ) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2011
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
2012
+ ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1930
2013
  "button",
1931
2014
  {
1932
2015
  type: "button",
@@ -1938,7 +2021,7 @@ var Pagination = (0, import_react48.forwardRef)(function Pagination2({ count, pa
1938
2021
  item3
1939
2022
  )
1940
2023
  ),
1941
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2024
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
1942
2025
  "button",
1943
2026
  {
1944
2027
  type: "button",
@@ -1946,17 +2029,17 @@ var Pagination = (0, import_react48.forwardRef)(function Pagination2({ count, pa
1946
2029
  "aria-label": "Next page",
1947
2030
  disabled: current2 >= total,
1948
2031
  onClick: () => go(current2 + 1),
1949
- children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronRightIcon, { size: 18 })
2032
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ChevronRightIcon, { size: 18 })
1950
2033
  }
1951
2034
  )
1952
2035
  ] });
1953
2036
  });
1954
2037
 
1955
2038
  // src/components/stepper/index.tsx
1956
- var import_react50 = require("react");
2039
+ var import_react52 = require("react");
1957
2040
 
1958
2041
  // src/components/stepper/use-styles.ts
1959
- var import_react49 = require("react");
2042
+ var import_react51 = require("react");
1960
2043
 
1961
2044
  // src/components/stepper/use-styles.css.ts
1962
2045
  var connector = "use-styles_connector__79pt4e7";
@@ -1971,7 +2054,7 @@ var step = "use-styles_step__79pt4e1";
1971
2054
  // src/components/stepper/use-styles.ts
1972
2055
  function useStyles23({ className }) {
1973
2056
  const { themeClass } = useTheme();
1974
- return (0, import_react49.useMemo)(() => {
2057
+ return (0, import_react51.useMemo)(() => {
1975
2058
  const root24 = [themeClass, root18, className].filter(Boolean).join(" ");
1976
2059
  const markerFor = (state) => [
1977
2060
  marker,
@@ -1984,30 +2067,30 @@ function useStyles23({ className }) {
1984
2067
  }
1985
2068
 
1986
2069
  // src/components/stepper/index.tsx
1987
- var import_jsx_runtime37 = require("react/jsx-runtime");
1988
- var Stepper = (0, import_react50.forwardRef)(function Stepper2({ steps, active: active2 = 0, className, ...rest }, ref) {
2070
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2071
+ var Stepper = (0, import_react52.forwardRef)(function Stepper2({ steps, active: active2 = 0, className, ...rest }, ref) {
1989
2072
  const { root: root24, step: step2, connector: connector2, markerFor, labelFor } = useStyles23({ className });
1990
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { ref, className: root24, ...rest, children: steps.map((s, index) => {
2073
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { ref, className: root24, ...rest, children: steps.map((s, index) => {
1991
2074
  const state = index < active2 ? "done" : index === active2 ? "active" : "upcoming";
1992
2075
  const isActive = state === "active";
1993
2076
  return (
1994
2077
  // biome-ignore lint/suspicious/noArrayIndexKey: steps are a static, ordered list with no stable id.
1995
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react50.Fragment, { children: [
1996
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: step2, "aria-current": isActive ? "step" : void 0, children: [
1997
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CheckIcon, { size: 14 }) : index + 1 }),
1998
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: labelFor(isActive), children: s.label })
2078
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_react52.Fragment, { children: [
2079
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: step2, "aria-current": isActive ? "step" : void 0, children: [
2080
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(CheckIcon, { size: 14 }) : index + 1 }),
2081
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: labelFor(isActive), children: s.label })
1999
2082
  ] }),
2000
- index < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { "data-part": "connector", className: connector2 })
2083
+ index < steps.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "data-part": "connector", className: connector2 })
2001
2084
  ] }, index)
2002
2085
  );
2003
2086
  }) });
2004
2087
  });
2005
2088
 
2006
2089
  // src/components/tabs/index.tsx
2007
- var import_react52 = require("react");
2090
+ var import_react54 = require("react");
2008
2091
 
2009
2092
  // src/components/tabs/use-styles.ts
2010
- var import_react51 = require("react");
2093
+ var import_react53 = require("react");
2011
2094
 
2012
2095
  // src/components/tabs/use-styles.css.ts
2013
2096
  var panel2 = "use-styles_panel__1l4m7t43";
@@ -2018,7 +2101,7 @@ var tabActive = "use-styles_tabActive__1l4m7t42";
2018
2101
  // src/components/tabs/use-styles.ts
2019
2102
  function useStyles24() {
2020
2103
  const { themeClass } = useTheme();
2021
- return (0, import_react51.useMemo)(() => {
2104
+ return (0, import_react53.useMemo)(() => {
2022
2105
  const root24 = [themeClass, root19].filter(Boolean).join(" ");
2023
2106
  const tabClass = (active2) => [tab, active2 && tabActive].filter(Boolean).join(" ");
2024
2107
  return { root: root24, tab, tabClass, panel: panel2 };
@@ -2026,11 +2109,11 @@ function useStyles24() {
2026
2109
  }
2027
2110
 
2028
2111
  // src/components/tabs/index.tsx
2029
- var import_jsx_runtime38 = require("react/jsx-runtime");
2030
- var Tabs = (0, import_react52.forwardRef)(function Tabs2({ items, value, onChange, ...rest }, ref) {
2112
+ var import_jsx_runtime39 = require("react/jsx-runtime");
2113
+ var Tabs = (0, import_react54.forwardRef)(function Tabs2({ items, value, onChange, ...rest }, ref) {
2031
2114
  const { root: root24, tabClass, panel: panel3 } = useStyles24();
2032
- const baseId = (0, import_react52.useId)();
2033
- const tabRefs = (0, import_react52.useRef)([]);
2115
+ const baseId = (0, import_react54.useId)();
2116
+ const tabRefs = (0, import_react54.useRef)([]);
2034
2117
  const hasPanels = items.some((item3) => item3.content !== void 0);
2035
2118
  const activeIndex = items.findIndex((item3) => item3.value === value);
2036
2119
  const tabId = (v) => `${baseId}-tab-${v}`;
@@ -2062,11 +2145,11 @@ var Tabs = (0, import_react52.forwardRef)(function Tabs2({ items, value, onChang
2062
2145
  break;
2063
2146
  }
2064
2147
  };
2065
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
2066
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { ref, role: "tablist", className: root24, ...rest, children: items.map((item3, index) => {
2148
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
2149
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { ref, role: "tablist", className: root24, ...rest, children: items.map((item3, index) => {
2067
2150
  const active2 = item3.value === value;
2068
2151
  const tabbable = active2 || activeIndex === -1 && index === 0;
2069
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2152
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2070
2153
  "button",
2071
2154
  {
2072
2155
  ref: (el) => {
@@ -2086,7 +2169,7 @@ var Tabs = (0, import_react52.forwardRef)(function Tabs2({ items, value, onChang
2086
2169
  item3.value
2087
2170
  );
2088
2171
  }) }),
2089
- hasPanels && items.map((item3) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2172
+ hasPanels && items.map((item3) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2090
2173
  "div",
2091
2174
  {
2092
2175
  role: "tabpanel",
@@ -2103,10 +2186,10 @@ var Tabs = (0, import_react52.forwardRef)(function Tabs2({ items, value, onChang
2103
2186
  });
2104
2187
 
2105
2188
  // src/components/menu/index.tsx
2106
- var import_react54 = require("react");
2189
+ var import_react56 = require("react");
2107
2190
 
2108
2191
  // src/components/menu/use-styles.ts
2109
- var import_react53 = require("react");
2192
+ var import_react55 = require("react");
2110
2193
 
2111
2194
  // src/components/menu/use-styles.css.ts
2112
2195
  var danger = "use-styles_danger__1uyxaj3";
@@ -2117,7 +2200,7 @@ var wrapper3 = "use-styles_wrapper__1uyxaj0";
2117
2200
  // src/components/menu/use-styles.ts
2118
2201
  function useStyles25() {
2119
2202
  const { themeClass } = useTheme();
2120
- return (0, import_react53.useMemo)(
2203
+ return (0, import_react55.useMemo)(
2121
2204
  () => ({
2122
2205
  wrapper: [themeClass, wrapper3].filter(Boolean).join(" "),
2123
2206
  list,
@@ -2129,22 +2212,23 @@ function useStyles25() {
2129
2212
  }
2130
2213
 
2131
2214
  // src/components/menu/index.tsx
2132
- var import_jsx_runtime39 = require("react/jsx-runtime");
2215
+ var import_jsx_runtime40 = require("react/jsx-runtime");
2133
2216
  function assignRef(ref, value) {
2134
2217
  if (typeof ref === "function") ref(value);
2135
2218
  else if (ref) ref.current = value;
2136
2219
  }
2137
- var Menu = (0, import_react54.forwardRef)(function Menu2({ trigger: trigger2, items }, ref) {
2220
+ var Menu = (0, import_react56.forwardRef)(function Menu2({ trigger: trigger2, items, testId }, ref) {
2138
2221
  const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles25();
2139
- const [open, setOpen] = (0, import_react54.useState)(false);
2140
- const [alignEnd, setAlignEnd] = (0, import_react54.useState)(false);
2141
- const rootRef = (0, import_react54.useRef)(null);
2222
+ const { testId: rootTestId, slot } = useTestId("menu", testId);
2223
+ const [open, setOpen] = (0, import_react56.useState)(false);
2224
+ const [alignEnd, setAlignEnd] = (0, import_react56.useState)(false);
2225
+ const rootRef = (0, import_react56.useRef)(null);
2142
2226
  const setRootRef = (node) => {
2143
2227
  rootRef.current = node;
2144
2228
  assignRef(ref, node);
2145
2229
  };
2146
- const listRef = (0, import_react54.useRef)(null);
2147
- const triggerRef = (0, import_react54.useRef)(null);
2230
+ const listRef = (0, import_react56.useRef)(null);
2231
+ const triggerRef = (0, import_react56.useRef)(null);
2148
2232
  const getMenuItems = () => Array.from(listRef.current?.querySelectorAll('[role="menuitem"]') ?? []);
2149
2233
  const focusItemAt = (index) => {
2150
2234
  const menuItems = getMenuItems();
@@ -2156,7 +2240,7 @@ var Menu = (0, import_react54.forwardRef)(function Menu2({ trigger: trigger2, it
2156
2240
  setOpen(false);
2157
2241
  triggerRef.current?.focus();
2158
2242
  };
2159
- (0, import_react54.useLayoutEffect)(() => {
2243
+ (0, import_react56.useLayoutEffect)(() => {
2160
2244
  if (!open) {
2161
2245
  setAlignEnd(false);
2162
2246
  return;
@@ -2168,7 +2252,7 @@ var Menu = (0, import_react54.forwardRef)(function Menu2({ trigger: trigger2, it
2168
2252
  const viewport = document.documentElement.clientWidth;
2169
2253
  setAlignEnd(rootLeft + listEl.offsetWidth > viewport);
2170
2254
  }, [open]);
2171
- (0, import_react54.useEffect)(() => {
2255
+ (0, import_react56.useEffect)(() => {
2172
2256
  if (!open) return;
2173
2257
  listRef.current?.querySelector('[role="menuitem"]')?.focus();
2174
2258
  const onDocMouseDown = (event) => {
@@ -2224,7 +2308,7 @@ var Menu = (0, import_react54.forwardRef)(function Menu2({ trigger: trigger2, it
2224
2308
  triggerRef.current = node;
2225
2309
  assignRef(consumerRef, node);
2226
2310
  };
2227
- const clonedTrigger = (0, import_react54.cloneElement)(trigger2, {
2311
+ const clonedTrigger = (0, import_react56.cloneElement)(trigger2, {
2228
2312
  ref: mergedTriggerRef,
2229
2313
  "aria-haspopup": "menu",
2230
2314
  "aria-expanded": open,
@@ -2233,42 +2317,53 @@ var Menu = (0, import_react54.forwardRef)(function Menu2({ trigger: trigger2, it
2233
2317
  setOpen((prev) => !prev);
2234
2318
  }
2235
2319
  });
2236
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { ref: setRootRef, className: wrapper4, children: [
2237
- clonedTrigger,
2238
- open && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2239
- "div",
2240
- {
2241
- ref: listRef,
2242
- role: "menu",
2243
- className: list2,
2244
- "data-align": alignEnd ? "end" : "start",
2245
- onKeyDown: onMenuKeyDown,
2246
- children: items.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
2247
- "button",
2320
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2321
+ "div",
2322
+ {
2323
+ ref: setRootRef,
2324
+ className: wrapper4,
2325
+ "data-testid": rootTestId,
2326
+ "data-state": open ? "open" : "closed",
2327
+ children: [
2328
+ clonedTrigger,
2329
+ open && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2330
+ "div",
2248
2331
  {
2249
- type: "button",
2250
- role: "menuitem",
2251
- tabIndex: -1,
2252
- className: entry.danger ? dangerItem : item3,
2253
- onClick: () => {
2254
- entry.onClick?.();
2255
- setOpen(false);
2256
- },
2257
- children: entry.label
2258
- },
2259
- index
2260
- ))
2261
- }
2262
- )
2263
- ] });
2332
+ ref: listRef,
2333
+ role: "menu",
2334
+ className: list2,
2335
+ "data-align": alignEnd ? "end" : "start",
2336
+ "data-testid": slot("list"),
2337
+ onKeyDown: onMenuKeyDown,
2338
+ children: items.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2339
+ "button",
2340
+ {
2341
+ type: "button",
2342
+ role: "menuitem",
2343
+ tabIndex: -1,
2344
+ className: entry.danger ? dangerItem : item3,
2345
+ "data-testid": slot(`item-${index}`),
2346
+ onClick: () => {
2347
+ entry.onClick?.();
2348
+ setOpen(false);
2349
+ },
2350
+ children: entry.label
2351
+ },
2352
+ index
2353
+ ))
2354
+ }
2355
+ )
2356
+ ]
2357
+ }
2358
+ );
2264
2359
  });
2265
2360
 
2266
2361
  // src/components/dialog/index.tsx
2267
- var import_react56 = require("react");
2362
+ var import_react58 = require("react");
2268
2363
  var import_react_dom = require("react-dom");
2269
2364
 
2270
2365
  // src/components/dialog/use-styles.ts
2271
- var import_react55 = require("react");
2366
+ var import_react57 = require("react");
2272
2367
 
2273
2368
  // src/components/dialog/use-styles.css.ts
2274
2369
  var actions = "use-styles_actions__5tstu83";
@@ -2279,7 +2374,7 @@ var surface = "use-styles_surface__5tstu81";
2279
2374
  // src/components/dialog/use-styles.ts
2280
2375
  function useStyles26() {
2281
2376
  const { themeClass } = useTheme();
2282
- return (0, import_react55.useMemo)(
2377
+ return (0, import_react57.useMemo)(
2283
2378
  () => ({
2284
2379
  overlay: [themeClass, overlay].filter(Boolean).join(" "),
2285
2380
  surface,
@@ -2291,23 +2386,24 @@ function useStyles26() {
2291
2386
  }
2292
2387
 
2293
2388
  // src/components/dialog/index.tsx
2294
- var import_jsx_runtime40 = require("react/jsx-runtime");
2389
+ var import_jsx_runtime41 = require("react/jsx-runtime");
2295
2390
  var FOCUSABLE = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
2296
2391
  function assignRef2(ref, value) {
2297
2392
  if (typeof ref === "function") ref(value);
2298
2393
  else if (ref) ref.current = value;
2299
2394
  }
2300
- var Dialog = (0, import_react56.forwardRef)(function Dialog2({ open, onClose, title, actions: actions3, children }, ref) {
2395
+ var Dialog = (0, import_react58.forwardRef)(function Dialog2({ open, onClose, title, actions: actions3, children, testId }, ref) {
2301
2396
  const { overlay: overlay2, surface: surface2, body: body3, actions: actionsClass } = useStyles26();
2302
- const surfaceRef = (0, import_react56.useRef)(null);
2397
+ const { testId: rootTestId, slot } = useTestId("dialog", testId);
2398
+ const surfaceRef = (0, import_react58.useRef)(null);
2303
2399
  const setSurfaceRef = (node) => {
2304
2400
  surfaceRef.current = node;
2305
2401
  assignRef2(ref, node);
2306
2402
  };
2307
- const previouslyFocused = (0, import_react56.useRef)(null);
2308
- const generatedId = (0, import_react56.useId)();
2403
+ const previouslyFocused = (0, import_react58.useRef)(null);
2404
+ const generatedId = (0, import_react58.useId)();
2309
2405
  const titleId = title != null ? generatedId : void 0;
2310
- (0, import_react56.useEffect)(() => {
2406
+ (0, import_react58.useEffect)(() => {
2311
2407
  if (!open) return;
2312
2408
  const onKeyDown = (event) => {
2313
2409
  if (event.key === "Escape") onClose();
@@ -2315,13 +2411,13 @@ var Dialog = (0, import_react56.forwardRef)(function Dialog2({ open, onClose, ti
2315
2411
  document.addEventListener("keydown", onKeyDown);
2316
2412
  return () => document.removeEventListener("keydown", onKeyDown);
2317
2413
  }, [open, onClose]);
2318
- (0, import_react56.useEffect)(() => {
2414
+ (0, import_react58.useEffect)(() => {
2319
2415
  if (!open) return;
2320
2416
  previouslyFocused.current = document.activeElement;
2321
2417
  surfaceRef.current?.focus();
2322
2418
  return () => previouslyFocused.current?.focus?.();
2323
2419
  }, [open]);
2324
- (0, import_react56.useEffect)(() => {
2420
+ (0, import_react58.useEffect)(() => {
2325
2421
  if (!open) return;
2326
2422
  const previousOverflow = document.body.style.overflow;
2327
2423
  document.body.style.overflow = "hidden";
@@ -2359,7 +2455,7 @@ var Dialog = (0, import_react56.forwardRef)(function Dialog2({ open, onClose, ti
2359
2455
  };
2360
2456
  return (0, import_react_dom.createPortal)(
2361
2457
  // biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.
2362
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: overlay2, "data-testid": "dialog-overlay", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
2458
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: overlay2, "data-testid": slot("overlay"), onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
2363
2459
  "div",
2364
2460
  {
2365
2461
  ref: setSurfaceRef,
@@ -2368,12 +2464,13 @@ var Dialog = (0, import_react56.forwardRef)(function Dialog2({ open, onClose, ti
2368
2464
  "aria-modal": "true",
2369
2465
  "aria-labelledby": titleId,
2370
2466
  tabIndex: -1,
2467
+ "data-testid": rootTestId,
2371
2468
  onClick: stop,
2372
2469
  onKeyDown: onSurfaceKeyDown,
2373
2470
  children: [
2374
- title != null && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Typography, { variant: "h3", as: "h2", id: titleId, children: title }),
2375
- children != null && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: body3, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Typography, { variant: "body", color: "fg2", children }) }),
2376
- actions3 != null && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: actionsClass, children: actions3 })
2471
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Typography, { variant: "h3", as: "h2", id: titleId, children: title }),
2472
+ children != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: body3, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Typography, { variant: "body", color: "fg2", children }) }),
2473
+ actions3 != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: actionsClass, children: actions3 })
2377
2474
  ]
2378
2475
  }
2379
2476
  ) }),
@@ -2382,11 +2479,11 @@ var Dialog = (0, import_react56.forwardRef)(function Dialog2({ open, onClose, ti
2382
2479
  });
2383
2480
 
2384
2481
  // src/components/snackbar/index.tsx
2385
- var import_react58 = require("react");
2482
+ var import_react60 = require("react");
2386
2483
  var import_react_dom2 = require("react-dom");
2387
2484
 
2388
2485
  // src/components/snackbar/use-styles.ts
2389
- var import_react57 = require("react");
2486
+ var import_react59 = require("react");
2390
2487
 
2391
2488
  // src/components/snackbar/use-styles.css.ts
2392
2489
  var closeBtn = "use-styles_closeBtn__ihzsep2";
@@ -2396,7 +2493,7 @@ var root20 = "use-styles_root__ihzsep0 surfaces_inkySurface__1qa7atn2";
2396
2493
  // src/components/snackbar/use-styles.ts
2397
2494
  function useStyles27() {
2398
2495
  const { themeClass } = useTheme();
2399
- return (0, import_react57.useMemo)(
2496
+ return (0, import_react59.useMemo)(
2400
2497
  () => ({
2401
2498
  root: [themeClass, root20].filter(Boolean).join(" "),
2402
2499
  message,
@@ -2407,25 +2504,25 @@ function useStyles27() {
2407
2504
  }
2408
2505
 
2409
2506
  // src/components/snackbar/index.tsx
2410
- var import_jsx_runtime41 = require("react/jsx-runtime");
2411
- var Snackbar = (0, import_react58.forwardRef)(function Snackbar2({ open, message: message2, action, onClose }, ref) {
2507
+ var import_jsx_runtime42 = require("react/jsx-runtime");
2508
+ var Snackbar = (0, import_react60.forwardRef)(function Snackbar2({ open, message: message2, action, onClose }, ref) {
2412
2509
  const { root: root24, message: messageClass, closeBtn: closeBtn2 } = useStyles27();
2413
2510
  if (!open || typeof document === "undefined") return null;
2414
2511
  return (0, import_react_dom2.createPortal)(
2415
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { ref, role: "status", className: root24, children: [
2416
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: messageClass, children: message2 }),
2512
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { ref, role: "status", className: root24, children: [
2513
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: messageClass, children: message2 }),
2417
2514
  action,
2418
- onClose && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(XIcon, { size: 18 }) })
2515
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(XIcon, { size: 18 }) })
2419
2516
  ] }),
2420
2517
  document.body
2421
2518
  );
2422
2519
  });
2423
2520
 
2424
2521
  // src/components/table/index.tsx
2425
- var import_react60 = require("react");
2522
+ var import_react62 = require("react");
2426
2523
 
2427
2524
  // src/components/table/use-styles.ts
2428
- var import_react59 = require("react");
2525
+ var import_react61 = require("react");
2429
2526
 
2430
2527
  // src/components/table/use-styles.css.ts
2431
2528
  var alignRight = "use-styles_alignRight__1n2cz6i3";
@@ -2437,7 +2534,7 @@ var th = "use-styles_th__1n2cz6i1";
2437
2534
  // src/components/table/use-styles.ts
2438
2535
  function useStyles28({ className }) {
2439
2536
  const { themeClass } = useTheme();
2440
- const root24 = (0, import_react59.useMemo)(
2537
+ const root24 = (0, import_react61.useMemo)(
2441
2538
  () => [themeClass, root21, className].filter(Boolean).join(" "),
2442
2539
  [themeClass, className]
2443
2540
  );
@@ -2451,26 +2548,26 @@ function useStyles28({ className }) {
2451
2548
  }
2452
2549
 
2453
2550
  // src/components/table/index.tsx
2454
- var import_jsx_runtime42 = require("react/jsx-runtime");
2551
+ var import_jsx_runtime43 = require("react/jsx-runtime");
2455
2552
  function TableInner({ columns, rows, getRowKey, className, caption: caption2, ...rest }, ref) {
2456
2553
  const { root: root24, th: th2, td: td2, alignRight: alignRight2, caption: captionClass } = useStyles28({ className });
2457
2554
  const headClass = (column) => column.align === "right" ? `${th2} ${alignRight2}` : th2;
2458
2555
  const cellClass = (column) => column.align === "right" ? `${td2} ${alignRight2}` : td2;
2459
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("table", { ref, className: root24, ...rest, children: [
2460
- caption2 != null && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("caption", { className: captionClass, children: caption2 }),
2461
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("tr", { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("th", { scope: "col", className: headClass(column), children: column.header }, column.key)) }) }),
2462
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("tbody", { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("tr", { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
2556
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("table", { ref, className: root24, ...rest, children: [
2557
+ caption2 != null && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("caption", { className: captionClass, children: caption2 }),
2558
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tr", { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("th", { scope: "col", className: headClass(column), children: column.header }, column.key)) }) }),
2559
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tbody", { children: rows.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("tr", { children: columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
2463
2560
  ] });
2464
2561
  }
2465
- var TableForwarded = (0, import_react60.forwardRef)(TableInner);
2562
+ var TableForwarded = (0, import_react62.forwardRef)(TableInner);
2466
2563
  TableForwarded.displayName = "Table";
2467
2564
  var Table = TableForwarded;
2468
2565
 
2469
2566
  // src/components/app-bar/index.tsx
2470
- var import_react62 = require("react");
2567
+ var import_react64 = require("react");
2471
2568
 
2472
2569
  // src/components/app-bar/use-styles.ts
2473
- var import_react61 = require("react");
2570
+ var import_react63 = require("react");
2474
2571
 
2475
2572
  // src/components/app-bar/use-styles.css.ts
2476
2573
  var actions2 = "use-styles_actions__1h133nh2";
@@ -2480,7 +2577,7 @@ var root22 = "use-styles_root__1h133nh0";
2480
2577
  // src/components/app-bar/use-styles.ts
2481
2578
  function useStyles29({ className }) {
2482
2579
  const { themeClass } = useTheme();
2483
- const root24 = (0, import_react61.useMemo)(
2580
+ const root24 = (0, import_react63.useMemo)(
2484
2581
  () => [themeClass, root22, className].filter(Boolean).join(" "),
2485
2582
  [themeClass, className]
2486
2583
  );
@@ -2488,21 +2585,21 @@ function useStyles29({ className }) {
2488
2585
  }
2489
2586
 
2490
2587
  // src/components/app-bar/index.tsx
2491
- var import_jsx_runtime43 = require("react/jsx-runtime");
2492
- var AppBar = (0, import_react62.forwardRef)(function AppBar2({ brand: brand2, actions: actions3, className, children, ...rest }, ref) {
2588
+ var import_jsx_runtime44 = require("react/jsx-runtime");
2589
+ var AppBar = (0, import_react64.forwardRef)(function AppBar2({ brand: brand2, actions: actions3, className, children, ...rest }, ref) {
2493
2590
  const styles = useStyles29({ className });
2494
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("header", { ref, className: styles.root, ...rest, children: [
2495
- brand2 !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: styles.brand, children: brand2 }) : null,
2591
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("header", { ref, className: styles.root, ...rest, children: [
2592
+ brand2 !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: styles.brand, children: brand2 }) : null,
2496
2593
  children,
2497
- actions3 !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: styles.actions, children: actions3 }) : null
2594
+ actions3 !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: styles.actions, children: actions3 }) : null
2498
2595
  ] });
2499
2596
  });
2500
2597
 
2501
2598
  // src/components/list-item/index.tsx
2502
- var import_react64 = require("react");
2599
+ var import_react66 = require("react");
2503
2600
 
2504
2601
  // src/components/list-item/use-styles.ts
2505
- var import_react63 = require("react");
2602
+ var import_react65 = require("react");
2506
2603
 
2507
2604
  // src/components/list-item/use-styles.css.ts
2508
2605
  var content2 = "use-styles_content__kbreq13";
@@ -2517,7 +2614,7 @@ function useStyles30({
2517
2614
  className
2518
2615
  }) {
2519
2616
  const { themeClass } = useTheme();
2520
- const root24 = (0, import_react63.useMemo)(
2617
+ const root24 = (0, import_react65.useMemo)(
2521
2618
  () => [themeClass, root23, selected3 && selected2, className].filter(Boolean).join(" "),
2522
2619
  [themeClass, selected3, className]
2523
2620
  );
@@ -2525,20 +2622,20 @@ function useStyles30({
2525
2622
  }
2526
2623
 
2527
2624
  // src/components/list-item/index.tsx
2528
- var import_jsx_runtime44 = require("react/jsx-runtime");
2529
- var ListItem = (0, import_react64.forwardRef)(function ListItem2({ leading: leading2, trailing: trailing2, selected: selected3, className, children, ...rest }, ref) {
2625
+ var import_jsx_runtime45 = require("react/jsx-runtime");
2626
+ var ListItem = (0, import_react66.forwardRef)(function ListItem2({ leading: leading2, trailing: trailing2, selected: selected3, className, children, ...rest }, ref) {
2530
2627
  const styles = useStyles30({ selected: selected3, className });
2531
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { ref, className: styles.root, ...rest, children: [
2532
- leading2 != null && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: styles.leading, children: leading2 }),
2533
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: styles.content, children }),
2534
- trailing2 != null && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: styles.trailing, children: trailing2 })
2628
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { ref, className: styles.root, ...rest, children: [
2629
+ leading2 != null && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: styles.leading, children: leading2 }),
2630
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: styles.content, children }),
2631
+ trailing2 != null && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: styles.trailing, children: trailing2 })
2535
2632
  ] });
2536
2633
  });
2537
2634
 
2538
2635
  // src/components/icons/chevron-up/index.tsx
2539
- var import_jsx_runtime45 = require("react/jsx-runtime");
2636
+ var import_jsx_runtime46 = require("react/jsx-runtime");
2540
2637
  function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2541
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
2638
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2542
2639
  "svg",
2543
2640
  {
2544
2641
  xmlns: "http://www.w3.org/2000/svg",
@@ -2552,15 +2649,15 @@ function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2552
2649
  strokeLinejoin: "round",
2553
2650
  "aria-hidden": "true",
2554
2651
  ...rest,
2555
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("path", { d: "m18 15-6-6-6 6" })
2652
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { d: "m18 15-6-6-6 6" })
2556
2653
  }
2557
2654
  );
2558
2655
  }
2559
2656
 
2560
2657
  // src/components/icons/search/index.tsx
2561
- var import_jsx_runtime46 = require("react/jsx-runtime");
2658
+ var import_jsx_runtime47 = require("react/jsx-runtime");
2562
2659
  function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2563
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
2660
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2564
2661
  "svg",
2565
2662
  {
2566
2663
  xmlns: "http://www.w3.org/2000/svg",
@@ -2575,17 +2672,17 @@ function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2575
2672
  "aria-hidden": "true",
2576
2673
  ...rest,
2577
2674
  children: [
2578
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2579
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { d: "m21 21-4.3-4.3" })
2675
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
2676
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "m21 21-4.3-4.3" })
2580
2677
  ]
2581
2678
  }
2582
2679
  );
2583
2680
  }
2584
2681
 
2585
2682
  // src/components/icons/plus/index.tsx
2586
- var import_jsx_runtime47 = require("react/jsx-runtime");
2683
+ var import_jsx_runtime48 = require("react/jsx-runtime");
2587
2684
  function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2588
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
2685
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
2589
2686
  "svg",
2590
2687
  {
2591
2688
  xmlns: "http://www.w3.org/2000/svg",
@@ -2600,17 +2697,17 @@ function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2600
2697
  "aria-hidden": "true",
2601
2698
  ...rest,
2602
2699
  children: [
2603
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M5 12h14" }),
2604
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("path", { d: "M12 5v14" })
2700
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("path", { d: "M5 12h14" }),
2701
+ /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("path", { d: "M12 5v14" })
2605
2702
  ]
2606
2703
  }
2607
2704
  );
2608
2705
  }
2609
2706
 
2610
2707
  // src/components/icons/minus/index.tsx
2611
- var import_jsx_runtime48 = require("react/jsx-runtime");
2708
+ var import_jsx_runtime49 = require("react/jsx-runtime");
2612
2709
  function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2613
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2710
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2614
2711
  "svg",
2615
2712
  {
2616
2713
  xmlns: "http://www.w3.org/2000/svg",
@@ -2624,15 +2721,15 @@ function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2624
2721
  strokeLinejoin: "round",
2625
2722
  "aria-hidden": "true",
2626
2723
  ...rest,
2627
- children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("path", { d: "M5 12h14" })
2724
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("path", { d: "M5 12h14" })
2628
2725
  }
2629
2726
  );
2630
2727
  }
2631
2728
 
2632
2729
  // src/components/icons/more-horizontal/index.tsx
2633
- var import_jsx_runtime49 = require("react/jsx-runtime");
2730
+ var import_jsx_runtime50 = require("react/jsx-runtime");
2634
2731
  function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2635
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
2732
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
2636
2733
  "svg",
2637
2734
  {
2638
2735
  xmlns: "http://www.w3.org/2000/svg",
@@ -2647,9 +2744,9 @@ function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2647
2744
  "aria-hidden": "true",
2648
2745
  ...rest,
2649
2746
  children: [
2650
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("circle", { cx: "12", cy: "12", r: "1" }),
2651
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("circle", { cx: "19", cy: "12", r: "1" }),
2652
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("circle", { cx: "5", cy: "12", r: "1" })
2747
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("circle", { cx: "12", cy: "12", r: "1" }),
2748
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("circle", { cx: "19", cy: "12", r: "1" }),
2749
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("circle", { cx: "5", cy: "12", r: "1" })
2653
2750
  ]
2654
2751
  }
2655
2752
  );
@@ -2698,6 +2795,7 @@ function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2698
2795
  Switch,
2699
2796
  Table,
2700
2797
  Tabs,
2798
+ TestIdProvider,
2701
2799
  TextField,
2702
2800
  ThemeProvider,
2703
2801
  Tooltip,
@@ -2711,6 +2809,7 @@ function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2711
2809
  theme,
2712
2810
  themes,
2713
2811
  usePrevious,
2812
+ useTestId,
2714
2813
  useTheme,
2715
2814
  useToggle
2716
2815
  });