art-bd-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/components/buttons/button/button.js +43 -0
  3. package/dist/cjs/components/buttons/icon-button/icon-button.js +33 -0
  4. package/dist/cjs/components/buttons/toggle/toggle.js +34 -0
  5. package/dist/cjs/components/buttons/toggle-group/toggle-group.js +31 -0
  6. package/dist/cjs/components/forms/checkbox/checkbox.js +52 -0
  7. package/dist/cjs/components/forms/input/input.js +38 -0
  8. package/dist/cjs/components/forms/label/label.js +38 -0
  9. package/dist/cjs/components/forms/radio/radio.js +22 -0
  10. package/dist/cjs/components/forms/select/select.js +72 -0
  11. package/dist/cjs/components/forms/switch/switch.js +51 -0
  12. package/dist/cjs/components/forms/textarea/textarea.js +37 -0
  13. package/dist/cjs/components/layout/box/box.js +19 -0
  14. package/dist/cjs/components/layout/flex/flex.js +14 -0
  15. package/dist/cjs/components/layout/grid/grid.js +14 -0
  16. package/dist/cjs/components/media/aspect-ratio/aspect-ratio.js +31 -0
  17. package/dist/cjs/components/media/avatar/avatar.js +27 -0
  18. package/dist/cjs/components/media/icon/icon.js +27 -0
  19. package/dist/cjs/components/popovers/dialog/dialog.js +69 -0
  20. package/dist/cjs/components/popovers/drawer/drawer.js +82 -0
  21. package/dist/cjs/components/popovers/popover/popover.js +66 -0
  22. package/dist/cjs/components/popovers/sheet/sheet.js +94 -0
  23. package/dist/cjs/components/popovers/toast/toast.js +75 -0
  24. package/dist/cjs/components/popovers/tooltip/tooltip.js +45 -0
  25. package/dist/cjs/components/typography/heading/heading.js +55 -0
  26. package/dist/cjs/components/typography/text/text.js +57 -0
  27. package/dist/cjs/components/ui/alert/alert.js +34 -0
  28. package/dist/cjs/components/ui/badge/badge.js +31 -0
  29. package/dist/cjs/components/ui/button/button.js +42 -0
  30. package/dist/cjs/components/ui/calendar/calendar.js +24 -0
  31. package/dist/cjs/components/ui/command/command.js +83 -0
  32. package/dist/cjs/components/ui/data-table/components/cell.js +24 -0
  33. package/dist/cjs/components/ui/data-table/components/column-group.js +45 -0
  34. package/dist/cjs/components/ui/data-table/components/table-body.js +47 -0
  35. package/dist/cjs/components/ui/data-table/components/table-fallback.js +28 -0
  36. package/dist/cjs/components/ui/data-table/components/table-head.js +56 -0
  37. package/dist/cjs/components/ui/data-table/components/table-placeholder.js +18 -0
  38. package/dist/cjs/components/ui/data-table/data-table.js +97 -0
  39. package/dist/cjs/components/ui/data-table/hooks/contextHooks.js +75 -0
  40. package/dist/cjs/components/ui/data-table/hooks/useStickyColumns.js +98 -0
  41. package/dist/cjs/components/ui/data-table/utils.js +26 -0
  42. package/dist/cjs/components/ui/date-picker/date-picker.js +15 -0
  43. package/dist/cjs/components/ui/dropdown-menu/dropdown-menu.js +100 -0
  44. package/dist/cjs/components/ui/icon/icon.js +27 -0
  45. package/dist/cjs/components/ui/link/link.js +32 -0
  46. package/dist/cjs/components/ui/pagination/pagination.js +51 -0
  47. package/dist/cjs/components/ui/progress/progress.js +13 -0
  48. package/dist/cjs/components/ui/sidebar/sidebar.js +331 -0
  49. package/dist/cjs/components/ui/table/components/cell.js +30 -0
  50. package/dist/cjs/components/ui/table/components/row.js +25 -0
  51. package/dist/cjs/components/ui/table/components/table-body.js +13 -0
  52. package/dist/cjs/components/ui/table/components/table-caption.js +13 -0
  53. package/dist/cjs/components/ui/table/components/table-footer.js +13 -0
  54. package/dist/cjs/components/ui/table/components/table-head.js +30 -0
  55. package/dist/cjs/components/ui/table/components/table-header.js +13 -0
  56. package/dist/cjs/components/ui/table/table.js +36 -0
  57. package/dist/cjs/components/ui/tabs/tabs.js +47 -0
  58. package/dist/cjs/components/utility/empty-state/empty-state.js +29 -0
  59. package/dist/cjs/components/utility/separator/separator.js +14 -0
  60. package/dist/cjs/components/utility/skeleton/skeleton.js +13 -0
  61. package/dist/cjs/components/utility/status-controller/status-controller.js +12 -0
  62. package/dist/cjs/hooks/use-mobile.js +21 -0
  63. package/dist/cjs/hooks/useControlled.js +19 -0
  64. package/dist/cjs/hooks/useFirstMountState.js +16 -0
  65. package/dist/cjs/hooks/useForkRef.js +23 -0
  66. package/dist/cjs/hooks/useLatest.js +12 -0
  67. package/dist/cjs/hooks/usePrevious.js +14 -0
  68. package/dist/cjs/hooks/useScrollState.js +39 -0
  69. package/dist/cjs/hooks/useStateRef.js +12 -0
  70. package/dist/cjs/hooks/useUpdateEffect.js +17 -0
  71. package/dist/cjs/index.js +237 -0
  72. package/dist/cjs/lib/utils.js +16 -0
  73. package/dist/cjs/styles/responsive.js +84 -0
  74. package/dist/cjs/styles/typography.js +25 -0
  75. package/dist/cjs/utils/addIf.js +5 -0
  76. package/dist/cjs/utils/chain.js +30 -0
  77. package/dist/cjs/utils/getBoundingRect.js +19 -0
  78. package/dist/cjs/utils/mergeProps.js +42 -0
  79. package/dist/cjs/utils/mergeRefs.js +18 -0
  80. package/dist/cjs/utils/toggle.js +16 -0
  81. package/dist/esm/components/buttons/button/button.js +40 -0
  82. package/dist/esm/components/buttons/icon-button/icon-button.js +31 -0
  83. package/dist/esm/components/buttons/toggle/toggle.js +31 -0
  84. package/dist/esm/components/buttons/toggle-group/toggle-group.js +28 -0
  85. package/dist/esm/components/forms/checkbox/checkbox.js +50 -0
  86. package/dist/esm/components/forms/input/input.js +36 -0
  87. package/dist/esm/components/forms/label/label.js +36 -0
  88. package/dist/esm/components/forms/radio/radio.js +19 -0
  89. package/dist/esm/components/forms/select/select.js +61 -0
  90. package/dist/esm/components/forms/switch/switch.js +49 -0
  91. package/dist/esm/components/forms/textarea/textarea.js +35 -0
  92. package/dist/esm/components/layout/box/box.js +17 -0
  93. package/dist/esm/components/layout/flex/flex.js +12 -0
  94. package/dist/esm/components/layout/grid/grid.js +12 -0
  95. package/dist/esm/components/media/aspect-ratio/aspect-ratio.js +10 -0
  96. package/dist/esm/components/media/avatar/avatar.js +23 -0
  97. package/dist/esm/components/media/icon/icon.js +25 -0
  98. package/dist/esm/components/popovers/dialog/dialog.js +60 -0
  99. package/dist/esm/components/popovers/drawer/drawer.js +74 -0
  100. package/dist/esm/components/popovers/popover/popover.js +61 -0
  101. package/dist/esm/components/popovers/sheet/sheet.js +86 -0
  102. package/dist/esm/components/popovers/toast/toast.js +67 -0
  103. package/dist/esm/components/popovers/tooltip/tooltip.js +40 -0
  104. package/dist/esm/components/typography/heading/heading.js +53 -0
  105. package/dist/esm/components/typography/text/text.js +55 -0
  106. package/dist/esm/components/ui/alert/alert.js +30 -0
  107. package/dist/esm/components/ui/badge/badge.js +28 -0
  108. package/dist/esm/components/ui/button/button.js +40 -0
  109. package/dist/esm/components/ui/calendar/calendar.js +22 -0
  110. package/dist/esm/components/ui/command/command.js +73 -0
  111. package/dist/esm/components/ui/data-table/components/cell.js +22 -0
  112. package/dist/esm/components/ui/data-table/components/column-group.js +43 -0
  113. package/dist/esm/components/ui/data-table/components/table-body.js +45 -0
  114. package/dist/esm/components/ui/data-table/components/table-fallback.js +26 -0
  115. package/dist/esm/components/ui/data-table/components/table-head.js +54 -0
  116. package/dist/esm/components/ui/data-table/components/table-placeholder.js +16 -0
  117. package/dist/esm/components/ui/data-table/data-table.js +95 -0
  118. package/dist/esm/components/ui/data-table/hooks/contextHooks.js +60 -0
  119. package/dist/esm/components/ui/data-table/hooks/useStickyColumns.js +96 -0
  120. package/dist/esm/components/ui/data-table/utils.js +22 -0
  121. package/dist/esm/components/ui/date-picker/date-picker.js +13 -0
  122. package/dist/esm/components/ui/dropdown-menu/dropdown-menu.js +84 -0
  123. package/dist/esm/components/ui/icon/icon.js +25 -0
  124. package/dist/esm/components/ui/link/link.js +30 -0
  125. package/dist/esm/components/ui/pagination/pagination.js +43 -0
  126. package/dist/esm/components/ui/progress/progress.js +11 -0
  127. package/dist/esm/components/ui/sidebar/sidebar.js +306 -0
  128. package/dist/esm/components/ui/table/components/cell.js +28 -0
  129. package/dist/esm/components/ui/table/components/row.js +23 -0
  130. package/dist/esm/components/ui/table/components/table-body.js +11 -0
  131. package/dist/esm/components/ui/table/components/table-caption.js +11 -0
  132. package/dist/esm/components/ui/table/components/table-footer.js +11 -0
  133. package/dist/esm/components/ui/table/components/table-head.js +28 -0
  134. package/dist/esm/components/ui/table/components/table-header.js +11 -0
  135. package/dist/esm/components/ui/table/table.js +26 -0
  136. package/dist/esm/components/ui/tabs/tabs.js +23 -0
  137. package/dist/esm/components/utility/empty-state/empty-state.js +27 -0
  138. package/dist/esm/components/utility/separator/separator.js +12 -0
  139. package/dist/esm/components/utility/skeleton/skeleton.js +11 -0
  140. package/dist/esm/components/utility/status-controller/status-controller.js +10 -0
  141. package/dist/esm/hooks/use-mobile.js +19 -0
  142. package/dist/esm/hooks/useControlled.js +17 -0
  143. package/dist/esm/hooks/useFirstMountState.js +14 -0
  144. package/dist/esm/hooks/useForkRef.js +21 -0
  145. package/dist/esm/hooks/useLatest.js +10 -0
  146. package/dist/esm/hooks/usePrevious.js +12 -0
  147. package/dist/esm/hooks/useScrollState.js +37 -0
  148. package/dist/esm/hooks/useStateRef.js +10 -0
  149. package/dist/esm/hooks/useUpdateEffect.js +15 -0
  150. package/dist/esm/index.js +63 -0
  151. package/dist/esm/lib/utils.js +13 -0
  152. package/dist/esm/styles/responsive.js +81 -0
  153. package/dist/esm/styles/typography.js +21 -0
  154. package/dist/esm/utils/addIf.js +3 -0
  155. package/dist/esm/utils/chain.js +28 -0
  156. package/dist/esm/utils/getBoundingRect.js +16 -0
  157. package/dist/esm/utils/mergeProps.js +40 -0
  158. package/dist/esm/utils/mergeRefs.js +15 -0
  159. package/dist/esm/utils/toggle.js +14 -0
  160. package/dist/styles.css +1 -0
  161. package/dist/types/index.d.ts +1418 -0
  162. package/package.json +114 -0
@@ -0,0 +1,74 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Drawer as Drawer$1 } from 'vaul';
4
+ import { cn } from '../../../lib/utils.js';
5
+
6
+ const Drawer = (_a) => {
7
+ var props = __rest(_a, []);
8
+ return jsx(Drawer$1.Root, Object.assign({ "data-slot": "drawer" }, props));
9
+ };
10
+ const DrawerPortal = (_a) => {
11
+ var props = __rest(_a, []);
12
+ return jsx(Drawer$1.Portal, Object.assign({ "data-slot": "drawer-portal" }, props));
13
+ };
14
+ const DrawerClose = (_a) => {
15
+ var props = __rest(_a, []);
16
+ return jsx(Drawer$1.Close, Object.assign({ "data-slot": "drawer-close" }, props));
17
+ };
18
+ const DrawerOverlay = (_a) => {
19
+ var { className } = _a, props = __rest(_a, ["className"]);
20
+ return (jsx(Drawer$1.Overlay, Object.assign({ "data-slot": "drawer-overlay", className: cn("fixed inset-0 z-50 bg-black/50", [
21
+ "data-[state=open]:animate-in",
22
+ "data-[state=open]:fade-in-0",
23
+ "data-[state=closed]:animate-out",
24
+ "data-[state=closed]:fade-out-0",
25
+ ], className) }, props)));
26
+ };
27
+ const DrawerContent = (_a) => {
28
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
29
+ return (jsxs(DrawerPortal, { children: [jsx(DrawerOverlay, {}), jsxs(Drawer$1.Content, Object.assign({ "data-slot": "drawer-content", className: cn("group/drawer-content bg-background fixed z-50 flex h-auto flex-col", [
30
+ "data-[vaul-drawer-direction=top]:inset-x-0",
31
+ "data-[vaul-drawer-direction=top]:top-0",
32
+ "data-[vaul-drawer-direction=top]:mb-24",
33
+ "data-[vaul-drawer-direction=top]:max-h-[80vh]",
34
+ "data-[vaul-drawer-direction=top]:rounded-b-lg",
35
+ "data-[vaul-drawer-direction=top]:border-b",
36
+ ], [
37
+ "data-[vaul-drawer-direction=bottom]:inset-x-0",
38
+ "data-[vaul-drawer-direction=bottom]:bottom-0",
39
+ "data-[vaul-drawer-direction=bottom]:mt-24",
40
+ "data-[vaul-drawer-direction=bottom]:max-h-[80vh]",
41
+ "data-[vaul-drawer-direction=bottom]:rounded-t-lg",
42
+ "data-[vaul-drawer-direction=bottom]:border-t",
43
+ ], [
44
+ "data-[vaul-drawer-direction=right]:inset-y-0",
45
+ "data-[vaul-drawer-direction=right]:right-0",
46
+ "data-[vaul-drawer-direction=right]:w-3/4",
47
+ "data-[vaul-drawer-direction=right]:border-l",
48
+ "data-[vaul-drawer-direction=right]:sm:max-w-sm",
49
+ ], [
50
+ "data-[vaul-drawer-direction=left]:inset-y-0",
51
+ "data-[vaul-drawer-direction=left]:left-0",
52
+ "data-[vaul-drawer-direction=left]:w-3/4",
53
+ "data-[vaul-drawer-direction=left]:border-r",
54
+ "data-[vaul-drawer-direction=left]:sm:max-w-sm",
55
+ ], className) }, props, { children: [jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }), children] }))] }));
56
+ };
57
+ const DrawerHeader = (_a) => {
58
+ var { className } = _a, props = __rest(_a, ["className"]);
59
+ return jsx("div", Object.assign({ "data-slot": "drawer-header", className: cn("flex flex-col gap-1.5 p-4", className) }, props));
60
+ };
61
+ const DrawerFooter = (_a) => {
62
+ var { className } = _a, props = __rest(_a, ["className"]);
63
+ return jsx("div", Object.assign({ "data-slot": "drawer-footer", className: cn("mt-auto flex flex-col gap-2 p-4", className) }, props));
64
+ };
65
+ const DrawerTitle = (_a) => {
66
+ var { className } = _a, props = __rest(_a, ["className"]);
67
+ return (jsx(Drawer$1.Title, Object.assign({ "data-slot": "drawer-title", className: cn("text-foreground font-semibold", className) }, props)));
68
+ };
69
+ const DrawerDescription = (_a) => {
70
+ var { className } = _a, props = __rest(_a, ["className"]);
71
+ return (jsx(Drawer$1.Description, Object.assign({ "data-slot": "drawer-description", className: cn("text-muted-foreground text-sm", className) }, props)));
72
+ };
73
+
74
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle };
@@ -0,0 +1,61 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Root, Trigger, Portal, Content, Close, Arrow, Anchor } from '@radix-ui/react-popover';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import { Icon } from '../../media/icon/icon.js';
7
+
8
+ const popoverContentVariants = cva([
9
+ "bg-popover text-popover-foreground z-50 w-72 rounded-md border p-4 shadow-md outline-hidden",
10
+ "origin-(--radix-popover-content-transform-origin)",
11
+ ], {
12
+ variants: {
13
+ size: {
14
+ default: "w-72",
15
+ sm: "w-56",
16
+ lg: "w-96",
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ size: "default",
21
+ },
22
+ });
23
+ const popoverCloseVariants = cva([
24
+ "ring-offset-background rounded-xs opacity-70 hover:opacity-100 transition-opacity",
25
+ "disabled:pointer-events-none",
26
+ "absolute top-4 right-4",
27
+ "focus:ring-ring focus:ring-2 focus:ring-offset-2 focus:outline-hidden",
28
+ ]);
29
+ const Popover = (_a) => {
30
+ var props = __rest(_a, []);
31
+ return jsx(Root, Object.assign({ "data-slot": "popover" }, props));
32
+ };
33
+ const PopoverTrigger = (_a) => {
34
+ var props = __rest(_a, []);
35
+ return jsx(Trigger, Object.assign({ "data-slot": "popover-trigger" }, props));
36
+ };
37
+ const PopoverContent = (_a) => {
38
+ var { className, align = "center", arrow = false, withClose = false, sideOffset = 4, size, children } = _a, props = __rest(_a, ["className", "align", "arrow", "withClose", "sideOffset", "size", "children"]);
39
+ return (jsx(Portal, { children: jsxs(Content, Object.assign({ "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn(popoverContentVariants({ size }), [
40
+ "data-[state=open]:animate-in",
41
+ "data-[state=open]:fade-in-0",
42
+ "data-[state=open]:zoom-in-95",
43
+ "data-[state=closed]:animate-out",
44
+ "data-[state=closed]:fade-out-0",
45
+ "data-[state=closed]:zoom-out-95",
46
+ "data-[side=top]:slide-in-from-bottom-2",
47
+ "data-[side=right]:slide-in-from-left-2",
48
+ "data-[side=bottom]:slide-in-from-top-2",
49
+ "data-[side=left]:slide-in-from-right-2",
50
+ ], className) }, props, { children: [children, withClose && (jsx(Close, { className: cn(popoverCloseVariants), "aria-label": "Close", children: jsx(Icon, { name: "x", size: 16 }) })), arrow && jsx(Arrow, { className: "fill-popover" })] })) }));
51
+ };
52
+ const PopoverAnchor = (_a) => {
53
+ var props = __rest(_a, []);
54
+ return jsx(Anchor, Object.assign({ "data-slot": "popover-anchor" }, props));
55
+ };
56
+ PopoverTrigger.displayName = "PopoverTrigger";
57
+ PopoverContent.displayName = "PopoverContent";
58
+ PopoverAnchor.displayName = "PopoverAnchor";
59
+ Popover.displayName = "Popover";
60
+
61
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
@@ -0,0 +1,86 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Root, Close, Content, Title, Description, Portal, Overlay } from '@radix-ui/react-dialog';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import { Icon } from '../../media/icon/icon.js';
7
+
8
+ const Sheet = (_a) => {
9
+ var props = __rest(_a, []);
10
+ return jsx(Root, Object.assign({ "data-slot": "sheet" }, props));
11
+ };
12
+ const SheetPortal = (_a) => {
13
+ var props = __rest(_a, []);
14
+ return jsx(Portal, Object.assign({ "data-slot": "sheet-portal" }, props));
15
+ };
16
+ const SheetClose = (_a) => {
17
+ var props = __rest(_a, []);
18
+ return jsx(Close, Object.assign({ "data-slot": "sheet-close" }, props));
19
+ };
20
+ const SheetOverlay = (_a) => {
21
+ var { className } = _a, props = __rest(_a, ["className"]);
22
+ return (jsx(Overlay, Object.assign({ "data-slot": "sheet-overlay", className: cn("fixed inset-0 z-50 bg-black/50", [
23
+ "data-[state=open]:animate-in",
24
+ "data-[state=open]:fade-in-0",
25
+ "data-[state=closed]:animate-out",
26
+ "data-[state=closed]:fade-out-0",
27
+ ], className) }, props)));
28
+ };
29
+ const contentVariants = cva([
30
+ "bg-background fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out",
31
+ "data-[state=open]:animate-in data-[state=open]:duration-500",
32
+ "data-[state=closed]:animate-out data-[state=closed]:duration-300",
33
+ ], {
34
+ variants: {
35
+ side: {
36
+ top: [
37
+ "inset-x-0 top-0 h-auto border-b",
38
+ "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
39
+ ],
40
+ right: [
41
+ "inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
42
+ "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right",
43
+ ],
44
+ bottom: [
45
+ "inset-x-0 bottom-0 h-auto border-t",
46
+ "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
47
+ ],
48
+ left: [
49
+ "inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
50
+ "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left",
51
+ ],
52
+ },
53
+ },
54
+ defaultVariants: {
55
+ side: "right",
56
+ },
57
+ });
58
+ const closeVariants = cva([
59
+ "ring-offset-background absolute top-4 right-4 rounded-xs",
60
+ "opacity-70 transition-opacity hover:opacity-100",
61
+ "disabled:pointer-events-none",
62
+ "data-[state=open]:bg-secondary",
63
+ "focus:ring-ring focus:ring-2 focus:ring-offset-2 focus:outline-hidden",
64
+ ]);
65
+ const SheetContent = (_a) => {
66
+ var { className, children, side = "right" } = _a, props = __rest(_a, ["className", "children", "side"]);
67
+ return (jsxs(SheetPortal, { children: [jsx(SheetOverlay, {}), jsxs(Content, Object.assign({ "data-slot": "sheet-content", className: cn(contentVariants({ side }), className) }, props, { children: [children, jsxs(Close, { className: closeVariants(), children: [jsx(Icon, { name: "x", size: 16 }), jsx("span", { className: "sr-only", children: "Close" })] })] }))] }));
68
+ };
69
+ const SheetHeader = (_a) => {
70
+ var { className } = _a, props = __rest(_a, ["className"]);
71
+ return jsx("div", Object.assign({ "data-slot": "sheet-header", className: cn("flex flex-col gap-1.5 p-4", className) }, props));
72
+ };
73
+ const SheetFooter = (_a) => {
74
+ var { className } = _a, props = __rest(_a, ["className"]);
75
+ return jsx("div", Object.assign({ "data-slot": "sheet-footer", className: cn("mt-auto flex flex-col gap-2 p-4", className) }, props));
76
+ };
77
+ const SheetTitle = (_a) => {
78
+ var { className } = _a, props = __rest(_a, ["className"]);
79
+ return jsx(Title, Object.assign({ "data-slot": "sheet-title", className: cn("text-foreground font-semibold", className) }, props));
80
+ };
81
+ const SheetDescription = (_a) => {
82
+ var { className } = _a, props = __rest(_a, ["className"]);
83
+ return (jsx(Description, Object.assign({ "data-slot": "sheet-description", className: cn("text-muted-foreground text-sm", className) }, props)));
84
+ };
85
+
86
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle };
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import { __rest } from 'tslib';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { forwardRef } from 'react';
5
+ import { Viewport, Root, Action, Close, Title, Description, Provider } from '@radix-ui/react-toast';
6
+ import { cva } from 'class-variance-authority';
7
+ import { cn } from '../../../lib/utils.js';
8
+ import { Icon } from '../../media/icon/icon.js';
9
+
10
+ const ToastProvider = Provider;
11
+ const ToastViewport = forwardRef((_a, ref) => {
12
+ var { className } = _a, props = __rest(_a, ["className"]);
13
+ return (jsx(Viewport, Object.assign({ ref: ref, "data-slot": "toast-viewport", className: cn("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4", "sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]", className) }, props)));
14
+ });
15
+ ToastViewport.displayName = "ToastViewport";
16
+ const toastVariants = cva("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all", {
17
+ variants: {
18
+ variant: {
19
+ default: "border bg-background text-foreground",
20
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground",
21
+ },
22
+ },
23
+ defaultVariants: {
24
+ variant: "default",
25
+ },
26
+ });
27
+ const Toast = forwardRef((_a, ref) => {
28
+ var { className, variant } = _a, props = __rest(_a, ["className", "variant"]);
29
+ return (jsx(Root, Object.assign({ ref: ref, "data-slot": "toast", className: cn(toastVariants({ variant }),
30
+ // Animation states
31
+ "data-[swipe=cancel]:translate-x-0", "data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)]", "data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)]", "data-[swipe=move]:transition-none",
32
+ // Open/Close animations
33
+ "data-[state=open]:animate-in", "data-[state=closed]:animate-out", "data-[swipe=end]:animate-out", "data-[state=closed]:fade-out-80", "data-[state=closed]:slide-out-to-right-full", "data-[state=open]:slide-in-from-top-full", "data-[state=open]:sm:slide-in-from-bottom-full", className) }, props)));
34
+ });
35
+ Toast.displayName = "Toast";
36
+ const ToastAction = forwardRef((_a, ref) => {
37
+ var { className } = _a, props = __rest(_a, ["className"]);
38
+ return (jsx(Action, Object.assign({ ref: ref, "data-slot": "toast-action", className: cn(
39
+ // Base styles
40
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium", "transition-colors hover:bg-secondary", "focus:outline-none focus:ring-1 focus:ring-ring", "disabled:pointer-events-none disabled:opacity-50",
41
+ // Destructive variant styles
42
+ "group-[.destructive]:border-muted/40", "group-[.destructive]:hover:border-destructive/30", "group-[.destructive]:hover:bg-destructive", "group-[.destructive]:hover:text-destructive-foreground", "group-[.destructive]:focus:ring-destructive", className) }, props)));
43
+ });
44
+ ToastAction.displayName = "ToastAction";
45
+ const ToastClose = forwardRef((_a, ref) => {
46
+ var { className } = _a, props = __rest(_a, ["className"]);
47
+ return (jsx(Close, Object.assign({ ref: ref, "data-slot": "toast-close", className: cn(
48
+ // Position and layout
49
+ "absolute right-1 top-1 rounded-md p-1",
50
+ // Text and opacity
51
+ "text-foreground/50 opacity-0 transition-opacity", "hover:text-foreground", "focus:opacity-100 focus:outline-none focus:ring-1", "group-hover:opacity-100",
52
+ // Destructive variant styles
53
+ "group-[.destructive]:text-red-300", "group-[.destructive]:hover:text-red-50", "group-[.destructive]:focus:ring-red-400", "group-[.destructive]:focus:ring-offset-red-600", className), "toast-close": "" }, props, { children: jsx(Icon, { name: "x", className: "size-4" }) })));
54
+ });
55
+ ToastClose.displayName = "ToastClose";
56
+ const ToastTitle = forwardRef((_a, ref) => {
57
+ var { className } = _a, props = __rest(_a, ["className"]);
58
+ return (jsx(Title, Object.assign({ ref: ref, "data-slot": "toast-title", className: cn("text-sm font-semibold", "[&+div]:text-xs", className) }, props)));
59
+ });
60
+ ToastTitle.displayName = "ToastTitle";
61
+ const ToastDescription = forwardRef((_a, ref) => {
62
+ var { className } = _a, props = __rest(_a, ["className"]);
63
+ return (jsx(Description, Object.assign({ ref: ref, "data-slot": "toast-description", className: cn("text-sm opacity-90", className) }, props)));
64
+ });
65
+ ToastDescription.displayName = "ToastDescription";
66
+
67
+ export { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport };
@@ -0,0 +1,40 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Root, Trigger, Portal, Content, Arrow, Provider } from '@radix-ui/react-tooltip';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../../../lib/utils.js';
6
+
7
+ const TooltipProvider = (_a) => {
8
+ var { delayDuration = 0 } = _a, props = __rest(_a, ["delayDuration"]);
9
+ return jsx(Provider, Object.assign({ "data-slot": "tooltip-provider", delayDuration: delayDuration }, props));
10
+ };
11
+ const TooltipTrigger = (_a) => {
12
+ var props = __rest(_a, []);
13
+ return jsx(Trigger, Object.assign({ "data-slot": "tooltip-trigger" }, props));
14
+ };
15
+ const contentVariants = cva([
16
+ "bg-primary text-primary-foreground w-fit px-3 py-1.5 rounded-md text-xs text-balance",
17
+ "animate-in fade-in-0 zoom-in-95 z-50",
18
+ "data-[state=closed]:animate-out",
19
+ "data-[state=closed]:fade-out-0",
20
+ "data-[state=closed]:zoom-out-95",
21
+ "data-[side=top]:slide-in-from-bottom-2",
22
+ "data-[side=right]:slide-in-from-left-2",
23
+ "data-[side=bottom]:slide-in-from-top-2",
24
+ "data-[side=left]:slide-in-from-right-2",
25
+ "origin-(--radix-tooltip-content-transform-origin)",
26
+ ]);
27
+ const TooltipContent = (_a) => {
28
+ var { className, sideOffset = 0, arrow = false, children } = _a, props = __rest(_a, ["className", "sideOffset", "arrow", "children"]);
29
+ return (jsx(Portal, { "data-slot": "tooltip-portal", children: jsxs(Content, Object.assign({ "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn(contentVariants(), className) }, props, { children: [children, arrow && (jsx(Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" }))] })) }));
30
+ };
31
+ const Tooltip = (_a) => {
32
+ var { skipDelayDuration, delayDuration, disableHoverableContent } = _a, props = __rest(_a, ["skipDelayDuration", "delayDuration", "disableHoverableContent"]);
33
+ return (jsx(TooltipProvider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, skipDelayDuration: skipDelayDuration, disableHoverableContent: disableHoverableContent, children: jsx(Root, Object.assign({ "data-slot": "tooltip" }, props)) }));
34
+ };
35
+ Tooltip.displayName = "Tooltip";
36
+ TooltipContent.displayName = "TooltipContent";
37
+ TooltipTrigger.displayName = "TooltipTrigger";
38
+ TooltipProvider.displayName = "TooltipProvider";
39
+
40
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,53 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { Slot } from '@radix-ui/react-slot';
5
+ import { cva } from 'class-variance-authority';
6
+ import { cn } from '../../../lib/utils.js';
7
+ import { textColors, textAlignment, fontWeights } from '../../../styles/typography.js';
8
+
9
+ const headingVariants = cva("tracking-tight", {
10
+ variants: {
11
+ level: {
12
+ 1: "text-2xl leading-[1.1] sm:text-3xl md:text-4xl lg:text-5xl",
13
+ 2: "text-xl leading-[1.1] sm:text-2xl md:text-3xl lg:text-4xl",
14
+ 3: "text-lg leading-[1.1] sm:text-xl md:text-2xl lg:text-3xl",
15
+ 4: "text-base leading-[1.1] sm:text-lg md:text-xl lg:text-2xl",
16
+ 5: "text-sm leading-[1.1] sm:text-base md:text-lg lg:text-xl",
17
+ 6: "text-xs leading-[1.1] sm:text-sm md:text-base lg:text-lg",
18
+ },
19
+ weight: {
20
+ light: fontWeights.light,
21
+ regular: fontWeights.regular,
22
+ medium: fontWeights.medium,
23
+ bold: fontWeights.bold,
24
+ },
25
+ align: {
26
+ left: textAlignment.left,
27
+ center: textAlignment.center,
28
+ right: textAlignment.right,
29
+ },
30
+ color: {
31
+ default: textColors.default,
32
+ muted: textColors.muted,
33
+ primary: textColors.primary,
34
+ secondary: textColors.secondary,
35
+ accent: textColors.accent,
36
+ destructive: textColors.destructive,
37
+ },
38
+ },
39
+ defaultVariants: {
40
+ level: 1,
41
+ weight: "bold",
42
+ align: "left",
43
+ color: "default",
44
+ },
45
+ });
46
+ const Heading = forwardRef((_a, ref) => {
47
+ var { level = 1, weight, align, color, asChild = false, className } = _a, props = __rest(_a, ["level", "weight", "align", "color", "asChild", "className"]);
48
+ const Tag = asChild ? Slot : `h${level}`;
49
+ return (jsx(Tag, Object.assign({ ref: ref, "data-slot": "heading", className: cn(headingVariants({ level, weight, align, color }), className) }, props)));
50
+ });
51
+ Heading.displayName = "Heading";
52
+
53
+ export { Heading };
@@ -0,0 +1,55 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { Slot } from '@radix-ui/react-slot';
5
+ import { cva } from 'class-variance-authority';
6
+ import { cn } from '../../../lib/utils.js';
7
+ import { textColors, textAlignment, fontWeights } from '../../../styles/typography.js';
8
+
9
+ const textVariants = cva("", {
10
+ variants: {
11
+ type: {
12
+ body: "text-sm leading-5 sm:text-base md:text-lg lg:text-xl",
13
+ small: "text-xs leading-4 sm:text-sm md:text-base lg:text-lg",
14
+ tiny: "text-[10px] leading-3 sm:text-xs md:text-sm lg:text-base",
15
+ },
16
+ weight: {
17
+ light: fontWeights.light,
18
+ regular: fontWeights.regular,
19
+ medium: fontWeights.medium,
20
+ bold: fontWeights.bold,
21
+ },
22
+ align: {
23
+ left: textAlignment.left,
24
+ center: textAlignment.center,
25
+ right: textAlignment.right,
26
+ },
27
+ color: {
28
+ default: textColors.default,
29
+ muted: textColors.muted,
30
+ primary: textColors.primary,
31
+ secondary: textColors.secondary,
32
+ accent: textColors.accent,
33
+ destructive: textColors.destructive,
34
+ },
35
+ truncate: {
36
+ true: "truncate",
37
+ false: "",
38
+ },
39
+ },
40
+ defaultVariants: {
41
+ type: "body",
42
+ weight: "regular",
43
+ align: "left",
44
+ color: "default",
45
+ truncate: false,
46
+ },
47
+ });
48
+ const Text = forwardRef((_a, ref) => {
49
+ var { asChild = false, className } = _a, props = __rest(_a, ["asChild", "className"]);
50
+ const Comp = asChild ? Slot : "span";
51
+ return jsx(Comp, Object.assign({ ref: ref, "data-slot": "text", className: cn(textVariants(props), className) }, props));
52
+ });
53
+ Text.displayName = "Text";
54
+
55
+ export { Text };
@@ -0,0 +1,30 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../../../lib/utils.js';
5
+
6
+ const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
7
+ variants: {
8
+ variant: {
9
+ default: "bg-card text-card-foreground",
10
+ destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",
11
+ },
12
+ },
13
+ defaultVariants: {
14
+ variant: "default",
15
+ },
16
+ });
17
+ function Alert(_a) {
18
+ var { className, variant } = _a, props = __rest(_a, ["className", "variant"]);
19
+ return jsx("div", Object.assign({ "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className) }, props));
20
+ }
21
+ function AlertTitle(_a) {
22
+ var { className } = _a, props = __rest(_a, ["className"]);
23
+ return (jsx("div", Object.assign({ "data-slot": "alert-title", className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className) }, props)));
24
+ }
25
+ function AlertDescription(_a) {
26
+ var { className } = _a, props = __rest(_a, ["className"]);
27
+ return (jsx("div", Object.assign({ "data-slot": "alert-description", className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className) }, props)));
28
+ }
29
+
30
+ export { Alert, AlertDescription, AlertTitle };
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { __rest } from 'tslib';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { Slot } from '@radix-ui/react-slot';
5
+ import { cva } from 'class-variance-authority';
6
+ import { cn } from '../../../lib/utils.js';
7
+
8
+ const badgeVariants = cva("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", {
9
+ variants: {
10
+ variant: {
11
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
12
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
13
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
14
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ variant: "default",
19
+ },
20
+ });
21
+ const Badge = (_a) => {
22
+ var { className, variant, asChild = false } = _a, props = __rest(_a, ["className", "variant", "asChild"]);
23
+ const Comp = asChild ? Slot : "span";
24
+ return jsx(Comp, Object.assign({ "data-slot": "badge", className: cn(badgeVariants({ variant }), className) }, props));
25
+ };
26
+ Badge.displayName = "Badge";
27
+
28
+ export { Badge, badgeVariants };
@@ -0,0 +1,40 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { Slot, Slottable } from '@radix-ui/react-slot';
5
+ import { cva } from 'class-variance-authority';
6
+ import { cn } from '../../../lib/utils.js';
7
+ import { Icon } from '../icon/icon.js';
8
+
9
+ const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
13
+ destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
14
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
15
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
16
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
17
+ link: "text-primary underline-offset-4 hover:underline",
18
+ },
19
+ size: {
20
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
21
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
22
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
23
+ icon: "size-9",
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ variant: "default",
28
+ size: "default",
29
+ },
30
+ });
31
+ const Button = forwardRef((_a, ref) => {
32
+ var { className, variant, size, asChild = false, loading, children, leftIcon, rightIcon } = _a, props = __rest(_a, ["className", "variant", "size", "asChild", "loading", "children", "leftIcon", "rightIcon"]);
33
+ const Comp = asChild ? Slot : "button";
34
+ const leftElement = loading ? (jsx(Icon, { name: "loader-2", className: "animate-spin" })) : (leftIcon && jsx(Icon, { name: leftIcon }));
35
+ const rightElement = rightIcon && jsx(Icon, { name: rightIcon });
36
+ return (jsxs(Comp, Object.assign({ ref: ref, "data-slot": "button", className: cn(buttonVariants({ variant, size }), className) }, props, { children: [leftElement, jsx(Slottable, { children: children }), rightElement] })));
37
+ });
38
+ Button.displayName = "Button";
39
+
40
+ export { Button };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { __rest } from 'tslib';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import { DayPicker } from 'react-day-picker';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import { Icon } from '../../media/icon/icon.js';
7
+ import { buttonVariants } from '../../buttons/button/button.js';
8
+
9
+ function Calendar(_a) {
10
+ var { className, classNames, showOutsideDays = true } = _a, props = __rest(_a, ["className", "classNames", "showOutsideDays"]);
11
+ return (jsx(DayPicker, Object.assign({ showOutsideDays: showOutsideDays, className: cn("p-3", className), classNames: Object.assign({ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0", month: "space-y-4", caption: "flex justify-center pt-1 relative items-center", caption_label: "text-sm font-medium", nav: "space-x-1 flex items-center", nav_button: cn(buttonVariants({ variant: "outline" }), "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"), nav_button_previous: "absolute left-1", nav_button_next: "absolute right-1", table: "w-full border-collapse space-y-1", head_row: "flex", head_cell: "text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]", row: "flex w-full mt-2", cell: cn("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md", props.mode === "range"
12
+ ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md"
13
+ : "[&:has([aria-selected])]:rounded-md"), day: cn(buttonVariants({ variant: "ghost" }), "h-8 w-8 p-0 font-normal aria-selected:opacity-100"), day_range_start: "day-range-start", day_range_end: "day-range-end", day_selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground", day_today: "bg-accent text-accent-foreground", day_outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground", day_disabled: "text-muted-foreground opacity-50", day_range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground", day_hidden: "invisible" }, classNames), components: {
14
+ Chevron: (_a) => {
15
+ var { className, orientation } = _a, props = __rest(_a, ["className", "orientation"]);
16
+ return (jsx(Icon, Object.assign({ name: `chevron-${orientation}`, className: cn("h-4 w-4", className) }, props)));
17
+ },
18
+ } }, props)));
19
+ }
20
+ Calendar.displayName = "Calendar";
21
+
22
+ export { Calendar };
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import { __rest } from 'tslib';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { Command as Command$1 } from 'cmdk';
5
+ import { cn } from '../../../lib/utils.js';
6
+ import { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogContent } from '../../popovers/dialog/dialog.js';
7
+ import { Icon } from '../../media/icon/icon.js';
8
+
9
+ const Command = (_a) => {
10
+ var { className } = _a, props = __rest(_a, ["className"]);
11
+ return (jsx(Command$1, Object.assign({ "data-slot": "command", className: cn("flex h-full w-full flex-col overflow-hidden rounded-md", "bg-popover text-popover-foreground", className) }, props)));
12
+ };
13
+ Command.displayName = "Command";
14
+ const CommandDialog = (_a) => {
15
+ var { title = "Command Palette", description = "Search for a command to run...", children } = _a, props = __rest(_a, ["title", "description", "children"]);
16
+ return (jsxs(Dialog, Object.assign({}, props, { children: [jsxs(DialogHeader, { className: "sr-only", children: [jsx(DialogTitle, { children: title }), jsx(DialogDescription, { children: description })] }), jsx(DialogContent, { className: "overflow-hidden p-0", children: jsx(Command, { className: cn(
17
+ // Group heading styles
18
+ "[&_[cmdk-group-heading]]:text-muted-foreground", "[&_[cmdk-group-heading]]:px-2", "[&_[cmdk-group-heading]]:font-medium",
19
+ // Group styles
20
+ "[&_[cmdk-group]]:px-2", "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0",
21
+ // Input wrapper styles
22
+ "**:data-[slot=command-input-wrapper]:h-12", "[&_[cmdk-input-wrapper]_svg]:h-5", "[&_[cmdk-input-wrapper]_svg]:w-5",
23
+ // Input styles
24
+ "[&_[cmdk-input]]:h-12",
25
+ // Item styles
26
+ "[&_[cmdk-item]]:px-2", "[&_[cmdk-item]]:py-3", "[&_[cmdk-item]_svg]:h-5", "[&_[cmdk-item]_svg]:w-5"), children: children }) })] })));
27
+ };
28
+ CommandDialog.displayName = "CommandDialog";
29
+ const CommandInput = (_a) => {
30
+ var { className } = _a, props = __rest(_a, ["className"]);
31
+ return (jsxs("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3", children: [jsx(Icon, { name: "search", className: "size-4 shrink-0 opacity-50" }), jsx(Command$1.Input, Object.assign({ "data-slot": "command-input", className: cn("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden", "placeholder:text-muted-foreground", "disabled:cursor-not-allowed disabled:opacity-50", className) }, props))] }));
32
+ };
33
+ CommandInput.displayName = "CommandInput";
34
+ const CommandList = (_a) => {
35
+ var { className } = _a, props = __rest(_a, ["className"]);
36
+ return (jsx(Command$1.List, Object.assign({ "data-slot": "command-list", className: cn("max-h-[300px] overflow-x-hidden overflow-y-auto", "scroll-py-1", className) }, props)));
37
+ };
38
+ CommandList.displayName = "CommandList";
39
+ const CommandEmpty = (_a) => {
40
+ var props = __rest(_a, []);
41
+ return jsx(Command$1.Empty, Object.assign({ "data-slot": "command-empty", className: "py-6 text-center text-sm" }, props));
42
+ };
43
+ CommandEmpty.displayName = "CommandEmpty";
44
+ const CommandGroup = (_a) => {
45
+ var { className } = _a, props = __rest(_a, ["className"]);
46
+ return (jsx(Command$1.Group, Object.assign({ "data-slot": "command-group", className: cn("overflow-hidden p-1", "text-foreground",
47
+ // Group heading styles
48
+ "[&_[cmdk-group-heading]]:text-muted-foreground", "[&_[cmdk-group-heading]]:px-2", "[&_[cmdk-group-heading]]:py-1.5", "[&_[cmdk-group-heading]]:text-xs", "[&_[cmdk-group-heading]]:font-medium", className) }, props)));
49
+ };
50
+ CommandGroup.displayName = "CommandGroup";
51
+ const CommandSeparator = (_a) => {
52
+ var { className } = _a, props = __rest(_a, ["className"]);
53
+ return (jsx(Command$1.Separator, Object.assign({ "data-slot": "command-separator", className: cn("bg-border -mx-1 h-px", className) }, props)));
54
+ };
55
+ CommandSeparator.displayName = "CommandSeparator";
56
+ const CommandItem = (_a) => {
57
+ var { className } = _a, props = __rest(_a, ["className"]);
58
+ return (jsx(Command$1.Item, Object.assign({ "data-slot": "command-item", className: cn(
59
+ // Layout
60
+ "relative flex items-center gap-2 rounded-sm px-2 py-1.5", "text-sm outline-hidden select-none",
61
+ // States
62
+ "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",
63
+ // Icon styles
64
+ "[&_svg:not([class*='text-'])]:text-muted-foreground", "[&_svg]:pointer-events-none", "[&_svg]:shrink-0", "[&_svg:not([class*='size-'])]:size-4", className) }, props)));
65
+ };
66
+ CommandItem.displayName = "CommandItem";
67
+ const CommandShortcut = (_a) => {
68
+ var { className } = _a, props = __rest(_a, ["className"]);
69
+ return (jsx("span", Object.assign({ "data-slot": "command-shortcut", className: cn("ml-auto text-xs tracking-widest", "text-muted-foreground", className) }, props)));
70
+ };
71
+ CommandShortcut.displayName = "CommandShortcut";
72
+
73
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };