@coston/ui 0.1.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 (241) hide show
  1. package/README.md +87 -0
  2. package/dist/button-BEd6_-lL.d.ts +16 -0
  3. package/dist/button-BEd6_-lL.d.ts.map +1 -0
  4. package/dist/button-CJvoztqg.js +46 -0
  5. package/dist/button-CJvoztqg.js.map +1 -0
  6. package/dist/components/accordion.d.ts +11 -0
  7. package/dist/components/accordion.d.ts.map +1 -0
  8. package/dist/components/accordion.js +38 -0
  9. package/dist/components/accordion.js.map +1 -0
  10. package/dist/components/alert-dialog.d.ts +31 -0
  11. package/dist/components/alert-dialog.d.ts.map +1 -0
  12. package/dist/components/alert-dialog.js +60 -0
  13. package/dist/components/alert-dialog.js.map +1 -0
  14. package/dist/components/alert.d.ts +13 -0
  15. package/dist/components/alert.d.ts.map +1 -0
  16. package/dist/components/alert.js +36 -0
  17. package/dist/components/alert.js.map +1 -0
  18. package/dist/components/aspect-ratio.d.ts +8 -0
  19. package/dist/components/aspect-ratio.d.ts.map +1 -0
  20. package/dist/components/aspect-ratio.js +8 -0
  21. package/dist/components/aspect-ratio.js.map +1 -0
  22. package/dist/components/avatar.d.ts +10 -0
  23. package/dist/components/avatar.d.ts.map +1 -0
  24. package/dist/components/avatar.js +28 -0
  25. package/dist/components/avatar.js.map +1 -0
  26. package/dist/components/badge.d.ts +18 -0
  27. package/dist/components/badge.d.ts.map +1 -0
  28. package/dist/components/badge.js +25 -0
  29. package/dist/components/badge.js.map +1 -0
  30. package/dist/components/breadcrumb.d.ts +31 -0
  31. package/dist/components/breadcrumb.d.ts.map +1 -0
  32. package/dist/components/breadcrumb.js +66 -0
  33. package/dist/components/breadcrumb.js.map +1 -0
  34. package/dist/components/button.d.ts +2 -0
  35. package/dist/components/button.js +4 -0
  36. package/dist/components/calendar.d.ts +17 -0
  37. package/dist/components/calendar.d.ts.map +1 -0
  38. package/dist/components/calendar.js +46 -0
  39. package/dist/components/calendar.js.map +1 -0
  40. package/dist/components/card.d.ts +12 -0
  41. package/dist/components/card.d.ts.map +1 -0
  42. package/dist/components/card.js +46 -0
  43. package/dist/components/card.js.map +1 -0
  44. package/dist/components/carousel.d.ts +23 -0
  45. package/dist/components/carousel.d.ts.map +1 -0
  46. package/dist/components/carousel.js +139 -0
  47. package/dist/components/carousel.js.map +1 -0
  48. package/dist/components/chart.d.ts +32 -0
  49. package/dist/components/chart.d.ts.map +1 -0
  50. package/dist/components/chart.js +115 -0
  51. package/dist/components/chart.js.map +1 -0
  52. package/dist/components/checkbox.d.ts +8 -0
  53. package/dist/components/checkbox.d.ts.map +1 -0
  54. package/dist/components/checkbox.js +21 -0
  55. package/dist/components/checkbox.js.map +1 -0
  56. package/dist/components/collapsible.d.ts +10 -0
  57. package/dist/components/collapsible.d.ts.map +1 -0
  58. package/dist/components/collapsible.js +13 -0
  59. package/dist/components/collapsible.js.map +1 -0
  60. package/dist/components/command.d.ts +26 -0
  61. package/dist/components/command.d.ts.map +1 -0
  62. package/dist/components/command.js +77 -0
  63. package/dist/components/command.js.map +1 -0
  64. package/dist/components/context-menu.d.ts +35 -0
  65. package/dist/components/context-menu.d.ts.map +1 -0
  66. package/dist/components/context-menu.js +82 -0
  67. package/dist/components/context-menu.js.map +1 -0
  68. package/dist/components/dialog.d.ts +30 -0
  69. package/dist/components/dialog.d.ts.map +1 -0
  70. package/dist/components/dialog.js +4 -0
  71. package/dist/components/drawer.d.ts +36 -0
  72. package/dist/components/drawer.d.ts.map +1 -0
  73. package/dist/components/drawer.js +53 -0
  74. package/dist/components/drawer.js.map +1 -0
  75. package/dist/components/dropdown-menu.d.ts +35 -0
  76. package/dist/components/dropdown-menu.d.ts.map +1 -0
  77. package/dist/components/dropdown-menu.js +83 -0
  78. package/dist/components/dropdown-menu.js.map +1 -0
  79. package/dist/components/hover-card.d.ts +10 -0
  80. package/dist/components/hover-card.d.ts.map +1 -0
  81. package/dist/components/hover-card.js +20 -0
  82. package/dist/components/hover-card.js.map +1 -0
  83. package/dist/components/input.d.ts +8 -0
  84. package/dist/components/input.d.ts.map +1 -0
  85. package/dist/components/input.js +18 -0
  86. package/dist/components/input.js.map +1 -0
  87. package/dist/components/label.d.ts +10 -0
  88. package/dist/components/label.d.ts.map +1 -0
  89. package/dist/components/label.js +18 -0
  90. package/dist/components/label.js.map +1 -0
  91. package/dist/components/menubar.d.ts +42 -0
  92. package/dist/components/menubar.d.ts.map +1 -0
  93. package/dist/components/menubar.js +96 -0
  94. package/dist/components/menubar.js.map +1 -0
  95. package/dist/components/navigation-menu.d.ts +17 -0
  96. package/dist/components/navigation-menu.d.ts.map +1 -0
  97. package/dist/components/navigation-menu.js +64 -0
  98. package/dist/components/navigation-menu.js.map +1 -0
  99. package/dist/components/pagination.d.ts +50 -0
  100. package/dist/components/pagination.d.ts.map +1 -0
  101. package/dist/components/pagination.js +65 -0
  102. package/dist/components/pagination.js.map +1 -0
  103. package/dist/components/popover.d.ts +10 -0
  104. package/dist/components/popover.d.ts.map +1 -0
  105. package/dist/components/popover.js +20 -0
  106. package/dist/components/popover.js.map +1 -0
  107. package/dist/components/progress.d.ts +8 -0
  108. package/dist/components/progress.d.ts.map +1 -0
  109. package/dist/components/progress.js +20 -0
  110. package/dist/components/progress.js.map +1 -0
  111. package/dist/components/radio-group.d.ts +9 -0
  112. package/dist/components/radio-group.d.ts.map +1 -0
  113. package/dist/components/radio-group.js +31 -0
  114. package/dist/components/radio-group.js.map +1 -0
  115. package/dist/components/resizable.d.ts +20 -0
  116. package/dist/components/resizable.d.ts.map +1 -0
  117. package/dist/components/resizable.js +24 -0
  118. package/dist/components/resizable.js.map +1 -0
  119. package/dist/components/scroll-area.d.ts +9 -0
  120. package/dist/components/scroll-area.d.ts.map +1 -0
  121. package/dist/components/scroll-area.js +32 -0
  122. package/dist/components/scroll-area.js.map +1 -0
  123. package/dist/components/select.d.ts +17 -0
  124. package/dist/components/select.d.ts.map +1 -0
  125. package/dist/components/select.js +75 -0
  126. package/dist/components/select.js.map +1 -0
  127. package/dist/components/separator.d.ts +8 -0
  128. package/dist/components/separator.d.ts.map +1 -0
  129. package/dist/components/separator.js +4 -0
  130. package/dist/components/sheet.d.ts +36 -0
  131. package/dist/components/sheet.d.ts.map +1 -0
  132. package/dist/components/sheet.js +69 -0
  133. package/dist/components/sheet.js.map +1 -0
  134. package/dist/components/sidebar.d.ts +54 -0
  135. package/dist/components/sidebar.d.ts.map +1 -0
  136. package/dist/components/sidebar.js +267 -0
  137. package/dist/components/sidebar.js.map +1 -0
  138. package/dist/components/skeleton.d.ts +10 -0
  139. package/dist/components/skeleton.d.ts.map +1 -0
  140. package/dist/components/skeleton.js +14 -0
  141. package/dist/components/skeleton.js.map +1 -0
  142. package/dist/components/slider.d.ts +8 -0
  143. package/dist/components/slider.d.ts.map +1 -0
  144. package/dist/components/slider.js +20 -0
  145. package/dist/components/slider.js.map +1 -0
  146. package/dist/components/sonner.d.ts +11 -0
  147. package/dist/components/sonner.d.ts.map +1 -0
  148. package/dist/components/sonner.js +22 -0
  149. package/dist/components/sonner.js.map +1 -0
  150. package/dist/components/switch.d.ts +8 -0
  151. package/dist/components/switch.d.ts.map +1 -0
  152. package/dist/components/switch.js +17 -0
  153. package/dist/components/switch.js.map +1 -0
  154. package/dist/components/table.d.ts +14 -0
  155. package/dist/components/table.d.ts.map +1 -0
  156. package/dist/components/table.js +61 -0
  157. package/dist/components/table.js.map +1 -0
  158. package/dist/components/tabs.d.ts +11 -0
  159. package/dist/components/tabs.d.ts.map +1 -0
  160. package/dist/components/tabs.js +29 -0
  161. package/dist/components/tabs.js.map +1 -0
  162. package/dist/components/textarea.d.ts +7 -0
  163. package/dist/components/textarea.d.ts.map +1 -0
  164. package/dist/components/textarea.js +17 -0
  165. package/dist/components/textarea.js.map +1 -0
  166. package/dist/components/toggle-group.d.ts +17 -0
  167. package/dist/components/toggle-group.d.ts.map +1 -0
  168. package/dist/components/toggle-group.js +41 -0
  169. package/dist/components/toggle-group.js.map +1 -0
  170. package/dist/components/toggle.d.ts +17 -0
  171. package/dist/components/toggle.d.ts.map +1 -0
  172. package/dist/components/toggle.js +4 -0
  173. package/dist/components/tooltip.d.ts +2 -0
  174. package/dist/components/tooltip.js +4 -0
  175. package/dist/dialog-B_8jhMOs.js +56 -0
  176. package/dist/dialog-B_8jhMOs.js.map +1 -0
  177. package/dist/hooks/use-mobile.d.ts +7 -0
  178. package/dist/hooks/use-mobile.d.ts.map +1 -0
  179. package/dist/hooks/use-mobile.js +3 -0
  180. package/dist/lib/utils.d.ts +9 -0
  181. package/dist/lib/utils.d.ts.map +1 -0
  182. package/dist/lib/utils.js +3 -0
  183. package/dist/separator-9lzFsfCC.js +18 -0
  184. package/dist/separator-9lzFsfCC.js.map +1 -0
  185. package/dist/toggle-BpKiTVe4.js +38 -0
  186. package/dist/toggle-BpKiTVe4.js.map +1 -0
  187. package/dist/tooltip-CXS6wR7g.js +20 -0
  188. package/dist/tooltip-CXS6wR7g.js.map +1 -0
  189. package/dist/tooltip-DPcgBDyX.d.ts +11 -0
  190. package/dist/tooltip-DPcgBDyX.d.ts.map +1 -0
  191. package/dist/use-mobile-CixTQBWA.js +21 -0
  192. package/dist/use-mobile-CixTQBWA.js.map +1 -0
  193. package/dist/utils-C0f9Ma6r.js +11 -0
  194. package/dist/utils-C0f9Ma6r.js.map +1 -0
  195. package/package.json +168 -0
  196. package/src/components/accordion.tsx +51 -0
  197. package/src/components/alert-dialog.tsx +115 -0
  198. package/src/components/alert.tsx +49 -0
  199. package/src/components/aspect-ratio.tsx +5 -0
  200. package/src/components/avatar.tsx +44 -0
  201. package/src/components/badge.tsx +32 -0
  202. package/src/components/breadcrumb.tsx +101 -0
  203. package/src/components/button.tsx +48 -0
  204. package/src/components/calendar.tsx +76 -0
  205. package/src/components/card.tsx +60 -0
  206. package/src/components/carousel.tsx +240 -0
  207. package/src/components/chart.tsx +232 -0
  208. package/src/components/checkbox.tsx +25 -0
  209. package/src/components/collapsible.tsx +11 -0
  210. package/src/components/command.tsx +136 -0
  211. package/src/components/context-menu.tsx +187 -0
  212. package/src/components/dialog.tsx +105 -0
  213. package/src/components/drawer.tsx +98 -0
  214. package/src/components/dropdown-menu.tsx +185 -0
  215. package/src/components/hover-card.tsx +29 -0
  216. package/src/components/input.tsx +24 -0
  217. package/src/components/label.tsx +19 -0
  218. package/src/components/menubar.tsx +219 -0
  219. package/src/components/navigation-menu.tsx +120 -0
  220. package/src/components/pagination.tsx +98 -0
  221. package/src/components/popover.tsx +27 -0
  222. package/src/components/progress.tsx +23 -0
  223. package/src/components/radio-group.tsx +35 -0
  224. package/src/components/resizable.tsx +38 -0
  225. package/src/components/scroll-area.tsx +43 -0
  226. package/src/components/select.tsx +147 -0
  227. package/src/components/separator.tsx +23 -0
  228. package/src/components/sheet.tsx +122 -0
  229. package/src/components/sidebar.tsx +507 -0
  230. package/src/components/skeleton.tsx +7 -0
  231. package/src/components/slider.tsx +23 -0
  232. package/src/components/sonner.tsx +26 -0
  233. package/src/components/switch.tsx +26 -0
  234. package/src/components/table.tsx +95 -0
  235. package/src/components/tabs.tsx +53 -0
  236. package/src/components/textarea.tsx +20 -0
  237. package/src/components/toggle-group.tsx +54 -0
  238. package/src/components/toggle.tsx +40 -0
  239. package/src/components/tooltip.tsx +27 -0
  240. package/src/hooks/use-mobile.tsx +19 -0
  241. package/src/lib/utils.ts +6 -0
@@ -0,0 +1,54 @@
1
+ import { ButtonProps } from "../button-BEd6_-lL.js";
2
+ import { TooltipContent$1 as TooltipContent } from "../tooltip-DPcgBDyX.js";
3
+ import * as React from "react";
4
+ import * as _radix_ui_react_separator0 from "@radix-ui/react-separator";
5
+
6
+ //#region src/components/sidebar.d.ts
7
+ type SidebarContext = {
8
+ state: 'expanded' | 'collapsed';
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ openMobile: boolean;
12
+ setOpenMobile: (open: boolean) => void;
13
+ isMobile: boolean;
14
+ toggleSidebar: () => void;
15
+ };
16
+ declare const SidebarContext: React.Context<SidebarContext | null>;
17
+ declare function useSidebar(): SidebarContext;
18
+ declare const SidebarProvider: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
19
+ defaultOpen?: boolean;
20
+ open?: boolean;
21
+ onOpenChange?: (open: boolean) => void;
22
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
23
+ declare const Sidebar: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
24
+ side?: "left" | "right";
25
+ variant?: "sidebar" | "floating" | "inset";
26
+ collapsible?: "offcanvas" | "icon" | "none";
27
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
28
+ declare const SidebarTrigger: React.ForwardRefExoticComponent<Omit<ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
29
+ declare const SidebarInset: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
30
+ declare const SidebarHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
31
+ declare const SidebarFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
32
+ declare const SidebarContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
33
+ declare const SidebarGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
34
+ declare const SidebarGroupLabel: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
35
+ asChild?: boolean;
36
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
37
+ declare const SidebarGroupContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
38
+ declare const SidebarMenu: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & React.RefAttributes<HTMLUListElement>>;
39
+ declare const SidebarMenuItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
40
+ declare const SidebarMenuButton: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
41
+ asChild?: boolean;
42
+ isActive?: boolean;
43
+ variant?: "default" | "outline";
44
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
45
+ size?: "default" | "sm" | "lg";
46
+ }, "ref"> & React.RefAttributes<HTMLButtonElement>>;
47
+ declare const SidebarMenuAction: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
48
+ asChild?: boolean;
49
+ showOnHover?: boolean;
50
+ }, "ref"> & React.RefAttributes<HTMLButtonElement>>;
51
+ declare const SidebarSeparator: React.ForwardRefExoticComponent<Omit<Omit<_radix_ui_react_separator0.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
52
+ //#endregion
53
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarSeparator, SidebarTrigger, useSidebar };
54
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../src/components/sidebar.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,267 @@
1
+ import { cn } from "../utils-C0f9Ma6r.js";
2
+ import { Button } from "../button-CJvoztqg.js";
3
+ import { Separator } from "../separator-9lzFsfCC.js";
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-CXS6wR7g.js";
5
+ import { useIsMobile } from "../use-mobile-CixTQBWA.js";
6
+ import * as React from "react";
7
+ import { PanelLeft } from "lucide-react";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Slot } from "@radix-ui/react-slot";
10
+
11
+ //#region src/components/sidebar.tsx
12
+ const SIDEBAR_COOKIE_NAME = "sidebar_state";
13
+ const SIDEBAR_WIDTH = "16rem";
14
+ const SIDEBAR_WIDTH_ICON = "3rem";
15
+ const SIDEBAR_KEYBOARD_SHORTCUT = "b";
16
+ const SidebarContext = React.createContext(null);
17
+ function useSidebar() {
18
+ const context = React.useContext(SidebarContext);
19
+ if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
20
+ return context;
21
+ }
22
+ const SidebarProvider = React.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children,...props }, ref) => {
23
+ const isMobile = useIsMobile();
24
+ const [openMobile, setOpenMobile] = React.useState(false);
25
+ const [_open, _setOpen] = React.useState(defaultOpen);
26
+ const open = openProp ?? _open;
27
+ const setOpen = React.useCallback((value) => {
28
+ const openState = typeof value === "function" ? value(open) : value;
29
+ if (setOpenProp) setOpenProp(openState);
30
+ else _setOpen(openState);
31
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${60 * 60 * 24 * 7}`;
32
+ }, [setOpenProp, open]);
33
+ const toggleSidebar = React.useCallback(() => {
34
+ return isMobile ? setOpenMobile((open$1) => !open$1) : setOpen((open$1) => !open$1);
35
+ }, [
36
+ isMobile,
37
+ setOpen,
38
+ setOpenMobile
39
+ ]);
40
+ React.useEffect(() => {
41
+ const handleKeyDown = (event) => {
42
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
43
+ event.preventDefault();
44
+ toggleSidebar();
45
+ }
46
+ };
47
+ window.addEventListener("keydown", handleKeyDown);
48
+ return () => window.removeEventListener("keydown", handleKeyDown);
49
+ }, [toggleSidebar]);
50
+ const state = open ? "expanded" : "collapsed";
51
+ const contextValue = React.useMemo(() => ({
52
+ state,
53
+ open,
54
+ setOpen,
55
+ isMobile,
56
+ openMobile,
57
+ setOpenMobile,
58
+ toggleSidebar
59
+ }), [
60
+ state,
61
+ open,
62
+ setOpen,
63
+ isMobile,
64
+ openMobile,
65
+ setOpenMobile,
66
+ toggleSidebar
67
+ ]);
68
+ return /* @__PURE__ */ jsx(SidebarContext.Provider, {
69
+ value: contextValue,
70
+ children: /* @__PURE__ */ jsx(TooltipProvider, {
71
+ delayDuration: 0,
72
+ children: /* @__PURE__ */ jsx("div", {
73
+ ref,
74
+ style: {
75
+ "--sidebar-width": SIDEBAR_WIDTH,
76
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
77
+ ...style
78
+ },
79
+ className: cn("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar", className),
80
+ "data-collapsible": state === "collapsed" ? "icon" : "",
81
+ ...props,
82
+ children
83
+ })
84
+ })
85
+ });
86
+ });
87
+ SidebarProvider.displayName = "SidebarProvider";
88
+ const Sidebar = React.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children,...props }, ref) => {
89
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
90
+ if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
91
+ className: cn("flex h-full flex-col bg-sidebar text-sidebar-foreground", className),
92
+ style: { width: "var(--sidebar-width)" },
93
+ ref,
94
+ ...props,
95
+ children
96
+ });
97
+ if (isMobile) return /* @__PURE__ */ jsxs(Fragment, { children: [openMobile && /* @__PURE__ */ jsx("div", {
98
+ className: "fixed inset-0 z-50 bg-black/50",
99
+ onClick: () => setOpenMobile(false)
100
+ }), /* @__PURE__ */ jsx("div", {
101
+ ref,
102
+ "data-variant": variant,
103
+ style: { width: "var(--sidebar-width)" },
104
+ className: cn("fixed inset-y-0 z-50 flex h-svh flex-col bg-sidebar text-sidebar-foreground transition-transform duration-200", side === "left" ? "left-0" : "right-0", openMobile ? "translate-x-0" : side === "left" ? "-translate-x-full" : "translate-x-full", className),
105
+ ...props,
106
+ children
107
+ })] });
108
+ return /* @__PURE__ */ jsxs("div", {
109
+ ref,
110
+ className: "group peer hidden md:block text-sidebar-foreground",
111
+ "data-state": state,
112
+ "data-collapsible": state === "collapsed" ? collapsible : "",
113
+ "data-variant": variant,
114
+ "data-side": side,
115
+ children: [/* @__PURE__ */ jsx("div", {
116
+ style: { width: "var(--sidebar-width)" },
117
+ className: cn("relative h-svh bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:!w-0", "group-data-[side=right]:rotate-180")
118
+ }), /* @__PURE__ */ jsx("div", {
119
+ style: { width: "var(--sidebar-width)" },
120
+ className: cn("fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex", "group-data-[collapsible=offcanvas]:!w-0", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:-left-[var(--sidebar-width)]" : "right-0 group-data-[collapsible=offcanvas]:-right-[var(--sidebar-width)]", variant === "floating" || variant === "inset" ? "p-2" : "group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
121
+ ...props,
122
+ children: /* @__PURE__ */ jsx("div", {
123
+ "data-sidebar": "sidebar",
124
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
125
+ children
126
+ })
127
+ })]
128
+ });
129
+ });
130
+ Sidebar.displayName = "Sidebar";
131
+ const SidebarTrigger = React.forwardRef(({ className, onClick,...props }, ref) => {
132
+ const { toggleSidebar } = useSidebar();
133
+ return /* @__PURE__ */ jsxs(Button, {
134
+ ref,
135
+ "data-sidebar": "trigger",
136
+ variant: "ghost",
137
+ size: "icon",
138
+ className: cn("h-6 w-6 text-muted-foreground", className),
139
+ onClick: (event) => {
140
+ onClick?.(event);
141
+ toggleSidebar();
142
+ },
143
+ ...props,
144
+ children: [/* @__PURE__ */ jsx(PanelLeft, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
145
+ className: "sr-only",
146
+ children: "Toggle Sidebar"
147
+ })]
148
+ });
149
+ });
150
+ SidebarTrigger.displayName = "SidebarTrigger";
151
+ const SidebarInset = React.forwardRef(({ className,...props }, ref) => {
152
+ return /* @__PURE__ */ jsx("main", {
153
+ ref,
154
+ className: cn("relative flex min-h-svh flex-1 flex-col bg-background", "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[variant=inset]:border md:peer-data-[variant=inset]:border-sidebar-border", className),
155
+ ...props
156
+ });
157
+ });
158
+ SidebarInset.displayName = "SidebarInset";
159
+ const SidebarHeader = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
160
+ ref,
161
+ "data-sidebar": "header",
162
+ className: cn("flex flex-col gap-2 p-2", className),
163
+ ...props
164
+ }));
165
+ SidebarHeader.displayName = "SidebarHeader";
166
+ const SidebarFooter = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
167
+ ref,
168
+ "data-sidebar": "footer",
169
+ className: cn("flex flex-col gap-2 p-2", className),
170
+ ...props
171
+ }));
172
+ SidebarFooter.displayName = "SidebarFooter";
173
+ const SidebarContent = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
174
+ ref,
175
+ "data-sidebar": "content",
176
+ className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
177
+ ...props
178
+ }));
179
+ SidebarContent.displayName = "SidebarContent";
180
+ const SidebarGroup = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
181
+ ref,
182
+ "data-sidebar": "group",
183
+ className: cn("relative flex w-full min-w-0 flex-col p-2", className),
184
+ ...props
185
+ }));
186
+ SidebarGroup.displayName = "SidebarGroup";
187
+ const SidebarGroupLabel = React.forwardRef(({ className, asChild = false,...props }, ref) => {
188
+ const Comp = asChild ? Slot : "div";
189
+ return /* @__PURE__ */ jsx(Comp, {
190
+ ref,
191
+ "data-sidebar": "group-label",
192
+ className: cn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
193
+ ...props
194
+ });
195
+ });
196
+ SidebarGroupLabel.displayName = "SidebarGroupLabel";
197
+ const SidebarGroupContent = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
198
+ ref,
199
+ "data-sidebar": "group-content",
200
+ className: cn("w-full text-sm", className),
201
+ ...props
202
+ }));
203
+ SidebarGroupContent.displayName = "SidebarGroupContent";
204
+ const SidebarMenu = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("ul", {
205
+ ref,
206
+ "data-sidebar": "menu",
207
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
208
+ ...props
209
+ }));
210
+ SidebarMenu.displayName = "SidebarMenu";
211
+ const SidebarMenuItem = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("li", {
212
+ ref,
213
+ "data-sidebar": "menu-item",
214
+ className: cn("group/menu-item relative", className),
215
+ ...props
216
+ }));
217
+ SidebarMenuItem.displayName = "SidebarMenuItem";
218
+ const sidebarMenuButtonVariants = {
219
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
220
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
221
+ };
222
+ const SidebarMenuButton = React.forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className,...props }, ref) => {
223
+ const Comp = asChild ? Slot : "button";
224
+ const { isMobile, state } = useSidebar();
225
+ const button = /* @__PURE__ */ jsx(Comp, {
226
+ ref,
227
+ "data-sidebar": "menu-button",
228
+ "data-size": size,
229
+ "data-active": isActive,
230
+ "data-slot": "sidebar-menu-button",
231
+ className: cn("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-primary data-[active=true]:font-medium data-[active=true]:text-sidebar-primary-foreground data-[active=true]:hover:bg-sidebar-primary/90 data-[active=true]:hover:text-sidebar-primary-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", size === "sm" && "text-xs", size === "lg" && "group-data-[collapsible=icon]:!p-0 data-[size=lg]:h-12 data-[size=lg]:text-sm", sidebarMenuButtonVariants[variant], className),
232
+ ...props
233
+ });
234
+ if (!tooltip) return button;
235
+ const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
236
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
237
+ asChild: true,
238
+ children: button
239
+ }), /* @__PURE__ */ jsx(TooltipContent, {
240
+ side: "right",
241
+ align: "center",
242
+ hidden: state !== "collapsed" || isMobile,
243
+ ...tooltipProps
244
+ })] });
245
+ });
246
+ SidebarMenuButton.displayName = "SidebarMenuButton";
247
+ const SidebarMenuAction = React.forwardRef(({ className, asChild = false, showOnHover = false,...props }, ref) => {
248
+ const Comp = asChild ? Slot : "button";
249
+ return /* @__PURE__ */ jsx(Comp, {
250
+ ref,
251
+ "data-sidebar": "menu-action",
252
+ className: cn("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "group-data-[collapsible=icon]:hidden", showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0", className),
253
+ ...props
254
+ });
255
+ });
256
+ SidebarMenuAction.displayName = "SidebarMenuAction";
257
+ const SidebarSeparator = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Separator, {
258
+ ref,
259
+ "data-sidebar": "separator",
260
+ className: cn("mx-2 w-auto bg-sidebar-border", className),
261
+ ...props
262
+ }));
263
+ SidebarSeparator.displayName = "SidebarSeparator";
264
+
265
+ //#endregion
266
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarSeparator, SidebarTrigger, useSidebar };
267
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","names":["value: boolean | ((value: boolean) => boolean)","open","event: KeyboardEvent"],"sources":["../../src/components/sidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeft } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Separator } from './separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\nimport { useIsMobile } from '../hooks/use-mobile';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${60 * 60 * 24 * 7}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n ref={ref}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar',\n className\n )}\n data-collapsible={state === 'collapsed' ? 'icon' : ''}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n }\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }\n>(\n (\n {\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('flex h-full flex-col bg-sidebar text-sidebar-foreground', className)}\n style={{ width: 'var(--sidebar-width)' }}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <>\n {openMobile && (\n <div className=\"fixed inset-0 z-50 bg-black/50\" onClick={() => setOpenMobile(false)} />\n )}\n <div\n ref={ref}\n data-variant={variant}\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'fixed inset-y-0 z-50 flex h-svh flex-col bg-sidebar text-sidebar-foreground transition-transform duration-200',\n side === 'left' ? 'left-0' : 'right-0',\n openMobile\n ? 'translate-x-0'\n : side === 'left'\n ? '-translate-x-full'\n : 'translate-x-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* Gap on side to keep layout */}\n <div\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'relative h-svh bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:!w-0',\n 'group-data-[side=right]:rotate-180'\n )}\n />\n <div\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex',\n 'group-data-[collapsible=offcanvas]:!w-0',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:-left-[var(--sidebar-width)]'\n : 'right-0 group-data-[collapsible=offcanvas]:-right-[var(--sidebar-width)]',\n variant === 'floating' || variant === 'inset'\n ? 'p-2'\n : 'group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n React.ComponentRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-6 w-6 text-muted-foreground', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'relative flex min-h-svh flex-1 flex-col bg-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[variant=inset]:border md:peer-data-[variant=inset]:border-sidebar-border',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n};\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n variant?: 'default' | 'outline';\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n size?: 'default' | 'sm' | 'lg';\n }\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n data-slot=\"sidebar-menu-button\"\n className={cn(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-primary data-[active=true]:font-medium data-[active=true]:text-sidebar-primary-foreground data-[active=true]:hover:bg-sidebar-primary/90 data-[active=true]:hover:text-sidebar-primary-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n size === 'sm' && 'text-xs',\n size === 'lg' &&\n 'group-data-[collapsible=icon]:!p-0 data-[size=lg]:h-12 data-[size=lg]:text-sm',\n sidebarMenuButtonVariants[variant],\n className\n )}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n const tooltipProps = typeof tooltip === 'string' ? { children: tooltip } : tooltip;\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltipProps}\n />\n </Tooltip>\n );\n }\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarSeparator = React.forwardRef<\n React.ComponentRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n));\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
2
+
3
+ //#region src/components/skeleton.d.ts
4
+ declare function Skeleton({
5
+ className,
6
+ ...props
7
+ }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime15.JSX.Element;
8
+ //#endregion
9
+ export { Skeleton };
10
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../src/components/skeleton.tsx"],"sourcesContent":[],"mappings":";;;iBAES,QAAA;;;GAAkC,KAAA,CAAM,eAAe,kBAAe,mBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { cn } from "../utils-C0f9Ma6r.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+
4
+ //#region src/components/skeleton.tsx
5
+ function Skeleton({ className,...props }) {
6
+ return /* @__PURE__ */ jsx("div", {
7
+ className: cn("animate-pulse rounded-md bg-muted", className),
8
+ ...props
9
+ });
10
+ }
11
+
12
+ //#endregion
13
+ export { Skeleton };
14
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from '../lib/utils';\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />;\n}\n\nexport { Skeleton };\n"],"mappings":";;;;AAEA,SAAS,SAAS,EAAE,UAAW,GAAG,OAA6C,EAAE;AAC/E,wBAAO,IAAC;EAAI,WAAW,GAAG,qCAAqC,UAAU;EAAE,GAAI;GAAS;AACzF"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import * as SliderPrimitive from "@radix-ui/react-slider";
3
+
4
+ //#region src/components/slider.d.ts
5
+ declare const Slider: React.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
6
+ //#endregion
7
+ export { Slider };
8
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/components/slider.tsx"],"sourcesContent":[],"mappings":";;;;cAKM,QAAM,KAAA,CAAA,0BAAA,KAAA,eAAA,CAAA,cAAA,KAAA,CAAA,cAAA,2BAAA,KAAA,CAAA,cAAA"}
@@ -0,0 +1,20 @@
1
+ import { cn } from "../utils-C0f9Ma6r.js";
2
+ import * as React from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import * as SliderPrimitive from "@radix-ui/react-slider";
5
+
6
+ //#region src/components/slider.tsx
7
+ const Slider = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
8
+ ref,
9
+ className: cn("relative flex w-full touch-none select-none items-center", className),
10
+ ...props,
11
+ children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
12
+ className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary",
13
+ children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" })
14
+ }), /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })]
15
+ }));
16
+ Slider.displayName = SliderPrimitive.Root.displayName;
17
+
18
+ //#endregion
19
+ export { Slider };
20
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../src/components/slider.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '../lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"],"mappings":";;;;;;AAKA,MAAM,SAAS,MAAM,WAGnB,CAAC,EAAE,UAAW,GAAG,OAAO,EAAE,wBAC1B,KAAC,gBAAgB;CACV;CACL,WAAW,GAAG,4DAA4D,UAAU;CACpF,GAAI;4BAEJ,IAAC,gBAAgB;EAAM,WAAU;4BAC/B,IAAC,gBAAgB,SAAM,WAAU,+BAA+B;GAC1C,kBACxB,IAAC,gBAAgB,SAAM,WAAU,mQAAmQ;EAC/Q,CACvB;AACF,OAAO,cAAc,gBAAgB,KAAK"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime21 from "react/jsx-runtime";
2
+ import { Toaster as Toaster$1 } from "sonner";
3
+
4
+ //#region src/components/sonner.d.ts
5
+ type ToasterProps = React.ComponentProps<typeof Toaster$1>;
6
+ declare const Toaster: ({
7
+ ...props
8
+ }: ToasterProps) => react_jsx_runtime21.JSX.Element;
9
+ //#endregion
10
+ export { Toaster };
11
+ //# sourceMappingURL=sonner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonner.d.ts","names":[],"sources":["../../src/components/sonner.tsx"],"sourcesContent":[],"mappings":";;;;KAEK,YAAA,GAAe,KAAA,CAAM,sBAAsB;cAE1C;;GAAyB,iBAAY,mBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Toaster as Toaster$1 } from "sonner";
3
+
4
+ //#region src/components/sonner.tsx
5
+ const Toaster = ({ ...props }) => {
6
+ const isDark = document.documentElement.classList.contains("dark");
7
+ return /* @__PURE__ */ jsx(Toaster$1, {
8
+ theme: isDark ? "dark" : "light",
9
+ className: "toaster group",
10
+ toastOptions: { classNames: {
11
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
12
+ description: "group-[.toast]:text-muted-foreground",
13
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
14
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
15
+ } },
16
+ ...props
17
+ });
18
+ };
19
+
20
+ //#endregion
21
+ export { Toaster };
22
+ //# sourceMappingURL=sonner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonner.js","names":["Sonner"],"sources":["../../src/components/sonner.tsx"],"sourcesContent":["import { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const isDark = document.documentElement.classList.contains('dark');\n\n return (\n <Sonner\n theme={isDark ? 'dark' : 'light'}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;AAIA,MAAM,UAAU,CAAC,EAAE,GAAG,OAAqB,KAAK;CAC9C,MAAM,SAAS,SAAS,gBAAgB,UAAU,SAAS,OAAO;AAElE,wBACE,IAACA;EACC,OAAO,SAAS,SAAS;EACzB,WAAU;EACV,cAAc,EACZ,YAAY;GACV,OACE;GACF,aAAa;GACb,cAAc;GACd,cAAc;EACf,EACF;EACD,GAAI;GACJ;AAEL"}
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
3
+
4
+ //#region src/components/switch.d.ts
5
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ //#endregion
7
+ export { Switch };
8
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/components/switch.tsx"],"sourcesContent":[],"mappings":";;;;cAIM,QAAM,KAAA,CAAA,0BAAA,KAAA,gBAAA,CAAA,cAAA,KAAA,CAAA,cAAA,6BAAA,KAAA,CAAA,cAAA"}
@@ -0,0 +1,17 @@
1
+ import { cn } from "../utils-C0f9Ma6r.js";
2
+ import * as React from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
5
+
6
+ //#region src/components/switch.tsx
7
+ const Switch = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(SwitchPrimitives.Root, {
8
+ className: cn("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", className),
9
+ ...props,
10
+ ref,
11
+ children: /* @__PURE__ */ jsx(SwitchPrimitives.Thumb, { className: cn("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0") })
12
+ }));
13
+ Switch.displayName = SwitchPrimitives.Root.displayName;
14
+
15
+ //#endregion
16
+ export { Switch };
17
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport { cn } from '../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"mappings":";;;;;;AAIA,MAAM,SAAS,MAAM,WAGnB,CAAC,EAAE,UAAW,GAAG,OAAO,EAAE,wBAC1B,IAAC,iBAAiB;CAChB,WAAW,GACT,sXACA,UACD;CACD,GAAI;CACC;2BAEL,IAAC,iBAAiB,SAChB,WAAW,GACT,6KACD,GACD;EACoB,CACxB;AACF,OAAO,cAAc,iBAAiB,KAAK"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/table.d.ts
4
+ declare const Table: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableElement> & React.RefAttributes<HTMLTableElement>>;
5
+ declare const TableHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
6
+ declare const TableBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
7
+ declare const TableFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
8
+ declare const TableRow: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableRowElement> & React.RefAttributes<HTMLTableRowElement>>;
9
+ declare const TableHead: React.ForwardRefExoticComponent<React.ThHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
10
+ declare const TableCell: React.ForwardRefExoticComponent<React.TdHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
11
+ declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;
12
+ //#endregion
13
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
14
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","names":[],"sources":["../../src/components/table.tsx"],"sourcesContent":[],"mappings":";;;cAGM,OAAK,KAAA,CAAA,0BAAA,KAAA,CAAA,eAAA,oBAAA,KAAA,CAAA,cAAA;cASL,aAAW,KAAA,CAAA,0BAAA,KAAA,CAAA,eAAA,2BAAA,KAAA,CAAA,cAAA;AAZc,cAwBzB,SAfL,EAec,KAAA,CAAA,yBAfd,CAec,KAAA,CAAA,cAfd,CAec,uBAfd,CAAA,GAec,KAAA,CAAA,aAfd,CAec,uBAfd,CAAA,CAAA;cAuBK,WAvBL,EAuBgB,KAAA,CAAA,yBAvBhB,CAuBgB,KAAA,CAAA,cAvBhB,CAuBgB,uBAvBhB,CAAA,GAuBgB,KAAA,CAAA,aAvBhB,CAuBgB,uBAvBhB,CAAA,CAAA;cAmCK,QAzCK,EAyCG,KAAA,CAAA,yBAzCH,CAyCG,KAAA,CAAA,cAzCH,CAyCG,mBAzCH,CAAA,GAyCG,KAAA,CAAA,aAzCH,CAyCG,mBAzCH,CAAA,CAAA;cAuDL,SAvDK,EAuDI,KAAA,CAAA,yBAvDJ,CAuDI,KAAA,CAAA,gBAvDJ,CAuDI,oBAvDJ,CAAA,GAuDI,KAAA,CAAA,aAvDJ,CAuDI,oBAvDJ,CAAA,CAAA;cAsEL,SAtEK,EAsEI,KAAA,CAAA,yBAtEJ,CAsEI,KAAA,CAAA,gBAtEJ,CAsEI,oBAtEJ,CAAA,GAsEI,KAAA,CAAA,aAtEJ,CAsEI,oBAtEJ,CAAA,CAAA;cAmFL,YAnFK,EAmFO,KAAA,CAAA,yBAnFP,CAmFO,KAAA,CAAA,cAnFP,CAmFO,uBAnFP,CAAA,GAmFO,KAAA,CAAA,aAnFP,CAmFO,uBAnFP,CAAA,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { cn } from "../utils-C0f9Ma6r.js";
2
+ import * as React from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/components/table.tsx
6
+ const Table = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
7
+ className: "relative w-full overflow-auto",
8
+ children: /* @__PURE__ */ jsx("table", {
9
+ ref,
10
+ className: cn("w-full caption-bottom text-sm", className),
11
+ ...props
12
+ })
13
+ }));
14
+ Table.displayName = "Table";
15
+ const TableHeader = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("thead", {
16
+ ref,
17
+ className: cn("[&_tr]:border-b [&_tr]:border-border/50", className),
18
+ ...props
19
+ }));
20
+ TableHeader.displayName = "TableHeader";
21
+ const TableBody = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tbody", {
22
+ ref,
23
+ className: cn("[&_tr:last-child]:border-0", className),
24
+ ...props
25
+ }));
26
+ TableBody.displayName = "TableBody";
27
+ const TableFooter = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tfoot", {
28
+ ref,
29
+ className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className),
30
+ ...props
31
+ }));
32
+ TableFooter.displayName = "TableFooter";
33
+ const TableRow = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tr", {
34
+ ref,
35
+ className: cn("border-b border-border/50 transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className),
36
+ ...props
37
+ }));
38
+ TableRow.displayName = "TableRow";
39
+ const TableHead = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("th", {
40
+ ref,
41
+ className: cn("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", className),
42
+ ...props
43
+ }));
44
+ TableHead.displayName = "TableHead";
45
+ const TableCell = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("td", {
46
+ ref,
47
+ "data-slot": "table-cell",
48
+ className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
49
+ ...props
50
+ }));
51
+ TableCell.displayName = "TableCell";
52
+ const TableCaption = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("caption", {
53
+ ref,
54
+ className: cn("mt-4 text-sm text-muted-foreground", className),
55
+ ...props
56
+ }));
57
+ TableCaption.displayName = "TableCaption";
58
+
59
+ //#endregion
60
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
61
+ //# sourceMappingURL=table.js.map