@sikka/hawa 0.47.0-next → 0.48.0-next

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.
@@ -2415,12 +2415,306 @@ var StopPropagationWrapper = (props) => {
2415
2415
  return /* @__PURE__ */ React6.createElement("div", { onClick: handleClick }, props.children);
2416
2416
  };
2417
2417
 
2418
- // elements/pinInput/PinInput.tsx
2418
+ // elements/scrollArea/ScrollArea.tsx
2419
2419
  import * as React7 from "react";
2420
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2421
+ var ScrollArea = React7.forwardRef(({ className, children, orientation = "vertical", ...props }, ref) => {
2422
+ const scrollAreaRef = React7.useRef(null);
2423
+ const isDragging = React7.useRef(false);
2424
+ const startPos = React7.useRef({ x: 0, y: 0 });
2425
+ const scrollPos = React7.useRef({ top: 0, left: 0 });
2426
+ const [showLeftFade, setShowLeftFade] = React7.useState(false);
2427
+ const [showRightFade, setShowRightFade] = React7.useState(false);
2428
+ const checkOverflow = () => {
2429
+ if (scrollAreaRef.current) {
2430
+ const { scrollLeft, scrollWidth, clientWidth } = scrollAreaRef.current;
2431
+ setShowLeftFade(scrollLeft > 0);
2432
+ setShowRightFade(scrollLeft + clientWidth < scrollWidth);
2433
+ }
2434
+ };
2435
+ const onMouseDown = (e) => {
2436
+ isDragging.current = true;
2437
+ startPos.current = { x: e.clientX, y: e.clientY };
2438
+ if (scrollAreaRef.current) {
2439
+ scrollPos.current = {
2440
+ top: scrollAreaRef.current.scrollTop,
2441
+ left: scrollAreaRef.current.scrollLeft
2442
+ };
2443
+ }
2444
+ document.addEventListener("mousemove", onMouseMove);
2445
+ document.addEventListener("mouseup", onMouseUp);
2446
+ };
2447
+ const onMouseMove = (e) => {
2448
+ if (!isDragging.current || !scrollAreaRef.current) return;
2449
+ const dx = e.clientX - startPos.current.x;
2450
+ const dy = e.clientY - startPos.current.y;
2451
+ if (orientation === "vertical") {
2452
+ scrollAreaRef.current.scrollTop = scrollPos.current.top - dy;
2453
+ } else {
2454
+ scrollAreaRef.current.scrollLeft = scrollPos.current.left - dx;
2455
+ checkOverflow();
2456
+ }
2457
+ };
2458
+ const onMouseUp = () => {
2459
+ isDragging.current = false;
2460
+ document.removeEventListener("mousemove", onMouseMove);
2461
+ document.removeEventListener("mouseup", onMouseUp);
2462
+ };
2463
+ React7.useEffect(() => {
2464
+ checkOverflow();
2465
+ if (scrollAreaRef.current) {
2466
+ scrollAreaRef.current.addEventListener("scroll", checkOverflow);
2467
+ window.addEventListener("resize", checkOverflow);
2468
+ }
2469
+ return () => {
2470
+ if (scrollAreaRef.current) {
2471
+ scrollAreaRef.current.removeEventListener("scroll", checkOverflow);
2472
+ }
2473
+ window.removeEventListener("resize", checkOverflow);
2474
+ };
2475
+ }, []);
2476
+ return /* @__PURE__ */ React7.createElement(
2477
+ ScrollAreaPrimitive.Root,
2478
+ {
2479
+ ref,
2480
+ className: cn("hawa-relative hawa-overflow-hidden", className),
2481
+ ...props
2482
+ },
2483
+ /* @__PURE__ */ React7.createElement(
2484
+ "div",
2485
+ {
2486
+ className: cn(
2487
+ "hawa-pointer-events-none hawa-absolute hawa-bg-background hawa-h-full hawa-w-[50px] hawa-z-10 hawa-start-0 hawa-mask-fade-right",
2488
+ showLeftFade ? "hawa-block" : "hawa-hidden"
2489
+ )
2490
+ }
2491
+ ),
2492
+ /* @__PURE__ */ React7.createElement(
2493
+ "div",
2494
+ {
2495
+ className: cn(
2496
+ "hawa-pointer-events-none hawa-absolute hawa-bg-background hawa-mask-fade-left hawa-end-0 hawa-h-full hawa-w-[50px] hawa-z-10",
2497
+ showRightFade ? "hawa-block" : "hawa-hidden"
2498
+ )
2499
+ }
2500
+ ),
2501
+ /* @__PURE__ */ React7.createElement(
2502
+ ScrollAreaPrimitive.Viewport,
2503
+ {
2504
+ ref: scrollAreaRef,
2505
+ className: "hawa-h-full hawa-w-full hawa-rounded-[inherit]",
2506
+ onMouseDown
2507
+ },
2508
+ children
2509
+ ),
2510
+ /* @__PURE__ */ React7.createElement(ScrollBar, { orientation }),
2511
+ /* @__PURE__ */ React7.createElement(ScrollAreaPrimitive.Corner, null)
2512
+ );
2513
+ });
2514
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
2515
+ var ScrollBar = React7.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React7.createElement(
2516
+ ScrollAreaPrimitive.ScrollAreaScrollbar,
2517
+ {
2518
+ ref,
2519
+ orientation,
2520
+ className: cn(
2521
+ "hawa-flex hawa-touch-none hawa-select-none hawa-transition-colors",
2522
+ orientation === "vertical" && "hawa-h-full hawa-w-2.5 hawa-border-l hawa-border-l-transparent hawa-p-[1px]",
2523
+ orientation === "horizontal" && "hawa-h-2.5 hawa-border-t hawa-border-t-transparent hawa-p-[1px]",
2524
+ className
2525
+ ),
2526
+ ...props
2527
+ },
2528
+ /* @__PURE__ */ React7.createElement(
2529
+ ScrollAreaPrimitive.ScrollAreaThumb,
2530
+ {
2531
+ className: cn(
2532
+ "hawa-relative hawa-rounded-full hawa-bg-border",
2533
+ orientation === "vertical" && "hawa-flex-1"
2534
+ )
2535
+ }
2536
+ )
2537
+ ));
2538
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
2539
+
2540
+ // elements/tabs/Tabs.tsx
2541
+ import * as React8 from "react";
2542
+ import * as Popover from "@radix-ui/react-popover";
2543
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
2544
+ import { tv } from "tailwind-variants";
2545
+ var tabsListVariant = tv({
2546
+ base: "",
2547
+ variants: {
2548
+ variant: {
2549
+ default: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-border hawa-bg-muted hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
2550
+ underlined: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
2551
+ underlined_tabs: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-text-muted-foreground"
2552
+ },
2553
+ orientation: { horizontal: "", vertical: "" }
2554
+ },
2555
+ compoundVariants: [
2556
+ {
2557
+ variant: "underlined_tabs",
2558
+ orientation: "vertical",
2559
+ class: "hawa-border-e-2 hawa-border-e-primary"
2560
+ },
2561
+ {
2562
+ variant: "underlined_tabs",
2563
+ orientation: "horizontal",
2564
+ class: "hawa-border-b-2 hawa-border-b-primary"
2565
+ }
2566
+ ],
2567
+ defaultVariants: { variant: "default", orientation: "horizontal" }
2568
+ });
2569
+ var tabsTriggerVariant = tv({
2570
+ base: "",
2571
+ variants: {
2572
+ variant: {
2573
+ default: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-border hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50 data-[state=active]:hawa-bg-primary data-[state=active]:hawa-text-primary-foreground data-[state=active]:hawa-shadow-sm dark:hawa-border-primary/10",
2574
+ underlined: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-rounded-none hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50",
2575
+ underlined_tabs: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50 hawa-bg-primary/10 data-[state=active]:hawa-bg-primary data-[state=active]:hawa-text-primary-foreground dark:hawa-border-primary/10"
2576
+ },
2577
+ orientation: { horizontal: "", vertical: "" }
2578
+ },
2579
+ compoundVariants: [
2580
+ {
2581
+ variant: "underlined",
2582
+ orientation: "horizontal",
2583
+ class: "data-[state=active]:hawa-border-b-primary hawa-border-b hawa-border-b-2"
2584
+ },
2585
+ {
2586
+ variant: "underlined",
2587
+ orientation: "vertical",
2588
+ class: "data-[state=active]:hawa-border-e-primary hawa-border-e hawa-border-e-2"
2589
+ },
2590
+ {
2591
+ variant: "underlined_tabs",
2592
+ orientation: "horizontal",
2593
+ class: "hawa-rounded-b-none"
2594
+ },
2595
+ {
2596
+ variant: "underlined_tabs",
2597
+ orientation: "vertical",
2598
+ class: "hawa-rounded-e-none"
2599
+ }
2600
+ ],
2601
+ defaultVariants: { variant: "default", orientation: "horizontal" }
2602
+ });
2603
+ var TabsContext = React8.createContext({ orientation: "horizontal", variant: "default", scrollable: false });
2604
+ var Tabs = React8.forwardRef(
2605
+ ({ className, orientation, scrollable, variant = "default", ...props }, ref) => /* @__PURE__ */ React8.createElement(
2606
+ TabsPrimitive.Root,
2607
+ {
2608
+ ref,
2609
+ className: cn(
2610
+ "hawa-flex hawa-gap-2",
2611
+ orientation === "vertical" ? "hawa-flex-row" : "hawa-flex-col",
2612
+ className
2613
+ ),
2614
+ ...props
2615
+ },
2616
+ /* @__PURE__ */ React8.createElement(TabsContext.Provider, { value: { orientation, variant, scrollable } }, props.children)
2617
+ )
2618
+ );
2619
+ var TabsList = React8.forwardRef(({ className, classNames, ...props }, ref) => {
2620
+ const { orientation, variant, scrollable } = React8.useContext(TabsContext);
2621
+ const { width } = useViewportSize();
2622
+ if (scrollable && width < 768 && orientation === "horizontal") {
2623
+ return /* @__PURE__ */ React8.createElement(ScrollArea, { orientation: "horizontal", className: classNames == null ? void 0 : classNames.scrollArea }, /* @__PURE__ */ React8.createElement(
2624
+ TabsPrimitive.List,
2625
+ {
2626
+ ref,
2627
+ className: cn(
2628
+ tabsListVariant({ variant, orientation }),
2629
+ "hawa-flex-row hawa-flex-nowrap",
2630
+ className
2631
+ ),
2632
+ ...props
2633
+ }
2634
+ ));
2635
+ } else {
2636
+ return /* @__PURE__ */ React8.createElement(
2637
+ TabsPrimitive.List,
2638
+ {
2639
+ ref,
2640
+ className: cn(
2641
+ tabsListVariant({ variant, orientation }),
2642
+ orientation === "vertical" ? "hawa-flex-col" : "hawa-flex-row",
2643
+ "hawa-flex-wrap",
2644
+ className
2645
+ ),
2646
+ ...props
2647
+ }
2648
+ );
2649
+ }
2650
+ });
2651
+ var TabsTrigger = React8.forwardRef(
2652
+ ({ className, chipProps, withPopover = false, onPopoverClick, ...props }, ref) => {
2653
+ const { orientation, variant } = React8.useContext(TabsContext);
2654
+ if (withPopover) {
2655
+ return /* @__PURE__ */ React8.createElement(Popover.Root, { open: props.showPopover }, /* @__PURE__ */ React8.createElement(Popover.Anchor, { asChild: true }, /* @__PURE__ */ React8.createElement(
2656
+ TabsPrimitive.Trigger,
2657
+ {
2658
+ className: cn(
2659
+ tabsTriggerVariant({ variant, orientation }),
2660
+ "hawa-relative",
2661
+ className
2662
+ ),
2663
+ ...props
2664
+ },
2665
+ props.children,
2666
+ chipProps && /* @__PURE__ */ React8.createElement(Chip, { ...chipProps })
2667
+ )), /* @__PURE__ */ React8.createElement(
2668
+ Popover.Content,
2669
+ {
2670
+ onClick: onPopoverClick,
2671
+ asChild: true,
2672
+ className: cn(
2673
+ "dark:dark-shadow hawa-z-50 hawa-rounded hawa-border hawa-bg-popover hawa-text-popover-foreground hawa-shadow-md hawa-outline-none data-[state=open]:hawa-animate-in data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=open]:hawa-fade-in-0 data-[state=closed]:hawa-zoom-out-95 data-[state=open]:hawa-zoom-in-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2",
2674
+ "hawa-arrow-default-top hawa-mt-2"
2675
+ )
2676
+ },
2677
+ /* @__PURE__ */ React8.createElement("div", { className: "hawa-p-2" }, " ", props.popoverContent)
2678
+ ));
2679
+ } else {
2680
+ return /* @__PURE__ */ React8.createElement(
2681
+ TabsPrimitive.Trigger,
2682
+ {
2683
+ className: cn(
2684
+ tabsTriggerVariant({ variant, orientation }),
2685
+ "hawa-relative",
2686
+ className
2687
+ ),
2688
+ ...props
2689
+ },
2690
+ props.children,
2691
+ chipProps && /* @__PURE__ */ React8.createElement(Chip, { ...chipProps })
2692
+ );
2693
+ }
2694
+ }
2695
+ );
2696
+ var TabsContent = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React8.createElement(
2697
+ TabsPrimitive.Content,
2698
+ {
2699
+ ref,
2700
+ className: cn(
2701
+ "hawa-ring-offset-hawa-background hawa-w-full focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2",
2702
+ className
2703
+ ),
2704
+ ...props
2705
+ }
2706
+ ));
2707
+ Tabs.displayName = TabsPrimitive.Root.displayName;
2708
+ TabsList.displayName = TabsPrimitive.List.displayName;
2709
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
2710
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
2711
+
2712
+ // elements/pinInput/PinInput.tsx
2713
+ import * as React9 from "react";
2420
2714
  import { OTPInput, OTPInputContext } from "input-otp";
2421
2715
 
2422
2716
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js
2423
- import { forwardRef as forwardRef4, createElement as createElement3 } from "react";
2717
+ import { forwardRef as forwardRef6, createElement as createElement5 } from "react";
2424
2718
 
2425
2719
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/shared/src/utils.js
2426
2720
  var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
@@ -2429,7 +2723,7 @@ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
2429
2723
  }).join(" ");
2430
2724
 
2431
2725
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js
2432
- import { forwardRef as forwardRef3, createElement as createElement2 } from "react";
2726
+ import { forwardRef as forwardRef5, createElement as createElement4 } from "react";
2433
2727
 
2434
2728
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/defaultAttributes.js
2435
2729
  var defaultAttributes = {
@@ -2445,7 +2739,7 @@ var defaultAttributes = {
2445
2739
  };
2446
2740
 
2447
2741
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/Icon.js
2448
- var Icon = forwardRef3(
2742
+ var Icon = forwardRef5(
2449
2743
  ({
2450
2744
  color = "currentColor",
2451
2745
  size = 24,
@@ -2456,7 +2750,7 @@ var Icon = forwardRef3(
2456
2750
  iconNode,
2457
2751
  ...rest
2458
2752
  }, ref) => {
2459
- return createElement2(
2753
+ return createElement4(
2460
2754
  "svg",
2461
2755
  {
2462
2756
  ref,
@@ -2469,7 +2763,7 @@ var Icon = forwardRef3(
2469
2763
  ...rest
2470
2764
  },
2471
2765
  [
2472
- ...iconNode.map(([tag, attrs]) => createElement2(tag, attrs)),
2766
+ ...iconNode.map(([tag, attrs]) => createElement4(tag, attrs)),
2473
2767
  ...Array.isArray(children) ? children : [children]
2474
2768
  ]
2475
2769
  );
@@ -2478,8 +2772,8 @@ var Icon = forwardRef3(
2478
2772
 
2479
2773
  // ../../node_modules/.pnpm/lucide-react@0.427.0_react@18.3.1/node_modules/lucide-react/dist/esm/createLucideIcon.js
2480
2774
  var createLucideIcon = (iconName, iconNode) => {
2481
- const Component = forwardRef4(
2482
- ({ className, ...props }, ref) => createElement3(Icon, {
2775
+ const Component = forwardRef6(
2776
+ ({ className, ...props }, ref) => createElement5(Icon, {
2483
2777
  ref,
2484
2778
  iconNode,
2485
2779
  className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),
@@ -2496,7 +2790,7 @@ var Dot = createLucideIcon("Dot", [
2496
2790
  ]);
2497
2791
 
2498
2792
  // elements/pinInput/PinInput.tsx
2499
- var PinInputRoot = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ React7.createElement(
2793
+ var PinInputRoot = React9.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ React9.createElement(
2500
2794
  OTPInput,
2501
2795
  {
2502
2796
  ref,
@@ -2509,12 +2803,12 @@ var PinInputRoot = React7.forwardRef(({ className, containerClassName, ...props
2509
2803
  }
2510
2804
  ));
2511
2805
  PinInputRoot.displayName = "PinInputRoot";
2512
- var PinInputGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement("div", { ref, className: cn("hawa-flex hawa-items-center", className), ...props }));
2806
+ var PinInputGroup = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React9.createElement("div", { ref, className: cn("hawa-flex hawa-items-center", className), ...props }));
2513
2807
  PinInputGroup.displayName = "PinInputGroup";
2514
- var PinInputSlot = React7.forwardRef(({ index, className, ...props }, ref) => {
2515
- const pinInputContext = React7.useContext(OTPInputContext);
2808
+ var PinInputSlot = React9.forwardRef(({ index, className, ...props }, ref) => {
2809
+ const pinInputContext = React9.useContext(OTPInputContext);
2516
2810
  const { char, hasFakeCaret, isActive } = pinInputContext.slots[index];
2517
- return /* @__PURE__ */ React7.createElement(
2811
+ return /* @__PURE__ */ React9.createElement(
2518
2812
  "div",
2519
2813
  {
2520
2814
  ref,
@@ -2526,32 +2820,32 @@ var PinInputSlot = React7.forwardRef(({ index, className, ...props }, ref) => {
2526
2820
  ...props
2527
2821
  },
2528
2822
  char,
2529
- hasFakeCaret && /* @__PURE__ */ React7.createElement("div", { className: "hawa-pointer-events-none hawa-absolute hawa-inset-0 hawa-flex hawa-items-center hawa-justify-center" }, /* @__PURE__ */ React7.createElement("div", { className: "hawa-animate-caret-blink hawa-bg-foreground hawa-h-4 hawa-w-px hawa-duration-1000" }))
2823
+ hasFakeCaret && /* @__PURE__ */ React9.createElement("div", { className: "hawa-pointer-events-none hawa-absolute hawa-inset-0 hawa-flex hawa-items-center hawa-justify-center" }, /* @__PURE__ */ React9.createElement("div", { className: "hawa-animate-caret-blink hawa-bg-foreground hawa-h-4 hawa-w-px hawa-duration-1000" }))
2530
2824
  );
2531
2825
  });
2532
2826
  PinInputSlot.displayName = "PinInputSlot";
2533
- var PinInputSeperator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React7.createElement("div", { ref, role: "separator", ...props }, /* @__PURE__ */ React7.createElement(Dot, null)));
2827
+ var PinInputSeperator = React9.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React9.createElement("div", { ref, role: "separator", ...props }, /* @__PURE__ */ React9.createElement(Dot, null)));
2534
2828
  PinInputSeperator.displayName = "PinInputSeperator";
2535
2829
  var PinInput = ({ separatorPosition = 0, ...props }) => {
2536
2830
  const maxLength = props.maxLength || 6;
2537
2831
  const clampedSeparatorPosition = Math.min(separatorPosition, maxLength);
2538
2832
  const firstGroupLength = clampedSeparatorPosition > 0 ? clampedSeparatorPosition : 0;
2539
2833
  const secondGroupLength = maxLength - firstGroupLength;
2540
- return /* @__PURE__ */ React7.createElement("div", { className: "hawa-flex hawa-flex-col hawa-gap-2", dir: "ltr" }, /* @__PURE__ */ React7.createElement(PinInputRoot, { ...props }, firstGroupLength > 0 && /* @__PURE__ */ React7.createElement(PinInputGroup, { className: "hawa-w-full hawa-gap-2" }, [...Array(firstGroupLength)].map((_, index) => /* @__PURE__ */ React7.createElement(PinInputSlot, { key: index, index, className: "hawa-w-full hawa-border" }))), separatorPosition > 0 && separatorPosition < props.maxLength && /* @__PURE__ */ React7.createElement(PinInputSeperator, null), secondGroupLength > 0 && /* @__PURE__ */ React7.createElement(PinInputGroup, { className: "hawa-w-full hawa-gap-2" }, [...Array(secondGroupLength)].map((_, index) => /* @__PURE__ */ React7.createElement(
2834
+ return /* @__PURE__ */ React9.createElement("div", { className: "hawa-flex hawa-flex-col hawa-gap-2", dir: "ltr" }, /* @__PURE__ */ React9.createElement(PinInputRoot, { ...props }, firstGroupLength > 0 && /* @__PURE__ */ React9.createElement(PinInputGroup, { className: "hawa-w-full hawa-gap-2" }, [...Array(firstGroupLength)].map((_, index) => /* @__PURE__ */ React9.createElement(PinInputSlot, { key: index, index, className: "hawa-w-full hawa-border" }))), separatorPosition > 0 && separatorPosition < props.maxLength && /* @__PURE__ */ React9.createElement(PinInputSeperator, null), secondGroupLength > 0 && /* @__PURE__ */ React9.createElement(PinInputGroup, { className: "hawa-w-full hawa-gap-2" }, [...Array(secondGroupLength)].map((_, index) => /* @__PURE__ */ React9.createElement(
2541
2835
  PinInputSlot,
2542
2836
  {
2543
2837
  key: index + firstGroupLength,
2544
2838
  index: index + firstGroupLength,
2545
2839
  className: "hawa-w-full hawa-border"
2546
2840
  }
2547
- )))), /* @__PURE__ */ React7.createElement(HelperText, { helperText: props.helperText }));
2841
+ )))), /* @__PURE__ */ React9.createElement(HelperText, { helperText: props.helperText }));
2548
2842
  };
2549
2843
 
2550
2844
  // elements/popover/Popover.tsx
2551
- import * as React8 from "react";
2845
+ import * as React10 from "react";
2552
2846
  import * as PopoverPrimitive from "@radix-ui/react-popover";
2553
- var PopoverContent = React8.forwardRef(
2554
- ({ className, align = "center", sideOffset = 4, container, ...props }, ref) => /* @__PURE__ */ React8.createElement(PopoverPrimitive.Portal, { container }, /* @__PURE__ */ React8.createElement(
2847
+ var PopoverContent = React10.forwardRef(
2848
+ ({ className, align = "center", sideOffset = 4, container, ...props }, ref) => /* @__PURE__ */ React10.createElement(PopoverPrimitive.Portal, { container }, /* @__PURE__ */ React10.createElement(
2555
2849
  PopoverPrimitive.Content,
2556
2850
  {
2557
2851
  ref,
@@ -2566,7 +2860,7 @@ var PopoverContent = React8.forwardRef(
2566
2860
  ))
2567
2861
  );
2568
2862
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2569
- var Popover = ({
2863
+ var Popover2 = ({
2570
2864
  trigger,
2571
2865
  children,
2572
2866
  className,
@@ -2584,7 +2878,7 @@ var Popover = ({
2584
2878
  trigger: "var(--radix-popover-trigger-width)",
2585
2879
  default: "auto"
2586
2880
  };
2587
- return /* @__PURE__ */ React8.createElement(PopoverPrimitive.Root, { open, ...props }, /* @__PURE__ */ React8.createElement(
2881
+ return /* @__PURE__ */ React10.createElement(PopoverPrimitive.Root, { open, ...props }, /* @__PURE__ */ React10.createElement(
2588
2882
  PopoverPrimitive.Trigger,
2589
2883
  {
2590
2884
  className: "hawa-w-full",
@@ -2592,7 +2886,7 @@ var Popover = ({
2592
2886
  ...triggerProps
2593
2887
  },
2594
2888
  trigger
2595
- ), /* @__PURE__ */ React8.createElement(
2889
+ ), /* @__PURE__ */ React10.createElement(
2596
2890
  PopoverContent,
2597
2891
  {
2598
2892
  side,
@@ -2614,9 +2908,9 @@ var PopoverPortal = PopoverPrimitive.Portal;
2614
2908
  var PopoverRoot = PopoverPrimitive.Root;
2615
2909
 
2616
2910
  // elements/radio/Radio.tsx
2617
- import React9, { useState as useState4, useRef as useRef3, useEffect as useEffect3, forwardRef as forwardRef7 } from "react";
2618
- import { TabsList, TabsTrigger, Tabs } from "@radix-ui/react-tabs";
2619
- var Radio = forwardRef7(
2911
+ import React11, { useState as useState5, useRef as useRef4, useEffect as useEffect4, forwardRef as forwardRef9 } from "react";
2912
+ import { TabsList as TabsList2, TabsTrigger as TabsTrigger2, Tabs as Tabs2 } from "@radix-ui/react-tabs";
2913
+ var Radio = forwardRef9(
2620
2914
  ({
2621
2915
  design = "default",
2622
2916
  width = "default",
@@ -2649,15 +2943,15 @@ var Radio = forwardRef7(
2649
2943
  default: "hawa-max-w-fit",
2650
2944
  full: "hawa-w-full"
2651
2945
  };
2652
- const [parentDirection, setParentDirection] = React9.useState(
2946
+ const [parentDirection, setParentDirection] = React11.useState(
2653
2947
  null
2654
2948
  );
2655
- const [selectedOption, setSelectedOption] = useState4(
2949
+ const [selectedOption, setSelectedOption] = useState5(
2656
2950
  props.defaultValue || props.value
2657
2951
  );
2658
- const [openTooltip, setOpenTooltip] = useState4(null);
2659
- const parentRef = useRef3(null);
2660
- useEffect3(() => {
2952
+ const [openTooltip, setOpenTooltip] = useState5(null);
2953
+ const parentRef = useRef4(null);
2954
+ useEffect4(() => {
2661
2955
  var _a2;
2662
2956
  const parentNode = (_a2 = parentRef.current) == null ? void 0 : _a2.parentNode;
2663
2957
  if (parentNode) {
@@ -2683,7 +2977,7 @@ var Radio = forwardRef7(
2683
2977
  ];
2684
2978
  switch (design) {
2685
2979
  case "tabs":
2686
- return /* @__PURE__ */ React9.createElement(
2980
+ return /* @__PURE__ */ React11.createElement(
2687
2981
  "div",
2688
2982
  {
2689
2983
  className: cn(
@@ -2691,9 +2985,9 @@ var Radio = forwardRef7(
2691
2985
  containerClassNames == null ? void 0 : containerClassNames.tabs
2692
2986
  )
2693
2987
  },
2694
- props.label && /* @__PURE__ */ React9.createElement(Label, { ...labelProps }, props.label),
2695
- /* @__PURE__ */ React9.createElement(Tabs, null, /* @__PURE__ */ React9.createElement(
2696
- TabsList,
2988
+ props.label && /* @__PURE__ */ React11.createElement(Label, { ...labelProps }, props.label),
2989
+ /* @__PURE__ */ React11.createElement(Tabs2, null, /* @__PURE__ */ React11.createElement(
2990
+ TabsList2,
2697
2991
  {
2698
2992
  role: "tablist",
2699
2993
  ref: parentRef,
@@ -2707,22 +3001,22 @@ var Radio = forwardRef7(
2707
3001
  )
2708
3002
  },
2709
3003
  (_b = props.options) == null ? void 0 : _b.map((opt, o) => {
2710
- return opt.tooltip ? /* @__PURE__ */ React9.createElement(
3004
+ return opt.tooltip ? /* @__PURE__ */ React11.createElement(
2711
3005
  PopoverRoot,
2712
3006
  {
2713
3007
  key: o,
2714
3008
  open: o === openTooltip,
2715
3009
  onOpenChange: (bool) => setOpenTooltip(bool ? o : null)
2716
3010
  },
2717
- /* @__PURE__ */ React9.createElement(
3011
+ /* @__PURE__ */ React11.createElement(
2718
3012
  PopoverTrigger,
2719
3013
  {
2720
3014
  onMouseEnter: () => setOpenTooltip(o),
2721
3015
  onMouseLeave: () => setOpenTooltip(null),
2722
3016
  asChild: true
2723
3017
  },
2724
- /* @__PURE__ */ React9.createElement(
2725
- TabsTrigger,
3018
+ /* @__PURE__ */ React11.createElement(
3019
+ TabsTrigger2,
2726
3020
  {
2727
3021
  "aria-current": selectedOption === opt.value ? "page" : void 0,
2728
3022
  value: opt.value,
@@ -2741,9 +3035,9 @@ var Radio = forwardRef7(
2741
3035
  opt.label
2742
3036
  )
2743
3037
  ),
2744
- /* @__PURE__ */ React9.createElement(PopoverContent, { ...opt.tooltipContentProps }, opt.tooltip)
2745
- ) : /* @__PURE__ */ React9.createElement(
2746
- TabsTrigger,
3038
+ /* @__PURE__ */ React11.createElement(PopoverContent, { ...opt.tooltipContentProps }, opt.tooltip)
3039
+ ) : /* @__PURE__ */ React11.createElement(
3040
+ TabsTrigger2,
2747
3041
  {
2748
3042
  key: o,
2749
3043
  role: "tab",
@@ -2764,10 +3058,10 @@ var Radio = forwardRef7(
2764
3058
  );
2765
3059
  })
2766
3060
  )),
2767
- !forceHideHelperText && /* @__PURE__ */ React9.createElement(HelperText, { helperText: props.helperText })
3061
+ !forceHideHelperText && /* @__PURE__ */ React11.createElement(HelperText, { helperText: props.helperText })
2768
3062
  );
2769
3063
  case "bordered":
2770
- return /* @__PURE__ */ React9.createElement(
3064
+ return /* @__PURE__ */ React11.createElement(
2771
3065
  "div",
2772
3066
  {
2773
3067
  className: cn(
@@ -2776,7 +3070,7 @@ var Radio = forwardRef7(
2776
3070
  containerClassNames == null ? void 0 : containerClassNames.bordered
2777
3071
  )
2778
3072
  },
2779
- props.options && props.options.map((opt, i) => /* @__PURE__ */ React9.createElement("div", { key: i, className: "hawa-w-full hawa-rounded hawa-border" }, /* @__PURE__ */ React9.createElement(
3073
+ props.options && props.options.map((opt, i) => /* @__PURE__ */ React11.createElement("div", { key: i, className: "hawa-w-full hawa-rounded hawa-border" }, /* @__PURE__ */ React11.createElement(
2780
3074
  "div",
2781
3075
  {
2782
3076
  className: cn(
@@ -2785,7 +3079,7 @@ var Radio = forwardRef7(
2785
3079
  ),
2786
3080
  key: i + 1
2787
3081
  },
2788
- /* @__PURE__ */ React9.createElement(
3082
+ /* @__PURE__ */ React11.createElement(
2789
3083
  "input",
2790
3084
  {
2791
3085
  disabled: opt.disabled,
@@ -2796,442 +3090,148 @@ var Radio = forwardRef7(
2796
3090
  onChange: () => handleChange(opt)
2797
3091
  }
2798
3092
  ),
2799
- /* @__PURE__ */ React9.createElement(
3093
+ /* @__PURE__ */ React11.createElement(
2800
3094
  "label",
2801
3095
  {
2802
3096
  htmlFor: opt.value.toString(),
2803
3097
  className: cn(
2804
- "hawa-ml-2 hawa-w-full hawa-select-none hawa-p-4 hawa-pl-3 hawa-text-sm hawa-font-medium hawa-text-black dark:hawa-text-white",
2805
- opt.disabled ? "hawa-opacity-50" : "hawa-cursor-pointer hawa-text-gray-900"
2806
- )
2807
- },
2808
- opt.label
2809
- )
2810
- )))
2811
- );
2812
- case "cards":
2813
- return /* @__PURE__ */ React9.createElement(
2814
- "ul",
2815
- {
2816
- className: cn(
2817
- orientationStyle[orientation],
2818
- "hawa-gap-4",
2819
- containerClassNames == null ? void 0 : containerClassNames.cards
2820
- )
2821
- },
2822
- (_c = props.options) == null ? void 0 : _c.map((opt, o) => /* @__PURE__ */ React9.createElement("li", { key: o, onClick: () => handleChange(opt) }, /* @__PURE__ */ React9.createElement(
2823
- "input",
2824
- {
2825
- type: "radio",
2826
- id: opt.value.toString(),
2827
- name,
2828
- value: opt.value.toString(),
2829
- className: "hawa-peer hawa-hidden",
2830
- required: true,
2831
- disabled: opt.disabled
2832
- }
2833
- ), /* @__PURE__ */ React9.createElement(
2834
- "label",
2835
- {
2836
- htmlFor: opt.value.toString(),
2837
- className: cn(
2838
- "hawa-inline-flex hawa-h-full hawa-w-full hawa-transition-all hawa-items-center hawa-justify-between hawa-rounded-lg hawa-border hawa-border-foreground/10 hawa-bg-background hawa-p-5 hawa-text-gray-500 peer-checked:hawa-border-primary peer-checked:hawa-text-primary dark:hawa-border-foreground/10 dark:hawa-bg-foreground/5 dark:hawa-text-gray-400 dark:peer-checked:hawa-text-primary",
2839
- opt.disabled ? "hawa-opacity-50" : "hawa-cursor-pointer hover:hawa-bg-foreground/10 hover:hawa-text-gray-600 dark:hover:hawa-bg-foreground/20 dark:hover:hawa-text-gray-300"
2840
- )
2841
- },
2842
- /* @__PURE__ */ React9.createElement("div", { className: "hawa-block hawa-h-full hawa-w-full" }, /* @__PURE__ */ React9.createElement("div", { className: "hawa-w-full hawa-text-lg hawa-font-semibold" }, opt.label), /* @__PURE__ */ React9.createElement("div", { className: "hawa-w-full" }, opt.sublabel))
2843
- )))
2844
- );
2845
- default:
2846
- return /* @__PURE__ */ React9.createElement(
2847
- "div",
2848
- {
2849
- className: cn(
2850
- "hawa-flex hawa-flex-col hawa-gap-2",
2851
- containerClassNames == null ? void 0 : containerClassNames.default
2852
- )
2853
- },
2854
- props.label && /* @__PURE__ */ React9.createElement(Label, { ...labelProps }, props.label),
2855
- /* @__PURE__ */ React9.createElement("div", { className: cn(orientationStyle[orientation], "hawa-gap-2") }, props.options && props.options.map((opt, i) => /* @__PURE__ */ React9.createElement(
2856
- "div",
2857
- {
2858
- className: cn(
2859
- "radio-item radio-item-default hawa-flex hawa-items-center hawa-transition-all",
2860
- props.direction === "rtl" ? "margin-left right-3px" : "margin-right left-3px"
2861
- ),
2862
- key: i + 1
2863
- },
2864
- /* @__PURE__ */ React9.createElement(
2865
- "input",
2866
- {
2867
- disabled: opt.disabled,
2868
- id: opt.value.toString(),
2869
- type: "radio",
2870
- value: opt.value,
2871
- name,
2872
- onChange: () => handleChange(opt)
2873
- }
2874
- ),
2875
- /* @__PURE__ */ React9.createElement(
2876
- "label",
2877
- {
2878
- htmlFor: opt.value.toString(),
2879
- className: cn(
2880
- "hawa-text-sm hawa-font-medium dark:hawa-text-white",
2881
- opt.disabled ? "hawa-text-gray-400" : "hawa-cursor-pointer hawa-text-gray-900"
2882
- )
2883
- },
2884
- opt.label
2885
- )
2886
- ))),
2887
- /* @__PURE__ */ React9.createElement(HelperText, { helperText: props.helperText })
2888
- );
2889
- }
2890
- }
2891
- );
2892
-
2893
- // elements/textarea/Textarea.tsx
2894
- import * as React10 from "react";
2895
- var Textarea = React10.forwardRef(
2896
- ({
2897
- className,
2898
- classNames,
2899
- labelProps,
2900
- showCount,
2901
- forceHideHelperText,
2902
- textareaProps,
2903
- countPosition = "bottom",
2904
- isLoading,
2905
- ...props
2906
- }, ref) => {
2907
- return /* @__PURE__ */ React10.createElement(
2908
- "div",
2909
- {
2910
- className: cn(
2911
- "textarea-main hawa-relative hawa-flex hawa-h-full hawa-w-full hawa-flex-col",
2912
- !forceHideHelperText && "hawa-gap-2",
2913
- className
2914
- )
2915
- },
2916
- /* @__PURE__ */ React10.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, props.label && /* @__PURE__ */ React10.createElement(Label, { ...labelProps }, props.label), showCount && countPosition === "top" && /* @__PURE__ */ React10.createElement(
2917
- "div",
2918
- {
2919
- className: "hawa-text-start hawa-text-xs hawa-transition-all hawa-leading-none"
2920
- },
2921
- (textareaProps == null ? void 0 : textareaProps.value) ? String(textareaProps == null ? void 0 : textareaProps.value).length : 0,
2922
- "/",
2923
- textareaProps == null ? void 0 : textareaProps.maxLength
2924
- )),
2925
- isLoading ? /* @__PURE__ */ React10.createElement(Skeleton, { style: { height: 40 } }) : /* @__PURE__ */ React10.createElement(
2926
- "textarea",
2927
- {
2928
- ...textareaProps,
2929
- className: cn(
2930
- "hawa-flex hawa-min-h-[40px] hawa-h-[40px] hawa-w-full hawa-rounded-md hawa-border hawa-border-input hawa-bg-background hawa-px-3 hawa-py-2 hawa-text-sm hawa-ring-offset-background placeholder:hawa-text-gray-400 placeholder:hawa-text-muted-foreground focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-0 disabled:hawa-cursor-not-allowed disabled:hawa-opacity-50",
2931
- classNames == null ? void 0 : classNames.textarea
2932
- ),
2933
- ref
2934
- }
2935
- ),
2936
- /* @__PURE__ */ React10.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, !forceHideHelperText && /* @__PURE__ */ React10.createElement(HelperText, { helperText: props.helperText }), showCount && countPosition === "bottom" && /* @__PURE__ */ React10.createElement("div", { className: "hawa-text-start hawa-text-xs hawa-transition-all" }, (textareaProps == null ? void 0 : textareaProps.value) ? String(textareaProps == null ? void 0 : textareaProps.value).length : 0, "/", textareaProps == null ? void 0 : textareaProps.maxLength))
2937
- );
2938
- }
2939
- );
2940
- Textarea.displayName = "Textarea";
2941
-
2942
- // elements/scrollArea/ScrollArea.tsx
2943
- import * as React11 from "react";
2944
- import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2945
- var ScrollArea = React11.forwardRef(({ className, children, orientation = "vertical", ...props }, ref) => {
2946
- const scrollAreaRef = React11.useRef(null);
2947
- const isDragging = React11.useRef(false);
2948
- const startPos = React11.useRef({ x: 0, y: 0 });
2949
- const scrollPos = React11.useRef({ top: 0, left: 0 });
2950
- const [showLeftFade, setShowLeftFade] = React11.useState(false);
2951
- const [showRightFade, setShowRightFade] = React11.useState(false);
2952
- const checkOverflow = () => {
2953
- if (scrollAreaRef.current) {
2954
- const { scrollLeft, scrollWidth, clientWidth } = scrollAreaRef.current;
2955
- setShowLeftFade(scrollLeft > 0);
2956
- setShowRightFade(scrollLeft + clientWidth < scrollWidth);
2957
- }
2958
- };
2959
- const onMouseDown = (e) => {
2960
- isDragging.current = true;
2961
- startPos.current = { x: e.clientX, y: e.clientY };
2962
- if (scrollAreaRef.current) {
2963
- scrollPos.current = {
2964
- top: scrollAreaRef.current.scrollTop,
2965
- left: scrollAreaRef.current.scrollLeft
2966
- };
2967
- }
2968
- document.addEventListener("mousemove", onMouseMove);
2969
- document.addEventListener("mouseup", onMouseUp);
2970
- };
2971
- const onMouseMove = (e) => {
2972
- if (!isDragging.current || !scrollAreaRef.current) return;
2973
- const dx = e.clientX - startPos.current.x;
2974
- const dy = e.clientY - startPos.current.y;
2975
- if (orientation === "vertical") {
2976
- scrollAreaRef.current.scrollTop = scrollPos.current.top - dy;
2977
- } else {
2978
- scrollAreaRef.current.scrollLeft = scrollPos.current.left - dx;
2979
- checkOverflow();
2980
- }
2981
- };
2982
- const onMouseUp = () => {
2983
- isDragging.current = false;
2984
- document.removeEventListener("mousemove", onMouseMove);
2985
- document.removeEventListener("mouseup", onMouseUp);
2986
- };
2987
- React11.useEffect(() => {
2988
- checkOverflow();
2989
- if (scrollAreaRef.current) {
2990
- scrollAreaRef.current.addEventListener("scroll", checkOverflow);
2991
- window.addEventListener("resize", checkOverflow);
2992
- }
2993
- return () => {
2994
- if (scrollAreaRef.current) {
2995
- scrollAreaRef.current.removeEventListener("scroll", checkOverflow);
2996
- }
2997
- window.removeEventListener("resize", checkOverflow);
2998
- };
2999
- }, []);
3000
- return /* @__PURE__ */ React11.createElement(
3001
- ScrollAreaPrimitive.Root,
3002
- {
3003
- ref,
3004
- className: cn("hawa-relative hawa-overflow-hidden", className),
3005
- ...props
3006
- },
3007
- /* @__PURE__ */ React11.createElement(
3008
- "div",
3009
- {
3010
- className: cn(
3011
- "hawa-pointer-events-none hawa-absolute hawa-bg-background hawa-h-full hawa-w-[50px] hawa-z-10 hawa-start-0 hawa-mask-fade-right",
3012
- showLeftFade ? "hawa-block" : "hawa-hidden"
3013
- )
3014
- }
3015
- ),
3016
- /* @__PURE__ */ React11.createElement(
3017
- "div",
3018
- {
3019
- className: cn(
3020
- "hawa-pointer-events-none hawa-absolute hawa-bg-background hawa-mask-fade-left hawa-end-0 hawa-h-full hawa-w-[50px] hawa-z-10",
3021
- showRightFade ? "hawa-block" : "hawa-hidden"
3022
- )
3023
- }
3024
- ),
3025
- /* @__PURE__ */ React11.createElement(
3026
- ScrollAreaPrimitive.Viewport,
3027
- {
3028
- ref: scrollAreaRef,
3029
- className: "hawa-h-full hawa-w-full hawa-rounded-[inherit]",
3030
- onMouseDown
3031
- },
3032
- children
3033
- ),
3034
- /* @__PURE__ */ React11.createElement(ScrollBar, { orientation }),
3035
- /* @__PURE__ */ React11.createElement(ScrollAreaPrimitive.Corner, null)
3036
- );
3037
- });
3038
- ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3039
- var ScrollBar = React11.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React11.createElement(
3040
- ScrollAreaPrimitive.ScrollAreaScrollbar,
3041
- {
3042
- ref,
3043
- orientation,
3044
- className: cn(
3045
- "hawa-flex hawa-touch-none hawa-select-none hawa-transition-colors",
3046
- orientation === "vertical" && "hawa-h-full hawa-w-2.5 hawa-border-l hawa-border-l-transparent hawa-p-[1px]",
3047
- orientation === "horizontal" && "hawa-h-2.5 hawa-border-t hawa-border-t-transparent hawa-p-[1px]",
3048
- className
3049
- ),
3050
- ...props
3051
- },
3052
- /* @__PURE__ */ React11.createElement(
3053
- ScrollAreaPrimitive.ScrollAreaThumb,
3054
- {
3055
- className: cn(
3056
- "hawa-relative hawa-rounded-full hawa-bg-border",
3057
- orientation === "vertical" && "hawa-flex-1"
3058
- )
3098
+ "hawa-ml-2 hawa-w-full hawa-select-none hawa-p-4 hawa-pl-3 hawa-text-sm hawa-font-medium hawa-text-black dark:hawa-text-white",
3099
+ opt.disabled ? "hawa-opacity-50" : "hawa-cursor-pointer hawa-text-gray-900"
3100
+ )
3101
+ },
3102
+ opt.label
3103
+ )
3104
+ )))
3105
+ );
3106
+ case "cards":
3107
+ return /* @__PURE__ */ React11.createElement(
3108
+ "ul",
3109
+ {
3110
+ className: cn(
3111
+ orientationStyle[orientation],
3112
+ "hawa-gap-4",
3113
+ containerClassNames == null ? void 0 : containerClassNames.cards
3114
+ )
3115
+ },
3116
+ (_c = props.options) == null ? void 0 : _c.map((opt, o) => /* @__PURE__ */ React11.createElement("li", { key: o, onClick: () => handleChange(opt) }, /* @__PURE__ */ React11.createElement(
3117
+ "input",
3118
+ {
3119
+ type: "radio",
3120
+ id: opt.value.toString(),
3121
+ name,
3122
+ value: opt.value.toString(),
3123
+ className: "hawa-peer hawa-hidden",
3124
+ required: true,
3125
+ disabled: opt.disabled
3126
+ }
3127
+ ), /* @__PURE__ */ React11.createElement(
3128
+ "label",
3129
+ {
3130
+ htmlFor: opt.value.toString(),
3131
+ className: cn(
3132
+ "hawa-inline-flex hawa-h-full hawa-w-full hawa-transition-all hawa-items-center hawa-justify-between hawa-rounded-lg hawa-border hawa-border-foreground/10 hawa-bg-background hawa-p-5 hawa-text-gray-500 peer-checked:hawa-border-primary peer-checked:hawa-text-primary dark:hawa-border-foreground/10 dark:hawa-bg-foreground/5 dark:hawa-text-gray-400 dark:peer-checked:hawa-text-primary",
3133
+ opt.disabled ? "hawa-opacity-50" : "hawa-cursor-pointer hover:hawa-bg-foreground/10 hover:hawa-text-gray-600 dark:hover:hawa-bg-foreground/20 dark:hover:hawa-text-gray-300"
3134
+ )
3135
+ },
3136
+ /* @__PURE__ */ React11.createElement("div", { className: "hawa-block hawa-h-full hawa-w-full" }, /* @__PURE__ */ React11.createElement("div", { className: "hawa-w-full hawa-text-lg hawa-font-semibold" }, opt.label), /* @__PURE__ */ React11.createElement("div", { className: "hawa-w-full" }, opt.sublabel))
3137
+ )))
3138
+ );
3139
+ default:
3140
+ return /* @__PURE__ */ React11.createElement(
3141
+ "div",
3142
+ {
3143
+ className: cn(
3144
+ "hawa-flex hawa-flex-col hawa-gap-2",
3145
+ containerClassNames == null ? void 0 : containerClassNames.default
3146
+ )
3147
+ },
3148
+ props.label && /* @__PURE__ */ React11.createElement(Label, { ...labelProps }, props.label),
3149
+ /* @__PURE__ */ React11.createElement("div", { className: cn(orientationStyle[orientation], "hawa-gap-2") }, props.options && props.options.map((opt, i) => /* @__PURE__ */ React11.createElement(
3150
+ "div",
3151
+ {
3152
+ className: cn(
3153
+ "radio-item radio-item-default hawa-flex hawa-items-center hawa-transition-all",
3154
+ props.direction === "rtl" ? "margin-left right-3px" : "margin-right left-3px"
3155
+ ),
3156
+ key: i + 1
3157
+ },
3158
+ /* @__PURE__ */ React11.createElement(
3159
+ "input",
3160
+ {
3161
+ disabled: opt.disabled,
3162
+ id: opt.value.toString(),
3163
+ type: "radio",
3164
+ value: opt.value,
3165
+ name,
3166
+ onChange: () => handleChange(opt)
3167
+ }
3168
+ ),
3169
+ /* @__PURE__ */ React11.createElement(
3170
+ "label",
3171
+ {
3172
+ htmlFor: opt.value.toString(),
3173
+ className: cn(
3174
+ "hawa-text-sm hawa-font-medium dark:hawa-text-white",
3175
+ opt.disabled ? "hawa-text-gray-400" : "hawa-cursor-pointer hawa-text-gray-900"
3176
+ )
3177
+ },
3178
+ opt.label
3179
+ )
3180
+ ))),
3181
+ /* @__PURE__ */ React11.createElement(HelperText, { helperText: props.helperText })
3182
+ );
3059
3183
  }
3060
- )
3061
- ));
3062
- ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
3184
+ }
3185
+ );
3063
3186
 
3064
- // elements/tabs/Tabs.tsx
3187
+ // elements/textarea/Textarea.tsx
3065
3188
  import * as React12 from "react";
3066
- import * as Popover2 from "@radix-ui/react-popover";
3067
- import * as TabsPrimitive from "@radix-ui/react-tabs";
3068
- import { tv } from "tailwind-variants";
3069
- var tabsListVariant = tv({
3070
- base: "",
3071
- variants: {
3072
- variant: {
3073
- default: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-border hawa-bg-muted hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
3074
- underlined: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-rounded hawa-p-1 hawa-text-muted-foreground dark:hawa-border-primary/10",
3075
- underlined_tabs: "hawa-flex hawa-w-fit hawa-items-center hawa-justify-start hawa-gap-1 hawa-text-muted-foreground"
3076
- },
3077
- orientation: { horizontal: "", vertical: "" }
3078
- },
3079
- compoundVariants: [
3080
- {
3081
- variant: "underlined_tabs",
3082
- orientation: "vertical",
3083
- class: "hawa-border-e-2 hawa-border-e-primary"
3084
- },
3085
- {
3086
- variant: "underlined_tabs",
3087
- orientation: "horizontal",
3088
- class: "hawa-border-b-2 hawa-border-b-primary"
3089
- }
3090
- ],
3091
- defaultVariants: { variant: "default", orientation: "horizontal" }
3092
- });
3093
- var tabsTriggerVariant = tv({
3094
- base: "",
3095
- variants: {
3096
- variant: {
3097
- default: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-border hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50 data-[state=active]:hawa-bg-primary data-[state=active]:hawa-text-primary-foreground data-[state=active]:hawa-shadow-sm dark:hawa-border-primary/10",
3098
- underlined: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-rounded-none hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50",
3099
- underlined_tabs: "hawa-inline-flex hawa-w-full hawa-flex-1 hawa-select-none hawa-items-center hawa-justify-center hawa-gap-2 hawa-whitespace-nowrap hawa-rounded hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-all focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50 hawa-bg-primary/10 data-[state=active]:hawa-bg-primary data-[state=active]:hawa-text-primary-foreground dark:hawa-border-primary/10"
3100
- },
3101
- orientation: { horizontal: "", vertical: "" }
3102
- },
3103
- compoundVariants: [
3104
- {
3105
- variant: "underlined",
3106
- orientation: "horizontal",
3107
- class: "data-[state=active]:hawa-border-b-primary hawa-border-b hawa-border-b-2"
3108
- },
3109
- {
3110
- variant: "underlined",
3111
- orientation: "vertical",
3112
- class: "data-[state=active]:hawa-border-e-primary hawa-border-e hawa-border-e-2"
3113
- },
3114
- {
3115
- variant: "underlined_tabs",
3116
- orientation: "horizontal",
3117
- class: "hawa-rounded-b-none"
3118
- },
3119
- {
3120
- variant: "underlined_tabs",
3121
- orientation: "vertical",
3122
- class: "hawa-rounded-e-none"
3123
- }
3124
- ],
3125
- defaultVariants: { variant: "default", orientation: "horizontal" }
3126
- });
3127
- var TabsContext = React12.createContext({ orientation: "horizontal", variant: "default", scrollable: false });
3128
- var Tabs2 = React12.forwardRef(
3129
- ({ className, orientation, scrollable, variant = "default", ...props }, ref) => /* @__PURE__ */ React12.createElement(
3130
- TabsPrimitive.Root,
3131
- {
3132
- ref,
3133
- className: cn(
3134
- "hawa-flex hawa-gap-2",
3135
- orientation === "vertical" ? "hawa-flex-row" : "hawa-flex-col",
3136
- className
3137
- ),
3138
- ...props
3139
- },
3140
- /* @__PURE__ */ React12.createElement(TabsContext.Provider, { value: { orientation, variant, scrollable } }, props.children)
3141
- )
3142
- );
3143
- var TabsList2 = React12.forwardRef(({ className, classNames, ...props }, ref) => {
3144
- const { orientation, variant, scrollable } = React12.useContext(TabsContext);
3145
- const { width } = useViewportSize();
3146
- if (scrollable && width < 768 && orientation === "horizontal") {
3147
- return /* @__PURE__ */ React12.createElement(ScrollArea, { orientation: "horizontal", className: classNames == null ? void 0 : classNames.scrollArea }, /* @__PURE__ */ React12.createElement(
3148
- TabsPrimitive.List,
3149
- {
3150
- ref,
3151
- className: cn(
3152
- tabsListVariant({ variant, orientation }),
3153
- "hawa-flex-row hawa-flex-nowrap",
3154
- className
3155
- ),
3156
- ...props
3157
- }
3158
- ));
3159
- } else {
3189
+ var Textarea = React12.forwardRef(
3190
+ ({
3191
+ className,
3192
+ classNames,
3193
+ labelProps,
3194
+ showCount,
3195
+ forceHideHelperText,
3196
+ textareaProps,
3197
+ countPosition = "bottom",
3198
+ isLoading,
3199
+ ...props
3200
+ }, ref) => {
3160
3201
  return /* @__PURE__ */ React12.createElement(
3161
- TabsPrimitive.List,
3202
+ "div",
3162
3203
  {
3163
- ref,
3164
3204
  className: cn(
3165
- tabsListVariant({ variant, orientation }),
3166
- orientation === "vertical" ? "hawa-flex-col" : "hawa-flex-row",
3167
- "hawa-flex-wrap",
3205
+ "textarea-main hawa-relative hawa-flex hawa-h-full hawa-w-full hawa-flex-col",
3206
+ !forceHideHelperText && "hawa-gap-2",
3168
3207
  className
3169
- ),
3170
- ...props
3171
- }
3172
- );
3173
- }
3174
- });
3175
- var TabsTrigger2 = React12.forwardRef(
3176
- ({ className, chipProps, withPopover = false, onPopoverClick, ...props }, ref) => {
3177
- const { orientation, variant } = React12.useContext(TabsContext);
3178
- if (withPopover) {
3179
- return /* @__PURE__ */ React12.createElement(Popover2.Root, { open: props.showPopover }, /* @__PURE__ */ React12.createElement(Popover2.Anchor, { asChild: true }, /* @__PURE__ */ React12.createElement(
3180
- TabsPrimitive.Trigger,
3181
- {
3182
- className: cn(
3183
- tabsTriggerVariant({ variant, orientation }),
3184
- "hawa-relative",
3185
- className
3186
- ),
3187
- ...props
3188
- },
3189
- props.children,
3190
- chipProps && /* @__PURE__ */ React12.createElement(Chip, { ...chipProps })
3191
- )), /* @__PURE__ */ React12.createElement(
3192
- Popover2.Content,
3208
+ )
3209
+ },
3210
+ /* @__PURE__ */ React12.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, props.label && /* @__PURE__ */ React12.createElement(Label, { ...labelProps }, props.label), showCount && countPosition === "top" && /* @__PURE__ */ React12.createElement(
3211
+ "div",
3193
3212
  {
3194
- onClick: onPopoverClick,
3195
- asChild: true,
3196
- className: cn(
3197
- "dark:dark-shadow hawa-z-50 hawa-rounded hawa-border hawa-bg-popover hawa-text-popover-foreground hawa-shadow-md hawa-outline-none data-[state=open]:hawa-animate-in data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=open]:hawa-fade-in-0 data-[state=closed]:hawa-zoom-out-95 data-[state=open]:hawa-zoom-in-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2",
3198
- "hawa-arrow-default-top hawa-mt-2"
3199
- )
3213
+ className: "hawa-text-start hawa-text-xs hawa-transition-all hawa-leading-none"
3200
3214
  },
3201
- /* @__PURE__ */ React12.createElement("div", { className: "hawa-p-2" }, " ", props.popoverContent)
3202
- ));
3203
- } else {
3204
- return /* @__PURE__ */ React12.createElement(
3205
- TabsPrimitive.Trigger,
3215
+ (textareaProps == null ? void 0 : textareaProps.value) ? String(textareaProps == null ? void 0 : textareaProps.value).length : 0,
3216
+ "/",
3217
+ textareaProps == null ? void 0 : textareaProps.maxLength
3218
+ )),
3219
+ isLoading ? /* @__PURE__ */ React12.createElement(Skeleton, { style: { height: 40 } }) : /* @__PURE__ */ React12.createElement(
3220
+ "textarea",
3206
3221
  {
3222
+ ...textareaProps,
3207
3223
  className: cn(
3208
- tabsTriggerVariant({ variant, orientation }),
3209
- "hawa-relative",
3210
- className
3224
+ "hawa-flex hawa-min-h-[40px] hawa-h-[40px] hawa-w-full hawa-rounded-md hawa-border hawa-border-input hawa-bg-background hawa-px-3 hawa-py-2 hawa-text-sm hawa-ring-offset-background placeholder:hawa-text-gray-400 placeholder:hawa-text-muted-foreground focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-0 disabled:hawa-cursor-not-allowed disabled:hawa-opacity-50",
3225
+ classNames == null ? void 0 : classNames.textarea
3211
3226
  ),
3212
- ...props
3213
- },
3214
- props.children,
3215
- chipProps && /* @__PURE__ */ React12.createElement(Chip, { ...chipProps })
3216
- );
3217
- }
3227
+ ref
3228
+ }
3229
+ ),
3230
+ /* @__PURE__ */ React12.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, !forceHideHelperText && /* @__PURE__ */ React12.createElement(HelperText, { helperText: props.helperText }), showCount && countPosition === "bottom" && /* @__PURE__ */ React12.createElement("div", { className: "hawa-text-start hawa-text-xs hawa-transition-all" }, (textareaProps == null ? void 0 : textareaProps.value) ? String(textareaProps == null ? void 0 : textareaProps.value).length : 0, "/", textareaProps == null ? void 0 : textareaProps.maxLength))
3231
+ );
3218
3232
  }
3219
3233
  );
3220
- var TabsContent = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React12.createElement(
3221
- TabsPrimitive.Content,
3222
- {
3223
- ref,
3224
- className: cn(
3225
- "hawa-ring-offset-hawa-background hawa-w-full focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2",
3226
- className
3227
- ),
3228
- ...props
3229
- }
3230
- ));
3231
- Tabs2.displayName = TabsPrimitive.Root.displayName;
3232
- TabsList2.displayName = TabsPrimitive.List.displayName;
3233
- TabsTrigger2.displayName = TabsPrimitive.Trigger.displayName;
3234
- TabsContent.displayName = TabsPrimitive.Content.displayName;
3234
+ Textarea.displayName = "Textarea";
3235
3235
 
3236
3236
  // elements/separator/Separator.tsx
3237
3237
  import * as React13 from "react";
@@ -3281,24 +3281,24 @@ export {
3281
3281
  PhoneInput,
3282
3282
  Checkbox,
3283
3283
  StopPropagationWrapper,
3284
+ ScrollArea,
3285
+ ScrollBar,
3286
+ Tabs,
3287
+ TabsList,
3288
+ TabsTrigger,
3289
+ TabsContent,
3284
3290
  PinInputRoot,
3285
3291
  PinInputGroup,
3286
3292
  PinInputSlot,
3287
3293
  PinInputSeperator,
3288
3294
  PinInput,
3289
3295
  PopoverContent,
3290
- Popover,
3296
+ Popover2 as Popover,
3291
3297
  PopoverTrigger,
3292
3298
  PopoverPortal,
3293
3299
  PopoverRoot,
3294
3300
  Radio,
3295
3301
  Textarea,
3296
- ScrollArea,
3297
- ScrollBar,
3298
- Tabs2 as Tabs,
3299
- TabsList2 as TabsList,
3300
- TabsTrigger2 as TabsTrigger,
3301
- TabsContent,
3302
3302
  Separator,
3303
3303
  Progress
3304
3304
  };