@handled-ai/design-system 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.
package/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # @handled-ai/design-system
2
+
3
+ A shared design system built on [shadcn/ui](https://ui.shadcn.com). Use it as an **npm package** in React/Next.js apps or via the **shadcn registry** (copy-paste).
4
+
5
+ ## Install as npm package (recommended)
6
+
7
+ ```bash
8
+ npm install @handled-ai/design-system
9
+ # or
10
+ pnpm add @handled-ai/design-system
11
+ # or
12
+ yarn add @handled-ai/design-system
13
+ ```
14
+
15
+ **Peer dependencies:** Install React and the UI primitives if not already present:
16
+
17
+ ```bash
18
+ pnpm add react react-dom @radix-ui/react-slot @radix-ui/react-label radix-ui class-variance-authority clsx tailwind-merge lucide-react
19
+ # Optional, only if you use Chart / ActivityLog / MetricCard etc.:
20
+ pnpm add date-fns recharts zod
21
+ ```
22
+
23
+ **Use in your app:**
24
+
25
+ ```tsx
26
+ import { Button, Card, cn } from "@handled-ai/design-system"
27
+
28
+ export function MyPage() {
29
+ return (
30
+ <Card>
31
+ <Button>Click me</Button>
32
+ </Card>
33
+ )
34
+ }
35
+ ```
36
+
37
+ **Tailwind:** Components use Tailwind classes. In your Tailwind config (or `postcss.config` for Tailwind v4), include the package in `content` so classes are not purged:
38
+
39
+ ```js
40
+ // tailwind.config.js (v3) or postcss / @config (v4)
41
+ content: [
42
+ "./src/**/*.{js,ts,jsx,tsx}",
43
+ "./node_modules/@handled-ai/design-system/dist/**/*.js",
44
+ ]
45
+ ```
46
+
47
+ **Theme:** Define the same CSS variables in your app (e.g. in `globals.css`) so tokens like `--primary`, `--background`, `--radius` exist. You can copy the `:root` and `.dark` blocks from this repo’s `app/globals.css`, or use your own palette.
48
+
49
+ ---
50
+
51
+ ## Registry (copy-paste) usage
52
+
53
+ The project is also published as a custom shadcn registry. Components are copy-pasted into your repo via the `shadcn` CLI.
54
+
55
+ ## What You Can View
56
+
57
+ When the app is running locally, there are two main experiences:
58
+
59
+ - **Component gallery:** `/`
60
+ Browse individual components and UX blocks rendered directly on the page.
61
+ - **Prototype view:** `/preview`
62
+ See the Mercury-style end-to-end product prototype (sidebar, inbox/work queue, detail view, insights dashboard, meetings, and coaching banner patterns).
63
+
64
+ If port `3000` is taken, Next.js will auto-pick another port (for example `3001`, `3002`, `3003`). Use whatever port appears in your terminal output.
65
+
66
+ ## Architecture
67
+
68
+ - **Registry format:** Static JSON files served at `/r/{name}.json`
69
+ - **Component source:** `registry/new-york/ui/` — customized shadcn primitives + custom UX blocks
70
+ - **Theming:** CSS variables — consuming projects define their own palette
71
+ - **Build tool:** `shadcn build` generates distributable JSON from source
72
+
73
+ ## Available Components
74
+
75
+ | Component | Description |
76
+ |-----------|-------------|
77
+ | `button` | Button with multiple variants and sizes |
78
+ | `card` | Card container with header, content, footer |
79
+ | `dialog` | Modal dialog (Radix UI) |
80
+ | `input` | Styled text input |
81
+ | `label` | Form label |
82
+ | `select` | Select dropdown (Radix UI) |
83
+ | `table` | Responsive table |
84
+ | `tabs` | Tab navigation (Radix UI) |
85
+ | `badge` | Status indicator badges |
86
+ | `avatar` | Avatar with image/fallback |
87
+ | `dropdown-menu` | Dropdown menu with keyboard nav |
88
+ | `tooltip` | Hover tooltip |
89
+ | `sheet` | Slide-out panel |
90
+ | `separator` | Visual divider |
91
+ | `skeleton` | Loading placeholder |
92
+ | `scroll-area` | Custom scrollable area |
93
+ | `textarea` | Multi-line text input |
94
+ | `activity-log` | Activity stream row pattern |
95
+ | `chart` | Chart container and helpers |
96
+ | `detail-view` | Production-style detail panel primitives |
97
+ | `inbox-row` | Row-based inbox/work queue item |
98
+ | `metric-card` | KPI cards with variants (including donut-style) |
99
+ | `sidebar` | App navigation sidebar primitives |
100
+
101
+ ## Usage in a Consuming Project
102
+
103
+ ### 1. Add the registry namespace
104
+
105
+ In your project's `components.json`:
106
+
107
+ ```json
108
+ {
109
+ "registries": {
110
+ "@handled": "https://handled-design-system.vercel.app/r/{name}.json"
111
+ }
112
+ }
113
+ ```
114
+
115
+ ### 2. Install components
116
+
117
+ ```bash
118
+ npx shadcn@latest add @handled/button @handled/card @handled/input
119
+ ```
120
+
121
+ ### 3. Set your theme
122
+
123
+ Override CSS variables in your `globals.css` — see the Theming Contract section in `docs/processes/design-system.md` (Barb repo).
124
+
125
+ ## Development
126
+
127
+ ```bash
128
+ pnpm install
129
+ pnpm run dev # Start local app (component gallery at /, prototype at /preview)
130
+ pnpm run registry:build # Build registry JSON files
131
+ ```
132
+
133
+ ### Local URLs
134
+
135
+ - `http://localhost:3000/` (or the port shown in terminal): component gallery
136
+ - `http://localhost:3000/preview` (or same active port): full prototype
137
+ - `http://localhost:3000/r/registry.json` (or same active port): built registry index
138
+
139
+ ## Publishing
140
+
141
+ ### Publishing to npm (public package)
142
+
143
+ 1. Bump version in `package.json` (e.g. `0.1.1`).
144
+ 2. Build the library: `pnpm run build:lib` (outputs to `dist/`).
145
+ 3. Log in to npm: `npm login`.
146
+ 4. Publish: `npm publish`. (Scoped package is public thanks to `"publishConfig": { "access": "public" }`.)
147
+
148
+ ### Registry / Vercel
149
+
150
+ 1. Make component changes in `registry/new-york/ui/` (and app previews as needed).
151
+ 2. Update `registry.json` entries.
152
+ 3. Run `pnpm run registry:build`.
153
+ 4. Validate both `/` and `/preview`.
154
+ 5. Commit and push to `main` (Vercel deploys automatically).
155
+
156
+ ### Adding a new component
157
+
158
+ 1. Add the component to `registry/new-york/ui/`
159
+ 2. Register it in `registry.json`
160
+ 3. Run `pnpm run registry:build`
161
+ 4. Commit and push — Vercel auto-deploys
162
+
163
+ ## Theme Presets
164
+
165
+ The `app/themes/` directory contains example theme presets to validate the theming contract:
166
+
167
+ - **neutral** (default) — Black/white, grayscale accents
168
+ - **forest** — Dark green primary, earthy tones
169
+ - **ocean** — Deep blue primary, cool tones
@@ -0,0 +1,360 @@
1
+ import { ClassValue } from 'clsx';
2
+ import * as React$1 from 'react';
3
+ import { Avatar as Avatar$1, Dialog as Dialog$1, DropdownMenu as DropdownMenu$1, ScrollArea as ScrollArea$1, Select as Select$1, Separator as Separator$1, Tooltip as Tooltip$1, Tabs as Tabs$1 } from 'radix-ui';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+ import { VariantProps } from 'class-variance-authority';
6
+ import * as RechartsPrimitive from 'recharts';
7
+ import * as LabelPrimitive from '@radix-ui/react-label';
8
+
9
+ declare function cn(...inputs: ClassValue[]): string;
10
+
11
+ declare function useIsMobile(): boolean;
12
+
13
+ interface ActivityLogItem {
14
+ id: string;
15
+ type: "workout" | "weighin" | "biometric" | "checkin" | string;
16
+ title: string;
17
+ details: string;
18
+ date: string;
19
+ time: string;
20
+ }
21
+ interface ActivityLogProps {
22
+ items: ActivityLogItem[];
23
+ title?: string;
24
+ initialLimit?: number;
25
+ }
26
+ declare function ActivityRow({ item }: {
27
+ item: ActivityLogItem;
28
+ }): React$1.JSX.Element;
29
+ declare function ActivityLog({ items, title, initialLimit }: ActivityLogProps): React$1.JSX.Element;
30
+
31
+ declare function Avatar({ className, size, ...props }: React$1.ComponentProps<typeof Avatar$1.Root> & {
32
+ size?: "default" | "sm" | "lg";
33
+ }): React$1.JSX.Element;
34
+ declare function AvatarImage({ className, ...props }: React$1.ComponentProps<typeof Avatar$1.Image>): React$1.JSX.Element;
35
+ declare function AvatarFallback({ className, ...props }: React$1.ComponentProps<typeof Avatar$1.Fallback>): React$1.JSX.Element;
36
+ declare function AvatarBadge({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
37
+ declare function AvatarGroup({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
38
+ declare function AvatarGroupCount({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
39
+
40
+ declare const badgeVariants: (props?: ({
41
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
42
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
43
+ declare function Badge({ className, variant, asChild, ...props }: React$1.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
44
+ asChild?: boolean;
45
+ }): React$1.JSX.Element;
46
+
47
+ declare const buttonVariants: (props?: ({
48
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
49
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
50
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
51
+ declare function Button({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
52
+ asChild?: boolean;
53
+ }): React$1.JSX.Element;
54
+
55
+ declare function Card({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
56
+ declare function CardHeader({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
57
+ declare function CardTitle({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
58
+ declare function CardDescription({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
59
+ declare function CardAction({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
60
+ declare function CardContent({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
61
+ declare function CardFooter({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
62
+
63
+ declare const THEMES: {
64
+ readonly light: "";
65
+ readonly dark: ".dark";
66
+ };
67
+ type ChartConfig = {
68
+ [k in string]: {
69
+ label?: React$1.ReactNode;
70
+ icon?: React$1.ComponentType;
71
+ } & ({
72
+ color?: string;
73
+ theme?: never;
74
+ } | {
75
+ color?: never;
76
+ theme: Record<keyof typeof THEMES, string>;
77
+ });
78
+ };
79
+ declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
80
+ config: ChartConfig;
81
+ children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
82
+ }): React$1.JSX.Element;
83
+ declare const ChartStyle: ({ id, config }: {
84
+ id: string;
85
+ config: ChartConfig;
86
+ }) => React$1.JSX.Element | null;
87
+ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
88
+ type TooltipPayloadItem = {
89
+ name?: string;
90
+ value?: number | string;
91
+ dataKey?: string;
92
+ payload?: Record<string, unknown>;
93
+ color?: string;
94
+ fill?: string;
95
+ };
96
+ declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React$1.ComponentProps<"div"> & {
97
+ active?: boolean;
98
+ payload?: TooltipPayloadItem[];
99
+ label?: string;
100
+ labelFormatter?: (value: unknown, payload: TooltipPayloadItem[]) => React$1.ReactNode;
101
+ formatter?: (value: unknown, name: string, item: TooltipPayloadItem, index: number, payload: Record<string, unknown>) => React$1.ReactNode;
102
+ hideLabel?: boolean;
103
+ hideIndicator?: boolean;
104
+ indicator?: "line" | "dot" | "dashed";
105
+ nameKey?: string;
106
+ labelKey?: string;
107
+ labelClassName?: string;
108
+ color?: string;
109
+ }): React$1.JSX.Element | null;
110
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
111
+ type LegendPayloadItem = {
112
+ value?: string;
113
+ dataKey?: string;
114
+ [key: string]: unknown;
115
+ };
116
+ declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React$1.ComponentProps<"div"> & {
117
+ payload?: LegendPayloadItem[];
118
+ verticalAlign?: "top" | "bottom";
119
+ hideIcon?: boolean;
120
+ nameKey?: string;
121
+ }): React$1.JSX.Element | null;
122
+
123
+ declare function DetailViewHeader({ title, breadcrumbs, badges, onBack, }: {
124
+ title: string;
125
+ breadcrumbs: React$1.ReactNode;
126
+ badges: React$1.ReactNode;
127
+ onBack?: () => void;
128
+ }): React$1.JSX.Element;
129
+ declare function DetailViewSummary({ title, children, sources, }: {
130
+ title?: string;
131
+ children: React$1.ReactNode;
132
+ sources?: React$1.ReactNode;
133
+ }): React$1.JSX.Element;
134
+ declare function Citation({ number }: {
135
+ number: number | string;
136
+ }): React$1.JSX.Element;
137
+ declare function DetailViewThread({ title, actionCount, children, }: {
138
+ title: string;
139
+ actionCount?: number;
140
+ children: React$1.ReactNode;
141
+ }): React$1.JSX.Element;
142
+ declare function ThreadMessage({ icon, subject, time, messageCount, threadLink, sender, senderTime, children, isExpanded, }: {
143
+ icon?: React$1.ReactNode;
144
+ subject: string;
145
+ time: string;
146
+ messageCount?: number;
147
+ threadLink?: string;
148
+ sender?: string;
149
+ senderTime?: string;
150
+ children: React$1.ReactNode;
151
+ isExpanded?: boolean;
152
+ }): React$1.JSX.Element;
153
+
154
+ declare function Dialog({ ...props }: React$1.ComponentProps<typeof Dialog$1.Root>): React$1.JSX.Element;
155
+ declare function DialogTrigger({ ...props }: React$1.ComponentProps<typeof Dialog$1.Trigger>): React$1.JSX.Element;
156
+ declare function DialogPortal({ ...props }: React$1.ComponentProps<typeof Dialog$1.Portal>): React$1.JSX.Element;
157
+ declare function DialogClose({ ...props }: React$1.ComponentProps<typeof Dialog$1.Close>): React$1.JSX.Element;
158
+ declare function DialogOverlay({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Overlay>): React$1.JSX.Element;
159
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React$1.ComponentProps<typeof Dialog$1.Content> & {
160
+ showCloseButton?: boolean;
161
+ }): React$1.JSX.Element;
162
+ declare function DialogHeader({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
163
+ declare function DialogFooter({ className, showCloseButton, children, ...props }: React$1.ComponentProps<"div"> & {
164
+ showCloseButton?: boolean;
165
+ }): React$1.JSX.Element;
166
+ declare function DialogTitle({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Title>): React$1.JSX.Element;
167
+ declare function DialogDescription({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Description>): React$1.JSX.Element;
168
+
169
+ declare function DropdownMenu({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Root>): React$1.JSX.Element;
170
+ declare function DropdownMenuPortal({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Portal>): React$1.JSX.Element;
171
+ declare function DropdownMenuTrigger({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Trigger>): React$1.JSX.Element;
172
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Content>): React$1.JSX.Element;
173
+ declare function DropdownMenuGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Group>): React$1.JSX.Element;
174
+ declare function DropdownMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Item> & {
175
+ inset?: boolean;
176
+ variant?: "default" | "destructive";
177
+ }): React$1.JSX.Element;
178
+ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.CheckboxItem>): React$1.JSX.Element;
179
+ declare function DropdownMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.RadioGroup>): React$1.JSX.Element;
180
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.RadioItem>): React$1.JSX.Element;
181
+ declare function DropdownMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Label> & {
182
+ inset?: boolean;
183
+ }): React$1.JSX.Element;
184
+ declare function DropdownMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Separator>): React$1.JSX.Element;
185
+ declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
186
+ declare function DropdownMenuSub({ ...props }: React$1.ComponentProps<typeof DropdownMenu$1.Sub>): React$1.JSX.Element;
187
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.SubTrigger> & {
188
+ inset?: boolean;
189
+ }): React$1.JSX.Element;
190
+ declare function DropdownMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof DropdownMenu$1.SubContent>): React$1.JSX.Element;
191
+
192
+ interface InboxRowProps extends React$1.HTMLAttributes<HTMLDivElement> {
193
+ itemId: string;
194
+ statusColor: "red" | "orange" | "gray";
195
+ primaryText: string;
196
+ secondaryText: string;
197
+ tertiaryText: string;
198
+ isAtRisk?: boolean;
199
+ contactMethods?: {
200
+ phone?: boolean;
201
+ email?: boolean;
202
+ message?: boolean;
203
+ };
204
+ interactionCount: number | string;
205
+ assignee: string;
206
+ status: string;
207
+ time: string;
208
+ }
209
+ declare const InboxRow: React$1.ForwardRefExoticComponent<InboxRowProps & React$1.RefAttributes<HTMLDivElement>>;
210
+ declare function InboxGroupHeader({ title, count }: {
211
+ title: string;
212
+ count: number;
213
+ }): React$1.JSX.Element;
214
+
215
+ declare function Input({ className, type, ...props }: React$1.ComponentProps<"input">): React$1.JSX.Element;
216
+
217
+ declare function Label({ className, ...props }: React$1.ComponentProps<typeof LabelPrimitive.Root>): React$1.JSX.Element;
218
+
219
+ interface MetricDataPoint {
220
+ label: string;
221
+ value: number | string;
222
+ color?: string;
223
+ }
224
+ interface MetricCardProps {
225
+ title: string;
226
+ value?: string | number;
227
+ unit?: string;
228
+ subtitle?: string;
229
+ change?: {
230
+ value: string;
231
+ direction: "up" | "down" | "neutral";
232
+ isGood?: boolean;
233
+ };
234
+ footerText?: string;
235
+ dataPoints?: MetricDataPoint[];
236
+ showExternalLink?: boolean;
237
+ showInfo?: boolean;
238
+ }
239
+ declare function MetricCard({ title, value, unit, subtitle, change, footerText, dataPoints, showExternalLink, showInfo, }: MetricCardProps): React$1.JSX.Element;
240
+
241
+ declare function ScrollArea({ className, children, ...props }: React$1.ComponentProps<typeof ScrollArea$1.Root>): React$1.JSX.Element;
242
+ declare function ScrollBar({ className, orientation, ...props }: React$1.ComponentProps<typeof ScrollArea$1.ScrollAreaScrollbar>): React$1.JSX.Element;
243
+
244
+ declare function Select({ ...props }: React$1.ComponentProps<typeof Select$1.Root>): React$1.JSX.Element;
245
+ declare function SelectGroup({ ...props }: React$1.ComponentProps<typeof Select$1.Group>): React$1.JSX.Element;
246
+ declare function SelectValue({ ...props }: React$1.ComponentProps<typeof Select$1.Value>): React$1.JSX.Element;
247
+ declare function SelectTrigger({ className, size, children, ...props }: React$1.ComponentProps<typeof Select$1.Trigger> & {
248
+ size?: "sm" | "default";
249
+ }): React$1.JSX.Element;
250
+ declare function SelectContent({ className, children, position, align, ...props }: React$1.ComponentProps<typeof Select$1.Content>): React$1.JSX.Element;
251
+ declare function SelectLabel({ className, ...props }: React$1.ComponentProps<typeof Select$1.Label>): React$1.JSX.Element;
252
+ declare function SelectItem({ className, children, ...props }: React$1.ComponentProps<typeof Select$1.Item>): React$1.JSX.Element;
253
+ declare function SelectSeparator({ className, ...props }: React$1.ComponentProps<typeof Select$1.Separator>): React$1.JSX.Element;
254
+ declare function SelectScrollUpButton({ className, ...props }: React$1.ComponentProps<typeof Select$1.ScrollUpButton>): React$1.JSX.Element;
255
+ declare function SelectScrollDownButton({ className, ...props }: React$1.ComponentProps<typeof Select$1.ScrollDownButton>): React$1.JSX.Element;
256
+
257
+ declare function Separator({ className, orientation, decorative, ...props }: React$1.ComponentProps<typeof Separator$1.Root>): React$1.JSX.Element;
258
+
259
+ declare function Sheet({ ...props }: React$1.ComponentProps<typeof Dialog$1.Root>): React$1.JSX.Element;
260
+ declare function SheetTrigger({ ...props }: React$1.ComponentProps<typeof Dialog$1.Trigger>): React$1.JSX.Element;
261
+ declare function SheetClose({ ...props }: React$1.ComponentProps<typeof Dialog$1.Close>): React$1.JSX.Element;
262
+ declare function SheetContent({ className, children, side, showCloseButton, ...props }: React$1.ComponentProps<typeof Dialog$1.Content> & {
263
+ side?: "top" | "right" | "bottom" | "left";
264
+ showCloseButton?: boolean;
265
+ }): React$1.JSX.Element;
266
+ declare function SheetHeader({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
267
+ declare function SheetFooter({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
268
+ declare function SheetTitle({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Title>): React$1.JSX.Element;
269
+ declare function SheetDescription({ className, ...props }: React$1.ComponentProps<typeof Dialog$1.Description>): React$1.JSX.Element;
270
+
271
+ declare function TooltipProvider({ delayDuration, ...props }: React$1.ComponentProps<typeof Tooltip$1.Provider>): React$1.JSX.Element;
272
+ declare function Tooltip({ ...props }: React$1.ComponentProps<typeof Tooltip$1.Root>): React$1.JSX.Element;
273
+ declare function TooltipTrigger({ ...props }: React$1.ComponentProps<typeof Tooltip$1.Trigger>): React$1.JSX.Element;
274
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React$1.ComponentProps<typeof Tooltip$1.Content>): React$1.JSX.Element;
275
+
276
+ type SidebarContextProps = {
277
+ state: "expanded" | "collapsed";
278
+ open: boolean;
279
+ setOpen: (open: boolean) => void;
280
+ openMobile: boolean;
281
+ setOpenMobile: (open: boolean) => void;
282
+ isMobile: boolean;
283
+ toggleSidebar: () => void;
284
+ };
285
+ declare function useSidebar(): SidebarContextProps;
286
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React$1.ComponentProps<"div"> & {
287
+ defaultOpen?: boolean;
288
+ open?: boolean;
289
+ onOpenChange?: (open: boolean) => void;
290
+ }): React$1.JSX.Element;
291
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React$1.ComponentProps<"div"> & {
292
+ side?: "left" | "right";
293
+ variant?: "sidebar" | "floating" | "inset";
294
+ collapsible?: "offcanvas" | "icon" | "none";
295
+ }): React$1.JSX.Element;
296
+ declare function SidebarTrigger({ className, onClick, ...props }: React$1.ComponentProps<typeof Button>): React$1.JSX.Element;
297
+ declare function SidebarRail({ className, ...props }: React$1.ComponentProps<"button">): React$1.JSX.Element;
298
+ declare function SidebarInset({ className, ...props }: React$1.ComponentProps<"main">): React$1.JSX.Element;
299
+ declare function SidebarInput({ className, ...props }: React$1.ComponentProps<typeof Input>): React$1.JSX.Element;
300
+ declare function SidebarHeader({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
301
+ declare function SidebarFooter({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
302
+ declare function SidebarSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): React$1.JSX.Element;
303
+ declare function SidebarContent({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
304
+ declare function SidebarGroup({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
305
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React$1.ComponentProps<"div"> & {
306
+ asChild?: boolean;
307
+ }): React$1.JSX.Element;
308
+ declare function SidebarGroupAction({ className, asChild, ...props }: React$1.ComponentProps<"button"> & {
309
+ asChild?: boolean;
310
+ }): React$1.JSX.Element;
311
+ declare function SidebarGroupContent({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
312
+ declare function SidebarMenu({ className, ...props }: React$1.ComponentProps<"ul">): React$1.JSX.Element;
313
+ declare function SidebarMenuItem({ className, ...props }: React$1.ComponentProps<"li">): React$1.JSX.Element;
314
+ declare const sidebarMenuButtonVariants: (props?: ({
315
+ variant?: "default" | "outline" | null | undefined;
316
+ size?: "default" | "sm" | "lg" | null | undefined;
317
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
318
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React$1.ComponentProps<"button"> & {
319
+ asChild?: boolean;
320
+ isActive?: boolean;
321
+ tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
322
+ } & VariantProps<typeof sidebarMenuButtonVariants>): React$1.JSX.Element;
323
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React$1.ComponentProps<"button"> & {
324
+ asChild?: boolean;
325
+ showOnHover?: boolean;
326
+ }): React$1.JSX.Element;
327
+ declare function SidebarMenuBadge({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
328
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React$1.ComponentProps<"div"> & {
329
+ showIcon?: boolean;
330
+ }): React$1.JSX.Element;
331
+ declare function SidebarMenuSub({ className, ...props }: React$1.ComponentProps<"ul">): React$1.JSX.Element;
332
+ declare function SidebarMenuSubItem({ className, ...props }: React$1.ComponentProps<"li">): React$1.JSX.Element;
333
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React$1.ComponentProps<"a"> & {
334
+ asChild?: boolean;
335
+ size?: "sm" | "md";
336
+ isActive?: boolean;
337
+ }): React$1.JSX.Element;
338
+
339
+ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
340
+
341
+ declare function Table({ className, ...props }: React$1.ComponentProps<"table">): React$1.JSX.Element;
342
+ declare function TableHeader({ className, ...props }: React$1.ComponentProps<"thead">): React$1.JSX.Element;
343
+ declare function TableBody({ className, ...props }: React$1.ComponentProps<"tbody">): React$1.JSX.Element;
344
+ declare function TableFooter({ className, ...props }: React$1.ComponentProps<"tfoot">): React$1.JSX.Element;
345
+ declare function TableRow({ className, ...props }: React$1.ComponentProps<"tr">): React$1.JSX.Element;
346
+ declare function TableHead({ className, ...props }: React$1.ComponentProps<"th">): React$1.JSX.Element;
347
+ declare function TableCell({ className, ...props }: React$1.ComponentProps<"td">): React$1.JSX.Element;
348
+ declare function TableCaption({ className, ...props }: React$1.ComponentProps<"caption">): React$1.JSX.Element;
349
+
350
+ declare function Tabs({ className, orientation, ...props }: React$1.ComponentProps<typeof Tabs$1.Root>): React$1.JSX.Element;
351
+ declare const tabsListVariants: (props?: ({
352
+ variant?: "line" | "default" | null | undefined;
353
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
354
+ declare function TabsList({ className, variant, ...props }: React$1.ComponentProps<typeof Tabs$1.List> & VariantProps<typeof tabsListVariants>): React$1.JSX.Element;
355
+ declare function TabsTrigger({ className, ...props }: React$1.ComponentProps<typeof Tabs$1.Trigger>): React$1.JSX.Element;
356
+ declare function TabsContent({ className, ...props }: React$1.ComponentProps<typeof Tabs$1.Content>): React$1.JSX.Element;
357
+
358
+ declare function Textarea({ className, ...props }: React$1.ComponentProps<"textarea">): React$1.JSX.Element;
359
+
360
+ export { ActivityLog, type ActivityLogItem, type ActivityLogProps, ActivityRow, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Citation, DetailViewHeader, DetailViewSummary, DetailViewThread, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, InboxGroupHeader, InboxRow, type InboxRowProps, Input, Label, MetricCard, type MetricCardProps, type MetricDataPoint, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThreadMessage, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cn, tabsListVariants, useIsMobile, useSidebar };