@tomny-dev/uzi 0.1.8 → 0.1.9-pr.2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -58,8 +58,12 @@ __export(index_exports, {
58
58
  Label: () => Label,
59
59
  Modal: () => Modal,
60
60
  ModalOverlay: () => ModalOverlay,
61
+ MultiSelect: () => MultiSelect,
61
62
  Pill: () => Pill,
63
+ Progress: () => Progress,
64
+ Select: () => Select,
62
65
  SidebarNav: () => SidebarNav,
66
+ Skeleton: () => Skeleton,
63
67
  ThemeProvider: () => ThemeProvider,
64
68
  ThemeToggleButton: () => ThemeToggleButton,
65
69
  ToastProvider: () => ToastProvider,
@@ -608,105 +612,257 @@ var Checkbox = React3.forwardRef(
608
612
  );
609
613
  Checkbox.displayName = "Checkbox";
610
614
 
611
- // src/components/dropdown/Dropdown.tsx
612
- var import_react3 = require("react");
615
+ // src/components/multi-select/MultiSelect.tsx
616
+ var React4 = __toESM(require("react"), 1);
617
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
613
618
  var import_jsx_runtime11 = require("react/jsx-runtime");
614
- function Dropdown({
615
- options,
616
- value,
617
- onChange,
618
- placeholder = "All",
619
- className,
620
- allowClear = true,
621
- "aria-labelledby": ariaLabelledBy,
622
- "aria-label": ariaLabel
623
- }) {
624
- const [open, setOpen] = (0, import_react3.useState)(false);
625
- const ref = (0, import_react3.useRef)(null);
626
- const selected = options.find((o) => o.value === value);
627
- const isActive = allowClear && value !== "";
628
- (0, import_react3.useEffect)(() => {
629
- function handleClickOutside(e) {
630
- if (ref.current && !ref.current.contains(e.target)) {
631
- setOpen(false);
632
- }
633
- }
634
- document.addEventListener("mousedown", handleClickOutside);
635
- return () => document.removeEventListener("mousedown", handleClickOutside);
636
- }, []);
637
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cx("wrapper", className), ref, children: [
638
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
639
- "button",
619
+ var MultiSelect = React4.forwardRef(
620
+ ({
621
+ options,
622
+ value,
623
+ onChange,
624
+ placeholder = "Select options",
625
+ fullWidth = true,
626
+ maxVisibleValues = 2,
627
+ className,
628
+ disabled = false,
629
+ name,
630
+ "aria-label": ariaLabel,
631
+ "aria-labelledby": ariaLabelledBy
632
+ }, ref) => {
633
+ const selectedSet = React4.useMemo(() => new Set(value), [value]);
634
+ const selectedOptions = React4.useMemo(
635
+ () => options.filter((opt) => selectedSet.has(opt.value)),
636
+ [options, selectedSet]
637
+ );
638
+ const toggleValue = React4.useCallback(
639
+ (nextValue) => {
640
+ if (selectedSet.has(nextValue)) {
641
+ onChange(value.filter((entry) => entry !== nextValue));
642
+ return;
643
+ }
644
+ onChange([...value, nextValue]);
645
+ },
646
+ [onChange, selectedSet, value]
647
+ );
648
+ const visibleCount = Math.max(1, maxVisibleValues);
649
+ const visibleOptions = selectedOptions.slice(0, visibleCount);
650
+ const overflowCount = Math.max(
651
+ 0,
652
+ selectedOptions.length - visibleOptions.length
653
+ );
654
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Root, { modal: false, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
655
+ "div",
640
656
  {
641
- type: "button",
642
- className: cx("trigger", isActive && "trigger-active"),
643
- onClick: () => setOpen((o) => !o),
644
- "aria-labelledby": ariaLabelledBy,
645
- "aria-label": ariaLabel,
657
+ className: cx("wrapper", fullWidth && "wrapper-fullWidth", className),
646
658
  children: [
647
- selected ? selected.label : placeholder,
648
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cx("chevron", open && "chevron-open"), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", width: "10", height: "10", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "M2 3.5L5 6.5L8 3.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
659
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
660
+ "button",
661
+ {
662
+ ref,
663
+ type: "button",
664
+ className: cx(
665
+ "trigger",
666
+ selectedOptions.length > 0 && "trigger-hasValue"
667
+ ),
668
+ "aria-label": ariaLabel,
669
+ "aria-labelledby": ariaLabelledBy,
670
+ disabled,
671
+ children: [
672
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "value", children: selectedOptions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "placeholder", children: placeholder }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
673
+ visibleOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "chip", children: option.label }, option.value)),
674
+ overflowCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "chip chip-summary", children: [
675
+ "+",
676
+ overflowCount
677
+ ] }) : null
678
+ ] }) }),
679
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
680
+ "svg",
681
+ {
682
+ viewBox: "0 0 10 10",
683
+ fill: "none",
684
+ xmlns: "http://www.w3.org/2000/svg",
685
+ width: "10",
686
+ height: "10",
687
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
688
+ "path",
689
+ {
690
+ d: "M2 3.5L5 6.5L8 3.5",
691
+ stroke: "currentColor",
692
+ strokeWidth: "1.5",
693
+ strokeLinecap: "round",
694
+ strokeLinejoin: "round"
695
+ }
696
+ )
697
+ }
698
+ ) })
699
+ ]
700
+ }
701
+ ) }),
702
+ name ? value.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("input", { type: "hidden", name, value: entry }, entry)) : null,
703
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
704
+ DropdownMenuPrimitive.Content,
705
+ {
706
+ className: "menu",
707
+ sideOffset: 4,
708
+ align: "start",
709
+ children: options.map((option) => {
710
+ const selected = selectedSet.has(option.value);
711
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
712
+ DropdownMenuPrimitive.CheckboxItem,
713
+ {
714
+ className: cx(
715
+ "option",
716
+ selected && "option-selected",
717
+ option.disabled && "option-disabled"
718
+ ),
719
+ checked: selected,
720
+ disabled: option.disabled,
721
+ onCheckedChange: () => toggleValue(option.value),
722
+ onSelect: (event) => event.preventDefault(),
723
+ children: [
724
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
725
+ "span",
726
+ {
727
+ className: cx(
728
+ "indicator",
729
+ selected && "indicator-selected",
730
+ option.disabled && "indicator-disabled"
731
+ ),
732
+ "aria-hidden": "true",
733
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.ItemIndicator, { forceMount: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
734
+ "svg",
735
+ {
736
+ viewBox: "0 0 16 16",
737
+ width: "16",
738
+ height: "16",
739
+ fill: "none",
740
+ xmlns: "http://www.w3.org/2000/svg",
741
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
742
+ "path",
743
+ {
744
+ d: "M3.5 8.5 6.5 11.5 12.5 4.5",
745
+ stroke: "currentColor",
746
+ strokeWidth: "1.8",
747
+ strokeLinecap: "round",
748
+ strokeLinejoin: "round"
749
+ }
750
+ )
751
+ }
752
+ ) })
753
+ }
754
+ ),
755
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "option-label", children: option.label })
756
+ ]
757
+ },
758
+ option.value
759
+ );
760
+ })
761
+ }
762
+ ) })
649
763
  ]
650
764
  }
651
- ),
652
- open && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "menu", children: [
653
- allowClear && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
654
- "button",
765
+ ) });
766
+ }
767
+ );
768
+ MultiSelect.displayName = "MultiSelect";
769
+
770
+ // src/components/dropdown/Dropdown.tsx
771
+ var React6 = __toESM(require("react"), 1);
772
+
773
+ // src/components/select/Select.tsx
774
+ var React5 = __toESM(require("react"), 1);
775
+ var import_jsx_runtime12 = require("react/jsx-runtime");
776
+ var Select = React5.forwardRef(
777
+ ({
778
+ options,
779
+ value,
780
+ onChange,
781
+ placeholder,
782
+ allowEmptyOption = false,
783
+ fullWidth = true,
784
+ className,
785
+ ...rest
786
+ }, ref) => {
787
+ const isPlaceholderShown = Boolean(placeholder) && value === "";
788
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cx("wrapper", fullWidth && "wrapper-fullWidth", className), children: [
789
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
790
+ "select",
655
791
  {
656
- type: "button",
657
- className: cx("option", value === "" && "option-selected"),
658
- onClick: () => {
659
- onChange("");
660
- setOpen(false);
661
- },
662
- children: placeholder
792
+ ref,
793
+ value,
794
+ onChange: (e) => onChange(e.target.value),
795
+ className: cx("select", isPlaceholderShown && "select-placeholder"),
796
+ "data-placeholder-shown": isPlaceholderShown ? "true" : void 0,
797
+ ...rest,
798
+ children: [
799
+ placeholder ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("option", { value: "", disabled: !allowEmptyOption, children: placeholder }) : null,
800
+ options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
801
+ ]
663
802
  }
664
803
  ),
665
- options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
666
- "button",
667
- {
668
- type: "button",
669
- className: cx("option", value === opt.value && "option-selected"),
670
- onClick: () => {
671
- onChange(opt.value);
672
- setOpen(false);
673
- },
674
- children: opt.label
675
- },
676
- opt.value
677
- ))
678
- ] })
679
- ] });
680
- }
804
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "chevron", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", width: "10", height: "10", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M2 3.5L5 6.5L8 3.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
805
+ ] });
806
+ }
807
+ );
808
+ Select.displayName = "Select";
809
+
810
+ // src/components/dropdown/Dropdown.tsx
811
+ var import_jsx_runtime13 = require("react/jsx-runtime");
812
+ var Dropdown = React6.forwardRef(
813
+ ({
814
+ options,
815
+ value,
816
+ onChange,
817
+ placeholder = "All",
818
+ allowClear = true,
819
+ ...rest
820
+ }, ref) => {
821
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
822
+ Select,
823
+ {
824
+ ref,
825
+ options,
826
+ value,
827
+ onChange,
828
+ placeholder,
829
+ allowEmptyOption: allowClear,
830
+ fullWidth: false,
831
+ ...rest
832
+ }
833
+ );
834
+ }
835
+ );
836
+ Dropdown.displayName = "Dropdown";
681
837
 
682
838
  // src/components/dropdown-menu/DropdownMenu.tsx
683
- var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
684
- var import_jsx_runtime12 = require("react/jsx-runtime");
839
+ var DropdownMenuPrimitive2 = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
840
+ var import_jsx_runtime14 = require("react/jsx-runtime");
685
841
  function DropdownMenu(props) {
686
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Root, { ...props });
842
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Root, { ...props });
687
843
  }
688
844
  function DropdownMenuTrigger(props) {
689
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Trigger, { ...props });
845
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Trigger, { ...props });
690
846
  }
691
847
  function DropdownMenuGroup(props) {
692
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Group, { ...props });
848
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Group, { ...props });
693
849
  }
694
850
  function DropdownMenuPortal(props) {
695
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Portal, { ...props });
851
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Portal, { ...props });
696
852
  }
697
853
  function DropdownMenuSub(props) {
698
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Sub, { ...props });
854
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Sub, { ...props });
699
855
  }
700
856
  function DropdownMenuRadioGroup(props) {
701
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.RadioGroup, { ...props });
857
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.RadioGroup, { ...props });
702
858
  }
703
859
  function DropdownMenuContent({
704
860
  className,
705
861
  sideOffset = 4,
706
862
  ...props
707
863
  }) {
708
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
709
- DropdownMenuPrimitive.Content,
864
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
865
+ DropdownMenuPrimitive2.Content,
710
866
  {
711
867
  sideOffset,
712
868
  className: cx("content", className),
@@ -720,8 +876,8 @@ function DropdownMenuItem({
720
876
  variant = "default",
721
877
  ...props
722
878
  }) {
723
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
724
- DropdownMenuPrimitive.Item,
879
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
880
+ DropdownMenuPrimitive2.Item,
725
881
  {
726
882
  "data-inset": inset ? "true" : void 0,
727
883
  className: cx(
@@ -738,13 +894,13 @@ function DropdownMenuCheckboxItem({
738
894
  children,
739
895
  ...props
740
896
  }) {
741
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
742
- DropdownMenuPrimitive.CheckboxItem,
897
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
898
+ DropdownMenuPrimitive2.CheckboxItem,
743
899
  {
744
900
  className: cx("item", "insetItem", className),
745
901
  ...props,
746
902
  children: [
747
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "indicator", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
903
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "indicator", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
748
904
  "svg",
749
905
  {
750
906
  viewBox: "0 0 16 16",
@@ -752,7 +908,7 @@ function DropdownMenuCheckboxItem({
752
908
  height: "16",
753
909
  "aria-hidden": "true",
754
910
  className: "indicatorIcon",
755
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
911
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
756
912
  "path",
757
913
  {
758
914
  d: "M3.5 8.5 6.5 11.5 12.5 4.5",
@@ -775,13 +931,13 @@ function DropdownMenuRadioItem({
775
931
  children,
776
932
  ...props
777
933
  }) {
778
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
779
- DropdownMenuPrimitive.RadioItem,
934
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
935
+ DropdownMenuPrimitive2.RadioItem,
780
936
  {
781
937
  className: cx("item", "insetItem", className),
782
938
  ...props,
783
939
  children: [
784
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "indicator", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "radioDot" }) }) }),
940
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "indicator", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DropdownMenuPrimitive2.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "radioDot" }) }) }),
785
941
  children
786
942
  ]
787
943
  }
@@ -792,8 +948,8 @@ function DropdownMenuLabel({
792
948
  inset,
793
949
  ...props
794
950
  }) {
795
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
796
- DropdownMenuPrimitive.Label,
951
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
952
+ DropdownMenuPrimitive2.Label,
797
953
  {
798
954
  "data-inset": inset ? "true" : void 0,
799
955
  className: cx("label", className),
@@ -805,8 +961,8 @@ function DropdownMenuSeparator({
805
961
  className,
806
962
  ...props
807
963
  }) {
808
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
809
- DropdownMenuPrimitive.Separator,
964
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
965
+ DropdownMenuPrimitive2.Separator,
810
966
  {
811
967
  className: cx("separator", className),
812
968
  ...props
@@ -819,15 +975,15 @@ function DropdownMenuSubTrigger({
819
975
  children,
820
976
  ...props
821
977
  }) {
822
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
823
- DropdownMenuPrimitive.SubTrigger,
978
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
979
+ DropdownMenuPrimitive2.SubTrigger,
824
980
  {
825
981
  "data-inset": inset ? "true" : void 0,
826
982
  className: cx("item", className),
827
983
  ...props,
828
984
  children: [
829
985
  children,
830
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
986
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
831
987
  "svg",
832
988
  {
833
989
  viewBox: "0 0 16 16",
@@ -835,7 +991,7 @@ function DropdownMenuSubTrigger({
835
991
  height: "16",
836
992
  "aria-hidden": "true",
837
993
  className: "chevron",
838
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
994
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
839
995
  "path",
840
996
  {
841
997
  d: "M6 3.5 10.5 8 6 12.5",
@@ -856,8 +1012,8 @@ function DropdownMenuSubContent({
856
1012
  className,
857
1013
  ...props
858
1014
  }) {
859
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
860
- DropdownMenuPrimitive.SubContent,
1015
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1016
+ DropdownMenuPrimitive2.SubContent,
861
1017
  {
862
1018
  className: cx("content", className),
863
1019
  ...props
@@ -866,10 +1022,10 @@ function DropdownMenuSubContent({
866
1022
  }
867
1023
 
868
1024
  // src/components/app-shell/AppShell.tsx
869
- var import_react5 = require("react");
1025
+ var import_react4 = require("react");
870
1026
 
871
1027
  // src/theme/ThemeProvider.tsx
872
- var import_react4 = require("react");
1028
+ var import_react3 = require("react");
873
1029
 
874
1030
  // src/theme/constants.ts
875
1031
  var UZI_THEMES = ["light", "dark", "system"];
@@ -878,12 +1034,12 @@ var THEME_STORAGE_KEY = "uzi-theme";
878
1034
  var ACCENT_STORAGE_KEY = "uzi-accent";
879
1035
 
880
1036
  // src/theme/ThemeProvider.tsx
881
- var import_jsx_runtime13 = require("react/jsx-runtime");
1037
+ var import_jsx_runtime15 = require("react/jsx-runtime");
882
1038
  var THEME_STORAGE_KEY2 = THEME_STORAGE_KEY;
883
1039
  var ACCENT_STORAGE_KEY2 = ACCENT_STORAGE_KEY;
884
1040
  var THEME_ATTRIBUTE = "data-uzi-theme";
885
1041
  var ACCENT_ATTRIBUTE = "data-uzi-accent";
886
- var ThemeContext = (0, import_react4.createContext)(void 0);
1042
+ var ThemeContext = (0, import_react3.createContext)(void 0);
887
1043
  function isTheme(value) {
888
1044
  return UZI_THEMES.includes(value);
889
1045
  }
@@ -906,10 +1062,10 @@ function ThemeProvider({
906
1062
  accentStorageKey = ACCENT_STORAGE_KEY2,
907
1063
  disableStorage = false
908
1064
  }) {
909
- const [internalTheme, setInternalTheme] = (0, import_react4.useState)(defaultTheme);
910
- const [internalAccent, setInternalAccent] = (0, import_react4.useState)(defaultAccent);
911
- const [systemTheme, setSystemTheme] = (0, import_react4.useState)("light");
912
- (0, import_react4.useEffect)(() => {
1065
+ const [internalTheme, setInternalTheme] = (0, import_react3.useState)(defaultTheme);
1066
+ const [internalAccent, setInternalAccent] = (0, import_react3.useState)(defaultAccent);
1067
+ const [systemTheme, setSystemTheme] = (0, import_react3.useState)("light");
1068
+ (0, import_react3.useEffect)(() => {
913
1069
  setSystemTheme(getSystemTheme());
914
1070
  if (!disableStorage) {
915
1071
  const storedTheme = window.localStorage.getItem(storageKey);
@@ -923,7 +1079,7 @@ function ThemeProvider({
923
1079
  const currentTheme = isThemeControlled ? theme : internalTheme;
924
1080
  const currentAccent = isAccentControlled ? accent : internalAccent;
925
1081
  const resolvedTheme = currentTheme === "system" ? systemTheme : currentTheme;
926
- (0, import_react4.useEffect)(() => {
1082
+ (0, import_react3.useEffect)(() => {
927
1083
  if (typeof window === "undefined") return;
928
1084
  const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
929
1085
  const handleChange = () => setSystemTheme(mediaQuery.matches ? "dark" : "light");
@@ -931,7 +1087,7 @@ function ThemeProvider({
931
1087
  mediaQuery.addEventListener("change", handleChange);
932
1088
  return () => mediaQuery.removeEventListener("change", handleChange);
933
1089
  }, []);
934
- (0, import_react4.useEffect)(() => {
1090
+ (0, import_react3.useEffect)(() => {
935
1091
  if (typeof document === "undefined") return;
936
1092
  const root = document.documentElement;
937
1093
  root.setAttribute(THEME_ATTRIBUTE, resolvedTheme);
@@ -939,7 +1095,7 @@ function ThemeProvider({
939
1095
  root.style.colorScheme = resolvedTheme;
940
1096
  root.classList.toggle("dark", resolvedTheme === "dark");
941
1097
  }, [currentAccent, resolvedTheme]);
942
- const setTheme = (0, import_react4.useCallback)(
1098
+ const setTheme = (0, import_react3.useCallback)(
943
1099
  (nextTheme) => {
944
1100
  if (!isThemeControlled) setInternalTheme(nextTheme);
945
1101
  if (!disableStorage && typeof window !== "undefined") {
@@ -949,7 +1105,7 @@ function ThemeProvider({
949
1105
  },
950
1106
  [disableStorage, isThemeControlled, onThemeChange, storageKey]
951
1107
  );
952
- const setAccent = (0, import_react4.useCallback)(
1108
+ const setAccent = (0, import_react3.useCallback)(
953
1109
  (nextAccent) => {
954
1110
  if (!isAccentControlled) setInternalAccent(nextAccent);
955
1111
  if (!disableStorage && typeof window !== "undefined") {
@@ -959,10 +1115,10 @@ function ThemeProvider({
959
1115
  },
960
1116
  [accentStorageKey, disableStorage, isAccentControlled, onAccentChange]
961
1117
  );
962
- const toggleTheme = (0, import_react4.useCallback)(() => {
1118
+ const toggleTheme = (0, import_react3.useCallback)(() => {
963
1119
  setTheme(resolvedTheme === "dark" ? "light" : "dark");
964
1120
  }, [resolvedTheme, setTheme]);
965
- const value = (0, import_react4.useMemo)(
1121
+ const value = (0, import_react3.useMemo)(
966
1122
  () => ({
967
1123
  theme: currentTheme,
968
1124
  resolvedTheme,
@@ -973,18 +1129,18 @@ function ThemeProvider({
973
1129
  }),
974
1130
  [currentAccent, currentTheme, resolvedTheme, setAccent, setTheme, toggleTheme]
975
1131
  );
976
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ThemeContext.Provider, { value, children });
1132
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ThemeContext.Provider, { value, children });
977
1133
  }
978
1134
  function useTheme() {
979
- const context = (0, import_react4.useContext)(ThemeContext);
1135
+ const context = (0, import_react3.useContext)(ThemeContext);
980
1136
  if (!context) throw new Error("useTheme must be used within a ThemeProvider");
981
1137
  return context;
982
1138
  }
983
1139
 
984
1140
  // src/components/theme-toggle-button/ThemeToggleButton.tsx
985
- var import_jsx_runtime14 = require("react/jsx-runtime");
1141
+ var import_jsx_runtime16 = require("react/jsx-runtime");
986
1142
  function MoonIcon() {
987
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", width: "16", height: "16", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1143
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", width: "16", height: "16", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
988
1144
  "path",
989
1145
  {
990
1146
  d: "M20 15.2A8.5 8.5 0 0 1 8.8 4 9 9 0 1 0 20 15.2Z",
@@ -996,9 +1152,9 @@ function MoonIcon() {
996
1152
  ) });
997
1153
  }
998
1154
  function SunIcon() {
999
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", width: "16", height: "16", fill: "none", children: [
1000
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "1.8" }),
1001
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1155
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", width: "16", height: "16", fill: "none", children: [
1156
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "1.8" }),
1157
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1002
1158
  "path",
1003
1159
  {
1004
1160
  d: "M12 2.75v2.5M12 18.75v2.5M21.25 12h-2.5M5.25 12h-2.5M18.54 5.46l-1.77 1.77M7.23 16.77l-1.77 1.77M18.54 18.54l-1.77-1.77M7.23 7.23 5.46 5.46",
@@ -1019,7 +1175,7 @@ function ThemeToggleButton({
1019
1175
  }) {
1020
1176
  const { resolvedTheme, toggleTheme } = useTheme();
1021
1177
  const nextThemeLabel = resolvedTheme === "dark" ? lightLabel : darkLabel;
1022
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1178
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1023
1179
  Button,
1024
1180
  {
1025
1181
  type: "button",
@@ -1034,15 +1190,15 @@ function ThemeToggleButton({
1034
1190
  },
1035
1191
  ...rest,
1036
1192
  children: [
1037
- resolvedTheme === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SunIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MoonIcon, {}),
1038
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: nextThemeLabel })
1193
+ resolvedTheme === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SunIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MoonIcon, {}),
1194
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: nextThemeLabel })
1039
1195
  ]
1040
1196
  }
1041
1197
  );
1042
1198
  }
1043
1199
 
1044
1200
  // src/components/top-bar/TopBar.tsx
1045
- var import_jsx_runtime15 = require("react/jsx-runtime");
1201
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1046
1202
  function TopBar({
1047
1203
  leading,
1048
1204
  brand,
@@ -1061,24 +1217,24 @@ function TopBar({
1061
1217
  ...rest
1062
1218
  }) {
1063
1219
  const shouldStick = isSticky ?? sticky;
1064
- const brandNode = !brand ? null : brandHref ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { href: brandHref, className: "topBarBrand", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "topBarBrandContent", children: brand }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "topBarBrand", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "topBarBrandContent", children: brand }) });
1065
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1220
+ const brandNode = !brand ? null : brandHref ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("a", { href: brandHref, className: "topBarBrand", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "topBarBrandContent", children: brand }) }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "topBarBrand", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "topBarBrandContent", children: brand }) });
1221
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1066
1222
  "header",
1067
1223
  {
1068
1224
  className: cx("topBar", !shouldStick && "topBarStatic", className),
1069
1225
  ...rest,
1070
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cx("topBarInner", innerClassName), children: [
1071
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "topBarStart", children: [
1226
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cx("topBarInner", innerClassName), children: [
1227
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "topBarStart", children: [
1072
1228
  leading,
1073
1229
  brandingLocation === "left" && brandNode,
1074
1230
  start
1075
1231
  ] }),
1076
- brandNode && brandingLocation === "center" || center || children ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "topBarCenter", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "topBarCenterGroup", children: [
1232
+ brandNode && brandingLocation === "center" || center || children ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "topBarCenter", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "topBarCenterGroup", children: [
1077
1233
  brandingLocation === "center" && brandNode,
1078
1234
  center ?? children
1079
1235
  ] }) }) : null,
1080
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "topBarActions", children: [
1081
- showThemeToggle && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ThemeToggleButton, { ...themeToggleProps }),
1236
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "topBarActions", children: [
1237
+ showThemeToggle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ThemeToggleButton, { ...themeToggleProps }),
1082
1238
  actions
1083
1239
  ] })
1084
1240
  ] })
@@ -1087,7 +1243,7 @@ function TopBar({
1087
1243
  }
1088
1244
 
1089
1245
  // src/components/app-shell/AppShell.tsx
1090
- var import_jsx_runtime16 = require("react/jsx-runtime");
1246
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1091
1247
  var DESKTOP_BREAKPOINT = 960;
1092
1248
  function getIsDesktop() {
1093
1249
  if (typeof window === "undefined") return false;
@@ -1112,16 +1268,16 @@ function AppShell({
1112
1268
  hamburgerLabel = "Toggle navigation",
1113
1269
  onSidebarToggle
1114
1270
  }) {
1115
- const [isDesktop, setIsDesktop] = (0, import_react5.useState)(false);
1116
- const [sidebarOpen, setSidebarOpen] = (0, import_react5.useState)(false);
1117
- const [transitionsReady, setTransitionsReady] = (0, import_react5.useState)(false);
1118
- const prevIsDesktopRef = (0, import_react5.useRef)(false);
1119
- const closeKeyRef = (0, import_react5.useRef)(closeSidebarOnChangeKey);
1120
- const sidebarRef = (0, import_react5.useRef)(null);
1121
- const hamburgerRef = (0, import_react5.useRef)(null);
1122
- const mainRef = (0, import_react5.useRef)(null);
1123
- const sidebarId = (0, import_react5.useId)();
1124
- (0, import_react5.useEffect)(() => {
1271
+ const [isDesktop, setIsDesktop] = (0, import_react4.useState)(false);
1272
+ const [sidebarOpen, setSidebarOpen] = (0, import_react4.useState)(false);
1273
+ const [transitionsReady, setTransitionsReady] = (0, import_react4.useState)(false);
1274
+ const prevIsDesktopRef = (0, import_react4.useRef)(false);
1275
+ const closeKeyRef = (0, import_react4.useRef)(closeSidebarOnChangeKey);
1276
+ const sidebarRef = (0, import_react4.useRef)(null);
1277
+ const hamburgerRef = (0, import_react4.useRef)(null);
1278
+ const mainRef = (0, import_react4.useRef)(null);
1279
+ const sidebarId = (0, import_react4.useId)();
1280
+ (0, import_react4.useEffect)(() => {
1125
1281
  const desktop = getIsDesktop();
1126
1282
  setIsDesktop(desktop);
1127
1283
  setSidebarOpen(desktop);
@@ -1143,7 +1299,7 @@ function AppShell({
1143
1299
  window.removeEventListener("resize", handleResize);
1144
1300
  };
1145
1301
  }, []);
1146
- (0, import_react5.useEffect)(() => {
1302
+ (0, import_react4.useEffect)(() => {
1147
1303
  if (isDesktop || !sidebarOpen) return;
1148
1304
  const mainElement = mainRef.current;
1149
1305
  const closeSidebar = () => setSidebarOpen(false);
@@ -1168,13 +1324,13 @@ function AppShell({
1168
1324
  document.removeEventListener("touchmove", closeSidebar);
1169
1325
  };
1170
1326
  }, [sidebarOpen, isDesktop]);
1171
- (0, import_react5.useEffect)(() => {
1327
+ (0, import_react4.useEffect)(() => {
1172
1328
  if (!isDesktop && closeKeyRef.current !== closeSidebarOnChangeKey) {
1173
1329
  setSidebarOpen(false);
1174
1330
  }
1175
1331
  closeKeyRef.current = closeSidebarOnChangeKey;
1176
1332
  }, [closeSidebarOnChangeKey, isDesktop]);
1177
- (0, import_react5.useEffect)(() => {
1333
+ (0, import_react4.useEffect)(() => {
1178
1334
  onSidebarToggle?.(sidebarOpen);
1179
1335
  }, [sidebarOpen, onSidebarToggle]);
1180
1336
  const toggleSidebar = () => setSidebarOpen((open) => !open);
@@ -1187,7 +1343,7 @@ function AppShell({
1187
1343
  className
1188
1344
  );
1189
1345
  const sidebarClasses = cx("appShellSidebar", sidebarOpen && "appShellSidebarOpen", sidebarClassName);
1190
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1346
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1191
1347
  "div",
1192
1348
  {
1193
1349
  className: shellClasses,
@@ -1196,11 +1352,11 @@ function AppShell({
1196
1352
  "data-desktop": isDesktop ? "true" : "false",
1197
1353
  "data-sidebar-open": sidebarOpen ? "true" : "false",
1198
1354
  children: [
1199
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1355
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1200
1356
  TopBar,
1201
1357
  {
1202
1358
  className: cx("appShellTopbar", topbarClassName),
1203
- leading: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1359
+ leading: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1204
1360
  "button",
1205
1361
  {
1206
1362
  ref: hamburgerRef,
@@ -1210,7 +1366,7 @@ function AppShell({
1210
1366
  "aria-label": hamburgerLabel,
1211
1367
  "aria-expanded": sidebarOpen,
1212
1368
  "aria-controls": sidebarId,
1213
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("path", { d: "M3 6h18M3 12h18M3 18h18", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }) })
1369
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M3 6h18M3 12h18M3 18h18", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round" }) })
1214
1370
  }
1215
1371
  ),
1216
1372
  brand,
@@ -1222,16 +1378,16 @@ function AppShell({
1222
1378
  themeToggleProps
1223
1379
  }
1224
1380
  ),
1225
- !isDesktop && sidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "appShellBackdrop", onClick: () => setSidebarOpen(false), onTouchStart: () => setSidebarOpen(false), "aria-hidden": "true" }),
1226
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("aside", { ref: sidebarRef, id: sidebarId, className: sidebarClasses, "aria-label": "Sidebar navigation", children: sidebar }),
1227
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("main", { ref: mainRef, className: cx("appShellMain", mainClassName), children })
1381
+ !isDesktop && sidebarOpen && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "appShellBackdrop", onClick: () => setSidebarOpen(false), onTouchStart: () => setSidebarOpen(false), "aria-hidden": "true" }),
1382
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("aside", { ref: sidebarRef, id: sidebarId, className: sidebarClasses, "aria-label": "Sidebar navigation", children: sidebar }),
1383
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("main", { ref: mainRef, className: cx("appShellMain", mainClassName), children })
1228
1384
  ]
1229
1385
  }
1230
1386
  );
1231
1387
  }
1232
1388
 
1233
1389
  // src/components/sidebar-nav/SidebarNav.tsx
1234
- var import_jsx_runtime17 = require("react/jsx-runtime");
1390
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1235
1391
  var defaultIsActive = (item, path) => {
1236
1392
  if (item.active !== void 0) return item.active;
1237
1393
  if (!item.href) return false;
@@ -1258,21 +1414,21 @@ function SidebarNav({
1258
1414
  const style = iconSize !== void 0 ? {
1259
1415
  ["--sidebar-nav-icon-size"]: typeof iconSize === "number" ? `${iconSize}px` : iconSize
1260
1416
  } : void 0;
1261
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1417
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1262
1418
  "nav",
1263
1419
  {
1264
1420
  className: cx("uziSidebarNav", collapsed && "uziSidebarNavCollapsed", className),
1265
1421
  "aria-label": ariaLabel,
1266
1422
  style,
1267
1423
  children: [
1268
- header ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "uziSidebarNavHeader", children: header }) : null,
1269
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "uziSidebarNavSections", children: resolvedSections.map((section, sectionIndex) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1424
+ header ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "uziSidebarNavHeader", children: header }) : null,
1425
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "uziSidebarNavSections", children: resolvedSections.map((section, sectionIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1270
1426
  "div",
1271
1427
  {
1272
1428
  className: cx("uziSidebarNavSection", sectionClassName),
1273
1429
  children: [
1274
- section.label && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "uziSidebarNavSectionLabel", children: section.label }) : null,
1275
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "uziSidebarNavSectionItems", children: section.items.map((item, itemIndex) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1430
+ section.label && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "uziSidebarNavSectionLabel", children: section.label }) : null,
1431
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "uziSidebarNavSectionItems", children: section.items.map((item, itemIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1276
1432
  SidebarNavEntry,
1277
1433
  {
1278
1434
  item,
@@ -1287,7 +1443,7 @@ function SidebarNav({
1287
1443
  },
1288
1444
  section.id ?? `section-${sectionIndex}`
1289
1445
  )) }),
1290
- footer ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "uziSidebarNavFooter", children: footer }) : null
1446
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "uziSidebarNavFooter", children: footer }) : null
1291
1447
  ]
1292
1448
  }
1293
1449
  );
@@ -1308,14 +1464,14 @@ function SidebarNavEntry({
1308
1464
  item.disabled && "uziSidebarNavItemDisabled",
1309
1465
  itemClassName
1310
1466
  );
1311
- const content = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
1312
- item.icon && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "uziSidebarNavIcon", children: item.icon }),
1313
- !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "uziSidebarNavItemBody", children: [
1314
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "uziSidebarNavLabelRow", children: [
1315
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "uziSidebarNavLabel", children: item.label }),
1316
- item.badge && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "uziSidebarNavBadge", children: item.badge })
1467
+ const content = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1468
+ item.icon && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "uziSidebarNavIcon", children: item.icon }),
1469
+ !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "uziSidebarNavItemBody", children: [
1470
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "uziSidebarNavLabelRow", children: [
1471
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "uziSidebarNavLabel", children: item.label }),
1472
+ item.badge && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "uziSidebarNavBadge", children: item.badge })
1317
1473
  ] }),
1318
- item.description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "uziSidebarNavDescription", children: item.description }) : null
1474
+ item.description ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "uziSidebarNavDescription", children: item.description }) : null
1319
1475
  ] }) : null
1320
1476
  ] });
1321
1477
  const handleClick = () => {
@@ -1324,7 +1480,7 @@ function SidebarNavEntry({
1324
1480
  onItemClick?.(item);
1325
1481
  };
1326
1482
  if (!item.href) {
1327
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1483
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1328
1484
  "button",
1329
1485
  {
1330
1486
  type: "button",
@@ -1339,7 +1495,7 @@ function SidebarNavEntry({
1339
1495
  );
1340
1496
  }
1341
1497
  if (item.disabled) {
1342
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1498
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1343
1499
  "div",
1344
1500
  {
1345
1501
  className: classes,
@@ -1350,7 +1506,7 @@ function SidebarNavEntry({
1350
1506
  }
1351
1507
  );
1352
1508
  }
1353
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1509
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1354
1510
  "a",
1355
1511
  {
1356
1512
  className: classes,
@@ -1364,6 +1520,58 @@ function SidebarNavEntry({
1364
1520
  }
1365
1521
  );
1366
1522
  }
1523
+
1524
+ // src/components/skeleton/Skeleton.tsx
1525
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1526
+ function Skeleton({
1527
+ width,
1528
+ height,
1529
+ radius = "md",
1530
+ className,
1531
+ style,
1532
+ ...rest
1533
+ }) {
1534
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1535
+ "div",
1536
+ {
1537
+ className: cx("skeleton", `radius-${radius}`, className),
1538
+ style: { width, height, ...style },
1539
+ "aria-hidden": "true",
1540
+ ...rest
1541
+ }
1542
+ );
1543
+ }
1544
+
1545
+ // src/components/progress/Progress.tsx
1546
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1547
+ function Progress({
1548
+ value,
1549
+ tone = "default",
1550
+ className,
1551
+ "aria-label": ariaLabel,
1552
+ ...rest
1553
+ }) {
1554
+ const clamped = Math.max(0, Math.min(100, value));
1555
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1556
+ "div",
1557
+ {
1558
+ className: cx("track", className),
1559
+ role: "progressbar",
1560
+ "aria-valuenow": clamped,
1561
+ "aria-valuemin": 0,
1562
+ "aria-valuemax": 100,
1563
+ "aria-label": ariaLabel,
1564
+ ...rest,
1565
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1566
+ "div",
1567
+ {
1568
+ className: cx("fill", `tone-${tone}`),
1569
+ style: { width: `${clamped}%` }
1570
+ }
1571
+ )
1572
+ }
1573
+ );
1574
+ }
1367
1575
  // Annotate the CommonJS export names for ESM import in node:
1368
1576
  0 && (module.exports = {
1369
1577
  Alert,
@@ -1393,8 +1601,12 @@ function SidebarNavEntry({
1393
1601
  Label,
1394
1602
  Modal,
1395
1603
  ModalOverlay,
1604
+ MultiSelect,
1396
1605
  Pill,
1606
+ Progress,
1607
+ Select,
1397
1608
  SidebarNav,
1609
+ Skeleton,
1398
1610
  ThemeProvider,
1399
1611
  ThemeToggleButton,
1400
1612
  ToastProvider,