@chatsdk-dev/ui 0.0.1

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 (153) hide show
  1. package/README.md +199 -0
  2. package/dist/components/accordion.d.ts +7 -0
  3. package/dist/components/accordion.d.ts.map +1 -0
  4. package/dist/components/accordion.js +18 -0
  5. package/dist/components/alert-dialog.d.ts +19 -0
  6. package/dist/components/alert-dialog.d.ts.map +1 -0
  7. package/dist/components/alert-dialog.js +42 -0
  8. package/dist/components/alert.d.ts +11 -0
  9. package/dist/components/alert.d.ts.map +1 -0
  10. package/dist/components/alert.js +27 -0
  11. package/dist/components/avatar.d.ts +12 -0
  12. package/dist/components/avatar.d.ts.map +1 -0
  13. package/dist/components/avatar.js +23 -0
  14. package/dist/components/badge.d.ts +8 -0
  15. package/dist/components/badge.d.ts.map +1 -0
  16. package/dist/components/badge.js +44 -0
  17. package/dist/components/button-group.d.ts +11 -0
  18. package/dist/components/button-group.d.ts.map +1 -0
  19. package/dist/components/button-group.js +36 -0
  20. package/dist/components/button-loader.d.ts +9 -0
  21. package/dist/components/button-loader.d.ts.map +1 -0
  22. package/dist/components/button-loader.js +10 -0
  23. package/dist/components/button.d.ts +9 -0
  24. package/dist/components/button.d.ts.map +1 -0
  25. package/dist/components/button.js +32 -0
  26. package/dist/components/card.d.ts +12 -0
  27. package/dist/components/card.d.ts.map +1 -0
  28. package/dist/components/card.js +25 -0
  29. package/dist/components/carousel.d.ts +29 -0
  30. package/dist/components/carousel.d.ts.map +1 -0
  31. package/dist/components/carousel.js +91 -0
  32. package/dist/components/collapsible.d.ts +6 -0
  33. package/dist/components/collapsible.d.ts.map +1 -0
  34. package/dist/components/collapsible.js +13 -0
  35. package/dist/components/command.d.ts +20 -0
  36. package/dist/components/command.d.ts.map +1 -0
  37. package/dist/components/command.js +35 -0
  38. package/dist/components/container.d.ts +8 -0
  39. package/dist/components/container.d.ts.map +1 -0
  40. package/dist/components/container.js +5 -0
  41. package/dist/components/dialog.d.ts +19 -0
  42. package/dist/components/dialog.d.ts.map +1 -0
  43. package/dist/components/dialog.js +38 -0
  44. package/dist/components/dots-loader.d.ts +15 -0
  45. package/dist/components/dots-loader.d.ts.map +1 -0
  46. package/dist/components/dots-loader.js +21 -0
  47. package/dist/components/drawer.d.ts +14 -0
  48. package/dist/components/drawer.d.ts.map +1 -0
  49. package/dist/components/drawer.js +35 -0
  50. package/dist/components/dropdown-menu.d.ts +26 -0
  51. package/dist/components/dropdown-menu.d.ts.map +1 -0
  52. package/dist/components/dropdown-menu.js +51 -0
  53. package/dist/components/empty.d.ts +12 -0
  54. package/dist/components/empty.d.ts.map +1 -0
  55. package/dist/components/empty.js +33 -0
  56. package/dist/components/field.d.ts +25 -0
  57. package/dist/components/field.d.ts.map +1 -0
  58. package/dist/components/field.js +68 -0
  59. package/dist/components/form.d.ts +23 -0
  60. package/dist/components/form.d.ts.map +1 -0
  61. package/dist/components/form.js +68 -0
  62. package/dist/components/header.d.ts +6 -0
  63. package/dist/components/header.d.ts.map +1 -0
  64. package/dist/components/header.js +6 -0
  65. package/dist/components/hover-card.d.ts +6 -0
  66. package/dist/components/hover-card.d.ts.map +1 -0
  67. package/dist/components/hover-card.js +14 -0
  68. package/dist/components/index.d.ts +5 -0
  69. package/dist/components/index.d.ts.map +1 -0
  70. package/dist/components/index.js +5 -0
  71. package/dist/components/input-group.d.ts +19 -0
  72. package/dist/components/input-group.d.ts.map +1 -0
  73. package/dist/components/input-group.js +57 -0
  74. package/dist/components/input.d.ts +7 -0
  75. package/dist/components/input.d.ts.map +1 -0
  76. package/dist/components/input.js +6 -0
  77. package/dist/components/label.d.ts +3 -0
  78. package/dist/components/label.d.ts.map +1 -0
  79. package/dist/components/label.js +7 -0
  80. package/dist/components/logo.d.ts +7 -0
  81. package/dist/components/logo.d.ts.map +1 -0
  82. package/dist/components/logo.js +6 -0
  83. package/dist/components/number-flow.d.ts +3 -0
  84. package/dist/components/number-flow.d.ts.map +1 -0
  85. package/dist/components/number-flow.js +6 -0
  86. package/dist/components/popover.d.ts +10 -0
  87. package/dist/components/popover.d.ts.map +1 -0
  88. package/dist/components/popover.js +23 -0
  89. package/dist/components/progress.d.ts +8 -0
  90. package/dist/components/progress.d.ts.map +1 -0
  91. package/dist/components/progress.js +20 -0
  92. package/dist/components/radio-group.d.ts +6 -0
  93. package/dist/components/radio-group.d.ts.map +1 -0
  94. package/dist/components/radio-group.js +13 -0
  95. package/dist/components/scroll-area.d.ts +5 -0
  96. package/dist/components/scroll-area.d.ts.map +1 -0
  97. package/dist/components/scroll-area.js +11 -0
  98. package/dist/components/select.d.ts +17 -0
  99. package/dist/components/select.d.ts.map +1 -0
  100. package/dist/components/select.js +34 -0
  101. package/dist/components/separator.d.ts +3 -0
  102. package/dist/components/separator.d.ts.map +1 -0
  103. package/dist/components/separator.js +7 -0
  104. package/dist/components/sheet.d.ts +15 -0
  105. package/dist/components/sheet.d.ts.map +1 -0
  106. package/dist/components/sheet.js +37 -0
  107. package/dist/components/sidebar.d.ts +65 -0
  108. package/dist/components/sidebar.d.ts.map +1 -0
  109. package/dist/components/sidebar.js +258 -0
  110. package/dist/components/skeleton.d.ts +2 -0
  111. package/dist/components/skeleton.d.ts.map +1 -0
  112. package/dist/components/skeleton.js +5 -0
  113. package/dist/components/spinner.d.ts +3 -0
  114. package/dist/components/spinner.d.ts.map +1 -0
  115. package/dist/components/spinner.js +7 -0
  116. package/dist/components/switch.d.ts +5 -0
  117. package/dist/components/switch.d.ts.map +1 -0
  118. package/dist/components/switch.js +7 -0
  119. package/dist/components/table.d.ts +13 -0
  120. package/dist/components/table.d.ts.map +1 -0
  121. package/dist/components/table.js +28 -0
  122. package/dist/components/tabs.d.ts +12 -0
  123. package/dist/components/tabs.d.ts.map +1 -0
  124. package/dist/components/tabs.js +32 -0
  125. package/dist/components/textarea.d.ts +3 -0
  126. package/dist/components/textarea.d.ts.map +1 -0
  127. package/dist/components/textarea.js +5 -0
  128. package/dist/components/toggle.d.ts +9 -0
  129. package/dist/components/toggle.d.ts.map +1 -0
  130. package/dist/components/toggle.js +26 -0
  131. package/dist/components/tooltip.d.ts +7 -0
  132. package/dist/components/tooltip.d.ts.map +1 -0
  133. package/dist/components/tooltip.js +17 -0
  134. package/dist/components/typography/h1.d.ts +10 -0
  135. package/dist/components/typography/h1.d.ts.map +1 -0
  136. package/dist/components/typography/h1.js +6 -0
  137. package/dist/components/typography/paragraph.d.ts +6 -0
  138. package/dist/components/typography/paragraph.d.ts.map +1 -0
  139. package/dist/components/typography/paragraph.js +6 -0
  140. package/dist/components/typography/text.d.ts +14 -0
  141. package/dist/components/typography/text.d.ts.map +1 -0
  142. package/dist/components/typography/text.js +41 -0
  143. package/dist/hooks/use-breakpoint.d.ts +5 -0
  144. package/dist/hooks/use-breakpoint.d.ts.map +1 -0
  145. package/dist/hooks/use-breakpoint.js +45 -0
  146. package/dist/hooks/use-controllable-state.d.ts +14 -0
  147. package/dist/hooks/use-controllable-state.d.ts.map +1 -0
  148. package/dist/hooks/use-controllable-state.js +35 -0
  149. package/dist/index.css +5405 -0
  150. package/dist/lib/utils.d.ts +3 -0
  151. package/dist/lib/utils.d.ts.map +1 -0
  152. package/dist/lib/utils.js +14 -0
  153. package/package.json +87 -0
package/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # @chatsdk/ui
2
+
3
+ A shadcn/ui component library package for the monorepo, built with **Tailwind CSS v4** and **React 19**.
4
+
5
+ ## Overview
6
+
7
+ This package provides shadcn/ui components configured for Tailwind v4 in a monorepo setup. It includes:
8
+
9
+ - Modern shadcn/ui components without `forwardRef` (React 19 compatible)
10
+ - Tailwind CSS v4 with `@theme inline` configuration
11
+ - OKLCH color system for better color accuracy
12
+ - `tw-animate-css` for animations (replaces `tailwindcss-animate`)
13
+ - Full TypeScript support
14
+
15
+ ## Key Features
16
+
17
+ - **Tailwind v4**: Uses CSS-based configuration with `@theme inline`
18
+ - **OKLCH Colors**: More accurate and modern color system
19
+ - **React 19 Ready**: No forwardRef, uses modern React patterns
20
+ - **Monorepo Optimized**: Proper package exports and imports
21
+ - **TypeScript**: Full type safety
22
+ - **data-slot attributes**: For advanced styling capabilities
23
+
24
+ ## Usage
25
+
26
+ ### Installing Components
27
+
28
+ From your app directory (e.g., `apps/frontend`):
29
+
30
+ ```bash
31
+ cd apps/frontend
32
+ pnpm dlx shadcn@canary add button
33
+ ```
34
+
35
+ The CLI will automatically install components to `packages/ui` and configure imports.
36
+
37
+ ### Importing Components
38
+
39
+ ```tsx
40
+ import { Button } from "@chatsdk-dev/ui/components/button";
41
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
42
+
43
+ export function MyComponent() {
44
+ return (
45
+ <div>
46
+ <Button variant="outline" size="lg">
47
+ Click me
48
+ </Button>
49
+ </div>
50
+ );
51
+ }
52
+ ```
53
+
54
+ ### Available Imports
55
+
56
+ ```tsx
57
+ // Components
58
+ import { Button } from "@chatsdk-dev/ui/components/button";
59
+
60
+ // Utilities
61
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
62
+
63
+ // Hooks (when added)
64
+ import { useTheme } from "@chatsdk-dev/ui/hooks/use-theme";
65
+ ```
66
+
67
+ ## Configuration
68
+
69
+ ### Tailwind CSS v4 Setup
70
+
71
+ The package uses Tailwind v4's new CSS-based configuration:
72
+
73
+ ```css
74
+ /* packages/ui/src/styles.css */
75
+ @import "tailwindcss";
76
+ @import "tw-animate-css";
77
+
78
+ :root {
79
+ --background: oklch(100% 0 0);
80
+ --foreground: oklch(15% 0 0);
81
+ /* ... more variables */
82
+ }
83
+
84
+ @theme inline {
85
+ --color-background: var(--background);
86
+ --color-foreground: var(--foreground);
87
+ /* ... more theme variables */
88
+ }
89
+ ```
90
+
91
+ ### App Integration
92
+
93
+ In your app's `globals.css`:
94
+
95
+ ```css
96
+ @import "@chatsdk-dev/ui/styles.css";
97
+ ```
98
+
99
+ ### components.json
100
+
101
+ Each workspace needs a `components.json` file:
102
+
103
+ **packages/ui/components.json**:
104
+
105
+ ```json
106
+ {
107
+ "$schema": "https://ui.shadcn.com/schema.json",
108
+ "style": "new-york",
109
+ "rsc": true,
110
+ "tsx": true,
111
+ "tailwind": {
112
+ "config": "",
113
+ "css": "src/styles.css",
114
+ "baseColor": "zinc",
115
+ "cssVariables": true
116
+ },
117
+ "iconLibrary": "lucide",
118
+ "aliases": {
119
+ "components": "@chatsdk-dev/ui/components",
120
+ "utils": "@chatsdk-dev/ui/lib/utils",
121
+ "hooks": "@chatsdk-dev/ui/hooks",
122
+ "lib": "@chatsdk-dev/ui/lib",
123
+ "ui": "@chatsdk-dev/ui/components"
124
+ }
125
+ }
126
+ ```
127
+
128
+ **apps/frontend/components.json**:
129
+
130
+ ```json
131
+ {
132
+ "$schema": "https://ui.shadcn.com/schema.json",
133
+ "style": "new-york",
134
+ "rsc": true,
135
+ "tsx": true,
136
+ "tailwind": {
137
+ "config": "",
138
+ "css": "../../packages/ui/src/styles.css",
139
+ "baseColor": "zinc",
140
+ "cssVariables": true
141
+ },
142
+ "iconLibrary": "lucide",
143
+ "aliases": {
144
+ "components": "@/components",
145
+ "hooks": "@/hooks",
146
+ "lib": "@/lib",
147
+ "utils": "@chatsdk-dev/ui/lib/utils",
148
+ "ui": "@chatsdk-dev/ui/components"
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## Development
154
+
155
+ ### Building Styles
156
+
157
+ ```bash
158
+ cd packages/ui
159
+ pnpm dev:styles # Watch mode
160
+ pnpm build:styles # Build once
161
+ ```
162
+
163
+ ### Type Checking
164
+
165
+ ```bash
166
+ pnpm check-types
167
+ ```
168
+
169
+ ## Adding New Components
170
+
171
+ Use the shadcn CLI from your app directory:
172
+
173
+ ```bash
174
+ cd apps/frontend
175
+ pnpm dlx shadcn@canary add [component-name]
176
+ ```
177
+
178
+ The CLI will:
179
+
180
+ 1. Install the component in `packages/ui/src/components/`
181
+ 2. Add necessary dependencies to `packages/ui/package.json`
182
+ 3. Configure imports automatically
183
+
184
+ ## Migration from Tailwind v3
185
+
186
+ If migrating from Tailwind v3:
187
+
188
+ 1. Remove `tailwind.config.js/ts` files
189
+ 2. Update CSS to use `@theme inline` pattern
190
+ 3. Replace HSL colors with OKLCH
191
+ 4. Replace `tailwindcss-animate` with `tw-animate-css`
192
+ 5. Remove `forwardRef` from components
193
+ 6. Update color references in chartConfig (remove `hsl()` wrapper)
194
+
195
+ ## Reference
196
+
197
+ - [shadcn/ui Tailwind v4 Guide](https://ui.shadcn.com/docs/tailwind-v4)
198
+ - [shadcn/ui Monorepo Guide](https://ui.shadcn.com/docs/monorepo)
199
+ - [Tailwind CSS v4 Documentation](https://tailwindcss.com/docs)
@@ -0,0 +1,7 @@
1
+ import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
2
+ declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
3
+ declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react/jsx-runtime").JSX.Element;
6
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
7
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAK3E,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,2CAQxE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,2CAQ5E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,2CAuBlC;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,2CAiBhC;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
4
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
5
+ import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
6
+ function Accordion({ className, ...props }) {
7
+ return (_jsx(AccordionPrimitive.Root, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props }));
8
+ }
9
+ function AccordionItem({ className, ...props }) {
10
+ return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("not-last:border-b", className), ...props }));
11
+ }
12
+ function AccordionTrigger({ className, children, ...props }) {
13
+ return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("focus-visible:ring-ring/50 focus-visible:border-ring focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-md py-4 text-left text-sm font-medium hover:underline focus-visible:ring-3 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent transition-all outline-none disabled:pointer-events-none disabled:opacity-50", className), ...props, children: [children, _jsx(ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }), _jsx(ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })] }) }));
14
+ }
15
+ function AccordionContent({ className, children, ...props }) {
16
+ return (_jsx(AccordionPrimitive.Panel, { "data-slot": "accordion-content", className: "data-open:animate-accordion-down data-closed:animate-accordion-up text-sm overflow-hidden", ...props, children: _jsx("div", { className: cn("pt-0 pb-4 [&_a]:hover:text-foreground h-(--accordion-panel-height) data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", className), children: children }) }));
17
+ }
18
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
3
+ import { Button } from "@chatsdk-dev/ui/components/button";
4
+ declare function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
6
+ declare function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function AlertDialogOverlay({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function AlertDialogContent({ className, size, ...props }: AlertDialogPrimitive.Popup.Props & {
9
+ size?: "default" | "sm";
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
12
+ declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
13
+ declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
14
+ declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
15
+ declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
16
+ declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>): import("react/jsx-runtime").JSX.Element;
17
+ declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialogPrimitive.Close.Props & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): import("react/jsx-runtime").JSX.Element;
18
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
19
+ //# sourceMappingURL=alert-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/components/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,2CAEjE;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,2CAI3E;AAED,iBAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,2CAIzE;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,2CAWrC;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,GAAG;IACpC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB,2CAeA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,2CAWzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,2CAW/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,2CAQrC;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,GACjC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,2CAS9D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
4
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
5
+ import { Button } from "@chatsdk-dev/ui/components/button";
6
+ function AlertDialog({ ...props }) {
7
+ return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
8
+ }
9
+ function AlertDialogTrigger({ ...props }) {
10
+ return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
11
+ }
12
+ function AlertDialogPortal({ ...props }) {
13
+ return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
14
+ }
15
+ function AlertDialogOverlay({ className, ...props }) {
16
+ return (_jsx(AlertDialogPrimitive.Backdrop, { "data-slot": "alert-dialog-overlay", className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50", className), ...props }));
17
+ }
18
+ function AlertDialogContent({ className, size = "default", ...props }) {
19
+ return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Popup, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/10 gap-4 rounded-sm p-4 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none", className), ...props })] }));
20
+ }
21
+ function AlertDialogHeader({ className, ...props }) {
22
+ return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
23
+ }
24
+ function AlertDialogFooter({ className, ...props }) {
25
+ return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("bg-muted/50 -mx-4 -mb-4 rounded-b-sm border-t p-4 flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className), ...props }));
26
+ }
27
+ function AlertDialogMedia({ className, ...props }) {
28
+ return (_jsx("div", { "data-slot": "alert-dialog-media", className: cn("bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-sm sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", className), ...props }));
29
+ }
30
+ function AlertDialogTitle({ className, ...props }) {
31
+ return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
32
+ }
33
+ function AlertDialogDescription({ className, ...props }) {
34
+ return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", className), ...props }));
35
+ }
36
+ function AlertDialogAction({ className, ...props }) {
37
+ return (_jsx(Button, { "data-slot": "alert-dialog-action", className: cn(className), ...props }));
38
+ }
39
+ function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
40
+ return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-cancel", className: cn(className), render: _jsx(Button, { variant: variant, size: size }), ...props }));
41
+ }
42
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "destructive" | "default" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): import("react/jsx-runtime").JSX.Element;
7
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
11
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/components/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,aAAa;;8EAclB,CAAC;AAEF,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,2CASlE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQxE;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
4
+ const alertVariants = cva("grid gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 w-full relative group/alert", {
5
+ variants: {
6
+ variant: {
7
+ default: "bg-card text-card-foreground",
8
+ destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
9
+ },
10
+ },
11
+ defaultVariants: {
12
+ variant: "default",
13
+ },
14
+ });
15
+ function Alert({ className, variant, ...props }) {
16
+ return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
17
+ }
18
+ function AlertTitle({ className, ...props }) {
19
+ return (_jsx("div", { "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", className), ...props }));
20
+ }
21
+ function AlertDescription({ className, ...props }) {
22
+ return (_jsx("div", { "data-slot": "alert-description", className: cn("text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4 [&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3", className), ...props }));
23
+ }
24
+ function AlertAction({ className, ...props }) {
25
+ return (_jsx("div", { "data-slot": "alert-action", className: cn("absolute top-2 right-2", className), ...props }));
26
+ }
27
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
3
+ declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
4
+ size?: "default" | "sm" | "lg";
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
9
+ declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
11
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
12
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/components/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;CAChC,2CAYA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAWxE;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,2CAWhC;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAczE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWxE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
4
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
5
+ function Avatar({ className, size = "default", ...props }) {
6
+ return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn("size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6 after:border-border group/avatar relative flex shrink-0 select-none after:absolute after:inset-0 after:border after:mix-blend-darken dark:after:mix-blend-lighten", className), ...props }));
7
+ }
8
+ function AvatarImage({ className, ...props }) {
9
+ return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("rounded-full aspect-square size-full object-cover", className), ...props }));
10
+ }
11
+ function AvatarFallback({ className, ...props }) {
12
+ return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("bg-muted text-muted-foreground rounded-full flex size-full items-center justify-center text-sm group-data-[size=sm]/avatar:text-xs", className), ...props }));
13
+ }
14
+ function AvatarBadge({ className, ...props }) {
15
+ return (_jsx("span", { "data-slot": "avatar-badge", className: cn("bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className), ...props }));
16
+ }
17
+ function AvatarGroup({ className, ...props }) {
18
+ return (_jsx("div", { "data-slot": "avatar-group", className: cn("*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2", className), ...props }));
19
+ }
20
+ function AvatarGroupCount({ className, ...props }) {
21
+ return (_jsx("div", { "data-slot": "avatar-group-count", className: cn("bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 ring-background relative flex shrink-0 items-center justify-center ring-2", className), ...props }));
22
+ }
23
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
@@ -0,0 +1,8 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ export declare const badgeVariants: (props?: ({
4
+ variant?: "secondary" | "tertiary" | "destructive" | "outline" | "default" | "success" | "warning" | "error" | "info" | "subtle" | "discount" | "magic" | null | undefined;
5
+ rounded?: "none" | "default" | "full" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
8
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,eAAO,MAAM,aAAa;;;8EAyCzB,CAAC;AAEF,wBAAgB,KAAK,CAAC,EACpB,SAAS,EACT,OAAmB,EACnB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,8FAevE"}
@@ -0,0 +1,44 @@
1
+ import { mergeProps } from "@base-ui/react/merge-props";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
5
+ export const badgeVariants = cva("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", {
6
+ variants: {
7
+ variant: {
8
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
9
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
10
+ tertiary: "border-transparent bg-tertiary text-muted-foreground [a&]:hover:bg-tertiary/90 dark:bg-tertiary/90 dark:text-tertiary-foreground",
11
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
12
+ success: "border-transparent bg-success text-white [a&]:hover:bg-success/90",
13
+ warning: "border-transparent bg-warning text-white [a&]:hover:bg-warning/90",
14
+ error: "border-transparent bg-error text-white [a&]:hover:bg-error/90",
15
+ info: "border-transparent bg-info text-white [a&]:hover:bg-info/90",
16
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
17
+ subtle: "bg-muted/20 border-border/30 [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
18
+ discount: "border-transparent bg-linear-to-br from-red-400 to-rose-300 text-white",
19
+ magic: "bg-linear-to-br/increasing from-purple-600 to-amber-500 px-2.5 text-xs font-medium text-white ring-1 ring-inset ring-white/20 ring-offset-1 ring-offset-gray-950/5",
20
+ },
21
+ rounded: {
22
+ none: "rounded-none",
23
+ default: "rounded-lg",
24
+ full: "rounded-full",
25
+ },
26
+ },
27
+ defaultVariants: {
28
+ rounded: "default",
29
+ variant: "default",
30
+ },
31
+ });
32
+ export function Badge({ className, variant = "default", render, ...props }) {
33
+ return useRender({
34
+ defaultTagName: "span",
35
+ props: mergeProps({
36
+ className: cn(badgeVariants({ className, variant })),
37
+ }, props),
38
+ render,
39
+ state: {
40
+ slot: "badge",
41
+ variant,
42
+ },
43
+ });
44
+ }
@@ -0,0 +1,11 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import { Separator } from "@chatsdk-dev/ui/components/separator";
4
+ declare const buttonGroupVariants: (props?: ({
5
+ orientation?: "horizontal" | "vertical" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): import("react/jsx-runtime").JSX.Element;
8
+ declare function ButtonGroupText({ className, render, ...props }: useRender.ComponentProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
9
+ declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
10
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, };
11
+ //# sourceMappingURL=button-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../src/components/button-group.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,QAAA,MAAM,mBAAmB;;8EAexB,CAAC;AAEF,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,2CAUxE;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,8FAiBjC;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,WAAwB,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CAYxC;AAED,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { mergeProps } from "@base-ui/react/merge-props";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
6
+ import { Separator } from "@chatsdk-dev/ui/components/separator";
7
+ const buttonGroupVariants = cva("has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
8
+ variants: {
9
+ orientation: {
10
+ horizontal: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0 [&>[data-slot]]:rounded-r-none",
11
+ vertical: "[&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg! flex-col [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0 [&>[data-slot]]:rounded-b-none",
12
+ },
13
+ },
14
+ defaultVariants: {
15
+ orientation: "horizontal",
16
+ },
17
+ });
18
+ function ButtonGroup({ className, orientation, ...props }) {
19
+ return (_jsx("div", { role: "group", "data-slot": "button-group", "data-orientation": orientation, className: cn(buttonGroupVariants({ orientation }), className), ...props }));
20
+ }
21
+ function ButtonGroupText({ className, render, ...props }) {
22
+ return useRender({
23
+ defaultTagName: "div",
24
+ props: mergeProps({
25
+ className: cn("bg-muted gap-2 rounded-lg border px-2.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none", className),
26
+ }, props),
27
+ render,
28
+ state: {
29
+ slot: "button-group-text",
30
+ },
31
+ });
32
+ }
33
+ function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
34
+ return (_jsx(Separator, { "data-slot": "button-group-separator", orientation: orientation, className: cn("bg-input relative self-stretch data-[orientation=horizontal]:mx-px data-[orientation=horizontal]:w-auto data-[orientation=vertical]:my-px data-[orientation=vertical]:h-auto", className), ...props }));
35
+ }
36
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, };
@@ -0,0 +1,9 @@
1
+ import { type ButtonProps } from "./button";
2
+ type ButtonLoaderProps = Omit<ButtonProps, "render"> & {
3
+ isPending?: boolean;
4
+ rightSection?: React.ReactNode;
5
+ };
6
+ export declare function ButtonLoaderIcon(): import("react/jsx-runtime").JSX.Element;
7
+ export declare function ButtonLoader({ isPending, children, disabled, rightSection, className, ...props }: ButtonLoaderProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=button-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-loader.d.ts","sourceRoot":"","sources":["../../src/components/button-loader.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGpD,KAAK,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC,CAAC;AAEF,wBAAgB,gBAAgB,4CAS/B;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAenB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LoaderCircle } from "lucide-react";
3
+ import { cn } from "../lib/utils";
4
+ import { Button } from "./button";
5
+ export function ButtonLoaderIcon() {
6
+ return (_jsx(LoaderCircle, { role: "status", "aria-label": "Loading", size: 22, className: "absolute left-[-20px] animate-spin mr-1" }));
7
+ }
8
+ export function ButtonLoader({ isPending, children, disabled, rightSection, className, ...props }) {
9
+ return (_jsxs(Button, { type: "submit", className: cn("relative px-7", className), disabled: isPending || disabled, ...props, children: [_jsxs("div", { className: "relative flex items-center justify-center", children: [isPending && _jsx(ButtonLoaderIcon, {}), children] }), rightSection] }));
10
+ }
@@ -0,0 +1,9 @@
1
+ import { type ButtonProps as BaseButtonProps } from "@base-ui/react/button";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ export declare const buttonVariants: (props?: ({
4
+ variant?: "link" | "primary" | "secondary" | "tertiary" | "destructive" | "outline" | "ghost" | "nav-item" | "transparent" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type ButtonProps = BaseButtonProps & VariantProps<typeof buttonVariants>;
8
+ export declare function Button({ className, variant, size, nativeButton, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,IAAI,eAAe,EACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,eAAO,MAAM,cAAc;;;8EAmC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAEhF,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,WAAW,2CASb"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button as BaseButton, } from "@base-ui/react/button";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "@chatsdk-dev/ui/lib/utils";
5
+ export const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm transition-all text-button disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive active:scale-98", {
6
+ variants: {
7
+ variant: {
8
+ primary: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/80",
9
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-blaze-orange-600/84",
10
+ tertiary: "font-tertiary-foreground focus-visible:ring-[3px] border bg-muted shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
11
+ destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 dark:bg-destructive/60",
12
+ outline: "border bg-background shadow-xs text-foreground hover:bg-accent dark:border-input dark:hover:bg-input/50",
13
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
14
+ link: "text-primary underline-offset-4 hover:underline cursor-pointer",
15
+ "nav-item": "w-full justify-start text-primary underline-offset-4 hover:bg-accent cursor-pointer",
16
+ transparent: "bg-transparent hover:bg-transparent! hover:text-primary-foreground! text-primary-foreground/80 dark:text-primary-foreground/70",
17
+ },
18
+ size: {
19
+ default: "h-8 px-4 py-2 has-[>svg]:px-3",
20
+ sm: "h-6 rounded-sm gap-1.5 px-3 has-[>svg]:px-2.5",
21
+ lg: "h-10 rounded-sm px-6 has-[>svg]:px-4",
22
+ icon: "size-9",
23
+ },
24
+ },
25
+ defaultVariants: {
26
+ variant: "primary",
27
+ size: "default",
28
+ },
29
+ });
30
+ export function Button({ className, variant, size, nativeButton, ...props }) {
31
+ return (_jsx(BaseButton, { "data-slot": "button", nativeButton: nativeButton ?? (props.render ? false : undefined), className: cn(buttonVariants({ variant, size }), className), ...props }));
32
+ }
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
3
+ size?: "default" | "sm";
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
6
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
7
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
11
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
12
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,2CAY3D;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQtE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW5E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAC"}