@sikka/hawa 0.37.0-next → 0.37.2-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.
Files changed (57) hide show
  1. package/dist/blocks/auth/index.js +13 -11
  2. package/dist/blocks/auth/index.mjs +4 -4
  3. package/dist/blocks/feedback/index.js +13 -11
  4. package/dist/blocks/feedback/index.mjs +5 -5
  5. package/dist/blocks/index.js +13 -11
  6. package/dist/blocks/index.mjs +2 -2
  7. package/dist/blocks/misc/index.js +13 -11
  8. package/dist/blocks/misc/index.mjs +5 -5
  9. package/dist/blocks/pricing/index.js +13 -11
  10. package/dist/blocks/pricing/index.mjs +4 -4
  11. package/dist/card/index.d.mts +3 -1
  12. package/dist/card/index.d.ts +3 -1
  13. package/dist/card/index.js +13 -11
  14. package/dist/card/index.js.map +1 -1
  15. package/dist/card/index.mjs +13 -11
  16. package/dist/card/index.mjs.map +1 -1
  17. package/dist/{chunk-WABHQMUI.mjs → chunk-BPHQFAWM.mjs} +1 -1
  18. package/dist/{chunk-MVKP55SZ.mjs → chunk-BTDR3VAG.mjs} +1 -1
  19. package/dist/{chunk-7L2JUNG2.mjs → chunk-DS3AACQJ.mjs} +1 -1
  20. package/dist/{chunk-BXBSZD5X.mjs → chunk-MDHDHEPZ.mjs} +1 -1
  21. package/dist/{chunk-6QIOEUE2.mjs → chunk-ODOCZAWC.mjs} +1 -1
  22. package/dist/{chunk-YP2CCKZG.mjs → chunk-PXGL7ZXQ.mjs} +13 -11
  23. package/dist/{chunk-SE5A4R76.mjs → chunk-QXH7ZDMN.mjs} +1 -1
  24. package/dist/{chunk-PO5OW6SQ.mjs → chunk-QYWOI3DO.mjs} +1 -1
  25. package/dist/{chunk-NNPNQK6F.mjs → chunk-RNFJAEEU.mjs} +13 -11
  26. package/dist/{chunk-I5YX7N76.mjs → chunk-ZTUWU652.mjs} +1 -1
  27. package/dist/combobox/index.d.mts +1 -1
  28. package/dist/combobox/index.d.ts +1 -1
  29. package/dist/combobox/index.js.map +1 -1
  30. package/dist/combobox/index.mjs.map +1 -1
  31. package/dist/command/index.d.mts +1 -1
  32. package/dist/command/index.d.ts +1 -1
  33. package/dist/command/index.js +27 -5
  34. package/dist/command/index.js.map +1 -1
  35. package/dist/command/index.mjs +27 -5
  36. package/dist/command/index.mjs.map +1 -1
  37. package/dist/destroyableCard/index.js +13 -11
  38. package/dist/destroyableCard/index.js.map +1 -1
  39. package/dist/destroyableCard/index.mjs +13 -11
  40. package/dist/destroyableCard/index.mjs.map +1 -1
  41. package/dist/elements/index.d.mts +10 -6
  42. package/dist/elements/index.d.ts +10 -6
  43. package/dist/elements/index.js +40 -16
  44. package/dist/elements/index.mjs +30 -8
  45. package/dist/{index-CoPyqTu8.d.mts → index-B0aJcA6d.d.mts} +7 -5
  46. package/dist/{index-CoPyqTu8.d.ts → index-B0aJcA6d.d.ts} +7 -5
  47. package/dist/index.d.mts +10 -6
  48. package/dist/index.d.ts +10 -6
  49. package/dist/index.js +40 -16
  50. package/dist/index.mjs +40 -16
  51. package/dist/layout/index.js +13 -11
  52. package/dist/layout/index.mjs +2 -2
  53. package/dist/stats/index.js +13 -11
  54. package/dist/stats/index.js.map +1 -1
  55. package/dist/stats/index.mjs +13 -11
  56. package/dist/stats/index.mjs.map +1 -1
  57. package/package.json +2 -2
@@ -22,7 +22,7 @@ import {
22
22
  TabsList,
23
23
  TabsTrigger,
24
24
  Textarea
25
- } from "../chunk-PO5OW6SQ.mjs";
25
+ } from "../chunk-QYWOI3DO.mjs";
26
26
  import {
27
27
  useClipboard
28
28
  } from "../chunk-ZBUBNKF6.mjs";
@@ -37,7 +37,7 @@ import {
37
37
  SheetPortal,
38
38
  SheetTitle,
39
39
  SheetTrigger
40
- } from "../chunk-6QIOEUE2.mjs";
40
+ } from "../chunk-ODOCZAWC.mjs";
41
41
  import {
42
42
  Button,
43
43
  Card,
@@ -76,7 +76,7 @@ import {
76
76
  buttonVariants,
77
77
  calculateLuminance,
78
78
  cn
79
- } from "../chunk-NNPNQK6F.mjs";
79
+ } from "../chunk-RNFJAEEU.mjs";
80
80
  import {
81
81
  __require
82
82
  } from "../chunk-SYGWSBJL.mjs";
@@ -1502,7 +1502,12 @@ var CommandShortcut = ({
1502
1502
  }
1503
1503
  );
1504
1504
  };
1505
- var FullCommand = ({ items, direction = "ltr", texts }) => {
1505
+ var FullCommand = ({
1506
+ items,
1507
+ direction = "ltr",
1508
+ texts,
1509
+ onActionClick
1510
+ }) => {
1506
1511
  return /* @__PURE__ */ React12.createElement(
1507
1512
  Command,
1508
1513
  {
@@ -1518,7 +1523,20 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
1518
1523
  /* @__PURE__ */ React12.createElement(CommandList, null, /* @__PURE__ */ React12.createElement(CommandEmpty, null, (texts == null ? void 0 : texts.emptyText) || "No results found."), items.map((item, index) => {
1519
1524
  var _a;
1520
1525
  if (item.type === "group") {
1521
- return /* @__PURE__ */ React12.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React12.createElement(CommandItem, { key: subIndex, onSelect: subItem.action }, /* @__PURE__ */ React12.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }), /* @__PURE__ */ React12.createElement("span", null, subItem.text), subItem.shortcut && /* @__PURE__ */ React12.createElement(CommandShortcut, null, subItem.shortcut))));
1526
+ return /* @__PURE__ */ React12.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React12.createElement(
1527
+ CommandItem,
1528
+ {
1529
+ key: subIndex,
1530
+ onSelect: () => {
1531
+ if (onActionClick)
1532
+ onActionClick();
1533
+ subItem.action();
1534
+ }
1535
+ },
1536
+ /* @__PURE__ */ React12.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }),
1537
+ /* @__PURE__ */ React12.createElement("span", null, subItem.label),
1538
+ subItem.shortcut && /* @__PURE__ */ React12.createElement(CommandShortcut, null, subItem.shortcut)
1539
+ )));
1522
1540
  } else if (item.type === "separator") {
1523
1541
  return /* @__PURE__ */ React12.createElement(CommandSeparator, { key: index });
1524
1542
  }
@@ -1526,14 +1544,18 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
1526
1544
  }))
1527
1545
  );
1528
1546
  };
1529
- var AppCommand = ({ commandProps, dialogProps }) => {
1547
+ var AppCommand = ({
1548
+ commandProps,
1549
+ dialogProps,
1550
+ onActionClick
1551
+ }) => {
1530
1552
  return /* @__PURE__ */ React12.createElement(Dialog2, { ...dialogProps }, /* @__PURE__ */ React12.createElement(
1531
1553
  DialogContent,
1532
1554
  {
1533
1555
  hideCloseButton: true,
1534
- className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-lg !hawa-min-h-[50%]"
1556
+ className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-l "
1535
1557
  },
1536
- /* @__PURE__ */ React12.createElement(FullCommand, { ...commandProps })
1558
+ /* @__PURE__ */ React12.createElement(FullCommand, { ...commandProps, onActionClick })
1537
1559
  ));
1538
1560
  };
1539
1561
  CommandShortcut.displayName = "CommandShortcut";
@@ -40,7 +40,7 @@ type FullCommandItem = {
40
40
  heading?: string;
41
41
  items?: {
42
42
  icon: React.ElementType;
43
- text: string;
43
+ label: string | React.ReactNode;
44
44
  action: () => void;
45
45
  shortcut?: string;
46
46
  }[];
@@ -48,16 +48,18 @@ type FullCommandItem = {
48
48
  type FullCommandProps = {
49
49
  items: FullCommandItem[];
50
50
  direction?: DirectionType;
51
+ onActionClick?: () => void;
51
52
  texts?: {
52
53
  searchPlaceholder?: string;
53
54
  emptyText?: string;
54
55
  };
55
56
  };
56
- declare const FullCommand: ({ items, direction, texts }: FullCommandProps) => React.JSX.Element;
57
+ declare const FullCommand: ({ items, direction, texts, onActionClick, }: FullCommandProps) => React.JSX.Element;
57
58
  type AppCommandProps = {
58
- commandProps: FullCommandProps;
59
+ commandProps: Omit<FullCommandProps, "onActionClick">;
59
60
  dialogProps: DialogProps;
61
+ onActionClick?: () => void;
60
62
  };
61
- declare const AppCommand: ({ commandProps, dialogProps }: AppCommandProps) => React.JSX.Element;
63
+ declare const AppCommand: ({ commandProps, dialogProps, onActionClick, }: AppCommandProps) => React.JSX.Element;
62
64
 
63
- export { AppCommand as A, type CommandInputProps as C, type DirectionType as D, FullCommand as F, type PositionType as P, Command as a, CommandDialog as b, CommandInput as c, CommandList as d, CommandEmpty as e, CommandGroup as f, CommandItem as g, CommandShortcut as h, CommandSeparator as i };
65
+ export { AppCommand as A, type CommandInputProps as C, type DirectionType as D, FullCommand as F, type PositionType as P, Command as a, CommandDialog as b, CommandInput as c, CommandList as d, CommandEmpty as e, CommandGroup as f, CommandItem as g, CommandShortcut as h, CommandSeparator as i, type FullCommandItem as j };
@@ -40,7 +40,7 @@ type FullCommandItem = {
40
40
  heading?: string;
41
41
  items?: {
42
42
  icon: React.ElementType;
43
- text: string;
43
+ label: string | React.ReactNode;
44
44
  action: () => void;
45
45
  shortcut?: string;
46
46
  }[];
@@ -48,16 +48,18 @@ type FullCommandItem = {
48
48
  type FullCommandProps = {
49
49
  items: FullCommandItem[];
50
50
  direction?: DirectionType;
51
+ onActionClick?: () => void;
51
52
  texts?: {
52
53
  searchPlaceholder?: string;
53
54
  emptyText?: string;
54
55
  };
55
56
  };
56
- declare const FullCommand: ({ items, direction, texts }: FullCommandProps) => React.JSX.Element;
57
+ declare const FullCommand: ({ items, direction, texts, onActionClick, }: FullCommandProps) => React.JSX.Element;
57
58
  type AppCommandProps = {
58
- commandProps: FullCommandProps;
59
+ commandProps: Omit<FullCommandProps, "onActionClick">;
59
60
  dialogProps: DialogProps;
61
+ onActionClick?: () => void;
60
62
  };
61
- declare const AppCommand: ({ commandProps, dialogProps }: AppCommandProps) => React.JSX.Element;
63
+ declare const AppCommand: ({ commandProps, dialogProps, onActionClick, }: AppCommandProps) => React.JSX.Element;
62
64
 
63
- export { AppCommand as A, type CommandInputProps as C, type DirectionType as D, FullCommand as F, type PositionType as P, Command as a, CommandDialog as b, CommandInput as c, CommandList as d, CommandEmpty as e, CommandGroup as f, CommandItem as g, CommandShortcut as h, CommandSeparator as i };
65
+ export { AppCommand as A, type CommandInputProps as C, type DirectionType as D, FullCommand as F, type PositionType as P, Command as a, CommandDialog as b, CommandInput as c, CommandList as d, CommandEmpty as e, CommandGroup as f, CommandItem as g, CommandShortcut as h, CommandSeparator as i, type FullCommandItem as j };
package/dist/index.d.mts CHANGED
@@ -30,7 +30,9 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
30
30
  asContainer?: boolean;
31
31
  }
32
32
  declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
33
- declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
33
+ declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
34
+ actions?: React$1.ReactNode;
35
+ } & React$1.RefAttributes<HTMLDivElement>>;
34
36
  declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
35
37
  declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
36
38
  declare const CardContent: React$1.ForwardRefExoticComponent<{
@@ -584,7 +586,7 @@ type FullCommandItem = {
584
586
  heading?: string;
585
587
  items?: {
586
588
  icon: React$1.ElementType;
587
- text: string;
589
+ label: string | React$1.ReactNode;
588
590
  action: () => void;
589
591
  shortcut?: string;
590
592
  }[];
@@ -592,17 +594,19 @@ type FullCommandItem = {
592
594
  type FullCommandProps = {
593
595
  items: FullCommandItem[];
594
596
  direction?: DirectionType;
597
+ onActionClick?: () => void;
595
598
  texts?: {
596
599
  searchPlaceholder?: string;
597
600
  emptyText?: string;
598
601
  };
599
602
  };
600
- declare const FullCommand: ({ items, direction, texts }: FullCommandProps) => React$1.JSX.Element;
603
+ declare const FullCommand: ({ items, direction, texts, onActionClick, }: FullCommandProps) => React$1.JSX.Element;
601
604
  type AppCommandProps = {
602
- commandProps: FullCommandProps;
605
+ commandProps: Omit<FullCommandProps, "onActionClick">;
603
606
  dialogProps: DialogProps;
607
+ onActionClick?: () => void;
604
608
  };
605
- declare const AppCommand: ({ commandProps, dialogProps }: AppCommandProps) => React$1.JSX.Element;
609
+ declare const AppCommand: ({ commandProps, dialogProps, onActionClick, }: AppCommandProps) => React$1.JSX.Element;
606
610
 
607
611
  type ComboboxTypes<T> = {
608
612
  labelKey?: keyof T | any;
@@ -2207,4 +2211,4 @@ type HotkeyItem = [
2207
2211
  ];
2208
2212
  declare function useShortcuts(hotkeys: HotkeyItem[], tagsToIgnore?: string[], triggerOnContentEditable?: boolean): void;
2209
2213
 
2210
- export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, AccordionRoot, AccordionTrigger, ActionCard, AdCard, Alert, Announcement, AppCommand, AppLanding, AppLayout, type AppSidebarItemProps, AppStores, AppTabs, AppTopbar, AuthButtons, Avatar, BackToTop, Badge, BadgedComponent, Breadcrumb, type BreadcrumbItemProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CheckEmail, Checkbox, Chip, type ChipColors, type ChipTypes, CodeBlock, CodeConfirmation, ColorPicker, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, type CommandInputProps, CommandItem, CommandList, CommandSeparator, CommandShortcut, ComparingPlans, ContactForm, type ContentRect, Copyrights, Count, DataTable, DestroyableCard, Dialog, DialogBody, DialogCarousel, DialogCarouselContent, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPortal, DialogStep, DialogSteps, DialogTitle, DialogTrigger, DocsLayout, DocsSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadio, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FeedbackEmoji, FeedbackForm, FeedbackRating, FileDropzone, FileUploader, FullCommand, HorizontalPricing, type Hotkey, type HotkeyItem, type HotkeyItemOptions, Input, InterfaceSettings, ItemCard, type KeyboardModifiers, Label, type LabelProps, LandingCard, LeadGenerator, LegalTexts, Loading, LoginForm, Logos, type MenuItemType, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem$1 as NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, NewPasswordForm, NoPermission, NotFound, Pagination, PasswordInput, PasswordStrengthIndicator, PhoneInput, type PhoneInputProps, PhoneMockup, PinInput, Popover, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, PricingCard, PricingPlans, Progress, ProgressCircle, Radio, type RadioOptionsTypes, RegisterForm, ResetPasswordForm, ScrollArea, ScrollBar, ScrollIndicator, Select, type SelectOptionProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarGroup, SidebarItem, SimpleTable, Skeleton, Slider, SortButton, StandardNavigationMenuItem, Stats, StopPropagationWrapper, type SubItem$1 as SubItem, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Testimonial, type TextFieldTypes, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, type ToasterToastProps, Tooltip, Usage, type UseFocusWithinOptions, type UseMediaQueryOptions, UserReferralSource, buttonVariants, getHotkeyHandler, getHotkeyMatcher, navigationMenuTriggerStyle, parseHotkey, reducer, toast, useBreakpoint, useClickOutside, useClipboard, useDialogCarousel, useFocusWithin, useIsomorphicEffect, useMeasureDirty, useMediaQuery, useMultiStepDialog, useShortcuts, useTabs, useToast, useWindowSize };
2214
+ export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, AccordionRoot, AccordionTrigger, ActionCard, AdCard, Alert, Announcement, AppCommand, AppLanding, AppLayout, type AppSidebarItemProps, AppStores, AppTabs, AppTopbar, AuthButtons, Avatar, BackToTop, Badge, BadgedComponent, Breadcrumb, type BreadcrumbItemProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CheckEmail, Checkbox, Chip, type ChipColors, type ChipTypes, CodeBlock, CodeConfirmation, ColorPicker, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, type CommandInputProps, CommandItem, CommandList, CommandSeparator, CommandShortcut, ComparingPlans, ContactForm, type ContentRect, Copyrights, Count, DataTable, DestroyableCard, Dialog, DialogBody, DialogCarousel, DialogCarouselContent, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPortal, DialogStep, DialogSteps, DialogTitle, DialogTrigger, DocsLayout, DocsSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadio, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FeedbackEmoji, FeedbackForm, FeedbackRating, FileDropzone, FileUploader, FullCommand, type FullCommandItem, HorizontalPricing, type Hotkey, type HotkeyItem, type HotkeyItemOptions, Input, InterfaceSettings, ItemCard, type KeyboardModifiers, Label, type LabelProps, LandingCard, LeadGenerator, LegalTexts, Loading, LoginForm, Logos, type MenuItemType, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem$1 as NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, NewPasswordForm, NoPermission, NotFound, Pagination, PasswordInput, PasswordStrengthIndicator, PhoneInput, type PhoneInputProps, PhoneMockup, PinInput, Popover, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, PricingCard, PricingPlans, Progress, ProgressCircle, Radio, type RadioOptionsTypes, RegisterForm, ResetPasswordForm, ScrollArea, ScrollBar, ScrollIndicator, Select, type SelectOptionProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarGroup, SidebarItem, SimpleTable, Skeleton, Slider, SortButton, StandardNavigationMenuItem, Stats, StopPropagationWrapper, type SubItem$1 as SubItem, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Testimonial, type TextFieldTypes, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, type ToasterToastProps, Tooltip, Usage, type UseFocusWithinOptions, type UseMediaQueryOptions, UserReferralSource, buttonVariants, getHotkeyHandler, getHotkeyMatcher, navigationMenuTriggerStyle, parseHotkey, reducer, toast, useBreakpoint, useClickOutside, useClipboard, useDialogCarousel, useFocusWithin, useIsomorphicEffect, useMeasureDirty, useMediaQuery, useMultiStepDialog, useShortcuts, useTabs, useToast, useWindowSize };
package/dist/index.d.ts CHANGED
@@ -30,7 +30,9 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
30
30
  asContainer?: boolean;
31
31
  }
32
32
  declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
33
- declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
33
+ declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
34
+ actions?: React$1.ReactNode;
35
+ } & React$1.RefAttributes<HTMLDivElement>>;
34
36
  declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
35
37
  declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
36
38
  declare const CardContent: React$1.ForwardRefExoticComponent<{
@@ -584,7 +586,7 @@ type FullCommandItem = {
584
586
  heading?: string;
585
587
  items?: {
586
588
  icon: React$1.ElementType;
587
- text: string;
589
+ label: string | React$1.ReactNode;
588
590
  action: () => void;
589
591
  shortcut?: string;
590
592
  }[];
@@ -592,17 +594,19 @@ type FullCommandItem = {
592
594
  type FullCommandProps = {
593
595
  items: FullCommandItem[];
594
596
  direction?: DirectionType;
597
+ onActionClick?: () => void;
595
598
  texts?: {
596
599
  searchPlaceholder?: string;
597
600
  emptyText?: string;
598
601
  };
599
602
  };
600
- declare const FullCommand: ({ items, direction, texts }: FullCommandProps) => React$1.JSX.Element;
603
+ declare const FullCommand: ({ items, direction, texts, onActionClick, }: FullCommandProps) => React$1.JSX.Element;
601
604
  type AppCommandProps = {
602
- commandProps: FullCommandProps;
605
+ commandProps: Omit<FullCommandProps, "onActionClick">;
603
606
  dialogProps: DialogProps;
607
+ onActionClick?: () => void;
604
608
  };
605
- declare const AppCommand: ({ commandProps, dialogProps }: AppCommandProps) => React$1.JSX.Element;
609
+ declare const AppCommand: ({ commandProps, dialogProps, onActionClick, }: AppCommandProps) => React$1.JSX.Element;
606
610
 
607
611
  type ComboboxTypes<T> = {
608
612
  labelKey?: keyof T | any;
@@ -2207,4 +2211,4 @@ type HotkeyItem = [
2207
2211
  ];
2208
2212
  declare function useShortcuts(hotkeys: HotkeyItem[], tagsToIgnore?: string[], triggerOnContentEditable?: boolean): void;
2209
2213
 
2210
- export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, AccordionRoot, AccordionTrigger, ActionCard, AdCard, Alert, Announcement, AppCommand, AppLanding, AppLayout, type AppSidebarItemProps, AppStores, AppTabs, AppTopbar, AuthButtons, Avatar, BackToTop, Badge, BadgedComponent, Breadcrumb, type BreadcrumbItemProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CheckEmail, Checkbox, Chip, type ChipColors, type ChipTypes, CodeBlock, CodeConfirmation, ColorPicker, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, type CommandInputProps, CommandItem, CommandList, CommandSeparator, CommandShortcut, ComparingPlans, ContactForm, type ContentRect, Copyrights, Count, DataTable, DestroyableCard, Dialog, DialogBody, DialogCarousel, DialogCarouselContent, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPortal, DialogStep, DialogSteps, DialogTitle, DialogTrigger, DocsLayout, DocsSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadio, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FeedbackEmoji, FeedbackForm, FeedbackRating, FileDropzone, FileUploader, FullCommand, HorizontalPricing, type Hotkey, type HotkeyItem, type HotkeyItemOptions, Input, InterfaceSettings, ItemCard, type KeyboardModifiers, Label, type LabelProps, LandingCard, LeadGenerator, LegalTexts, Loading, LoginForm, Logos, type MenuItemType, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem$1 as NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, NewPasswordForm, NoPermission, NotFound, Pagination, PasswordInput, PasswordStrengthIndicator, PhoneInput, type PhoneInputProps, PhoneMockup, PinInput, Popover, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, PricingCard, PricingPlans, Progress, ProgressCircle, Radio, type RadioOptionsTypes, RegisterForm, ResetPasswordForm, ScrollArea, ScrollBar, ScrollIndicator, Select, type SelectOptionProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarGroup, SidebarItem, SimpleTable, Skeleton, Slider, SortButton, StandardNavigationMenuItem, Stats, StopPropagationWrapper, type SubItem$1 as SubItem, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Testimonial, type TextFieldTypes, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, type ToasterToastProps, Tooltip, Usage, type UseFocusWithinOptions, type UseMediaQueryOptions, UserReferralSource, buttonVariants, getHotkeyHandler, getHotkeyMatcher, navigationMenuTriggerStyle, parseHotkey, reducer, toast, useBreakpoint, useClickOutside, useClipboard, useDialogCarousel, useFocusWithin, useIsomorphicEffect, useMeasureDirty, useMediaQuery, useMultiStepDialog, useShortcuts, useTabs, useToast, useWindowSize };
2214
+ export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, AccordionRoot, AccordionTrigger, ActionCard, AdCard, Alert, Announcement, AppCommand, AppLanding, AppLayout, type AppSidebarItemProps, AppStores, AppTabs, AppTopbar, AuthButtons, Avatar, BackToTop, Badge, BadgedComponent, Breadcrumb, type BreadcrumbItemProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CheckEmail, Checkbox, Chip, type ChipColors, type ChipTypes, CodeBlock, CodeConfirmation, ColorPicker, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, type CommandInputProps, CommandItem, CommandList, CommandSeparator, CommandShortcut, ComparingPlans, ContactForm, type ContentRect, Copyrights, Count, DataTable, DestroyableCard, Dialog, DialogBody, DialogCarousel, DialogCarouselContent, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPortal, DialogStep, DialogSteps, DialogTitle, DialogTrigger, DocsLayout, DocsSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadio, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FeedbackEmoji, FeedbackForm, FeedbackRating, FileDropzone, FileUploader, FullCommand, type FullCommandItem, HorizontalPricing, type Hotkey, type HotkeyItem, type HotkeyItemOptions, Input, InterfaceSettings, ItemCard, type KeyboardModifiers, Label, type LabelProps, LandingCard, LeadGenerator, LegalTexts, Loading, LoginForm, Logos, type MenuItemType, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem$1 as NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, NewPasswordForm, NoPermission, NotFound, Pagination, PasswordInput, PasswordStrengthIndicator, PhoneInput, type PhoneInputProps, PhoneMockup, PinInput, Popover, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, PricingCard, PricingPlans, Progress, ProgressCircle, Radio, type RadioOptionsTypes, RegisterForm, ResetPasswordForm, ScrollArea, ScrollBar, ScrollIndicator, Select, type SelectOptionProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarGroup, SidebarItem, SimpleTable, Skeleton, Slider, SortButton, StandardNavigationMenuItem, Stats, StopPropagationWrapper, type SubItem$1 as SubItem, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Testimonial, type TextFieldTypes, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, type ToasterToastProps, Tooltip, Usage, type UseFocusWithinOptions, type UseMediaQueryOptions, UserReferralSource, buttonVariants, getHotkeyHandler, getHotkeyMatcher, navigationMenuTriggerStyle, parseHotkey, reducer, toast, useBreakpoint, useClickOutside, useClipboard, useDialogCarousel, useFocusWithin, useIsomorphicEffect, useMeasureDirty, useMediaQuery, useMultiStepDialog, useShortcuts, useTabs, useToast, useWindowSize };
package/dist/index.js CHANGED
@@ -311,17 +311,19 @@ var Card = React.forwardRef(
311
311
  );
312
312
  }
313
313
  );
314
- var CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
315
- "div",
316
- {
317
- ref,
318
- className: cn(
319
- "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
320
- className
321
- ),
322
- ...props
323
- }
324
- ));
314
+ var CardHeader = React.forwardRef(
315
+ ({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
316
+ "div",
317
+ {
318
+ ref,
319
+ className: cn(
320
+ "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
321
+ className
322
+ ),
323
+ ...props
324
+ }
325
+ ), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
326
+ );
325
327
  var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
326
328
  "h3",
327
329
  {
@@ -3831,7 +3833,12 @@ var CommandShortcut = ({
3831
3833
  }
3832
3834
  );
3833
3835
  };
3834
- var FullCommand = ({ items, direction = "ltr", texts }) => {
3836
+ var FullCommand = ({
3837
+ items,
3838
+ direction = "ltr",
3839
+ texts,
3840
+ onActionClick
3841
+ }) => {
3835
3842
  return /* @__PURE__ */ React27.createElement(
3836
3843
  Command,
3837
3844
  {
@@ -3847,7 +3854,20 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
3847
3854
  /* @__PURE__ */ React27.createElement(CommandList, null, /* @__PURE__ */ React27.createElement(CommandEmpty, null, (texts == null ? void 0 : texts.emptyText) || "No results found."), items.map((item, index) => {
3848
3855
  var _a;
3849
3856
  if (item.type === "group") {
3850
- return /* @__PURE__ */ React27.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React27.createElement(CommandItem, { key: subIndex, onSelect: subItem.action }, /* @__PURE__ */ React27.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }), /* @__PURE__ */ React27.createElement("span", null, subItem.text), subItem.shortcut && /* @__PURE__ */ React27.createElement(CommandShortcut, null, subItem.shortcut))));
3857
+ return /* @__PURE__ */ React27.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React27.createElement(
3858
+ CommandItem,
3859
+ {
3860
+ key: subIndex,
3861
+ onSelect: () => {
3862
+ if (onActionClick)
3863
+ onActionClick();
3864
+ subItem.action();
3865
+ }
3866
+ },
3867
+ /* @__PURE__ */ React27.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }),
3868
+ /* @__PURE__ */ React27.createElement("span", null, subItem.label),
3869
+ subItem.shortcut && /* @__PURE__ */ React27.createElement(CommandShortcut, null, subItem.shortcut)
3870
+ )));
3851
3871
  } else if (item.type === "separator") {
3852
3872
  return /* @__PURE__ */ React27.createElement(CommandSeparator, { key: index });
3853
3873
  }
@@ -3855,14 +3875,18 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
3855
3875
  }))
3856
3876
  );
3857
3877
  };
3858
- var AppCommand = ({ commandProps, dialogProps }) => {
3878
+ var AppCommand = ({
3879
+ commandProps,
3880
+ dialogProps,
3881
+ onActionClick
3882
+ }) => {
3859
3883
  return /* @__PURE__ */ React27.createElement(import_react_dialog.Dialog, { ...dialogProps }, /* @__PURE__ */ React27.createElement(
3860
3884
  DialogContent,
3861
3885
  {
3862
3886
  hideCloseButton: true,
3863
- className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-lg !hawa-min-h-[50%]"
3887
+ className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-l "
3864
3888
  },
3865
- /* @__PURE__ */ React27.createElement(FullCommand, { ...commandProps })
3889
+ /* @__PURE__ */ React27.createElement(FullCommand, { ...commandProps, onActionClick })
3866
3890
  ));
3867
3891
  };
3868
3892
  CommandShortcut.displayName = "CommandShortcut";
package/dist/index.mjs CHANGED
@@ -66,17 +66,19 @@ var Card = React.forwardRef(
66
66
  );
67
67
  }
68
68
  );
69
- var CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
70
- "div",
71
- {
72
- ref,
73
- className: cn(
74
- "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
75
- className
76
- ),
77
- ...props
78
- }
79
- ));
69
+ var CardHeader = React.forwardRef(
70
+ ({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
71
+ "div",
72
+ {
73
+ ref,
74
+ className: cn(
75
+ "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
76
+ className
77
+ ),
78
+ ...props
79
+ }
80
+ ), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
81
+ );
80
82
  var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
81
83
  "h3",
82
84
  {
@@ -3594,7 +3596,12 @@ var CommandShortcut = ({
3594
3596
  }
3595
3597
  );
3596
3598
  };
3597
- var FullCommand = ({ items, direction = "ltr", texts }) => {
3599
+ var FullCommand = ({
3600
+ items,
3601
+ direction = "ltr",
3602
+ texts,
3603
+ onActionClick
3604
+ }) => {
3598
3605
  return /* @__PURE__ */ React27.createElement(
3599
3606
  Command,
3600
3607
  {
@@ -3610,7 +3617,20 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
3610
3617
  /* @__PURE__ */ React27.createElement(CommandList, null, /* @__PURE__ */ React27.createElement(CommandEmpty, null, (texts == null ? void 0 : texts.emptyText) || "No results found."), items.map((item, index) => {
3611
3618
  var _a;
3612
3619
  if (item.type === "group") {
3613
- return /* @__PURE__ */ React27.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React27.createElement(CommandItem, { key: subIndex, onSelect: subItem.action }, /* @__PURE__ */ React27.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }), /* @__PURE__ */ React27.createElement("span", null, subItem.text), subItem.shortcut && /* @__PURE__ */ React27.createElement(CommandShortcut, null, subItem.shortcut))));
3620
+ return /* @__PURE__ */ React27.createElement(CommandGroup, { heading: item.heading, key: index }, (_a = item.items) == null ? void 0 : _a.map((subItem, subIndex) => /* @__PURE__ */ React27.createElement(
3621
+ CommandItem,
3622
+ {
3623
+ key: subIndex,
3624
+ onSelect: () => {
3625
+ if (onActionClick)
3626
+ onActionClick();
3627
+ subItem.action();
3628
+ }
3629
+ },
3630
+ /* @__PURE__ */ React27.createElement(subItem.icon, { className: "hawa-icon hawa-me-2" }),
3631
+ /* @__PURE__ */ React27.createElement("span", null, subItem.label),
3632
+ subItem.shortcut && /* @__PURE__ */ React27.createElement(CommandShortcut, null, subItem.shortcut)
3633
+ )));
3614
3634
  } else if (item.type === "separator") {
3615
3635
  return /* @__PURE__ */ React27.createElement(CommandSeparator, { key: index });
3616
3636
  }
@@ -3618,14 +3638,18 @@ var FullCommand = ({ items, direction = "ltr", texts }) => {
3618
3638
  }))
3619
3639
  );
3620
3640
  };
3621
- var AppCommand = ({ commandProps, dialogProps }) => {
3641
+ var AppCommand = ({
3642
+ commandProps,
3643
+ dialogProps,
3644
+ onActionClick
3645
+ }) => {
3622
3646
  return /* @__PURE__ */ React27.createElement(Dialog2, { ...dialogProps }, /* @__PURE__ */ React27.createElement(
3623
3647
  DialogContent,
3624
3648
  {
3625
3649
  hideCloseButton: true,
3626
- className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-lg !hawa-min-h-[50%]"
3650
+ className: "hawa-overflow-hidden !hawa-p-0 hawa-shadow-l "
3627
3651
  },
3628
- /* @__PURE__ */ React27.createElement(FullCommand, { ...commandProps })
3652
+ /* @__PURE__ */ React27.createElement(FullCommand, { ...commandProps, onActionClick })
3629
3653
  ));
3630
3654
  };
3631
3655
  CommandShortcut.displayName = "CommandShortcut";
@@ -103,17 +103,19 @@ var Card = React.forwardRef(
103
103
  );
104
104
  }
105
105
  );
106
- var CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
107
- "div",
108
- {
109
- ref,
110
- className: cn(
111
- "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
112
- className
113
- ),
114
- ...props
115
- }
116
- ));
106
+ var CardHeader = React.forwardRef(
107
+ ({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
108
+ "div",
109
+ {
110
+ ref,
111
+ className: cn(
112
+ "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
113
+ className
114
+ ),
115
+ ...props
116
+ }
117
+ ), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
118
+ );
117
119
  var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
118
120
  "h3",
119
121
  {
@@ -3,7 +3,7 @@ import {
3
3
  Sheet,
4
4
  SheetContent,
5
5
  SheetTrigger
6
- } from "../chunk-6QIOEUE2.mjs";
6
+ } from "../chunk-ODOCZAWC.mjs";
7
7
  import {
8
8
  Button,
9
9
  Card,
@@ -16,7 +16,7 @@ import {
16
16
  Skeleton,
17
17
  Tooltip,
18
18
  cn
19
- } from "../chunk-NNPNQK6F.mjs";
19
+ } from "../chunk-RNFJAEEU.mjs";
20
20
  import {
21
21
  useBreakpoint,
22
22
  useClickOutside
@@ -78,17 +78,19 @@ var Card = React.forwardRef(
78
78
  );
79
79
  }
80
80
  );
81
- var CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
82
- "div",
83
- {
84
- ref,
85
- className: cn(
86
- "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
87
- className
88
- ),
89
- ...props
90
- }
91
- ));
81
+ var CardHeader = React.forwardRef(
82
+ ({ className, ...props }, ref) => /* @__PURE__ */ React.createElement("div", { className: "hawa-flex hawa-flex-row hawa-justify-between" }, /* @__PURE__ */ React.createElement(
83
+ "div",
84
+ {
85
+ ref,
86
+ className: cn(
87
+ "hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6",
88
+ className
89
+ ),
90
+ ...props
91
+ }
92
+ ), props.actions && /* @__PURE__ */ React.createElement("div", { className: "hawa-p-6" }, props.actions))
93
+ );
92
94
  var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
93
95
  "h3",
94
96
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../layout/stats/index.ts","../../layout/stats/Stats.tsx","../../elements/card/Card.tsx","../../util/index.ts","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["export * from \"./Stats\";\n","import React, { FC } from \"react\";\n\nimport { Card, CardContent, CardTitle } from \"@elements/card\";\nimport { Skeleton } from \"@elements/skeleton\";\n\nimport { cn } from \"@util/index\";\n\ninterface StatTypes extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n color?: string;\n number?: string;\n helperText?: string;\n helperTextColor?: \"default\" | \"positive\" | \"negative\" | \"muted\";\n chart?: any;\n icon?: React.ReactNode;\n variant?:\n | \"default\"\n | \"plain\"\n | \"contained\"\n | \"outlined\"\n | \"brutalist\"\n | \"dropshadow\";\n width?: \"full\" | \"min\" | \"normal\";\n isLoading?: boolean;\n className?: string;\n clickable?: boolean;\n}\nexport const Stats: FC<StatTypes> = ({\n label,\n icon,\n isLoading,\n number,\n helperText,\n helperTextColor = \"default\",\n chart,\n clickable,\n variant = \"default\",\n ...props\n}) => {\n let helperTextColorStyles = {\n default: \"\",\n positive: \"hawa-text-green-600 dark:hawa-text-green-500\",\n negative: \"hawa-text-red-600 dark:hawa-text-red-500\",\n muted: \"hawa-text-muted-foreground\"\n };\n return (\n <Card {...props} clickable={clickable}>\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-justify-between hawa-p-4 hawa-px-6\">\n <CardTitle className=\"hawa-text-sm hawa-font-medium\">{label}</CardTitle>\n {icon && <span>{icon}</span>}\n </div>\n <CardContent className=\"hawa-transition-all\">\n {isLoading ? (\n <Skeleton className=\"hawa-h-8 hawa-w-3/4\" />\n ) : (\n <div className=\"hawa-text-2xl hawa-font-bold\">{number}</div>\n )}\n {helperText && (\n <div\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-transition-all\",\n helperTextColorStyles[helperTextColor],\n helperText\n ? \"hawa-h-4 hawa-opacity-100\"\n : \"hawa-h-0 hawa-opacity-0\"\n )}\n >\n {isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n helperText\n )}\n </div>\n )}\n {chart &&\n (isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n chart\n ))}\n </CardContent>\n </Card>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n));\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold \", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content &&\n \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":"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","names":["import_react","React","React"]}
1
+ {"version":3,"sources":["../../layout/stats/index.ts","../../layout/stats/Stats.tsx","../../elements/card/Card.tsx","../../util/index.ts","../../elements/skeleton/Skeleton.tsx"],"sourcesContent":["export * from \"./Stats\";\n","import React, { FC } from \"react\";\n\nimport { Card, CardContent, CardTitle } from \"@elements/card\";\nimport { Skeleton } from \"@elements/skeleton\";\n\nimport { cn } from \"@util/index\";\n\ninterface StatTypes extends React.HTMLAttributes<HTMLDivElement> {\n label?: string;\n color?: string;\n number?: string;\n helperText?: string;\n helperTextColor?: \"default\" | \"positive\" | \"negative\" | \"muted\";\n chart?: any;\n icon?: React.ReactNode;\n variant?:\n | \"default\"\n | \"plain\"\n | \"contained\"\n | \"outlined\"\n | \"brutalist\"\n | \"dropshadow\";\n width?: \"full\" | \"min\" | \"normal\";\n isLoading?: boolean;\n className?: string;\n clickable?: boolean;\n}\nexport const Stats: FC<StatTypes> = ({\n label,\n icon,\n isLoading,\n number,\n helperText,\n helperTextColor = \"default\",\n chart,\n clickable,\n variant = \"default\",\n ...props\n}) => {\n let helperTextColorStyles = {\n default: \"\",\n positive: \"hawa-text-green-600 dark:hawa-text-green-500\",\n negative: \"hawa-text-red-600 dark:hawa-text-red-500\",\n muted: \"hawa-text-muted-foreground\"\n };\n return (\n <Card {...props} clickable={clickable}>\n <div className=\"hawa-flex hawa-flex-row hawa-items-center hawa-justify-between hawa-p-4 hawa-px-6\">\n <CardTitle className=\"hawa-text-sm hawa-font-medium\">{label}</CardTitle>\n {icon && <span>{icon}</span>}\n </div>\n <CardContent className=\"hawa-transition-all\">\n {isLoading ? (\n <Skeleton className=\"hawa-h-8 hawa-w-3/4\" />\n ) : (\n <div className=\"hawa-text-2xl hawa-font-bold\">{number}</div>\n )}\n {helperText && (\n <div\n className={cn(\n \"hawa-my-0 hawa-text-start hawa-text-xs hawa-transition-all\",\n helperTextColorStyles[helperTextColor],\n helperText\n ? \"hawa-h-4 hawa-opacity-100\"\n : \"hawa-h-0 hawa-opacity-0\"\n )}\n >\n {isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n helperText\n )}\n </div>\n )}\n {chart &&\n (isLoading ? (\n <Skeleton className=\"hawa-mt-2 hawa-h-4 hawa-w-1/2\" />\n ) : (\n chart\n ))}\n </CardContent>\n </Card>\n );\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n clickable?: boolean;\n variant?: \"default\" | \"neoBrutalism\";\n asContainer?: boolean;\n}\n\ntype CardContentProps = {\n headless?: boolean;\n noPadding?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n clickable = false,\n asContainer = false,\n ...props\n },\n ref,\n ) => {\n let variantStyles = {\n default: cn(\n \"hawa-rounded-lg hawa-border hawa-bg-card hawa-text-card-foreground hawa-shadow-sm\",\n clickable &&\n \"hawa-cursor-pointer hawa-transition-all hover:hawa-drop-shadow-md dark:hover:dark-shadow\",\n ),\n neoBrutalism: cn(\n \"neo-brutalism\",\n // \"hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] transition-all uppercase font-mono dark:bg-black font-bold py-2 px-4 rounded border-2 border-primary shadow-color-primary transition-[transform_50ms, box-shadow_50ms]\",\n clickable &&\n \"hawa-cursor-pointer active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active active:translate-x-0.5 active:translate-y-0.5 active:shadow-color-primary-active\",\n ),\n };\n return (\n <div\n ref={ref}\n className={cn(className, !asContainer && variantStyles[variant])}\n {...props}\n />\n );\n },\n);\n\ntype CardHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n actions?: React.ReactNode;\n};\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div className=\"hawa-flex hawa-flex-row hawa-justify-between\">\n <div\n ref={ref}\n className={cn(\n \"hawa-flex hawa-flex-col hawa-space-y-1.5 hawa-p-6\",\n className,\n )}\n {...props}\n />\n {props.actions && <div className=\"hawa-p-6\">{props.actions}</div>}\n </div>\n ),\n);\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"hawa-text-2xl hawa-font-semibold \", className)}\n {...props}\n />\n));\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"hawa-text-sm hawa-text-muted-foreground\", className)}\n {...props}\n />\n));\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ headless, noPadding, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n headless ? \"hawa-pt-6\" : \"hawa-pt-0\",\n className,\n )}\n {...props}\n />\n ),\n);\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { noPadding?: boolean }\n>(({ className, noPadding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n noPadding ? \"hawa-p-0\" : \"hawa-p-6\",\n \"hawa-flex hawa-items-center hawa-pt-0\",\n className,\n )}\n {...props}\n />\n));\n\nCardDescription.displayName = \"CardDescription\";\nCardContent.displayName = \"CardContent\";\nCardHeader.displayName = \"CardHeader\";\nCardFooter.displayName = \"CardFooter\";\nCardTitle.displayName = \"CardTitle\";\nCard.displayName = \"Card\";\n\nexport {\n CardDescription,\n CardContent,\n CardHeader,\n CardFooter,\n CardTitle,\n Card,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import React from \"react\";\n\nimport { cn } from \"@util/index\";\n\ninterface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n animation?: \"none\" | \"pulse\" | \"shimmer\";\n content?: any;\n fade?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nfunction Skeleton({\n className,\n content,\n animation = \"pulse\",\n fade,\n ...props\n}: SkeletonProps) {\n const animationStyles = {\n none: \"hawa-rounded hawa-bg-muted\",\n pulse: \"hawa-animate-pulse hawa-rounded hawa-bg-muted\",\n shimmer:\n \"hawa-space-y-5 hawa-rounded hawa-bg-muted hawa-p-4 hawa-relative before:hawa-absolute before:hawa-inset-0 before:hawa--translate-x-full before:hawa-animate-[shimmer_2s_infinite] before:hawa-bg-gradient-to-r before:hawa-from-transparent before:hawa-via-gray-300/40 dark:before:hawa-via-white/10 before:hawa-to-transparent hawa-isolate hawa-overflow-hidden before:hawa-border-t before:hawa-border-rose-100/10\",\n };\n const fadeStyle = {\n bottom: \"hawa-mask-fade-bottom\",\n top: \"hawa-mask-fade-top\",\n right: \"hawa-mask-fade-right\",\n left: \"hawa-mask-fade-left \",\n };\n\n return (\n <div\n className={cn(\n animationStyles[animation],\n content &&\n \"hawa-flex hawa-flex-col hawa-items-center hawa-justify-center\",\n fade && fadeStyle[fade],\n className,\n )}\n {...props}\n >\n {content && content}\n </div>\n );\n}\n\nexport { Skeleton };\n"],"mappings":"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","names":["import_react","React","React"]}