@burtson-labs/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -0
  3. package/THIRD_PARTY_NOTICES.md +34 -0
  4. package/dist/components/accordion.d.ts +7 -0
  5. package/dist/components/accordion.js +48 -0
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/alert.d.ts +9 -0
  8. package/dist/components/alert.js +41 -0
  9. package/dist/components/alert.js.map +1 -0
  10. package/dist/components/avatar.d.ts +6 -0
  11. package/dist/components/avatar.js +30 -0
  12. package/dist/components/avatar.js.map +1 -0
  13. package/dist/components/badge.d.ts +10 -0
  14. package/dist/components/badge.js +30 -0
  15. package/dist/components/badge.js.map +1 -0
  16. package/dist/components/button.d.ts +12 -0
  17. package/dist/components/button.js +46 -0
  18. package/dist/components/button.js.map +1 -0
  19. package/dist/components/card.d.ts +9 -0
  20. package/dist/components/card.js +57 -0
  21. package/dist/components/card.js.map +1 -0
  22. package/dist/components/checkbox.d.ts +4 -0
  23. package/dist/components/checkbox.js +26 -0
  24. package/dist/components/checkbox.js.map +1 -0
  25. package/dist/components/dialog.d.ts +15 -0
  26. package/dist/components/dialog.js +84 -0
  27. package/dist/components/dialog.js.map +1 -0
  28. package/dist/components/dropdown-menu.d.ts +24 -0
  29. package/dist/components/dropdown-menu.js +127 -0
  30. package/dist/components/dropdown-menu.js.map +1 -0
  31. package/dist/components/input.d.ts +5 -0
  32. package/dist/components/input.js +18 -0
  33. package/dist/components/input.js.map +1 -0
  34. package/dist/components/kbd.d.ts +4 -0
  35. package/dist/components/kbd.js +22 -0
  36. package/dist/components/kbd.js.map +1 -0
  37. package/dist/components/label.d.ts +4 -0
  38. package/dist/components/label.js +16 -0
  39. package/dist/components/label.js.map +1 -0
  40. package/dist/components/popover.d.ts +9 -0
  41. package/dist/components/popover.js +38 -0
  42. package/dist/components/popover.js.map +1 -0
  43. package/dist/components/progress.d.ts +4 -0
  44. package/dist/components/progress.js +22 -0
  45. package/dist/components/progress.js.map +1 -0
  46. package/dist/components/radio-group.d.ts +5 -0
  47. package/dist/components/radio-group.js +28 -0
  48. package/dist/components/radio-group.js.map +1 -0
  49. package/dist/components/scroll-area.d.ts +5 -0
  50. package/dist/components/scroll-area.js +37 -0
  51. package/dist/components/scroll-area.js.map +1 -0
  52. package/dist/components/select.d.ts +13 -0
  53. package/dist/components/select.js +103 -0
  54. package/dist/components/select.js.map +1 -0
  55. package/dist/components/separator.d.ts +4 -0
  56. package/dist/components/separator.js +18 -0
  57. package/dist/components/separator.js.map +1 -0
  58. package/dist/components/sheet.d.ts +17 -0
  59. package/dist/components/sheet.js +77 -0
  60. package/dist/components/sheet.js.map +1 -0
  61. package/dist/components/skeleton.d.ts +3 -0
  62. package/dist/components/skeleton.js +16 -0
  63. package/dist/components/skeleton.js.map +1 -0
  64. package/dist/components/spinner.d.ts +6 -0
  65. package/dist/components/spinner.js +18 -0
  66. package/dist/components/spinner.js.map +1 -0
  67. package/dist/components/switch.d.ts +4 -0
  68. package/dist/components/switch.js +20 -0
  69. package/dist/components/switch.js.map +1 -0
  70. package/dist/components/table.d.ts +10 -0
  71. package/dist/components/table.js +68 -0
  72. package/dist/components/table.js.map +1 -0
  73. package/dist/components/tabs.d.ts +7 -0
  74. package/dist/components/tabs.js +37 -0
  75. package/dist/components/tabs.js.map +1 -0
  76. package/dist/components/textarea.d.ts +3 -0
  77. package/dist/components/textarea.js +16 -0
  78. package/dist/components/textarea.js.map +1 -0
  79. package/dist/components/tooltip.d.ts +8 -0
  80. package/dist/components/tooltip.js +38 -0
  81. package/dist/components/tooltip.js.map +1 -0
  82. package/dist/index.d.ts +28 -0
  83. package/dist/index.js +29 -0
  84. package/dist/lib/utils.d.ts +3 -0
  85. package/dist/lib/utils.js +11 -0
  86. package/dist/lib/utils.js.map +1 -0
  87. package/dist/mui/index.d.ts +13 -0
  88. package/dist/mui/index.js +82 -0
  89. package/dist/mui/index.js.map +1 -0
  90. package/dist/styles.css +2 -0
  91. package/dist/theme.css +170 -0
  92. package/dist/tokens.d.ts +28 -0
  93. package/dist/tokens.js +73 -0
  94. package/dist/tokens.js.map +1 -0
  95. package/package.json +122 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Burtson Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,102 @@
1
+ <div align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://cdn.burtson.ai/logos/burtson-labs-logo-alt.png" />
4
+ <source media="(prefers-color-scheme: light)" srcset="https://cdn.burtson.ai/logos/burtson-labs-logo.png" />
5
+ <img src="https://cdn.burtson.ai/logos/burtson-labs-logo-alt.png" alt="Burtson Labs" width="200" />
6
+ </picture>
7
+
8
+ # Burtson UI
9
+
10
+ **The component system behind every Burtson Labs app.**
11
+
12
+ Accessible React components on Radix and Tailwind CSS, with [Burtson Icons](https://icons.burtson.ai) built in. Install the package, or copy the source into your app and make it yours.
13
+
14
+ [![Docs](https://img.shields.io/badge/docs-ui.burtson.ai-a60ee5)](https://ui.burtson.ai)
15
+ [![npm](https://img.shields.io/npm/v/@burtson-labs/ui?logo=npm)](https://www.npmjs.com/package/@burtson-labs/ui)
16
+ [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
17
+ [![CI](https://github.com/Burtson-Labs/ui/actions/workflows/ci.yml/badge.svg)](https://github.com/Burtson-Labs/ui/actions/workflows/ci.yml)
18
+
19
+ </div>
20
+
21
+ ---
22
+
23
+ ## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/package-build.svg"/><img src="https://icons.burtson.ai/svg-black/package-build.svg" align="center" alt=""/></picture> Install
24
+
25
+ ```bash
26
+ npm install @burtson-labs/ui @burtson-labs/icons
27
+ ```
28
+
29
+ With Tailwind CSS v4, add the theme and let Tailwind see the component classes:
30
+
31
+ ```css
32
+ @import 'tailwindcss';
33
+ @import '@burtson-labs/ui/theme.css';
34
+ @source '../node_modules/@burtson-labs/ui/dist';
35
+ ```
36
+
37
+ Without Tailwind (an MUI app, for example), import the precompiled styles once:
38
+
39
+ ```ts
40
+ import '@burtson-labs/ui/styles.css';
41
+ ```
42
+
43
+ Then:
44
+
45
+ ```tsx
46
+ import { Button } from '@burtson-labs/ui';
47
+
48
+ export const Save = () => <Button>Save</Button>;
49
+ ```
50
+
51
+ ### Or copy the source
52
+
53
+ Every component is also a [shadcn](https://ui.shadcn.com) registry item. The CLI copies the file into `components/ui`, installs its dependencies and adds the Burtson theme:
54
+
55
+ ```bash
56
+ npx shadcn@latest add https://ui.burtson.ai/r/button.json
57
+ ```
58
+
59
+ ## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/panel-grid.svg"/><img src="https://icons.burtson.ai/svg-black/panel-grid.svg" align="center" alt=""/></picture> Components
60
+
61
+ Accordion · Alert · Avatar · Badge · Button · Card · Checkbox · Dialog · Dropdown Menu · Input · Kbd · Label · Popover · Progress · Radio Group · Scroll Area · Select · Separator · Sheet · Skeleton · Spinner · Switch · Table · Tabs · Textarea · Tooltip
62
+
63
+ Live previews and code for each one are at [ui.burtson.ai](https://ui.burtson.ai/docs/components/button).
64
+
65
+ ## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/palette.svg"/><img src="https://icons.burtson.ai/svg-black/palette.svg" align="center" alt=""/></picture> Theming
66
+
67
+ [`src/tokens.ts`](src/tokens.ts) is the single source of colour, radius and type. It generates `theme.css` (the CSS variables, with shadcn names plus `brand`, `brand-soft`, `success` and `warning`), feeds the registry's theme item, and drives the MUI adapter. Light is the default; add `class="dark"` or `data-theme="dark"` to `<html>` for dark.
68
+
69
+ ### MUI apps
70
+
71
+ Most Burtson Labs apps run MUI today. They can share the palette now and adopt components one screen at a time:
72
+
73
+ ```tsx
74
+ import { ThemeProvider } from '@mui/material/styles';
75
+ import { createBurtsonTheme } from '@burtson-labs/ui/mui';
76
+
77
+ <ThemeProvider theme={createBurtsonTheme('dark')}>{app}</ThemeProvider>;
78
+ ```
79
+
80
+ ## <picture><source media="(prefers-color-scheme: dark)" srcset="https://icons.burtson.ai/svg-white/terminal.svg"/><img src="https://icons.burtson.ai/svg-black/terminal.svg" align="center" alt=""/></picture> Develop
81
+
82
+ ```bash
83
+ npm install
84
+ npm run dev # docs site with live components, http://localhost:5173
85
+ npm run check # typecheck, lint, format, tests, package build, site build
86
+ ```
87
+
88
+ | Path | What |
89
+ | ----------------- | -------------------------------------------------------------------------------- |
90
+ | `src/components/` | One file per component; also the registry source |
91
+ | `src/tokens.ts` | Design tokens (edit here, then `npm run theme`) |
92
+ | `src/mui/` | MUI theme adapter |
93
+ | `site/` | Docs site for [ui.burtson.ai](https://ui.burtson.ai); demos in `site/src/demos/` |
94
+ | `scripts/` | Package build, theme and registry generators, link-preview card |
95
+
96
+ Adding a component: write `src/components/<name>.tsx`, export it from `src/index.ts`, add a demo in `site/src/demos/<name>.tsx` and an entry in `site/src/docs.ts`. The registry picks it up on the next build.
97
+
98
+ Linting and formatting follow [Burtson Labs frontend standards](https://github.com/Burtson-Labs/frontend-standards). Every push is audited by [Sentinel](https://github.com/Burtson-Labs/sentinel-audit).
99
+
100
+ ## License
101
+
102
+ [MIT](LICENSE) © Burtson Labs. Inspired by and partly adapted from [shadcn/ui](https://github.com/shadcn-ui/ui) (MIT); see [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
@@ -0,0 +1,34 @@
1
+ # Third-party notices
2
+
3
+ Burtson UI is original work by Burtson Labs, released under the MIT license
4
+ (see [LICENSE](LICENSE)). Its component API, the `data-slot` convention, the
5
+ colour-token names and the registry format follow
6
+ [shadcn/ui](https://github.com/shadcn-ui/ui), and several components adapt
7
+ shadcn/ui's class lists. shadcn/ui is distributed under this license:
8
+
9
+ ```
10
+ MIT License
11
+
12
+ Copyright (c) 2023 shadcn
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+ ```
32
+
33
+ Behaviour and accessibility come from [Radix UI](https://www.radix-ui.com)
34
+ primitives (MIT, © WorkOS), installed as the `radix-ui` dependency.
@@ -0,0 +1,7 @@
1
+ import { Accordion as AccordionPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ declare function Accordion(props: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
4
+ declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
5
+ declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
6
+ declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
7
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
@@ -0,0 +1,48 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import ChevronDown from "@burtson-labs/icons/react/chevron-down";
3
+ import { Accordion } from "radix-ui";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/accordion.tsx
7
+ function Accordion$1(props) {
8
+ return /* @__PURE__ */ jsx(Accordion.Root, {
9
+ "data-slot": "accordion",
10
+ ...props
11
+ });
12
+ }
13
+ function AccordionItem({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx(Accordion.Item, {
15
+ "data-slot": "accordion-item",
16
+ className: cn("border-b last:border-b-0", className),
17
+ ...props
18
+ });
19
+ }
20
+ function AccordionTrigger({ className, children, ...props }) {
21
+ return /* @__PURE__ */ jsx(Accordion.Header, {
22
+ className: "flex",
23
+ children: /* @__PURE__ */ jsxs(Accordion.Trigger, {
24
+ "data-slot": "accordion-trigger",
25
+ className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className),
26
+ ...props,
27
+ children: [children, /* @__PURE__ */ jsx(ChevronDown, {
28
+ className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200",
29
+ "aria-hidden": true
30
+ })]
31
+ })
32
+ });
33
+ }
34
+ function AccordionContent({ className, children, ...props }) {
35
+ return /* @__PURE__ */ jsx(Accordion.Content, {
36
+ "data-slot": "accordion-content",
37
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
38
+ ...props,
39
+ children: /* @__PURE__ */ jsx("div", {
40
+ className: cn("pt-0 pb-4", className),
41
+ children
42
+ })
43
+ });
44
+ }
45
+ //#endregion
46
+ export { Accordion$1 as Accordion, AccordionContent, AccordionItem, AccordionTrigger };
47
+
48
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","names":["Accordion","AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import ChevronDown from '@burtson-labs/icons/react/chevron-down';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nfunction Accordion(props: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />;\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('border-b last:border-b-0', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200\"\n aria-hidden\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn('pt-0 pb-4', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger };\n"],"mappings":";;;;;;AAMA,SAASA,YAAU,OAA6D;CAC9E,OAAO,oBAACC,UAAmB,MAApB;EAAyB,aAAU;EAAY,GAAI;CAAQ,CAAA;AACpE;AAEA,SAAS,cAAc,EACrB,WACA,GAAG,SACoD;CACvD,OACE,oBAACA,UAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAAG,4BAA4B,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,UAAmB,QAApB;EAA2B,WAAU;EACnC,UAAA,qBAACA,UAAmB,SAApB;GACE,aAAU;GACV,WAAW,GACT,oRACA,SACF;GACA,GAAI;GANN,UAAA,CAQG,UACD,oBAAC,aAAD;IACE,WAAU;IACV,eAAA;GACD,CAAA,CACyB;;CACH,CAAA;AAE/B;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,UAAmB,SAApB;EACE,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,oBAAC,OAAD;GAAK,WAAW,GAAG,aAAa,SAAS;GAAI;EAAc,CAAA;CACjC,CAAA;AAEhC"}
@@ -0,0 +1,9 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "destructive" | "success" | "warning" | "brand" | "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>): React.JSX.Element;
7
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
9
+ export { Alert, AlertDescription, AlertTitle, alertVariants };
@@ -0,0 +1,41 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { cva } from "class-variance-authority";
5
+ //#region src/components/alert.tsx
6
+ var alertVariants = cva("relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
7
+ variants: { variant: {
8
+ default: "bg-card text-card-foreground",
9
+ brand: "border-brand/40 bg-brand-soft text-foreground [&>svg]:text-brand",
10
+ success: "border-success/40 bg-success/10 text-foreground [&>svg]:text-success",
11
+ warning: "border-warning/40 bg-warning/10 text-foreground [&>svg]:text-warning",
12
+ destructive: "border-destructive/40 bg-destructive/10 text-destructive [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
13
+ } },
14
+ defaultVariants: { variant: "default" }
15
+ });
16
+ function Alert({ className, variant, ...props }) {
17
+ return /* @__PURE__ */ jsx("div", {
18
+ "data-slot": "alert",
19
+ role: "alert",
20
+ className: cn(alertVariants({ variant }), className),
21
+ ...props
22
+ });
23
+ }
24
+ function AlertTitle({ className, ...props }) {
25
+ return /* @__PURE__ */ jsx("div", {
26
+ "data-slot": "alert-title",
27
+ className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
28
+ ...props
29
+ });
30
+ }
31
+ function AlertDescription({ className, ...props }) {
32
+ return /* @__PURE__ */ jsx("div", {
33
+ "data-slot": "alert-description",
34
+ className: cn("col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed", className),
35
+ ...props
36
+ });
37
+ }
38
+ //#endregion
39
+ export { Alert, AlertDescription, AlertTitle, alertVariants };
40
+
41
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../src/components/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst alertVariants = cva(\n 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n brand: 'border-brand/40 bg-brand-soft text-foreground [&>svg]:text-brand',\n success: 'border-success/40 bg-success/10 text-foreground [&>svg]:text-success',\n warning: 'border-warning/40 bg-warning/10 text-foreground [&>svg]:text-warning',\n destructive:\n 'border-destructive/40 bg-destructive/10 text-destructive [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn('col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle, alertVariants };\n"],"mappings":";;;;;AAKA,IAAM,gBAAgB,IACpB,qOACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,aACE;CACJ,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CACF;AAEA,SAAS,MAAM,EACb,WACA,SACA,GAAG,SACgE;CACnE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,+DAA+D,SAAS;EACtF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAsC;CAC9E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,kGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,6 @@
1
+ import { Avatar as AvatarPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ declare function Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>): React.JSX.Element;
4
+ declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): React.JSX.Element;
5
+ declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): React.JSX.Element;
6
+ export { Avatar, AvatarFallback, AvatarImage };
@@ -0,0 +1,30 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { Avatar } from "radix-ui";
3
+ import "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/avatar.tsx
6
+ function Avatar$1({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx(Avatar.Root, {
8
+ "data-slot": "avatar",
9
+ className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
10
+ ...props
11
+ });
12
+ }
13
+ function AvatarImage({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx(Avatar.Image, {
15
+ "data-slot": "avatar-image",
16
+ className: cn("aspect-square size-full object-cover", className),
17
+ ...props
18
+ });
19
+ }
20
+ function AvatarFallback({ className, ...props }) {
21
+ return /* @__PURE__ */ jsx(Avatar.Fallback, {
22
+ "data-slot": "avatar-fallback",
23
+ className: cn("flex size-full items-center justify-center rounded-full bg-brand-soft text-xs font-medium text-accent-foreground", className),
24
+ ...props
25
+ });
26
+ }
27
+ //#endregion
28
+ export { Avatar$1 as Avatar, AvatarFallback, AvatarImage };
29
+
30
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","names":["Avatar","AvatarPrimitive"],"sources":["../../src/components/avatar.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nfunction Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn('relative flex size-8 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full object-cover', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-brand-soft text-xs font-medium text-accent-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarFallback, AvatarImage };\n"],"mappings":";;;;;AAKA,SAASA,SAAO,EAAE,WAAW,GAAG,SAA4D;CAC1F,OACE,oBAACC,OAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GAAG,8DAA8D,SAAS;EACrF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAA6D;CAChG,OACE,oBAACA,OAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,oBAACA,OAAgB,UAAjB;EACE,aAAU;EACV,WAAW,GACT,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,10 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "secondary" | "destructive" | "success" | "warning" | "brand" | "default" | "outline" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export interface BadgeProps extends React.ComponentProps<'span'>, VariantProps<typeof badgeVariants> {
7
+ asChild?: boolean;
8
+ }
9
+ declare function Badge({ className, variant, asChild, ...props }: BadgeProps): React.JSX.Element;
10
+ export { Badge, badgeVariants };
@@ -0,0 +1,30 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { Slot } from "radix-ui";
3
+ import "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/components/badge.tsx
7
+ var badgeVariants = cva("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3", {
8
+ variants: { variant: {
9
+ default: "border-transparent bg-primary text-primary-foreground",
10
+ secondary: "border-transparent bg-secondary text-secondary-foreground",
11
+ brand: "border-brand/40 bg-brand-soft text-accent-foreground",
12
+ success: "border-transparent bg-success/15 text-success",
13
+ warning: "border-transparent bg-warning/15 text-warning",
14
+ destructive: "border-transparent bg-destructive/15 text-destructive",
15
+ outline: "text-foreground"
16
+ } },
17
+ defaultVariants: { variant: "default" }
18
+ });
19
+ function Badge({ className, variant, asChild = false, ...props }) {
20
+ const Comp = asChild ? Slot.Root : "span";
21
+ return /* @__PURE__ */ jsx(Comp, {
22
+ "data-slot": "badge",
23
+ className: cn(badgeVariants({ variant }), className),
24
+ ...props
25
+ });
26
+ }
27
+ //#endregion
28
+ export { Badge, badgeVariants };
29
+
30
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground',\n secondary: 'border-transparent bg-secondary text-secondary-foreground',\n brand: 'border-brand/40 bg-brand-soft text-accent-foreground',\n success: 'border-transparent bg-success/15 text-success',\n warning: 'border-transparent bg-warning/15 text-warning',\n destructive: 'border-transparent bg-destructive/15 text-destructive',\n outline: 'text-foreground',\n },\n },\n defaultVariants: { variant: 'default' },\n },\n);\n\nexport interface BadgeProps\n extends React.ComponentProps<'span'>, VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n}\n\nfunction Badge({ className, variant, asChild = false, ...props }: BadgeProps) {\n const Comp = asChild ? Slot.Root : 'span';\n return (\n <Comp data-slot=\"badge\" className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n"],"mappings":";;;;;;AAMA,IAAM,gBAAgB,IACpB,uQACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,WAAW;EACX,OAAO;EACP,SAAS;EACT,SAAS;EACT,aAAa;EACb,SAAS;CACX,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CACF;AAOA,SAAS,MAAM,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,SAAqB;CAC5E,MAAM,OAAO,UAAU,KAAK,OAAO;CACnC,OACE,oBAAC,MAAD;EAAM,aAAU;EAAQ,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EAAG,GAAI;CAAQ,CAAA;AAE9F"}
@@ -0,0 +1,12 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "secondary" | "destructive" | "link" | "default" | "outline" | "ghost" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends React.ComponentProps<'button'>, VariantProps<typeof buttonVariants> {
8
+ /** Render the child element instead of a <button>, merging props onto it (e.g. a router link). */
9
+ asChild?: boolean;
10
+ }
11
+ declare function Button({ className, variant, size, asChild, ...props }: ButtonProps): React.JSX.Element;
12
+ export { Button, buttonVariants };
@@ -0,0 +1,46 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { Slot } from "radix-ui";
3
+ import "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/components/button.tsx
7
+ var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,background-color,border-color,box-shadow] outline-none select-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
11
+ destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/30",
12
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/20 dark:hover:bg-input/40",
13
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
14
+ ghost: "hover:bg-accent hover:text-accent-foreground",
15
+ link: "text-brand underline-offset-4 hover:underline"
16
+ },
17
+ size: {
18
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
19
+ sm: "h-8 gap-1.5 rounded-md px-3 text-[13px] has-[>svg]:px-2.5",
20
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
21
+ icon: "size-9",
22
+ "icon-sm": "size-8",
23
+ "icon-lg": "size-10"
24
+ }
25
+ },
26
+ defaultVariants: {
27
+ variant: "default",
28
+ size: "default"
29
+ }
30
+ });
31
+ function Button({ className, variant, size, asChild = false, ...props }) {
32
+ const Comp = asChild ? Slot.Root : "button";
33
+ return /* @__PURE__ */ jsx(Comp, {
34
+ "data-slot": "button",
35
+ className: cn(buttonVariants({
36
+ variant,
37
+ size,
38
+ className
39
+ })),
40
+ ...props
41
+ });
42
+ }
43
+ //#endregion
44
+ export { Button, buttonVariants };
45
+
46
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../src/components/button.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,background-color,border-color,box-shadow] outline-none select-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/30',\n outline:\n 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/20 dark:hover:bg-input/40',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-brand underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2 has-[>svg]:px-3',\n sm: 'h-8 gap-1.5 rounded-md px-3 text-[13px] has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-sm': 'size-8',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport interface ButtonProps\n extends React.ComponentProps<'button'>, VariantProps<typeof buttonVariants> {\n /** Render the child element instead of a <button>, merging props onto it (e.g. a router link). */\n asChild?: boolean;\n}\n\nfunction Button({ className, variant, size, asChild = false, ...props }: ButtonProps) {\n const Comp = asChild ? Slot.Root : 'button';\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n"],"mappings":";;;;;;AAMA,IAAM,iBAAiB,IACrB,wbACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WAAW;GACX,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,WAAW;GACX,WAAW;EACb;CACF;CACA,iBAAiB;EAAE,SAAS;EAAW,MAAM;CAAU;AACzD,CACF;AAQA,SAAS,OAAO,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,SAAsB;CACpF,MAAM,OAAO,UAAU,KAAK,OAAO;CACnC,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EAC1D,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ declare function Card({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
3
+ declare function CardHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
4
+ declare function CardTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
5
+ declare function CardDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
6
+ declare function CardAction({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
7
+ declare function CardContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ declare function CardFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
9
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,57 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/card.tsx
5
+ function Card({ className, ...props }) {
6
+ return /* @__PURE__ */ jsx("div", {
7
+ "data-slot": "card",
8
+ className: cn("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm", className),
9
+ ...props
10
+ });
11
+ }
12
+ function CardHeader({ className, ...props }) {
13
+ return /* @__PURE__ */ jsx("div", {
14
+ "data-slot": "card-header",
15
+ className: cn("grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto]", className),
16
+ ...props
17
+ });
18
+ }
19
+ function CardTitle({ className, ...props }) {
20
+ return /* @__PURE__ */ jsx("div", {
21
+ "data-slot": "card-title",
22
+ className: cn("leading-none font-semibold tracking-tight", className),
23
+ ...props
24
+ });
25
+ }
26
+ function CardDescription({ className, ...props }) {
27
+ return /* @__PURE__ */ jsx("div", {
28
+ "data-slot": "card-description",
29
+ className: cn("text-sm text-muted-foreground", className),
30
+ ...props
31
+ });
32
+ }
33
+ function CardAction({ className, ...props }) {
34
+ return /* @__PURE__ */ jsx("div", {
35
+ "data-slot": "card-action",
36
+ className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
37
+ ...props
38
+ });
39
+ }
40
+ function CardContent({ className, ...props }) {
41
+ return /* @__PURE__ */ jsx("div", {
42
+ "data-slot": "card-content",
43
+ className: cn("px-6", className),
44
+ ...props
45
+ });
46
+ }
47
+ function CardFooter({ className, ...props }) {
48
+ return /* @__PURE__ */ jsx("div", {
49
+ "data-slot": "card-footer",
50
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
51
+ ...props
52
+ });
53
+ }
54
+ //#endregion
55
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
56
+
57
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../src/components/card.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nfunction Card({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n 'flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn('leading-none font-semibold tracking-tight', className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"card-content\" className={cn('px-6', className)} {...props} />;\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn('flex items-center px-6 [.border-t]:pt-6', className)}\n {...props}\n />\n );\n}\n\nexport { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };\n"],"mappings":";;;;AAIA,SAAS,KAAK,EAAE,WAAW,GAAG,SAAsC;CAClE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,qFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,sHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,6CAA6C,SAAS;EACpE,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;CAC7E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,iCAAiC,SAAS;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OAAO,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,QAAQ,SAAS;EAAG,GAAI;CAAQ,CAAA;AACrF;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,2CAA2C,SAAS;EAClE,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,4 @@
1
+ import { Checkbox as CheckboxPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ declare function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>): React.JSX.Element;
4
+ export { Checkbox };
@@ -0,0 +1,26 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { Checkbox } from "radix-ui";
3
+ import "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import Check from "@burtson-labs/icons/react/check";
6
+ //#region src/components/checkbox.tsx
7
+ function Checkbox$1({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx(Checkbox.Root, {
9
+ "data-slot": "checkbox",
10
+ className: cn("peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/20", className),
11
+ ...props,
12
+ children: /* @__PURE__ */ jsx(Checkbox.Indicator, {
13
+ "data-slot": "checkbox-indicator",
14
+ className: "grid place-content-center text-current",
15
+ children: /* @__PURE__ */ jsx(Check, {
16
+ className: "size-3.5",
17
+ strokeWidth: 2.5,
18
+ "aria-hidden": true
19
+ })
20
+ })
21
+ });
22
+ }
23
+ //#endregion
24
+ export { Checkbox$1 as Checkbox };
25
+
26
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","names":["Checkbox","CheckboxPrimitive"],"sources":["../../src/components/checkbox.tsx"],"sourcesContent":["import Check from '@burtson-labs/icons/react/check';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '../lib/utils';\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/20',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current\"\n >\n <Check className=\"size-3.5\" strokeWidth={2.5} aria-hidden />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"mappings":";;;;;;AAMA,SAASA,WAAS,EAAE,WAAW,GAAG,SAA8D;CAC9F,OACE,oBAACC,SAAkB,MAAnB;EACE,aAAU;EACV,WAAW,GACT,yWACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAACA,SAAkB,WAAnB;GACE,aAAU;GACV,WAAU;GAEV,UAAA,oBAAC,OAAD;IAAO,WAAU;IAAW,aAAa;IAAK,eAAA;GAAa,CAAA;EAChC,CAAA;CACP,CAAA;AAE5B"}
@@ -0,0 +1,15 @@
1
+ import { Dialog as DialogPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ declare function Dialog(props: React.ComponentProps<typeof DialogPrimitive.Root>): React.JSX.Element;
4
+ declare function DialogTrigger(props: React.ComponentProps<typeof DialogPrimitive.Trigger>): React.JSX.Element;
5
+ declare function DialogPortal(props: React.ComponentProps<typeof DialogPrimitive.Portal>): React.JSX.Element;
6
+ declare function DialogClose(props: React.ComponentProps<typeof DialogPrimitive.Close>): React.JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): React.JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
9
+ showCloseButton?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
12
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
13
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
14
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
15
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };