@nextop-os/ui-system 0.0.17 → 0.0.18
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/AGENTS.md +30 -8
- package/README.md +11 -14
- package/agent/install-skill.mjs +65 -5
- package/agent/nextop-ui-system/SKILL.md +119 -8
- package/agent/nextop-ui-system/references/extract-base-component.md +50 -6
- package/agent/nextop-ui-system/references/maintain-inventory.md +5 -0
- package/agent/nextop-ui-system/references/promote-business-component.md +94 -208
- package/dist/chunk-GE5YVRTV.js +859 -0
- package/dist/chunk-GE5YVRTV.js.map +1 -0
- package/dist/chunk-KJQ366TA.js +70 -0
- package/dist/chunk-KJQ366TA.js.map +1 -0
- package/dist/chunk-LVHEV755.js +2553 -0
- package/dist/chunk-LVHEV755.js.map +1 -0
- package/dist/components/index.d.ts +162 -11
- package/dist/components/index.js +62 -2
- package/dist/date-format.d.ts +6 -0
- package/dist/date-format.js +11 -0
- package/dist/date-format.js.map +1 -0
- package/dist/dev-vite.js +12 -5
- package/dist/dev-vite.js.map +1 -1
- package/dist/icons/index.d.ts +90 -47
- package/dist/icons/index.js +91 -11
- package/dist/index.d.ts +3 -2
- package/dist/index.js +159 -11
- package/dist/metadata/components.json +1320 -265
- package/dist/metadata/components.schema.json +4 -0
- package/dist/metadata/index.d.ts +3 -1
- package/dist/metadata/index.js +1320 -265
- package/dist/metadata/index.js.map +1 -1
- package/dist/styles/base.css +85 -0
- package/dist/styles/index.css +1 -0
- package/dist/styles/semantic.css +7 -0
- package/dist/styles/theme.css +82 -1
- package/package.json +10 -3
- package/ui-system.md +640 -0
- package/UI_SYSTEM_GUIDELINES.md +0 -148
- package/dist/chunk-FT633NLJ.js +0 -1159
- package/dist/chunk-FT633NLJ.js.map +0 -1
- package/dist/chunk-NFSMZKML.js +0 -208
- package/dist/chunk-NFSMZKML.js.map +0 -1
package/dist/chunk-FT633NLJ.js
DELETED
|
@@ -1,1159 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CheckIcon,
|
|
3
|
-
ChevronDownIcon,
|
|
4
|
-
ChevronRightIcon,
|
|
5
|
-
ChevronUpIcon,
|
|
6
|
-
CloseIcon
|
|
7
|
-
} from "./chunk-NFSMZKML.js";
|
|
8
|
-
import {
|
|
9
|
-
cn
|
|
10
|
-
} from "./chunk-DGPY4WP3.js";
|
|
11
|
-
|
|
12
|
-
// src/components/badge.tsx
|
|
13
|
-
import { cva } from "class-variance-authority";
|
|
14
|
-
import { Slot } from "radix-ui";
|
|
15
|
-
import { jsx } from "react/jsx-runtime";
|
|
16
|
-
var badgeVariants = cva(
|
|
17
|
-
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-md border border-transparent px-2 py-0.5 text-[0.72rem] font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow] focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
|
|
18
|
-
{
|
|
19
|
-
variants: {
|
|
20
|
-
variant: {
|
|
21
|
-
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/92",
|
|
22
|
-
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/88",
|
|
23
|
-
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/18",
|
|
24
|
-
outline: "border-border bg-card/90 text-foreground [a]:hover:bg-muted [a]:hover:text-foreground",
|
|
25
|
-
ghost: "hover:bg-accent/80 hover:text-accent-foreground dark:hover:bg-muted/50",
|
|
26
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
defaultVariants: {
|
|
30
|
-
variant: "default"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
);
|
|
34
|
-
function Badge({
|
|
35
|
-
className,
|
|
36
|
-
variant = "default",
|
|
37
|
-
asChild = false,
|
|
38
|
-
...props
|
|
39
|
-
}) {
|
|
40
|
-
const Comp = asChild ? Slot.Root : "span";
|
|
41
|
-
return /* @__PURE__ */ jsx(
|
|
42
|
-
Comp,
|
|
43
|
-
{
|
|
44
|
-
"data-slot": "badge",
|
|
45
|
-
"data-variant": variant,
|
|
46
|
-
className: cn(badgeVariants({ variant }), className),
|
|
47
|
-
...props
|
|
48
|
-
}
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// src/components/button.tsx
|
|
53
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
54
|
-
import { Slot as Slot2 } from "radix-ui";
|
|
55
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
56
|
-
var buttonVariants = cva2(
|
|
57
|
-
"group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
58
|
-
{
|
|
59
|
-
variants: {
|
|
60
|
-
variant: {
|
|
61
|
-
default: "bg-primary text-primary-foreground shadow-soft hover:bg-primary/92",
|
|
62
|
-
outline: "border-border bg-card text-foreground hover:bg-muted/80 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
63
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/88 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
64
|
-
ghost: "hover:bg-accent/80 hover:text-accent-foreground aria-expanded:bg-accent aria-expanded:text-accent-foreground dark:hover:bg-muted/50",
|
|
65
|
-
chrome: "border border-transparent bg-transparent text-muted-foreground shadow-none hover:border-transparent hover:bg-transparency-block hover:text-foreground active:bg-transparency-block-active active:text-foreground aria-expanded:border-transparent aria-expanded:bg-transparency-block aria-expanded:text-foreground disabled:pointer-events-auto disabled:cursor-not-allowed disabled:opacity-45",
|
|
66
|
-
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/18 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
|
|
67
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
68
|
-
},
|
|
69
|
-
size: {
|
|
70
|
-
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
71
|
-
xs: "h-6 gap-1 rounded-sm px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
72
|
-
sm: "h-7 gap-1 rounded-sm px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
73
|
-
lg: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5",
|
|
74
|
-
icon: "size-8",
|
|
75
|
-
"icon-xs": "size-6 rounded-sm in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
76
|
-
"icon-sm": "size-7 rounded-sm in-data-[slot=button-group]:rounded-md",
|
|
77
|
-
"icon-lg": "size-9"
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
defaultVariants: {
|
|
81
|
-
variant: "default",
|
|
82
|
-
size: "default"
|
|
83
|
-
},
|
|
84
|
-
compoundVariants: [
|
|
85
|
-
{
|
|
86
|
-
variant: "chrome",
|
|
87
|
-
size: "icon-sm",
|
|
88
|
-
class: "rounded-[4px]"
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
function Button({
|
|
94
|
-
className,
|
|
95
|
-
variant = "default",
|
|
96
|
-
size = "default",
|
|
97
|
-
asChild = false,
|
|
98
|
-
...props
|
|
99
|
-
}) {
|
|
100
|
-
const Comp = asChild ? Slot2.Root : "button";
|
|
101
|
-
return /* @__PURE__ */ jsx2(
|
|
102
|
-
Comp,
|
|
103
|
-
{
|
|
104
|
-
"data-slot": "button",
|
|
105
|
-
"data-variant": variant,
|
|
106
|
-
"data-size": size,
|
|
107
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
108
|
-
...props
|
|
109
|
-
}
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// src/components/card.tsx
|
|
114
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
115
|
-
function Card({
|
|
116
|
-
className,
|
|
117
|
-
size = "default",
|
|
118
|
-
...props
|
|
119
|
-
}) {
|
|
120
|
-
return /* @__PURE__ */ jsx3(
|
|
121
|
-
"div",
|
|
122
|
-
{
|
|
123
|
-
"data-slot": "card",
|
|
124
|
-
"data-size": size,
|
|
125
|
-
className: cn(
|
|
126
|
-
"group/card flex flex-col gap-4 overflow-hidden rounded-xl border border-border/70 bg-card py-4 text-sm text-card-foreground shadow-soft has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
|
|
127
|
-
className
|
|
128
|
-
),
|
|
129
|
-
...props
|
|
130
|
-
}
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
function CardHeader({ className, ...props }) {
|
|
134
|
-
return /* @__PURE__ */ jsx3(
|
|
135
|
-
"div",
|
|
136
|
-
{
|
|
137
|
-
"data-slot": "card-header",
|
|
138
|
-
className: cn(
|
|
139
|
-
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:border-border/70 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",
|
|
140
|
-
className
|
|
141
|
-
),
|
|
142
|
-
...props
|
|
143
|
-
}
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
function CardTitle({ className, ...props }) {
|
|
147
|
-
return /* @__PURE__ */ jsx3(
|
|
148
|
-
"div",
|
|
149
|
-
{
|
|
150
|
-
"data-slot": "card-title",
|
|
151
|
-
className: cn(
|
|
152
|
-
"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",
|
|
153
|
-
className
|
|
154
|
-
),
|
|
155
|
-
...props
|
|
156
|
-
}
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
function CardDescription({ className, ...props }) {
|
|
160
|
-
return /* @__PURE__ */ jsx3(
|
|
161
|
-
"div",
|
|
162
|
-
{
|
|
163
|
-
"data-slot": "card-description",
|
|
164
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
165
|
-
...props
|
|
166
|
-
}
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
function CardAction({ className, ...props }) {
|
|
170
|
-
return /* @__PURE__ */ jsx3(
|
|
171
|
-
"div",
|
|
172
|
-
{
|
|
173
|
-
"data-slot": "card-action",
|
|
174
|
-
className: cn(
|
|
175
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
176
|
-
className
|
|
177
|
-
),
|
|
178
|
-
...props
|
|
179
|
-
}
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
function CardContent({ className, ...props }) {
|
|
183
|
-
return /* @__PURE__ */ jsx3(
|
|
184
|
-
"div",
|
|
185
|
-
{
|
|
186
|
-
"data-slot": "card-content",
|
|
187
|
-
className: cn("px-4 group-data-[size=sm]/card:px-3", className),
|
|
188
|
-
...props
|
|
189
|
-
}
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
function CardFooter({ className, ...props }) {
|
|
193
|
-
return /* @__PURE__ */ jsx3(
|
|
194
|
-
"div",
|
|
195
|
-
{
|
|
196
|
-
"data-slot": "card-footer",
|
|
197
|
-
className: cn(
|
|
198
|
-
"flex items-center rounded-b-xl border-t border-border/70 bg-muted/42 p-4 group-data-[size=sm]/card:p-3",
|
|
199
|
-
className
|
|
200
|
-
),
|
|
201
|
-
...props
|
|
202
|
-
}
|
|
203
|
-
);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// src/components/dialog.tsx
|
|
207
|
-
import { Dialog as DialogPrimitive } from "radix-ui";
|
|
208
|
-
import { Fragment, jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
209
|
-
function Dialog({
|
|
210
|
-
...props
|
|
211
|
-
}) {
|
|
212
|
-
return /* @__PURE__ */ jsx4(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
213
|
-
}
|
|
214
|
-
function DialogTrigger({
|
|
215
|
-
...props
|
|
216
|
-
}) {
|
|
217
|
-
return /* @__PURE__ */ jsx4(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
218
|
-
}
|
|
219
|
-
function DialogPortal({
|
|
220
|
-
...props
|
|
221
|
-
}) {
|
|
222
|
-
return /* @__PURE__ */ jsx4(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
|
|
223
|
-
}
|
|
224
|
-
function DialogClose({
|
|
225
|
-
...props
|
|
226
|
-
}) {
|
|
227
|
-
return /* @__PURE__ */ jsx4(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
|
|
228
|
-
}
|
|
229
|
-
function DialogOverlay({
|
|
230
|
-
className,
|
|
231
|
-
style,
|
|
232
|
-
...props
|
|
233
|
-
}) {
|
|
234
|
-
return /* @__PURE__ */ jsx4(
|
|
235
|
-
DialogPrimitive.Overlay,
|
|
236
|
-
{
|
|
237
|
-
"data-slot": "dialog-overlay",
|
|
238
|
-
className: cn(
|
|
239
|
-
"fixed inset-0 isolate bg-black/12 duration-150 supports-backdrop-filter:backdrop-blur-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
240
|
-
className
|
|
241
|
-
),
|
|
242
|
-
style: { zIndex: "var(--z-dialog-overlay)", ...style },
|
|
243
|
-
...props
|
|
244
|
-
}
|
|
245
|
-
);
|
|
246
|
-
}
|
|
247
|
-
function DialogContent({
|
|
248
|
-
className,
|
|
249
|
-
children,
|
|
250
|
-
overlayClassName,
|
|
251
|
-
portaled = true,
|
|
252
|
-
showCloseButton = true,
|
|
253
|
-
style,
|
|
254
|
-
...props
|
|
255
|
-
}) {
|
|
256
|
-
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
257
|
-
/* @__PURE__ */ jsx4(DialogOverlay, { className: overlayClassName }),
|
|
258
|
-
/* @__PURE__ */ jsxs(
|
|
259
|
-
DialogPrimitive.Content,
|
|
260
|
-
{
|
|
261
|
-
"data-slot": "dialog-content",
|
|
262
|
-
className: cn(
|
|
263
|
-
portaled ? "fixed" : "absolute",
|
|
264
|
-
"top-1/2 left-1/2 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-5 rounded-2xl bg-popover/96 p-5 text-sm text-popover-foreground shadow-[0_24px_64px_rgba(15,23,42,0.14),0_8px_20px_rgba(15,23,42,0.1)] ring-1 ring-foreground/8 duration-150 outline-none supports-backdrop-filter:backdrop-blur-xl sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
265
|
-
className
|
|
266
|
-
),
|
|
267
|
-
style: { zIndex: "var(--z-dialog)", ...style },
|
|
268
|
-
...props,
|
|
269
|
-
children: [
|
|
270
|
-
children,
|
|
271
|
-
showCloseButton && /* @__PURE__ */ jsx4(DialogPrimitive.Close, { "data-slot": "dialog-close", asChild: true, children: /* @__PURE__ */ jsxs(
|
|
272
|
-
Button,
|
|
273
|
-
{
|
|
274
|
-
variant: "ghost",
|
|
275
|
-
className: "absolute top-2 right-2",
|
|
276
|
-
size: "icon-sm",
|
|
277
|
-
children: [
|
|
278
|
-
/* @__PURE__ */ jsx4(CloseIcon, {}),
|
|
279
|
-
/* @__PURE__ */ jsx4("span", { className: "sr-only", children: "Close" })
|
|
280
|
-
]
|
|
281
|
-
}
|
|
282
|
-
) })
|
|
283
|
-
]
|
|
284
|
-
}
|
|
285
|
-
)
|
|
286
|
-
] });
|
|
287
|
-
if (!portaled) {
|
|
288
|
-
return content;
|
|
289
|
-
}
|
|
290
|
-
return /* @__PURE__ */ jsx4(DialogPortal, { children: content });
|
|
291
|
-
}
|
|
292
|
-
function DialogHeader({ className, ...props }) {
|
|
293
|
-
return /* @__PURE__ */ jsx4(
|
|
294
|
-
"div",
|
|
295
|
-
{
|
|
296
|
-
"data-slot": "dialog-header",
|
|
297
|
-
className: cn("flex flex-col gap-2", className),
|
|
298
|
-
...props
|
|
299
|
-
}
|
|
300
|
-
);
|
|
301
|
-
}
|
|
302
|
-
function DialogFooter({
|
|
303
|
-
className,
|
|
304
|
-
showCloseButton = false,
|
|
305
|
-
children,
|
|
306
|
-
...props
|
|
307
|
-
}) {
|
|
308
|
-
return /* @__PURE__ */ jsxs(
|
|
309
|
-
"div",
|
|
310
|
-
{
|
|
311
|
-
"data-slot": "dialog-footer",
|
|
312
|
-
className: cn(
|
|
313
|
-
"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",
|
|
314
|
-
className
|
|
315
|
-
),
|
|
316
|
-
...props,
|
|
317
|
-
children: [
|
|
318
|
-
children,
|
|
319
|
-
showCloseButton && /* @__PURE__ */ jsx4(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx4(Button, { variant: "outline", children: "Close" }) })
|
|
320
|
-
]
|
|
321
|
-
}
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
function DialogTitle({
|
|
325
|
-
className,
|
|
326
|
-
...props
|
|
327
|
-
}) {
|
|
328
|
-
return /* @__PURE__ */ jsx4(
|
|
329
|
-
DialogPrimitive.Title,
|
|
330
|
-
{
|
|
331
|
-
"data-slot": "dialog-title",
|
|
332
|
-
className: cn("text-base leading-none font-medium", className),
|
|
333
|
-
...props
|
|
334
|
-
}
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
function DialogDescription({
|
|
338
|
-
className,
|
|
339
|
-
...props
|
|
340
|
-
}) {
|
|
341
|
-
return /* @__PURE__ */ jsx4(
|
|
342
|
-
DialogPrimitive.Description,
|
|
343
|
-
{
|
|
344
|
-
"data-slot": "dialog-description",
|
|
345
|
-
className: cn(
|
|
346
|
-
"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
347
|
-
className
|
|
348
|
-
),
|
|
349
|
-
...props
|
|
350
|
-
}
|
|
351
|
-
);
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
// src/components/confirmation-dialog.tsx
|
|
355
|
-
import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
356
|
-
function confirmToneClassName(tone) {
|
|
357
|
-
if (tone === "destructive") {
|
|
358
|
-
return "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/92 focus-visible:border-destructive/40 focus-visible:ring-destructive/25";
|
|
359
|
-
}
|
|
360
|
-
return void 0;
|
|
361
|
-
}
|
|
362
|
-
function ConfirmationDialog({
|
|
363
|
-
cancelLabel,
|
|
364
|
-
children,
|
|
365
|
-
className,
|
|
366
|
-
confirmBusy = false,
|
|
367
|
-
confirmDisabled = false,
|
|
368
|
-
confirmLabel,
|
|
369
|
-
description,
|
|
370
|
-
disableCloseWhileBusy = true,
|
|
371
|
-
footer,
|
|
372
|
-
hideConfirmButton = false,
|
|
373
|
-
onCancel,
|
|
374
|
-
onConfirm,
|
|
375
|
-
onOpenChange,
|
|
376
|
-
open,
|
|
377
|
-
overlayClassName,
|
|
378
|
-
portaled = true,
|
|
379
|
-
tone = "default",
|
|
380
|
-
title
|
|
381
|
-
}) {
|
|
382
|
-
const isCloseDisabled = disableCloseWhileBusy && confirmBusy;
|
|
383
|
-
return /* @__PURE__ */ jsx5(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs2(
|
|
384
|
-
DialogContent,
|
|
385
|
-
{
|
|
386
|
-
className: cn(
|
|
387
|
-
"max-w-[24.5rem] gap-4 rounded-[1.15rem] border-0 bg-popover/96 px-6 py-5 text-left shadow-[0_18px_48px_rgba(15,23,42,0.14),0_6px_18px_rgba(15,23,42,0.08)] backdrop-blur-xl sm:max-w-[24.5rem]",
|
|
388
|
-
className
|
|
389
|
-
),
|
|
390
|
-
overlayClassName: cn(
|
|
391
|
-
"bg-black/12 supports-backdrop-filter:backdrop-blur-[10px]",
|
|
392
|
-
overlayClassName
|
|
393
|
-
),
|
|
394
|
-
portaled,
|
|
395
|
-
showCloseButton: false,
|
|
396
|
-
onEscapeKeyDown: (event) => {
|
|
397
|
-
if (isCloseDisabled) {
|
|
398
|
-
event.preventDefault();
|
|
399
|
-
}
|
|
400
|
-
},
|
|
401
|
-
onInteractOutside: (event) => {
|
|
402
|
-
if (isCloseDisabled) {
|
|
403
|
-
event.preventDefault();
|
|
404
|
-
}
|
|
405
|
-
},
|
|
406
|
-
children: [
|
|
407
|
-
/* @__PURE__ */ jsxs2(DialogHeader, { className: "gap-2", children: [
|
|
408
|
-
/* @__PURE__ */ jsx5(DialogTitle, { className: "text-base leading-6 font-semibold tracking-[-0.01em] text-foreground", children: title }),
|
|
409
|
-
description ? /* @__PURE__ */ jsx5(DialogDescription, { className: "text-[0.94rem] leading-6 text-muted-foreground", children: description }) : null
|
|
410
|
-
] }),
|
|
411
|
-
children ? /* @__PURE__ */ jsx5("div", { className: "text-[0.82rem] leading-5 text-muted-foreground", children }) : null,
|
|
412
|
-
footer ?? /* @__PURE__ */ jsxs2("div", { className: "flex justify-end gap-2 pt-1", children: [
|
|
413
|
-
/* @__PURE__ */ jsx5(
|
|
414
|
-
Button,
|
|
415
|
-
{
|
|
416
|
-
disabled: confirmBusy,
|
|
417
|
-
size: "lg",
|
|
418
|
-
type: "button",
|
|
419
|
-
variant: "outline",
|
|
420
|
-
className: "min-w-[5.5rem]",
|
|
421
|
-
onClick: () => {
|
|
422
|
-
onCancel?.();
|
|
423
|
-
onOpenChange(false);
|
|
424
|
-
},
|
|
425
|
-
children: cancelLabel
|
|
426
|
-
}
|
|
427
|
-
),
|
|
428
|
-
hideConfirmButton ? null : /* @__PURE__ */ jsx5(
|
|
429
|
-
Button,
|
|
430
|
-
{
|
|
431
|
-
disabled: confirmBusy || confirmDisabled,
|
|
432
|
-
size: "lg",
|
|
433
|
-
type: "button",
|
|
434
|
-
variant: tone === "default" ? "default" : "destructive",
|
|
435
|
-
className: cn(
|
|
436
|
-
"min-w-[7.5rem] font-medium shadow-none",
|
|
437
|
-
confirmToneClassName(tone)
|
|
438
|
-
),
|
|
439
|
-
onClick: () => {
|
|
440
|
-
onConfirm?.();
|
|
441
|
-
},
|
|
442
|
-
children: confirmLabel
|
|
443
|
-
}
|
|
444
|
-
)
|
|
445
|
-
] })
|
|
446
|
-
]
|
|
447
|
-
}
|
|
448
|
-
) });
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
// src/components/dropdown-menu.tsx
|
|
452
|
-
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
453
|
-
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
454
|
-
function DropdownMenu({
|
|
455
|
-
...props
|
|
456
|
-
}) {
|
|
457
|
-
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
458
|
-
}
|
|
459
|
-
function DropdownMenuPortal({
|
|
460
|
-
...props
|
|
461
|
-
}) {
|
|
462
|
-
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
463
|
-
}
|
|
464
|
-
function DropdownMenuTrigger({
|
|
465
|
-
...props
|
|
466
|
-
}) {
|
|
467
|
-
return /* @__PURE__ */ jsx6(
|
|
468
|
-
DropdownMenuPrimitive.Trigger,
|
|
469
|
-
{
|
|
470
|
-
"data-slot": "dropdown-menu-trigger",
|
|
471
|
-
...props
|
|
472
|
-
}
|
|
473
|
-
);
|
|
474
|
-
}
|
|
475
|
-
function DropdownMenuContent({
|
|
476
|
-
className,
|
|
477
|
-
align = "start",
|
|
478
|
-
sideOffset = 4,
|
|
479
|
-
style,
|
|
480
|
-
...props
|
|
481
|
-
}) {
|
|
482
|
-
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx6(
|
|
483
|
-
DropdownMenuPrimitive.Content,
|
|
484
|
-
{
|
|
485
|
-
"data-slot": "dropdown-menu-content",
|
|
486
|
-
align,
|
|
487
|
-
className: cn(
|
|
488
|
-
"z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
489
|
-
className
|
|
490
|
-
),
|
|
491
|
-
sideOffset,
|
|
492
|
-
style: { zIndex: "var(--z-popover)", ...style },
|
|
493
|
-
...props
|
|
494
|
-
}
|
|
495
|
-
) });
|
|
496
|
-
}
|
|
497
|
-
function DropdownMenuGroup({
|
|
498
|
-
...props
|
|
499
|
-
}) {
|
|
500
|
-
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
501
|
-
}
|
|
502
|
-
function DropdownMenuItem({
|
|
503
|
-
className,
|
|
504
|
-
inset,
|
|
505
|
-
variant = "default",
|
|
506
|
-
...props
|
|
507
|
-
}) {
|
|
508
|
-
return /* @__PURE__ */ jsx6(
|
|
509
|
-
DropdownMenuPrimitive.Item,
|
|
510
|
-
{
|
|
511
|
-
"data-inset": inset,
|
|
512
|
-
"data-slot": "dropdown-menu-item",
|
|
513
|
-
"data-variant": variant,
|
|
514
|
-
className: cn(
|
|
515
|
-
"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
|
|
516
|
-
className
|
|
517
|
-
),
|
|
518
|
-
...props
|
|
519
|
-
}
|
|
520
|
-
);
|
|
521
|
-
}
|
|
522
|
-
function DropdownMenuCheckboxItem({
|
|
523
|
-
className,
|
|
524
|
-
children,
|
|
525
|
-
checked,
|
|
526
|
-
inset,
|
|
527
|
-
...props
|
|
528
|
-
}) {
|
|
529
|
-
return /* @__PURE__ */ jsxs3(
|
|
530
|
-
DropdownMenuPrimitive.CheckboxItem,
|
|
531
|
-
{
|
|
532
|
-
checked,
|
|
533
|
-
"data-inset": inset,
|
|
534
|
-
"data-slot": "dropdown-menu-checkbox-item",
|
|
535
|
-
className: cn(
|
|
536
|
-
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
537
|
-
className
|
|
538
|
-
),
|
|
539
|
-
...props,
|
|
540
|
-
children: [
|
|
541
|
-
/* @__PURE__ */ jsx6(
|
|
542
|
-
"span",
|
|
543
|
-
{
|
|
544
|
-
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
545
|
-
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
546
|
-
children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(CheckIcon, {}) })
|
|
547
|
-
}
|
|
548
|
-
),
|
|
549
|
-
children
|
|
550
|
-
]
|
|
551
|
-
}
|
|
552
|
-
);
|
|
553
|
-
}
|
|
554
|
-
function DropdownMenuRadioGroup({
|
|
555
|
-
...props
|
|
556
|
-
}) {
|
|
557
|
-
return /* @__PURE__ */ jsx6(
|
|
558
|
-
DropdownMenuPrimitive.RadioGroup,
|
|
559
|
-
{
|
|
560
|
-
"data-slot": "dropdown-menu-radio-group",
|
|
561
|
-
...props
|
|
562
|
-
}
|
|
563
|
-
);
|
|
564
|
-
}
|
|
565
|
-
function DropdownMenuRadioItem({
|
|
566
|
-
className,
|
|
567
|
-
children,
|
|
568
|
-
inset,
|
|
569
|
-
...props
|
|
570
|
-
}) {
|
|
571
|
-
return /* @__PURE__ */ jsxs3(
|
|
572
|
-
DropdownMenuPrimitive.RadioItem,
|
|
573
|
-
{
|
|
574
|
-
"data-inset": inset,
|
|
575
|
-
"data-slot": "dropdown-menu-radio-item",
|
|
576
|
-
className: cn(
|
|
577
|
-
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
578
|
-
className
|
|
579
|
-
),
|
|
580
|
-
...props,
|
|
581
|
-
children: [
|
|
582
|
-
/* @__PURE__ */ jsx6(
|
|
583
|
-
"span",
|
|
584
|
-
{
|
|
585
|
-
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
586
|
-
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
587
|
-
children: /* @__PURE__ */ jsx6(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx6(CheckIcon, {}) })
|
|
588
|
-
}
|
|
589
|
-
),
|
|
590
|
-
children
|
|
591
|
-
]
|
|
592
|
-
}
|
|
593
|
-
);
|
|
594
|
-
}
|
|
595
|
-
function DropdownMenuLabel({
|
|
596
|
-
className,
|
|
597
|
-
inset,
|
|
598
|
-
...props
|
|
599
|
-
}) {
|
|
600
|
-
return /* @__PURE__ */ jsx6(
|
|
601
|
-
DropdownMenuPrimitive.Label,
|
|
602
|
-
{
|
|
603
|
-
"data-inset": inset,
|
|
604
|
-
"data-slot": "dropdown-menu-label",
|
|
605
|
-
className: cn(
|
|
606
|
-
"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",
|
|
607
|
-
className
|
|
608
|
-
),
|
|
609
|
-
...props
|
|
610
|
-
}
|
|
611
|
-
);
|
|
612
|
-
}
|
|
613
|
-
function DropdownMenuSeparator({
|
|
614
|
-
className,
|
|
615
|
-
...props
|
|
616
|
-
}) {
|
|
617
|
-
return /* @__PURE__ */ jsx6(
|
|
618
|
-
DropdownMenuPrimitive.Separator,
|
|
619
|
-
{
|
|
620
|
-
"data-slot": "dropdown-menu-separator",
|
|
621
|
-
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
622
|
-
...props
|
|
623
|
-
}
|
|
624
|
-
);
|
|
625
|
-
}
|
|
626
|
-
function DropdownMenuShortcut({
|
|
627
|
-
className,
|
|
628
|
-
...props
|
|
629
|
-
}) {
|
|
630
|
-
return /* @__PURE__ */ jsx6(
|
|
631
|
-
"span",
|
|
632
|
-
{
|
|
633
|
-
"data-slot": "dropdown-menu-shortcut",
|
|
634
|
-
className: cn(
|
|
635
|
-
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground",
|
|
636
|
-
className
|
|
637
|
-
),
|
|
638
|
-
...props
|
|
639
|
-
}
|
|
640
|
-
);
|
|
641
|
-
}
|
|
642
|
-
function DropdownMenuSub({
|
|
643
|
-
...props
|
|
644
|
-
}) {
|
|
645
|
-
return /* @__PURE__ */ jsx6(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
646
|
-
}
|
|
647
|
-
function DropdownMenuSubTrigger({
|
|
648
|
-
className,
|
|
649
|
-
inset,
|
|
650
|
-
children,
|
|
651
|
-
...props
|
|
652
|
-
}) {
|
|
653
|
-
return /* @__PURE__ */ jsxs3(
|
|
654
|
-
DropdownMenuPrimitive.SubTrigger,
|
|
655
|
-
{
|
|
656
|
-
"data-inset": inset,
|
|
657
|
-
"data-slot": "dropdown-menu-sub-trigger",
|
|
658
|
-
className: cn(
|
|
659
|
-
"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
660
|
-
className
|
|
661
|
-
),
|
|
662
|
-
...props,
|
|
663
|
-
children: [
|
|
664
|
-
children,
|
|
665
|
-
/* @__PURE__ */ jsx6(ChevronRightIcon, { className: "ml-auto" })
|
|
666
|
-
]
|
|
667
|
-
}
|
|
668
|
-
);
|
|
669
|
-
}
|
|
670
|
-
function DropdownMenuSubContent({
|
|
671
|
-
className,
|
|
672
|
-
style,
|
|
673
|
-
...props
|
|
674
|
-
}) {
|
|
675
|
-
return /* @__PURE__ */ jsx6(
|
|
676
|
-
DropdownMenuPrimitive.SubContent,
|
|
677
|
-
{
|
|
678
|
-
"data-slot": "dropdown-menu-sub-content",
|
|
679
|
-
className: cn(
|
|
680
|
-
"z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
681
|
-
className
|
|
682
|
-
),
|
|
683
|
-
style: { zIndex: "var(--z-popover)", ...style },
|
|
684
|
-
...props
|
|
685
|
-
}
|
|
686
|
-
);
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
// src/components/input.tsx
|
|
690
|
-
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
691
|
-
function Input({ className, type, ...props }) {
|
|
692
|
-
return /* @__PURE__ */ jsx7(
|
|
693
|
-
"input",
|
|
694
|
-
{
|
|
695
|
-
type,
|
|
696
|
-
"data-slot": "input",
|
|
697
|
-
className: cn(
|
|
698
|
-
"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
699
|
-
className
|
|
700
|
-
),
|
|
701
|
-
...props
|
|
702
|
-
}
|
|
703
|
-
);
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
// src/components/resizable.tsx
|
|
707
|
-
import * as ResizablePrimitive from "react-resizable-panels";
|
|
708
|
-
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
709
|
-
function ResizablePanelGroup({
|
|
710
|
-
className,
|
|
711
|
-
orientation = "horizontal",
|
|
712
|
-
...props
|
|
713
|
-
}) {
|
|
714
|
-
return /* @__PURE__ */ jsx8(
|
|
715
|
-
ResizablePrimitive.Group,
|
|
716
|
-
{
|
|
717
|
-
"data-orientation": orientation,
|
|
718
|
-
"data-slot": "resizable-panel-group",
|
|
719
|
-
className: cn(
|
|
720
|
-
"flex h-full w-full data-[orientation=vertical]:flex-col",
|
|
721
|
-
className
|
|
722
|
-
),
|
|
723
|
-
...props,
|
|
724
|
-
orientation
|
|
725
|
-
}
|
|
726
|
-
);
|
|
727
|
-
}
|
|
728
|
-
function ResizablePanel(props) {
|
|
729
|
-
return /* @__PURE__ */ jsx8(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
|
|
730
|
-
}
|
|
731
|
-
function ResizableHandle({
|
|
732
|
-
className,
|
|
733
|
-
withHandle,
|
|
734
|
-
...props
|
|
735
|
-
}) {
|
|
736
|
-
return /* @__PURE__ */ jsx8(
|
|
737
|
-
ResizablePrimitive.Separator,
|
|
738
|
-
{
|
|
739
|
-
"data-slot": "resizable-handle",
|
|
740
|
-
className: cn(
|
|
741
|
-
"group relative flex items-center justify-center bg-transparent outline-none after:absolute after:bg-border/70 after:transition-colors hover:after:bg-border focus-visible:after:bg-ring aria-[orientation=horizontal]:h-2 aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:cursor-row-resize aria-[orientation=horizontal]:after:inset-x-0 aria-[orientation=horizontal]:after:top-1/2 aria-[orientation=horizontal]:after:h-px aria-[orientation=horizontal]:after:-translate-y-1/2 aria-[orientation=vertical]:h-full aria-[orientation=vertical]:w-2 aria-[orientation=vertical]:cursor-col-resize aria-[orientation=vertical]:after:inset-y-0 aria-[orientation=vertical]:after:left-1/2 aria-[orientation=vertical]:after:w-px aria-[orientation=vertical]:after:-translate-x-1/2",
|
|
742
|
-
className
|
|
743
|
-
),
|
|
744
|
-
...props,
|
|
745
|
-
children: withHandle ? /* @__PURE__ */ jsx8("div", { className: "z-10 flex items-center justify-center rounded-full bg-border/85 transition-colors group-hover:bg-border group-aria-[orientation=horizontal]:h-[3px] group-aria-[orientation=horizontal]:w-10 group-aria-[orientation=vertical]:h-10 group-aria-[orientation=vertical]:w-[3px]" }) : null
|
|
746
|
-
}
|
|
747
|
-
);
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
// src/components/scroll-area.tsx
|
|
751
|
-
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
752
|
-
import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
753
|
-
function ScrollArea({
|
|
754
|
-
className,
|
|
755
|
-
children,
|
|
756
|
-
...props
|
|
757
|
-
}) {
|
|
758
|
-
return /* @__PURE__ */ jsxs4(
|
|
759
|
-
ScrollAreaPrimitive.Root,
|
|
760
|
-
{
|
|
761
|
-
"data-slot": "scroll-area",
|
|
762
|
-
className: cn("relative", className),
|
|
763
|
-
...props,
|
|
764
|
-
children: [
|
|
765
|
-
/* @__PURE__ */ jsx9(
|
|
766
|
-
ScrollAreaPrimitive.Viewport,
|
|
767
|
-
{
|
|
768
|
-
"data-slot": "scroll-area-viewport",
|
|
769
|
-
className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
|
|
770
|
-
children
|
|
771
|
-
}
|
|
772
|
-
),
|
|
773
|
-
/* @__PURE__ */ jsx9(ScrollBar, {}),
|
|
774
|
-
/* @__PURE__ */ jsx9(ScrollAreaPrimitive.Corner, {})
|
|
775
|
-
]
|
|
776
|
-
}
|
|
777
|
-
);
|
|
778
|
-
}
|
|
779
|
-
function ScrollBar({
|
|
780
|
-
className,
|
|
781
|
-
orientation = "vertical",
|
|
782
|
-
...props
|
|
783
|
-
}) {
|
|
784
|
-
return /* @__PURE__ */ jsx9(
|
|
785
|
-
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
786
|
-
{
|
|
787
|
-
"data-slot": "scroll-area-scrollbar",
|
|
788
|
-
"data-orientation": orientation,
|
|
789
|
-
orientation,
|
|
790
|
-
className: cn(
|
|
791
|
-
"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
|
|
792
|
-
className
|
|
793
|
-
),
|
|
794
|
-
...props,
|
|
795
|
-
children: /* @__PURE__ */ jsx9(
|
|
796
|
-
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
797
|
-
{
|
|
798
|
-
"data-slot": "scroll-area-thumb",
|
|
799
|
-
className: "relative flex-1 rounded-full bg-border"
|
|
800
|
-
}
|
|
801
|
-
)
|
|
802
|
-
}
|
|
803
|
-
);
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
// src/components/select.tsx
|
|
807
|
-
import { Select as SelectPrimitive } from "radix-ui";
|
|
808
|
-
import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
809
|
-
function Select({
|
|
810
|
-
...props
|
|
811
|
-
}) {
|
|
812
|
-
return /* @__PURE__ */ jsx10(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
813
|
-
}
|
|
814
|
-
function SelectGroup({
|
|
815
|
-
className,
|
|
816
|
-
...props
|
|
817
|
-
}) {
|
|
818
|
-
return /* @__PURE__ */ jsx10(
|
|
819
|
-
SelectPrimitive.Group,
|
|
820
|
-
{
|
|
821
|
-
"data-slot": "select-group",
|
|
822
|
-
className: cn("scroll-my-1 p-1", className),
|
|
823
|
-
...props
|
|
824
|
-
}
|
|
825
|
-
);
|
|
826
|
-
}
|
|
827
|
-
function SelectValue({
|
|
828
|
-
...props
|
|
829
|
-
}) {
|
|
830
|
-
return /* @__PURE__ */ jsx10(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
831
|
-
}
|
|
832
|
-
function SelectTrigger({
|
|
833
|
-
className,
|
|
834
|
-
size = "default",
|
|
835
|
-
children,
|
|
836
|
-
...props
|
|
837
|
-
}) {
|
|
838
|
-
return /* @__PURE__ */ jsxs5(
|
|
839
|
-
SelectPrimitive.Trigger,
|
|
840
|
-
{
|
|
841
|
-
"data-slot": "select-trigger",
|
|
842
|
-
"data-size": size,
|
|
843
|
-
className: cn(
|
|
844
|
-
"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
845
|
-
className
|
|
846
|
-
),
|
|
847
|
-
...props,
|
|
848
|
-
children: [
|
|
849
|
-
children,
|
|
850
|
-
/* @__PURE__ */ jsx10(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx10(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })
|
|
851
|
-
]
|
|
852
|
-
}
|
|
853
|
-
);
|
|
854
|
-
}
|
|
855
|
-
function SelectContent({
|
|
856
|
-
className,
|
|
857
|
-
children,
|
|
858
|
-
position = "item-aligned",
|
|
859
|
-
align = "center",
|
|
860
|
-
style,
|
|
861
|
-
...props
|
|
862
|
-
}) {
|
|
863
|
-
return /* @__PURE__ */ jsx10(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
|
|
864
|
-
SelectPrimitive.Content,
|
|
865
|
-
{
|
|
866
|
-
"data-slot": "select-content",
|
|
867
|
-
"data-align-trigger": position === "item-aligned",
|
|
868
|
-
className: cn(
|
|
869
|
-
"relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
870
|
-
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
871
|
-
className
|
|
872
|
-
),
|
|
873
|
-
position,
|
|
874
|
-
align,
|
|
875
|
-
style: { zIndex: "var(--z-popover)", ...style },
|
|
876
|
-
...props,
|
|
877
|
-
children: [
|
|
878
|
-
/* @__PURE__ */ jsx10(SelectScrollUpButton, {}),
|
|
879
|
-
/* @__PURE__ */ jsx10(
|
|
880
|
-
SelectPrimitive.Viewport,
|
|
881
|
-
{
|
|
882
|
-
"data-position": position,
|
|
883
|
-
className: cn(
|
|
884
|
-
"data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
|
|
885
|
-
position === "popper" && ""
|
|
886
|
-
),
|
|
887
|
-
children
|
|
888
|
-
}
|
|
889
|
-
),
|
|
890
|
-
/* @__PURE__ */ jsx10(SelectScrollDownButton, {})
|
|
891
|
-
]
|
|
892
|
-
}
|
|
893
|
-
) });
|
|
894
|
-
}
|
|
895
|
-
function SelectLabel({
|
|
896
|
-
className,
|
|
897
|
-
...props
|
|
898
|
-
}) {
|
|
899
|
-
return /* @__PURE__ */ jsx10(
|
|
900
|
-
SelectPrimitive.Label,
|
|
901
|
-
{
|
|
902
|
-
"data-slot": "select-label",
|
|
903
|
-
className: cn("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
904
|
-
...props
|
|
905
|
-
}
|
|
906
|
-
);
|
|
907
|
-
}
|
|
908
|
-
function SelectItem({
|
|
909
|
-
className,
|
|
910
|
-
children,
|
|
911
|
-
...props
|
|
912
|
-
}) {
|
|
913
|
-
return /* @__PURE__ */ jsxs5(
|
|
914
|
-
SelectPrimitive.Item,
|
|
915
|
-
{
|
|
916
|
-
"data-slot": "select-item",
|
|
917
|
-
className: cn(
|
|
918
|
-
"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
919
|
-
className
|
|
920
|
-
),
|
|
921
|
-
...props,
|
|
922
|
-
children: [
|
|
923
|
-
/* @__PURE__ */ jsx10("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx10(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx10(CheckIcon, { className: "pointer-events-none" }) }) }),
|
|
924
|
-
/* @__PURE__ */ jsx10(SelectPrimitive.ItemText, { children })
|
|
925
|
-
]
|
|
926
|
-
}
|
|
927
|
-
);
|
|
928
|
-
}
|
|
929
|
-
function SelectSeparator({
|
|
930
|
-
className,
|
|
931
|
-
...props
|
|
932
|
-
}) {
|
|
933
|
-
return /* @__PURE__ */ jsx10(
|
|
934
|
-
SelectPrimitive.Separator,
|
|
935
|
-
{
|
|
936
|
-
"data-slot": "select-separator",
|
|
937
|
-
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
938
|
-
...props
|
|
939
|
-
}
|
|
940
|
-
);
|
|
941
|
-
}
|
|
942
|
-
function SelectScrollUpButton({
|
|
943
|
-
className,
|
|
944
|
-
...props
|
|
945
|
-
}) {
|
|
946
|
-
return /* @__PURE__ */ jsx10(
|
|
947
|
-
SelectPrimitive.ScrollUpButton,
|
|
948
|
-
{
|
|
949
|
-
"data-slot": "select-scroll-up-button",
|
|
950
|
-
className: cn(
|
|
951
|
-
"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
952
|
-
className
|
|
953
|
-
),
|
|
954
|
-
...props,
|
|
955
|
-
children: /* @__PURE__ */ jsx10(ChevronUpIcon, {})
|
|
956
|
-
}
|
|
957
|
-
);
|
|
958
|
-
}
|
|
959
|
-
function SelectScrollDownButton({
|
|
960
|
-
className,
|
|
961
|
-
...props
|
|
962
|
-
}) {
|
|
963
|
-
return /* @__PURE__ */ jsx10(
|
|
964
|
-
SelectPrimitive.ScrollDownButton,
|
|
965
|
-
{
|
|
966
|
-
"data-slot": "select-scroll-down-button",
|
|
967
|
-
className: cn(
|
|
968
|
-
"z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
|
|
969
|
-
className
|
|
970
|
-
),
|
|
971
|
-
...props,
|
|
972
|
-
children: /* @__PURE__ */ jsx10(ChevronDownIcon, {})
|
|
973
|
-
}
|
|
974
|
-
);
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
// src/components/separator.tsx
|
|
978
|
-
import { Separator as SeparatorPrimitive } from "radix-ui";
|
|
979
|
-
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
980
|
-
function Separator2({
|
|
981
|
-
className,
|
|
982
|
-
orientation = "horizontal",
|
|
983
|
-
decorative = true,
|
|
984
|
-
...props
|
|
985
|
-
}) {
|
|
986
|
-
return /* @__PURE__ */ jsx11(
|
|
987
|
-
SeparatorPrimitive.Root,
|
|
988
|
-
{
|
|
989
|
-
"data-slot": "separator",
|
|
990
|
-
decorative,
|
|
991
|
-
orientation,
|
|
992
|
-
className: cn(
|
|
993
|
-
"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
|
|
994
|
-
className
|
|
995
|
-
),
|
|
996
|
-
...props
|
|
997
|
-
}
|
|
998
|
-
);
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
// src/components/toast.tsx
|
|
1002
|
-
import { Toast as ToastPrimitive } from "radix-ui";
|
|
1003
|
-
import { cva as cva3 } from "class-variance-authority";
|
|
1004
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1005
|
-
var ToastProvider = ToastPrimitive.Provider;
|
|
1006
|
-
var toastVariants = cva3(
|
|
1007
|
-
"group pointer-events-auto relative grid w-full min-w-0 gap-1 overflow-hidden rounded-lg border bg-popover px-4 py-3 pr-10 text-sm text-popover-foreground shadow-panel transition-all data-closed:fade-out-80 data-closed:slide-out-to-right-full data-open:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none sm:data-open:slide-in-from-bottom-full",
|
|
1008
|
-
{
|
|
1009
|
-
variants: {
|
|
1010
|
-
variant: {
|
|
1011
|
-
default: "border-border/70",
|
|
1012
|
-
destructive: "border-destructive/30 bg-destructive/10 text-foreground"
|
|
1013
|
-
}
|
|
1014
|
-
},
|
|
1015
|
-
defaultVariants: {
|
|
1016
|
-
variant: "default"
|
|
1017
|
-
}
|
|
1018
|
-
}
|
|
1019
|
-
);
|
|
1020
|
-
function ToastRoot({
|
|
1021
|
-
className,
|
|
1022
|
-
variant,
|
|
1023
|
-
...props
|
|
1024
|
-
}) {
|
|
1025
|
-
return /* @__PURE__ */ jsx12(
|
|
1026
|
-
ToastPrimitive.Root,
|
|
1027
|
-
{
|
|
1028
|
-
"data-slot": "toast",
|
|
1029
|
-
className: cn(toastVariants({ variant }), className),
|
|
1030
|
-
...props
|
|
1031
|
-
}
|
|
1032
|
-
);
|
|
1033
|
-
}
|
|
1034
|
-
function ToastTitle({
|
|
1035
|
-
className,
|
|
1036
|
-
...props
|
|
1037
|
-
}) {
|
|
1038
|
-
return /* @__PURE__ */ jsx12(
|
|
1039
|
-
ToastPrimitive.Title,
|
|
1040
|
-
{
|
|
1041
|
-
"data-slot": "toast-title",
|
|
1042
|
-
className: cn("text-sm font-semibold", className),
|
|
1043
|
-
...props
|
|
1044
|
-
}
|
|
1045
|
-
);
|
|
1046
|
-
}
|
|
1047
|
-
function ToastDescription({
|
|
1048
|
-
className,
|
|
1049
|
-
...props
|
|
1050
|
-
}) {
|
|
1051
|
-
return /* @__PURE__ */ jsx12(
|
|
1052
|
-
ToastPrimitive.Description,
|
|
1053
|
-
{
|
|
1054
|
-
"data-slot": "toast-description",
|
|
1055
|
-
className: cn("text-xs leading-5 text-muted-foreground", className),
|
|
1056
|
-
...props
|
|
1057
|
-
}
|
|
1058
|
-
);
|
|
1059
|
-
}
|
|
1060
|
-
function ToastClose({
|
|
1061
|
-
className,
|
|
1062
|
-
...props
|
|
1063
|
-
}) {
|
|
1064
|
-
return /* @__PURE__ */ jsx12(
|
|
1065
|
-
ToastPrimitive.Close,
|
|
1066
|
-
{
|
|
1067
|
-
"data-slot": "toast-close",
|
|
1068
|
-
className: cn(
|
|
1069
|
-
"absolute right-2 top-2 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/35",
|
|
1070
|
-
className
|
|
1071
|
-
),
|
|
1072
|
-
...props,
|
|
1073
|
-
children: /* @__PURE__ */ jsx12(CloseIcon, { className: "size-4" })
|
|
1074
|
-
}
|
|
1075
|
-
);
|
|
1076
|
-
}
|
|
1077
|
-
function ToastViewport({
|
|
1078
|
-
className,
|
|
1079
|
-
style,
|
|
1080
|
-
...props
|
|
1081
|
-
}) {
|
|
1082
|
-
return /* @__PURE__ */ jsx12(
|
|
1083
|
-
ToastPrimitive.Viewport,
|
|
1084
|
-
{
|
|
1085
|
-
"data-slot": "toast-viewport",
|
|
1086
|
-
className: cn(
|
|
1087
|
-
"fixed right-0 top-0 flex max-h-screen w-full flex-col-reverse gap-2 p-4 sm:bottom-0 sm:top-auto sm:max-w-sm",
|
|
1088
|
-
className
|
|
1089
|
-
),
|
|
1090
|
-
style: { zIndex: "var(--z-toast)", ...style },
|
|
1091
|
-
...props
|
|
1092
|
-
}
|
|
1093
|
-
);
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
export {
|
|
1097
|
-
badgeVariants,
|
|
1098
|
-
Badge,
|
|
1099
|
-
buttonVariants,
|
|
1100
|
-
Button,
|
|
1101
|
-
Card,
|
|
1102
|
-
CardHeader,
|
|
1103
|
-
CardTitle,
|
|
1104
|
-
CardDescription,
|
|
1105
|
-
CardAction,
|
|
1106
|
-
CardContent,
|
|
1107
|
-
CardFooter,
|
|
1108
|
-
Dialog,
|
|
1109
|
-
DialogTrigger,
|
|
1110
|
-
DialogPortal,
|
|
1111
|
-
DialogClose,
|
|
1112
|
-
DialogOverlay,
|
|
1113
|
-
DialogContent,
|
|
1114
|
-
DialogHeader,
|
|
1115
|
-
DialogFooter,
|
|
1116
|
-
DialogTitle,
|
|
1117
|
-
DialogDescription,
|
|
1118
|
-
ConfirmationDialog,
|
|
1119
|
-
DropdownMenu,
|
|
1120
|
-
DropdownMenuPortal,
|
|
1121
|
-
DropdownMenuTrigger,
|
|
1122
|
-
DropdownMenuContent,
|
|
1123
|
-
DropdownMenuGroup,
|
|
1124
|
-
DropdownMenuItem,
|
|
1125
|
-
DropdownMenuCheckboxItem,
|
|
1126
|
-
DropdownMenuRadioGroup,
|
|
1127
|
-
DropdownMenuRadioItem,
|
|
1128
|
-
DropdownMenuLabel,
|
|
1129
|
-
DropdownMenuSeparator,
|
|
1130
|
-
DropdownMenuShortcut,
|
|
1131
|
-
DropdownMenuSub,
|
|
1132
|
-
DropdownMenuSubTrigger,
|
|
1133
|
-
DropdownMenuSubContent,
|
|
1134
|
-
Input,
|
|
1135
|
-
ResizablePanelGroup,
|
|
1136
|
-
ResizablePanel,
|
|
1137
|
-
ResizableHandle,
|
|
1138
|
-
ScrollArea,
|
|
1139
|
-
ScrollBar,
|
|
1140
|
-
Select,
|
|
1141
|
-
SelectGroup,
|
|
1142
|
-
SelectValue,
|
|
1143
|
-
SelectTrigger,
|
|
1144
|
-
SelectContent,
|
|
1145
|
-
SelectLabel,
|
|
1146
|
-
SelectItem,
|
|
1147
|
-
SelectSeparator,
|
|
1148
|
-
SelectScrollUpButton,
|
|
1149
|
-
SelectScrollDownButton,
|
|
1150
|
-
Separator2 as Separator,
|
|
1151
|
-
ToastProvider,
|
|
1152
|
-
toastVariants,
|
|
1153
|
-
ToastRoot,
|
|
1154
|
-
ToastTitle,
|
|
1155
|
-
ToastDescription,
|
|
1156
|
-
ToastClose,
|
|
1157
|
-
ToastViewport
|
|
1158
|
-
};
|
|
1159
|
-
//# sourceMappingURL=chunk-FT633NLJ.js.map
|