@usefui/components 1.5.2 → 1.6.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.mts +246 -3
  3. package/dist/index.d.ts +246 -3
  4. package/dist/index.js +740 -307
  5. package/dist/index.mjs +708 -288
  6. package/package.json +12 -12
  7. package/src/__tests__/MessageBubble.test.tsx +179 -0
  8. package/src/__tests__/Shimmer.test.tsx +122 -0
  9. package/src/__tests__/Tree.test.tsx +275 -0
  10. package/src/accordion/hooks/index.tsx +3 -1
  11. package/src/badge/index.tsx +2 -3
  12. package/src/checkbox/hooks/index.tsx +5 -1
  13. package/src/collapsible/hooks/index.tsx +3 -1
  14. package/src/dialog/hooks/index.tsx +5 -1
  15. package/src/dropdown/hooks/index.tsx +3 -1
  16. package/src/dropdown/index.tsx +9 -9
  17. package/src/field/hooks/index.tsx +5 -1
  18. package/src/field/styles/index.ts +1 -0
  19. package/src/index.ts +6 -0
  20. package/src/message-bubble/MessageBubble.stories.tsx +91 -0
  21. package/src/message-bubble/hooks/index.tsx +41 -0
  22. package/src/message-bubble/index.tsx +153 -0
  23. package/src/message-bubble/styles/index.ts +61 -0
  24. package/src/otp-field/hooks/index.tsx +3 -1
  25. package/src/otp-field/index.tsx +5 -3
  26. package/src/sheet/hooks/index.tsx +5 -1
  27. package/src/shimmer/Shimmer.stories.tsx +95 -0
  28. package/src/shimmer/index.tsx +64 -0
  29. package/src/shimmer/styles/index.ts +33 -0
  30. package/src/switch/hooks/index.tsx +5 -1
  31. package/src/tabs/hooks/index.tsx +5 -1
  32. package/src/text-area/Textarea.stories.tsx +7 -2
  33. package/src/text-area/index.tsx +30 -14
  34. package/src/text-area/styles/index.ts +32 -72
  35. package/src/toolbar/hooks/index.tsx +5 -1
  36. package/src/tooltip/index.tsx +4 -3
  37. package/src/tree/Tree.stories.tsx +139 -0
  38. package/src/tree/hooks/tree-node-provider.tsx +50 -0
  39. package/src/tree/hooks/tree-provider.tsx +75 -0
  40. package/src/tree/index.tsx +231 -0
  41. package/src/tree/styles/index.ts +23 -0
  42. package/tsconfig.build.json +20 -0
  43. package/tsconfig.json +1 -3
package/dist/index.js CHANGED
@@ -70,6 +70,10 @@ __export(index_exports, {
70
70
  FieldMeta: () => FieldMeta,
71
71
  FieldRoot: () => FieldRoot,
72
72
  FieldWrapper: () => FieldWrapper,
73
+ MessageBubble: () => MessageBubble,
74
+ MessageBubbleContent: () => MessageBubbleContent,
75
+ MessageBubbleMeta: () => MessageBubbleMeta,
76
+ MessageBubbleRoot: () => MessageBubbleRoot,
73
77
  MetaVariantEnum: () => MetaVariantEnum,
74
78
  OTPField: () => OTPField,
75
79
  OTPFieldSlot: () => OTPFieldSlot,
@@ -88,6 +92,7 @@ __export(index_exports, {
88
92
  Sheet: () => Sheet,
89
93
  SheetRoot: () => SheetRoot,
90
94
  SheetTrigger: () => SheetTrigger,
95
+ Shimmer: () => Shimmer,
91
96
  Skeleton: () => Skeleton,
92
97
  Spinner: () => Spinner,
93
98
  Switch: () => Switch,
@@ -112,16 +117,24 @@ __export(index_exports, {
112
117
  ToolbarSection: () => ToolbarSection,
113
118
  ToolbarTrigger: () => ToolbarTrigger,
114
119
  Tooltip: () => Tooltip,
120
+ Tree: () => Tree,
121
+ TreeContent: () => TreeContent,
122
+ TreeNode: () => TreeNode,
123
+ TreeRoot: () => TreeRoot,
124
+ TreeTrigger: () => TreeTrigger,
115
125
  useAccordion: () => useAccordion,
116
126
  useCheckbox: () => useCheckbox,
117
127
  useCollapsible: () => useCollapsible,
118
128
  useDialog: () => useDialog,
119
129
  useDropdownMenu: () => useDropdownMenu,
120
130
  useField: () => useField,
131
+ useMessageBubble: () => useMessageBubble,
121
132
  useSheet: () => useSheet,
122
133
  useSwitch: () => useSwitch,
123
134
  useTabs: () => useTabs,
124
- useToolbar: () => useToolbar
135
+ useToolbar: () => useToolbar,
136
+ useTree: () => useTree,
137
+ useTreeNode: () => useTreeNode
125
138
  });
126
139
  module.exports = __toCommonJS(index_exports);
127
140
 
@@ -1016,7 +1029,9 @@ var defaultComponentAPI2 = {
1016
1029
  };
1017
1030
  var CheckboxContext = (0, import_react8.createContext)(defaultComponentAPI2);
1018
1031
  var useCheckbox = () => (0, import_react8.useContext)(CheckboxContext);
1019
- var CheckboxProvider = ({ children }) => {
1032
+ var CheckboxProvider = ({
1033
+ children
1034
+ }) => {
1020
1035
  const context = useCheckboxProvider();
1021
1036
  return /* @__PURE__ */ import_react8.default.createElement(CheckboxContext.Provider, { value: context }, children);
1022
1037
  };
@@ -1460,7 +1475,9 @@ var defaultComponentAPI4 = {
1460
1475
  };
1461
1476
  var DialogContext = (0, import_react13.createContext)(defaultComponentAPI4);
1462
1477
  var useDialog = () => (0, import_react13.useContext)(DialogContext);
1463
- var DialogProvider = ({ children }) => {
1478
+ var DialogProvider = ({
1479
+ children
1480
+ }) => {
1464
1481
  const context = useDialogProvider();
1465
1482
  return /* @__PURE__ */ import_react13.default.createElement(DialogContext.Provider, { value: context }, children);
1466
1483
  };
@@ -1902,7 +1919,10 @@ var DropdownMenu = ({ children }) => {
1902
1919
  const handleClickOutside = () => {
1903
1920
  if (states.open && toggleOpen) toggleOpen();
1904
1921
  };
1905
- useClickOutside(DropdownContentRef, handleClickOutside);
1922
+ useClickOutside(
1923
+ DropdownContentRef,
1924
+ handleClickOutside
1925
+ );
1906
1926
  useDisabledScroll(Boolean(states.open));
1907
1927
  return /* @__PURE__ */ import_react19.default.createElement(RootWrapper, { ref: DropdownContentRef }, children);
1908
1928
  };
@@ -2078,7 +2098,9 @@ var defaultComponentAPI5 = {
2078
2098
  };
2079
2099
  var FieldContext = (0, import_react20.createContext)(defaultComponentAPI5);
2080
2100
  var useField = () => (0, import_react20.useContext)(FieldContext);
2081
- var FieldProvider = ({ children }) => {
2101
+ var FieldProvider = ({
2102
+ children
2103
+ }) => {
2082
2104
  const context = useFieldProvider();
2083
2105
  return /* @__PURE__ */ import_react20.default.createElement(FieldContext.Provider, { value: context }, children);
2084
2106
  };
@@ -2099,6 +2121,7 @@ var FieldDefaultStyles = import_styled_components10.css`
2099
2121
  display: flex;
2100
2122
  align-items: center;
2101
2123
  justify-content: center;
2124
+ box-sizing: border-box;
2102
2125
 
2103
2126
  font-size: var(--fontsize-medium-20);
2104
2127
 
@@ -2370,23 +2393,175 @@ Field.Wrapper = FieldWrapper;
2370
2393
  Field.Label = FieldLabel;
2371
2394
  Field.Meta = FieldMeta;
2372
2395
 
2373
- // src/otp-field/index.tsx
2396
+ // src/message-bubble/index.tsx
2374
2397
  var import_react23 = __toESM(require("react"));
2375
2398
 
2376
- // src/otp-field/hooks/index.tsx
2399
+ // src/message-bubble/hooks/index.tsx
2377
2400
  var import_react22 = __toESM(require("react"));
2378
- var OTPFieldContext = import_react22.default.createContext(
2401
+ var defaultComponentAPI6 = {
2402
+ id: "",
2403
+ states: {},
2404
+ methods: {}
2405
+ };
2406
+ var MessageBubbleContext = (0, import_react22.createContext)(defaultComponentAPI6);
2407
+ var useMessageBubble = () => (0, import_react22.useContext)(MessageBubbleContext);
2408
+ var MessageBubbleProvider = ({
2409
+ children
2410
+ }) => {
2411
+ const context = useMessageBubbleProvider();
2412
+ return /* @__PURE__ */ import_react22.default.createElement(MessageBubbleContext.Provider, { value: context }, children);
2413
+ };
2414
+ function useMessageBubbleProvider() {
2415
+ const [side, setSide] = (0, import_react22.useState)(null);
2416
+ const MessageBubbleId = import_react22.default.useId();
2417
+ return {
2418
+ id: MessageBubbleId,
2419
+ states: {
2420
+ side
2421
+ },
2422
+ methods: {
2423
+ applySide: (side2) => setSide(side2)
2424
+ }
2425
+ };
2426
+ }
2427
+
2428
+ // src/message-bubble/styles/index.ts
2429
+ var import_styled_components11 = __toESM(require("styled-components"));
2430
+ var MessageBubbleWrapper = import_styled_components11.default.div`
2431
+ display: flex;
2432
+ flex-direction: column;
2433
+ gap: var(--measurement-medium-10);
2434
+
2435
+ &[data-side="right"] {
2436
+ align-items: flex-end;
2437
+ }
2438
+
2439
+ &[data-side="left"] {
2440
+ align-items: flex-start;
2441
+ }
2442
+ `;
2443
+ var MessageBubbleBadge = (0, import_styled_components11.default)(Badge)`
2444
+ position: relative;
2445
+ max-width: var(--measurement-large-90);
2446
+ width: 100%;
2447
+ justify-self: flex-end;
2448
+ padding: var(--measurement-medium-30) var(--measurement-medium-50) !important;
2449
+ border-radius: var(--measurement-medium-60) !important;
2450
+
2451
+ &[data-side="left"] {
2452
+ background-color: var(--contrast-color) !important;
2453
+ border-bottom-left-radius: 0 !important;
2454
+ }
2455
+
2456
+ &[data-side="right"] {
2457
+ background-color: var(--font-color-alpha-10) !important;
2458
+ border-bottom-right-radius: 0 !important;
2459
+ }
2460
+ `;
2461
+ var MessageBubbleContentWrapper = import_styled_components11.default.div`
2462
+ line-height: 1.5;
2463
+ font-weight: 500;
2464
+ word-break: keep-all;
2465
+ width: 100%;
2466
+
2467
+ * {
2468
+ font-size: var(--fontsize-medium-10) !important;
2469
+ }
2470
+ `;
2471
+ var MessageBubbleMetaWrapper = import_styled_components11.default.div`
2472
+ display: flex;
2473
+ align-items: center;
2474
+ gap: var(--measurement-medium-10);
2475
+ width: 100%;
2476
+
2477
+ &[data-side="right"] {
2478
+ justify-content: flex-end;
2479
+ }
2480
+
2481
+ &[data-side="left"] {
2482
+ justify-content: flex-start;
2483
+ }
2484
+ `;
2485
+
2486
+ // src/message-bubble/index.tsx
2487
+ var MessageBubbleRoot = ({ children }) => {
2488
+ return /* @__PURE__ */ import_react23.default.createElement(MessageBubbleProvider, null, children);
2489
+ };
2490
+ MessageBubbleRoot.displayName = "MessageBubble.Root";
2491
+ var MessageBubble = (props) => {
2492
+ const { side, raw, children, ...restProps } = props;
2493
+ const { methods } = useMessageBubble();
2494
+ import_react23.default.useEffect(() => {
2495
+ if (side && methods?.applySide) methods.applySide(side);
2496
+ }, [side]);
2497
+ return /* @__PURE__ */ import_react23.default.createElement(
2498
+ MessageBubbleWrapper,
2499
+ {
2500
+ "data-raw": Boolean(raw),
2501
+ "data-side": side,
2502
+ "aria-label": restProps["aria-label"] ?? `message-bubble-${side}`,
2503
+ ...restProps
2504
+ },
2505
+ children
2506
+ );
2507
+ };
2508
+ MessageBubble.displayName = "MessageBubble";
2509
+ var MessageBubbleContent = (props) => {
2510
+ const { children, raw, ...restProps } = props;
2511
+ const { id, states } = useMessageBubble();
2512
+ return /* @__PURE__ */ import_react23.default.createElement(
2513
+ MessageBubbleBadge,
2514
+ {
2515
+ variant: "secondary",
2516
+ "data-raw": Boolean(raw),
2517
+ "data-side": states?.side,
2518
+ "aria-label": `message-bubble-content-${id}`,
2519
+ ...restProps
2520
+ },
2521
+ /* @__PURE__ */ import_react23.default.createElement(MessageBubbleContentWrapper, null, children)
2522
+ );
2523
+ };
2524
+ MessageBubbleContent.displayName = "MessageBubble.Content";
2525
+ var MessageBubbleMeta = (props) => {
2526
+ const { createdAt, raw, ...restProps } = props;
2527
+ const { states } = useMessageBubble();
2528
+ const formattedDate = new Intl.DateTimeFormat("en-US", {
2529
+ dateStyle: "medium",
2530
+ timeStyle: "short"
2531
+ }).format(createdAt);
2532
+ return /* @__PURE__ */ import_react23.default.createElement(
2533
+ MessageBubbleMetaWrapper,
2534
+ {
2535
+ "data-raw": Boolean(raw),
2536
+ "data-side": states?.side,
2537
+ "aria-label": `message-bubble-meta-${states?.side}`,
2538
+ ...restProps
2539
+ },
2540
+ formattedDate
2541
+ );
2542
+ };
2543
+ MessageBubbleMeta.displayName = "MessageBubble.Meta";
2544
+ MessageBubble.Root = MessageBubbleRoot;
2545
+ MessageBubble.Content = MessageBubbleContent;
2546
+ MessageBubble.Meta = MessageBubbleMeta;
2547
+
2548
+ // src/otp-field/index.tsx
2549
+ var import_react25 = __toESM(require("react"));
2550
+
2551
+ // src/otp-field/hooks/index.tsx
2552
+ var import_react24 = __toESM(require("react"));
2553
+ var OTPFieldContext = import_react24.default.createContext(
2379
2554
  null
2380
2555
  );
2381
2556
  var useOTPField = () => {
2382
- const context = import_react22.default.useContext(OTPFieldContext);
2557
+ const context = import_react24.default.useContext(OTPFieldContext);
2383
2558
  if (!context) return null;
2384
2559
  return context;
2385
2560
  };
2386
2561
 
2387
2562
  // src/otp-field/styles/index.ts
2388
- var import_styled_components11 = __toESM(require("styled-components"));
2389
- var OTPCell = import_styled_components11.default.input`
2563
+ var import_styled_components12 = __toESM(require("styled-components"));
2564
+ var OTPCell = import_styled_components12.default.input`
2390
2565
  width: var(--measurement-medium-90);
2391
2566
  height: var(--measurement-medium-90);
2392
2567
  border: var(--measurement-small-10) solid var(--font-color-alpha-10);
@@ -2421,11 +2596,11 @@ var OTPCell = import_styled_components11.default.input`
2421
2596
  // src/otp-field/index.tsx
2422
2597
  var OTPField = ({ children, length, onComplete }) => {
2423
2598
  const defaultLength = length ?? 6;
2424
- const inputRefs = import_react23.default.useRef([]);
2425
- const [otp, setOtp] = import_react23.default.useState(
2599
+ const inputRefs = import_react25.default.useRef([]);
2600
+ const [otp, setOtp] = import_react25.default.useState(
2426
2601
  Array.from({ length: defaultLength }, () => "")
2427
2602
  );
2428
- const [activeIndex, setActiveIndex] = import_react23.default.useState(0);
2603
+ const [activeIndex, setActiveIndex] = import_react25.default.useState(0);
2429
2604
  const handleChange = (index, value) => {
2430
2605
  const newOtp = [...otp];
2431
2606
  newOtp[index] = value.substring(value.length - 1);
@@ -2486,13 +2661,13 @@ var OTPField = ({ children, length, onComplete }) => {
2486
2661
  );
2487
2662
  return () => clearTimeout(timeout);
2488
2663
  };
2489
- import_react23.default.useEffect(() => {
2664
+ import_react25.default.useEffect(() => {
2490
2665
  const otpString = otp.join("");
2491
2666
  if (otpString.length === defaultLength && onComplete) {
2492
2667
  onComplete(otpString);
2493
2668
  }
2494
2669
  }, [otp, defaultLength, onComplete]);
2495
- const contextValue = import_react23.default.useMemo(() => {
2670
+ const contextValue = import_react25.default.useMemo(() => {
2496
2671
  return {
2497
2672
  otp,
2498
2673
  activeIndex,
@@ -2515,11 +2690,11 @@ var OTPField = ({ children, length, onComplete }) => {
2515
2690
  handleClick,
2516
2691
  handlePaste
2517
2692
  ]);
2518
- return /* @__PURE__ */ import_react23.default.createElement(OTPFieldContext.Provider, { value: contextValue }, children);
2693
+ return /* @__PURE__ */ import_react25.default.createElement(OTPFieldContext.Provider, { value: contextValue }, children);
2519
2694
  };
2520
2695
  OTPField.displayName = "OTPField";
2521
- var OTPFieldGroup = import_react23.default.forwardRef(({ ...props }, ref) => {
2522
- return /* @__PURE__ */ import_react23.default.createElement("span", { ref, className: "flex g-medium-10 align-center", ...props });
2696
+ var OTPFieldGroup = import_react25.default.forwardRef(({ ...props }, ref) => {
2697
+ return /* @__PURE__ */ import_react25.default.createElement("span", { ref, className: "flex g-medium-10 align-center", ...props });
2523
2698
  });
2524
2699
  OTPFieldGroup.displayName = "OTPField.Group";
2525
2700
  var OTPFieldSlot = ({
@@ -2538,10 +2713,12 @@ var OTPFieldSlot = ({
2538
2713
  handleClick,
2539
2714
  handlePaste
2540
2715
  } = context;
2541
- return /* @__PURE__ */ import_react23.default.createElement(
2716
+ return /* @__PURE__ */ import_react25.default.createElement(
2542
2717
  OTPCell,
2543
2718
  {
2544
- ref: (el) => inputRefs.current[index] = el,
2719
+ ref: (el) => {
2720
+ inputRefs.current[index] = el;
2721
+ },
2545
2722
  type: "text",
2546
2723
  "data-testid": "otp-field-slot",
2547
2724
  "data-active": activeIndex === index,
@@ -2564,11 +2741,11 @@ OTPField.Group = OTPFieldGroup;
2564
2741
  OTPField.Slot = OTPFieldSlot;
2565
2742
 
2566
2743
  // src/overlay/index.tsx
2567
- var import_react24 = __toESM(require("react"));
2744
+ var import_react26 = __toESM(require("react"));
2568
2745
 
2569
2746
  // src/overlay/styles/index.ts
2570
- var import_styled_components12 = __toESM(require("styled-components"));
2571
- var OverlayWrapper = import_styled_components12.default.div`
2747
+ var import_styled_components13 = __toESM(require("styled-components"));
2748
+ var OverlayWrapper = import_styled_components13.default.div`
2572
2749
  @keyframes animate-fade {
2573
2750
  0% {
2574
2751
  opacity: 0;
@@ -2596,15 +2773,15 @@ var OverlayWrapper = import_styled_components12.default.div`
2596
2773
  // src/overlay/index.tsx
2597
2774
  var Overlay = (props) => {
2598
2775
  const { raw, visible, closeOnInteract, onClick, ...restProps } = props;
2599
- const [mounted, setMounted] = import_react24.default.useState(Boolean(visible));
2776
+ const [mounted, setMounted] = import_react26.default.useState(Boolean(visible));
2600
2777
  const handleClick = (event) => {
2601
2778
  if (onClick) onClick(event);
2602
2779
  if (closeOnInteract) setMounted(false);
2603
2780
  };
2604
- import_react24.default.useEffect(() => {
2781
+ import_react26.default.useEffect(() => {
2605
2782
  if (visible !== mounted) setMounted(Boolean(visible));
2606
2783
  }, [visible]);
2607
- return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, mounted && /* @__PURE__ */ import_react24.default.createElement(
2784
+ return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, mounted && /* @__PURE__ */ import_react26.default.createElement(
2608
2785
  OverlayWrapper,
2609
2786
  {
2610
2787
  tabIndex: -1,
@@ -2618,14 +2795,14 @@ var Overlay = (props) => {
2618
2795
  Overlay.displayName = "Overlay";
2619
2796
 
2620
2797
  // src/page/index.tsx
2621
- var import_react25 = __toESM(require("react"));
2798
+ var import_react27 = __toESM(require("react"));
2622
2799
 
2623
2800
  // src/page/styles/index.ts
2624
- var import_styled_components14 = __toESM(require("styled-components"));
2801
+ var import_styled_components15 = __toESM(require("styled-components"));
2625
2802
 
2626
2803
  // src/scrollarea/styles/index.ts
2627
- var import_styled_components13 = __toESM(require("styled-components"));
2628
- var HiddenScrollbar = import_styled_components13.css`
2804
+ var import_styled_components14 = __toESM(require("styled-components"));
2805
+ var HiddenScrollbar = import_styled_components14.css`
2629
2806
  scrollbar-width: none;
2630
2807
 
2631
2808
  &::-webkit-scrollbar {
@@ -2637,7 +2814,7 @@ var HiddenScrollbar = import_styled_components13.css`
2637
2814
  display: none;
2638
2815
  }
2639
2816
  `;
2640
- var CustomScrollbar = import_styled_components13.css`
2817
+ var CustomScrollbar = import_styled_components14.css`
2641
2818
  height: ${({ $height }) => $height || "100%"};
2642
2819
  width: ${({ $width }) => $width || "100%"};
2643
2820
  overflow-y: auto;
@@ -2669,7 +2846,7 @@ var CustomScrollbar = import_styled_components13.css`
2669
2846
  scrollbar-width: thin;
2670
2847
  scrollbar-color: ${({ $thumbColor, $trackColor }) => `${$thumbColor || "var(--font-color-alpha-10)"} ${$trackColor || "transparent"}`};
2671
2848
  `;
2672
- var ScrollAreaWrapper = import_styled_components13.default.div`
2849
+ var ScrollAreaWrapper = import_styled_components14.default.div`
2673
2850
  overflow: scroll;
2674
2851
 
2675
2852
  &[data-scrollbar="true"] {
@@ -2681,11 +2858,11 @@ var ScrollAreaWrapper = import_styled_components13.default.div`
2681
2858
  `;
2682
2859
 
2683
2860
  // src/page/styles/index.ts
2684
- var PageRootWrapper = import_styled_components14.default.div`
2861
+ var PageRootWrapper = import_styled_components15.default.div`
2685
2862
  height: 100dvh;
2686
2863
  width: 100%;
2687
2864
  `;
2688
- var PageNavWrapper = import_styled_components14.default.nav`
2865
+ var PageNavWrapper = import_styled_components15.default.nav`
2689
2866
  background-color: var(--body-color);
2690
2867
  border: var(--measurement-small-10) solid transparent;
2691
2868
  border-bottom-color: var(--font-color-alpha-10);
@@ -2694,7 +2871,7 @@ var PageNavWrapper = import_styled_components14.default.nav`
2694
2871
  max-height: var(--measurement-large-20);
2695
2872
  padding: var(--measurement-medium-30);
2696
2873
  `;
2697
- var PageMenuWrapper = import_styled_components14.default.menu`
2874
+ var PageMenuWrapper = import_styled_components15.default.menu`
2698
2875
  background-color: var(--body-color);
2699
2876
  border: var(--measurement-small-10) solid transparent;
2700
2877
  border-bottom-color: var(--font-color-alpha-10);
@@ -2704,19 +2881,19 @@ var PageMenuWrapper = import_styled_components14.default.menu`
2704
2881
  margin: 0;
2705
2882
  padding: var(--measurement-medium-60) var(--measurement-medium-30);
2706
2883
  `;
2707
- var PagePanelWrapper = import_styled_components14.default.aside`
2884
+ var PagePanelWrapper = import_styled_components15.default.aside`
2708
2885
  position: absolute;
2709
2886
  bottom: 0;
2710
2887
  width: 100%;
2711
2888
  overflow: scroll;
2712
2889
  ${HiddenScrollbar}
2713
2890
  `;
2714
- var PageSectionWrapper = import_styled_components14.default.div`
2891
+ var PageSectionWrapper = import_styled_components15.default.div`
2715
2892
  background: var(--body-color);
2716
2893
  width: 100%;
2717
2894
  height: 100%;
2718
2895
  `;
2719
- var PageBodyWrapper = import_styled_components14.default.div`
2896
+ var PageBodyWrapper = import_styled_components15.default.div`
2720
2897
  --menus-height: calc(
2721
2898
  var(--measurement-large-30) *
2722
2899
  ${({ $menus }) => $menus ? Number($menus) : 0}
@@ -2741,12 +2918,12 @@ var PageBodyWrapper = import_styled_components14.default.div`
2741
2918
  // src/page/index.tsx
2742
2919
  var Page = (props) => {
2743
2920
  const { children } = props;
2744
- return /* @__PURE__ */ import_react25.default.createElement(PageRootWrapper, { className: "flex", ...props }, children);
2921
+ return /* @__PURE__ */ import_react27.default.createElement(PageRootWrapper, { className: "flex", ...props }, children);
2745
2922
  };
2746
2923
  Page.displayName = "Page";
2747
2924
  var PageNavigation = (props) => {
2748
2925
  const { children } = props;
2749
- return /* @__PURE__ */ import_react25.default.createElement(PageNavWrapper, { ...props }, children);
2926
+ return /* @__PURE__ */ import_react27.default.createElement(PageNavWrapper, { ...props }, children);
2750
2927
  };
2751
2928
  PageNavigation.displayName = "Page.Navigation";
2752
2929
  var PageTools = (props) => {
@@ -2768,7 +2945,7 @@ var PageTools = (props) => {
2768
2945
  const handleClick = (event) => {
2769
2946
  if (onClick) onClick(event);
2770
2947
  };
2771
- return /* @__PURE__ */ import_react25.default.createElement(Toolbar.Root, null, /* @__PURE__ */ import_react25.default.createElement(
2948
+ return /* @__PURE__ */ import_react27.default.createElement(Toolbar.Root, null, /* @__PURE__ */ import_react27.default.createElement(
2772
2949
  Toolbar,
2773
2950
  {
2774
2951
  raw,
@@ -2780,27 +2957,27 @@ var PageTools = (props) => {
2780
2957
  defaultOpen,
2781
2958
  ...props
2782
2959
  },
2783
- /* @__PURE__ */ import_react25.default.createElement(Toolbar.Section, { showoncollapse }, children),
2784
- !fixed && /* @__PURE__ */ import_react25.default.createElement(
2960
+ /* @__PURE__ */ import_react27.default.createElement(Toolbar.Section, { showoncollapse }, children),
2961
+ !fixed && /* @__PURE__ */ import_react27.default.createElement(
2785
2962
  Toolbar.Trigger,
2786
2963
  {
2787
2964
  title: shortcut ? `${bindkey ?? "ctrl"} + ${hotkey}` : "toolbar-trigger",
2788
2965
  onClick: handleClick,
2789
2966
  ...triggerProps
2790
2967
  },
2791
- trigger ?? /* @__PURE__ */ import_react25.default.createElement("span", null, "\u2194")
2968
+ trigger ?? /* @__PURE__ */ import_react27.default.createElement("span", null, "\u2194")
2792
2969
  )
2793
2970
  ));
2794
2971
  };
2795
2972
  PageTools.displayName = "Page.Tools";
2796
2973
  var PageContent = (props) => {
2797
2974
  const { children } = props;
2798
- return /* @__PURE__ */ import_react25.default.createElement(ScrollArea, { as: PageSectionWrapper, ...props }, children);
2975
+ return /* @__PURE__ */ import_react27.default.createElement(ScrollArea, { as: PageSectionWrapper, ...props }, children);
2799
2976
  };
2800
2977
  PageContent.displayName = "Page.Content";
2801
2978
  var PageWrapper = (props) => {
2802
2979
  const { children } = props;
2803
- return /* @__PURE__ */ import_react25.default.createElement(PageBodyWrapper, { ...props }, children);
2980
+ return /* @__PURE__ */ import_react27.default.createElement(PageBodyWrapper, { ...props }, children);
2804
2981
  };
2805
2982
  PageWrapper.displayName = "Page.Wrapper";
2806
2983
  var PagePanel = (props) => {
@@ -2823,7 +3000,7 @@ var PagePanel = (props) => {
2823
3000
  const handleClick = (event) => {
2824
3001
  if (onClick) onClick(event);
2825
3002
  };
2826
- return /* @__PURE__ */ import_react25.default.createElement(Toolbar.Root, null, /* @__PURE__ */ import_react25.default.createElement(
3003
+ return /* @__PURE__ */ import_react27.default.createElement(Toolbar.Root, null, /* @__PURE__ */ import_react27.default.createElement(
2827
3004
  PagePanelWrapper,
2828
3005
  {
2829
3006
  as: Toolbar,
@@ -2837,22 +3014,22 @@ var PagePanel = (props) => {
2837
3014
  defaultOpen,
2838
3015
  "aria-label": props["aria-label"]
2839
3016
  },
2840
- !fixed && /* @__PURE__ */ import_react25.default.createElement(
3017
+ !fixed && /* @__PURE__ */ import_react27.default.createElement(
2841
3018
  Toolbar.Trigger,
2842
3019
  {
2843
3020
  title: shortcut ? `${bindkey ?? "ctrl"} + ${hotkey}` : "toolbar-trigger",
2844
3021
  onClick: handleClick,
2845
3022
  ...triggerProps
2846
3023
  },
2847
- trigger ?? /* @__PURE__ */ import_react25.default.createElement("span", { style: { transform: "rotate(90deg)" } }, "\u2194")
3024
+ trigger ?? /* @__PURE__ */ import_react27.default.createElement("span", { style: { transform: "rotate(90deg)" } }, "\u2194")
2848
3025
  ),
2849
- /* @__PURE__ */ import_react25.default.createElement(Toolbar.Section, { showoncollapse }, children)
3026
+ /* @__PURE__ */ import_react27.default.createElement(Toolbar.Section, { showoncollapse }, children)
2850
3027
  ));
2851
3028
  };
2852
3029
  PagePanel.displayName = "Page.Panel";
2853
3030
  var PageMenu = (props) => {
2854
3031
  const { children } = props;
2855
- return /* @__PURE__ */ import_react25.default.createElement(PageMenuWrapper, { ...props }, children);
3032
+ return /* @__PURE__ */ import_react27.default.createElement(PageMenuWrapper, { ...props }, children);
2856
3033
  };
2857
3034
  PageMenu.displayName = "Page.Menu";
2858
3035
  Page.Navigation = PageNavigation;
@@ -2863,14 +3040,14 @@ Page.Panel = PagePanel;
2863
3040
  Page.Menu = PageMenu;
2864
3041
 
2865
3042
  // src/portal/index.tsx
2866
- var import_react26 = __toESM(require("react"));
3043
+ var import_react28 = __toESM(require("react"));
2867
3044
  var import_react_dom = require("react-dom");
2868
3045
  var Portal = (props) => {
2869
3046
  if (typeof document === "undefined") return null;
2870
3047
  const { container, children } = props;
2871
- const [hasMounted, setHasMounted] = import_react26.default.useState(false);
2872
- const [portalRoot, setPortalRoot] = import_react26.default.useState(null);
2873
- import_react26.default.useEffect(() => {
3048
+ const [hasMounted, setHasMounted] = import_react28.default.useState(false);
3049
+ const [portalRoot, setPortalRoot] = import_react28.default.useState(null);
3050
+ import_react28.default.useEffect(() => {
2874
3051
  setHasMounted(true);
2875
3052
  setPortalRoot(document.querySelector(`#${container}`));
2876
3053
  }, [container]);
@@ -2880,18 +3057,18 @@ var Portal = (props) => {
2880
3057
  Portal.displayName = "Portal";
2881
3058
 
2882
3059
  // src/privacy-field/index.tsx
2883
- var import_react27 = __toESM(require("react"));
3060
+ var import_react29 = __toESM(require("react"));
2884
3061
 
2885
3062
  // src/privacy-field/styles/index.ts
2886
- var import_styled_components15 = __toESM(require("styled-components"));
2887
- var Wrapper = (0, import_styled_components15.default)(Field.Wrapper)`
3063
+ var import_styled_components16 = __toESM(require("styled-components"));
3064
+ var Wrapper = (0, import_styled_components16.default)(Field.Wrapper)`
2888
3065
  position: relative;
2889
3066
 
2890
3067
  input {
2891
3068
  width: 100% !important;
2892
3069
  }
2893
3070
  `;
2894
- var Trigger = (0, import_styled_components15.default)(Button)`
3071
+ var Trigger = (0, import_styled_components16.default)(Button)`
2895
3072
  position: absolute !important;
2896
3073
  right: var(--measurement-medium-50);
2897
3074
  top: calc(var(--measurement-medium-50));
@@ -2904,30 +3081,30 @@ var PrivacyField = ({
2904
3081
  passwordIcon,
2905
3082
  ...restProps
2906
3083
  }) => {
2907
- const [type, setType] = import_react27.default.useState(
3084
+ const [type, setType] = import_react29.default.useState(
2908
3085
  defaultType ?? "password"
2909
3086
  );
2910
- const handleChangeType = import_react27.default.useCallback(() => {
3087
+ const handleChangeType = import_react29.default.useCallback(() => {
2911
3088
  if (type === "text") setType("password");
2912
3089
  if (type === "password") setType("text");
2913
3090
  }, [type, setType]);
2914
- return /* @__PURE__ */ import_react27.default.createElement(Wrapper, { className: "flex" }, /* @__PURE__ */ import_react27.default.createElement(Field, { autoComplete: "off", type, ...restProps }), /* @__PURE__ */ import_react27.default.createElement(Trigger, { variant: "ghost", sizing: "small", onClick: handleChangeType }, type === "text" && textIcon, type === "password" && passwordIcon));
3091
+ return /* @__PURE__ */ import_react29.default.createElement(Wrapper, { className: "flex" }, /* @__PURE__ */ import_react29.default.createElement(Field, { autoComplete: "off", type, ...restProps }), /* @__PURE__ */ import_react29.default.createElement(Trigger, { variant: "ghost", sizing: "small", onClick: handleChangeType }, type === "text" && textIcon, type === "password" && passwordIcon));
2915
3092
  };
2916
3093
  PrivacyField.displayName = "PrivacyField";
2917
3094
 
2918
3095
  // src/resizable/index.tsx
2919
- var import_react28 = __toESM(require("react"));
3096
+ var import_react30 = __toESM(require("react"));
2920
3097
 
2921
3098
  // src/resizable/styles/index.ts
2922
- var import_styled_components16 = __toESM(require("styled-components"));
2923
- var SplitContainer = import_styled_components16.default.div`
3099
+ var import_styled_components17 = __toESM(require("styled-components"));
3100
+ var SplitContainer = import_styled_components17.default.div`
2924
3101
  position: relative;
2925
3102
  `;
2926
- var Panel = import_styled_components16.default.div`
3103
+ var Panel = import_styled_components17.default.div`
2927
3104
  overflow: hidden;
2928
3105
  width: ${(props) => props.width}%;
2929
3106
  `;
2930
- var Divider2 = import_styled_components16.default.div`
3107
+ var Divider2 = import_styled_components17.default.div`
2931
3108
  width: var(--measurement-medium-10);
2932
3109
  height: 100%;
2933
3110
  top: 0;
@@ -2951,14 +3128,14 @@ var Divider2 = import_styled_components16.default.div`
2951
3128
  height: ${(props) => props.$dragging ? "var(--measurement-large-10)" : "var(--measurement-medium-60)"};
2952
3129
  }
2953
3130
  `;
2954
- var DragHandle = import_styled_components16.default.div`
3131
+ var DragHandle = import_styled_components17.default.div`
2955
3132
  position: absolute;
2956
3133
  top: 0;
2957
3134
  bottom: 0;
2958
3135
  left: calc(var(--measurement-medium-10) * -1);
2959
3136
  right: calc(var(--measurement-medium-10) * -1);
2960
3137
  `;
2961
- var DragIndicator = import_styled_components16.default.div`
3138
+ var DragIndicator = import_styled_components17.default.div`
2962
3139
  position: fixed;
2963
3140
  width: var(--measurement-medium-10);
2964
3141
  /* height: var(--measurement-medium-60); */
@@ -2968,7 +3145,7 @@ var DragIndicator = import_styled_components16.default.div`
2968
3145
  opacity: 0;
2969
3146
  transition: all 0.2s;
2970
3147
  `;
2971
- var DragOverlay = import_styled_components16.default.div`
3148
+ var DragOverlay = import_styled_components17.default.div`
2972
3149
  position: fixed;
2973
3150
  top: 0;
2974
3151
  left: 0;
@@ -2984,12 +3161,12 @@ var Resizable = ({
2984
3161
  left,
2985
3162
  right
2986
3163
  }) => {
2987
- const containerRef = import_react28.default.useRef(null);
2988
- const [leftWidth, setLeftWidth] = import_react28.default.useState(defaultWidth ?? 50);
2989
- const [isDragging, setIsDragging] = import_react28.default.useState(false);
2990
- const handleMouseDown = import_react28.default.useCallback(() => setIsDragging(true), []);
2991
- const handleMouseUp = import_react28.default.useCallback(() => setIsDragging(false), []);
2992
- const handleMouseMove = import_react28.default.useCallback(
3164
+ const containerRef = import_react30.default.useRef(null);
3165
+ const [leftWidth, setLeftWidth] = import_react30.default.useState(defaultWidth ?? 50);
3166
+ const [isDragging, setIsDragging] = import_react30.default.useState(false);
3167
+ const handleMouseDown = import_react30.default.useCallback(() => setIsDragging(true), []);
3168
+ const handleMouseUp = import_react30.default.useCallback(() => setIsDragging(false), []);
3169
+ const handleMouseMove = import_react30.default.useCallback(
2993
3170
  (e) => {
2994
3171
  if (!isDragging || !containerRef.current) return;
2995
3172
  const containerRect = containerRef.current.getBoundingClientRect();
@@ -3003,7 +3180,7 @@ var Resizable = ({
3003
3180
  },
3004
3181
  [isDragging]
3005
3182
  );
3006
- import_react28.default.useEffect(() => {
3183
+ import_react30.default.useEffect(() => {
3007
3184
  if (isDragging) {
3008
3185
  document.addEventListener("mousemove", handleMouseMove);
3009
3186
  document.addEventListener("mouseup", handleMouseUp);
@@ -3022,45 +3199,47 @@ var Resizable = ({
3022
3199
  document.body.style.userSelect = "";
3023
3200
  };
3024
3201
  }, [isDragging, handleMouseMove, handleMouseUp]);
3025
- return /* @__PURE__ */ import_react28.default.createElement(import_react28.default.Fragment, null, /* @__PURE__ */ import_react28.default.createElement(SplitContainer, { ref: containerRef, className: "h-100 flex" }, /* @__PURE__ */ import_react28.default.createElement(Panel, { width: leftWidth }, left), /* @__PURE__ */ import_react28.default.createElement(
3202
+ return /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, /* @__PURE__ */ import_react30.default.createElement(SplitContainer, { ref: containerRef, className: "h-100 flex" }, /* @__PURE__ */ import_react30.default.createElement(Panel, { width: leftWidth }, left), /* @__PURE__ */ import_react30.default.createElement(
3026
3203
  Divider2,
3027
3204
  {
3028
3205
  $dragging: isDragging,
3029
3206
  onMouseDown: handleMouseDown,
3030
3207
  onTouchStart: handleMouseDown
3031
3208
  },
3032
- /* @__PURE__ */ import_react28.default.createElement(
3209
+ /* @__PURE__ */ import_react30.default.createElement(
3033
3210
  DragHandle,
3034
3211
  {
3035
3212
  className: "flex align-center justify-center",
3036
3213
  id: "drag-handle"
3037
3214
  },
3038
- /* @__PURE__ */ import_react28.default.createElement(DragIndicator, { className: "drag-indicator-handle" })
3215
+ /* @__PURE__ */ import_react30.default.createElement(DragIndicator, { className: "drag-indicator-handle" })
3039
3216
  )
3040
- ), /* @__PURE__ */ import_react28.default.createElement(Panel, { width: 100 - leftWidth }, right)), isDragging && /* @__PURE__ */ import_react28.default.createElement(DragOverlay, null));
3217
+ ), /* @__PURE__ */ import_react30.default.createElement(Panel, { width: 100 - leftWidth }, right)), isDragging && /* @__PURE__ */ import_react30.default.createElement(DragOverlay, null));
3041
3218
  };
3042
3219
  Resizable.displayName = "Resizable";
3043
3220
 
3044
3221
  // src/sheet/index.tsx
3045
- var import_react30 = __toESM(require("react"));
3222
+ var import_react32 = __toESM(require("react"));
3046
3223
 
3047
3224
  // src/sheet/hooks/index.tsx
3048
- var import_react29 = __toESM(require("react"));
3049
- var SheetContext = import_react29.default.createContext({
3225
+ var import_react31 = __toESM(require("react"));
3226
+ var SheetContext = import_react31.default.createContext({
3050
3227
  id: {},
3051
3228
  states: {},
3052
3229
  methods: {}
3053
3230
  });
3054
- var useSheet = () => import_react29.default.useContext(SheetContext);
3055
- var SheetProvider = ({ children }) => {
3231
+ var useSheet = () => import_react31.default.useContext(SheetContext);
3232
+ var SheetProvider = ({
3233
+ children
3234
+ }) => {
3056
3235
  const context = useSheetProvider();
3057
- return /* @__PURE__ */ import_react29.default.createElement(SheetContext.Provider, { value: context }, children);
3236
+ return /* @__PURE__ */ import_react31.default.createElement(SheetContext.Provider, { value: context }, children);
3058
3237
  };
3059
3238
  function useSheetProvider() {
3060
- const containerId = import_react29.default.useId();
3061
- const triggerId = import_react29.default.useId();
3062
- const controlId = import_react29.default.useId();
3063
- const [open, setOpen] = import_react29.default.useState(false);
3239
+ const containerId = import_react31.default.useId();
3240
+ const triggerId = import_react31.default.useId();
3241
+ const controlId = import_react31.default.useId();
3242
+ const [open, setOpen] = import_react31.default.useState(false);
3064
3243
  return {
3065
3244
  id: {
3066
3245
  containerId,
@@ -3078,8 +3257,8 @@ function useSheetProvider() {
3078
3257
  }
3079
3258
 
3080
3259
  // src/sheet/styles/index.ts
3081
- var import_styled_components17 = __toESM(require("styled-components"));
3082
- var SheetStyles = import_styled_components17.css`
3260
+ var import_styled_components18 = __toESM(require("styled-components"));
3261
+ var SheetStyles = import_styled_components18.css`
3083
3262
  all: unset;
3084
3263
  position: fixed;
3085
3264
  background-color: var(--body-color);
@@ -3110,7 +3289,7 @@ var SheetStyles = import_styled_components17.css`
3110
3289
  animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
3111
3290
  animation-fill-mode: backwards;
3112
3291
  `;
3113
- var SheetSizeStyles = import_styled_components17.css`
3292
+ var SheetSizeStyles = import_styled_components18.css`
3114
3293
  &[data-size="small"] {
3115
3294
  width: var(--measurement-large-80);
3116
3295
  }
@@ -3123,7 +3302,7 @@ var SheetSizeStyles = import_styled_components17.css`
3123
3302
  width: calc(var(--measurement-large-90) * 1.5);
3124
3303
  }
3125
3304
  `;
3126
- var SheetSideStyles = import_styled_components17.css`
3305
+ var SheetSideStyles = import_styled_components18.css`
3127
3306
  top: 0;
3128
3307
 
3129
3308
  &[data-side="right"] {
@@ -3138,7 +3317,7 @@ var SheetSideStyles = import_styled_components17.css`
3138
3317
  animation-name: slide-left;
3139
3318
  }
3140
3319
  `;
3141
- var SheetWrapper = import_styled_components17.default.dialog`
3320
+ var SheetWrapper = import_styled_components18.default.dialog`
3142
3321
  &[data-raw="false"] {
3143
3322
  ${SheetStyles}
3144
3323
  ${SheetSideStyles}
@@ -3148,7 +3327,7 @@ var SheetWrapper = import_styled_components17.default.dialog`
3148
3327
 
3149
3328
  // src/sheet/index.tsx
3150
3329
  var SheetRoot = ({ children }) => {
3151
- return /* @__PURE__ */ import_react30.default.createElement(SheetProvider, null, children);
3330
+ return /* @__PURE__ */ import_react32.default.createElement(SheetProvider, null, children);
3152
3331
  };
3153
3332
  SheetRoot.displayName = "Sheet.Root";
3154
3333
  var Sheet = (props) => {
@@ -3169,16 +3348,16 @@ var Sheet = (props) => {
3169
3348
  const { id, states, methods } = useSheet();
3170
3349
  const { toggle } = methods;
3171
3350
  const shortcutControls = useKeyPress(String(hotkey), true, bindkey);
3172
- import_react30.default.useEffect(() => {
3351
+ import_react32.default.useEffect(() => {
3173
3352
  if (open && toggle) return toggle();
3174
3353
  }, [open]);
3175
- import_react30.default.useEffect(() => {
3354
+ import_react32.default.useEffect(() => {
3176
3355
  if (shortcut && shortcutControls && toggle) {
3177
3356
  return toggle();
3178
3357
  }
3179
3358
  }, [shortcutControls]);
3180
3359
  useDisabledScroll(lock && Boolean(states.open));
3181
- return /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, states.open && /* @__PURE__ */ import_react30.default.createElement(import_react30.default.Fragment, null, /* @__PURE__ */ import_react30.default.createElement(
3360
+ return /* @__PURE__ */ import_react32.default.createElement(import_react32.default.Fragment, null, states.open && /* @__PURE__ */ import_react32.default.createElement(import_react32.default.Fragment, null, /* @__PURE__ */ import_react32.default.createElement(
3182
3361
  SheetWrapper,
3183
3362
  {
3184
3363
  role: "dialog",
@@ -3195,7 +3374,7 @@ var Sheet = (props) => {
3195
3374
  ...restProps
3196
3375
  },
3197
3376
  children
3198
- ), overlay && /* @__PURE__ */ import_react30.default.createElement(
3377
+ ), overlay && /* @__PURE__ */ import_react32.default.createElement(
3199
3378
  Overlay,
3200
3379
  {
3201
3380
  onClick: () => toggle && toggle(!states.open),
@@ -3221,7 +3400,7 @@ var SheetTrigger = (props) => {
3221
3400
  if (onClick) onClick(event);
3222
3401
  if (toggle) toggle(!states.open);
3223
3402
  };
3224
- return /* @__PURE__ */ import_react30.default.createElement(
3403
+ return /* @__PURE__ */ import_react32.default.createElement(
3225
3404
  Button,
3226
3405
  {
3227
3406
  id: id.triggerId,
@@ -3240,14 +3419,76 @@ SheetTrigger.displayName = "Sheet.Trigger";
3240
3419
  Sheet.Root = SheetRoot;
3241
3420
  Sheet.Trigger = SheetTrigger;
3242
3421
 
3422
+ // src/shimmer/index.tsx
3423
+ var import_react33 = __toESM(require("react"));
3424
+
3425
+ // src/shimmer/styles/index.ts
3426
+ var import_styled_components19 = __toESM(require("styled-components"));
3427
+ var shimmer = import_styled_components19.keyframes`
3428
+ 0% {
3429
+ background-position: 200% center;
3430
+ }
3431
+ 100% {
3432
+ background-position: -200% center;
3433
+ }
3434
+ `;
3435
+ var TextShimmerWrapper = import_styled_components19.default.span`
3436
+ background: linear-gradient(
3437
+ 90deg,
3438
+ ${({ "data-base-color": baseColor }) => baseColor} 0%,
3439
+ ${({ "data-shimmer-color": shimmerColor }) => shimmerColor} 40%,
3440
+ ${({ "data-base-color": baseColor }) => baseColor} 60%,
3441
+ ${({ "data-base-color": baseColor }) => baseColor} 100%
3442
+ );
3443
+ background-size: ${({ "data-spread": spread }) => spread}% auto;
3444
+ background-clip: text;
3445
+ -webkit-background-clip: text;
3446
+ -webkit-text-fill-color: transparent;
3447
+ color: transparent;
3448
+ animation: ${shimmer} ${({ "data-duration": duration }) => duration}s linear
3449
+ infinite;
3450
+ display: inline-block;
3451
+ `;
3452
+
3453
+ // src/shimmer/index.tsx
3454
+ var DEFAULT_DURATION = 2;
3455
+ var DEFAULT_SPREAD = 200;
3456
+ var DEFAULT_SHIMMER_COLOR = "var(--font-color-alpha-60)";
3457
+ var DEFAULT_BASE_COLOR = "var(--font-color-alpha-30)";
3458
+ var Shimmer = (props) => {
3459
+ const {
3460
+ children,
3461
+ raw,
3462
+ duration = DEFAULT_DURATION,
3463
+ spread = DEFAULT_SPREAD,
3464
+ shimmerColor = DEFAULT_SHIMMER_COLOR,
3465
+ baseColor = DEFAULT_BASE_COLOR,
3466
+ ...restProps
3467
+ } = props;
3468
+ return /* @__PURE__ */ import_react33.default.createElement(
3469
+ TextShimmerWrapper,
3470
+ {
3471
+ "data-raw": Boolean(raw),
3472
+ "data-duration": duration,
3473
+ "data-spread": spread,
3474
+ "data-shimmer-color": shimmerColor,
3475
+ "data-base-color": baseColor,
3476
+ "aria-label": restProps["aria-label"] ?? "shimmer-text",
3477
+ ...restProps
3478
+ },
3479
+ children
3480
+ );
3481
+ };
3482
+ Shimmer.displayName = "Shimmer";
3483
+
3243
3484
  // src/scrollarea/index.tsx
3244
- var import_react31 = __toESM(require("react"));
3485
+ var import_react34 = __toESM(require("react"));
3245
3486
  var ScrollArea = ({
3246
3487
  scrollbar = false,
3247
3488
  children,
3248
3489
  ...restProps
3249
3490
  }) => {
3250
- return /* @__PURE__ */ import_react31.default.createElement(
3491
+ return /* @__PURE__ */ import_react34.default.createElement(
3251
3492
  ScrollAreaWrapper,
3252
3493
  {
3253
3494
  "aria-hidden": "true",
@@ -3259,11 +3500,11 @@ var ScrollArea = ({
3259
3500
  };
3260
3501
 
3261
3502
  // src/spinner/index.tsx
3262
- var import_react32 = __toESM(require("react"));
3503
+ var import_react35 = __toESM(require("react"));
3263
3504
 
3264
3505
  // src/spinner/styles/index.ts
3265
- var import_styled_components18 = __toESM(require("styled-components"));
3266
- var Rotate = import_styled_components18.keyframes`
3506
+ var import_styled_components20 = __toESM(require("styled-components"));
3507
+ var Rotate = import_styled_components20.keyframes`
3267
3508
  0% {
3268
3509
  transform: rotate(0deg);
3269
3510
  }
@@ -3271,7 +3512,7 @@ var Rotate = import_styled_components18.keyframes`
3271
3512
  transform: rotate(360deg);
3272
3513
  }
3273
3514
  `;
3274
- var FieldSizeStyles2 = import_styled_components18.css`
3515
+ var FieldSizeStyles2 = import_styled_components20.css`
3275
3516
  &[data-size="small"] {
3276
3517
  width: var(--measurement-medium-40);
3277
3518
  height: var(--measurement-medium-40);
@@ -3285,7 +3526,7 @@ var FieldSizeStyles2 = import_styled_components18.css`
3285
3526
  height: var(--measurement-medium-60);
3286
3527
  }
3287
3528
  `;
3288
- var RotatingSpinner = import_styled_components18.default.span`
3529
+ var RotatingSpinner = import_styled_components20.default.span`
3289
3530
  padding: 0;
3290
3531
  margin: 0;
3291
3532
 
@@ -3303,15 +3544,15 @@ var RotatingSpinner = import_styled_components18.default.span`
3303
3544
 
3304
3545
  // src/spinner/index.tsx
3305
3546
  var Spinner = (props) => {
3306
- return /* @__PURE__ */ import_react32.default.createElement(RotatingSpinner, { "data-size": props.sizing ?? "medium" });
3547
+ return /* @__PURE__ */ import_react35.default.createElement(RotatingSpinner, { "data-size": props.sizing ?? "medium" });
3307
3548
  };
3308
3549
 
3309
3550
  // src/skeleton/index.tsx
3310
- var import_react33 = __toESM(require("react"));
3551
+ var import_react36 = __toESM(require("react"));
3311
3552
 
3312
3553
  // src/skeleton/styles/index.ts
3313
- var import_styled_components19 = __toESM(require("styled-components"));
3314
- var SkeletonBlink = import_styled_components19.keyframes`
3554
+ var import_styled_components21 = __toESM(require("styled-components"));
3555
+ var SkeletonBlink = import_styled_components21.keyframes`
3315
3556
  0% {
3316
3557
  opacity: 0.3;
3317
3558
  }
@@ -3319,7 +3560,7 @@ var SkeletonBlink = import_styled_components19.keyframes`
3319
3560
  opacity: 0.1;
3320
3561
  }
3321
3562
  `;
3322
- var SkeletonBaseStyles = import_styled_components19.css`
3563
+ var SkeletonBaseStyles = import_styled_components21.css`
3323
3564
  background: linear-gradient(
3324
3565
  45deg,
3325
3566
  var(--font-color-alpha-10),
@@ -3327,7 +3568,7 @@ var SkeletonBaseStyles = import_styled_components19.css`
3327
3568
  );
3328
3569
  animation: ${SkeletonBlink} 1s ease-in-out alternate-reverse infinite;
3329
3570
  `;
3330
- var SkeletonSizeStyles = import_styled_components19.css`
3571
+ var SkeletonSizeStyles = import_styled_components21.css`
3331
3572
  &[data-size="small"] {
3332
3573
  width: 100%;
3333
3574
 
@@ -3345,7 +3586,7 @@ var SkeletonSizeStyles = import_styled_components19.css`
3345
3586
  min-height: var(--measurement-medium-90);
3346
3587
  }
3347
3588
  `;
3348
- var SkeletonShapeStyles = import_styled_components19.css`
3589
+ var SkeletonShapeStyles = import_styled_components21.css`
3349
3590
  &[data-shape="square"] {
3350
3591
  border-radius: 0;
3351
3592
  }
@@ -3356,7 +3597,7 @@ var SkeletonShapeStyles = import_styled_components19.css`
3356
3597
  border-radius: var(--measurement-large-90);
3357
3598
  }
3358
3599
  `;
3359
- var SkeletonLoader = import_styled_components19.default.span`
3600
+ var SkeletonLoader = import_styled_components21.default.span`
3360
3601
  ${SkeletonBaseStyles}
3361
3602
  ${SkeletonSizeStyles}
3362
3603
  ${SkeletonShapeStyles}
@@ -3369,7 +3610,7 @@ var Skeleton = (props) => {
3369
3610
  shape = "smooth",
3370
3611
  ...restProps
3371
3612
  } = props;
3372
- return /* @__PURE__ */ import_react33.default.createElement(
3613
+ return /* @__PURE__ */ import_react36.default.createElement(
3373
3614
  SkeletonLoader,
3374
3615
  {
3375
3616
  "data-size": sizing,
@@ -3382,24 +3623,26 @@ var Skeleton = (props) => {
3382
3623
  Skeleton.displayName = "Skeleton";
3383
3624
 
3384
3625
  // src/switch/index.tsx
3385
- var import_react35 = __toESM(require("react"));
3626
+ var import_react38 = __toESM(require("react"));
3386
3627
 
3387
3628
  // src/switch/hooks/index.tsx
3388
- var import_react34 = __toESM(require("react"));
3389
- var defaultComponentAPI6 = {
3629
+ var import_react37 = __toESM(require("react"));
3630
+ var defaultComponentAPI7 = {
3390
3631
  id: "",
3391
3632
  states: {},
3392
3633
  methods: {}
3393
3634
  };
3394
- var SwitchContext = (0, import_react34.createContext)(defaultComponentAPI6);
3395
- var useSwitch = () => (0, import_react34.useContext)(SwitchContext);
3396
- var SwitchProvider = ({ children }) => {
3635
+ var SwitchContext = (0, import_react37.createContext)(defaultComponentAPI7);
3636
+ var useSwitch = () => (0, import_react37.useContext)(SwitchContext);
3637
+ var SwitchProvider = ({
3638
+ children
3639
+ }) => {
3397
3640
  const context = useSwitchProvider();
3398
- return /* @__PURE__ */ import_react34.default.createElement(SwitchContext.Provider, { value: context }, children);
3641
+ return /* @__PURE__ */ import_react37.default.createElement(SwitchContext.Provider, { value: context }, children);
3399
3642
  };
3400
3643
  function useSwitchProvider() {
3401
- const [checked, setChecked] = (0, import_react34.useState)(false);
3402
- const switchId = import_react34.default.useId();
3644
+ const [checked, setChecked] = (0, import_react37.useState)(false);
3645
+ const switchId = import_react37.default.useId();
3403
3646
  return {
3404
3647
  id: switchId,
3405
3648
  states: {
@@ -3412,8 +3655,8 @@ function useSwitchProvider() {
3412
3655
  }
3413
3656
 
3414
3657
  // src/switch/styles/index.ts
3415
- var import_styled_components20 = __toESM(require("styled-components"));
3416
- var SwitchDefaultStyles = import_styled_components20.css`
3658
+ var import_styled_components22 = __toESM(require("styled-components"));
3659
+ var SwitchDefaultStyles = import_styled_components22.css`
3417
3660
  all: unset;
3418
3661
 
3419
3662
  border: var(--measurement-small-10) solid transparent;
@@ -3427,7 +3670,7 @@ var SwitchDefaultStyles = import_styled_components20.css`
3427
3670
  opacity: 0.6;
3428
3671
  }
3429
3672
  `;
3430
- var SwitchVariantsStyles = import_styled_components20.css`
3673
+ var SwitchVariantsStyles = import_styled_components22.css`
3431
3674
  &[data-variant="primary"] {
3432
3675
  &[aria-checked="true"] {
3433
3676
  background-color: var(--color-green);
@@ -3458,7 +3701,7 @@ var SwitchVariantsStyles = import_styled_components20.css`
3458
3701
  }
3459
3702
  }
3460
3703
  `;
3461
- var SwitchSizeStyles = import_styled_components20.css`
3704
+ var SwitchSizeStyles = import_styled_components22.css`
3462
3705
  &[data-size="small"] {
3463
3706
  width: calc(var(--measurement-medium-60) * 1.33);
3464
3707
  height: var(--measurement-medium-50);
@@ -3507,14 +3750,14 @@ var SwitchSizeStyles = import_styled_components20.css`
3507
3750
  }
3508
3751
  }
3509
3752
  `;
3510
- var TriggerWrapper = import_styled_components20.default.button`
3753
+ var TriggerWrapper = import_styled_components22.default.button`
3511
3754
  &[data-raw="false"] {
3512
3755
  ${SwitchDefaultStyles}
3513
3756
  ${SwitchVariantsStyles}
3514
3757
  ${SwitchSizeStyles}
3515
3758
  }
3516
3759
  `;
3517
- var Thumb = import_styled_components20.default.span`
3760
+ var Thumb = import_styled_components22.default.span`
3518
3761
  &[data-raw="false"] {
3519
3762
  all: unset;
3520
3763
  display: block;
@@ -3548,10 +3791,10 @@ var Switch = (props) => {
3548
3791
  if (onClick) onClick(event);
3549
3792
  if (toggleSwitch) toggleSwitch();
3550
3793
  };
3551
- import_react35.default.useEffect(() => {
3794
+ import_react38.default.useEffect(() => {
3552
3795
  if (defaultChecked && toggleSwitch) toggleSwitch();
3553
3796
  }, [defaultChecked]);
3554
- return /* @__PURE__ */ import_react35.default.createElement(
3797
+ return /* @__PURE__ */ import_react38.default.createElement(
3555
3798
  TriggerWrapper,
3556
3799
  {
3557
3800
  type: "button",
@@ -3567,19 +3810,19 @@ var Switch = (props) => {
3567
3810
  "data-raw": Boolean(raw),
3568
3811
  ...restProps
3569
3812
  },
3570
- /* @__PURE__ */ import_react35.default.createElement("title", null, "Switch"),
3813
+ /* @__PURE__ */ import_react38.default.createElement("title", null, "Switch"),
3571
3814
  children
3572
3815
  );
3573
3816
  };
3574
3817
  Switch.displayName = "Switch";
3575
3818
  var SwitchRoot = ({ children }) => {
3576
- return /* @__PURE__ */ import_react35.default.createElement(SwitchProvider, null, children);
3819
+ return /* @__PURE__ */ import_react38.default.createElement(SwitchProvider, null, children);
3577
3820
  };
3578
3821
  SwitchRoot.displayName = "Switch.Root";
3579
3822
  var SwitchThumb = (props) => {
3580
3823
  const { raw, sizing } = props;
3581
3824
  const { id, states } = useSwitch();
3582
- return /* @__PURE__ */ import_react35.default.createElement(
3825
+ return /* @__PURE__ */ import_react38.default.createElement(
3583
3826
  Thumb,
3584
3827
  {
3585
3828
  role: "presentation",
@@ -3599,11 +3842,11 @@ Switch.Root = SwitchRoot;
3599
3842
  Switch.Thumb = SwitchThumb;
3600
3843
 
3601
3844
  // src/table/index.tsx
3602
- var import_react36 = __toESM(require("react"));
3845
+ var import_react39 = __toESM(require("react"));
3603
3846
 
3604
3847
  // src/table/styles/index.ts
3605
- var import_styled_components21 = __toESM(require("styled-components"));
3606
- var CellStyles = import_styled_components21.css`
3848
+ var import_styled_components23 = __toESM(require("styled-components"));
3849
+ var CellStyles = import_styled_components23.css`
3607
3850
  box-sizing: border-box;
3608
3851
  border: none;
3609
3852
  line-height: 1;
@@ -3613,11 +3856,11 @@ var CellStyles = import_styled_components21.css`
3613
3856
  var(--fontsize-small-10) - ((var(--fontsize-small-10) * 1.066))
3614
3857
  );
3615
3858
  `;
3616
- var TableLayer = import_styled_components21.default.div`
3859
+ var TableLayer = import_styled_components23.default.div`
3617
3860
  border-radius: var(--measurement-medium-30);
3618
3861
  border: var(--measurement-small-10) solid var(--font-color-alpha-10);
3619
3862
  `;
3620
- var TableWrapper = import_styled_components21.default.table`
3863
+ var TableWrapper = import_styled_components23.default.table`
3621
3864
  border-collapse: collapse;
3622
3865
 
3623
3866
  tbody {
@@ -3628,7 +3871,7 @@ var TableWrapper = import_styled_components21.default.table`
3628
3871
  }
3629
3872
  }
3630
3873
  `;
3631
- var RowWrapper = import_styled_components21.default.tr`
3874
+ var RowWrapper = import_styled_components23.default.tr`
3632
3875
  border-bottom: var(--measurement-small-10) solid var(--font-color-alpha-10);
3633
3876
 
3634
3877
  transition: background-color linear 0.1s;
@@ -3637,7 +3880,7 @@ var RowWrapper = import_styled_components21.default.tr`
3637
3880
  background-color: var(--font-color-alpha-10);
3638
3881
  }
3639
3882
  `;
3640
- var HeadCellWrapper = import_styled_components21.default.th`
3883
+ var HeadCellWrapper = import_styled_components23.default.th`
3641
3884
  font-size: var(--fontsize-medium-10);
3642
3885
  ${CellStyles}
3643
3886
 
@@ -3645,7 +3888,7 @@ var HeadCellWrapper = import_styled_components21.default.th`
3645
3888
  color: var(--font-color-alpha-60);
3646
3889
  }
3647
3890
  `;
3648
- var CellWrapper = import_styled_components21.default.td`
3891
+ var CellWrapper = import_styled_components23.default.td`
3649
3892
  ${CellStyles}
3650
3893
  `;
3651
3894
 
@@ -3654,43 +3897,43 @@ var Table = ({
3654
3897
  children,
3655
3898
  ...restProps
3656
3899
  }) => {
3657
- return /* @__PURE__ */ import_react36.default.createElement(ScrollArea, { as: TableLayer, role: "presentation", tabIndex: -1 }, /* @__PURE__ */ import_react36.default.createElement(TableWrapper, { ...restProps, cellSpacing: "0", cellPadding: "0" }, children));
3900
+ return /* @__PURE__ */ import_react39.default.createElement(ScrollArea, { as: TableLayer, role: "presentation", tabIndex: -1 }, /* @__PURE__ */ import_react39.default.createElement(TableWrapper, { ...restProps, cellSpacing: "0", cellPadding: "0" }, children));
3658
3901
  };
3659
3902
  Table.displayName = "Table";
3660
3903
  var TableHead = ({
3661
3904
  children,
3662
3905
  ...restProps
3663
3906
  }) => {
3664
- return /* @__PURE__ */ import_react36.default.createElement("thead", { ...restProps }, children);
3907
+ return /* @__PURE__ */ import_react39.default.createElement("thead", { ...restProps }, children);
3665
3908
  };
3666
3909
  TableHead.displayName = "Table.Head";
3667
3910
  var TableBody = ({
3668
3911
  children,
3669
3912
  ...restProps
3670
3913
  }) => {
3671
- return /* @__PURE__ */ import_react36.default.createElement("tbody", { ...restProps }, children);
3914
+ return /* @__PURE__ */ import_react39.default.createElement("tbody", { ...restProps }, children);
3672
3915
  };
3673
3916
  TableBody.displayName = "Table.Body";
3674
3917
  var TableHeadCell = ({
3675
3918
  children,
3676
3919
  ...restProps
3677
3920
  }) => {
3678
- return /* @__PURE__ */ import_react36.default.createElement(HeadCellWrapper, { colSpan: 1, ...restProps }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex align-center g-medium-30" }, children));
3921
+ return /* @__PURE__ */ import_react39.default.createElement(HeadCellWrapper, { colSpan: 1, ...restProps }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex align-center g-medium-30" }, children));
3679
3922
  };
3680
3923
  TableHeadCell.displayName = "Table.HeadCell";
3681
3924
  var TableRow = ({ children, ...restProps }) => {
3682
- return /* @__PURE__ */ import_react36.default.createElement(RowWrapper, { className: "p-medium-30", ...restProps }, children);
3925
+ return /* @__PURE__ */ import_react39.default.createElement(RowWrapper, { className: "p-medium-30", ...restProps }, children);
3683
3926
  };
3684
3927
  TableRow.displayName = "Table.Row";
3685
3928
  var TableCell = ({ children, ...restProps }) => {
3686
- return /* @__PURE__ */ import_react36.default.createElement(CellWrapper, { ...restProps }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex align-center g-medium-30" }, children));
3929
+ return /* @__PURE__ */ import_react39.default.createElement(CellWrapper, { ...restProps }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex align-center g-medium-30" }, children));
3687
3930
  };
3688
3931
  TableCell.displayName = "Table.Cell";
3689
3932
  var TableFooter = ({
3690
3933
  children,
3691
3934
  ...restProps
3692
3935
  }) => {
3693
- return /* @__PURE__ */ import_react36.default.createElement("tfoot", { ...restProps }, children);
3936
+ return /* @__PURE__ */ import_react39.default.createElement("tfoot", { ...restProps }, children);
3694
3937
  };
3695
3938
  TableFooter.displayName = "Table.Footer";
3696
3939
  Table.Head = TableHead;
@@ -3701,24 +3944,26 @@ Table.Cell = TableCell;
3701
3944
  Table.Footer = TableFooter;
3702
3945
 
3703
3946
  // src/tabs/index.tsx
3704
- var import_react38 = __toESM(require("react"));
3947
+ var import_react41 = __toESM(require("react"));
3705
3948
 
3706
3949
  // src/tabs/hooks/index.tsx
3707
- var import_react37 = __toESM(require("react"));
3708
- var defaultComponentAPI7 = {
3950
+ var import_react40 = __toESM(require("react"));
3951
+ var defaultComponentAPI8 = {
3709
3952
  id: "",
3710
3953
  states: {},
3711
3954
  methods: {}
3712
3955
  };
3713
- var TabsContext = (0, import_react37.createContext)(defaultComponentAPI7);
3714
- var useTabs = () => (0, import_react37.useContext)(TabsContext);
3715
- var TabsProvider = ({ children }) => {
3956
+ var TabsContext = (0, import_react40.createContext)(defaultComponentAPI8);
3957
+ var useTabs = () => (0, import_react40.useContext)(TabsContext);
3958
+ var TabsProvider = ({
3959
+ children
3960
+ }) => {
3716
3961
  const context = useTabsProvider();
3717
- return /* @__PURE__ */ import_react37.default.createElement(TabsContext.Provider, { value: context }, children);
3962
+ return /* @__PURE__ */ import_react40.default.createElement(TabsContext.Provider, { value: context }, children);
3718
3963
  };
3719
3964
  function useTabsProvider() {
3720
- const [value, setValue] = (0, import_react37.useState)(null);
3721
- const tabsId = import_react37.default.useId();
3965
+ const [value, setValue] = (0, import_react40.useState)(null);
3966
+ const tabsId = import_react40.default.useId();
3722
3967
  return {
3723
3968
  id: tabsId,
3724
3969
  states: {
@@ -3732,8 +3977,8 @@ function useTabsProvider() {
3732
3977
  }
3733
3978
 
3734
3979
  // src/tabs/styles/index.ts
3735
- var import_styled_components22 = __toESM(require("styled-components"));
3736
- var TabWrapper = import_styled_components22.default.div`
3980
+ var import_styled_components24 = __toESM(require("styled-components"));
3981
+ var TabWrapper = import_styled_components24.default.div`
3737
3982
  button {
3738
3983
  &[aria-selected="true"] {
3739
3984
  color: var(--font-color) !important;
@@ -3746,22 +3991,22 @@ var Tabs = (props) => {
3746
3991
  const { defaultOpen, children, ...restProps } = props;
3747
3992
  const { methods } = useTabs();
3748
3993
  const { applyValue } = methods;
3749
- const childArray = import_react38.Children.toArray(children);
3994
+ const childArray = import_react41.Children.toArray(children);
3750
3995
  const firstChild = childArray[0];
3751
- import_react38.default.useEffect(() => {
3752
- if (import_react38.default.isValidElement(firstChild)) {
3996
+ import_react41.default.useEffect(() => {
3997
+ if (import_react41.default.isValidElement(firstChild)) {
3753
3998
  if (childArray.length > 0 && applyValue)
3754
3999
  applyValue(firstChild.props.value);
3755
4000
  }
3756
4001
  }, []);
3757
- import_react38.default.useEffect(() => {
4002
+ import_react41.default.useEffect(() => {
3758
4003
  if (defaultOpen && applyValue) applyValue(defaultOpen);
3759
4004
  }, []);
3760
- return /* @__PURE__ */ import_react38.default.createElement(TabWrapper, { role: "tablist", ...restProps }, children);
4005
+ return /* @__PURE__ */ import_react41.default.createElement(TabWrapper, { role: "tablist", ...restProps }, children);
3761
4006
  };
3762
4007
  Tabs.displayName = "Tabs";
3763
4008
  var TabsRoot = ({ children }) => {
3764
- return /* @__PURE__ */ import_react38.default.createElement(TabsProvider, null, children);
4009
+ return /* @__PURE__ */ import_react41.default.createElement(TabsProvider, null, children);
3765
4010
  };
3766
4011
  TabsRoot.displayName = "Tabs.Root";
3767
4012
  var TabsTrigger = (props) => {
@@ -3777,7 +4022,7 @@ var TabsTrigger = (props) => {
3777
4022
  if (applyValue) applyValue(value);
3778
4023
  if (onClick) onClick(event);
3779
4024
  };
3780
- return /* @__PURE__ */ import_react38.default.createElement(
4025
+ return /* @__PURE__ */ import_react41.default.createElement(
3781
4026
  Button,
3782
4027
  {
3783
4028
  type: "button",
@@ -3805,7 +4050,7 @@ var TabsContent = (props) => {
3805
4050
  trigger: getTabsId && getTabsId({ value, type: "trigger" }),
3806
4051
  content: getTabsId && getTabsId({ value, type: "content" })
3807
4052
  };
3808
- return /* @__PURE__ */ import_react38.default.createElement(
4053
+ return /* @__PURE__ */ import_react41.default.createElement(
3809
4054
  "div",
3810
4055
  {
3811
4056
  tabIndex: 0,
@@ -3826,11 +4071,11 @@ Tabs.Trigger = TabsTrigger;
3826
4071
  Tabs.Content = TabsContent;
3827
4072
 
3828
4073
  // src/text-area/index.tsx
3829
- var import_react39 = __toESM(require("react"));
4074
+ var import_react42 = __toESM(require("react"));
3830
4075
 
3831
4076
  // src/text-area/styles/index.ts
3832
- var import_styled_components23 = __toESM(require("styled-components"));
3833
- var CustomScrollbar2 = import_styled_components23.css`
4077
+ var import_styled_components25 = __toESM(require("styled-components"));
4078
+ var CustomScrollbar2 = import_styled_components25.css`
3834
4079
  height: ${({ $height }) => $height ?? "100%"};
3835
4080
  width: ${({ $width }) => $width ?? "100%"};
3836
4081
  overflow-y: auto;
@@ -3862,80 +4107,36 @@ var CustomScrollbar2 = import_styled_components23.css`
3862
4107
  scrollbar-width: thin;
3863
4108
  scrollbar-color: ${({ $thumbColor, $trackColor }) => `${$thumbColor ?? "var(--font-color-alpha-10)"} ${$trackColor ?? "transparent"}`};
3864
4109
  `;
3865
- var TextAreaContainer = import_styled_components23.default.textarea`
3866
- &[data-raw="false"] {
3867
- resize: vertical;
3868
- max-height: var(--measurement-large-60);
3869
- min-height: auto;
3870
- width: 100%;
3871
-
3872
- overflow-y: auto;
3873
-
3874
- outline: none;
3875
- cursor: pointer;
3876
- display: flex;
3877
- align-items: center;
3878
- justify-content: center;
3879
-
3880
- font-size: var(--fontsize-small-80);
3881
- padding: var(--measurement-medium-30) var(--measurement-medium-30)
3882
- var(--measurement-large-10) var(--measurement-medium-30);
3883
-
3884
- font-weight: 500;
3885
- line-height: 1.1;
3886
- letter-spacing: calc(
3887
- var(--fontsize-small-10) - ((var(--fontsize-small-10) * 1.066))
3888
- );
3889
-
3890
- border: var(--measurement-small-10) solid transparent;
3891
- border-radius: var(--measurement-medium-30);
3892
- backdrop-filter: blur(var(--measurement-small-10));
3893
- color: var(--font-color-alpha-60);
3894
-
3895
- transition: all ease-in-out 0.2s;
3896
-
3897
- svg,
3898
- span,
3899
- img {
3900
- opacity: 0.6;
3901
- }
3902
-
3903
- &:hover,
3904
- &:focus,
3905
- &:active {
3906
- color: var(--font-color);
3907
-
3908
- svg,
3909
- span,
3910
- img {
3911
- opacity: 1;
3912
- }
3913
- }
3914
- &::placeholder {
3915
- color: var(--font-color-alpha-30);
3916
- }
3917
- &:disabled {
3918
- cursor: not-allowed;
3919
- opacity: 0.6;
3920
- }
3921
-
3922
- &::placeholder {
3923
- color: var(--font-color-alpha-30);
3924
- }
3925
-
3926
- &:focus-visible {
3927
- outline: none;
3928
- }
4110
+ var TextareaSizeStyles = import_styled_components25.css`
4111
+ padding: var(--measurement-medium-30);
4112
+ max-height: var(--measurement-large-60);
3929
4113
 
3930
- &:disabled {
3931
- cursor: not-allowed;
3932
- }
4114
+ &[data-size="small"] {
4115
+ min-height: var(--measurement-large-30);
4116
+ }
4117
+ &[data-size="medium"] {
4118
+ min-height: var(--measurement-large-50);
4119
+ }
4120
+ &[data-size="large"] {
4121
+ min-height: var(--measurement-large-60);
4122
+ max-height: var(--measurement-large-80);
4123
+ }
4124
+ `;
4125
+ var TextareaResizableStyles = import_styled_components25.css`
4126
+ &[data-resizable="true"] {
4127
+ resize: vertical;
4128
+ }
4129
+ &[data-resizable="false"] {
4130
+ resize: none;
4131
+ }
4132
+ `;
4133
+ var TextAreaContainer = import_styled_components25.default.textarea`
4134
+ &[data-raw="false"] {
4135
+ ${FieldDefaultStyles}
4136
+ ${FieldShapeStyles}
3933
4137
 
3934
- &[data-error="true"] {
3935
- &::placeholder {
3936
- color: var(--alpha-red-30);
3937
- }
3938
- }
4138
+ ${TextareaSizeStyles}
4139
+ ${TextareaResizableStyles}
3939
4140
 
3940
4141
  ${CustomScrollbar2}
3941
4142
  ${FieldVariantsStyles}
@@ -3943,8 +4144,9 @@ var TextAreaContainer = import_styled_components23.default.textarea`
3943
4144
  `;
3944
4145
 
3945
4146
  // src/text-area/index.tsx
3946
- var Textarea = ({ onChange, ...props }) => {
3947
- const textareaRef = import_react39.default.useRef(null);
4147
+ var Textarea = (props) => {
4148
+ const { raw, shape, sizing, variant, resizable, onChange } = props;
4149
+ const textareaRef = import_react42.default.useRef(null);
3948
4150
  const adjustHeight = () => {
3949
4151
  const textarea = textareaRef.current;
3950
4152
  if (textarea) {
@@ -3959,37 +4161,40 @@ var Textarea = ({ onChange, ...props }) => {
3959
4161
  adjustHeight();
3960
4162
  onChange?.(e);
3961
4163
  };
3962
- import_react39.default.useEffect(() => adjustHeight(), [props.value]);
3963
- return /* @__PURE__ */ import_react39.default.createElement(Field.Wrapper, { className: "w-100 h-auto" }, /* @__PURE__ */ import_react39.default.createElement(
4164
+ import_react42.default.useEffect(() => adjustHeight(), [props.value]);
4165
+ return /* @__PURE__ */ import_react42.default.createElement(
3964
4166
  TextAreaContainer,
3965
4167
  {
3966
4168
  ref: textareaRef,
3967
4169
  onChange: handleChange,
3968
- "data-variant": props.variant ?? "secondary",
3969
- "data-raw": String(Boolean(props?.raw)),
4170
+ "data-variant": variant ?? "secondary",
4171
+ "data-shape": shape ?? "smooth",
4172
+ "data-size": sizing ?? "medium" /* Medium */,
4173
+ "data-resizable": resizable,
4174
+ "data-raw": String(Boolean(raw)),
3970
4175
  ...props
3971
4176
  }
3972
- ));
4177
+ );
3973
4178
  };
3974
4179
  Textarea.displayName = "Textarea";
3975
4180
 
3976
4181
  // src/toggle/index.tsx
3977
- var import_react40 = __toESM(require("react"));
4182
+ var import_react43 = __toESM(require("react"));
3978
4183
  var Toggle = (props) => {
3979
4184
  const { defaultChecked, onClick, disabled, children, ...restProps } = props;
3980
- const [checked, setChecked] = import_react40.default.useState(
4185
+ const [checked, setChecked] = import_react43.default.useState(
3981
4186
  defaultChecked ?? false
3982
4187
  );
3983
4188
  const handleClick = (event) => {
3984
4189
  if (onClick) onClick(event);
3985
4190
  if (!disabled) setChecked((prevChecked) => !prevChecked);
3986
4191
  };
3987
- import_react40.default.useEffect(() => {
4192
+ import_react43.default.useEffect(() => {
3988
4193
  if (defaultChecked !== void 0) {
3989
4194
  setChecked(Boolean(defaultChecked));
3990
4195
  }
3991
4196
  }, [defaultChecked]);
3992
- return /* @__PURE__ */ import_react40.default.createElement(
4197
+ return /* @__PURE__ */ import_react43.default.createElement(
3993
4198
  Button,
3994
4199
  {
3995
4200
  role: "switch",
@@ -4007,24 +4212,26 @@ var Toggle = (props) => {
4007
4212
  Toggle.displayName = "Toggle";
4008
4213
 
4009
4214
  // src/toolbar/index.tsx
4010
- var import_react42 = __toESM(require("react"));
4215
+ var import_react45 = __toESM(require("react"));
4011
4216
 
4012
4217
  // src/toolbar/hooks/index.tsx
4013
- var import_react41 = __toESM(require("react"));
4014
- var defaultComponentAPI8 = {
4218
+ var import_react44 = __toESM(require("react"));
4219
+ var defaultComponentAPI9 = {
4015
4220
  id: "",
4016
4221
  states: {},
4017
4222
  methods: {}
4018
4223
  };
4019
- var ToolbarContext = (0, import_react41.createContext)(defaultComponentAPI8);
4020
- var useToolbar = () => (0, import_react41.useContext)(ToolbarContext);
4021
- var ToolbarProvider = ({ children }) => {
4224
+ var ToolbarContext = (0, import_react44.createContext)(defaultComponentAPI9);
4225
+ var useToolbar = () => (0, import_react44.useContext)(ToolbarContext);
4226
+ var ToolbarProvider = ({
4227
+ children
4228
+ }) => {
4022
4229
  const context = useToolbarProvider();
4023
- return /* @__PURE__ */ import_react41.default.createElement(ToolbarContext.Provider, { value: context }, children);
4230
+ return /* @__PURE__ */ import_react44.default.createElement(ToolbarContext.Provider, { value: context }, children);
4024
4231
  };
4025
4232
  function useToolbarProvider() {
4026
- const [expanded, setExpanded] = (0, import_react41.useState)(false);
4027
- const toolbarId = import_react41.default.useId();
4233
+ const [expanded, setExpanded] = (0, import_react44.useState)(false);
4234
+ const toolbarId = import_react44.default.useId();
4028
4235
  return {
4029
4236
  id: toolbarId,
4030
4237
  states: {
@@ -4037,8 +4244,8 @@ function useToolbarProvider() {
4037
4244
  }
4038
4245
 
4039
4246
  // src/toolbar/styles/index.ts
4040
- var import_styled_components24 = __toESM(require("styled-components"));
4041
- var ToolbarDefaultStyles = import_styled_components24.css`
4247
+ var import_styled_components26 = __toESM(require("styled-components"));
4248
+ var ToolbarDefaultStyles = import_styled_components26.css`
4042
4249
  margin: 0;
4043
4250
  display: grid;
4044
4251
  grid-template-rows: min-content;
@@ -4072,7 +4279,7 @@ var ToolbarDefaultStyles = import_styled_components24.css`
4072
4279
  }
4073
4280
  }
4074
4281
  `;
4075
- var ToolbarSizeStyles = import_styled_components24.css`
4282
+ var ToolbarSizeStyles = import_styled_components26.css`
4076
4283
  &[data-size="small"] {
4077
4284
  &[aria-orientation="vertical"] {
4078
4285
  max-width: var(--measurement-large-70);
@@ -4118,7 +4325,7 @@ var ToolbarSizeStyles = import_styled_components24.css`
4118
4325
  }
4119
4326
  }
4120
4327
  `;
4121
- var ToolbarSideStyles = import_styled_components24.css`
4328
+ var ToolbarSideStyles = import_styled_components26.css`
4122
4329
  &[data-side="top"] {
4123
4330
  border-bottom-color: var(--font-color-alpha-10);
4124
4331
  }
@@ -4150,7 +4357,7 @@ var ToolbarSideStyles = import_styled_components24.css`
4150
4357
  }
4151
4358
  }
4152
4359
  `;
4153
- var ToolbarWrapper = import_styled_components24.default.menu`
4360
+ var ToolbarWrapper = import_styled_components26.default.menu`
4154
4361
  &[data-raw="false"] {
4155
4362
  ${ToolbarDefaultStyles}
4156
4363
  ${ToolbarSizeStyles}
@@ -4158,7 +4365,7 @@ var ToolbarWrapper = import_styled_components24.default.menu`
4158
4365
  ${ToolbarSideStyles}
4159
4366
  }
4160
4367
  `;
4161
- var ToolbarTriggerWrapper = import_styled_components24.default.menu`
4368
+ var ToolbarTriggerWrapper = import_styled_components26.default.menu`
4162
4369
  &[data-raw="false"] {
4163
4370
  all: unset;
4164
4371
  align-self: flex-end;
@@ -4183,13 +4390,13 @@ var Toolbar = (props) => {
4183
4390
  const { toggleToolbar } = methods;
4184
4391
  const shortcutControls = useKeyPress(String(hotkey), true, bindkey);
4185
4392
  const orientation = side && ["left", "right"].includes(side) ? "vertical" : "horizontal";
4186
- import_react42.default.useEffect(() => {
4393
+ import_react45.default.useEffect(() => {
4187
4394
  if (defaultOpen && toggleToolbar) return toggleToolbar(true);
4188
4395
  }, [defaultOpen]);
4189
- import_react42.default.useEffect(() => {
4396
+ import_react45.default.useEffect(() => {
4190
4397
  if (shortcut && shortcutControls && toggleToolbar) toggleToolbar();
4191
4398
  }, [shortcutControls]);
4192
- return /* @__PURE__ */ import_react42.default.createElement(
4399
+ return /* @__PURE__ */ import_react45.default.createElement(
4193
4400
  ToolbarWrapper,
4194
4401
  {
4195
4402
  id,
@@ -4209,7 +4416,7 @@ var Toolbar = (props) => {
4209
4416
  };
4210
4417
  Toolbar.displayName = "Toolbar";
4211
4418
  var ToolbarRoot = ({ children }) => {
4212
- return /* @__PURE__ */ import_react42.default.createElement(ToolbarProvider, null, children);
4419
+ return /* @__PURE__ */ import_react45.default.createElement(ToolbarProvider, null, children);
4213
4420
  };
4214
4421
  ToolbarRoot.displayName = "Toolbar.Root";
4215
4422
  var ToolbarTrigger = (props) => {
@@ -4227,7 +4434,7 @@ var ToolbarTrigger = (props) => {
4227
4434
  if (onClick) onClick(event);
4228
4435
  if (toggleToolbar) toggleToolbar(!states.expanded);
4229
4436
  };
4230
- return /* @__PURE__ */ import_react42.default.createElement(ToolbarTriggerWrapper, { "data-raw": Boolean(raw) }, /* @__PURE__ */ import_react42.default.createElement(
4437
+ return /* @__PURE__ */ import_react45.default.createElement(ToolbarTriggerWrapper, { "data-raw": Boolean(raw) }, /* @__PURE__ */ import_react45.default.createElement(
4231
4438
  Button,
4232
4439
  {
4233
4440
  id: `${id}-trigger`,
@@ -4245,13 +4452,13 @@ var ToolbarSection = (props) => {
4245
4452
  const { showoncollapse, children, ...restProps } = props;
4246
4453
  const { states } = useToolbar();
4247
4454
  const { expanded } = states;
4248
- if (showoncollapse) return /* @__PURE__ */ import_react42.default.createElement("section", { ...restProps }, children);
4249
- return /* @__PURE__ */ import_react42.default.createElement("section", { ...restProps }, expanded && children);
4455
+ if (showoncollapse) return /* @__PURE__ */ import_react45.default.createElement("section", { ...restProps }, children);
4456
+ return /* @__PURE__ */ import_react45.default.createElement("section", { ...restProps }, expanded && children);
4250
4457
  };
4251
4458
  ToolbarSection.displayName = "Toolbar.Section";
4252
4459
  var ToolbarItem = (props) => {
4253
4460
  const { showfirstchild, onClick, children, ...restProps } = props;
4254
- const childArray = import_react42.default.Children.toArray(children);
4461
+ const childArray = import_react45.default.Children.toArray(children);
4255
4462
  const { id, states, methods } = useToolbar();
4256
4463
  const { expanded } = states;
4257
4464
  const { toggleToolbar } = methods;
@@ -4260,7 +4467,7 @@ var ToolbarItem = (props) => {
4260
4467
  if (onClick) onClick(event);
4261
4468
  if (toggleToolbar && !expanded) toggleToolbar(true);
4262
4469
  };
4263
- return /* @__PURE__ */ import_react42.default.createElement(
4470
+ return /* @__PURE__ */ import_react45.default.createElement(
4264
4471
  "div",
4265
4472
  {
4266
4473
  tabIndex: -1,
@@ -4281,11 +4488,11 @@ Toolbar.Item = ToolbarItem;
4281
4488
  Toolbar.Section = ToolbarSection;
4282
4489
 
4283
4490
  // src/tooltip/index.tsx
4284
- var import_react43 = __toESM(require("react"));
4491
+ var import_react46 = __toESM(require("react"));
4285
4492
 
4286
4493
  // src/tooltip/styles/index.ts
4287
- var import_styled_components25 = __toESM(require("styled-components"));
4288
- var FadeIn2 = import_styled_components25.keyframes`
4494
+ var import_styled_components27 = __toESM(require("styled-components"));
4495
+ var FadeIn2 = import_styled_components27.keyframes`
4289
4496
  0% {
4290
4497
  opacity: 0;
4291
4498
  }
@@ -4293,11 +4500,11 @@ var FadeIn2 = import_styled_components25.keyframes`
4293
4500
  opacity: 1;
4294
4501
  }
4295
4502
  `;
4296
- var ContentBox = import_styled_components25.default.div`
4503
+ var ContentBox = import_styled_components27.default.div`
4297
4504
  display: inline-block;
4298
4505
  position: relative;
4299
4506
  `;
4300
- var ContentWrapper2 = import_styled_components25.default.span`
4507
+ var ContentWrapper2 = import_styled_components27.default.span`
4301
4508
  &[data-raw="false"] {
4302
4509
  width: fit-content;
4303
4510
  max-width: var(--measurement-large-60);
@@ -4328,19 +4535,20 @@ var Tooltip = ({
4328
4535
  children,
4329
4536
  ...restProps
4330
4537
  }) => {
4331
- const [visible, setVisible] = import_react43.default.useState(false);
4332
- const [triggerProps, setTriggerProps] = import_react43.default.useState(null);
4333
- const [contentProps, setContentProps] = import_react43.default.useState(null);
4334
- const mounted = import_react43.default.useRef(false);
4335
- const containerRef = import_react43.default.useRef(null);
4336
- const contentRef = import_react43.default.useRef(null);
4337
- const timeoutRef = import_react43.default.useRef(null);
4538
+ const [visible, setVisible] = import_react46.default.useState(false);
4539
+ const [triggerProps, setTriggerProps] = import_react46.default.useState(null);
4540
+ const [contentProps, setContentProps] = import_react46.default.useState(null);
4541
+ const mounted = import_react46.default.useRef(false);
4542
+ const containerRef = import_react46.default.useRef(null);
4543
+ const contentRef = import_react46.default.useRef(null);
4544
+ const timeoutRef = import_react46.default.useRef(null);
4338
4545
  const contentRect = () => contentRef?.current?.getBoundingClientRect();
4339
- const bodyRect = import_react43.default.useCallback(() => {
4546
+ const bodyRect = () => {
4340
4547
  if (typeof document !== "undefined") {
4341
- return document.body.getBoundingClientRect();
4548
+ return document?.body?.getBoundingClientRect();
4342
4549
  }
4343
- }, []);
4550
+ return void 0;
4551
+ };
4344
4552
  const positions = {
4345
4553
  btt: `calc((${triggerProps?.top}px - ${contentProps?.height}px) - (var(--measurement-medium-10)))`,
4346
4554
  ttb: `calc((${triggerProps?.top}px + ${triggerProps?.height}px) + var(--measurement-medium-10))`,
@@ -4357,14 +4565,14 @@ var Tooltip = ({
4357
4565
  };
4358
4566
  const hasEnoughHorizontalSpace = Number(dimensions.body_width) - Number(dimensions.content_left) > Number(dimensions.content_width) * 1.1;
4359
4567
  const hasEnoughVerticalSpace = Number(dimensions.body_height) - Number(dimensions.content_bottom) > Number(dimensions.content_height) * 0.9;
4360
- const showTooltip = import_react43.default.useCallback(() => {
4568
+ const showTooltip = import_react46.default.useCallback(() => {
4361
4569
  timeoutRef.current = setTimeout(() => setVisible(true), delay);
4362
4570
  }, [delay]);
4363
- const hideTooltip = import_react43.default.useCallback(() => {
4571
+ const hideTooltip = import_react46.default.useCallback(() => {
4364
4572
  if (timeoutRef.current) clearTimeout(timeoutRef.current);
4365
4573
  setVisible(false);
4366
4574
  }, []);
4367
- const handleMouseEnter = import_react43.default.useCallback(() => {
4575
+ const handleMouseEnter = import_react46.default.useCallback(() => {
4368
4576
  const rect = containerRef.current?.getBoundingClientRect();
4369
4577
  if (rect) {
4370
4578
  setTriggerProps({
@@ -4378,11 +4586,11 @@ var Tooltip = ({
4378
4586
  showTooltip();
4379
4587
  }
4380
4588
  }, [showTooltip]);
4381
- const handleMouseLeave = import_react43.default.useCallback(
4589
+ const handleMouseLeave = import_react46.default.useCallback(
4382
4590
  () => hideTooltip(),
4383
4591
  [hideTooltip]
4384
4592
  );
4385
- import_react43.default.useEffect(() => {
4593
+ import_react46.default.useEffect(() => {
4386
4594
  mounted.current = true;
4387
4595
  setContentProps && setContentProps({
4388
4596
  top: Number(contentRect()?.top),
@@ -4396,7 +4604,7 @@ var Tooltip = ({
4396
4604
  mounted.current = false;
4397
4605
  };
4398
4606
  }, [visible]);
4399
- return /* @__PURE__ */ import_react43.default.createElement(
4607
+ return /* @__PURE__ */ import_react46.default.createElement(
4400
4608
  ContentBox,
4401
4609
  {
4402
4610
  ref: containerRef,
@@ -4406,7 +4614,7 @@ var Tooltip = ({
4406
4614
  ...restProps
4407
4615
  },
4408
4616
  children,
4409
- visible && /* @__PURE__ */ import_react43.default.createElement(
4617
+ visible && /* @__PURE__ */ import_react46.default.createElement(
4410
4618
  ContentWrapper2,
4411
4619
  {
4412
4620
  ref: contentRef,
@@ -4421,11 +4629,223 @@ var Tooltip = ({
4421
4629
  "data-side": hasEnoughHorizontalSpace ? "left" /* Left */ : "right" /* Right */,
4422
4630
  "data-align": hasEnoughHorizontalSpace ? "left" /* Left */ : "right" /* Right */
4423
4631
  },
4424
- /* @__PURE__ */ import_react43.default.createElement("div", null, content)
4632
+ /* @__PURE__ */ import_react46.default.createElement("div", null, content)
4425
4633
  )
4426
4634
  );
4427
4635
  };
4428
4636
  Tooltip.displayName = "Tooltip";
4637
+
4638
+ // src/tree/index.tsx
4639
+ var import_react49 = __toESM(require("react"));
4640
+
4641
+ // src/tree/hooks/tree-provider.tsx
4642
+ var import_react47 = __toESM(require("react"));
4643
+ var defaultTreeAPI = {
4644
+ id: "",
4645
+ states: {},
4646
+ methods: {}
4647
+ };
4648
+ var TreeContext = (0, import_react47.createContext)(defaultTreeAPI);
4649
+ var useTree = () => (0, import_react47.useContext)(TreeContext);
4650
+ var TreeProvider = ({
4651
+ children,
4652
+ defaultExpandedIds = [],
4653
+ onSelectionChange
4654
+ }) => {
4655
+ const context = useTreeProviderContext({
4656
+ defaultExpandedIds,
4657
+ onSelectionChange
4658
+ });
4659
+ return /* @__PURE__ */ import_react47.default.createElement(TreeContext.Provider, { value: context }, children);
4660
+ };
4661
+ function useTreeProviderContext({
4662
+ defaultExpandedIds,
4663
+ onSelectionChange
4664
+ }) {
4665
+ const treeId = import_react47.default.useId();
4666
+ const [expandedIds, setExpandedIds] = (0, import_react47.useState)(
4667
+ () => new Set(defaultExpandedIds)
4668
+ );
4669
+ const [selectedIds, setSelectedIds] = (0, import_react47.useState)(() => /* @__PURE__ */ new Set());
4670
+ return {
4671
+ id: treeId,
4672
+ states: {
4673
+ expandedIds,
4674
+ selectedIds
4675
+ },
4676
+ methods: {
4677
+ isExpanded: (id) => expandedIds.has(id),
4678
+ isSelected: (id) => selectedIds.has(id),
4679
+ toggleExpanded: (id) => {
4680
+ setExpandedIds((prev) => {
4681
+ const next = new Set(prev);
4682
+ next.has(id) ? next.delete(id) : next.add(id);
4683
+ return next;
4684
+ });
4685
+ },
4686
+ toggleSelected: (id) => {
4687
+ setSelectedIds((prev) => {
4688
+ const next = new Set(prev);
4689
+ next.has(id) ? next.delete(id) : next.add(id);
4690
+ onSelectionChange?.(Array.from(next));
4691
+ return next;
4692
+ });
4693
+ },
4694
+ getTreeId: ({ nodeId, type }) => `${treeId}-${type}-${nodeId}`
4695
+ }
4696
+ };
4697
+ }
4698
+
4699
+ // src/tree/hooks/tree-node-provider.tsx
4700
+ var import_react48 = __toESM(require("react"));
4701
+ var defaultTreeNodeAPI = {
4702
+ id: "",
4703
+ states: {},
4704
+ methods: {}
4705
+ };
4706
+ var TreeNodeContext = (0, import_react48.createContext)(defaultTreeNodeAPI);
4707
+ var useTreeNode = () => (0, import_react48.useContext)(TreeNodeContext);
4708
+ var TreeNodeProvider = ({
4709
+ children,
4710
+ nodeId,
4711
+ level,
4712
+ isLast
4713
+ }) => {
4714
+ const context = useTreeNodeProviderContext({ nodeId, level, isLast });
4715
+ return /* @__PURE__ */ import_react48.default.createElement(TreeNodeContext.Provider, { value: context }, children);
4716
+ };
4717
+ function useTreeNodeProviderContext({
4718
+ nodeId,
4719
+ level,
4720
+ isLast
4721
+ }) {
4722
+ return {
4723
+ id: nodeId,
4724
+ states: {
4725
+ nodeId,
4726
+ level,
4727
+ isLast
4728
+ },
4729
+ methods: {}
4730
+ };
4731
+ }
4732
+
4733
+ // src/tree/styles/index.ts
4734
+ var import_styled_components28 = __toESM(require("styled-components"));
4735
+ var TreeView = import_styled_components28.default.ul`
4736
+ display: flex;
4737
+ flex-direction: column;
4738
+ list-style: none;
4739
+ margin: 0;
4740
+ padding: 0;
4741
+ `;
4742
+ var TreeItem = import_styled_components28.default.li`
4743
+ display: flex;
4744
+ flex-direction: column;
4745
+ list-style: none;
4746
+ `;
4747
+ var TreeNodeContent = import_styled_components28.default.ul`
4748
+ display: flex;
4749
+ flex-direction: column;
4750
+ list-style: none;
4751
+ margin: 0;
4752
+ padding: 0;
4753
+ `;
4754
+
4755
+ // src/tree/index.tsx
4756
+ var Tree = (props) => {
4757
+ const { children, ...restProps } = props;
4758
+ const { id } = useTree();
4759
+ return /* @__PURE__ */ import_react49.default.createElement(TreeView, { id, role: "tree", ...restProps }, children);
4760
+ };
4761
+ Tree.displayName = "Tree";
4762
+ var TreeRoot = ({
4763
+ children,
4764
+ defaultExpandedIds,
4765
+ onSelectionChange
4766
+ }) => {
4767
+ return /* @__PURE__ */ import_react49.default.createElement(
4768
+ TreeProvider,
4769
+ {
4770
+ defaultExpandedIds,
4771
+ onSelectionChange
4772
+ },
4773
+ children
4774
+ );
4775
+ };
4776
+ TreeRoot.displayName = "Tree.Root";
4777
+ var TreeNode = (props) => {
4778
+ const { nodeId, level = 0, isLast = false, children, ...restProps } = props;
4779
+ return /* @__PURE__ */ import_react49.default.createElement(TreeNodeProvider, { nodeId, level, isLast }, /* @__PURE__ */ import_react49.default.createElement(TreeItem, { role: "treeitem", "aria-level": level + 1, ...restProps }, children));
4780
+ };
4781
+ TreeNode.displayName = "Tree.Node";
4782
+ var TreeTrigger = (props) => {
4783
+ const { nodeId, disabled, onClick, children, ...restProps } = props;
4784
+ const { methods } = useTree();
4785
+ const { getTreeId, toggleExpanded, toggleSelected } = methods;
4786
+ const isExpanded = methods.isExpanded && methods.isExpanded(nodeId);
4787
+ const isSelected = methods.isSelected && methods.isSelected(nodeId);
4788
+ const IdHandler = {
4789
+ trigger: getTreeId && getTreeId({ nodeId, type: "trigger" }),
4790
+ content: getTreeId && getTreeId({ nodeId, type: "content" })
4791
+ };
4792
+ const { states: nodeStates } = useTreeNode();
4793
+ const level = nodeStates.level ?? 0;
4794
+ const handleClick = (event) => {
4795
+ if (!disabled) {
4796
+ onClick && onClick(event);
4797
+ toggleExpanded && toggleExpanded(nodeId);
4798
+ toggleSelected && toggleSelected(nodeId);
4799
+ }
4800
+ };
4801
+ return /* @__PURE__ */ import_react49.default.createElement(
4802
+ Button,
4803
+ {
4804
+ id: String(IdHandler.trigger),
4805
+ disabled: disabled ?? false,
4806
+ onClick: handleClick,
4807
+ "data-state": isExpanded ? "expanded" : "collapsed",
4808
+ "data-selected": isSelected || void 0,
4809
+ variant: props.variant ?? "ghost" /* Ghost */,
4810
+ style: { paddingLeft: `calc(${level} * 1rem + 0.5rem)` },
4811
+ rawicon: true,
4812
+ ...restProps
4813
+ },
4814
+ children
4815
+ );
4816
+ };
4817
+ TreeTrigger.displayName = "Tree.Trigger";
4818
+ var TreeContent = (props) => {
4819
+ const { nodeId, defaultOpen = false, children, ...restProps } = props;
4820
+ const { methods } = useTree();
4821
+ const { getTreeId, toggleExpanded } = methods;
4822
+ const isExpanded = methods.isExpanded && methods.isExpanded(nodeId);
4823
+ const IdHandler = {
4824
+ trigger: getTreeId && getTreeId({ nodeId, type: "trigger" }),
4825
+ content: getTreeId && getTreeId({ nodeId, type: "content" })
4826
+ };
4827
+ import_react49.default.useEffect(() => {
4828
+ if (defaultOpen && !isExpanded && toggleExpanded) toggleExpanded(nodeId);
4829
+ }, []);
4830
+ if (isExpanded)
4831
+ return /* @__PURE__ */ import_react49.default.createElement(
4832
+ TreeNodeContent,
4833
+ {
4834
+ role: "group",
4835
+ id: String(IdHandler.content),
4836
+ "aria-labelledby": String(IdHandler.trigger),
4837
+ "data-nodeId": nodeId,
4838
+ ...restProps
4839
+ },
4840
+ children
4841
+ );
4842
+ return /* @__PURE__ */ import_react49.default.createElement(import_react49.default.Fragment, null);
4843
+ };
4844
+ TreeContent.displayName = "Tree.Content";
4845
+ Tree.Root = TreeRoot;
4846
+ Tree.Node = TreeNode;
4847
+ Tree.Trigger = TreeTrigger;
4848
+ Tree.Content = TreeContent;
4429
4849
  // Annotate the CommonJS export names for ESM import in node:
4430
4850
  0 && (module.exports = {
4431
4851
  Accordion,
@@ -4468,6 +4888,10 @@ Tooltip.displayName = "Tooltip";
4468
4888
  FieldMeta,
4469
4889
  FieldRoot,
4470
4890
  FieldWrapper,
4891
+ MessageBubble,
4892
+ MessageBubbleContent,
4893
+ MessageBubbleMeta,
4894
+ MessageBubbleRoot,
4471
4895
  MetaVariantEnum,
4472
4896
  OTPField,
4473
4897
  OTPFieldSlot,
@@ -4486,6 +4910,7 @@ Tooltip.displayName = "Tooltip";
4486
4910
  Sheet,
4487
4911
  SheetRoot,
4488
4912
  SheetTrigger,
4913
+ Shimmer,
4489
4914
  Skeleton,
4490
4915
  Spinner,
4491
4916
  Switch,
@@ -4510,14 +4935,22 @@ Tooltip.displayName = "Tooltip";
4510
4935
  ToolbarSection,
4511
4936
  ToolbarTrigger,
4512
4937
  Tooltip,
4938
+ Tree,
4939
+ TreeContent,
4940
+ TreeNode,
4941
+ TreeRoot,
4942
+ TreeTrigger,
4513
4943
  useAccordion,
4514
4944
  useCheckbox,
4515
4945
  useCollapsible,
4516
4946
  useDialog,
4517
4947
  useDropdownMenu,
4518
4948
  useField,
4949
+ useMessageBubble,
4519
4950
  useSheet,
4520
4951
  useSwitch,
4521
4952
  useTabs,
4522
- useToolbar
4953
+ useToolbar,
4954
+ useTree,
4955
+ useTreeNode
4523
4956
  });