@litelens/design-system 1.0.3
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/LICENSE +201 -0
- package/README.md +129 -0
- package/dist/atoms/index.d.ts +215 -0
- package/dist/atoms/index.js +6 -0
- package/dist/chunk-3ZL7QROP.js +23 -0
- package/dist/chunk-7M2VOCYN.js +1 -0
- package/dist/chunk-7YPL4ZPM.js +41 -0
- package/dist/chunk-CPX26L4M.js +58 -0
- package/dist/chunk-FJE2X4E6.js +967 -0
- package/dist/chunk-GPI6G5NM.js +148 -0
- package/dist/chunk-NFJMUQY6.js +41 -0
- package/dist/chunk-NPDXDIXD.js +735 -0
- package/dist/chunk-OI5436K4.js +822 -0
- package/dist/chunk-QUNCRUSO.js +12 -0
- package/dist/chunk-TLJXC46A.js +1 -0
- package/dist/components/index.d.ts +254 -0
- package/dist/components/index.js +4 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +2 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +11 -0
- package/dist/libs/index.d.ts +48 -0
- package/dist/libs/index.js +4 -0
- package/dist/style.css +65 -0
- package/dist/styles.animation.css +18 -0
- package/dist/styles.js +1 -0
- package/dist/styles.palette.css +140 -0
- package/dist/styles.typography.css +57 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/index.d.ts +22 -0
- package/dist/utils/index.js +2 -0
- package/package.json +88 -0
|
@@ -0,0 +1,735 @@
|
|
|
1
|
+
import { XIcon, ChevronRightIcon, CheckIcon } from './chunk-7YPL4ZPM.js';
|
|
2
|
+
import { cn } from './chunk-QUNCRUSO.js';
|
|
3
|
+
import { mergeProps } from '@base-ui/react/merge-props';
|
|
4
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { Button as Button$1 } from '@base-ui/react/button';
|
|
7
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
|
+
import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
|
|
9
|
+
import * as React from 'react';
|
|
10
|
+
import { Menu } from '@base-ui/react/menu';
|
|
11
|
+
import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
|
|
12
|
+
export { toast } from 'sonner';
|
|
13
|
+
import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
|
|
14
|
+
|
|
15
|
+
var badgeVariants = cva(
|
|
16
|
+
"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-interactive focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/75 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!",
|
|
17
|
+
{
|
|
18
|
+
variants: {
|
|
19
|
+
variant: {
|
|
20
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
21
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
22
|
+
destructive: "bg-destructive/15 text-destructive border-transparent focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
23
|
+
success: "bg-success/15 text-success border-transparent focus-visible:ring-success/20 dark:focus-visible:ring-success/40 [a]:hover:bg-success/20",
|
|
24
|
+
warning: "bg-warning/15 text-warning border-transparent focus-visible:ring-warning/20 dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20",
|
|
25
|
+
info: "bg-info/15 text-info border-transparent focus-visible:ring-info/20 dark:focus-visible:ring-info/40 [a]:hover:bg-info/20",
|
|
26
|
+
danger: "bg-danger/15 text-danger border-transparent focus-visible:ring-danger/20 dark:focus-visible:ring-danger/40 [a]:hover:bg-danger/20",
|
|
27
|
+
ghost: "bg-muted text-muted-foreground border-transparent [a]:hover:bg-muted/70"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: {
|
|
31
|
+
variant: "default"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
function Badge({
|
|
36
|
+
className,
|
|
37
|
+
variant = "default",
|
|
38
|
+
render,
|
|
39
|
+
...props
|
|
40
|
+
}) {
|
|
41
|
+
return useRender({
|
|
42
|
+
defaultTagName: "span",
|
|
43
|
+
props: mergeProps(
|
|
44
|
+
{
|
|
45
|
+
className: cn(badgeVariants({ variant }), className)
|
|
46
|
+
},
|
|
47
|
+
props
|
|
48
|
+
),
|
|
49
|
+
render,
|
|
50
|
+
state: {
|
|
51
|
+
slot: "badge",
|
|
52
|
+
variant
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
var buttonVariants = cva(
|
|
57
|
+
"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-interactive outline-none select-none focus-ring active:not-aria-[haspopup]:translate-y-px active:not-aria-[haspopup]:brightness-90 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",
|
|
58
|
+
{
|
|
59
|
+
variants: {
|
|
60
|
+
variant: {
|
|
61
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
62
|
+
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",
|
|
63
|
+
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",
|
|
64
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
65
|
+
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",
|
|
66
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
67
|
+
},
|
|
68
|
+
size: {
|
|
69
|
+
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
70
|
+
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",
|
|
71
|
+
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",
|
|
72
|
+
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
73
|
+
icon: "size-8",
|
|
74
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
75
|
+
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
76
|
+
"icon-lg": "size-9"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
defaultVariants: {
|
|
80
|
+
variant: "default",
|
|
81
|
+
size: "default"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
function Button({
|
|
86
|
+
className,
|
|
87
|
+
variant = "default",
|
|
88
|
+
size = "default",
|
|
89
|
+
...props
|
|
90
|
+
}) {
|
|
91
|
+
return /* @__PURE__ */ jsx(
|
|
92
|
+
Button$1,
|
|
93
|
+
{
|
|
94
|
+
"data-slot": "button",
|
|
95
|
+
className: cn("cursor-pointer", buttonVariants({ variant, size, className })),
|
|
96
|
+
...props
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
function Dialog({ ...props }) {
|
|
101
|
+
return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "dialog", ...props });
|
|
102
|
+
}
|
|
103
|
+
function DialogTrigger({ ...props }) {
|
|
104
|
+
return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
105
|
+
}
|
|
106
|
+
function DialogPortal({ ...props }) {
|
|
107
|
+
return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "dialog-portal", ...props });
|
|
108
|
+
}
|
|
109
|
+
function DialogClose({ ...props }) {
|
|
110
|
+
return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "dialog-close", ...props });
|
|
111
|
+
}
|
|
112
|
+
function DialogOverlay({ className, ...props }) {
|
|
113
|
+
return /* @__PURE__ */ jsx(
|
|
114
|
+
Dialog$1.Backdrop,
|
|
115
|
+
{
|
|
116
|
+
"data-slot": "dialog-overlay",
|
|
117
|
+
className: cn(
|
|
118
|
+
"supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 z-overlay fixed inset-0 isolate bg-black/10 duration-100",
|
|
119
|
+
className
|
|
120
|
+
),
|
|
121
|
+
...props
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
var dialogSizeClasses = {
|
|
126
|
+
sm: "sm:max-w-sm",
|
|
127
|
+
md: "sm:max-w-md",
|
|
128
|
+
lg: "sm:max-w-lg",
|
|
129
|
+
xl: "sm:max-w-xl",
|
|
130
|
+
"2xl": "sm:max-w-2xl"
|
|
131
|
+
};
|
|
132
|
+
function DialogContent({
|
|
133
|
+
className,
|
|
134
|
+
children,
|
|
135
|
+
showCloseButton = true,
|
|
136
|
+
size = "sm",
|
|
137
|
+
...props
|
|
138
|
+
}) {
|
|
139
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
140
|
+
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
141
|
+
/* @__PURE__ */ jsxs(
|
|
142
|
+
Dialog$1.Popup,
|
|
143
|
+
{
|
|
144
|
+
"data-slot": "dialog-content",
|
|
145
|
+
className: cn(
|
|
146
|
+
"bg-popover text-popover-foreground ring-foreground/10 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 shadow-depth-2 z-overlay fixed left-1/2 top-1/2 grid max-h-[90vh] w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm outline-none ring-1 duration-100",
|
|
147
|
+
dialogSizeClasses[size],
|
|
148
|
+
className
|
|
149
|
+
),
|
|
150
|
+
...props,
|
|
151
|
+
children: [
|
|
152
|
+
children,
|
|
153
|
+
showCloseButton && /* @__PURE__ */ jsxs(
|
|
154
|
+
Dialog$1.Close,
|
|
155
|
+
{
|
|
156
|
+
"data-slot": "dialog-close",
|
|
157
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "ghost", className: "absolute right-2 top-2", size: "icon-sm" }),
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
160
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
)
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
)
|
|
167
|
+
] });
|
|
168
|
+
}
|
|
169
|
+
function DialogHeader({ className, ...props }) {
|
|
170
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
|
|
171
|
+
}
|
|
172
|
+
function DialogFooter({
|
|
173
|
+
className,
|
|
174
|
+
showCloseButton = false,
|
|
175
|
+
buttonSize = "sm",
|
|
176
|
+
children,
|
|
177
|
+
...props
|
|
178
|
+
}) {
|
|
179
|
+
return /* @__PURE__ */ jsxs(
|
|
180
|
+
"div",
|
|
181
|
+
{
|
|
182
|
+
"data-slot": "dialog-footer",
|
|
183
|
+
className: cn(
|
|
184
|
+
"bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end",
|
|
185
|
+
className
|
|
186
|
+
),
|
|
187
|
+
...props,
|
|
188
|
+
children: [
|
|
189
|
+
React.Children.map(children, (child) => {
|
|
190
|
+
if (!React.isValidElement(child) || child.type !== Button) return child;
|
|
191
|
+
const button = child;
|
|
192
|
+
return React.cloneElement(button, { size: button.props.size ?? buttonSize });
|
|
193
|
+
}),
|
|
194
|
+
showCloseButton && /* @__PURE__ */ jsx(Dialog$1.Close, { render: /* @__PURE__ */ jsx(Button, { variant: "outline", size: buttonSize }), children: "Close" })
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
function DialogTitle({ className, ...props }) {
|
|
200
|
+
return /* @__PURE__ */ jsx(
|
|
201
|
+
Dialog$1.Title,
|
|
202
|
+
{
|
|
203
|
+
"data-slot": "dialog-title",
|
|
204
|
+
className: cn("font-heading text-h2 leading-none", className),
|
|
205
|
+
...props
|
|
206
|
+
}
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
function DialogDescription({ className, ...props }) {
|
|
210
|
+
return /* @__PURE__ */ jsx(
|
|
211
|
+
Dialog$1.Description,
|
|
212
|
+
{
|
|
213
|
+
"data-slot": "dialog-description",
|
|
214
|
+
className: cn(
|
|
215
|
+
"text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground text-sm",
|
|
216
|
+
className
|
|
217
|
+
),
|
|
218
|
+
...props
|
|
219
|
+
}
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
function DropdownMenu({ ...props }) {
|
|
223
|
+
return /* @__PURE__ */ jsx(Menu.Root, { "data-slot": "dropdown-menu", ...props });
|
|
224
|
+
}
|
|
225
|
+
function DropdownMenuPortal({ ...props }) {
|
|
226
|
+
return /* @__PURE__ */ jsx(Menu.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
227
|
+
}
|
|
228
|
+
function DropdownMenuTrigger({ ...props }) {
|
|
229
|
+
return /* @__PURE__ */ jsx(Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
230
|
+
}
|
|
231
|
+
function DropdownMenuContent({
|
|
232
|
+
align = "start",
|
|
233
|
+
alignOffset = 0,
|
|
234
|
+
side = "bottom",
|
|
235
|
+
sideOffset = 4,
|
|
236
|
+
className,
|
|
237
|
+
positionerClassName,
|
|
238
|
+
...props
|
|
239
|
+
}) {
|
|
240
|
+
return /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(
|
|
241
|
+
Menu.Positioner,
|
|
242
|
+
{
|
|
243
|
+
className: cn("z-overlay isolate outline-none", positionerClassName),
|
|
244
|
+
align,
|
|
245
|
+
alignOffset,
|
|
246
|
+
side,
|
|
247
|
+
sideOffset,
|
|
248
|
+
children: /* @__PURE__ */ jsx(
|
|
249
|
+
Menu.Popup,
|
|
250
|
+
{
|
|
251
|
+
"data-slot": "dropdown-menu-content",
|
|
252
|
+
className: cn(
|
|
253
|
+
"max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 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:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95 z-overlay min-w-32 overflow-y-auto overflow-x-hidden rounded-lg p-1 shadow-md outline-none ring-1 duration-100",
|
|
254
|
+
className
|
|
255
|
+
),
|
|
256
|
+
...props
|
|
257
|
+
}
|
|
258
|
+
)
|
|
259
|
+
}
|
|
260
|
+
) });
|
|
261
|
+
}
|
|
262
|
+
function DropdownMenuGroup({ ...props }) {
|
|
263
|
+
return /* @__PURE__ */ jsx(Menu.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
264
|
+
}
|
|
265
|
+
function DropdownMenuLabel({
|
|
266
|
+
className,
|
|
267
|
+
inset,
|
|
268
|
+
...props
|
|
269
|
+
}) {
|
|
270
|
+
return /* @__PURE__ */ jsx(
|
|
271
|
+
Menu.GroupLabel,
|
|
272
|
+
{
|
|
273
|
+
"data-slot": "dropdown-menu-label",
|
|
274
|
+
"data-inset": inset,
|
|
275
|
+
className: cn(
|
|
276
|
+
"text-muted-foreground data-inset:pl-7 px-1.5 py-1 text-xs font-medium",
|
|
277
|
+
className
|
|
278
|
+
),
|
|
279
|
+
...props
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
function DropdownMenuItem({
|
|
284
|
+
className,
|
|
285
|
+
inset,
|
|
286
|
+
variant = "default",
|
|
287
|
+
onClick,
|
|
288
|
+
...props
|
|
289
|
+
}) {
|
|
290
|
+
return /* @__PURE__ */ jsx(
|
|
291
|
+
Menu.Item,
|
|
292
|
+
{
|
|
293
|
+
"data-slot": "dropdown-menu-item",
|
|
294
|
+
"data-inset": inset,
|
|
295
|
+
"data-variant": variant,
|
|
296
|
+
className: cn(
|
|
297
|
+
"group/dropdown-menu-item outline-hidden 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 data-[variant=destructive]:*:[svg]:text-destructive relative flex cursor-default select-none items-center gap-1.5 rounded-md px-1.5 py-1 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
298
|
+
onClick ? `cursor-pointer` : void 0,
|
|
299
|
+
className
|
|
300
|
+
),
|
|
301
|
+
onClick,
|
|
302
|
+
...props
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
function DropdownMenuSub({ ...props }) {
|
|
307
|
+
return /* @__PURE__ */ jsx(Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
|
|
308
|
+
}
|
|
309
|
+
function DropdownMenuSubTrigger({
|
|
310
|
+
className,
|
|
311
|
+
inset,
|
|
312
|
+
children,
|
|
313
|
+
...props
|
|
314
|
+
}) {
|
|
315
|
+
return /* @__PURE__ */ jsxs(
|
|
316
|
+
Menu.SubmenuTrigger,
|
|
317
|
+
{
|
|
318
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
319
|
+
"data-inset": inset,
|
|
320
|
+
className: cn(
|
|
321
|
+
"outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground flex cursor-default select-none items-center gap-1.5 rounded-md px-1.5 py-1 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
322
|
+
className
|
|
323
|
+
),
|
|
324
|
+
...props,
|
|
325
|
+
children: [
|
|
326
|
+
children,
|
|
327
|
+
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })
|
|
328
|
+
]
|
|
329
|
+
}
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
function DropdownMenuSubContent({
|
|
333
|
+
align = "start",
|
|
334
|
+
alignOffset = -3,
|
|
335
|
+
side = "right",
|
|
336
|
+
sideOffset = 0,
|
|
337
|
+
className,
|
|
338
|
+
...props
|
|
339
|
+
}) {
|
|
340
|
+
return /* @__PURE__ */ jsx(
|
|
341
|
+
DropdownMenuContent,
|
|
342
|
+
{
|
|
343
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
344
|
+
className: cn(
|
|
345
|
+
"bg-popover text-popover-foreground ring-foreground/10 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 w-auto min-w-[96px] rounded-lg p-1 shadow-lg ring-1 duration-100",
|
|
346
|
+
className
|
|
347
|
+
),
|
|
348
|
+
align,
|
|
349
|
+
alignOffset,
|
|
350
|
+
side,
|
|
351
|
+
sideOffset,
|
|
352
|
+
...props
|
|
353
|
+
}
|
|
354
|
+
);
|
|
355
|
+
}
|
|
356
|
+
function DropdownMenuCheckboxItem({
|
|
357
|
+
className,
|
|
358
|
+
children,
|
|
359
|
+
checked,
|
|
360
|
+
inset,
|
|
361
|
+
...props
|
|
362
|
+
}) {
|
|
363
|
+
return /* @__PURE__ */ jsxs(
|
|
364
|
+
Menu.CheckboxItem,
|
|
365
|
+
{
|
|
366
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
367
|
+
"data-inset": inset,
|
|
368
|
+
className: cn(
|
|
369
|
+
"outline-hidden focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
370
|
+
props.onCheckedChange && "cursor-pointer",
|
|
371
|
+
className
|
|
372
|
+
),
|
|
373
|
+
checked,
|
|
374
|
+
...props,
|
|
375
|
+
children: [
|
|
376
|
+
/* @__PURE__ */ jsx(
|
|
377
|
+
"span",
|
|
378
|
+
{
|
|
379
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
380
|
+
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
381
|
+
children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
382
|
+
}
|
|
383
|
+
),
|
|
384
|
+
children
|
|
385
|
+
]
|
|
386
|
+
}
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
function DropdownMenuRadioGroup({ ...props }) {
|
|
390
|
+
return /* @__PURE__ */ jsx(Menu.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
|
|
391
|
+
}
|
|
392
|
+
function DropdownMenuRadioItem({
|
|
393
|
+
className,
|
|
394
|
+
children,
|
|
395
|
+
inset,
|
|
396
|
+
...props
|
|
397
|
+
}) {
|
|
398
|
+
return /* @__PURE__ */ jsxs(
|
|
399
|
+
Menu.RadioItem,
|
|
400
|
+
{
|
|
401
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
402
|
+
"data-inset": inset,
|
|
403
|
+
className: cn(
|
|
404
|
+
"outline-hidden focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 relative flex cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
405
|
+
className
|
|
406
|
+
),
|
|
407
|
+
...props,
|
|
408
|
+
children: [
|
|
409
|
+
/* @__PURE__ */ jsx(
|
|
410
|
+
"span",
|
|
411
|
+
{
|
|
412
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
413
|
+
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
414
|
+
children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
415
|
+
}
|
|
416
|
+
),
|
|
417
|
+
children
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
);
|
|
421
|
+
}
|
|
422
|
+
function DropdownMenuSeparator({ className, ...props }) {
|
|
423
|
+
return /* @__PURE__ */ jsx(
|
|
424
|
+
Menu.Separator,
|
|
425
|
+
{
|
|
426
|
+
"data-slot": "dropdown-menu-separator",
|
|
427
|
+
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
428
|
+
...props
|
|
429
|
+
}
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
function DropdownMenuShortcut({ className, ...props }) {
|
|
433
|
+
return /* @__PURE__ */ jsx(
|
|
434
|
+
"span",
|
|
435
|
+
{
|
|
436
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
437
|
+
className: cn(
|
|
438
|
+
"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest",
|
|
439
|
+
className
|
|
440
|
+
),
|
|
441
|
+
...props
|
|
442
|
+
}
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
function ScrollArea({ className, children, ...props }) {
|
|
446
|
+
return /* @__PURE__ */ jsxs(
|
|
447
|
+
ScrollArea$1.Root,
|
|
448
|
+
{
|
|
449
|
+
"data-slot": "scroll-area",
|
|
450
|
+
className: cn("relative", className),
|
|
451
|
+
...props,
|
|
452
|
+
children: [
|
|
453
|
+
/* @__PURE__ */ jsx(
|
|
454
|
+
ScrollArea$1.Viewport,
|
|
455
|
+
{
|
|
456
|
+
"data-slot": "scroll-area-viewport",
|
|
457
|
+
className: "focus-visible:ring-ring/75 transition-focus size-full rounded-[inherit] outline-none focus-visible:outline-1 focus-visible:ring-[3px]",
|
|
458
|
+
children
|
|
459
|
+
}
|
|
460
|
+
),
|
|
461
|
+
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
462
|
+
/* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
|
|
463
|
+
]
|
|
464
|
+
}
|
|
465
|
+
);
|
|
466
|
+
}
|
|
467
|
+
function ScrollBar({
|
|
468
|
+
className,
|
|
469
|
+
orientation = "vertical",
|
|
470
|
+
...props
|
|
471
|
+
}) {
|
|
472
|
+
return /* @__PURE__ */ jsx(
|
|
473
|
+
ScrollArea$1.Scrollbar,
|
|
474
|
+
{
|
|
475
|
+
"data-slot": "scroll-area-scrollbar",
|
|
476
|
+
"data-orientation": orientation,
|
|
477
|
+
orientation,
|
|
478
|
+
className: cn(
|
|
479
|
+
"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 transition-theme flex touch-none select-none p-px",
|
|
480
|
+
className
|
|
481
|
+
),
|
|
482
|
+
...props,
|
|
483
|
+
children: /* @__PURE__ */ jsx(
|
|
484
|
+
ScrollArea$1.Thumb,
|
|
485
|
+
{
|
|
486
|
+
"data-slot": "scroll-area-thumb",
|
|
487
|
+
className: "bg-border relative flex-1 rounded-full"
|
|
488
|
+
}
|
|
489
|
+
)
|
|
490
|
+
}
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
function Sheet({ ...props }) {
|
|
494
|
+
return /* @__PURE__ */ jsx(Dialog$1.Root, { "data-slot": "sheet", ...props });
|
|
495
|
+
}
|
|
496
|
+
function SheetTrigger({ ...props }) {
|
|
497
|
+
return /* @__PURE__ */ jsx(Dialog$1.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
498
|
+
}
|
|
499
|
+
function SheetClose({ ...props }) {
|
|
500
|
+
return /* @__PURE__ */ jsx(Dialog$1.Close, { "data-slot": "sheet-close", ...props });
|
|
501
|
+
}
|
|
502
|
+
function SheetPortal({ ...props }) {
|
|
503
|
+
return /* @__PURE__ */ jsx(Dialog$1.Portal, { "data-slot": "sheet-portal", ...props });
|
|
504
|
+
}
|
|
505
|
+
function SheetOverlay({ className, ...props }) {
|
|
506
|
+
return /* @__PURE__ */ jsx(
|
|
507
|
+
Dialog$1.Backdrop,
|
|
508
|
+
{
|
|
509
|
+
"data-slot": "sheet-overlay",
|
|
510
|
+
className: cn(
|
|
511
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs z-overlay transition-fade fixed inset-0 bg-black/10",
|
|
512
|
+
className
|
|
513
|
+
),
|
|
514
|
+
...props
|
|
515
|
+
}
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
function SheetContent({
|
|
519
|
+
className,
|
|
520
|
+
children,
|
|
521
|
+
side = "right",
|
|
522
|
+
showCloseButton = false,
|
|
523
|
+
...props
|
|
524
|
+
}) {
|
|
525
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
526
|
+
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
527
|
+
/* @__PURE__ */ jsxs(
|
|
528
|
+
Dialog$1.Popup,
|
|
529
|
+
{
|
|
530
|
+
"data-slot": "sheet-content",
|
|
531
|
+
"data-side": side,
|
|
532
|
+
className: cn(
|
|
533
|
+
"bg-popover text-popover-foreground data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] shadow-depth-1 z-overlay fixed flex flex-col gap-4 bg-clip-padding text-sm transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=left]:inset-y-0 data-[side=right]:inset-y-0 data-[side=top]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=left]:left-0 data-[side=right]:right-0 data-[side=top]:top-0 data-[side=bottom]:h-auto data-[side=left]:h-full data-[side=right]:h-full data-[side=top]:h-auto data-[side=left]:w-3/4 data-[side=bottom]:border-t data-[side=left]:border-r data-[side=right]:border-l data-[side=top]:border-b data-[side=left]:sm:max-w-sm",
|
|
534
|
+
className
|
|
535
|
+
),
|
|
536
|
+
...props,
|
|
537
|
+
children: [
|
|
538
|
+
children,
|
|
539
|
+
showCloseButton && /* @__PURE__ */ jsxs(
|
|
540
|
+
Dialog$1.Close,
|
|
541
|
+
{
|
|
542
|
+
"data-slot": "sheet-close",
|
|
543
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "ghost", className: "absolute right-3 top-3", size: "icon-sm" }),
|
|
544
|
+
children: [
|
|
545
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
546
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
547
|
+
]
|
|
548
|
+
}
|
|
549
|
+
)
|
|
550
|
+
]
|
|
551
|
+
}
|
|
552
|
+
)
|
|
553
|
+
] });
|
|
554
|
+
}
|
|
555
|
+
function SheetHeader({ className, ...props }) {
|
|
556
|
+
return /* @__PURE__ */ jsx(
|
|
557
|
+
"div",
|
|
558
|
+
{
|
|
559
|
+
"data-slot": "sheet-header",
|
|
560
|
+
className: cn("flex flex-col gap-0.5 p-4", className),
|
|
561
|
+
...props
|
|
562
|
+
}
|
|
563
|
+
);
|
|
564
|
+
}
|
|
565
|
+
function SheetFooter({ className, ...props }) {
|
|
566
|
+
return /* @__PURE__ */ jsx(
|
|
567
|
+
"div",
|
|
568
|
+
{
|
|
569
|
+
"data-slot": "sheet-footer",
|
|
570
|
+
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
571
|
+
...props
|
|
572
|
+
}
|
|
573
|
+
);
|
|
574
|
+
}
|
|
575
|
+
function SheetTitle({ className, ...props }) {
|
|
576
|
+
return /* @__PURE__ */ jsx(
|
|
577
|
+
Dialog$1.Title,
|
|
578
|
+
{
|
|
579
|
+
"data-slot": "sheet-title",
|
|
580
|
+
className: cn("font-heading text-foreground text-base font-medium", className),
|
|
581
|
+
...props
|
|
582
|
+
}
|
|
583
|
+
);
|
|
584
|
+
}
|
|
585
|
+
function SheetDescription({ className, ...props }) {
|
|
586
|
+
return /* @__PURE__ */ jsx(
|
|
587
|
+
Dialog$1.Description,
|
|
588
|
+
{
|
|
589
|
+
"data-slot": "sheet-description",
|
|
590
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
591
|
+
...props
|
|
592
|
+
}
|
|
593
|
+
);
|
|
594
|
+
}
|
|
595
|
+
function Table({
|
|
596
|
+
className,
|
|
597
|
+
containerClassName,
|
|
598
|
+
...props
|
|
599
|
+
}) {
|
|
600
|
+
return /* @__PURE__ */ jsx(
|
|
601
|
+
"div",
|
|
602
|
+
{
|
|
603
|
+
"data-slot": "table-container",
|
|
604
|
+
className: cn("relative w-full overflow-x-auto", containerClassName),
|
|
605
|
+
children: /* @__PURE__ */ jsx(
|
|
606
|
+
"table",
|
|
607
|
+
{
|
|
608
|
+
"data-slot": "table",
|
|
609
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
610
|
+
...props
|
|
611
|
+
}
|
|
612
|
+
)
|
|
613
|
+
}
|
|
614
|
+
);
|
|
615
|
+
}
|
|
616
|
+
function TableHeader({ className, ...props }) {
|
|
617
|
+
return /* @__PURE__ */ jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
|
|
618
|
+
}
|
|
619
|
+
function TableBody({ className, ...props }) {
|
|
620
|
+
return /* @__PURE__ */ jsx(
|
|
621
|
+
"tbody",
|
|
622
|
+
{
|
|
623
|
+
"data-slot": "table-body",
|
|
624
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
625
|
+
...props
|
|
626
|
+
}
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
function TableFooter({ className, ...props }) {
|
|
630
|
+
return /* @__PURE__ */ jsx(
|
|
631
|
+
"tfoot",
|
|
632
|
+
{
|
|
633
|
+
"data-slot": "table-footer",
|
|
634
|
+
className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
|
|
635
|
+
...props
|
|
636
|
+
}
|
|
637
|
+
);
|
|
638
|
+
}
|
|
639
|
+
function TableRow({ className, ...props }) {
|
|
640
|
+
return /* @__PURE__ */ jsx(
|
|
641
|
+
"tr",
|
|
642
|
+
{
|
|
643
|
+
"data-slot": "table-row",
|
|
644
|
+
className: cn(
|
|
645
|
+
"hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted transition-theme border-b",
|
|
646
|
+
!!props.onClick && "cursor-pointer",
|
|
647
|
+
className
|
|
648
|
+
),
|
|
649
|
+
...props
|
|
650
|
+
}
|
|
651
|
+
);
|
|
652
|
+
}
|
|
653
|
+
function TableHead({ className, ...props }) {
|
|
654
|
+
return /* @__PURE__ */ jsx(
|
|
655
|
+
"th",
|
|
656
|
+
{
|
|
657
|
+
"data-slot": "table-head",
|
|
658
|
+
className: cn(
|
|
659
|
+
"text-foreground h-10 whitespace-nowrap px-2 text-left align-middle font-medium has-[[role=checkbox]]:pr-0",
|
|
660
|
+
className
|
|
661
|
+
),
|
|
662
|
+
...props
|
|
663
|
+
}
|
|
664
|
+
);
|
|
665
|
+
}
|
|
666
|
+
function TableCell({ className, ...props }) {
|
|
667
|
+
return /* @__PURE__ */ jsx(
|
|
668
|
+
"td",
|
|
669
|
+
{
|
|
670
|
+
"data-slot": "table-cell",
|
|
671
|
+
className: cn(
|
|
672
|
+
"whitespace-nowrap p-2 text-left align-middle tabular-nums has-[[role=checkbox]]:pr-0",
|
|
673
|
+
className
|
|
674
|
+
),
|
|
675
|
+
...props
|
|
676
|
+
}
|
|
677
|
+
);
|
|
678
|
+
}
|
|
679
|
+
function TableCaption({ className, ...props }) {
|
|
680
|
+
return /* @__PURE__ */ jsx(
|
|
681
|
+
"caption",
|
|
682
|
+
{
|
|
683
|
+
"data-slot": "table-caption",
|
|
684
|
+
className: cn("text-muted-foreground mt-4 text-sm", className),
|
|
685
|
+
...props
|
|
686
|
+
}
|
|
687
|
+
);
|
|
688
|
+
}
|
|
689
|
+
function TooltipProvider({ delay = 0, ...props }) {
|
|
690
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, { "data-slot": "tooltip-provider", delay, ...props });
|
|
691
|
+
}
|
|
692
|
+
function Tooltip({ ...props }) {
|
|
693
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Root, { "data-slot": "tooltip", ...props });
|
|
694
|
+
}
|
|
695
|
+
function TooltipTrigger({ ...props }) {
|
|
696
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
697
|
+
}
|
|
698
|
+
function TooltipContent({
|
|
699
|
+
className,
|
|
700
|
+
positionerClassName,
|
|
701
|
+
side = "top",
|
|
702
|
+
sideOffset = 4,
|
|
703
|
+
align = "center",
|
|
704
|
+
alignOffset = 0,
|
|
705
|
+
children,
|
|
706
|
+
...props
|
|
707
|
+
}) {
|
|
708
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
709
|
+
Tooltip$1.Positioner,
|
|
710
|
+
{
|
|
711
|
+
align,
|
|
712
|
+
alignOffset,
|
|
713
|
+
side,
|
|
714
|
+
sideOffset,
|
|
715
|
+
className: cn("z-overlay isolate", positionerClassName),
|
|
716
|
+
children: /* @__PURE__ */ jsxs(
|
|
717
|
+
Tooltip$1.Popup,
|
|
718
|
+
{
|
|
719
|
+
"data-slot": "tooltip-content",
|
|
720
|
+
className: cn(
|
|
721
|
+
"origin-(--transform-origin) bg-foreground 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-overlay **: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 z-overlay inline-flex w-fit max-w-xs items-center gap-1.5 rounded-md px-3 py-1.5 text-xs",
|
|
722
|
+
className
|
|
723
|
+
),
|
|
724
|
+
...props,
|
|
725
|
+
children: [
|
|
726
|
+
children,
|
|
727
|
+
/* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: "bg-foreground fill-foreground data-[side=inline-end]:top-1/2! data-[side=inline-start]:top-1/2! data-[side=left]:top-1/2! data-[side=right]:top-1/2! z-overlay size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] data-[side=bottom]:top-1 data-[side=inline-end]:-left-1 data-[side=inline-start]:-right-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-2.5 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:-translate-y-1/2 data-[side=right]:-translate-y-1/2" })
|
|
728
|
+
]
|
|
729
|
+
}
|
|
730
|
+
)
|
|
731
|
+
}
|
|
732
|
+
) });
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
export { Badge, Button, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ScrollArea, ScrollBar, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, buttonVariants };
|