harebear-ui 0.0.0-stage → 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 (170) hide show
  1. package/AGENTS.md +63 -0
  2. package/LICENSE +21 -0
  3. package/README.md +92 -2
  4. package/bin/harebear-ui.mjs +125 -0
  5. package/dist/components/admin/activity-feed.d.ts +15 -0
  6. package/dist/components/admin/activity-feed.js +50 -0
  7. package/dist/components/admin/app-shell.d.ts +47 -0
  8. package/dist/components/admin/app-shell.js +108 -0
  9. package/dist/components/admin/callout.d.ts +7 -0
  10. package/dist/components/admin/callout.js +18 -0
  11. package/dist/components/admin/key-value-grid.d.ts +11 -0
  12. package/dist/components/admin/key-value-grid.js +23 -0
  13. package/dist/components/admin/link-tile.d.ts +17 -0
  14. package/dist/components/admin/link-tile.js +36 -0
  15. package/dist/components/admin/page-header.d.ts +14 -0
  16. package/dist/components/admin/page-header.js +41 -0
  17. package/dist/components/admin/search-input.d.ts +12 -0
  18. package/dist/components/admin/search-input.js +32 -0
  19. package/dist/components/admin/stat-card.d.ts +20 -0
  20. package/dist/components/admin/stat-card.js +53 -0
  21. package/dist/components/admin/status.d.ts +12 -0
  22. package/dist/components/admin/status.js +32 -0
  23. package/dist/components/admin/timeline.d.ts +13 -0
  24. package/dist/components/admin/timeline.js +36 -0
  25. package/dist/components/admin/usage-meter.d.ts +17 -0
  26. package/dist/components/admin/usage-meter.js +43 -0
  27. package/dist/components/admin/user-chip.d.ts +14 -0
  28. package/dist/components/admin/user-chip.js +38 -0
  29. package/dist/components/ai/chat.d.ts +44 -0
  30. package/dist/components/ai/chat.js +147 -0
  31. package/dist/components/ai/code-block.d.ts +21 -0
  32. package/dist/components/ai/code-block.js +53 -0
  33. package/dist/components/ai/conversation-list.d.ts +18 -0
  34. package/dist/components/ai/conversation-list.js +30 -0
  35. package/dist/components/ai/model-picker.d.ts +21 -0
  36. package/dist/components/ai/model-picker.js +55 -0
  37. package/dist/components/ai/prompt-input.d.ts +27 -0
  38. package/dist/components/ai/prompt-input.js +99 -0
  39. package/dist/components/data/bar-list.d.ts +14 -0
  40. package/dist/components/data/bar-list.js +27 -0
  41. package/dist/components/data/data-table.d.ts +70 -0
  42. package/dist/components/data/data-table.js +208 -0
  43. package/dist/components/data/sparkline.d.ts +16 -0
  44. package/dist/components/data/sparkline.js +72 -0
  45. package/dist/components/data/status-bars.d.ts +17 -0
  46. package/dist/components/data/status-bars.js +37 -0
  47. package/dist/components/data/trend-chart.d.ts +31 -0
  48. package/dist/components/data/trend-chart.js +136 -0
  49. package/dist/components/theme/theme-provider.d.ts +42 -0
  50. package/dist/components/theme/theme-provider.js +110 -0
  51. package/dist/components/theme/theme-toggle.d.ts +5 -0
  52. package/dist/components/theme/theme-toggle.js +20 -0
  53. package/dist/components/ui/accordion.d.ts +7 -0
  54. package/dist/components/ui/accordion.js +53 -0
  55. package/dist/components/ui/alert-dialog.d.ts +18 -0
  56. package/dist/components/ui/alert-dialog.js +99 -0
  57. package/dist/components/ui/alert.d.ts +10 -0
  58. package/dist/components/ui/alert.js +42 -0
  59. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  60. package/dist/components/ui/aspect-ratio.js +11 -0
  61. package/dist/components/ui/avatar.d.ts +11 -0
  62. package/dist/components/ui/avatar.js +49 -0
  63. package/dist/components/ui/badge.d.ts +9 -0
  64. package/dist/components/ui/badge.js +30 -0
  65. package/dist/components/ui/breadcrumb.d.ts +11 -0
  66. package/dist/components/ui/breadcrumb.js +70 -0
  67. package/dist/components/ui/button-group.d.ts +11 -0
  68. package/dist/components/ui/button-group.js +39 -0
  69. package/dist/components/ui/button.d.ts +11 -0
  70. package/dist/components/ui/button.js +55 -0
  71. package/dist/components/ui/calendar.d.ts +10 -0
  72. package/dist/components/ui/calendar.js +108 -0
  73. package/dist/components/ui/card.d.ts +11 -0
  74. package/dist/components/ui/card.js +55 -0
  75. package/dist/components/ui/carousel.d.ts +28 -0
  76. package/dist/components/ui/carousel.js +131 -0
  77. package/dist/components/ui/chart.d.ts +44 -0
  78. package/dist/components/ui/chart.js +148 -0
  79. package/dist/components/ui/checkbox.d.ts +4 -0
  80. package/dist/components/ui/checkbox.js +19 -0
  81. package/dist/components/ui/collapsible.d.ts +5 -0
  82. package/dist/components/ui/collapsible.js +23 -0
  83. package/dist/components/ui/command.d.ts +18 -0
  84. package/dist/components/ui/command.js +86 -0
  85. package/dist/components/ui/context-menu.d.ts +31 -0
  86. package/dist/components/ui/context-menu.js +123 -0
  87. package/dist/components/ui/dialog.d.ts +17 -0
  88. package/dist/components/ui/dialog.js +94 -0
  89. package/dist/components/ui/drawer.d.ts +13 -0
  90. package/dist/components/ui/drawer.js +76 -0
  91. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  92. package/dist/components/ui/dropdown-menu.js +126 -0
  93. package/dist/components/ui/empty.d.ts +11 -0
  94. package/dist/components/ui/empty.js +59 -0
  95. package/dist/components/ui/field.d.ts +24 -0
  96. package/dist/components/ui/field.js +109 -0
  97. package/dist/components/ui/hover-card.d.ts +6 -0
  98. package/dist/components/ui/hover-card.js +30 -0
  99. package/dist/components/ui/input-group.d.ts +16 -0
  100. package/dist/components/ui/input-group.js +77 -0
  101. package/dist/components/ui/input-otp.d.ts +11 -0
  102. package/dist/components/ui/input-otp.js +46 -0
  103. package/dist/components/ui/input.d.ts +3 -0
  104. package/dist/components/ui/input.js +13 -0
  105. package/dist/components/ui/item.d.ts +23 -0
  106. package/dist/components/ui/item.js +117 -0
  107. package/dist/components/ui/kbd.d.ts +3 -0
  108. package/dist/components/ui/kbd.js +19 -0
  109. package/dist/components/ui/label.d.ts +4 -0
  110. package/dist/components/ui/label.js +13 -0
  111. package/dist/components/ui/menubar.d.ts +30 -0
  112. package/dist/components/ui/menubar.js +133 -0
  113. package/dist/components/ui/navigation-menu.d.ts +14 -0
  114. package/dist/components/ui/navigation-menu.js +79 -0
  115. package/dist/components/ui/pagination.d.ts +17 -0
  116. package/dist/components/ui/pagination.js +79 -0
  117. package/dist/components/ui/popover.d.ts +10 -0
  118. package/dist/components/ui/popover.js +54 -0
  119. package/dist/components/ui/progress.d.ts +4 -0
  120. package/dist/components/ui/progress.js +18 -0
  121. package/dist/components/ui/radio-group.d.ts +5 -0
  122. package/dist/components/ui/radio-group.js +25 -0
  123. package/dist/components/ui/resizable.d.ts +7 -0
  124. package/dist/components/ui/resizable.js +27 -0
  125. package/dist/components/ui/scroll-area.d.ts +5 -0
  126. package/dist/components/ui/scroll-area.js +35 -0
  127. package/dist/components/ui/select.d.ts +15 -0
  128. package/dist/components/ui/select.js +98 -0
  129. package/dist/components/ui/separator.d.ts +4 -0
  130. package/dist/components/ui/separator.js +15 -0
  131. package/dist/components/ui/sheet.d.ts +14 -0
  132. package/dist/components/ui/sheet.js +88 -0
  133. package/dist/components/ui/sidebar.d.ts +69 -0
  134. package/dist/components/ui/sidebar.js +377 -0
  135. package/dist/components/ui/skeleton.d.ts +2 -0
  136. package/dist/components/ui/skeleton.js +12 -0
  137. package/dist/components/ui/slider.d.ts +4 -0
  138. package/dist/components/ui/slider.js +35 -0
  139. package/dist/components/ui/sonner.d.ts +3 -0
  140. package/dist/components/ui/sonner.js +29 -0
  141. package/dist/components/ui/spinner.d.ts +2 -0
  142. package/dist/components/ui/spinner.js +15 -0
  143. package/dist/components/ui/switch.d.ts +6 -0
  144. package/dist/components/ui/switch.js +18 -0
  145. package/dist/components/ui/table.d.ts +10 -0
  146. package/dist/components/ui/table.js +65 -0
  147. package/dist/components/ui/tabs.d.ts +11 -0
  148. package/dist/components/ui/tabs.js +45 -0
  149. package/dist/components/ui/textarea.d.ts +3 -0
  150. package/dist/components/ui/textarea.js +12 -0
  151. package/dist/components/ui/toggle-group.d.ts +10 -0
  152. package/dist/components/ui/toggle-group.js +50 -0
  153. package/dist/components/ui/toggle.d.ts +9 -0
  154. package/dist/components/ui/toggle.js +35 -0
  155. package/dist/components/ui/tooltip.d.ts +7 -0
  156. package/dist/components/ui/tooltip.js +34 -0
  157. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -0
  158. package/dist/hooks/use-copy-to-clipboard.js +24 -0
  159. package/dist/hooks/use-mobile.d.ts +1 -0
  160. package/dist/hooks/use-mobile.js +17 -0
  161. package/dist/index.d.ts +80 -0
  162. package/dist/index.js +80 -0
  163. package/dist/lib/utils.d.ts +3 -0
  164. package/dist/lib/utils.js +8 -0
  165. package/dist/shadcn-base.css +638 -0
  166. package/dist/styles.css +188 -0
  167. package/docs/COMPONENTS.md +352 -0
  168. package/llms.txt +34 -0
  169. package/package.json +116 -4
  170. package/skills/harebear-ui/SKILL.md +33 -0
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Button } from "./button.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
6
+ // src/components/ui/pagination.tsx
7
+ function Pagination({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx("nav", {
9
+ role: "navigation",
10
+ "aria-label": "pagination",
11
+ "data-slot": "pagination",
12
+ className: cn("mx-auto flex w-full justify-center", className),
13
+ ...props
14
+ });
15
+ }
16
+ function PaginationContent({ className, ...props }) {
17
+ return /* @__PURE__ */ jsx("ul", {
18
+ "data-slot": "pagination-content",
19
+ className: cn("flex items-center gap-0.5", className),
20
+ ...props
21
+ });
22
+ }
23
+ function PaginationItem({ ...props }) {
24
+ return /* @__PURE__ */ jsx("li", {
25
+ "data-slot": "pagination-item",
26
+ ...props
27
+ });
28
+ }
29
+ function PaginationLink({ className, isActive, size = "icon", ...props }) {
30
+ return /* @__PURE__ */ jsx(Button, {
31
+ asChild: true,
32
+ variant: isActive ? "outline" : "ghost",
33
+ size,
34
+ className: cn(className),
35
+ children: /* @__PURE__ */ jsx("a", {
36
+ "aria-current": isActive ? "page" : void 0,
37
+ "data-slot": "pagination-link",
38
+ "data-active": isActive,
39
+ ...props
40
+ })
41
+ });
42
+ }
43
+ function PaginationPrevious({ className, text = "Previous", ...props }) {
44
+ return /* @__PURE__ */ jsxs(PaginationLink, {
45
+ "aria-label": "Go to previous page",
46
+ size: "default",
47
+ className: cn("pl-1.5!", className),
48
+ ...props,
49
+ children: [/* @__PURE__ */ jsx(ChevronLeftIcon, { "data-icon": "inline-start" }), /* @__PURE__ */ jsx("span", {
50
+ className: "hidden sm:block",
51
+ children: text
52
+ })]
53
+ });
54
+ }
55
+ function PaginationNext({ className, text = "Next", ...props }) {
56
+ return /* @__PURE__ */ jsxs(PaginationLink, {
57
+ "aria-label": "Go to next page",
58
+ size: "default",
59
+ className: cn("pr-1.5!", className),
60
+ ...props,
61
+ children: [/* @__PURE__ */ jsx("span", {
62
+ className: "hidden sm:block",
63
+ children: text
64
+ }), /* @__PURE__ */ jsx(ChevronRightIcon, { "data-icon": "inline-end" })]
65
+ });
66
+ }
67
+ function PaginationEllipsis({ className, ...props }) {
68
+ return /* @__PURE__ */ jsxs("span", {
69
+ "aria-hidden": true,
70
+ "data-slot": "pagination-ellipsis",
71
+ className: cn("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
72
+ ...props,
73
+ children: [/* @__PURE__ */ jsx(MoreHorizontalIcon, {}), /* @__PURE__ */ jsx("span", {
74
+ className: "sr-only",
75
+ children: "More pages"
76
+ })]
77
+ });
78
+ }
79
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { Popover as Popover$1 } from "radix-ui";
3
+ declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): React.JSX.Element;
4
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): React.JSX.Element;
5
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): React.JSX.Element;
6
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): React.JSX.Element;
7
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): React.JSX.Element;
9
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
10
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Popover as Popover$1 } from "radix-ui";
5
+ // src/components/ui/popover.tsx
6
+ function Popover({ ...props }) {
7
+ return /* @__PURE__ */ jsx(Popover$1.Root, {
8
+ "data-slot": "popover",
9
+ ...props
10
+ });
11
+ }
12
+ function PopoverTrigger({ ...props }) {
13
+ return /* @__PURE__ */ jsx(Popover$1.Trigger, {
14
+ "data-slot": "popover-trigger",
15
+ ...props
16
+ });
17
+ }
18
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
19
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Content, {
20
+ "data-slot": "popover-content",
21
+ align,
22
+ sideOffset,
23
+ className: cn("z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
24
+ ...props
25
+ }) });
26
+ }
27
+ function PopoverAnchor({ ...props }) {
28
+ return /* @__PURE__ */ jsx(Popover$1.Anchor, {
29
+ "data-slot": "popover-anchor",
30
+ ...props
31
+ });
32
+ }
33
+ function PopoverHeader({ className, ...props }) {
34
+ return /* @__PURE__ */ jsx("div", {
35
+ "data-slot": "popover-header",
36
+ className: cn("flex flex-col gap-0.5 text-sm", className),
37
+ ...props
38
+ });
39
+ }
40
+ function PopoverTitle({ className, ...props }) {
41
+ return /* @__PURE__ */ jsx("div", {
42
+ "data-slot": "popover-title",
43
+ className: cn("font-medium", className),
44
+ ...props
45
+ });
46
+ }
47
+ function PopoverDescription({ className, ...props }) {
48
+ return /* @__PURE__ */ jsx("p", {
49
+ "data-slot": "popover-description",
50
+ className: cn("text-muted-foreground", className),
51
+ ...props
52
+ });
53
+ }
54
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { Progress as Progress$1 } from "radix-ui";
3
+ declare function Progress({ className, value, ...props }: React.ComponentProps<typeof Progress$1.Root>): React.JSX.Element;
4
+ export { Progress };
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Progress as Progress$1 } from "radix-ui";
5
+ // src/components/ui/progress.tsx
6
+ function Progress({ className, value, ...props }) {
7
+ return /* @__PURE__ */ jsx(Progress$1.Root, {
8
+ "data-slot": "progress",
9
+ className: cn("relative flex h-2 w-full items-center overflow-x-hidden rounded-full bg-muted", className),
10
+ ...props,
11
+ children: /* @__PURE__ */ jsx(Progress$1.Indicator, {
12
+ "data-slot": "progress-indicator",
13
+ className: "size-full flex-1 rounded-full bg-primary transition-all",
14
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
15
+ })
16
+ });
17
+ }
18
+ export { Progress };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { RadioGroup as RadioGroup$1 } from "radix-ui";
3
+ declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroup$1.Root>): React.JSX.Element;
4
+ declare function RadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroup$1.Item>): React.JSX.Element;
5
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { RadioGroup as RadioGroup$1 } from "radix-ui";
5
+ // src/components/ui/radio-group.tsx
6
+ function RadioGroup({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx(RadioGroup$1.Root, {
8
+ "data-slot": "radio-group",
9
+ className: cn("grid w-full gap-2", className),
10
+ ...props
11
+ });
12
+ }
13
+ function RadioGroupItem({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx(RadioGroup$1.Item, {
15
+ "data-slot": "radio-group-item",
16
+ className: cn("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary", className),
17
+ ...props,
18
+ children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, {
19
+ "data-slot": "radio-group-indicator",
20
+ className: "flex size-4 items-center justify-center",
21
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
22
+ })
23
+ });
24
+ }
25
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,7 @@
1
+ import * as ResizablePrimitive from "react-resizable-panels";
2
+ declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): import("react").JSX.Element;
3
+ declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps): import("react").JSX.Element;
4
+ declare function ResizableHandle({ withHandle, className, ...props }: ResizablePrimitive.SeparatorProps & {
5
+ withHandle?: boolean;
6
+ }): import("react").JSX.Element;
7
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import * as ResizablePrimitive from "react-resizable-panels";
5
+ // src/components/ui/resizable.tsx
6
+ function ResizablePanelGroup({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Group, {
8
+ "data-slot": "resizable-panel-group",
9
+ className: cn("flex h-full w-full aria-[orientation=vertical]:flex-col", className),
10
+ ...props
11
+ });
12
+ }
13
+ function ResizablePanel({ ...props }) {
14
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Panel, {
15
+ "data-slot": "resizable-panel",
16
+ ...props
17
+ });
18
+ }
19
+ function ResizableHandle({ withHandle, className, ...props }) {
20
+ return /* @__PURE__ */ jsx(ResizablePrimitive.Separator, {
21
+ "data-slot": "resizable-handle",
22
+ className: cn("relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90", className),
23
+ ...props,
24
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border" })
25
+ });
26
+ }
27
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { ScrollArea as ScrollArea$1 } from "radix-ui";
3
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollArea$1.Root>): React.JSX.Element;
4
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollArea$1.ScrollAreaScrollbar>): React.JSX.Element;
5
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { ScrollArea as ScrollArea$1 } from "radix-ui";
5
+ // src/components/ui/scroll-area.tsx
6
+ function ScrollArea({ className, children, ...props }) {
7
+ return /* @__PURE__ */ jsxs(ScrollArea$1.Root, {
8
+ "data-slot": "scroll-area",
9
+ className: cn("relative", className),
10
+ ...props,
11
+ children: [
12
+ /* @__PURE__ */ jsx(ScrollArea$1.Viewport, {
13
+ "data-slot": "scroll-area-viewport",
14
+ className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
15
+ children
16
+ }),
17
+ /* @__PURE__ */ jsx(ScrollBar, {}),
18
+ /* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
19
+ ]
20
+ });
21
+ }
22
+ function ScrollBar({ className, orientation = "vertical", ...props }) {
23
+ return /* @__PURE__ */ jsx(ScrollArea$1.ScrollAreaScrollbar, {
24
+ "data-slot": "scroll-area-scrollbar",
25
+ "data-orientation": orientation,
26
+ orientation,
27
+ className: cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent", className),
28
+ ...props,
29
+ children: /* @__PURE__ */ jsx(ScrollArea$1.ScrollAreaThumb, {
30
+ "data-slot": "scroll-area-thumb",
31
+ className: "relative flex-1 rounded-full bg-border"
32
+ })
33
+ });
34
+ }
35
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { Select as Select$1 } from "radix-ui";
3
+ declare function Select({ ...props }: React.ComponentProps<typeof Select$1.Root>): React.JSX.Element;
4
+ declare function SelectGroup({ className, ...props }: React.ComponentProps<typeof Select$1.Group>): React.JSX.Element;
5
+ declare function SelectValue({ ...props }: React.ComponentProps<typeof Select$1.Value>): React.JSX.Element;
6
+ declare function SelectTrigger({ className, size, children, ...props }: React.ComponentProps<typeof Select$1.Trigger> & {
7
+ size?: "sm" | "default";
8
+ }): React.JSX.Element;
9
+ declare function SelectContent({ className, children, position, align, ...props }: React.ComponentProps<typeof Select$1.Content>): React.JSX.Element;
10
+ declare function SelectLabel({ className, ...props }: React.ComponentProps<typeof Select$1.Label>): React.JSX.Element;
11
+ declare function SelectItem({ className, children, ...props }: React.ComponentProps<typeof Select$1.Item>): React.JSX.Element;
12
+ declare function SelectSeparator({ className, ...props }: React.ComponentProps<typeof Select$1.Separator>): React.JSX.Element;
13
+ declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof Select$1.ScrollUpButton>): React.JSX.Element;
14
+ declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof Select$1.ScrollDownButton>): React.JSX.Element;
15
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
5
+ import { Select as Select$1 } from "radix-ui";
6
+ // src/components/ui/select.tsx
7
+ function Select({ ...props }) {
8
+ return /* @__PURE__ */ jsx(Select$1.Root, {
9
+ "data-slot": "select",
10
+ ...props
11
+ });
12
+ }
13
+ function SelectGroup({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx(Select$1.Group, {
15
+ "data-slot": "select-group",
16
+ className: cn("scroll-my-1 p-1", className),
17
+ ...props
18
+ });
19
+ }
20
+ function SelectValue({ ...props }) {
21
+ return /* @__PURE__ */ jsx(Select$1.Value, {
22
+ "data-slot": "select-value",
23
+ ...props
24
+ });
25
+ }
26
+ function SelectTrigger({ className, size = "default", children, ...props }) {
27
+ return /* @__PURE__ */ jsxs(Select$1.Trigger, {
28
+ "data-slot": "select-trigger",
29
+ "data-size": size,
30
+ className: cn("flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
31
+ ...props,
32
+ children: [children, /* @__PURE__ */ jsx(Select$1.Icon, {
33
+ asChild: true,
34
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" })
35
+ })]
36
+ });
37
+ }
38
+ function SelectContent({ className, children, position = "item-aligned", align = "center", ...props }) {
39
+ return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsxs(Select$1.Content, {
40
+ "data-slot": "select-content",
41
+ "data-align-trigger": position === "item-aligned",
42
+ className: cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
43
+ position,
44
+ align,
45
+ ...props,
46
+ children: [
47
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
48
+ /* @__PURE__ */ jsx(Select$1.Viewport, {
49
+ "data-position": position,
50
+ className: cn("data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)", position === "popper" && ""),
51
+ children
52
+ }),
53
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
54
+ ]
55
+ }) });
56
+ }
57
+ function SelectLabel({ className, ...props }) {
58
+ return /* @__PURE__ */ jsx(Select$1.Label, {
59
+ "data-slot": "select-label",
60
+ className: cn("px-1.5 py-1 text-xs text-muted-foreground", className),
61
+ ...props
62
+ });
63
+ }
64
+ function SelectItem({ className, children, ...props }) {
65
+ return /* @__PURE__ */ jsxs(Select$1.Item, {
66
+ "data-slot": "select-item",
67
+ className: cn("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
68
+ ...props,
69
+ children: [/* @__PURE__ */ jsx("span", {
70
+ className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center",
71
+ children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" }) })
72
+ }), /* @__PURE__ */ jsx(Select$1.ItemText, { children })]
73
+ });
74
+ }
75
+ function SelectSeparator({ className, ...props }) {
76
+ return /* @__PURE__ */ jsx(Select$1.Separator, {
77
+ "data-slot": "select-separator",
78
+ className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
79
+ ...props
80
+ });
81
+ }
82
+ function SelectScrollUpButton({ className, ...props }) {
83
+ return /* @__PURE__ */ jsx(Select$1.ScrollUpButton, {
84
+ "data-slot": "select-scroll-up-button",
85
+ className: cn("z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className),
86
+ ...props,
87
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
88
+ });
89
+ }
90
+ function SelectScrollDownButton({ className, ...props }) {
91
+ return /* @__PURE__ */ jsx(Select$1.ScrollDownButton, {
92
+ "data-slot": "select-scroll-down-button",
93
+ className: cn("z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className),
94
+ ...props,
95
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
96
+ });
97
+ }
98
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { Separator as Separator$1 } from "radix-ui";
3
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof Separator$1.Root>): React.JSX.Element;
4
+ export { Separator };
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Separator as Separator$1 } from "radix-ui";
5
+ // src/components/ui/separator.tsx
6
+ function Separator({ className, orientation = "horizontal", decorative = true, ...props }) {
7
+ return /* @__PURE__ */ jsx(Separator$1.Root, {
8
+ "data-slot": "separator",
9
+ decorative,
10
+ orientation,
11
+ className: cn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch", className),
12
+ ...props
13
+ });
14
+ }
15
+ export { Separator };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { Dialog } from "radix-ui";
3
+ declare function Sheet({ ...props }: React.ComponentProps<typeof Dialog.Root>): React.JSX.Element;
4
+ declare function SheetTrigger({ ...props }: React.ComponentProps<typeof Dialog.Trigger>): React.JSX.Element;
5
+ declare function SheetClose({ ...props }: React.ComponentProps<typeof Dialog.Close>): React.JSX.Element;
6
+ declare function SheetContent({ className, children, side, showCloseButton, ...props }: React.ComponentProps<typeof Dialog.Content> & {
7
+ side?: "top" | "right" | "bottom" | "left";
8
+ showCloseButton?: boolean;
9
+ }): React.JSX.Element;
10
+ declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
11
+ declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
12
+ declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof Dialog.Title>): React.JSX.Element;
13
+ declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof Dialog.Description>): React.JSX.Element;
14
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Button } from "./button.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { XIcon } from "lucide-react";
6
+ import { Dialog } from "radix-ui";
7
+ // src/components/ui/sheet.tsx
8
+ function Sheet({ ...props }) {
9
+ return /* @__PURE__ */ jsx(Dialog.Root, {
10
+ "data-slot": "sheet",
11
+ ...props
12
+ });
13
+ }
14
+ function SheetTrigger({ ...props }) {
15
+ return /* @__PURE__ */ jsx(Dialog.Trigger, {
16
+ "data-slot": "sheet-trigger",
17
+ ...props
18
+ });
19
+ }
20
+ function SheetClose({ ...props }) {
21
+ return /* @__PURE__ */ jsx(Dialog.Close, {
22
+ "data-slot": "sheet-close",
23
+ ...props
24
+ });
25
+ }
26
+ function SheetPortal({ ...props }) {
27
+ return /* @__PURE__ */ jsx(Dialog.Portal, {
28
+ "data-slot": "sheet-portal",
29
+ ...props
30
+ });
31
+ }
32
+ function SheetOverlay({ className, ...props }) {
33
+ return /* @__PURE__ */ jsx(Dialog.Overlay, {
34
+ "data-slot": "sheet-overlay",
35
+ className: cn("fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
36
+ ...props
37
+ });
38
+ }
39
+ function SheetContent({ className, children, side = "right", showCloseButton = true, ...props }) {
40
+ return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(Dialog.Content, {
41
+ "data-slot": "sheet-content",
42
+ "data-side": side,
43
+ className: cn("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10", className),
44
+ ...props,
45
+ children: [children, showCloseButton && /* @__PURE__ */ jsx(Dialog.Close, {
46
+ "data-slot": "sheet-close",
47
+ asChild: true,
48
+ children: /* @__PURE__ */ jsxs(Button, {
49
+ variant: "ghost",
50
+ className: "absolute top-3 right-3",
51
+ size: "icon-sm",
52
+ children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
53
+ className: "sr-only",
54
+ children: "Close"
55
+ })]
56
+ })
57
+ })]
58
+ })] });
59
+ }
60
+ function SheetHeader({ className, ...props }) {
61
+ return /* @__PURE__ */ jsx("div", {
62
+ "data-slot": "sheet-header",
63
+ className: cn("flex flex-col gap-0.5 p-4", className),
64
+ ...props
65
+ });
66
+ }
67
+ function SheetFooter({ className, ...props }) {
68
+ return /* @__PURE__ */ jsx("div", {
69
+ "data-slot": "sheet-footer",
70
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
71
+ ...props
72
+ });
73
+ }
74
+ function SheetTitle({ className, ...props }) {
75
+ return /* @__PURE__ */ jsx(Dialog.Title, {
76
+ "data-slot": "sheet-title",
77
+ className: cn("text-base font-medium text-foreground", className),
78
+ ...props
79
+ });
80
+ }
81
+ function SheetDescription({ className, ...props }) {
82
+ return /* @__PURE__ */ jsx(Dialog.Description, {
83
+ "data-slot": "sheet-description",
84
+ className: cn("text-sm text-muted-foreground", className),
85
+ ...props
86
+ });
87
+ }
88
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger };
@@ -0,0 +1,69 @@
1
+ import { Button } from "./button.js";
2
+ import { Input } from "./input.js";
3
+ import { Separator } from "./separator.js";
4
+ import { TooltipContent } from "./tooltip.js";
5
+ import * as React from "react";
6
+ import { VariantProps } from "class-variance-authority";
7
+ type SidebarContextProps = {
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 function useSidebar(): SidebarContextProps;
17
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<"div"> & {
18
+ defaultOpen?: boolean;
19
+ open?: boolean;
20
+ onOpenChange?: (open: boolean) => void;
21
+ }): React.JSX.Element;
22
+ declare function Sidebar({ side, variant, collapsible, className, children, dir, ...props }: React.ComponentProps<"div"> & {
23
+ side?: "left" | "right";
24
+ variant?: "sidebar" | "floating" | "inset";
25
+ collapsible?: "offcanvas" | "icon" | "none";
26
+ }): React.JSX.Element;
27
+ declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
28
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<"button">): React.JSX.Element;
29
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<"main">): React.JSX.Element;
30
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): React.JSX.Element;
31
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
32
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
33
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
34
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
35
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
36
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<"div"> & {
37
+ asChild?: boolean;
38
+ }): React.JSX.Element;
39
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<"button"> & {
40
+ asChild?: boolean;
41
+ }): React.JSX.Element;
42
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
43
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
44
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
45
+ declare const sidebarMenuButtonVariants: (props?: ({
46
+ variant?: "default" | "outline" | null | undefined;
47
+ size?: "default" | "lg" | "sm" | null | undefined;
48
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
49
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
50
+ asChild?: boolean;
51
+ isActive?: boolean;
52
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
53
+ } & VariantProps<typeof sidebarMenuButtonVariants>): React.JSX.Element;
54
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<"button"> & {
55
+ asChild?: boolean;
56
+ showOnHover?: boolean;
57
+ }): React.JSX.Element;
58
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
59
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<"div"> & {
60
+ showIcon?: boolean;
61
+ }): React.JSX.Element;
62
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
63
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
64
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<"a"> & {
65
+ asChild?: boolean;
66
+ size?: "sm" | "md";
67
+ isActive?: boolean;
68
+ }): React.JSX.Element;
69
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };