@zelelo/iskra-ui 0.1.1 → 0.2.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
@@ -389,28 +389,122 @@ var Checkbox = forwardRef2(
389
389
  );
390
390
  Checkbox.displayName = "Checkbox";
391
391
 
392
+ // src/components/Divider/Divider.tsx
393
+ import "react";
394
+
395
+ // src/components/Divider/Divider.module.css
396
+ var Divider_default = {
397
+ divider: "Divider_divider",
398
+ horizontal: "Divider_horizontal",
399
+ vertical: "Divider_vertical",
400
+ withLabel: "Divider_withLabel",
401
+ label: "Divider_label",
402
+ start: "Divider_start",
403
+ end: "Divider_end"
404
+ };
405
+
406
+ // src/components/Divider/Divider.tsx
407
+ import { jsx as jsx11 } from "react/jsx-runtime";
408
+ var Divider = ({
409
+ orientation = "horizontal",
410
+ decorative = false,
411
+ thickness,
412
+ labelPosition = "center",
413
+ className,
414
+ style,
415
+ children,
416
+ ...props
417
+ }) => {
418
+ const hasLabel = Boolean(children) && orientation === "horizontal";
419
+ const classes = cx(
420
+ Divider_default.divider,
421
+ Divider_default[orientation],
422
+ hasLabel && Divider_default.withLabel,
423
+ hasLabel && Divider_default[labelPosition],
424
+ className
425
+ );
426
+ return /* @__PURE__ */ jsx11(
427
+ "div",
428
+ {
429
+ className: classes,
430
+ style: { ...style, "--divider-thickness": toCss(thickness) },
431
+ role: hasLabel ? void 0 : decorative ? "none" : "separator",
432
+ "aria-orientation": !decorative && orientation === "vertical" ? "vertical" : void 0,
433
+ ...props,
434
+ children: hasLabel && /* @__PURE__ */ jsx11("span", { className: Divider_default.label, children })
435
+ }
436
+ );
437
+ };
438
+ Divider.displayName = "Divider";
439
+
392
440
  // src/components/Input/Input.tsx
393
- import { forwardRef as forwardRef3, useId as useId3 } from "react";
441
+ import { forwardRef as forwardRef3 } from "react";
442
+
443
+ // src/components/FormField/FormField.tsx
444
+ import { useId as useId3 } from "react";
445
+
446
+ // src/components/FormField/FormField.module.css
447
+ var FormField_default = {
448
+ sm: "FormField_sm",
449
+ md: "FormField_md",
450
+ lg: "FormField_lg",
451
+ root: "FormField_root",
452
+ label: "FormField_label",
453
+ required: "FormField_required",
454
+ box: "FormField_box",
455
+ disabled: "FormField_disabled",
456
+ invalid: "FormField_invalid",
457
+ message: "FormField_message",
458
+ error: "FormField_error"
459
+ };
460
+
461
+ // src/components/FormField/FormField.tsx
462
+ import { jsx as jsx12, jsxs as jsxs4 } from "react/jsx-runtime";
463
+ var FormField = ({
464
+ id,
465
+ label,
466
+ hint,
467
+ error,
468
+ required,
469
+ disabled,
470
+ size = "md",
471
+ className,
472
+ "aria-describedby": ariaDescribedBy,
473
+ children
474
+ }) => {
475
+ const autoId = useId3();
476
+ const controlId = id ?? autoId;
477
+ const hasError = Boolean(error);
478
+ const message = hasError ? error : hint;
479
+ const messageId = message ? `${controlId}-message` : void 0;
480
+ const describedBy = [ariaDescribedBy, messageId].filter(Boolean).join(" ") || void 0;
481
+ return /* @__PURE__ */ jsxs4("div", { className: cx(FormField_default.root, FormField_default[size], className), children: [
482
+ label && /* @__PURE__ */ jsxs4("label", { htmlFor: controlId, className: FormField_default.label, children: [
483
+ label,
484
+ required && /* @__PURE__ */ jsx12("span", { className: FormField_default.required, "aria-hidden": "true", children: " *" })
485
+ ] }),
486
+ children({
487
+ controlProps: {
488
+ id: controlId,
489
+ "aria-describedby": describedBy,
490
+ "aria-invalid": hasError || void 0
491
+ },
492
+ boxClassName: cx(FormField_default.box, hasError && FormField_default.invalid, disabled && FormField_default.disabled)
493
+ }),
494
+ message && /* @__PURE__ */ jsx12("p", { id: messageId, className: cx(FormField_default.message, hasError && FormField_default.error), children: message })
495
+ ] });
496
+ };
497
+ FormField.displayName = "FormField";
394
498
 
395
499
  // src/components/Input/Input.module.css
396
500
  var Input_default = {
397
- sm: "Input_sm",
398
- md: "Input_md",
399
- lg: "Input_lg",
400
- root: "Input_root",
401
- label: "Input_label",
402
- required: "Input_required",
403
- field: "Input_field",
404
- disabled: "Input_disabled",
405
- invalid: "Input_invalid",
501
+ box: "Input_box",
406
502
  input: "Input_input",
407
- icon: "Input_icon",
408
- message: "Input_message",
409
- error: "Input_error"
503
+ icon: "Input_icon"
410
504
  };
411
505
 
412
506
  // src/components/Input/Input.tsx
413
- import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
507
+ import { jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
414
508
  var Input = forwardRef3(
415
509
  ({
416
510
  size = "md",
@@ -425,39 +519,35 @@ var Input = forwardRef3(
425
519
  disabled,
426
520
  "aria-describedby": ariaDescribedBy,
427
521
  ...props
428
- }, ref) => {
429
- const autoId = useId3();
430
- const inputId = id ?? autoId;
431
- const hasError = Boolean(error);
432
- const message = hasError ? error : hint;
433
- const messageId = message ? `${inputId}-message` : void 0;
434
- const describeBy = [ariaDescribedBy, messageId].filter(Boolean).join(" ") || void 0;
435
- return /* @__PURE__ */ jsxs4("div", { className: cx(Input_default.root, Input_default[size], className), children: [
436
- label && /* @__PURE__ */ jsxs4("label", { htmlFor: inputId, className: Input_default.label, children: [
437
- label,
438
- " ",
439
- required && /* @__PURE__ */ jsx11("span", { className: Input_default.required, "aria-hidden": "true", children: " *" })
440
- ] }),
441
- /* @__PURE__ */ jsxs4("div", { className: cx(Input_default.field, hasError && Input_default.invalid, disabled && Input_default.disabled), children: [
442
- startIcon && /* @__PURE__ */ jsx11("span", { className: Input_default.icon, children: startIcon }),
443
- /* @__PURE__ */ jsx11(
522
+ }, ref) => /* @__PURE__ */ jsx13(
523
+ FormField,
524
+ {
525
+ id,
526
+ size,
527
+ label,
528
+ hint,
529
+ error,
530
+ required,
531
+ disabled,
532
+ className,
533
+ "aria-describedby": ariaDescribedBy,
534
+ children: ({ controlProps, boxClassName }) => /* @__PURE__ */ jsxs5("div", { className: cx(boxClassName, Input_default.box), children: [
535
+ startIcon && /* @__PURE__ */ jsx13("span", { className: Input_default.icon, children: startIcon }),
536
+ /* @__PURE__ */ jsx13(
444
537
  "input",
445
538
  {
446
539
  ref,
447
- id: inputId,
540
+ ...controlProps,
448
541
  required,
449
542
  disabled,
450
- "aria-invalid": hasError || void 0,
451
- "aria-describedby": describeBy,
452
543
  className: Input_default.input,
453
544
  ...props
454
545
  }
455
546
  ),
456
- endIcon && /* @__PURE__ */ jsx11("span", { className: Input_default.icon, children: endIcon })
457
- ] }),
458
- message && /* @__PURE__ */ jsx11("p", { id: messageId, className: cx(Input_default.message, hasError && Input_default.error), children: message })
459
- ] });
460
- }
547
+ endIcon && /* @__PURE__ */ jsx13("span", { className: Input_default.icon, children: endIcon })
548
+ ] })
549
+ }
550
+ )
461
551
  );
462
552
  Input.displayName = "Input";
463
553
 
@@ -481,7 +571,7 @@ var Modal_default = {
481
571
  };
482
572
 
483
573
  // src/components/Modal/Modal.tsx
484
- import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
574
+ import { jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
485
575
  var Modal = ({
486
576
  open,
487
577
  onClose,
@@ -504,7 +594,7 @@ var Modal = ({
504
594
  return (
505
595
  // Escape у <dialog> уже закрывает модалку с клавиатуры
506
596
  // oxlint-disable-next-line jsx-a11y/click-events-have-key-events jsx-a11y/no-noninteractive-element-interactions
507
- /* @__PURE__ */ jsx12(
597
+ /* @__PURE__ */ jsx14(
508
598
  "dialog",
509
599
  {
510
600
  ref,
@@ -513,13 +603,13 @@ var Modal = ({
513
603
  "aria-labelledby": title ? titleId : void 0,
514
604
  onClose,
515
605
  onClick: (e) => e.target === e.currentTarget && close(),
516
- children: /* @__PURE__ */ jsxs5("div", { className: Modal_default.content, children: [
517
- title && /* @__PURE__ */ jsxs5("header", { className: Modal_default.header, children: [
518
- /* @__PURE__ */ jsx12("h2", { id: titleId, className: Modal_default.title, children: title }),
519
- /* @__PURE__ */ jsx12("button", { type: "button", className: Modal_default.close, "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", onClick: close, children: "\xD7" })
606
+ children: /* @__PURE__ */ jsxs6("div", { className: Modal_default.content, children: [
607
+ title && /* @__PURE__ */ jsxs6("header", { className: Modal_default.header, children: [
608
+ /* @__PURE__ */ jsx14("h2", { id: titleId, className: Modal_default.title, children: title }),
609
+ /* @__PURE__ */ jsx14("button", { type: "button", className: Modal_default.close, "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", onClick: close, children: "\xD7" })
520
610
  ] }),
521
- /* @__PURE__ */ jsx12("div", { className: Modal_default.body, children }),
522
- footer && /* @__PURE__ */ jsx12("footer", { className: Modal_default.footer, children: footer })
611
+ /* @__PURE__ */ jsx14("div", { className: Modal_default.body, children }),
612
+ footer && /* @__PURE__ */ jsx14("footer", { className: Modal_default.footer, children: footer })
523
613
  ] })
524
614
  }
525
615
  )
@@ -527,6 +617,56 @@ var Modal = ({
527
617
  };
528
618
  Modal.displayName = "Modal";
529
619
 
620
+ // src/components/ProgressBar/ProgressBar.module.css
621
+ var ProgressBar_default = {
622
+ progress: "ProgressBar_progress",
623
+ sm: "ProgressBar_sm",
624
+ md: "ProgressBar_md",
625
+ lg: "ProgressBar_lg",
626
+ success: "ProgressBar_success",
627
+ danger: "ProgressBar_danger",
628
+ fill: "ProgressBar_fill",
629
+ indeterminate: "ProgressBar_indeterminate"
630
+ };
631
+
632
+ // src/components/ProgressBar/ProgressBar.tsx
633
+ import { jsx as jsx15 } from "react/jsx-runtime";
634
+ var ProgressBar = ({
635
+ value,
636
+ max = 100,
637
+ size = "md",
638
+ variant = "accent",
639
+ className,
640
+ style,
641
+ ...props
642
+ }) => {
643
+ const isIndenterminate = value === void 0;
644
+ const safeMax = max > 0 ? max : 100;
645
+ const clamped = isIndenterminate ? 0 : Math.min(Math.max(value, 0), safeMax);
646
+ const percent = clamped / safeMax * 100;
647
+ const classes = cx(
648
+ ProgressBar_default.progress,
649
+ ProgressBar_default[size],
650
+ ProgressBar_default[variant],
651
+ isIndenterminate && ProgressBar_default.indeterminate,
652
+ className
653
+ );
654
+ return /* @__PURE__ */ jsx15(
655
+ "div",
656
+ {
657
+ className: classes,
658
+ style: { ...style, "--progress-offset": `${percent - 100}%` },
659
+ role: "progressbar",
660
+ "aria-valuemin": 0,
661
+ "aria-valuemax": safeMax,
662
+ "aria-valuenow": isIndenterminate ? void 0 : clamped,
663
+ ...props,
664
+ children: /* @__PURE__ */ jsx15("div", { className: ProgressBar_default.fill })
665
+ }
666
+ );
667
+ };
668
+ ProgressBar.displayName = "ProgressBar";
669
+
530
670
  // src/components/Radio/Radio.tsx
531
671
  import { forwardRef as forwardRef4, useContext as useContext3, useId as useId5 } from "react";
532
672
 
@@ -549,7 +689,7 @@ var Radio_default = {
549
689
  };
550
690
 
551
691
  // src/components/Radio/Radio.tsx
552
- import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
692
+ import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
553
693
  var Radio = forwardRef4(
554
694
  ({
555
695
  size = "md",
@@ -580,7 +720,7 @@ var Radio = forwardRef4(
580
720
  onChange?.(event);
581
721
  group?.onChange(event.target.value);
582
722
  };
583
- return /* @__PURE__ */ jsxs6(
723
+ return /* @__PURE__ */ jsxs7(
584
724
  "div",
585
725
  {
586
726
  className: cx(
@@ -591,8 +731,8 @@ var Radio = forwardRef4(
591
731
  className
592
732
  ),
593
733
  children: [
594
- /* @__PURE__ */ jsxs6("label", { className: Radio_default.label, children: [
595
- /* @__PURE__ */ jsx13(
734
+ /* @__PURE__ */ jsxs7("label", { className: Radio_default.label, children: [
735
+ /* @__PURE__ */ jsx16(
596
736
  "input",
597
737
  {
598
738
  ref,
@@ -610,9 +750,9 @@ var Radio = forwardRef4(
610
750
  }
611
751
  ),
612
752
  label,
613
- required && !group && /* @__PURE__ */ jsx13("span", { className: Radio_default.required, "aria-hidden": "true", children: " *" })
753
+ required && !group && /* @__PURE__ */ jsx16("span", { className: Radio_default.required, "aria-hidden": "true", children: " *" })
614
754
  ] }),
615
- hasError && /* @__PURE__ */ jsx13("p", { id: messageId, className: Radio_default.error, children: error })
755
+ hasError && /* @__PURE__ */ jsx16("p", { id: messageId, className: Radio_default.error, children: error })
616
756
  ]
617
757
  }
618
758
  );
@@ -625,7 +765,7 @@ import { useId as useId7 } from "react";
625
765
 
626
766
  // src/components/RadioGroup/RadioGroupProvider/RadioGroupProvider.tsx
627
767
  import { useId as useId6, useState as useState3 } from "react";
628
- import { jsx as jsx14 } from "react/jsx-runtime";
768
+ import { jsx as jsx17 } from "react/jsx-runtime";
629
769
  var RadioGroupProvider = ({
630
770
  name,
631
771
  value: controlledValue,
@@ -646,7 +786,7 @@ var RadioGroupProvider = ({
646
786
  }
647
787
  onChange?.(newValue);
648
788
  };
649
- return /* @__PURE__ */ jsx14(
789
+ return /* @__PURE__ */ jsx17(
650
790
  RadioGroupContext.Provider,
651
791
  {
652
792
  value: {
@@ -672,7 +812,7 @@ var RadioGroup_default = {
672
812
  };
673
813
 
674
814
  // src/components/RadioGroup/RadioGroup.tsx
675
- import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
815
+ import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
676
816
  var RadioGroup = ({
677
817
  value,
678
818
  defaultValue,
@@ -689,7 +829,7 @@ var RadioGroup = ({
689
829
  const labelId = useId7();
690
830
  const messageId = useId7();
691
831
  const hasError = Boolean(error);
692
- return /* @__PURE__ */ jsx15(
832
+ return /* @__PURE__ */ jsx18(
693
833
  RadioGroupProvider,
694
834
  {
695
835
  name,
@@ -698,7 +838,7 @@ var RadioGroup = ({
698
838
  onChange,
699
839
  disabled,
700
840
  required,
701
- children: /* @__PURE__ */ jsxs7(
841
+ children: /* @__PURE__ */ jsxs8(
702
842
  "div",
703
843
  {
704
844
  className: cx(RadioGroup_default.root, disabled && RadioGroup_default.disabled, className),
@@ -709,12 +849,12 @@ var RadioGroup = ({
709
849
  "aria-required": required || void 0,
710
850
  ...props,
711
851
  children: [
712
- label && /* @__PURE__ */ jsxs7("div", { id: labelId, className: RadioGroup_default.groupLabel, children: [
852
+ label && /* @__PURE__ */ jsxs8("div", { id: labelId, className: RadioGroup_default.groupLabel, children: [
713
853
  label,
714
- required && /* @__PURE__ */ jsx15("span", { className: RadioGroup_default.required, "aria-hidden": "true", children: " *" })
854
+ required && /* @__PURE__ */ jsx18("span", { className: RadioGroup_default.required, "aria-hidden": "true", children: " *" })
715
855
  ] }),
716
- /* @__PURE__ */ jsx15("div", { className: RadioGroup_default.options, children }),
717
- hasError && /* @__PURE__ */ jsx15("p", { id: messageId, className: RadioGroup_default.error, children: error })
856
+ /* @__PURE__ */ jsx18("div", { className: RadioGroup_default.options, children }),
857
+ hasError && /* @__PURE__ */ jsx18("p", { id: messageId, className: RadioGroup_default.error, children: error })
718
858
  ]
719
859
  }
720
860
  )
@@ -737,7 +877,7 @@ var Skeleton_default = {
737
877
  };
738
878
 
739
879
  // src/components/Skeleton/Skeleton.tsx
740
- import { jsx as jsx16 } from "react/jsx-runtime";
880
+ import { jsx as jsx19 } from "react/jsx-runtime";
741
881
  var Skeleton = ({
742
882
  variant = "text",
743
883
  width,
@@ -761,14 +901,14 @@ var Skeleton = ({
761
901
  borderRadius: toCss(radius)
762
902
  };
763
903
  if (variant === "text" && lines > 1) {
764
- return /* @__PURE__ */ jsx16(
904
+ return /* @__PURE__ */ jsx19(
765
905
  "span",
766
906
  {
767
907
  className: cx(Skeleton_default.lines, className),
768
908
  style: { width: sizeStyle.width, ...style },
769
909
  "aria-hidden": "true",
770
910
  ...props,
771
- children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx16(
911
+ children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx19(
772
912
  "span",
773
913
  {
774
914
  className: baseClasses,
@@ -779,14 +919,14 @@ var Skeleton = ({
779
919
  }
780
920
  );
781
921
  }
782
- return /* @__PURE__ */ jsx16(
922
+ return /* @__PURE__ */ jsx19(
783
923
  "span",
784
924
  {
785
925
  className: cx(baseClasses, children != null && Skeleton_default.withChildren, className),
786
926
  style: { ...sizeStyle, ...style },
787
927
  "aria-hidden": "true",
788
928
  ...props,
789
- children: children != null && /* @__PURE__ */ jsx16("span", { className: Skeleton_default.hidden, children })
929
+ children: children != null && /* @__PURE__ */ jsx19("span", { className: Skeleton_default.hidden, children })
790
930
  }
791
931
  );
792
932
  };
@@ -816,7 +956,7 @@ var Spinner_default = {
816
956
  };
817
957
 
818
958
  // src/components/Spinner/Spinner.tsx
819
- import { jsx as jsx17 } from "react/jsx-runtime";
959
+ import { jsx as jsx20 } from "react/jsx-runtime";
820
960
  var Spinner = ({
821
961
  variant = "circle",
822
962
  size = "md",
@@ -827,7 +967,7 @@ var Spinner = ({
827
967
  ...props
828
968
  }) => {
829
969
  const { items } = SPINNER_VARIANTS[variant];
830
- return /* @__PURE__ */ jsx17(
970
+ return /* @__PURE__ */ jsx20(
831
971
  "span",
832
972
  {
833
973
  role: "status",
@@ -835,7 +975,7 @@ var Spinner = ({
835
975
  className: cx(Spinner_default.spinner, Spinner_default[variant], Spinner_default[size], className),
836
976
  style: { ...style, ...color && { color } },
837
977
  ...props,
838
- children: Array.from({ length: items }, (_, i) => /* @__PURE__ */ jsx17("span", { className: Spinner_default.item, style: { "--i": i } }, i))
978
+ children: Array.from({ length: items }, (_, i) => /* @__PURE__ */ jsx20("span", { className: Spinner_default.item, style: { "--i": i } }, i))
839
979
  }
840
980
  );
841
981
  };
@@ -857,10 +997,10 @@ var Switch_default = {
857
997
  };
858
998
 
859
999
  // src/components/Switch/Switch.tsx
860
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
1000
+ import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
861
1001
  var Switch = forwardRef5(
862
- ({ size = "md", label, className, disabled, ...props }, ref) => /* @__PURE__ */ jsxs8("label", { className: cx(Switch_default.root, Switch_default[size], disabled && Switch_default.disabled, className), children: [
863
- /* @__PURE__ */ jsx18(
1002
+ ({ size = "md", label, className, disabled, ...props }, ref) => /* @__PURE__ */ jsxs9("label", { className: cx(Switch_default.root, Switch_default[size], disabled && Switch_default.disabled, className), children: [
1003
+ /* @__PURE__ */ jsx21(
864
1004
  "input",
865
1005
  {
866
1006
  ref,
@@ -872,8 +1012,8 @@ var Switch = forwardRef5(
872
1012
  ...props
873
1013
  }
874
1014
  ),
875
- /* @__PURE__ */ jsx18("span", { className: Switch_default.track, "aria-hidden": "true", children: /* @__PURE__ */ jsx18("span", { className: Switch_default.thumb }) }),
876
- label && /* @__PURE__ */ jsx18("span", { className: Switch_default.label, children: label })
1015
+ /* @__PURE__ */ jsx21("span", { className: Switch_default.track, "aria-hidden": "true", children: /* @__PURE__ */ jsx21("span", { className: Switch_default.thumb }) }),
1016
+ label && /* @__PURE__ */ jsx21("span", { className: Switch_default.label, children: label })
877
1017
  ] })
878
1018
  );
879
1019
 
@@ -889,7 +1029,7 @@ var Tabs_default = {
889
1029
  };
890
1030
 
891
1031
  // src/components/Tabs/Tabs.tsx
892
- import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
1032
+ import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
893
1033
  var Tabs = ({ items, defaultValue, onChange, className }) => {
894
1034
  const [active, setActive] = useState4(() => {
895
1035
  const isSelectable = items.some((item) => item.value === defaultValue && !item.disabled);
@@ -927,10 +1067,10 @@ var Tabs = ({ items, defaultValue, onChange, className }) => {
927
1067
  tabRefs.current[next]?.focus();
928
1068
  select(items[next].value);
929
1069
  };
930
- return /* @__PURE__ */ jsxs9("div", { className: cx(Tabs_default.tabs, className), children: [
931
- /* @__PURE__ */ jsx19("div", { role: "tablist", className: Tabs_default.list, children: items.map((item, index) => {
1070
+ return /* @__PURE__ */ jsxs10("div", { className: cx(Tabs_default.tabs, className), children: [
1071
+ /* @__PURE__ */ jsx22("div", { role: "tablist", className: Tabs_default.list, children: items.map((item, index) => {
932
1072
  const selected = index === activeIndex;
933
- return /* @__PURE__ */ jsx19(
1073
+ return /* @__PURE__ */ jsx22(
934
1074
  "button",
935
1075
  {
936
1076
  ref: (el) => {
@@ -951,7 +1091,7 @@ var Tabs = ({ items, defaultValue, onChange, className }) => {
951
1091
  item.value
952
1092
  );
953
1093
  }) }),
954
- /* @__PURE__ */ jsx19(
1094
+ /* @__PURE__ */ jsx22(
955
1095
  "div",
956
1096
  {
957
1097
  role: "tabpanel",
@@ -966,6 +1106,60 @@ var Tabs = ({ items, defaultValue, onChange, className }) => {
966
1106
  };
967
1107
  Tabs.displayName = "Tabs";
968
1108
 
1109
+ // src/components/Textarea/Textarea.tsx
1110
+ import { forwardRef as forwardRef6 } from "react";
1111
+
1112
+ // src/components/Textarea/Textarea.module.css
1113
+ var Textarea_default = {
1114
+ textarea: "Textarea_textarea",
1115
+ resizeNone: "Textarea_resizeNone"
1116
+ };
1117
+
1118
+ // src/components/Textarea/Textarea.tsx
1119
+ import { jsx as jsx23 } from "react/jsx-runtime";
1120
+ var Textarea = forwardRef6(
1121
+ ({
1122
+ size = "md",
1123
+ label,
1124
+ hint,
1125
+ error,
1126
+ resize = "vertical",
1127
+ rows = 3,
1128
+ className,
1129
+ id,
1130
+ required,
1131
+ disabled,
1132
+ "aria-describedby": ariaDescribedBy,
1133
+ ...props
1134
+ }, ref) => /* @__PURE__ */ jsx23(
1135
+ FormField,
1136
+ {
1137
+ id,
1138
+ size,
1139
+ label,
1140
+ hint,
1141
+ error,
1142
+ required,
1143
+ disabled,
1144
+ className,
1145
+ "aria-describedby": ariaDescribedBy,
1146
+ children: ({ controlProps, boxClassName }) => /* @__PURE__ */ jsx23(
1147
+ "textarea",
1148
+ {
1149
+ ref,
1150
+ ...controlProps,
1151
+ rows,
1152
+ required,
1153
+ disabled,
1154
+ className: cx(boxClassName, Textarea_default.textarea, resize === "none" && Textarea_default.resizeNone),
1155
+ ...props
1156
+ }
1157
+ )
1158
+ }
1159
+ )
1160
+ );
1161
+ Textarea.displayName = "Textarea";
1162
+
969
1163
  // src/components/Toast/Toast.tsx
970
1164
  import { useCallback, useEffect as useEffect3, useRef as useRef4, useState as useState5 } from "react";
971
1165
 
@@ -984,7 +1178,7 @@ var Toast_default = {
984
1178
  };
985
1179
 
986
1180
  // src/components/Toast/Toast.tsx
987
- import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
1181
+ import { jsx as jsx24, jsxs as jsxs11 } from "react/jsx-runtime";
988
1182
  var Toast = ({
989
1183
  variant = "info",
990
1184
  title,
@@ -1040,7 +1234,7 @@ var Toast = ({
1040
1234
  return null;
1041
1235
  }
1042
1236
  const classes = cx(Toast_default.toast, Toast_default[variant], className);
1043
- return /* @__PURE__ */ jsxs10(
1237
+ return /* @__PURE__ */ jsxs11(
1044
1238
  "div",
1045
1239
  {
1046
1240
  className: classes,
@@ -1048,11 +1242,11 @@ var Toast = ({
1048
1242
  onMouseLeave: handleMouseLeave,
1049
1243
  ...props,
1050
1244
  children: [
1051
- /* @__PURE__ */ jsxs10("div", { className: Toast_default.content, role: "status", "aria-live": "polite", children: [
1052
- title && /* @__PURE__ */ jsx20("div", { className: Toast_default.title, children: title }),
1053
- children && /* @__PURE__ */ jsx20("div", { className: Toast_default.description, children })
1245
+ /* @__PURE__ */ jsxs11("div", { className: Toast_default.content, role: "status", "aria-live": "polite", children: [
1246
+ title && /* @__PURE__ */ jsx24("div", { className: Toast_default.title, children: title }),
1247
+ children && /* @__PURE__ */ jsx24("div", { className: Toast_default.description, children })
1054
1248
  ] }),
1055
- closable && /* @__PURE__ */ jsx20(
1249
+ closable && /* @__PURE__ */ jsx24(
1056
1250
  "button",
1057
1251
  {
1058
1252
  type: "button",
@@ -1084,7 +1278,7 @@ var ToastContainer_default = {
1084
1278
  };
1085
1279
 
1086
1280
  // src/components/Toast/ToastProvider/ToastProvider.tsx
1087
- import { jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
1281
+ import { jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
1088
1282
  var idCounter = 0;
1089
1283
  var nextId = () => `toast-${Date.now()}-${idCounter++}`;
1090
1284
  var ToastContext = createContext3(null);
@@ -1104,10 +1298,10 @@ var ToastProvider = ({
1104
1298
  const value = useMemo(() => {
1105
1299
  return { show, close };
1106
1300
  }, [show, close]);
1107
- return /* @__PURE__ */ jsxs11(ToastContext.Provider, { value, children: [
1301
+ return /* @__PURE__ */ jsxs12(ToastContext.Provider, { value, children: [
1108
1302
  children,
1109
1303
  typeof document !== "undefined" && createPortal(
1110
- /* @__PURE__ */ jsx21("div", { className: cx(ToastContainer_default.container, ToastContainer_default[position]), children: toasts.map(({ id, description, ...rest }) => /* @__PURE__ */ jsx21(Toast, { ...rest, onClose: () => close(id), children: description }, id)) }),
1304
+ /* @__PURE__ */ jsx25("div", { className: cx(ToastContainer_default.container, ToastContainer_default[position]), children: toasts.map(({ id, description, ...rest }) => /* @__PURE__ */ jsx25(Toast, { ...rest, onClose: () => close(id), children: description }, id)) }),
1111
1305
  document.body
1112
1306
  )
1113
1307
  ] });
@@ -1154,7 +1348,7 @@ var Tooltip_default = {
1154
1348
  };
1155
1349
 
1156
1350
  // src/components/Tooltip/Tooltip.tsx
1157
- import { Fragment, jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
1351
+ import { Fragment, jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
1158
1352
  var Tooltip = ({
1159
1353
  content,
1160
1354
  children,
@@ -1188,10 +1382,10 @@ var Tooltip = ({
1188
1382
  ...children.props,
1189
1383
  ref: mergedRef
1190
1384
  })
1191
- ) : /* @__PURE__ */ jsx22("span", { ref: refs.setReference, ...getReferenceProps(), children });
1192
- return /* @__PURE__ */ jsxs12(Fragment, { children: [
1385
+ ) : /* @__PURE__ */ jsx26("span", { ref: refs.setReference, ...getReferenceProps(), children });
1386
+ return /* @__PURE__ */ jsxs13(Fragment, { children: [
1193
1387
  child,
1194
- open && /* @__PURE__ */ jsxs12(
1388
+ open && /* @__PURE__ */ jsxs13(
1195
1389
  "div",
1196
1390
  {
1197
1391
  ref: refs.setFloating,
@@ -1201,7 +1395,7 @@ var Tooltip = ({
1201
1395
  ...getFloatingProps(props),
1202
1396
  children: [
1203
1397
  content,
1204
- /* @__PURE__ */ jsx22("div", { className: Tooltip_default.arrow })
1398
+ /* @__PURE__ */ jsx26("div", { className: Tooltip_default.arrow })
1205
1399
  ]
1206
1400
  }
1207
1401
  )
@@ -1216,14 +1410,17 @@ export {
1216
1410
  Badge,
1217
1411
  Button,
1218
1412
  Checkbox,
1413
+ Divider,
1219
1414
  Input,
1220
1415
  Modal,
1416
+ ProgressBar,
1221
1417
  Radio,
1222
1418
  RadioGroup,
1223
1419
  Skeleton,
1224
1420
  Spinner,
1225
1421
  Switch,
1226
1422
  Tabs,
1423
+ Textarea,
1227
1424
  Toast,
1228
1425
  ToastProvider,
1229
1426
  Tooltip,