@equal-experts/kuat-react 0.2.4 → 0.2.6
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 +117 -1
- package/dist/accordion-Da2BsKRK.js +46 -0
- package/dist/accordion.d.ts +2 -0
- package/dist/accordion.js +9 -0
- package/dist/alert-dialog-C769FFOM.js +113 -0
- package/dist/alert-dialog.d.ts +2 -0
- package/dist/alert-dialog.js +16 -0
- package/dist/badge-BXjC4NYJ.js +26 -0
- package/dist/badge.d.ts +3 -0
- package/dist/badge.js +7 -0
- package/dist/button-X-yV4Iwq.js +44 -0
- package/dist/button-group-C55D9oj4.js +93 -0
- package/dist/button-group.d.ts +2 -0
- package/dist/button-group.js +9 -0
- package/dist/button.d.ts +3 -0
- package/dist/button.js +7 -0
- package/dist/components/ui/button-group.d.ts +12 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/index-D5fkjZ2l.js +34 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +30 -2513
- package/dist/style.css +1 -1
- package/dist/styles-qaFjX9_3.js +2278 -0
- package/package.json +25 -3
- package/scripts/copy-docs.js +88 -0
- package/scripts/setup-docs.js +169 -0
package/README.md
CHANGED
|
@@ -42,6 +42,42 @@ pnpm add lucide-react
|
|
|
42
42
|
|
|
43
43
|
**Note:** `@equal-experts/kuat-core` is bundled with this package - you don't need to install it separately. Only install the Radix UI packages for the components you actually use.
|
|
44
44
|
|
|
45
|
+
### Recommended: Use Subpath Imports
|
|
46
|
+
|
|
47
|
+
To avoid installing all peer dependencies when you only need specific components, use **subpath imports**. This allows you to import only the components you need and only install their required peer dependencies.
|
|
48
|
+
|
|
49
|
+
**Example: Only using Button**
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Only install peer dependencies for Button
|
|
53
|
+
pnpm add react react-dom @radix-ui/react-slot
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
// Import from subpath - only Button and its dependencies are required
|
|
58
|
+
import { Button } from "@equal-experts/kuat-react/button";
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Component Peer Dependencies:**
|
|
62
|
+
|
|
63
|
+
- **Button**: `react`, `react-dom`, `@radix-ui/react-slot`
|
|
64
|
+
- **Accordion**: `react`, `react-dom`, `@radix-ui/react-accordion`, `lucide-react`
|
|
65
|
+
- **AlertDialog**: `react`, `react-dom`, `@radix-ui/react-alert-dialog`
|
|
66
|
+
- **Badge**: `react`, `react-dom` (no additional Radix UI dependencies)
|
|
67
|
+
|
|
68
|
+
**Using Main Export (All Components):**
|
|
69
|
+
|
|
70
|
+
If you import from the main package, you'll need all peer dependencies:
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
// This requires ALL peer dependencies to be installed
|
|
74
|
+
import { Button, Accordion, AlertDialog } from "@equal-experts/kuat-react";
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**lucide-react Version Support:**
|
|
78
|
+
|
|
79
|
+
The package supports `lucide-react` versions `^0.344.0 || >=0.400.0`, including the latest versions (0.562.0+).
|
|
80
|
+
|
|
45
81
|
---
|
|
46
82
|
|
|
47
83
|
## Setup
|
|
@@ -144,18 +180,98 @@ If you want to use different fonts or load them differently, you can override th
|
|
|
144
180
|
|
|
145
181
|
---
|
|
146
182
|
|
|
183
|
+
## AI Agent Documentation Setup
|
|
184
|
+
|
|
185
|
+
The Kuat Design System includes AI-friendly documentation optimized for LLM consumption. This documentation helps AI assistants understand the design system, generate code that follows design patterns, and maintain brand consistency.
|
|
186
|
+
|
|
187
|
+
### Setup Documentation
|
|
188
|
+
|
|
189
|
+
To make the agent documentation available in your repository for LLM context (e.g., Cursor), run the setup script:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Using pnpm exec (recommended)
|
|
193
|
+
pnpm exec @equal-experts/kuat-react setup-docs
|
|
194
|
+
|
|
195
|
+
# Using npm exec
|
|
196
|
+
npm exec @equal-experts/kuat-react setup-docs
|
|
197
|
+
|
|
198
|
+
# Or if you have the package installed locally
|
|
199
|
+
cd node_modules/@equal-experts/kuat-react && pnpm setup-docs
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This will copy the agent documentation to `.cursor/rules/kuat-docs/` in your repository root.
|
|
203
|
+
|
|
204
|
+
### What Gets Copied
|
|
205
|
+
|
|
206
|
+
The setup script copies the following documentation:
|
|
207
|
+
|
|
208
|
+
- **Design System** (`design/`) - Colors, typography, spacing, borders, layouts, logo usage
|
|
209
|
+
- **Component Guidelines** (`components/`) - Component development patterns and best practices
|
|
210
|
+
- **Content Guidelines** (`content/`) - Content writing guidelines for marketing, sales, and product interfaces
|
|
211
|
+
|
|
212
|
+
### Using the Documentation
|
|
213
|
+
|
|
214
|
+
Once copied, you can:
|
|
215
|
+
|
|
216
|
+
1. **Reference in Cursor Rules**: Add references to `.cursor/rules/kuat-docs/` in your `.cursorrules` file
|
|
217
|
+
2. **LLM Context**: The documentation is optimized for LLM consumption and provides context for:
|
|
218
|
+
- Understanding the design system
|
|
219
|
+
- Using components correctly
|
|
220
|
+
- Maintaining brand consistency
|
|
221
|
+
- Writing appropriate content
|
|
222
|
+
|
|
223
|
+
### Updating Documentation
|
|
224
|
+
|
|
225
|
+
After installing a new version of `@equal-experts/kuat-react`, run the setup script again to update the documentation:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
pnpm exec @equal-experts/kuat-react setup-docs
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
The script will automatically clean and replace the existing documentation.
|
|
232
|
+
|
|
233
|
+
### Documentation Location
|
|
234
|
+
|
|
235
|
+
The documentation is copied to:
|
|
236
|
+
```
|
|
237
|
+
.cursor/rules/kuat-docs/
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
This location is chosen because:
|
|
241
|
+
- It's within the `.cursor/` directory (typically gitignored)
|
|
242
|
+
- It's in the `rules/` subdirectory where Cursor looks for context files
|
|
243
|
+
- It's clearly namespaced as `kuat-docs/` to avoid conflicts
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
147
247
|
## Basic Usage
|
|
148
248
|
|
|
149
249
|
### Import Components
|
|
150
250
|
|
|
251
|
+
You can import components in two ways:
|
|
252
|
+
|
|
253
|
+
**Option 1: Subpath Import (Recommended for single components)**
|
|
254
|
+
|
|
151
255
|
```typescript
|
|
256
|
+
// Import only Button - only requires Button's peer dependencies
|
|
257
|
+
import { Button } from "@equal-experts/kuat-react/button";
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Option 2: Main Package Import**
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
// Import from main package - requires all peer dependencies
|
|
152
264
|
import { Button } from "@equal-experts/kuat-react";
|
|
153
265
|
```
|
|
154
266
|
|
|
155
267
|
### Use in Your App
|
|
156
268
|
|
|
157
269
|
```tsx
|
|
158
|
-
|
|
270
|
+
// Recommended: Subpath import
|
|
271
|
+
import { Button } from "@equal-experts/kuat-react/button";
|
|
272
|
+
|
|
273
|
+
// Or: Main package import
|
|
274
|
+
// import { Button } from "@equal-experts/kuat-react";
|
|
159
275
|
|
|
160
276
|
function App() {
|
|
161
277
|
return (
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as t, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import * as s from "react";
|
|
3
|
+
import * as a from "@radix-ui/react-accordion";
|
|
4
|
+
import { ChevronDown as d } from "lucide-react";
|
|
5
|
+
import { c as i } from "./styles-qaFjX9_3.js";
|
|
6
|
+
const w = a.Root, m = s.forwardRef(({ className: e, ...o }, r) => /* @__PURE__ */ t(
|
|
7
|
+
a.Item,
|
|
8
|
+
{
|
|
9
|
+
ref: r,
|
|
10
|
+
className: i("border-b", e),
|
|
11
|
+
...o
|
|
12
|
+
}
|
|
13
|
+
));
|
|
14
|
+
m.displayName = "AccordionItem";
|
|
15
|
+
const l = s.forwardRef(({ className: e, children: o, ...r }, n) => /* @__PURE__ */ t(a.Header, { className: "flex", children: /* @__PURE__ */ c(
|
|
16
|
+
a.Trigger,
|
|
17
|
+
{
|
|
18
|
+
ref: n,
|
|
19
|
+
className: i(
|
|
20
|
+
"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180 ",
|
|
21
|
+
e
|
|
22
|
+
),
|
|
23
|
+
...r,
|
|
24
|
+
children: [
|
|
25
|
+
o,
|
|
26
|
+
/* @__PURE__ */ t(d, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
) }));
|
|
30
|
+
l.displayName = a.Trigger.displayName;
|
|
31
|
+
const f = s.forwardRef(({ className: e, children: o, ...r }, n) => /* @__PURE__ */ t(
|
|
32
|
+
a.Content,
|
|
33
|
+
{
|
|
34
|
+
ref: n,
|
|
35
|
+
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
36
|
+
...r,
|
|
37
|
+
children: /* @__PURE__ */ t("div", { className: i("pb-4 pt-0", e), children: o })
|
|
38
|
+
}
|
|
39
|
+
));
|
|
40
|
+
f.displayName = a.Content.displayName;
|
|
41
|
+
export {
|
|
42
|
+
w as A,
|
|
43
|
+
m as a,
|
|
44
|
+
l as b,
|
|
45
|
+
f as c
|
|
46
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsx as s, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import * as i from "react";
|
|
3
|
+
import * as t from "@radix-ui/react-alert-dialog";
|
|
4
|
+
import { c as l } from "./styles-qaFjX9_3.js";
|
|
5
|
+
import { b as r } from "./button-X-yV4Iwq.js";
|
|
6
|
+
const w = t.Root, b = t.Trigger, m = t.Portal, d = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ s(
|
|
7
|
+
t.Overlay,
|
|
8
|
+
{
|
|
9
|
+
className: l(
|
|
10
|
+
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
11
|
+
a
|
|
12
|
+
),
|
|
13
|
+
...e,
|
|
14
|
+
ref: o
|
|
15
|
+
}
|
|
16
|
+
));
|
|
17
|
+
d.displayName = t.Overlay.displayName;
|
|
18
|
+
const c = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ n(m, { children: [
|
|
19
|
+
/* @__PURE__ */ s(d, {}),
|
|
20
|
+
/* @__PURE__ */ s(
|
|
21
|
+
t.Content,
|
|
22
|
+
{
|
|
23
|
+
ref: o,
|
|
24
|
+
className: l(
|
|
25
|
+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
|
|
26
|
+
a
|
|
27
|
+
),
|
|
28
|
+
...e
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
] }));
|
|
32
|
+
c.displayName = t.Content.displayName;
|
|
33
|
+
const f = ({
|
|
34
|
+
className: a,
|
|
35
|
+
...e
|
|
36
|
+
}) => /* @__PURE__ */ s(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
className: l(
|
|
40
|
+
"flex flex-col space-y-2 text-center sm:text-left",
|
|
41
|
+
a
|
|
42
|
+
),
|
|
43
|
+
...e
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
f.displayName = "AlertDialogHeader";
|
|
47
|
+
const p = ({
|
|
48
|
+
className: a,
|
|
49
|
+
...e
|
|
50
|
+
}) => /* @__PURE__ */ s(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
className: l(
|
|
54
|
+
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
55
|
+
a
|
|
56
|
+
),
|
|
57
|
+
...e
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
p.displayName = "AlertDialogFooter";
|
|
61
|
+
const g = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ s(
|
|
62
|
+
t.Title,
|
|
63
|
+
{
|
|
64
|
+
ref: o,
|
|
65
|
+
className: l("text-lg font-semibold", a),
|
|
66
|
+
...e
|
|
67
|
+
}
|
|
68
|
+
));
|
|
69
|
+
g.displayName = t.Title.displayName;
|
|
70
|
+
const N = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ s(
|
|
71
|
+
t.Description,
|
|
72
|
+
{
|
|
73
|
+
ref: o,
|
|
74
|
+
className: l("text-sm text-muted-foreground", a),
|
|
75
|
+
...e
|
|
76
|
+
}
|
|
77
|
+
));
|
|
78
|
+
N.displayName = t.Description.displayName;
|
|
79
|
+
const y = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ s(
|
|
80
|
+
t.Action,
|
|
81
|
+
{
|
|
82
|
+
ref: o,
|
|
83
|
+
className: l(r(), a),
|
|
84
|
+
...e
|
|
85
|
+
}
|
|
86
|
+
));
|
|
87
|
+
y.displayName = t.Action.displayName;
|
|
88
|
+
const x = i.forwardRef(({ className: a, ...e }, o) => /* @__PURE__ */ s(
|
|
89
|
+
t.Cancel,
|
|
90
|
+
{
|
|
91
|
+
ref: o,
|
|
92
|
+
className: l(
|
|
93
|
+
r({ variant: "outline" }),
|
|
94
|
+
"mt-2 sm:mt-0",
|
|
95
|
+
a
|
|
96
|
+
),
|
|
97
|
+
...e
|
|
98
|
+
}
|
|
99
|
+
));
|
|
100
|
+
x.displayName = t.Cancel.displayName;
|
|
101
|
+
export {
|
|
102
|
+
w as A,
|
|
103
|
+
m as a,
|
|
104
|
+
d as b,
|
|
105
|
+
b as c,
|
|
106
|
+
c as d,
|
|
107
|
+
f as e,
|
|
108
|
+
p as f,
|
|
109
|
+
g,
|
|
110
|
+
N as h,
|
|
111
|
+
y as i,
|
|
112
|
+
x as j
|
|
113
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { cn } from './lib/utils';
|
|
2
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './components/ui/alert-dialog';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { c as e } from "./styles-qaFjX9_3.js";
|
|
2
|
+
import { A as o, i as t, j as i, d as g, h as s, f as A, e as D, b as c, a as n, g as f, c as p } from "./alert-dialog-C769FFOM.js";
|
|
3
|
+
export {
|
|
4
|
+
o as AlertDialog,
|
|
5
|
+
t as AlertDialogAction,
|
|
6
|
+
i as AlertDialogCancel,
|
|
7
|
+
g as AlertDialogContent,
|
|
8
|
+
s as AlertDialogDescription,
|
|
9
|
+
A as AlertDialogFooter,
|
|
10
|
+
D as AlertDialogHeader,
|
|
11
|
+
c as AlertDialogOverlay,
|
|
12
|
+
n as AlertDialogPortal,
|
|
13
|
+
f as AlertDialogTitle,
|
|
14
|
+
p as AlertDialogTrigger,
|
|
15
|
+
e as cn
|
|
16
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { c as o } from "./index-D5fkjZ2l.js";
|
|
3
|
+
import { c as a } from "./styles-qaFjX9_3.js";
|
|
4
|
+
const s = o(
|
|
5
|
+
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: "border-transparent bg-primary text-primary-foreground",
|
|
10
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground",
|
|
11
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground",
|
|
12
|
+
outline: "text-foreground"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: {
|
|
16
|
+
variant: "default"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
function u({ className: r, variant: t, ...e }) {
|
|
21
|
+
return /* @__PURE__ */ n("div", { className: a(s({ variant: t }), r), ...e });
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
u as B,
|
|
25
|
+
s as b
|
|
26
|
+
};
|
package/dist/badge.d.ts
ADDED
package/dist/badge.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import * as a from "react";
|
|
3
|
+
import { Slot as d } from "@radix-ui/react-slot";
|
|
4
|
+
import { c } from "./index-D5fkjZ2l.js";
|
|
5
|
+
import { c as u } from "./styles-qaFjX9_3.js";
|
|
6
|
+
const f = c(
|
|
7
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
12
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
13
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
14
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
15
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
16
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
default: "h-10 px-4 py-2",
|
|
20
|
+
sm: "h-9 rounded-md px-3",
|
|
21
|
+
lg: "h-11 rounded-md px-8",
|
|
22
|
+
icon: "h-10 w-10"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "default",
|
|
27
|
+
size: "default"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
), g = a.forwardRef(
|
|
31
|
+
({ className: e, variant: r, size: t, asChild: o = !1, ...n }, i) => /* @__PURE__ */ s(
|
|
32
|
+
o ? d : "button",
|
|
33
|
+
{
|
|
34
|
+
className: u(f({ variant: r, size: t, className: e })),
|
|
35
|
+
ref: i,
|
|
36
|
+
...n
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
);
|
|
40
|
+
g.displayName = "Button";
|
|
41
|
+
export {
|
|
42
|
+
g as B,
|
|
43
|
+
f as b
|
|
44
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { Slot as d } from "@radix-ui/react-slot";
|
|
3
|
+
import { c as u } from "./index-D5fkjZ2l.js";
|
|
4
|
+
import { c as e } from "./styles-qaFjX9_3.js";
|
|
5
|
+
import * as c from "react";
|
|
6
|
+
import * as n from "@radix-ui/react-separator";
|
|
7
|
+
const i = c.forwardRef(
|
|
8
|
+
({ className: o, orientation: t = "horizontal", decorative: r = !0, ...s }, l) => /* @__PURE__ */ a(
|
|
9
|
+
n.Root,
|
|
10
|
+
{
|
|
11
|
+
ref: l,
|
|
12
|
+
decorative: r,
|
|
13
|
+
orientation: t,
|
|
14
|
+
className: e(
|
|
15
|
+
"shrink-0 bg-border",
|
|
16
|
+
t === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
17
|
+
o
|
|
18
|
+
),
|
|
19
|
+
...s
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
i.displayName = n.Root.displayName;
|
|
24
|
+
const p = u(
|
|
25
|
+
"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
|
|
26
|
+
{
|
|
27
|
+
variants: {
|
|
28
|
+
orientation: {
|
|
29
|
+
horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
|
|
30
|
+
vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
orientation: "horizontal"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
function g({
|
|
39
|
+
className: o,
|
|
40
|
+
orientation: t,
|
|
41
|
+
...r
|
|
42
|
+
}) {
|
|
43
|
+
return /* @__PURE__ */ a(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
role: "group",
|
|
47
|
+
"data-slot": "button-group",
|
|
48
|
+
"data-orientation": t,
|
|
49
|
+
className: e(p({ orientation: t }), o),
|
|
50
|
+
...r
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
function v({
|
|
55
|
+
className: o,
|
|
56
|
+
asChild: t = !1,
|
|
57
|
+
...r
|
|
58
|
+
}) {
|
|
59
|
+
return /* @__PURE__ */ a(
|
|
60
|
+
t ? d : "div",
|
|
61
|
+
{
|
|
62
|
+
className: e(
|
|
63
|
+
"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
|
|
64
|
+
o
|
|
65
|
+
),
|
|
66
|
+
...r
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
function x({
|
|
71
|
+
className: o,
|
|
72
|
+
orientation: t = "vertical",
|
|
73
|
+
...r
|
|
74
|
+
}) {
|
|
75
|
+
return /* @__PURE__ */ a(
|
|
76
|
+
i,
|
|
77
|
+
{
|
|
78
|
+
"data-slot": "button-group-separator",
|
|
79
|
+
orientation: t,
|
|
80
|
+
className: e(
|
|
81
|
+
"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto",
|
|
82
|
+
o
|
|
83
|
+
),
|
|
84
|
+
...r
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
g as B,
|
|
90
|
+
x as a,
|
|
91
|
+
v as b,
|
|
92
|
+
p as c
|
|
93
|
+
};
|
package/dist/button.d.ts
ADDED
package/dist/button.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { Separator } from './separator';
|
|
3
|
+
|
|
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, asChild, ...props }: React.ComponentProps<"div"> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3
|
+
declare const Separator: React.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export { Separator };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { a as O } from "./styles-qaFjX9_3.js";
|
|
2
|
+
const m = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, y = O, j = (e, l) => (n) => {
|
|
3
|
+
var u;
|
|
4
|
+
if ((l == null ? void 0 : l.variants) == null) return y(e, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
|
|
5
|
+
const { variants: r, defaultVariants: d } = l, V = Object.keys(r).map((t) => {
|
|
6
|
+
const a = n == null ? void 0 : n[t], s = d == null ? void 0 : d[t];
|
|
7
|
+
if (a === null) return null;
|
|
8
|
+
const i = m(a) || m(s);
|
|
9
|
+
return r[t][i];
|
|
10
|
+
}), v = n && Object.entries(n).reduce((t, a) => {
|
|
11
|
+
let [s, i] = a;
|
|
12
|
+
return i === void 0 || (t[s] = i), t;
|
|
13
|
+
}, {}), N = l == null || (u = l.compoundVariants) === null || u === void 0 ? void 0 : u.reduce((t, a) => {
|
|
14
|
+
let { class: s, className: i, ...f } = a;
|
|
15
|
+
return Object.entries(f).every((C) => {
|
|
16
|
+
let [c, o] = C;
|
|
17
|
+
return Array.isArray(o) ? o.includes({
|
|
18
|
+
...d,
|
|
19
|
+
...v
|
|
20
|
+
}[c]) : {
|
|
21
|
+
...d,
|
|
22
|
+
...v
|
|
23
|
+
}[c] === o;
|
|
24
|
+
}) ? [
|
|
25
|
+
...t,
|
|
26
|
+
s,
|
|
27
|
+
i
|
|
28
|
+
] : t;
|
|
29
|
+
}, []);
|
|
30
|
+
return y(e, V, N, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
j as c
|
|
34
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -5,3 +5,4 @@ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from '.
|
|
|
5
5
|
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from './components/ui/alert-dialog';
|
|
6
6
|
export { Badge, badgeVariants } from './components/ui/badge';
|
|
7
7
|
export type { BadgeProps } from './components/ui/badge';
|
|
8
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants, } from './components/ui/button-group';
|