@supos-grid-table/core 0.1.0-alpha.1 → 0.1.0-alpha.2
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 +12 -1
- package/SHADCN.json +117 -0
- package/dist/{grid-DqJTLeBs.mjs → grid-DeVIC26t.mjs} +109 -124
- package/dist/grid-DeVIC26t.mjs.map +1 -0
- package/dist/grid.d.mts +2 -2
- package/dist/grid.mjs +1 -1
- package/dist/react.d.mts +1 -1
- package/dist/react.mjs +424 -211
- package/dist/react.mjs.map +1 -1
- package/dist/style.css +2 -1
- package/dist/ui-esOhDo-4.mjs +946 -0
- package/dist/ui-esOhDo-4.mjs.map +1 -0
- package/dist/ui.d.mts +183 -0
- package/dist/ui.mjs +2 -0
- package/licenses/@base-ui_react-LICENSE +21 -0
- package/licenses/DEPENDENCIES.json +49 -9
- package/licenses/Shadcn-MIT.txt +21 -0
- package/licenses/class-variance-authority-LICENSE +190 -0
- package/licenses/cmdk-LICENSE.md +21 -0
- package/licenses/cn-LICENSE +21 -0
- package/licenses/lucide-react-LICENSE +7 -3
- package/licenses/tw-animate-css-LICENSE +21 -0
- package/package.json +53 -18
- package/dist/grid-DqJTLeBs.mjs.map +0 -1
|
@@ -0,0 +1,946 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { cn } from "cn";
|
|
3
|
+
import { Button } from "@base-ui/react/button";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { Input } from "@base-ui/react/input";
|
|
7
|
+
import { CheckIcon, ChevronDownIcon, ChevronUpIcon, SearchIcon, XIcon } from "lucide-react";
|
|
8
|
+
import { Checkbox } from "@base-ui/react/checkbox";
|
|
9
|
+
import { Dialog } from "@base-ui/react/dialog";
|
|
10
|
+
import { AlertDialog } from "@base-ui/react/alert-dialog";
|
|
11
|
+
import { Tooltip } from "@base-ui/react/tooltip";
|
|
12
|
+
import { Command } from "cmdk";
|
|
13
|
+
import { Popover } from "@base-ui/react/popover";
|
|
14
|
+
import { Select } from "@base-ui/react/select";
|
|
15
|
+
import { Combobox } from "@base-ui/react";
|
|
16
|
+
import { Tabs } from "@base-ui/react/tabs";
|
|
17
|
+
import { Collapsible } from "@base-ui/react/collapsible";
|
|
18
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
19
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
20
|
+
//#region src/components/ui/button.tsx
|
|
21
|
+
const buttonVariants = cva("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 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", {
|
|
22
|
+
variants: {
|
|
23
|
+
variant: {
|
|
24
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
25
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
26
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
27
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
28
|
+
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 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",
|
|
29
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
30
|
+
},
|
|
31
|
+
size: {
|
|
32
|
+
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
33
|
+
xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
34
|
+
sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
35
|
+
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
36
|
+
icon: "size-8",
|
|
37
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
38
|
+
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
39
|
+
"icon-lg": "size-9"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
defaultVariants: {
|
|
43
|
+
variant: "default",
|
|
44
|
+
size: "default"
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
function Button$1({ className, variant = "default", size = "default", ...props }) {
|
|
48
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
49
|
+
"data-slot": "button",
|
|
50
|
+
className: cn(buttonVariants({
|
|
51
|
+
variant,
|
|
52
|
+
size,
|
|
53
|
+
className
|
|
54
|
+
})),
|
|
55
|
+
...props
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/components/ui/input.tsx
|
|
60
|
+
function Input$1({ className, type, ...props }) {
|
|
61
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
62
|
+
type,
|
|
63
|
+
"data-slot": "input",
|
|
64
|
+
className: cn("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", className),
|
|
65
|
+
...props
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/components/ui/textarea.tsx
|
|
70
|
+
function Textarea({ className, ...props }) {
|
|
71
|
+
return /* @__PURE__ */ jsx("textarea", {
|
|
72
|
+
"data-slot": "textarea",
|
|
73
|
+
className: cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 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", className),
|
|
74
|
+
...props
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/components/ui/label.tsx
|
|
79
|
+
function Label({ className, ...props }) {
|
|
80
|
+
return /* @__PURE__ */ jsx("label", {
|
|
81
|
+
"data-slot": "label",
|
|
82
|
+
className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
|
|
83
|
+
...props
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region src/components/ui/native-select.tsx
|
|
88
|
+
function NativeSelect({ className, size = "default", ...props }) {
|
|
89
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
90
|
+
className: cn("group/native-select relative w-fit has-[select:disabled]:opacity-50", className),
|
|
91
|
+
"data-slot": "native-select-wrapper",
|
|
92
|
+
"data-size": size,
|
|
93
|
+
children: [/* @__PURE__ */ jsx("select", {
|
|
94
|
+
"data-slot": "native-select",
|
|
95
|
+
"data-size": size,
|
|
96
|
+
className: "h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-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 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
97
|
+
...props
|
|
98
|
+
}), /* @__PURE__ */ jsx(ChevronDownIcon, {
|
|
99
|
+
className: "pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none",
|
|
100
|
+
"aria-hidden": "true",
|
|
101
|
+
"data-slot": "native-select-icon"
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function NativeSelectOption({ className, ...props }) {
|
|
106
|
+
return /* @__PURE__ */ jsx("option", {
|
|
107
|
+
"data-slot": "native-select-option",
|
|
108
|
+
className: cn("bg-[Canvas] text-[CanvasText]", className),
|
|
109
|
+
...props
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function NativeSelectOptGroup({ className, ...props }) {
|
|
113
|
+
return /* @__PURE__ */ jsx("optgroup", {
|
|
114
|
+
"data-slot": "native-select-optgroup",
|
|
115
|
+
className: cn("bg-[Canvas] text-[CanvasText]", className),
|
|
116
|
+
...props
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/components/ui/checkbox.tsx
|
|
121
|
+
function Checkbox$1({ className, ...props }) {
|
|
122
|
+
return /* @__PURE__ */ jsx(Checkbox.Root, {
|
|
123
|
+
"data-slot": "checkbox",
|
|
124
|
+
className: cn("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 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 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary", className),
|
|
125
|
+
...props,
|
|
126
|
+
children: /* @__PURE__ */ jsx(Checkbox.Indicator, {
|
|
127
|
+
"data-slot": "checkbox-indicator",
|
|
128
|
+
className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
|
|
129
|
+
children: /* @__PURE__ */ jsx(CheckIcon, {})
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/components/ui/dialog.tsx
|
|
135
|
+
function Dialog$1({ ...props }) {
|
|
136
|
+
return /* @__PURE__ */ jsx(Dialog.Root, {
|
|
137
|
+
"data-slot": "dialog",
|
|
138
|
+
...props
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function DialogTrigger({ ...props }) {
|
|
142
|
+
return /* @__PURE__ */ jsx(Dialog.Trigger, {
|
|
143
|
+
"data-slot": "dialog-trigger",
|
|
144
|
+
...props
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function DialogPortal({ ...props }) {
|
|
148
|
+
return /* @__PURE__ */ jsx(Dialog.Portal, {
|
|
149
|
+
"data-slot": "dialog-portal",
|
|
150
|
+
...props
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function DialogClose({ ...props }) {
|
|
154
|
+
return /* @__PURE__ */ jsx(Dialog.Close, {
|
|
155
|
+
"data-slot": "dialog-close",
|
|
156
|
+
...props
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function DialogOverlay({ className, ...props }) {
|
|
160
|
+
return /* @__PURE__ */ jsx(Dialog.Backdrop, {
|
|
161
|
+
"data-slot": "dialog-overlay",
|
|
162
|
+
className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
163
|
+
...props
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function DialogContent({ className, children, showCloseButton = true, ...props }) {
|
|
167
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(Dialog.Popup, {
|
|
168
|
+
"data-slot": "dialog-content",
|
|
169
|
+
className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none 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", className),
|
|
170
|
+
...props,
|
|
171
|
+
children: [children, showCloseButton && /* @__PURE__ */ jsxs(Dialog.Close, {
|
|
172
|
+
"data-slot": "dialog-close",
|
|
173
|
+
render: /* @__PURE__ */ jsx(Button$1, {
|
|
174
|
+
variant: "ghost",
|
|
175
|
+
className: "absolute top-2 right-2",
|
|
176
|
+
size: "icon-sm"
|
|
177
|
+
}),
|
|
178
|
+
children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
179
|
+
className: "sr-only",
|
|
180
|
+
children: "Close"
|
|
181
|
+
})]
|
|
182
|
+
})]
|
|
183
|
+
})] });
|
|
184
|
+
}
|
|
185
|
+
function DialogHeader({ className, ...props }) {
|
|
186
|
+
return /* @__PURE__ */ jsx("div", {
|
|
187
|
+
"data-slot": "dialog-header",
|
|
188
|
+
className: cn("flex flex-col gap-2", className),
|
|
189
|
+
...props
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
193
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
194
|
+
"data-slot": "dialog-footer",
|
|
195
|
+
className: cn("-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", className),
|
|
196
|
+
...props,
|
|
197
|
+
children: [children, showCloseButton && /* @__PURE__ */ jsx(Dialog.Close, {
|
|
198
|
+
render: /* @__PURE__ */ jsx(Button$1, { variant: "outline" }),
|
|
199
|
+
children: "Close"
|
|
200
|
+
})]
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function DialogTitle({ className, ...props }) {
|
|
204
|
+
return /* @__PURE__ */ jsx(Dialog.Title, {
|
|
205
|
+
"data-slot": "dialog-title",
|
|
206
|
+
className: cn("text-base leading-none font-medium", className),
|
|
207
|
+
...props
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function DialogDescription({ className, ...props }) {
|
|
211
|
+
return /* @__PURE__ */ jsx(Dialog.Description, {
|
|
212
|
+
"data-slot": "dialog-description",
|
|
213
|
+
className: cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
214
|
+
...props
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
//#endregion
|
|
218
|
+
//#region src/components/ui/alert-dialog.tsx
|
|
219
|
+
function AlertDialog$1({ ...props }) {
|
|
220
|
+
return /* @__PURE__ */ jsx(AlertDialog.Root, {
|
|
221
|
+
"data-slot": "alert-dialog",
|
|
222
|
+
...props
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function AlertDialogTrigger({ ...props }) {
|
|
226
|
+
return /* @__PURE__ */ jsx(AlertDialog.Trigger, {
|
|
227
|
+
"data-slot": "alert-dialog-trigger",
|
|
228
|
+
...props
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
function AlertDialogPortal({ ...props }) {
|
|
232
|
+
return /* @__PURE__ */ jsx(AlertDialog.Portal, {
|
|
233
|
+
"data-slot": "alert-dialog-portal",
|
|
234
|
+
...props
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
238
|
+
return /* @__PURE__ */ jsx(AlertDialog.Backdrop, {
|
|
239
|
+
"data-slot": "alert-dialog-overlay",
|
|
240
|
+
className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
241
|
+
...props
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
245
|
+
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialog.Popup, {
|
|
246
|
+
"data-slot": "alert-dialog-content",
|
|
247
|
+
"data-size": size,
|
|
248
|
+
className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]: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", className),
|
|
249
|
+
...props
|
|
250
|
+
})] });
|
|
251
|
+
}
|
|
252
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
253
|
+
return /* @__PURE__ */ jsx("div", {
|
|
254
|
+
"data-slot": "alert-dialog-header",
|
|
255
|
+
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
256
|
+
...props
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
260
|
+
return /* @__PURE__ */ jsx("div", {
|
|
261
|
+
"data-slot": "alert-dialog-footer",
|
|
262
|
+
className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
|
|
263
|
+
...props
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
267
|
+
return /* @__PURE__ */ jsx("div", {
|
|
268
|
+
"data-slot": "alert-dialog-media",
|
|
269
|
+
className: cn("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", className),
|
|
270
|
+
...props
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
274
|
+
return /* @__PURE__ */ jsx(AlertDialog.Title, {
|
|
275
|
+
"data-slot": "alert-dialog-title",
|
|
276
|
+
className: cn("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
|
|
277
|
+
...props
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
281
|
+
return /* @__PURE__ */ jsx(AlertDialog.Description, {
|
|
282
|
+
"data-slot": "alert-dialog-description",
|
|
283
|
+
className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
284
|
+
...props
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
function AlertDialogAction({ className, ...props }) {
|
|
288
|
+
return /* @__PURE__ */ jsx(Button$1, {
|
|
289
|
+
"data-slot": "alert-dialog-action",
|
|
290
|
+
className: cn(className),
|
|
291
|
+
...props
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
295
|
+
return /* @__PURE__ */ jsx(AlertDialog.Close, {
|
|
296
|
+
"data-slot": "alert-dialog-cancel",
|
|
297
|
+
className: cn(className),
|
|
298
|
+
render: /* @__PURE__ */ jsx(Button$1, {
|
|
299
|
+
variant,
|
|
300
|
+
size
|
|
301
|
+
}),
|
|
302
|
+
...props
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region src/components/ui/tooltip.tsx
|
|
307
|
+
function TooltipProvider({ delay = 0, ...props }) {
|
|
308
|
+
return /* @__PURE__ */ jsx(Tooltip.Provider, {
|
|
309
|
+
"data-slot": "tooltip-provider",
|
|
310
|
+
delay,
|
|
311
|
+
...props
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
function Tooltip$1({ ...props }) {
|
|
315
|
+
return /* @__PURE__ */ jsx(Tooltip.Root, {
|
|
316
|
+
"data-slot": "tooltip",
|
|
317
|
+
...props
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
function TooltipTrigger({ ...props }) {
|
|
321
|
+
return /* @__PURE__ */ jsx(Tooltip.Trigger, {
|
|
322
|
+
"data-slot": "tooltip-trigger",
|
|
323
|
+
...props
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
|
|
327
|
+
return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
|
|
328
|
+
align,
|
|
329
|
+
alignOffset,
|
|
330
|
+
side,
|
|
331
|
+
sideOffset,
|
|
332
|
+
className: "isolate z-50",
|
|
333
|
+
children: /* @__PURE__ */ jsxs(Tooltip.Popup, {
|
|
334
|
+
"data-slot": "tooltip-content",
|
|
335
|
+
className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 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", className),
|
|
336
|
+
...props,
|
|
337
|
+
children: [children, /* @__PURE__ */ jsx(Tooltip.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })]
|
|
338
|
+
})
|
|
339
|
+
}) });
|
|
340
|
+
}
|
|
341
|
+
//#endregion
|
|
342
|
+
//#region src/components/ui/input-group.tsx
|
|
343
|
+
function InputGroup({ className, ...props }) {
|
|
344
|
+
return /* @__PURE__ */ jsx("div", {
|
|
345
|
+
"data-slot": "input-group",
|
|
346
|
+
role: "group",
|
|
347
|
+
className: cn("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", className),
|
|
348
|
+
...props
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
const inputGroupAddonVariants = cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
|
|
352
|
+
variants: { align: {
|
|
353
|
+
"inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
|
|
354
|
+
"inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
|
|
355
|
+
"block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
|
|
356
|
+
"block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
|
|
357
|
+
} },
|
|
358
|
+
defaultVariants: { align: "inline-start" }
|
|
359
|
+
});
|
|
360
|
+
function InputGroupAddon({ className, align = "inline-start", ...props }) {
|
|
361
|
+
return /* @__PURE__ */ jsx("div", {
|
|
362
|
+
role: "group",
|
|
363
|
+
"data-slot": "input-group-addon",
|
|
364
|
+
"data-align": align,
|
|
365
|
+
className: cn(inputGroupAddonVariants({ align }), className),
|
|
366
|
+
onClick: (e) => {
|
|
367
|
+
if (e.target.closest("button")) return;
|
|
368
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
369
|
+
},
|
|
370
|
+
...props
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
|
|
374
|
+
variants: { size: {
|
|
375
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
376
|
+
sm: "",
|
|
377
|
+
"icon-xs": "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
|
|
378
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
379
|
+
} },
|
|
380
|
+
defaultVariants: { size: "xs" }
|
|
381
|
+
});
|
|
382
|
+
function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
|
|
383
|
+
return /* @__PURE__ */ jsx(Button$1, {
|
|
384
|
+
type,
|
|
385
|
+
"data-size": size,
|
|
386
|
+
variant,
|
|
387
|
+
className: cn(inputGroupButtonVariants({ size }), className),
|
|
388
|
+
...props
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
function InputGroupInput({ className, ...props }) {
|
|
392
|
+
return /* @__PURE__ */ jsx(Input$1, {
|
|
393
|
+
"data-slot": "input-group-control",
|
|
394
|
+
className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", className),
|
|
395
|
+
...props
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
//#endregion
|
|
399
|
+
//#region src/components/ui/command.tsx
|
|
400
|
+
function Command$1({ className, ...props }) {
|
|
401
|
+
return /* @__PURE__ */ jsx(Command, {
|
|
402
|
+
"data-slot": "command",
|
|
403
|
+
className: cn("flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground", className),
|
|
404
|
+
...props
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
function CommandDialog({ title = "Command Palette", description = "Search for a command to run...", children, className, showCloseButton = false, ...props }) {
|
|
408
|
+
return /* @__PURE__ */ jsxs(Dialog$1, {
|
|
409
|
+
...props,
|
|
410
|
+
children: [/* @__PURE__ */ jsxs(DialogHeader, {
|
|
411
|
+
className: "sr-only",
|
|
412
|
+
children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
|
|
413
|
+
}), /* @__PURE__ */ jsx(DialogContent, {
|
|
414
|
+
className: cn("top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0", className),
|
|
415
|
+
showCloseButton,
|
|
416
|
+
children
|
|
417
|
+
})]
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
function CommandInput({ className, ...props }) {
|
|
421
|
+
return /* @__PURE__ */ jsx("div", {
|
|
422
|
+
"data-slot": "command-input-wrapper",
|
|
423
|
+
className: "p-1 pb-0",
|
|
424
|
+
children: /* @__PURE__ */ jsxs(InputGroup, {
|
|
425
|
+
className: "h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",
|
|
426
|
+
children: [/* @__PURE__ */ jsx(Command.Input, {
|
|
427
|
+
"data-slot": "command-input",
|
|
428
|
+
className: cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
429
|
+
...props
|
|
430
|
+
}), /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }) })]
|
|
431
|
+
})
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
function CommandList({ className, ...props }) {
|
|
435
|
+
return /* @__PURE__ */ jsx(Command.List, {
|
|
436
|
+
"data-slot": "command-list",
|
|
437
|
+
className: cn("no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none", className),
|
|
438
|
+
...props
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
function CommandEmpty({ className, ...props }) {
|
|
442
|
+
return /* @__PURE__ */ jsx(Command.Empty, {
|
|
443
|
+
"data-slot": "command-empty",
|
|
444
|
+
className: cn("py-6 text-center text-sm", className),
|
|
445
|
+
...props
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
function CommandGroup({ className, ...props }) {
|
|
449
|
+
return /* @__PURE__ */ jsx(Command.Group, {
|
|
450
|
+
"data-slot": "command-group",
|
|
451
|
+
className: cn("overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground", className),
|
|
452
|
+
...props
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
function CommandSeparator({ className, ...props }) {
|
|
456
|
+
return /* @__PURE__ */ jsx(Command.Separator, {
|
|
457
|
+
"data-slot": "command-separator",
|
|
458
|
+
className: cn("-mx-1 h-px bg-border", className),
|
|
459
|
+
...props
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
function CommandItem({ className, children, ...props }) {
|
|
463
|
+
return /* @__PURE__ */ jsxs(Command.Item, {
|
|
464
|
+
"data-slot": "command-item",
|
|
465
|
+
className: cn("group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-selected:bg-muted data-selected:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:*:[svg]:text-foreground", className),
|
|
466
|
+
...props,
|
|
467
|
+
children: [children, /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100" })]
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
function CommandShortcut({ className, ...props }) {
|
|
471
|
+
return /* @__PURE__ */ jsx("span", {
|
|
472
|
+
"data-slot": "command-shortcut",
|
|
473
|
+
className: cn("ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground", className),
|
|
474
|
+
...props
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
//#endregion
|
|
478
|
+
//#region src/components/ui/popover.tsx
|
|
479
|
+
function Popover$1({ ...props }) {
|
|
480
|
+
return /* @__PURE__ */ jsx(Popover.Root, {
|
|
481
|
+
"data-slot": "popover",
|
|
482
|
+
...props
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
function PopoverTrigger({ ...props }) {
|
|
486
|
+
return /* @__PURE__ */ jsx(Popover.Trigger, {
|
|
487
|
+
"data-slot": "popover-trigger",
|
|
488
|
+
...props
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
function PopoverContent({ className, align = "center", alignOffset = 0, side = "bottom", sideOffset = 4, ...props }) {
|
|
492
|
+
return /* @__PURE__ */ jsx(Popover.Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, {
|
|
493
|
+
align,
|
|
494
|
+
alignOffset,
|
|
495
|
+
side,
|
|
496
|
+
sideOffset,
|
|
497
|
+
className: "isolate z-50",
|
|
498
|
+
children: /* @__PURE__ */ jsx(Popover.Popup, {
|
|
499
|
+
"data-slot": "popover-content",
|
|
500
|
+
className: cn("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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", className),
|
|
501
|
+
...props
|
|
502
|
+
})
|
|
503
|
+
}) });
|
|
504
|
+
}
|
|
505
|
+
function PopoverHeader({ className, ...props }) {
|
|
506
|
+
return /* @__PURE__ */ jsx("div", {
|
|
507
|
+
"data-slot": "popover-header",
|
|
508
|
+
className: cn("flex flex-col gap-0.5 text-sm", className),
|
|
509
|
+
...props
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
function PopoverTitle({ className, ...props }) {
|
|
513
|
+
return /* @__PURE__ */ jsx(Popover.Title, {
|
|
514
|
+
"data-slot": "popover-title",
|
|
515
|
+
className: cn("font-medium", className),
|
|
516
|
+
...props
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
function PopoverDescription({ className, ...props }) {
|
|
520
|
+
return /* @__PURE__ */ jsx(Popover.Description, {
|
|
521
|
+
"data-slot": "popover-description",
|
|
522
|
+
className: cn("text-muted-foreground", className),
|
|
523
|
+
...props
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
//#endregion
|
|
527
|
+
//#region src/components/ui/select.tsx
|
|
528
|
+
const Select$1 = Select.Root;
|
|
529
|
+
function SelectGroup({ className, ...props }) {
|
|
530
|
+
return /* @__PURE__ */ jsx(Select.Group, {
|
|
531
|
+
"data-slot": "select-group",
|
|
532
|
+
className: cn("scroll-my-1 p-1", className),
|
|
533
|
+
...props
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
function SelectValue({ className, ...props }) {
|
|
537
|
+
return /* @__PURE__ */ jsx(Select.Value, {
|
|
538
|
+
"data-slot": "select-value",
|
|
539
|
+
className: cn("flex flex-1 text-left", className),
|
|
540
|
+
...props
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
function SelectTrigger({ className, size = "default", children, ...props }) {
|
|
544
|
+
return /* @__PURE__ */ jsxs(Select.Trigger, {
|
|
545
|
+
"data-slot": "select-trigger",
|
|
546
|
+
"data-size": size,
|
|
547
|
+
className: cn("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", className),
|
|
548
|
+
...props,
|
|
549
|
+
children: [children, /* @__PURE__ */ jsx(Select.Icon, { render: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })]
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, ...props }) {
|
|
553
|
+
return /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, {
|
|
554
|
+
side,
|
|
555
|
+
sideOffset,
|
|
556
|
+
align,
|
|
557
|
+
alignOffset,
|
|
558
|
+
alignItemWithTrigger,
|
|
559
|
+
className: "isolate z-50",
|
|
560
|
+
children: /* @__PURE__ */ jsxs(Select.Popup, {
|
|
561
|
+
"data-slot": "select-content",
|
|
562
|
+
"data-align-trigger": alignItemWithTrigger,
|
|
563
|
+
className: cn("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--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=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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", className),
|
|
564
|
+
...props,
|
|
565
|
+
children: [
|
|
566
|
+
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
|
|
567
|
+
/* @__PURE__ */ jsx(Select.List, { children }),
|
|
568
|
+
/* @__PURE__ */ jsx(SelectScrollDownButton, {})
|
|
569
|
+
]
|
|
570
|
+
})
|
|
571
|
+
}) });
|
|
572
|
+
}
|
|
573
|
+
function SelectLabel({ className, ...props }) {
|
|
574
|
+
return /* @__PURE__ */ jsx(Select.GroupLabel, {
|
|
575
|
+
"data-slot": "select-label",
|
|
576
|
+
className: cn("px-1.5 py-1 text-xs text-muted-foreground", className),
|
|
577
|
+
...props
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
function SelectItem({ className, children, ...props }) {
|
|
581
|
+
return /* @__PURE__ */ jsxs(Select.Item, {
|
|
582
|
+
"data-slot": "select-item",
|
|
583
|
+
className: cn("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", className),
|
|
584
|
+
...props,
|
|
585
|
+
children: [/* @__PURE__ */ jsx(Select.ItemText, {
|
|
586
|
+
className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
|
|
587
|
+
children
|
|
588
|
+
}), /* @__PURE__ */ jsx(Select.ItemIndicator, {
|
|
589
|
+
render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
590
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" })
|
|
591
|
+
})]
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
function SelectSeparator({ className, ...props }) {
|
|
595
|
+
return /* @__PURE__ */ jsx(Select.Separator, {
|
|
596
|
+
"data-slot": "select-separator",
|
|
597
|
+
className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
|
|
598
|
+
...props
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
function SelectScrollUpButton({ className, ...props }) {
|
|
602
|
+
return /* @__PURE__ */ jsx(Select.ScrollUpArrow, {
|
|
603
|
+
"data-slot": "select-scroll-up-button",
|
|
604
|
+
className: cn("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className),
|
|
605
|
+
...props,
|
|
606
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
|
|
607
|
+
});
|
|
608
|
+
}
|
|
609
|
+
function SelectScrollDownButton({ className, ...props }) {
|
|
610
|
+
return /* @__PURE__ */ jsx(Select.ScrollDownArrow, {
|
|
611
|
+
"data-slot": "select-scroll-down-button",
|
|
612
|
+
className: cn("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className),
|
|
613
|
+
...props,
|
|
614
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
//#endregion
|
|
618
|
+
//#region src/components/ui/combobox.tsx
|
|
619
|
+
const Combobox$1 = Combobox.Root;
|
|
620
|
+
function ComboboxValue({ ...props }) {
|
|
621
|
+
return /* @__PURE__ */ jsx(Combobox.Value, {
|
|
622
|
+
"data-slot": "combobox-value",
|
|
623
|
+
...props
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
function ComboboxTrigger({ className, children, ...props }) {
|
|
627
|
+
return /* @__PURE__ */ jsxs(Combobox.Trigger, {
|
|
628
|
+
"data-slot": "combobox-trigger",
|
|
629
|
+
className: cn("[&_svg:not([class*='size-'])]:size-4", className),
|
|
630
|
+
...props,
|
|
631
|
+
children: [children, /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" })]
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
function ComboboxClear({ className, ...props }) {
|
|
635
|
+
return /* @__PURE__ */ jsx(Combobox.Clear, {
|
|
636
|
+
"data-slot": "combobox-clear",
|
|
637
|
+
render: /* @__PURE__ */ jsx(InputGroupButton, {
|
|
638
|
+
variant: "ghost",
|
|
639
|
+
size: "icon-xs"
|
|
640
|
+
}),
|
|
641
|
+
className: cn(className),
|
|
642
|
+
...props,
|
|
643
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
function ComboboxInput({ className, children, disabled = false, showTrigger = true, showClear = false, ...props }) {
|
|
647
|
+
return /* @__PURE__ */ jsxs(InputGroup, {
|
|
648
|
+
className: cn("w-auto", className),
|
|
649
|
+
children: [
|
|
650
|
+
/* @__PURE__ */ jsx(Combobox.Input, {
|
|
651
|
+
render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
|
|
652
|
+
...props
|
|
653
|
+
}),
|
|
654
|
+
/* @__PURE__ */ jsxs(InputGroupAddon, {
|
|
655
|
+
align: "inline-end",
|
|
656
|
+
children: [showTrigger && /* @__PURE__ */ jsx(InputGroupButton, {
|
|
657
|
+
size: "icon-xs",
|
|
658
|
+
variant: "ghost",
|
|
659
|
+
render: /* @__PURE__ */ jsx(ComboboxTrigger, {}),
|
|
660
|
+
"data-slot": "input-group-button",
|
|
661
|
+
className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
|
|
662
|
+
disabled
|
|
663
|
+
}), showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })]
|
|
664
|
+
}),
|
|
665
|
+
children
|
|
666
|
+
]
|
|
667
|
+
});
|
|
668
|
+
}
|
|
669
|
+
function ComboboxContent({ className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor, ...props }) {
|
|
670
|
+
return /* @__PURE__ */ jsx(Combobox.Portal, { children: /* @__PURE__ */ jsx(Combobox.Positioner, {
|
|
671
|
+
side,
|
|
672
|
+
sideOffset,
|
|
673
|
+
align,
|
|
674
|
+
alignOffset,
|
|
675
|
+
anchor,
|
|
676
|
+
className: "isolate z-50",
|
|
677
|
+
children: /* @__PURE__ */ jsx(Combobox.Popup, {
|
|
678
|
+
"data-slot": "combobox-content",
|
|
679
|
+
"data-chips": !!anchor,
|
|
680
|
+
className: cn("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none 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", className),
|
|
681
|
+
...props
|
|
682
|
+
})
|
|
683
|
+
}) });
|
|
684
|
+
}
|
|
685
|
+
function ComboboxList({ className, ...props }) {
|
|
686
|
+
return /* @__PURE__ */ jsx(Combobox.List, {
|
|
687
|
+
"data-slot": "combobox-list",
|
|
688
|
+
className: cn("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0", className),
|
|
689
|
+
...props
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
function ComboboxItem({ className, children, ...props }) {
|
|
693
|
+
return /* @__PURE__ */ jsxs(Combobox.Item, {
|
|
694
|
+
"data-slot": "combobox-item",
|
|
695
|
+
className: cn("relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**: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", className),
|
|
696
|
+
...props,
|
|
697
|
+
children: [children, /* @__PURE__ */ jsx(Combobox.ItemIndicator, {
|
|
698
|
+
render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
699
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none" })
|
|
700
|
+
})]
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
function ComboboxGroup({ className, ...props }) {
|
|
704
|
+
return /* @__PURE__ */ jsx(Combobox.Group, {
|
|
705
|
+
"data-slot": "combobox-group",
|
|
706
|
+
className: cn(className),
|
|
707
|
+
...props
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
function ComboboxLabel({ className, ...props }) {
|
|
711
|
+
return /* @__PURE__ */ jsx(Combobox.GroupLabel, {
|
|
712
|
+
"data-slot": "combobox-label",
|
|
713
|
+
className: cn("px-2 py-1.5 text-xs text-muted-foreground", className),
|
|
714
|
+
...props
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
function ComboboxCollection({ ...props }) {
|
|
718
|
+
return /* @__PURE__ */ jsx(Combobox.Collection, {
|
|
719
|
+
"data-slot": "combobox-collection",
|
|
720
|
+
...props
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
function ComboboxEmpty({ className, ...props }) {
|
|
724
|
+
return /* @__PURE__ */ jsx(Combobox.Empty, {
|
|
725
|
+
"data-slot": "combobox-empty",
|
|
726
|
+
className: cn("hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex", className),
|
|
727
|
+
...props
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
function ComboboxSeparator({ className, ...props }) {
|
|
731
|
+
return /* @__PURE__ */ jsx(Combobox.Separator, {
|
|
732
|
+
"data-slot": "combobox-separator",
|
|
733
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
734
|
+
...props
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
function ComboboxChips({ className, ...props }) {
|
|
738
|
+
return /* @__PURE__ */ jsx(Combobox.Chips, {
|
|
739
|
+
"data-slot": "combobox-chips",
|
|
740
|
+
className: cn("flex min-h-8 flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40", className),
|
|
741
|
+
...props
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
function ComboboxChip({ className, children, showRemove = true, ...props }) {
|
|
745
|
+
return /* @__PURE__ */ jsxs(Combobox.Chip, {
|
|
746
|
+
"data-slot": "combobox-chip",
|
|
747
|
+
className: cn("flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0", className),
|
|
748
|
+
...props,
|
|
749
|
+
children: [children, showRemove && /* @__PURE__ */ jsx(Combobox.ChipRemove, {
|
|
750
|
+
render: /* @__PURE__ */ jsx(Button$1, {
|
|
751
|
+
variant: "ghost",
|
|
752
|
+
size: "icon-xs"
|
|
753
|
+
}),
|
|
754
|
+
className: "-ml-1 opacity-50 hover:opacity-100",
|
|
755
|
+
"data-slot": "combobox-chip-remove",
|
|
756
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
|
|
757
|
+
})]
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
function ComboboxChipsInput({ className, ...props }) {
|
|
761
|
+
return /* @__PURE__ */ jsx(Combobox.Input, {
|
|
762
|
+
"data-slot": "combobox-chip-input",
|
|
763
|
+
className: cn("min-w-16 flex-1 outline-none", className),
|
|
764
|
+
...props
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
function useComboboxAnchor() {
|
|
768
|
+
return React.useRef(null);
|
|
769
|
+
}
|
|
770
|
+
//#endregion
|
|
771
|
+
//#region src/components/ui/tabs.tsx
|
|
772
|
+
function Tabs$1({ className, orientation = "horizontal", ...props }) {
|
|
773
|
+
return /* @__PURE__ */ jsx(Tabs.Root, {
|
|
774
|
+
"data-slot": "tabs",
|
|
775
|
+
"data-orientation": orientation,
|
|
776
|
+
className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className),
|
|
777
|
+
...props
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
const tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none", {
|
|
781
|
+
variants: { variant: {
|
|
782
|
+
default: "bg-muted",
|
|
783
|
+
line: "gap-1 bg-transparent"
|
|
784
|
+
} },
|
|
785
|
+
defaultVariants: { variant: "default" }
|
|
786
|
+
});
|
|
787
|
+
function TabsList({ className, variant = "default", ...props }) {
|
|
788
|
+
return /* @__PURE__ */ jsx(Tabs.List, {
|
|
789
|
+
"data-slot": "tabs-list",
|
|
790
|
+
"data-variant": variant,
|
|
791
|
+
className: cn(tabsListVariants({ variant }), className),
|
|
792
|
+
...props
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
function TabsTrigger({ className, ...props }) {
|
|
796
|
+
return /* @__PURE__ */ jsx(Tabs.Tab, {
|
|
797
|
+
"data-slot": "tabs-trigger",
|
|
798
|
+
className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
|
|
799
|
+
...props
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
function TabsContent({ className, ...props }) {
|
|
803
|
+
return /* @__PURE__ */ jsx(Tabs.Panel, {
|
|
804
|
+
"data-slot": "tabs-content",
|
|
805
|
+
className: cn("flex-1 text-sm outline-none", className),
|
|
806
|
+
...props
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
//#endregion
|
|
810
|
+
//#region src/components/ui/collapsible.tsx
|
|
811
|
+
function Collapsible$1({ ...props }) {
|
|
812
|
+
return /* @__PURE__ */ jsx(Collapsible.Root, {
|
|
813
|
+
"data-slot": "collapsible",
|
|
814
|
+
...props
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
function CollapsibleTrigger({ ...props }) {
|
|
818
|
+
return /* @__PURE__ */ jsx(Collapsible.Trigger, {
|
|
819
|
+
"data-slot": "collapsible-trigger",
|
|
820
|
+
...props
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
function CollapsibleContent({ ...props }) {
|
|
824
|
+
return /* @__PURE__ */ jsx(Collapsible.Panel, {
|
|
825
|
+
"data-slot": "collapsible-content",
|
|
826
|
+
...props
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
//#endregion
|
|
830
|
+
//#region src/components/ui/badge.tsx
|
|
831
|
+
const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 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!", {
|
|
832
|
+
variants: { variant: {
|
|
833
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
834
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
835
|
+
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/20",
|
|
836
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
837
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
|
|
838
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
839
|
+
} },
|
|
840
|
+
defaultVariants: { variant: "default" }
|
|
841
|
+
});
|
|
842
|
+
function Badge({ className, variant = "default", render, ...props }) {
|
|
843
|
+
return useRender({
|
|
844
|
+
defaultTagName: "span",
|
|
845
|
+
props: mergeProps({ className: cn(badgeVariants({ variant }), className) }, props),
|
|
846
|
+
render,
|
|
847
|
+
state: {
|
|
848
|
+
slot: "badge",
|
|
849
|
+
variant
|
|
850
|
+
}
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
//#endregion
|
|
854
|
+
//#region src/components/ui/alert.tsx
|
|
855
|
+
const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
|
|
856
|
+
variants: { variant: {
|
|
857
|
+
default: "bg-card text-card-foreground",
|
|
858
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
|
|
859
|
+
} },
|
|
860
|
+
defaultVariants: { variant: "default" }
|
|
861
|
+
});
|
|
862
|
+
function Alert({ className, variant, ...props }) {
|
|
863
|
+
return /* @__PURE__ */ jsx("div", {
|
|
864
|
+
"data-slot": "alert",
|
|
865
|
+
role: "alert",
|
|
866
|
+
className: cn(alertVariants({ variant }), className),
|
|
867
|
+
...props
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
function AlertTitle({ className, ...props }) {
|
|
871
|
+
return /* @__PURE__ */ jsx("div", {
|
|
872
|
+
"data-slot": "alert-title",
|
|
873
|
+
className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
|
|
874
|
+
...props
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
function AlertDescription({ className, ...props }) {
|
|
878
|
+
return /* @__PURE__ */ jsx("div", {
|
|
879
|
+
"data-slot": "alert-description",
|
|
880
|
+
className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
|
|
881
|
+
...props
|
|
882
|
+
});
|
|
883
|
+
}
|
|
884
|
+
function AlertAction({ className, ...props }) {
|
|
885
|
+
return /* @__PURE__ */ jsx("div", {
|
|
886
|
+
"data-slot": "alert-action",
|
|
887
|
+
className: cn("absolute top-2 right-2", className),
|
|
888
|
+
...props
|
|
889
|
+
});
|
|
890
|
+
}
|
|
891
|
+
//#endregion
|
|
892
|
+
//#region src/components/ui/card.tsx
|
|
893
|
+
function Card({ className, size = "default", ...props }) {
|
|
894
|
+
return /* @__PURE__ */ jsx("div", {
|
|
895
|
+
"data-slot": "card",
|
|
896
|
+
"data-size": size,
|
|
897
|
+
className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className),
|
|
898
|
+
...props
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
function CardHeader({ className, ...props }) {
|
|
902
|
+
return /* @__PURE__ */ jsx("div", {
|
|
903
|
+
"data-slot": "card-header",
|
|
904
|
+
className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)", className),
|
|
905
|
+
...props
|
|
906
|
+
});
|
|
907
|
+
}
|
|
908
|
+
function CardTitle({ className, ...props }) {
|
|
909
|
+
return /* @__PURE__ */ jsx("div", {
|
|
910
|
+
"data-slot": "card-title",
|
|
911
|
+
className: cn("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm", className),
|
|
912
|
+
...props
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
function CardDescription({ className, ...props }) {
|
|
916
|
+
return /* @__PURE__ */ jsx("div", {
|
|
917
|
+
"data-slot": "card-description",
|
|
918
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
919
|
+
...props
|
|
920
|
+
});
|
|
921
|
+
}
|
|
922
|
+
function CardAction({ className, ...props }) {
|
|
923
|
+
return /* @__PURE__ */ jsx("div", {
|
|
924
|
+
"data-slot": "card-action",
|
|
925
|
+
className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
|
|
926
|
+
...props
|
|
927
|
+
});
|
|
928
|
+
}
|
|
929
|
+
function CardContent({ className, ...props }) {
|
|
930
|
+
return /* @__PURE__ */ jsx("div", {
|
|
931
|
+
"data-slot": "card-content",
|
|
932
|
+
className: cn("px-(--card-spacing)", className),
|
|
933
|
+
...props
|
|
934
|
+
});
|
|
935
|
+
}
|
|
936
|
+
function CardFooter({ className, ...props }) {
|
|
937
|
+
return /* @__PURE__ */ jsx("div", {
|
|
938
|
+
"data-slot": "card-footer",
|
|
939
|
+
className: cn("flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)", className),
|
|
940
|
+
...props
|
|
941
|
+
});
|
|
942
|
+
}
|
|
943
|
+
//#endregion
|
|
944
|
+
export { PopoverTrigger as $, ComboboxInput as A, DialogHeader as At, SelectGroup as B, Textarea as Bt, ComboboxChip as C, AlertDialogTitle as Ct, ComboboxContent as D, DialogContent as Dt, ComboboxCollection as E, DialogClose as Et, ComboboxTrigger as F, Checkbox$1 as Ft, SelectSeparator as G, SelectLabel as H, Button$1 as Ht, ComboboxValue as I, NativeSelect as It, Popover$1 as J, SelectTrigger as K, useComboboxAnchor as L, NativeSelectOptGroup as Lt, ComboboxLabel as M, DialogPortal as Mt, ComboboxList as N, DialogTitle as Nt, ComboboxEmpty as O, DialogDescription as Ot, ComboboxSeparator as P, DialogTrigger as Pt, PopoverTitle as Q, Select$1 as R, NativeSelectOption as Rt, Combobox$1 as S, AlertDialogPortal as St, ComboboxChipsInput as T, Dialog$1 as Tt, SelectScrollDownButton as U, buttonVariants as Ut, SelectItem as V, Input$1 as Vt, SelectScrollUpButton as W, PopoverDescription as X, PopoverContent as Y, PopoverHeader as Z, Tabs$1 as _, AlertDialogDescription as _t, CardFooter as a, CommandItem as at, TabsTrigger as b, AlertDialogMedia as bt, Alert as c, CommandShortcut as ct, AlertTitle as d, TooltipProvider as dt, Command$1 as et, Badge as f, TooltipTrigger as ft, CollapsibleTrigger as g, AlertDialogContent as gt, CollapsibleContent as h, AlertDialogCancel as ht, CardDescription as i, CommandInput as it, ComboboxItem as j, DialogOverlay as jt, ComboboxGroup as k, DialogFooter as kt, AlertAction as l, Tooltip$1 as lt, Collapsible$1 as m, AlertDialogAction as mt, CardAction as n, CommandEmpty as nt, CardHeader as o, CommandList as ot, badgeVariants as p, AlertDialog$1 as pt, SelectValue as q, CardContent as r, CommandGroup as rt, CardTitle as s, CommandSeparator as st, Card as t, CommandDialog as tt, AlertDescription as u, TooltipContent as ut, TabsContent as v, AlertDialogFooter as vt, ComboboxChips as w, AlertDialogTrigger as wt, tabsListVariants as x, AlertDialogOverlay as xt, TabsList as y, AlertDialogHeader as yt, SelectContent as z, Label as zt };
|
|
945
|
+
|
|
946
|
+
//# sourceMappingURL=ui-esOhDo-4.mjs.map
|