@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.js CHANGED
@@ -211,8 +211,54 @@ var Typography = TypographyForwarded;
211
211
  // src/components/button/index.tsx
212
212
  import { forwardRef as forwardRef3 } from "react";
213
213
 
214
+ // src/testing/states.ts
215
+ function states(map) {
216
+ const active2 = Object.keys(map).filter((key) => map[key]);
217
+ return active2.length > 0 ? active2.join(" ") : void 0;
218
+ }
219
+
220
+ // src/testing/use-test-id.ts
221
+ import { useMemo as useMemo4 } from "react";
222
+
223
+ // src/testing/compose.ts
224
+ function normalizeSegment(seg) {
225
+ return seg.trim().replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
226
+ }
227
+ function composeTestId(parts) {
228
+ return parts.filter((p) => typeof p === "string" && p.trim() !== "").map(normalizeSegment).join("__");
229
+ }
230
+
231
+ // src/testing/context/test-id-context.tsx
232
+ import { createContext as createContext2, useContext as useContext2, useMemo as useMemo3 } from "react";
233
+ import { jsx as jsx4 } from "react/jsx-runtime";
234
+ var TestIdContext = createContext2([]);
235
+ function TestIdProvider({ context, children }) {
236
+ const parent = useContext2(TestIdContext);
237
+ const value = useMemo3(
238
+ () => [...parent, normalizeSegment(context)].filter((seg) => seg !== ""),
239
+ [parent, context]
240
+ );
241
+ return /* @__PURE__ */ jsx4(TestIdContext.Provider, { value, children });
242
+ }
243
+ function useTestIdContext() {
244
+ return useContext2(TestIdContext);
245
+ }
246
+
247
+ // src/testing/use-test-id.ts
248
+ function useTestId(type, ownTestId) {
249
+ const ctx = useTestIdContext();
250
+ const testId = composeTestId([type, ...ctx, ownTestId]);
251
+ return useMemo4(
252
+ () => ({
253
+ testId,
254
+ slot: (name) => `${testId}__${normalizeSegment(name)}`
255
+ }),
256
+ [testId]
257
+ );
258
+ }
259
+
214
260
  // src/components/button/use-styles.ts
215
- import { useMemo as useMemo3 } from "react";
261
+ import { useMemo as useMemo5 } from "react";
216
262
 
217
263
  // src/components/button/use-styles.css.ts
218
264
  var full = "use-styles_full__1pbtill4";
@@ -233,7 +279,7 @@ function useStyles3({
233
279
  className
234
280
  }) {
235
281
  const { themeClass } = useTheme();
236
- const container = useMemo3(
282
+ const container = useMemo5(
237
283
  () => [
238
284
  themeClass,
239
285
  root,
@@ -248,7 +294,7 @@ function useStyles3({
248
294
  }
249
295
 
250
296
  // src/components/button/index.tsx
251
- import { jsx as jsx4, jsxs } from "react/jsx-runtime";
297
+ import { jsx as jsx5, jsxs } from "react/jsx-runtime";
252
298
  var ICON_SIZE = { sm: 14, md: 16, lg: 18 };
253
299
  var Button = forwardRef3(function Button2({
254
300
  variant: variant2,
@@ -259,23 +305,36 @@ var Button = forwardRef3(function Button2({
259
305
  full: full2,
260
306
  className,
261
307
  type = "button",
308
+ testId,
262
309
  children,
263
310
  ...rest
264
311
  }, ref) {
265
312
  const { container } = useStyles3({ variant: variant2, tone: tone4, size: size3, full: full2, className });
313
+ const { testId: dataTestId } = useTestId("button", testId);
266
314
  const iconSize = ICON_SIZE[size3];
267
- return /* @__PURE__ */ jsxs("button", { ref, type, className: container, ...rest, children: [
268
- StartIcon && /* @__PURE__ */ jsx4(StartIcon, { size: iconSize }),
269
- children,
270
- EndIcon && /* @__PURE__ */ jsx4(EndIcon, { size: iconSize })
271
- ] });
315
+ return /* @__PURE__ */ jsxs(
316
+ "button",
317
+ {
318
+ ref,
319
+ type,
320
+ className: container,
321
+ "data-testid": dataTestId,
322
+ "data-state": states({ disabled: rest.disabled }),
323
+ ...rest,
324
+ children: [
325
+ StartIcon && /* @__PURE__ */ jsx5(StartIcon, { size: iconSize }),
326
+ children,
327
+ EndIcon && /* @__PURE__ */ jsx5(EndIcon, { size: iconSize })
328
+ ]
329
+ }
330
+ );
272
331
  });
273
332
 
274
333
  // src/components/divider/index.tsx
275
334
  import { forwardRef as forwardRef4 } from "react";
276
335
 
277
336
  // src/components/divider/use-styles.ts
278
- import { useMemo as useMemo4 } from "react";
337
+ import { useMemo as useMemo6 } from "react";
279
338
 
280
339
  // src/components/divider/use-styles.css.ts
281
340
  var horizontal = "use-styles_horizontal__1n7v7yj1";
@@ -288,7 +347,7 @@ var vertical = "use-styles_vertical__1n7v7yj2";
288
347
  // src/components/divider/use-styles.ts
289
348
  function useStyles4({ vertical: vertical2, hasLabel }) {
290
349
  const { themeClass } = useTheme();
291
- const root24 = useMemo4(
350
+ const root24 = useMemo6(
292
351
  () => [
293
352
  themeClass,
294
353
  root2,
@@ -300,25 +359,25 @@ function useStyles4({ vertical: vertical2, hasLabel }) {
300
359
  }
301
360
 
302
361
  // src/components/divider/index.tsx
303
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
362
+ import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
304
363
  var Divider = forwardRef4(function Divider2({ vertical: vertical2, label: label7, ...rest }, ref) {
305
364
  const hasLabel = label7 != null;
306
365
  const { root: root24, line: line2, label: labelClass } = useStyles4({ vertical: vertical2, hasLabel });
307
366
  if (hasLabel) {
308
367
  return /* @__PURE__ */ jsxs2("div", { ref, role: "separator", className: root24, ...rest, children: [
309
- /* @__PURE__ */ jsx5("span", { className: line2 }),
310
- /* @__PURE__ */ jsx5("span", { className: labelClass, children: label7 }),
311
- /* @__PURE__ */ jsx5("span", { className: line2 })
368
+ /* @__PURE__ */ jsx6("span", { className: line2 }),
369
+ /* @__PURE__ */ jsx6("span", { className: labelClass, children: label7 }),
370
+ /* @__PURE__ */ jsx6("span", { className: line2 })
312
371
  ] });
313
372
  }
314
- return /* @__PURE__ */ jsx5("div", { ref, role: "separator", className: root24, ...rest });
373
+ return /* @__PURE__ */ jsx6("div", { ref, role: "separator", className: root24, ...rest });
315
374
  });
316
375
 
317
376
  // src/components/avatar/index.tsx
318
377
  import { forwardRef as forwardRef5 } from "react";
319
378
 
320
379
  // src/components/avatar/use-styles.ts
321
- import { useMemo as useMemo5 } from "react";
380
+ import { useMemo as useMemo7 } from "react";
322
381
 
323
382
  // src/components/avatar/use-styles.css.ts
324
383
  var root3 = "use-styles_root__1mn1rmu0";
@@ -332,7 +391,7 @@ function useStyles5({
332
391
  className
333
392
  }) {
334
393
  const { themeClass } = useTheme();
335
- const root24 = useMemo5(
394
+ const root24 = useMemo7(
336
395
  () => [
337
396
  themeClass,
338
397
  root3,
@@ -346,17 +405,17 @@ function useStyles5({
346
405
  }
347
406
 
348
407
  // src/components/avatar/index.tsx
349
- import { jsx as jsx6 } from "react/jsx-runtime";
408
+ import { jsx as jsx7 } from "react/jsx-runtime";
350
409
  var Avatar = forwardRef5(function Avatar2({ size: size3, filled, className, children, ...rest }, ref) {
351
410
  const { root: root24 } = useStyles5({ size: size3, filled, className });
352
- return /* @__PURE__ */ jsx6("span", { ref, className: root24, ...rest, children });
411
+ return /* @__PURE__ */ jsx7("span", { ref, className: root24, ...rest, children });
353
412
  });
354
413
 
355
414
  // src/components/badge/index.tsx
356
415
  import { forwardRef as forwardRef6 } from "react";
357
416
 
358
417
  // src/components/badge/use-styles.ts
359
- import { useMemo as useMemo6 } from "react";
418
+ import { useMemo as useMemo8 } from "react";
360
419
 
361
420
  // src/components/badge/use-styles.css.ts
362
421
  var dot = "use-styles_dot__1wpei6p1";
@@ -369,21 +428,21 @@ function useStyles6({
369
428
  className
370
429
  }) {
371
430
  const { themeClass } = useTheme();
372
- const root24 = useMemo6(
431
+ const root24 = useMemo8(
373
432
  () => [themeClass, root4, className].filter(Boolean).join(" "),
374
433
  [themeClass, className]
375
434
  );
376
- const dot3 = useMemo6(() => [dot, tone2[tone4]].join(" "), [tone4]);
435
+ const dot3 = useMemo8(() => [dot, tone2[tone4]].join(" "), [tone4]);
377
436
  return { root: root24, dot: dot3 };
378
437
  }
379
438
 
380
439
  // src/components/badge/index.tsx
381
- import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
440
+ import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
382
441
  var Badge = forwardRef6(function Badge2({ count, tone: tone4, className, children, ...rest }, ref) {
383
442
  const { root: root24, dot: dot3 } = useStyles6({ tone: tone4, className });
384
443
  return /* @__PURE__ */ jsxs3("span", { ref, className: root24, ...rest, children: [
385
444
  children,
386
- count != null && /* @__PURE__ */ jsx7("span", { className: dot3, children: count })
445
+ count != null && /* @__PURE__ */ jsx8("span", { className: dot3, children: count })
387
446
  ] });
388
447
  });
389
448
 
@@ -391,7 +450,7 @@ var Badge = forwardRef6(function Badge2({ count, tone: tone4, className, childre
391
450
  import { forwardRef as forwardRef7 } from "react";
392
451
 
393
452
  // src/components/progress/use-styles.ts
394
- import { useMemo as useMemo7 } from "react";
453
+ import { useMemo as useMemo9 } from "react";
395
454
 
396
455
  // src/components/progress/use-styles.css.ts
397
456
  var bar = "use-styles_bar__kbop7v3";
@@ -407,7 +466,7 @@ function useStyles7({
407
466
  }) {
408
467
  const { themeClass } = useTheme();
409
468
  const indeterminate2 = value === void 0;
410
- return useMemo7(() => {
469
+ return useMemo9(() => {
411
470
  const root24 = (...classes) => [themeClass, ...classes, className].filter(Boolean).join(" ");
412
471
  if (variant2 === "circular") {
413
472
  return { track: "", bar: "", spinner: root24(spinner) };
@@ -421,12 +480,12 @@ function useStyles7({
421
480
  }
422
481
 
423
482
  // src/components/progress/index.tsx
424
- import { jsx as jsx8 } from "react/jsx-runtime";
483
+ import { jsx as jsx9 } from "react/jsx-runtime";
425
484
  var Progress = forwardRef7(function Progress2({ variant: variant2 = "linear", value, size: size3 = 20, className, ...rest }, ref) {
426
485
  const { track: track4, bar: bar2, spinner: spinner2 } = useStyles7({ variant: variant2, value, className });
427
486
  const indeterminate2 = value === void 0;
428
487
  if (variant2 === "circular") {
429
- return /* @__PURE__ */ jsx8(
488
+ return /* @__PURE__ */ jsx9(
430
489
  "span",
431
490
  {
432
491
  ref,
@@ -440,7 +499,7 @@ var Progress = forwardRef7(function Progress2({ variant: variant2 = "linear", va
440
499
  }
441
500
  );
442
501
  }
443
- return /* @__PURE__ */ jsx8(
502
+ return /* @__PURE__ */ jsx9(
444
503
  "div",
445
504
  {
446
505
  ref,
@@ -450,7 +509,7 @@ var Progress = forwardRef7(function Progress2({ variant: variant2 = "linear", va
450
509
  "aria-valuemin": indeterminate2 ? void 0 : 0,
451
510
  "aria-valuemax": indeterminate2 ? void 0 : 100,
452
511
  ...rest,
453
- children: /* @__PURE__ */ jsx8("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
512
+ children: /* @__PURE__ */ jsx9("div", { className: bar2, style: indeterminate2 ? void 0 : { width: `${value}%` } })
454
513
  }
455
514
  );
456
515
  });
@@ -459,7 +518,7 @@ var Progress = forwardRef7(function Progress2({ variant: variant2 = "linear", va
459
518
  import { forwardRef as forwardRef8 } from "react";
460
519
 
461
520
  // src/components/icons/x/index.tsx
462
- import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
521
+ import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
463
522
  function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
464
523
  return /* @__PURE__ */ jsxs4(
465
524
  "svg",
@@ -476,15 +535,15 @@ function XIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
476
535
  "aria-hidden": "true",
477
536
  ...rest,
478
537
  children: [
479
- /* @__PURE__ */ jsx9("path", { d: "M18 6 6 18" }),
480
- /* @__PURE__ */ jsx9("path", { d: "m6 6 12 12" })
538
+ /* @__PURE__ */ jsx10("path", { d: "M18 6 6 18" }),
539
+ /* @__PURE__ */ jsx10("path", { d: "m6 6 12 12" })
481
540
  ]
482
541
  }
483
542
  );
484
543
  }
485
544
 
486
545
  // src/components/chip/use-styles.ts
487
- import { useMemo as useMemo8 } from "react";
546
+ import { useMemo as useMemo10 } from "react";
488
547
 
489
548
  // src/components/chip/use-styles.css.ts
490
549
  var clickable = "use-styles_clickable__1axilf44";
@@ -500,7 +559,7 @@ function useStyles8({
500
559
  clickable: clickable2
501
560
  }) {
502
561
  const { themeClass } = useTheme();
503
- const root24 = useMemo8(
562
+ const root24 = useMemo10(
504
563
  () => [
505
564
  themeClass,
506
565
  root5,
@@ -513,7 +572,7 @@ function useStyles8({
513
572
  }
514
573
 
515
574
  // src/components/chip/index.tsx
516
- import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
575
+ import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
517
576
  var Chip = forwardRef8(function Chip2({ selected: selected3, tone: tone4, onDelete, onClick, children, ...rest }, ref) {
518
577
  const clickable2 = Boolean(onClick);
519
578
  const { root: root24, deleteBtn: deleteBtn2 } = useStyles8({ selected: selected3, tone: tone4, clickable: clickable2 });
@@ -523,7 +582,7 @@ var Chip = forwardRef8(function Chip2({ selected: selected3, tone: tone4, onDele
523
582
  };
524
583
  return /* @__PURE__ */ jsxs5("span", { ref, className: root24, onClick, ...rest, children: [
525
584
  children,
526
- onDelete && /* @__PURE__ */ jsx10("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ jsx10(XIcon, { size: 13 }) })
585
+ onDelete && /* @__PURE__ */ jsx11("button", { type: "button", className: deleteBtn2, "aria-label": "Remove", onClick: handleDelete, children: /* @__PURE__ */ jsx11(XIcon, { size: 13 }) })
527
586
  ] });
528
587
  });
529
588
 
@@ -531,9 +590,9 @@ var Chip = forwardRef8(function Chip2({ selected: selected3, tone: tone4, onDele
531
590
  import { forwardRef as forwardRef9 } from "react";
532
591
 
533
592
  // src/components/icons/check/index.tsx
534
- import { jsx as jsx11 } from "react/jsx-runtime";
593
+ import { jsx as jsx12 } from "react/jsx-runtime";
535
594
  function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
536
- return /* @__PURE__ */ jsx11(
595
+ return /* @__PURE__ */ jsx12(
537
596
  "svg",
538
597
  {
539
598
  xmlns: "http://www.w3.org/2000/svg",
@@ -547,13 +606,13 @@ function CheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
547
606
  strokeLinejoin: "round",
548
607
  "aria-hidden": "true",
549
608
  ...rest,
550
- children: /* @__PURE__ */ jsx11("path", { d: "M20 6 9 17l-5-5" })
609
+ children: /* @__PURE__ */ jsx12("path", { d: "M20 6 9 17l-5-5" })
551
610
  }
552
611
  );
553
612
  }
554
613
 
555
614
  // src/components/checkbox/use-styles.ts
556
- import { useMemo as useMemo9 } from "react";
615
+ import { useMemo as useMemo11 } from "react";
557
616
 
558
617
  // src/components/checkbox/use-styles.css.ts
559
618
  var box = "use-styles_box__9zoga91";
@@ -566,11 +625,11 @@ var root6 = "use-styles_root__9zoga90";
566
625
  // src/components/checkbox/use-styles.ts
567
626
  function useStyles9({ checked, disabled: disabled3 }) {
568
627
  const { themeClass } = useTheme();
569
- const root24 = useMemo9(
628
+ const root24 = useMemo11(
570
629
  () => [themeClass, root6, disabled3 && disabled].filter(Boolean).join(" "),
571
630
  [themeClass, disabled3]
572
631
  );
573
- const box2 = useMemo9(
632
+ const box2 = useMemo11(
574
633
  () => [box, checked && boxChecked].filter(Boolean).join(" "),
575
634
  [checked]
576
635
  );
@@ -578,7 +637,7 @@ function useStyles9({ checked, disabled: disabled3 }) {
578
637
  }
579
638
 
580
639
  // src/components/checkbox/index.tsx
581
- import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
640
+ import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
582
641
  var Checkbox = forwardRef9(function Checkbox2({ checked = false, onChange, label: label7, disabled: disabled3 = false, id, ...rest }, ref) {
583
642
  const { root: root24, input: input6, box: box2, check: check2 } = useStyles9({ checked, disabled: disabled3 });
584
643
  const handleChange = (e) => {
@@ -586,7 +645,7 @@ var Checkbox = forwardRef9(function Checkbox2({ checked = false, onChange, label
586
645
  onChange?.(e.target.checked);
587
646
  };
588
647
  return /* @__PURE__ */ jsxs6("label", { className: root24, children: [
589
- /* @__PURE__ */ jsx12(
648
+ /* @__PURE__ */ jsx13(
590
649
  "input",
591
650
  {
592
651
  ref,
@@ -599,7 +658,7 @@ var Checkbox = forwardRef9(function Checkbox2({ checked = false, onChange, label
599
658
  ...rest
600
659
  }
601
660
  ),
602
- /* @__PURE__ */ jsx12("span", { className: box2, children: checked && /* @__PURE__ */ jsx12(CheckIcon, { size: 12, className: check2 }) }),
661
+ /* @__PURE__ */ jsx13("span", { className: box2, children: checked && /* @__PURE__ */ jsx13(CheckIcon, { size: 12, className: check2 }) }),
603
662
  label7
604
663
  ] });
605
664
  });
@@ -608,7 +667,7 @@ var Checkbox = forwardRef9(function Checkbox2({ checked = false, onChange, label
608
667
  import { forwardRef as forwardRef10 } from "react";
609
668
 
610
669
  // src/components/radio/use-styles.ts
611
- import { useMemo as useMemo10 } from "react";
670
+ import { useMemo as useMemo12 } from "react";
612
671
 
613
672
  // src/components/radio/use-styles.css.ts
614
673
  var circle = "use-styles_circle__vy61b42";
@@ -624,7 +683,7 @@ function useStyles10({
624
683
  className
625
684
  }) {
626
685
  const { themeClass } = useTheme();
627
- const root24 = useMemo10(
686
+ const root24 = useMemo12(
628
687
  () => [themeClass, root7, disabled3 && disabled2, className].filter(Boolean).join(" "),
629
688
  [themeClass, disabled3, className]
630
689
  );
@@ -638,11 +697,11 @@ function useStyles10({
638
697
  }
639
698
 
640
699
  // src/components/radio/index.tsx
641
- import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
700
+ import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
642
701
  var Radio = forwardRef10(function Radio2({ checked, onChange, label: label7, name, value, disabled: disabled3, ...rest }, ref) {
643
702
  const { root: root24, input: input6, circle: circle2, dot: dot3, label: labelClass } = useStyles10({ disabled: disabled3 });
644
703
  return /* @__PURE__ */ jsxs7("label", { className: root24, children: [
645
- /* @__PURE__ */ jsx13(
704
+ /* @__PURE__ */ jsx14(
646
705
  "input",
647
706
  {
648
707
  ref,
@@ -656,8 +715,8 @@ var Radio = forwardRef10(function Radio2({ checked, onChange, label: label7, nam
656
715
  ...rest
657
716
  }
658
717
  ),
659
- /* @__PURE__ */ jsx13("span", { className: circle2, children: checked && /* @__PURE__ */ jsx13("span", { className: dot3 }) }),
660
- label7 != null && /* @__PURE__ */ jsx13("span", { className: labelClass, children: label7 })
718
+ /* @__PURE__ */ jsx14("span", { className: circle2, children: checked && /* @__PURE__ */ jsx14("span", { className: dot3 }) }),
719
+ label7 != null && /* @__PURE__ */ jsx14("span", { className: labelClass, children: label7 })
661
720
  ] });
662
721
  });
663
722
 
@@ -665,7 +724,7 @@ var Radio = forwardRef10(function Radio2({ checked, onChange, label: label7, nam
665
724
  import { forwardRef as forwardRef11 } from "react";
666
725
 
667
726
  // src/components/switch/use-styles.ts
668
- import { useMemo as useMemo11 } from "react";
727
+ import { useMemo as useMemo13 } from "react";
669
728
 
670
729
  // src/components/switch/use-styles.css.ts
671
730
  var input3 = "surfaces_srOnly__1qa7atn0";
@@ -679,7 +738,7 @@ var trackChecked = "use-styles_trackChecked__1r6kem72";
679
738
  // src/components/switch/use-styles.ts
680
739
  function useStyles11({ checked }) {
681
740
  const { themeClass } = useTheme();
682
- return useMemo11(
741
+ return useMemo13(
683
742
  () => ({
684
743
  root: [themeClass, root8].filter(Boolean).join(" "),
685
744
  input: input3,
@@ -692,11 +751,11 @@ function useStyles11({ checked }) {
692
751
  }
693
752
 
694
753
  // src/components/switch/index.tsx
695
- import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
754
+ import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
696
755
  var Switch = forwardRef11(function Switch2({ checked = false, onChange, label: label7, disabled: disabled3, ...rest }, ref) {
697
756
  const { root: root24, input: input6, track: track4, knob: knob2, label: labelClass } = useStyles11({ checked });
698
757
  return /* @__PURE__ */ jsxs8("label", { className: root24, children: [
699
- /* @__PURE__ */ jsx14(
758
+ /* @__PURE__ */ jsx15(
700
759
  "input",
701
760
  {
702
761
  ref,
@@ -713,8 +772,8 @@ var Switch = forwardRef11(function Switch2({ checked = false, onChange, label: l
713
772
  ...rest
714
773
  }
715
774
  ),
716
- /* @__PURE__ */ jsx14("span", { className: track4, children: /* @__PURE__ */ jsx14("span", { className: knob2 }) }),
717
- label7 != null && /* @__PURE__ */ jsx14("span", { className: labelClass, children: label7 })
775
+ /* @__PURE__ */ jsx15("span", { className: track4, children: /* @__PURE__ */ jsx15("span", { className: knob2 }) }),
776
+ label7 != null && /* @__PURE__ */ jsx15("span", { className: labelClass, children: label7 })
718
777
  ] });
719
778
  });
720
779
 
@@ -725,7 +784,7 @@ import { forwardRef as forwardRef13 } from "react";
725
784
  import { forwardRef as forwardRef12, useId } from "react";
726
785
 
727
786
  // src/components/base-field/use-styles.ts
728
- import { useMemo as useMemo12 } from "react";
787
+ import { useMemo as useMemo14 } from "react";
729
788
 
730
789
  // src/components/base-field/use-styles.css.ts
731
790
  var field = "use-styles_field__1c3cgd3";
@@ -744,7 +803,7 @@ var trailingSlot = "use-styles_trailingSlot__1c3cgdb";
744
803
  // src/components/base-field/use-styles.ts
745
804
  function useStyles12({ error, hasStartIcon, hasTrailing, className }) {
746
805
  const { themeClass } = useTheme();
747
- return useMemo12(() => {
806
+ return useMemo14(() => {
748
807
  const root24 = [themeClass, root9].filter(Boolean).join(" ");
749
808
  const labelText2 = [labelText, error && labelTextError].filter(Boolean).join(" ");
750
809
  const input6 = [
@@ -768,8 +827,8 @@ function useStyles12({ error, hasStartIcon, hasTrailing, className }) {
768
827
  }
769
828
 
770
829
  // src/components/base-field/index.tsx
771
- import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
772
- var BaseField = forwardRef12(function BaseField2({ label: label7, help, error, startIcon: StartIcon, trailing: trailing2, id, className, children }, ref) {
830
+ import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
831
+ var BaseField = forwardRef12(function BaseField2({ label: label7, help, error, startIcon: StartIcon, trailing: trailing2, id, className, testId, children }, ref) {
773
832
  const autoId = useId();
774
833
  const controlId = id ?? autoId;
775
834
  const errorMessage = error != null && error !== false && error !== true && error !== "" ? error : null;
@@ -782,27 +841,30 @@ var BaseField = forwardRef12(function BaseField2({ label: label7, help, error, s
782
841
  hasTrailing: trailing2 != null,
783
842
  className
784
843
  });
844
+ const { testId: rootTestId, slot } = useTestId("field", testId);
785
845
  const control = {
786
846
  id: controlId,
787
847
  className: classes.input,
788
848
  ref,
789
849
  "aria-describedby": messageId,
790
- "aria-invalid": hasError ? true : void 0
850
+ "aria-invalid": hasError ? true : void 0,
851
+ "data-testid": slot("input")
791
852
  };
792
- return /* @__PURE__ */ jsxs9("div", { className: classes.root, children: [
793
- label7 != null && /* @__PURE__ */ jsx15("label", { htmlFor: controlId, className: classes.labelText, children: label7 }),
853
+ return /* @__PURE__ */ jsxs9("div", { className: classes.root, "data-testid": rootTestId, "data-state": states({ error: hasError }), children: [
854
+ label7 != null && /* @__PURE__ */ jsx16("label", { htmlFor: controlId, className: classes.labelText, "data-testid": slot("label"), children: label7 }),
794
855
  /* @__PURE__ */ jsxs9("div", { className: classes.field, children: [
795
- StartIcon != null && /* @__PURE__ */ jsx15("span", { className: classes.startIconSlot, children: /* @__PURE__ */ jsx15(StartIcon, { size: 18 }) }),
856
+ StartIcon != null && /* @__PURE__ */ jsx16("span", { className: classes.startIconSlot, children: /* @__PURE__ */ jsx16(StartIcon, { size: 18 }) }),
796
857
  children(control),
797
- trailing2 != null && /* @__PURE__ */ jsx15("span", { className: classes.trailingSlot, children: trailing2 })
858
+ trailing2 != null && /* @__PURE__ */ jsx16("span", { className: classes.trailingSlot, children: trailing2 })
798
859
  ] }),
799
860
  message2 != null && // `aria-live` solo cuando el mensaje es un error: anuncia la validación al aparecer.
800
- /* @__PURE__ */ jsx15(
861
+ /* @__PURE__ */ jsx16(
801
862
  "span",
802
863
  {
803
864
  id: messageId,
804
865
  className: classes.helpText,
805
866
  "aria-live": errorMessage ? "polite" : void 0,
867
+ "data-testid": slot("message"),
806
868
  children: message2
807
869
  }
808
870
  )
@@ -810,7 +872,7 @@ var BaseField = forwardRef12(function BaseField2({ label: label7, help, error, s
810
872
  });
811
873
 
812
874
  // src/components/text-field/index.tsx
813
- import { jsx as jsx16 } from "react/jsx-runtime";
875
+ import { jsx as jsx17 } from "react/jsx-runtime";
814
876
  var TextField = forwardRef13(function TextField2({
815
877
  label: label7,
816
878
  help,
@@ -822,9 +884,11 @@ var TextField = forwardRef13(function TextField2({
822
884
  onChange,
823
885
  className,
824
886
  id,
887
+ testId,
825
888
  ...rest
826
889
  }, ref) {
827
- return /* @__PURE__ */ jsx16(
890
+ const rawTestId = rest["data-testid"];
891
+ return /* @__PURE__ */ jsx17(
828
892
  BaseField,
829
893
  {
830
894
  ref,
@@ -834,23 +898,26 @@ var TextField = forwardRef13(function TextField2({
834
898
  startIcon,
835
899
  id,
836
900
  className,
901
+ testId,
837
902
  children: ({ ref: controlRef, ...control }) => multiline ? (
838
903
  // En multiline el control es un <textarea>: no reenviamos `controlRef` porque el
839
904
  // tipo público de la ref es HTMLInputElement (la ref aplica solo a la rama <input>).
840
- /* @__PURE__ */ jsx16(
905
+ /* @__PURE__ */ jsx17(
841
906
  "textarea",
842
907
  {
843
908
  ...rest,
844
909
  ...control,
910
+ "data-testid": rawTestId ?? control["data-testid"],
845
911
  rows: rows ?? 4,
846
912
  onChange: (e) => onChange?.(e.target.value)
847
913
  }
848
914
  )
849
- ) : /* @__PURE__ */ jsx16(
915
+ ) : /* @__PURE__ */ jsx17(
850
916
  "input",
851
917
  {
852
918
  ...rest,
853
919
  ...control,
920
+ "data-testid": rawTestId ?? control["data-testid"],
854
921
  ref: controlRef,
855
922
  type,
856
923
  onChange: (e) => onChange?.(e.target.value)
@@ -864,7 +931,7 @@ var TextField = forwardRef13(function TextField2({
864
931
  import { forwardRef as forwardRef14, useState as useState3 } from "react";
865
932
 
866
933
  // src/components/icons/eye/index.tsx
867
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
934
+ import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
868
935
  function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
869
936
  return /* @__PURE__ */ jsxs10(
870
937
  "svg",
@@ -881,15 +948,15 @@ function EyeIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
881
948
  "aria-hidden": "true",
882
949
  ...rest,
883
950
  children: [
884
- /* @__PURE__ */ jsx17("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
885
- /* @__PURE__ */ jsx17("circle", { cx: "12", cy: "12", r: "3" })
951
+ /* @__PURE__ */ jsx18("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
952
+ /* @__PURE__ */ jsx18("circle", { cx: "12", cy: "12", r: "3" })
886
953
  ]
887
954
  }
888
955
  );
889
956
  }
890
957
 
891
958
  // src/components/icons/eye-off/index.tsx
892
- import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
959
+ import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
893
960
  function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
894
961
  return /* @__PURE__ */ jsxs11(
895
962
  "svg",
@@ -906,28 +973,28 @@ function EyeOffIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
906
973
  "aria-hidden": "true",
907
974
  ...rest,
908
975
  children: [
909
- /* @__PURE__ */ jsx18("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
910
- /* @__PURE__ */ jsx18("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" }),
911
- /* @__PURE__ */ jsx18("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" }),
912
- /* @__PURE__ */ jsx18("path", { d: "m2 2 20 20" })
976
+ /* @__PURE__ */ jsx19("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
977
+ /* @__PURE__ */ jsx19("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" }),
978
+ /* @__PURE__ */ jsx19("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" }),
979
+ /* @__PURE__ */ jsx19("path", { d: "m2 2 20 20" })
913
980
  ]
914
981
  }
915
982
  );
916
983
  }
917
984
 
918
985
  // src/components/password-field/use-styles.ts
919
- import { useMemo as useMemo13 } from "react";
986
+ import { useMemo as useMemo15 } from "react";
920
987
 
921
988
  // src/components/password-field/use-styles.css.ts
922
989
  var revealButton = "use-styles_revealButton__rsu9d50";
923
990
 
924
991
  // src/components/password-field/use-styles.ts
925
992
  function useStyles13() {
926
- return useMemo13(() => ({ revealButton }), []);
993
+ return useMemo15(() => ({ revealButton }), []);
927
994
  }
928
995
 
929
996
  // src/components/password-field/index.tsx
930
- import { jsx as jsx19 } from "react/jsx-runtime";
997
+ import { jsx as jsx20 } from "react/jsx-runtime";
931
998
  var PasswordField = forwardRef14(
932
999
  function PasswordField2({ label: label7, help, error, startIcon, onChange, id, className, ...rest }, ref) {
933
1000
  const [reveal, setReveal] = useState3(false);
@@ -938,7 +1005,7 @@ var PasswordField = forwardRef14(
938
1005
  const handleToggleMouseDown = (e) => {
939
1006
  e.preventDefault();
940
1007
  };
941
- const toggleButton = /* @__PURE__ */ jsx19(
1008
+ const toggleButton = /* @__PURE__ */ jsx20(
942
1009
  "button",
943
1010
  {
944
1011
  type: "button",
@@ -947,10 +1014,10 @@ var PasswordField = forwardRef14(
947
1014
  "aria-label": reveal ? "Ocultar contrase\xF1a" : "Mostrar contrase\xF1a",
948
1015
  onMouseDown: handleToggleMouseDown,
949
1016
  onClick: () => setReveal((r) => !r),
950
- children: reveal ? /* @__PURE__ */ jsx19(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ jsx19(EyeIcon, { size: 18 })
1017
+ children: reveal ? /* @__PURE__ */ jsx20(EyeOffIcon, { size: 18 }) : /* @__PURE__ */ jsx20(EyeIcon, { size: 18 })
951
1018
  }
952
1019
  );
953
- return /* @__PURE__ */ jsx19(
1020
+ return /* @__PURE__ */ jsx20(
954
1021
  BaseField,
955
1022
  {
956
1023
  ref,
@@ -961,7 +1028,7 @@ var PasswordField = forwardRef14(
961
1028
  trailing: toggleButton,
962
1029
  id,
963
1030
  className,
964
- children: (control) => /* @__PURE__ */ jsx19(
1031
+ children: (control) => /* @__PURE__ */ jsx20(
965
1032
  "input",
966
1033
  {
967
1034
  ...rest,
@@ -976,8 +1043,8 @@ var PasswordField = forwardRef14(
976
1043
  );
977
1044
 
978
1045
  // src/components/money-field/index.tsx
979
- import { forwardRef as forwardRef15, useMemo as useMemo14, useState as useState4 } from "react";
980
- import { jsx as jsx20 } from "react/jsx-runtime";
1046
+ import { forwardRef as forwardRef15, useMemo as useMemo16, useState as useState4 } from "react";
1047
+ import { jsx as jsx21 } from "react/jsx-runtime";
981
1048
  function parseAmount(raw) {
982
1049
  const cleaned = raw.replace(/[^0-9.-]/g, "");
983
1050
  if (cleaned === "" || cleaned === "-" || cleaned === ".") return null;
@@ -1001,7 +1068,7 @@ var MoneyField = forwardRef15(function MoneyField2({
1001
1068
  }, ref) {
1002
1069
  const [focused, setFocused] = useState4(false);
1003
1070
  const [draft, setDraft] = useState4("");
1004
- const formatter = useMemo14(
1071
+ const formatter = useMemo16(
1005
1072
  () => new Intl.NumberFormat(locale, { style: "currency", currency }),
1006
1073
  [locale, currency]
1007
1074
  );
@@ -1017,7 +1084,7 @@ var MoneyField = forwardRef15(function MoneyField2({
1017
1084
  onChange?.(parseAmount(draft));
1018
1085
  onBlur?.(e);
1019
1086
  };
1020
- return /* @__PURE__ */ jsx20(
1087
+ return /* @__PURE__ */ jsx21(
1021
1088
  BaseField,
1022
1089
  {
1023
1090
  ref,
@@ -1027,7 +1094,7 @@ var MoneyField = forwardRef15(function MoneyField2({
1027
1094
  startIcon,
1028
1095
  id,
1029
1096
  className,
1030
- children: (control) => /* @__PURE__ */ jsx20(
1097
+ children: (control) => /* @__PURE__ */ jsx21(
1031
1098
  "input",
1032
1099
  {
1033
1100
  ...rest,
@@ -1047,7 +1114,7 @@ var MoneyField = forwardRef15(function MoneyField2({
1047
1114
  import { forwardRef as forwardRef16 } from "react";
1048
1115
 
1049
1116
  // src/components/icon-button/use-styles.ts
1050
- import { useMemo as useMemo15 } from "react";
1117
+ import { useMemo as useMemo17 } from "react";
1051
1118
 
1052
1119
  // src/components/icon-button/use-styles.css.ts
1053
1120
  var accent = "use-styles_accent__18np0q02";
@@ -1060,7 +1127,7 @@ function useStyles14({
1060
1127
  tone: tone4 = "ink"
1061
1128
  }) {
1062
1129
  const { themeClass } = useTheme();
1063
- const root24 = useMemo15(
1130
+ const root24 = useMemo17(
1064
1131
  () => [themeClass, root10, tone4 === "accent" && accent, active2 && active].filter(Boolean).join(" "),
1065
1132
  [themeClass, active2, tone4]
1066
1133
  );
@@ -1068,8 +1135,8 @@ function useStyles14({
1068
1135
  }
1069
1136
 
1070
1137
  // src/components/icon-button/index.tsx
1071
- import { jsx as jsx21 } from "react/jsx-runtime";
1072
- var IconButton = forwardRef16(function IconButton2({ icon: Icon, active: active2, tone: tone4, title, type = "button", ...rest }, ref) {
1138
+ import { jsx as jsx22 } from "react/jsx-runtime";
1139
+ var IconButton = forwardRef16(function IconButton2({ icon: Icon, active: active2, tone: tone4, title, type = "button", testId, ...rest }, ref) {
1073
1140
  if (typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
1074
1141
  const restProps = rest;
1075
1142
  const hasName = title.trim() !== "" || restProps["aria-label"] != null || restProps["aria-labelledby"] != null;
@@ -1078,14 +1145,28 @@ var IconButton = forwardRef16(function IconButton2({ icon: Icon, active: active2
1078
1145
  }
1079
1146
  }
1080
1147
  const { root: root24 } = useStyles14({ active: active2, tone: tone4 });
1081
- return /* @__PURE__ */ jsx21("button", { ref, type, className: root24, "aria-label": title, title, ...rest, children: /* @__PURE__ */ jsx21(Icon, { size: 18 }) });
1148
+ const { testId: dataTestId } = useTestId("button", testId);
1149
+ return /* @__PURE__ */ jsx22(
1150
+ "button",
1151
+ {
1152
+ ref,
1153
+ type,
1154
+ className: root24,
1155
+ "aria-label": title,
1156
+ title,
1157
+ "data-testid": dataTestId,
1158
+ "data-state": states({ active: active2, disabled: rest.disabled }),
1159
+ ...rest,
1160
+ children: /* @__PURE__ */ jsx22(Icon, { size: 18 })
1161
+ }
1162
+ );
1082
1163
  });
1083
1164
 
1084
1165
  // src/components/card/index.tsx
1085
1166
  import { forwardRef as forwardRef17 } from "react";
1086
1167
 
1087
1168
  // src/components/card/use-styles.ts
1088
- import { useMemo as useMemo16 } from "react";
1169
+ import { useMemo as useMemo18 } from "react";
1089
1170
 
1090
1171
  // src/components/card/use-styles.css.ts
1091
1172
  var body = "use-styles_body__1fuvd022";
@@ -1096,27 +1177,27 @@ var root11 = "use-styles_root__1fuvd020";
1096
1177
  // src/components/card/use-styles.ts
1097
1178
  function useStyles15() {
1098
1179
  const { themeClass } = useTheme();
1099
- const root24 = useMemo16(() => `${themeClass} ${root11}`, [themeClass]);
1180
+ const root24 = useMemo18(() => `${themeClass} ${root11}`, [themeClass]);
1100
1181
  return { root: root24, header, body, footer };
1101
1182
  }
1102
1183
 
1103
1184
  // src/components/card/index.tsx
1104
- import { jsx as jsx22 } from "react/jsx-runtime";
1185
+ import { jsx as jsx23 } from "react/jsx-runtime";
1105
1186
  var CardRoot = forwardRef17(function Card({ children, ...rest }, ref) {
1106
1187
  const { root: root24 } = useStyles15();
1107
- return /* @__PURE__ */ jsx22("div", { ref, className: root24, ...rest, children });
1188
+ return /* @__PURE__ */ jsx23("div", { ref, className: root24, ...rest, children });
1108
1189
  });
1109
1190
  function CardHeader({ children, ...rest }) {
1110
1191
  const { header: header3 } = useStyles15();
1111
- return /* @__PURE__ */ jsx22("div", { className: header3, ...rest, children });
1192
+ return /* @__PURE__ */ jsx23("div", { className: header3, ...rest, children });
1112
1193
  }
1113
1194
  function CardBody({ children, ...rest }) {
1114
1195
  const { body: body3 } = useStyles15();
1115
- return /* @__PURE__ */ jsx22("div", { className: body3, ...rest, children });
1196
+ return /* @__PURE__ */ jsx23("div", { className: body3, ...rest, children });
1116
1197
  }
1117
1198
  function CardFooter({ children, ...rest }) {
1118
1199
  const { footer: footer2 } = useStyles15();
1119
- return /* @__PURE__ */ jsx22("div", { className: footer2, ...rest, children });
1200
+ return /* @__PURE__ */ jsx23("div", { className: footer2, ...rest, children });
1120
1201
  }
1121
1202
  CardRoot.displayName = "Card";
1122
1203
  CardHeader.displayName = "Card.Header";
@@ -1132,7 +1213,7 @@ var Card2 = Object.assign(CardRoot, {
1132
1213
  import { forwardRef as forwardRef18 } from "react";
1133
1214
 
1134
1215
  // src/components/icons/circle-check/index.tsx
1135
- import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
1216
+ import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
1136
1217
  function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1137
1218
  return /* @__PURE__ */ jsxs12(
1138
1219
  "svg",
@@ -1149,15 +1230,15 @@ function CircleCheckIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1149
1230
  "aria-hidden": "true",
1150
1231
  ...rest,
1151
1232
  children: [
1152
- /* @__PURE__ */ jsx23("circle", { cx: "12", cy: "12", r: "10" }),
1153
- /* @__PURE__ */ jsx23("path", { d: "m9 12 2 2 4-4" })
1233
+ /* @__PURE__ */ jsx24("circle", { cx: "12", cy: "12", r: "10" }),
1234
+ /* @__PURE__ */ jsx24("path", { d: "m9 12 2 2 4-4" })
1154
1235
  ]
1155
1236
  }
1156
1237
  );
1157
1238
  }
1158
1239
 
1159
1240
  // src/components/icons/circle-x/index.tsx
1160
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
1241
+ import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
1161
1242
  function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1162
1243
  return /* @__PURE__ */ jsxs13(
1163
1244
  "svg",
@@ -1174,16 +1255,16 @@ function CircleXIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1174
1255
  "aria-hidden": "true",
1175
1256
  ...rest,
1176
1257
  children: [
1177
- /* @__PURE__ */ jsx24("circle", { cx: "12", cy: "12", r: "10" }),
1178
- /* @__PURE__ */ jsx24("path", { d: "m15 9-6 6" }),
1179
- /* @__PURE__ */ jsx24("path", { d: "m9 9 6 6" })
1258
+ /* @__PURE__ */ jsx25("circle", { cx: "12", cy: "12", r: "10" }),
1259
+ /* @__PURE__ */ jsx25("path", { d: "m15 9-6 6" }),
1260
+ /* @__PURE__ */ jsx25("path", { d: "m9 9 6 6" })
1180
1261
  ]
1181
1262
  }
1182
1263
  );
1183
1264
  }
1184
1265
 
1185
1266
  // src/components/icons/info/index.tsx
1186
- import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1267
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
1187
1268
  function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1188
1269
  return /* @__PURE__ */ jsxs14(
1189
1270
  "svg",
@@ -1200,16 +1281,16 @@ function InfoIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1200
1281
  "aria-hidden": "true",
1201
1282
  ...rest,
1202
1283
  children: [
1203
- /* @__PURE__ */ jsx25("circle", { cx: "12", cy: "12", r: "10" }),
1204
- /* @__PURE__ */ jsx25("path", { d: "M12 16v-4" }),
1205
- /* @__PURE__ */ jsx25("path", { d: "M12 8h.01" })
1284
+ /* @__PURE__ */ jsx26("circle", { cx: "12", cy: "12", r: "10" }),
1285
+ /* @__PURE__ */ jsx26("path", { d: "M12 16v-4" }),
1286
+ /* @__PURE__ */ jsx26("path", { d: "M12 8h.01" })
1206
1287
  ]
1207
1288
  }
1208
1289
  );
1209
1290
  }
1210
1291
 
1211
1292
  // src/components/icons/triangle-alert/index.tsx
1212
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
1293
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
1213
1294
  function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1214
1295
  return /* @__PURE__ */ jsxs15(
1215
1296
  "svg",
@@ -1226,16 +1307,16 @@ function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1226
1307
  "aria-hidden": "true",
1227
1308
  ...rest,
1228
1309
  children: [
1229
- /* @__PURE__ */ jsx26("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" }),
1230
- /* @__PURE__ */ jsx26("path", { d: "M12 9v4" }),
1231
- /* @__PURE__ */ jsx26("path", { d: "M12 17h.01" })
1310
+ /* @__PURE__ */ jsx27("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" }),
1311
+ /* @__PURE__ */ jsx27("path", { d: "M12 9v4" }),
1312
+ /* @__PURE__ */ jsx27("path", { d: "M12 17h.01" })
1232
1313
  ]
1233
1314
  }
1234
1315
  );
1235
1316
  }
1236
1317
 
1237
1318
  // src/components/alert/use-styles.ts
1238
- import { useMemo as useMemo17 } from "react";
1319
+ import { useMemo as useMemo19 } from "react";
1239
1320
 
1240
1321
  // src/components/alert/use-styles.css.ts
1241
1322
  var content = "use-styles_content__ivsh6u6";
@@ -1249,7 +1330,7 @@ function useStyles16({
1249
1330
  className
1250
1331
  }) {
1251
1332
  const { themeClass } = useTheme();
1252
- const root24 = useMemo17(
1333
+ const root24 = useMemo19(
1253
1334
  () => [themeClass, root12, severity[severity2], className].filter(Boolean).join(" "),
1254
1335
  [themeClass, severity2, className]
1255
1336
  );
@@ -1261,7 +1342,7 @@ function useStyles16({
1261
1342
  }
1262
1343
 
1263
1344
  // src/components/alert/index.tsx
1264
- import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
1345
+ import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
1265
1346
  var defaultIcons = {
1266
1347
  info: InfoIcon,
1267
1348
  ok: CircleCheckIcon,
@@ -1272,10 +1353,10 @@ var Alert = forwardRef18(function Alert2({ severity: severity2 = "info", title,
1272
1353
  const styles = useStyles16({ severity: severity2, className });
1273
1354
  const IconComponent = icon ?? defaultIcons[severity2];
1274
1355
  return /* @__PURE__ */ jsxs16("div", { ref, role: "alert", className: styles.root, ...rest, children: [
1275
- /* @__PURE__ */ jsx27("span", { className: styles.iconSlot, children: /* @__PURE__ */ jsx27(IconComponent, {}) }),
1356
+ /* @__PURE__ */ jsx28("span", { className: styles.iconSlot, children: /* @__PURE__ */ jsx28(IconComponent, {}) }),
1276
1357
  /* @__PURE__ */ jsxs16("div", { className: styles.content, children: [
1277
- title != null && /* @__PURE__ */ jsx27(Typography, { variant: "h4", children: title }),
1278
- children != null && /* @__PURE__ */ jsx27(Typography, { variant: "body", color: "fg2", children })
1358
+ title != null && /* @__PURE__ */ jsx28(Typography, { variant: "h4", children: title }),
1359
+ children != null && /* @__PURE__ */ jsx28(Typography, { variant: "body", color: "fg2", children })
1279
1360
  ] })
1280
1361
  ] });
1281
1362
  });
@@ -1291,7 +1372,7 @@ import {
1291
1372
  } from "react";
1292
1373
 
1293
1374
  // src/components/tooltip/use-styles.ts
1294
- import { useMemo as useMemo18 } from "react";
1375
+ import { useMemo as useMemo20 } from "react";
1295
1376
 
1296
1377
  // src/components/tooltip/use-styles.css.ts
1297
1378
  var bubble = "use-styles_bubble__h9kvh1 surfaces_inkySurface__1qa7atn2";
@@ -1303,11 +1384,11 @@ function useStyles17({
1303
1384
  placement: placement2 = "top"
1304
1385
  }) {
1305
1386
  const { themeClass } = useTheme();
1306
- const wrapper4 = useMemo18(
1387
+ const wrapper4 = useMemo20(
1307
1388
  () => [themeClass, wrapper].filter(Boolean).join(" "),
1308
1389
  [themeClass]
1309
1390
  );
1310
- const bubble2 = useMemo18(
1391
+ const bubble2 = useMemo20(
1311
1392
  () => [bubble, placement[placement2]].filter(Boolean).join(" "),
1312
1393
  [placement2]
1313
1394
  );
@@ -1315,7 +1396,7 @@ function useStyles17({
1315
1396
  }
1316
1397
 
1317
1398
  // src/components/tooltip/index.tsx
1318
- import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
1399
+ import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
1319
1400
  var HIDE_DELAY = 120;
1320
1401
  var Tooltip = forwardRef19(function Tooltip2({ label: label7, children, placement: placement2 }, ref) {
1321
1402
  const [open, setOpen] = useState5(false);
@@ -1366,7 +1447,7 @@ var Tooltip = forwardRef19(function Tooltip2({ label: label7, children, placemen
1366
1447
  onKeyDown: handleKeyDown,
1367
1448
  children: [
1368
1449
  trigger2,
1369
- open && /* @__PURE__ */ jsx28(
1450
+ open && /* @__PURE__ */ jsx29(
1370
1451
  "span",
1371
1452
  {
1372
1453
  id: tooltipId,
@@ -1386,9 +1467,9 @@ var Tooltip = forwardRef19(function Tooltip2({ label: label7, children, placemen
1386
1467
  import { forwardRef as forwardRef20, useEffect as useEffect4, useId as useId3, useRef as useRef3, useState as useState6 } from "react";
1387
1468
 
1388
1469
  // src/components/icons/chevron-down/index.tsx
1389
- import { jsx as jsx29 } from "react/jsx-runtime";
1470
+ import { jsx as jsx30 } from "react/jsx-runtime";
1390
1471
  function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1391
- return /* @__PURE__ */ jsx29(
1472
+ return /* @__PURE__ */ jsx30(
1392
1473
  "svg",
1393
1474
  {
1394
1475
  xmlns: "http://www.w3.org/2000/svg",
@@ -1402,13 +1483,13 @@ function ChevronDownIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1402
1483
  strokeLinejoin: "round",
1403
1484
  "aria-hidden": "true",
1404
1485
  ...rest,
1405
- children: /* @__PURE__ */ jsx29("path", { d: "m6 9 6 6 6-6" })
1486
+ children: /* @__PURE__ */ jsx30("path", { d: "m6 9 6 6 6-6" })
1406
1487
  }
1407
1488
  );
1408
1489
  }
1409
1490
 
1410
1491
  // src/components/select/use-styles.ts
1411
- import { useMemo as useMemo19 } from "react";
1492
+ import { useMemo as useMemo21 } from "react";
1412
1493
 
1413
1494
  // src/components/select/use-styles.css.ts
1414
1495
  var chevron = "use-styles_chevron__1w1czpb4";
@@ -1427,7 +1508,7 @@ function useStyles18({
1427
1508
  open = false
1428
1509
  }) {
1429
1510
  const { themeClass } = useTheme();
1430
- return useMemo19(() => {
1511
+ return useMemo21(() => {
1431
1512
  const chevron3 = [chevron, open && chevronOpen].filter(Boolean).join(" ");
1432
1513
  return {
1433
1514
  root: [themeClass, root13].filter(Boolean).join(" "),
@@ -1442,7 +1523,7 @@ function useStyles18({
1442
1523
  }
1443
1524
 
1444
1525
  // src/components/select/index.tsx
1445
- import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
1526
+ import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
1446
1527
  var Select = forwardRef20(function Select2({ options, value, onChange, placeholder: placeholder2, label: label7, disabled: disabled3, ...rest }, ref) {
1447
1528
  const [open, setOpen] = useState6(false);
1448
1529
  const [activeIndex, setActiveIndex] = useState6(0);
@@ -1525,7 +1606,7 @@ var Select = forwardRef20(function Select2({ options, value, onChange, placehold
1525
1606
  }
1526
1607
  };
1527
1608
  return /* @__PURE__ */ jsxs18("div", { ref: setRootRef, className: root24, ...rest, children: [
1528
- label7 && /* @__PURE__ */ jsx30("span", { id: labelId, className: labelClass, children: label7 }),
1609
+ label7 && /* @__PURE__ */ jsx31("span", { id: labelId, className: labelClass, children: label7 }),
1529
1610
  /* @__PURE__ */ jsxs18(
1530
1611
  "button",
1531
1612
  {
@@ -1546,17 +1627,17 @@ var Select = forwardRef20(function Select2({ options, value, onChange, placehold
1546
1627
  },
1547
1628
  onKeyDown: handleKeyDown,
1548
1629
  children: [
1549
- selected3 ? selected3.label : /* @__PURE__ */ jsx30("span", { className: placeholderClass, children: placeholder2 }),
1550
- /* @__PURE__ */ jsx30("span", { className: chevron3, children: /* @__PURE__ */ jsx30(ChevronDownIcon, { size: 18 }) })
1630
+ selected3 ? selected3.label : /* @__PURE__ */ jsx31("span", { className: placeholderClass, children: placeholder2 }),
1631
+ /* @__PURE__ */ jsx31("span", { className: chevron3, children: /* @__PURE__ */ jsx31(ChevronDownIcon, { size: 18 }) })
1551
1632
  ]
1552
1633
  }
1553
1634
  ),
1554
- open && /* @__PURE__ */ jsx30("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1635
+ open && /* @__PURE__ */ jsx31("div", { className: menu2, role: "listbox", children: options.map((option2, index) => {
1555
1636
  const isSelected = option2.value === value;
1556
1637
  const isActive = index === activeIndex;
1557
1638
  return (
1558
1639
  // biome-ignore lint/a11y/useKeyWithClickEvents: keyboard nav lives on the trigger via aria-activedescendant; options are not focusable.
1559
- /* @__PURE__ */ jsx30(
1640
+ /* @__PURE__ */ jsx31(
1560
1641
  "div",
1561
1642
  {
1562
1643
  id: optionId(index),
@@ -1578,7 +1659,7 @@ var Select = forwardRef20(function Select2({ options, value, onChange, placehold
1578
1659
  import { forwardRef as forwardRef21 } from "react";
1579
1660
 
1580
1661
  // src/components/slider/use-styles.ts
1581
- import { useMemo as useMemo20 } from "react";
1662
+ import { useMemo as useMemo22 } from "react";
1582
1663
 
1583
1664
  // src/components/slider/use-styles.css.ts
1584
1665
  var input5 = "use-styles_input__okw59n3";
@@ -1592,7 +1673,7 @@ var wrapper2 = "use-styles_wrapper__okw59n6";
1592
1673
  // src/components/slider/use-styles.ts
1593
1674
  function useStyles19() {
1594
1675
  const { themeClass } = useTheme();
1595
- return useMemo20(() => {
1676
+ return useMemo22(() => {
1596
1677
  const root24 = [themeClass, root14].filter(Boolean).join(" ");
1597
1678
  return {
1598
1679
  wrapper: wrapper2,
@@ -1607,7 +1688,7 @@ function useStyles19() {
1607
1688
  }
1608
1689
 
1609
1690
  // src/components/slider/index.tsx
1610
- import { jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
1691
+ import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
1611
1692
  var Slider = forwardRef21(function Slider2({ value = 0, onChange, min = 0, max = 100, step: step2 = 1, disabled: disabled3, label: label7, ...rest }, ref) {
1612
1693
  const { wrapper: wrapper4, label: labelClass, root: root24, track: track4, range: range2, thumb: thumb2, input: input6 } = useStyles19();
1613
1694
  const span = max - min;
@@ -1617,11 +1698,11 @@ var Slider = forwardRef21(function Slider2({ value = 0, onChange, min = 0, max =
1617
1698
  onChange?.(Number(e.target.value));
1618
1699
  };
1619
1700
  return /* @__PURE__ */ jsxs19("span", { className: wrapper4, children: [
1620
- label7 ? /* @__PURE__ */ jsx31("span", { className: labelClass, children: label7 }) : null,
1701
+ label7 ? /* @__PURE__ */ jsx32("span", { className: labelClass, children: label7 }) : null,
1621
1702
  /* @__PURE__ */ jsxs19("span", { className: root24, children: [
1622
- /* @__PURE__ */ jsx31("span", { className: track4 }),
1623
- /* @__PURE__ */ jsx31("span", { className: range2, style: { width: `${clamped}%` } }),
1624
- /* @__PURE__ */ jsx31(
1703
+ /* @__PURE__ */ jsx32("span", { className: track4 }),
1704
+ /* @__PURE__ */ jsx32("span", { className: range2, style: { width: `${clamped}%` } }),
1705
+ /* @__PURE__ */ jsx32(
1625
1706
  "input",
1626
1707
  {
1627
1708
  ref,
@@ -1636,7 +1717,7 @@ var Slider = forwardRef21(function Slider2({ value = 0, onChange, min = 0, max =
1636
1717
  ...rest
1637
1718
  }
1638
1719
  ),
1639
- /* @__PURE__ */ jsx31("span", { className: thumb2, style: { left: `${clamped}%` } })
1720
+ /* @__PURE__ */ jsx32("span", { className: thumb2, style: { left: `${clamped}%` } })
1640
1721
  ] })
1641
1722
  ] });
1642
1723
  });
@@ -1645,7 +1726,7 @@ var Slider = forwardRef21(function Slider2({ value = 0, onChange, min = 0, max =
1645
1726
  import { forwardRef as forwardRef22, useState as useState7 } from "react";
1646
1727
 
1647
1728
  // src/components/accordion/use-styles.ts
1648
- import { useMemo as useMemo21 } from "react";
1729
+ import { useMemo as useMemo23 } from "react";
1649
1730
 
1650
1731
  // src/components/accordion/use-styles.css.ts
1651
1732
  var chevron2 = "use-styles_chevron__1cjrdh93";
@@ -1658,7 +1739,7 @@ var root15 = "use-styles_root__1cjrdh90";
1658
1739
  // src/components/accordion/use-styles.ts
1659
1740
  function useStyles20({ className }) {
1660
1741
  const { themeClass } = useTheme();
1661
- return useMemo21(
1742
+ return useMemo23(
1662
1743
  () => ({
1663
1744
  root: [themeClass, root15, className].filter(Boolean).join(" "),
1664
1745
  item,
@@ -1671,7 +1752,7 @@ function useStyles20({ className }) {
1671
1752
  }
1672
1753
 
1673
1754
  // src/components/accordion/index.tsx
1674
- import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
1755
+ import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
1675
1756
  var Accordion = forwardRef22(function Accordion2({ items, multiple = false, defaultOpen = [], className }, ref) {
1676
1757
  const [open, setOpen] = useState7(defaultOpen);
1677
1758
  const { root: root24, item: item3, header: header3, chevronFor, panel: panel3 } = useStyles20({ className });
@@ -1682,7 +1763,7 @@ var Accordion = forwardRef22(function Accordion2({ items, multiple = false, defa
1682
1763
  return multiple ? [...current2, id] : [id];
1683
1764
  });
1684
1765
  };
1685
- return /* @__PURE__ */ jsx32("div", { ref, className: root24, children: items.map((it) => {
1766
+ return /* @__PURE__ */ jsx33("div", { ref, className: root24, children: items.map((it) => {
1686
1767
  const isOpen = open.includes(it.id);
1687
1768
  const panelId = `accordion-panel-${it.id}`;
1688
1769
  const headerId = `accordion-header-${it.id}`;
@@ -1698,11 +1779,11 @@ var Accordion = forwardRef22(function Accordion2({ items, multiple = false, defa
1698
1779
  onClick: () => toggle(it.id),
1699
1780
  children: [
1700
1781
  it.title,
1701
- /* @__PURE__ */ jsx32(ChevronDownIcon, { className: chevronFor(isOpen) })
1782
+ /* @__PURE__ */ jsx33(ChevronDownIcon, { className: chevronFor(isOpen) })
1702
1783
  ]
1703
1784
  }
1704
1785
  ),
1705
- isOpen && /* @__PURE__ */ jsx32("div", { id: panelId, className: panel3, role: "region", "aria-labelledby": headerId, children: it.content })
1786
+ isOpen && /* @__PURE__ */ jsx33("div", { id: panelId, className: panel3, role: "region", "aria-labelledby": headerId, children: it.content })
1706
1787
  ] }, it.id);
1707
1788
  }) });
1708
1789
  });
@@ -1711,9 +1792,9 @@ var Accordion = forwardRef22(function Accordion2({ items, multiple = false, defa
1711
1792
  import { Fragment, forwardRef as forwardRef23 } from "react";
1712
1793
 
1713
1794
  // src/components/icons/chevron-right/index.tsx
1714
- import { jsx as jsx33 } from "react/jsx-runtime";
1795
+ import { jsx as jsx34 } from "react/jsx-runtime";
1715
1796
  function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1716
- return /* @__PURE__ */ jsx33(
1797
+ return /* @__PURE__ */ jsx34(
1717
1798
  "svg",
1718
1799
  {
1719
1800
  xmlns: "http://www.w3.org/2000/svg",
@@ -1727,13 +1808,13 @@ function ChevronRightIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1727
1808
  strokeLinejoin: "round",
1728
1809
  "aria-hidden": "true",
1729
1810
  ...rest,
1730
- children: /* @__PURE__ */ jsx33("path", { d: "m9 18 6-6-6-6" })
1811
+ children: /* @__PURE__ */ jsx34("path", { d: "m9 18 6-6-6-6" })
1731
1812
  }
1732
1813
  );
1733
1814
  }
1734
1815
 
1735
1816
  // src/components/breadcrumbs/use-styles.ts
1736
- import { useMemo as useMemo22 } from "react";
1817
+ import { useMemo as useMemo24 } from "react";
1737
1818
 
1738
1819
  // src/components/breadcrumbs/use-styles.css.ts
1739
1820
  var crumb = "use-styles_crumb__7u0du61";
@@ -1744,7 +1825,7 @@ var separator = "use-styles_separator__7u0du63";
1744
1825
  // src/components/breadcrumbs/use-styles.ts
1745
1826
  function useStyles21({ className }) {
1746
1827
  const { themeClass } = useTheme();
1747
- const root24 = useMemo22(
1828
+ const root24 = useMemo24(
1748
1829
  () => [themeClass, root16, className].filter(Boolean).join(" "),
1749
1830
  [themeClass, className]
1750
1831
  );
@@ -1752,15 +1833,15 @@ function useStyles21({ className }) {
1752
1833
  }
1753
1834
 
1754
1835
  // src/components/breadcrumbs/index.tsx
1755
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
1836
+ import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
1756
1837
  var Breadcrumbs = forwardRef23(function Breadcrumbs2({ items, className, ...rest }, ref) {
1757
1838
  const { root: root24, crumb: crumb2, current: current2, separator: separator2 } = useStyles21({ className });
1758
- return /* @__PURE__ */ jsx34("nav", { ref, "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1839
+ return /* @__PURE__ */ jsx35("nav", { ref, "aria-label": "Breadcrumb", className: root24, ...rest, children: items.map((item3, index) => {
1759
1840
  const isLast = index === items.length - 1;
1760
1841
  const key = index;
1761
1842
  return /* @__PURE__ */ jsxs21(Fragment, { children: [
1762
- isLast ? /* @__PURE__ */ jsx34("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ jsx34("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ jsx34("span", { className: crumb2, children: item3.label }),
1763
- !isLast && /* @__PURE__ */ jsx34("span", { className: separator2, children: /* @__PURE__ */ jsx34(ChevronRightIcon, { size: 14 }) })
1843
+ isLast ? /* @__PURE__ */ jsx35("span", { className: current2, "aria-current": "page", children: item3.label }) : item3.href ? /* @__PURE__ */ jsx35("a", { className: crumb2, href: item3.href, children: item3.label }) : /* @__PURE__ */ jsx35("span", { className: crumb2, children: item3.label }),
1844
+ !isLast && /* @__PURE__ */ jsx35("span", { className: separator2, children: /* @__PURE__ */ jsx35(ChevronRightIcon, { size: 14 }) })
1764
1845
  ] }, key);
1765
1846
  }) });
1766
1847
  });
@@ -1769,9 +1850,9 @@ var Breadcrumbs = forwardRef23(function Breadcrumbs2({ items, className, ...rest
1769
1850
  import { forwardRef as forwardRef24 } from "react";
1770
1851
 
1771
1852
  // src/components/icons/chevron-left/index.tsx
1772
- import { jsx as jsx35 } from "react/jsx-runtime";
1853
+ import { jsx as jsx36 } from "react/jsx-runtime";
1773
1854
  function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1774
- return /* @__PURE__ */ jsx35(
1855
+ return /* @__PURE__ */ jsx36(
1775
1856
  "svg",
1776
1857
  {
1777
1858
  xmlns: "http://www.w3.org/2000/svg",
@@ -1785,13 +1866,13 @@ function ChevronLeftIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
1785
1866
  strokeLinejoin: "round",
1786
1867
  "aria-hidden": "true",
1787
1868
  ...rest,
1788
- children: /* @__PURE__ */ jsx35("path", { d: "m15 18-6-6 6-6" })
1869
+ children: /* @__PURE__ */ jsx36("path", { d: "m15 18-6-6 6-6" })
1789
1870
  }
1790
1871
  );
1791
1872
  }
1792
1873
 
1793
1874
  // src/components/pagination/use-styles.ts
1794
- import { useMemo as useMemo23 } from "react";
1875
+ import { useMemo as useMemo25 } from "react";
1795
1876
 
1796
1877
  // src/components/pagination/use-styles.css.ts
1797
1878
  var ellipsis = "use-styles_ellipsis__1azgzoh3";
@@ -1803,7 +1884,7 @@ var root17 = "use-styles_root__1azgzoh0";
1803
1884
  // src/components/pagination/use-styles.ts
1804
1885
  function useStyles22() {
1805
1886
  const { themeClass } = useTheme();
1806
- return useMemo23(
1887
+ return useMemo25(
1807
1888
  () => ({
1808
1889
  root: [themeClass, root17].filter(Boolean).join(" "),
1809
1890
  pageBtnFor: (active2) => [pageBtn, active2 && pageActive].filter(Boolean).join(" "),
@@ -1815,7 +1896,7 @@ function useStyles22() {
1815
1896
  }
1816
1897
 
1817
1898
  // src/components/pagination/index.tsx
1818
- import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
1899
+ import { jsx as jsx37, jsxs as jsxs22 } from "react/jsx-runtime";
1819
1900
  function buildItems(count, page, siblingCount) {
1820
1901
  const total = Math.max(1, count);
1821
1902
  const first = 1;
@@ -1836,7 +1917,7 @@ var Pagination = forwardRef24(function Pagination2({ count, page = 1, onChange,
1836
1917
  const items = buildItems(total, current2, siblingCount);
1837
1918
  const go = (n) => onChange?.(Math.min(Math.max(1, n), total));
1838
1919
  return /* @__PURE__ */ jsxs22("nav", { ref, className: root24, "aria-label": "Pagination", ...rest, children: [
1839
- /* @__PURE__ */ jsx36(
1920
+ /* @__PURE__ */ jsx37(
1840
1921
  "button",
1841
1922
  {
1842
1923
  type: "button",
@@ -1844,14 +1925,14 @@ var Pagination = forwardRef24(function Pagination2({ count, page = 1, onChange,
1844
1925
  "aria-label": "Previous page",
1845
1926
  disabled: current2 <= 1,
1846
1927
  onClick: () => go(current2 - 1),
1847
- children: /* @__PURE__ */ jsx36(ChevronLeftIcon, { size: 18 })
1928
+ children: /* @__PURE__ */ jsx37(ChevronLeftIcon, { size: 18 })
1848
1929
  }
1849
1930
  ),
1850
1931
  items.map(
1851
1932
  (item3, index) => item3 === "ellipsis" ? (
1852
1933
  // biome-ignore lint/suspicious/noArrayIndexKey: ellipsis position is stable per render
1853
- /* @__PURE__ */ jsx36("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
1854
- ) : /* @__PURE__ */ jsx36(
1934
+ /* @__PURE__ */ jsx37("span", { className: ellipsis2, children: "\u2026" }, `ellipsis-${index}`)
1935
+ ) : /* @__PURE__ */ jsx37(
1855
1936
  "button",
1856
1937
  {
1857
1938
  type: "button",
@@ -1863,7 +1944,7 @@ var Pagination = forwardRef24(function Pagination2({ count, page = 1, onChange,
1863
1944
  item3
1864
1945
  )
1865
1946
  ),
1866
- /* @__PURE__ */ jsx36(
1947
+ /* @__PURE__ */ jsx37(
1867
1948
  "button",
1868
1949
  {
1869
1950
  type: "button",
@@ -1871,7 +1952,7 @@ var Pagination = forwardRef24(function Pagination2({ count, page = 1, onChange,
1871
1952
  "aria-label": "Next page",
1872
1953
  disabled: current2 >= total,
1873
1954
  onClick: () => go(current2 + 1),
1874
- children: /* @__PURE__ */ jsx36(ChevronRightIcon, { size: 18 })
1955
+ children: /* @__PURE__ */ jsx37(ChevronRightIcon, { size: 18 })
1875
1956
  }
1876
1957
  )
1877
1958
  ] });
@@ -1881,7 +1962,7 @@ var Pagination = forwardRef24(function Pagination2({ count, page = 1, onChange,
1881
1962
  import { Fragment as Fragment2, forwardRef as forwardRef25 } from "react";
1882
1963
 
1883
1964
  // src/components/stepper/use-styles.ts
1884
- import { useMemo as useMemo24 } from "react";
1965
+ import { useMemo as useMemo26 } from "react";
1885
1966
 
1886
1967
  // src/components/stepper/use-styles.css.ts
1887
1968
  var connector = "use-styles_connector__79pt4e7";
@@ -1896,7 +1977,7 @@ var step = "use-styles_step__79pt4e1";
1896
1977
  // src/components/stepper/use-styles.ts
1897
1978
  function useStyles23({ className }) {
1898
1979
  const { themeClass } = useTheme();
1899
- return useMemo24(() => {
1980
+ return useMemo26(() => {
1900
1981
  const root24 = [themeClass, root18, className].filter(Boolean).join(" ");
1901
1982
  const markerFor = (state) => [
1902
1983
  marker,
@@ -1909,20 +1990,20 @@ function useStyles23({ className }) {
1909
1990
  }
1910
1991
 
1911
1992
  // src/components/stepper/index.tsx
1912
- import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
1993
+ import { jsx as jsx38, jsxs as jsxs23 } from "react/jsx-runtime";
1913
1994
  var Stepper = forwardRef25(function Stepper2({ steps, active: active2 = 0, className, ...rest }, ref) {
1914
1995
  const { root: root24, step: step2, connector: connector2, markerFor, labelFor } = useStyles23({ className });
1915
- return /* @__PURE__ */ jsx37("div", { ref, className: root24, ...rest, children: steps.map((s, index) => {
1996
+ return /* @__PURE__ */ jsx38("div", { ref, className: root24, ...rest, children: steps.map((s, index) => {
1916
1997
  const state = index < active2 ? "done" : index === active2 ? "active" : "upcoming";
1917
1998
  const isActive = state === "active";
1918
1999
  return (
1919
2000
  // biome-ignore lint/suspicious/noArrayIndexKey: steps are a static, ordered list with no stable id.
1920
2001
  /* @__PURE__ */ jsxs23(Fragment2, { children: [
1921
2002
  /* @__PURE__ */ jsxs23("div", { className: step2, "aria-current": isActive ? "step" : void 0, children: [
1922
- /* @__PURE__ */ jsx37("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ jsx37(CheckIcon, { size: 14 }) : index + 1 }),
1923
- /* @__PURE__ */ jsx37("span", { className: labelFor(isActive), children: s.label })
2003
+ /* @__PURE__ */ jsx38("span", { className: markerFor(state), children: state === "done" ? /* @__PURE__ */ jsx38(CheckIcon, { size: 14 }) : index + 1 }),
2004
+ /* @__PURE__ */ jsx38("span", { className: labelFor(isActive), children: s.label })
1924
2005
  ] }),
1925
- index < steps.length - 1 && /* @__PURE__ */ jsx37("span", { "data-part": "connector", className: connector2 })
2006
+ index < steps.length - 1 && /* @__PURE__ */ jsx38("span", { "data-part": "connector", className: connector2 })
1926
2007
  ] }, index)
1927
2008
  );
1928
2009
  }) });
@@ -1932,7 +2013,7 @@ var Stepper = forwardRef25(function Stepper2({ steps, active: active2 = 0, class
1932
2013
  import { forwardRef as forwardRef26, useId as useId4, useRef as useRef4 } from "react";
1933
2014
 
1934
2015
  // src/components/tabs/use-styles.ts
1935
- import { useMemo as useMemo25 } from "react";
2016
+ import { useMemo as useMemo27 } from "react";
1936
2017
 
1937
2018
  // src/components/tabs/use-styles.css.ts
1938
2019
  var panel2 = "use-styles_panel__1l4m7t43";
@@ -1943,7 +2024,7 @@ var tabActive = "use-styles_tabActive__1l4m7t42";
1943
2024
  // src/components/tabs/use-styles.ts
1944
2025
  function useStyles24() {
1945
2026
  const { themeClass } = useTheme();
1946
- return useMemo25(() => {
2027
+ return useMemo27(() => {
1947
2028
  const root24 = [themeClass, root19].filter(Boolean).join(" ");
1948
2029
  const tabClass = (active2) => [tab, active2 && tabActive].filter(Boolean).join(" ");
1949
2030
  return { root: root24, tab, tabClass, panel: panel2 };
@@ -1951,7 +2032,7 @@ function useStyles24() {
1951
2032
  }
1952
2033
 
1953
2034
  // src/components/tabs/index.tsx
1954
- import { Fragment as Fragment3, jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
2035
+ import { Fragment as Fragment3, jsx as jsx39, jsxs as jsxs24 } from "react/jsx-runtime";
1955
2036
  var Tabs = forwardRef26(function Tabs2({ items, value, onChange, ...rest }, ref) {
1956
2037
  const { root: root24, tabClass, panel: panel3 } = useStyles24();
1957
2038
  const baseId = useId4();
@@ -1988,10 +2069,10 @@ var Tabs = forwardRef26(function Tabs2({ items, value, onChange, ...rest }, ref)
1988
2069
  }
1989
2070
  };
1990
2071
  return /* @__PURE__ */ jsxs24(Fragment3, { children: [
1991
- /* @__PURE__ */ jsx38("div", { ref, role: "tablist", className: root24, ...rest, children: items.map((item3, index) => {
2072
+ /* @__PURE__ */ jsx39("div", { ref, role: "tablist", className: root24, ...rest, children: items.map((item3, index) => {
1992
2073
  const active2 = item3.value === value;
1993
2074
  const tabbable = active2 || activeIndex === -1 && index === 0;
1994
- return /* @__PURE__ */ jsx38(
2075
+ return /* @__PURE__ */ jsx39(
1995
2076
  "button",
1996
2077
  {
1997
2078
  ref: (el) => {
@@ -2011,7 +2092,7 @@ var Tabs = forwardRef26(function Tabs2({ items, value, onChange, ...rest }, ref)
2011
2092
  item3.value
2012
2093
  );
2013
2094
  }) }),
2014
- hasPanels && items.map((item3) => /* @__PURE__ */ jsx38(
2095
+ hasPanels && items.map((item3) => /* @__PURE__ */ jsx39(
2015
2096
  "div",
2016
2097
  {
2017
2098
  role: "tabpanel",
@@ -2038,7 +2119,7 @@ import {
2038
2119
  } from "react";
2039
2120
 
2040
2121
  // src/components/menu/use-styles.ts
2041
- import { useMemo as useMemo26 } from "react";
2122
+ import { useMemo as useMemo28 } from "react";
2042
2123
 
2043
2124
  // src/components/menu/use-styles.css.ts
2044
2125
  var danger = "use-styles_danger__1uyxaj3";
@@ -2049,7 +2130,7 @@ var wrapper3 = "use-styles_wrapper__1uyxaj0";
2049
2130
  // src/components/menu/use-styles.ts
2050
2131
  function useStyles25() {
2051
2132
  const { themeClass } = useTheme();
2052
- return useMemo26(
2133
+ return useMemo28(
2053
2134
  () => ({
2054
2135
  wrapper: [themeClass, wrapper3].filter(Boolean).join(" "),
2055
2136
  list,
@@ -2061,13 +2142,14 @@ function useStyles25() {
2061
2142
  }
2062
2143
 
2063
2144
  // src/components/menu/index.tsx
2064
- import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
2145
+ import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
2065
2146
  function assignRef(ref, value) {
2066
2147
  if (typeof ref === "function") ref(value);
2067
2148
  else if (ref) ref.current = value;
2068
2149
  }
2069
- var Menu = forwardRef27(function Menu2({ trigger: trigger2, items }, ref) {
2150
+ var Menu = forwardRef27(function Menu2({ trigger: trigger2, items, testId }, ref) {
2070
2151
  const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles25();
2152
+ const { testId: rootTestId, slot } = useTestId("menu", testId);
2071
2153
  const [open, setOpen] = useState8(false);
2072
2154
  const [alignEnd, setAlignEnd] = useState8(false);
2073
2155
  const rootRef = useRef5(null);
@@ -2165,34 +2247,45 @@ var Menu = forwardRef27(function Menu2({ trigger: trigger2, items }, ref) {
2165
2247
  setOpen((prev) => !prev);
2166
2248
  }
2167
2249
  });
2168
- return /* @__PURE__ */ jsxs25("div", { ref: setRootRef, className: wrapper4, children: [
2169
- clonedTrigger,
2170
- open && /* @__PURE__ */ jsx39(
2171
- "div",
2172
- {
2173
- ref: listRef,
2174
- role: "menu",
2175
- className: list2,
2176
- "data-align": alignEnd ? "end" : "start",
2177
- onKeyDown: onMenuKeyDown,
2178
- children: items.map((entry, index) => /* @__PURE__ */ jsx39(
2179
- "button",
2250
+ return /* @__PURE__ */ jsxs25(
2251
+ "div",
2252
+ {
2253
+ ref: setRootRef,
2254
+ className: wrapper4,
2255
+ "data-testid": rootTestId,
2256
+ "data-state": open ? "open" : "closed",
2257
+ children: [
2258
+ clonedTrigger,
2259
+ open && /* @__PURE__ */ jsx40(
2260
+ "div",
2180
2261
  {
2181
- type: "button",
2182
- role: "menuitem",
2183
- tabIndex: -1,
2184
- className: entry.danger ? dangerItem : item3,
2185
- onClick: () => {
2186
- entry.onClick?.();
2187
- setOpen(false);
2188
- },
2189
- children: entry.label
2190
- },
2191
- index
2192
- ))
2193
- }
2194
- )
2195
- ] });
2262
+ ref: listRef,
2263
+ role: "menu",
2264
+ className: list2,
2265
+ "data-align": alignEnd ? "end" : "start",
2266
+ "data-testid": slot("list"),
2267
+ onKeyDown: onMenuKeyDown,
2268
+ children: items.map((entry, index) => /* @__PURE__ */ jsx40(
2269
+ "button",
2270
+ {
2271
+ type: "button",
2272
+ role: "menuitem",
2273
+ tabIndex: -1,
2274
+ className: entry.danger ? dangerItem : item3,
2275
+ "data-testid": slot(`item-${index}`),
2276
+ onClick: () => {
2277
+ entry.onClick?.();
2278
+ setOpen(false);
2279
+ },
2280
+ children: entry.label
2281
+ },
2282
+ index
2283
+ ))
2284
+ }
2285
+ )
2286
+ ]
2287
+ }
2288
+ );
2196
2289
  });
2197
2290
 
2198
2291
  // src/components/dialog/index.tsx
@@ -2205,7 +2298,7 @@ import {
2205
2298
  import { createPortal } from "react-dom";
2206
2299
 
2207
2300
  // src/components/dialog/use-styles.ts
2208
- import { useMemo as useMemo27 } from "react";
2301
+ import { useMemo as useMemo29 } from "react";
2209
2302
 
2210
2303
  // src/components/dialog/use-styles.css.ts
2211
2304
  var actions = "use-styles_actions__5tstu83";
@@ -2216,7 +2309,7 @@ var surface = "use-styles_surface__5tstu81";
2216
2309
  // src/components/dialog/use-styles.ts
2217
2310
  function useStyles26() {
2218
2311
  const { themeClass } = useTheme();
2219
- return useMemo27(
2312
+ return useMemo29(
2220
2313
  () => ({
2221
2314
  overlay: [themeClass, overlay].filter(Boolean).join(" "),
2222
2315
  surface,
@@ -2228,14 +2321,15 @@ function useStyles26() {
2228
2321
  }
2229
2322
 
2230
2323
  // src/components/dialog/index.tsx
2231
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
2324
+ import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
2232
2325
  var FOCUSABLE = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
2233
2326
  function assignRef2(ref, value) {
2234
2327
  if (typeof ref === "function") ref(value);
2235
2328
  else if (ref) ref.current = value;
2236
2329
  }
2237
- var Dialog = forwardRef28(function Dialog2({ open, onClose, title, actions: actions3, children }, ref) {
2330
+ var Dialog = forwardRef28(function Dialog2({ open, onClose, title, actions: actions3, children, testId }, ref) {
2238
2331
  const { overlay: overlay2, surface: surface2, body: body3, actions: actionsClass } = useStyles26();
2332
+ const { testId: rootTestId, slot } = useTestId("dialog", testId);
2239
2333
  const surfaceRef = useRef6(null);
2240
2334
  const setSurfaceRef = (node) => {
2241
2335
  surfaceRef.current = node;
@@ -2296,7 +2390,7 @@ var Dialog = forwardRef28(function Dialog2({ open, onClose, title, actions: acti
2296
2390
  };
2297
2391
  return createPortal(
2298
2392
  // biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.
2299
- /* @__PURE__ */ jsx40("div", { className: overlay2, "data-testid": "dialog-overlay", onClick: onClose, children: /* @__PURE__ */ jsxs26(
2393
+ /* @__PURE__ */ jsx41("div", { className: overlay2, "data-testid": slot("overlay"), onClick: onClose, children: /* @__PURE__ */ jsxs26(
2300
2394
  "div",
2301
2395
  {
2302
2396
  ref: setSurfaceRef,
@@ -2305,12 +2399,13 @@ var Dialog = forwardRef28(function Dialog2({ open, onClose, title, actions: acti
2305
2399
  "aria-modal": "true",
2306
2400
  "aria-labelledby": titleId,
2307
2401
  tabIndex: -1,
2402
+ "data-testid": rootTestId,
2308
2403
  onClick: stop,
2309
2404
  onKeyDown: onSurfaceKeyDown,
2310
2405
  children: [
2311
- title != null && /* @__PURE__ */ jsx40(Typography, { variant: "h3", as: "h2", id: titleId, children: title }),
2312
- children != null && /* @__PURE__ */ jsx40("div", { className: body3, children: /* @__PURE__ */ jsx40(Typography, { variant: "body", color: "fg2", children }) }),
2313
- actions3 != null && /* @__PURE__ */ jsx40("div", { className: actionsClass, children: actions3 })
2406
+ title != null && /* @__PURE__ */ jsx41(Typography, { variant: "h3", as: "h2", id: titleId, children: title }),
2407
+ children != null && /* @__PURE__ */ jsx41("div", { className: body3, children: /* @__PURE__ */ jsx41(Typography, { variant: "body", color: "fg2", children }) }),
2408
+ actions3 != null && /* @__PURE__ */ jsx41("div", { className: actionsClass, children: actions3 })
2314
2409
  ]
2315
2410
  }
2316
2411
  ) }),
@@ -2323,7 +2418,7 @@ import { forwardRef as forwardRef29 } from "react";
2323
2418
  import { createPortal as createPortal2 } from "react-dom";
2324
2419
 
2325
2420
  // src/components/snackbar/use-styles.ts
2326
- import { useMemo as useMemo28 } from "react";
2421
+ import { useMemo as useMemo30 } from "react";
2327
2422
 
2328
2423
  // src/components/snackbar/use-styles.css.ts
2329
2424
  var closeBtn = "use-styles_closeBtn__ihzsep2";
@@ -2333,7 +2428,7 @@ var root20 = "use-styles_root__ihzsep0 surfaces_inkySurface__1qa7atn2";
2333
2428
  // src/components/snackbar/use-styles.ts
2334
2429
  function useStyles27() {
2335
2430
  const { themeClass } = useTheme();
2336
- return useMemo28(
2431
+ return useMemo30(
2337
2432
  () => ({
2338
2433
  root: [themeClass, root20].filter(Boolean).join(" "),
2339
2434
  message,
@@ -2344,15 +2439,15 @@ function useStyles27() {
2344
2439
  }
2345
2440
 
2346
2441
  // src/components/snackbar/index.tsx
2347
- import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
2442
+ import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
2348
2443
  var Snackbar = forwardRef29(function Snackbar2({ open, message: message2, action, onClose }, ref) {
2349
2444
  const { root: root24, message: messageClass, closeBtn: closeBtn2 } = useStyles27();
2350
2445
  if (!open || typeof document === "undefined") return null;
2351
2446
  return createPortal2(
2352
2447
  /* @__PURE__ */ jsxs27("div", { ref, role: "status", className: root24, children: [
2353
- /* @__PURE__ */ jsx41("span", { className: messageClass, children: message2 }),
2448
+ /* @__PURE__ */ jsx42("span", { className: messageClass, children: message2 }),
2354
2449
  action,
2355
- onClose && /* @__PURE__ */ jsx41("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ jsx41(XIcon, { size: 18 }) })
2450
+ onClose && /* @__PURE__ */ jsx42("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ jsx42(XIcon, { size: 18 }) })
2356
2451
  ] }),
2357
2452
  document.body
2358
2453
  );
@@ -2362,7 +2457,7 @@ var Snackbar = forwardRef29(function Snackbar2({ open, message: message2, action
2362
2457
  import { forwardRef as forwardRef30 } from "react";
2363
2458
 
2364
2459
  // src/components/table/use-styles.ts
2365
- import { useMemo as useMemo29 } from "react";
2460
+ import { useMemo as useMemo31 } from "react";
2366
2461
 
2367
2462
  // src/components/table/use-styles.css.ts
2368
2463
  var alignRight = "use-styles_alignRight__1n2cz6i3";
@@ -2374,7 +2469,7 @@ var th = "use-styles_th__1n2cz6i1";
2374
2469
  // src/components/table/use-styles.ts
2375
2470
  function useStyles28({ className }) {
2376
2471
  const { themeClass } = useTheme();
2377
- const root24 = useMemo29(
2472
+ const root24 = useMemo31(
2378
2473
  () => [themeClass, root21, className].filter(Boolean).join(" "),
2379
2474
  [themeClass, className]
2380
2475
  );
@@ -2388,15 +2483,15 @@ function useStyles28({ className }) {
2388
2483
  }
2389
2484
 
2390
2485
  // src/components/table/index.tsx
2391
- import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
2486
+ import { jsx as jsx43, jsxs as jsxs28 } from "react/jsx-runtime";
2392
2487
  function TableInner({ columns, rows, getRowKey, className, caption: caption2, ...rest }, ref) {
2393
2488
  const { root: root24, th: th2, td: td2, alignRight: alignRight2, caption: captionClass } = useStyles28({ className });
2394
2489
  const headClass = (column) => column.align === "right" ? `${th2} ${alignRight2}` : th2;
2395
2490
  const cellClass = (column) => column.align === "right" ? `${td2} ${alignRight2}` : td2;
2396
2491
  return /* @__PURE__ */ jsxs28("table", { ref, className: root24, ...rest, children: [
2397
- caption2 != null && /* @__PURE__ */ jsx42("caption", { className: captionClass, children: caption2 }),
2398
- /* @__PURE__ */ jsx42("thead", { children: /* @__PURE__ */ jsx42("tr", { children: columns.map((column) => /* @__PURE__ */ jsx42("th", { scope: "col", className: headClass(column), children: column.header }, column.key)) }) }),
2399
- /* @__PURE__ */ jsx42("tbody", { children: rows.map((row, index) => /* @__PURE__ */ jsx42("tr", { children: columns.map((column) => /* @__PURE__ */ jsx42("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
2492
+ caption2 != null && /* @__PURE__ */ jsx43("caption", { className: captionClass, children: caption2 }),
2493
+ /* @__PURE__ */ jsx43("thead", { children: /* @__PURE__ */ jsx43("tr", { children: columns.map((column) => /* @__PURE__ */ jsx43("th", { scope: "col", className: headClass(column), children: column.header }, column.key)) }) }),
2494
+ /* @__PURE__ */ jsx43("tbody", { children: rows.map((row, index) => /* @__PURE__ */ jsx43("tr", { children: columns.map((column) => /* @__PURE__ */ jsx43("td", { className: cellClass(column), children: column.render ? column.render(row) : String(row[column.key]) }, column.key)) }, getRowKey ? getRowKey(row, index) : index)) })
2400
2495
  ] });
2401
2496
  }
2402
2497
  var TableForwarded = forwardRef30(TableInner);
@@ -2407,7 +2502,7 @@ var Table = TableForwarded;
2407
2502
  import { forwardRef as forwardRef31 } from "react";
2408
2503
 
2409
2504
  // src/components/app-bar/use-styles.ts
2410
- import { useMemo as useMemo30 } from "react";
2505
+ import { useMemo as useMemo32 } from "react";
2411
2506
 
2412
2507
  // src/components/app-bar/use-styles.css.ts
2413
2508
  var actions2 = "use-styles_actions__1h133nh2";
@@ -2417,7 +2512,7 @@ var root22 = "use-styles_root__1h133nh0";
2417
2512
  // src/components/app-bar/use-styles.ts
2418
2513
  function useStyles29({ className }) {
2419
2514
  const { themeClass } = useTheme();
2420
- const root24 = useMemo30(
2515
+ const root24 = useMemo32(
2421
2516
  () => [themeClass, root22, className].filter(Boolean).join(" "),
2422
2517
  [themeClass, className]
2423
2518
  );
@@ -2425,13 +2520,13 @@ function useStyles29({ className }) {
2425
2520
  }
2426
2521
 
2427
2522
  // src/components/app-bar/index.tsx
2428
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
2523
+ import { jsx as jsx44, jsxs as jsxs29 } from "react/jsx-runtime";
2429
2524
  var AppBar = forwardRef31(function AppBar2({ brand: brand2, actions: actions3, className, children, ...rest }, ref) {
2430
2525
  const styles = useStyles29({ className });
2431
2526
  return /* @__PURE__ */ jsxs29("header", { ref, className: styles.root, ...rest, children: [
2432
- brand2 !== void 0 ? /* @__PURE__ */ jsx43("div", { className: styles.brand, children: brand2 }) : null,
2527
+ brand2 !== void 0 ? /* @__PURE__ */ jsx44("div", { className: styles.brand, children: brand2 }) : null,
2433
2528
  children,
2434
- actions3 !== void 0 ? /* @__PURE__ */ jsx43("div", { className: styles.actions, children: actions3 }) : null
2529
+ actions3 !== void 0 ? /* @__PURE__ */ jsx44("div", { className: styles.actions, children: actions3 }) : null
2435
2530
  ] });
2436
2531
  });
2437
2532
 
@@ -2439,7 +2534,7 @@ var AppBar = forwardRef31(function AppBar2({ brand: brand2, actions: actions3, c
2439
2534
  import { forwardRef as forwardRef32 } from "react";
2440
2535
 
2441
2536
  // src/components/list-item/use-styles.ts
2442
- import { useMemo as useMemo31 } from "react";
2537
+ import { useMemo as useMemo33 } from "react";
2443
2538
 
2444
2539
  // src/components/list-item/use-styles.css.ts
2445
2540
  var content2 = "use-styles_content__kbreq13";
@@ -2454,7 +2549,7 @@ function useStyles30({
2454
2549
  className
2455
2550
  }) {
2456
2551
  const { themeClass } = useTheme();
2457
- const root24 = useMemo31(
2552
+ const root24 = useMemo33(
2458
2553
  () => [themeClass, root23, selected3 && selected2, className].filter(Boolean).join(" "),
2459
2554
  [themeClass, selected3, className]
2460
2555
  );
@@ -2462,20 +2557,20 @@ function useStyles30({
2462
2557
  }
2463
2558
 
2464
2559
  // src/components/list-item/index.tsx
2465
- import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
2560
+ import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
2466
2561
  var ListItem = forwardRef32(function ListItem2({ leading: leading2, trailing: trailing2, selected: selected3, className, children, ...rest }, ref) {
2467
2562
  const styles = useStyles30({ selected: selected3, className });
2468
2563
  return /* @__PURE__ */ jsxs30("div", { ref, className: styles.root, ...rest, children: [
2469
- leading2 != null && /* @__PURE__ */ jsx44("span", { className: styles.leading, children: leading2 }),
2470
- /* @__PURE__ */ jsx44("span", { className: styles.content, children }),
2471
- trailing2 != null && /* @__PURE__ */ jsx44("span", { className: styles.trailing, children: trailing2 })
2564
+ leading2 != null && /* @__PURE__ */ jsx45("span", { className: styles.leading, children: leading2 }),
2565
+ /* @__PURE__ */ jsx45("span", { className: styles.content, children }),
2566
+ trailing2 != null && /* @__PURE__ */ jsx45("span", { className: styles.trailing, children: trailing2 })
2472
2567
  ] });
2473
2568
  });
2474
2569
 
2475
2570
  // src/components/icons/chevron-up/index.tsx
2476
- import { jsx as jsx45 } from "react/jsx-runtime";
2571
+ import { jsx as jsx46 } from "react/jsx-runtime";
2477
2572
  function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2478
- return /* @__PURE__ */ jsx45(
2573
+ return /* @__PURE__ */ jsx46(
2479
2574
  "svg",
2480
2575
  {
2481
2576
  xmlns: "http://www.w3.org/2000/svg",
@@ -2489,13 +2584,13 @@ function ChevronUpIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2489
2584
  strokeLinejoin: "round",
2490
2585
  "aria-hidden": "true",
2491
2586
  ...rest,
2492
- children: /* @__PURE__ */ jsx45("path", { d: "m18 15-6-6-6 6" })
2587
+ children: /* @__PURE__ */ jsx46("path", { d: "m18 15-6-6-6 6" })
2493
2588
  }
2494
2589
  );
2495
2590
  }
2496
2591
 
2497
2592
  // src/components/icons/search/index.tsx
2498
- import { jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
2593
+ import { jsx as jsx47, jsxs as jsxs31 } from "react/jsx-runtime";
2499
2594
  function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2500
2595
  return /* @__PURE__ */ jsxs31(
2501
2596
  "svg",
@@ -2512,15 +2607,15 @@ function SearchIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2512
2607
  "aria-hidden": "true",
2513
2608
  ...rest,
2514
2609
  children: [
2515
- /* @__PURE__ */ jsx46("circle", { cx: "11", cy: "11", r: "8" }),
2516
- /* @__PURE__ */ jsx46("path", { d: "m21 21-4.3-4.3" })
2610
+ /* @__PURE__ */ jsx47("circle", { cx: "11", cy: "11", r: "8" }),
2611
+ /* @__PURE__ */ jsx47("path", { d: "m21 21-4.3-4.3" })
2517
2612
  ]
2518
2613
  }
2519
2614
  );
2520
2615
  }
2521
2616
 
2522
2617
  // src/components/icons/plus/index.tsx
2523
- import { jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
2618
+ import { jsx as jsx48, jsxs as jsxs32 } from "react/jsx-runtime";
2524
2619
  function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2525
2620
  return /* @__PURE__ */ jsxs32(
2526
2621
  "svg",
@@ -2537,17 +2632,17 @@ function PlusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2537
2632
  "aria-hidden": "true",
2538
2633
  ...rest,
2539
2634
  children: [
2540
- /* @__PURE__ */ jsx47("path", { d: "M5 12h14" }),
2541
- /* @__PURE__ */ jsx47("path", { d: "M12 5v14" })
2635
+ /* @__PURE__ */ jsx48("path", { d: "M5 12h14" }),
2636
+ /* @__PURE__ */ jsx48("path", { d: "M12 5v14" })
2542
2637
  ]
2543
2638
  }
2544
2639
  );
2545
2640
  }
2546
2641
 
2547
2642
  // src/components/icons/minus/index.tsx
2548
- import { jsx as jsx48 } from "react/jsx-runtime";
2643
+ import { jsx as jsx49 } from "react/jsx-runtime";
2549
2644
  function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2550
- return /* @__PURE__ */ jsx48(
2645
+ return /* @__PURE__ */ jsx49(
2551
2646
  "svg",
2552
2647
  {
2553
2648
  xmlns: "http://www.w3.org/2000/svg",
@@ -2561,13 +2656,13 @@ function MinusIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2561
2656
  strokeLinejoin: "round",
2562
2657
  "aria-hidden": "true",
2563
2658
  ...rest,
2564
- children: /* @__PURE__ */ jsx48("path", { d: "M5 12h14" })
2659
+ children: /* @__PURE__ */ jsx49("path", { d: "M5 12h14" })
2565
2660
  }
2566
2661
  );
2567
2662
  }
2568
2663
 
2569
2664
  // src/components/icons/more-horizontal/index.tsx
2570
- import { jsx as jsx49, jsxs as jsxs33 } from "react/jsx-runtime";
2665
+ import { jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
2571
2666
  function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2572
2667
  return /* @__PURE__ */ jsxs33(
2573
2668
  "svg",
@@ -2584,9 +2679,9 @@ function MoreHorizontalIcon({ size: size3 = 20, strokeWidth = 1.75, ...rest }) {
2584
2679
  "aria-hidden": "true",
2585
2680
  ...rest,
2586
2681
  children: [
2587
- /* @__PURE__ */ jsx49("circle", { cx: "12", cy: "12", r: "1" }),
2588
- /* @__PURE__ */ jsx49("circle", { cx: "19", cy: "12", r: "1" }),
2589
- /* @__PURE__ */ jsx49("circle", { cx: "5", cy: "12", r: "1" })
2682
+ /* @__PURE__ */ jsx50("circle", { cx: "12", cy: "12", r: "1" }),
2683
+ /* @__PURE__ */ jsx50("circle", { cx: "19", cy: "12", r: "1" }),
2684
+ /* @__PURE__ */ jsx50("circle", { cx: "5", cy: "12", r: "1" })
2590
2685
  ]
2591
2686
  }
2592
2687
  );
@@ -2634,6 +2729,7 @@ export {
2634
2729
  Switch,
2635
2730
  Table,
2636
2731
  Tabs,
2732
+ TestIdProvider,
2637
2733
  TextField,
2638
2734
  ThemeProvider,
2639
2735
  Tooltip,
@@ -2647,6 +2743,7 @@ export {
2647
2743
  vars as theme,
2648
2744
  themes,
2649
2745
  usePrevious,
2746
+ useTestId,
2650
2747
  useTheme,
2651
2748
  useToggle
2652
2749
  };