@downcity/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/index.cjs +586 -0
- package/dist/index.d.cts +104 -0
- package/dist/index.d.ts +104 -0
- package/dist/index.js +529 -0
- package/package.json +69 -0
- package/src/styles.css +137 -0
package/README.md
ADDED
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
Badge: () => Badge,
|
|
24
|
+
Button: () => Button,
|
|
25
|
+
Card: () => Card,
|
|
26
|
+
CardAction: () => CardAction,
|
|
27
|
+
CardContent: () => CardContent,
|
|
28
|
+
CardDescription: () => CardDescription,
|
|
29
|
+
CardFooter: () => CardFooter,
|
|
30
|
+
CardHeader: () => CardHeader,
|
|
31
|
+
CardTitle: () => CardTitle,
|
|
32
|
+
DropdownMenu: () => DropdownMenu,
|
|
33
|
+
DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
|
|
34
|
+
DropdownMenuContent: () => DropdownMenuContent,
|
|
35
|
+
DropdownMenuGroup: () => DropdownMenuGroup,
|
|
36
|
+
DropdownMenuItem: () => DropdownMenuItem,
|
|
37
|
+
DropdownMenuLabel: () => DropdownMenuLabel,
|
|
38
|
+
DropdownMenuPortal: () => DropdownMenuPortal,
|
|
39
|
+
DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
|
|
40
|
+
DropdownMenuRadioItem: () => DropdownMenuRadioItem,
|
|
41
|
+
DropdownMenuSeparator: () => DropdownMenuSeparator,
|
|
42
|
+
DropdownMenuShortcut: () => DropdownMenuShortcut,
|
|
43
|
+
DropdownMenuSub: () => DropdownMenuSub,
|
|
44
|
+
DropdownMenuSubContent: () => DropdownMenuSubContent,
|
|
45
|
+
DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
|
|
46
|
+
DropdownMenuTrigger: () => DropdownMenuTrigger,
|
|
47
|
+
Popover: () => Popover,
|
|
48
|
+
PopoverContent: () => PopoverContent,
|
|
49
|
+
PopoverTrigger: () => PopoverTrigger,
|
|
50
|
+
Toaster: () => Toaster,
|
|
51
|
+
badgeVariants: () => badgeVariants,
|
|
52
|
+
buttonVariants: () => buttonVariants,
|
|
53
|
+
cn: () => cn
|
|
54
|
+
});
|
|
55
|
+
module.exports = __toCommonJS(index_exports);
|
|
56
|
+
|
|
57
|
+
// src/lib/utils.ts
|
|
58
|
+
var import_clsx = require("clsx");
|
|
59
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
60
|
+
function cn(...inputs) {
|
|
61
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/components/button.tsx
|
|
65
|
+
var import_button = require("@base-ui/react/button");
|
|
66
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
67
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
68
|
+
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
69
|
+
"group/button inline-flex shrink-0 items-center justify-center rounded-[12px] border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/35 active: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",
|
|
70
|
+
{
|
|
71
|
+
variants: {
|
|
72
|
+
variant: {
|
|
73
|
+
default: "bg-transparent text-foreground hover:bg-foreground/8 hover:text-foreground aria-expanded:bg-foreground/8 aria-expanded:text-foreground",
|
|
74
|
+
outline: "border-transparent bg-transparent text-foreground hover:bg-foreground/8 hover:text-foreground aria-expanded:bg-foreground/8 aria-expanded:text-foreground",
|
|
75
|
+
secondary: "border-transparent bg-transparent text-foreground hover:bg-foreground/8 hover:text-foreground aria-expanded:bg-foreground/8 aria-expanded:text-foreground",
|
|
76
|
+
ghost: "bg-transparent hover:bg-foreground/8 hover:text-foreground aria-expanded:bg-foreground/8 aria-expanded:text-foreground",
|
|
77
|
+
destructive: "bg-transparent text-destructive hover:bg-foreground/8 hover:text-destructive focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
78
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
79
|
+
},
|
|
80
|
+
size: {
|
|
81
|
+
default: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5",
|
|
82
|
+
xs: "h-6 gap-1 rounded-[10px] px-2 text-xs in-data-[slot=button-group]:rounded-[10px] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
83
|
+
sm: "h-8 gap-1 rounded-[11px] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-[11px] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
84
|
+
lg: "h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3.5 has-data-[icon=inline-start]:pl-3.5",
|
|
85
|
+
icon: "size-9 rounded-[11px]",
|
|
86
|
+
"icon-xs": "size-6 rounded-[10px] in-data-[slot=button-group]:rounded-[10px] [&_svg:not([class*='size-'])]:size-3",
|
|
87
|
+
"icon-sm": "size-8 rounded-[11px] in-data-[slot=button-group]:rounded-[11px]",
|
|
88
|
+
"icon-lg": "size-10 rounded-[12px]"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
defaultVariants: {
|
|
92
|
+
variant: "default",
|
|
93
|
+
size: "default"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
function Button({
|
|
98
|
+
className,
|
|
99
|
+
variant = "default",
|
|
100
|
+
size = "default",
|
|
101
|
+
...props
|
|
102
|
+
}) {
|
|
103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
104
|
+
import_button.Button,
|
|
105
|
+
{
|
|
106
|
+
"data-slot": "button",
|
|
107
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
108
|
+
...props
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// src/components/badge.tsx
|
|
114
|
+
var import_merge_props = require("@base-ui/react/merge-props");
|
|
115
|
+
var import_use_render = require("@base-ui/react/use-render");
|
|
116
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
117
|
+
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
118
|
+
"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 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!",
|
|
119
|
+
{
|
|
120
|
+
variants: {
|
|
121
|
+
variant: {
|
|
122
|
+
default: "border-neutral-900 bg-neutral-900 text-neutral-50 [a]:hover:bg-neutral-800",
|
|
123
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-accent",
|
|
124
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 [a]:hover:bg-destructive/20",
|
|
125
|
+
outline: "bg-card text-foreground [a]:hover:bg-secondary [a]:hover:text-foreground",
|
|
126
|
+
ghost: "hover:bg-card hover:text-foreground dark:hover:bg-muted/50",
|
|
127
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
defaultVariants: {
|
|
131
|
+
variant: "default"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
function Badge({
|
|
136
|
+
className,
|
|
137
|
+
variant = "default",
|
|
138
|
+
render,
|
|
139
|
+
...props
|
|
140
|
+
}) {
|
|
141
|
+
return (0, import_use_render.useRender)({
|
|
142
|
+
defaultTagName: "span",
|
|
143
|
+
props: (0, import_merge_props.mergeProps)(
|
|
144
|
+
{
|
|
145
|
+
className: cn(badgeVariants({ variant }), className)
|
|
146
|
+
},
|
|
147
|
+
props
|
|
148
|
+
),
|
|
149
|
+
render,
|
|
150
|
+
state: {
|
|
151
|
+
slot: "badge",
|
|
152
|
+
variant
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// src/components/card.tsx
|
|
158
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
159
|
+
function Card({
|
|
160
|
+
className,
|
|
161
|
+
size = "default",
|
|
162
|
+
...props
|
|
163
|
+
}) {
|
|
164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
165
|
+
"div",
|
|
166
|
+
{
|
|
167
|
+
"data-slot": "card",
|
|
168
|
+
"data-size": size,
|
|
169
|
+
className: cn(
|
|
170
|
+
"group/card flex flex-col gap-3 overflow-hidden rounded-[22px] bg-card text-sm text-card-foreground shadow-[0_1px_0_rgba(17,17,19,0.02),0_12px_28px_rgba(17,17,19,0.03)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-2 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none",
|
|
171
|
+
className
|
|
172
|
+
),
|
|
173
|
+
...props
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
function CardHeader({ className, ...props }) {
|
|
178
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
179
|
+
"div",
|
|
180
|
+
{
|
|
181
|
+
"data-slot": "card-header",
|
|
182
|
+
className: cn(
|
|
183
|
+
"group/card-header @container/card-header grid auto-rows-min items-start gap-1 px-5 pt-5 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:pt-4 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-3 group-data-[size=sm]/card:[.border-b]:pb-2",
|
|
184
|
+
className
|
|
185
|
+
),
|
|
186
|
+
...props
|
|
187
|
+
}
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
function CardTitle({ className, ...props }) {
|
|
191
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
192
|
+
"div",
|
|
193
|
+
{
|
|
194
|
+
"data-slot": "card-title",
|
|
195
|
+
className: cn(
|
|
196
|
+
"text-[1rem] leading-snug font-semibold tracking-[-0.02em] text-foreground group-data-[size=sm]/card:text-sm",
|
|
197
|
+
className
|
|
198
|
+
),
|
|
199
|
+
...props
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
function CardDescription({ className, ...props }) {
|
|
204
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
205
|
+
"div",
|
|
206
|
+
{
|
|
207
|
+
"data-slot": "card-description",
|
|
208
|
+
className: cn("text-sm leading-6 text-muted-foreground", className),
|
|
209
|
+
...props
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
function CardAction({ className, ...props }) {
|
|
214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
215
|
+
"div",
|
|
216
|
+
{
|
|
217
|
+
"data-slot": "card-action",
|
|
218
|
+
className: cn(
|
|
219
|
+
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
220
|
+
className
|
|
221
|
+
),
|
|
222
|
+
...props
|
|
223
|
+
}
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
function CardContent({ className, ...props }) {
|
|
227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
228
|
+
"div",
|
|
229
|
+
{
|
|
230
|
+
"data-slot": "card-content",
|
|
231
|
+
className: cn(
|
|
232
|
+
"px-5 pb-5 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:pb-4",
|
|
233
|
+
className
|
|
234
|
+
),
|
|
235
|
+
...props
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
function CardFooter({ className, ...props }) {
|
|
240
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
241
|
+
"div",
|
|
242
|
+
{
|
|
243
|
+
"data-slot": "card-footer",
|
|
244
|
+
className: cn(
|
|
245
|
+
"flex items-center bg-secondary px-5 py-3 group-data-[size=sm]/card:px-4 group-data-[size=sm]/card:py-2.5",
|
|
246
|
+
className
|
|
247
|
+
),
|
|
248
|
+
...props
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// src/components/dropdown-menu.tsx
|
|
254
|
+
var import_menu = require("@base-ui/react/menu");
|
|
255
|
+
var import_lucide_react = require("lucide-react");
|
|
256
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
257
|
+
function DropdownMenu({ ...props }) {
|
|
258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.Root, { "data-slot": "dropdown-menu", ...props });
|
|
259
|
+
}
|
|
260
|
+
function DropdownMenuPortal({ ...props }) {
|
|
261
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
262
|
+
}
|
|
263
|
+
function DropdownMenuTrigger({ ...props }) {
|
|
264
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
265
|
+
}
|
|
266
|
+
function DropdownMenuContent({
|
|
267
|
+
align = "start",
|
|
268
|
+
alignOffset = 0,
|
|
269
|
+
side = "bottom",
|
|
270
|
+
sideOffset = 4,
|
|
271
|
+
className,
|
|
272
|
+
...props
|
|
273
|
+
}) {
|
|
274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
275
|
+
import_menu.Menu.Positioner,
|
|
276
|
+
{
|
|
277
|
+
className: "isolate z-50 outline-none",
|
|
278
|
+
align,
|
|
279
|
+
alignOffset,
|
|
280
|
+
side,
|
|
281
|
+
sideOffset,
|
|
282
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
283
|
+
import_menu.Menu.Popup,
|
|
284
|
+
{
|
|
285
|
+
"data-slot": "dropdown-menu-content",
|
|
286
|
+
className: cn(
|
|
287
|
+
"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[18px] border border-border/70 bg-popover/98 p-1.5 text-popover-foreground shadow-[0_10px_24px_rgba(24,24,27,0.045)] duration-100 outline-none backdrop-blur-xl 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",
|
|
288
|
+
className
|
|
289
|
+
),
|
|
290
|
+
...props
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
) });
|
|
295
|
+
}
|
|
296
|
+
function DropdownMenuGroup({ ...props }) {
|
|
297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
298
|
+
}
|
|
299
|
+
function DropdownMenuLabel({
|
|
300
|
+
className,
|
|
301
|
+
inset,
|
|
302
|
+
...props
|
|
303
|
+
}) {
|
|
304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
305
|
+
import_menu.Menu.GroupLabel,
|
|
306
|
+
{
|
|
307
|
+
"data-slot": "dropdown-menu-label",
|
|
308
|
+
"data-inset": inset,
|
|
309
|
+
className: cn(
|
|
310
|
+
"px-2.5 py-1.5 text-[0.62rem] font-medium uppercase tracking-[0.16em] text-muted-foreground data-inset:pl-7",
|
|
311
|
+
className
|
|
312
|
+
),
|
|
313
|
+
...props
|
|
314
|
+
}
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
function DropdownMenuItem({
|
|
318
|
+
className,
|
|
319
|
+
inset,
|
|
320
|
+
variant = "default",
|
|
321
|
+
...props
|
|
322
|
+
}) {
|
|
323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
324
|
+
import_menu.Menu.Item,
|
|
325
|
+
{
|
|
326
|
+
"data-slot": "dropdown-menu-item",
|
|
327
|
+
"data-inset": inset,
|
|
328
|
+
"data-variant": variant,
|
|
329
|
+
className: cn(
|
|
330
|
+
"group/dropdown-menu-item relative flex min-h-10 cursor-default items-center gap-1.5 rounded-[12px] px-3 py-2 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
|
|
331
|
+
className
|
|
332
|
+
),
|
|
333
|
+
...props
|
|
334
|
+
}
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
function DropdownMenuSub({ ...props }) {
|
|
338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.SubmenuRoot, { "data-slot": "dropdown-menu-sub", ...props });
|
|
339
|
+
}
|
|
340
|
+
function DropdownMenuSubTrigger({
|
|
341
|
+
className,
|
|
342
|
+
inset,
|
|
343
|
+
children,
|
|
344
|
+
...props
|
|
345
|
+
}) {
|
|
346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
347
|
+
import_menu.Menu.SubmenuTrigger,
|
|
348
|
+
{
|
|
349
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
350
|
+
"data-inset": inset,
|
|
351
|
+
className: cn(
|
|
352
|
+
"flex min-h-10 cursor-default items-center gap-1.5 rounded-[12px] px-3 py-2 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-7 data-popup-open:bg-secondary data-popup-open:text-foreground data-open:bg-secondary data-open:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
353
|
+
className
|
|
354
|
+
),
|
|
355
|
+
...props,
|
|
356
|
+
children: [
|
|
357
|
+
children,
|
|
358
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.ChevronRightIcon, { className: "ml-auto" })
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
function DropdownMenuSubContent({
|
|
364
|
+
align = "start",
|
|
365
|
+
alignOffset = -3,
|
|
366
|
+
side = "right",
|
|
367
|
+
sideOffset = 0,
|
|
368
|
+
className,
|
|
369
|
+
...props
|
|
370
|
+
}) {
|
|
371
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
372
|
+
DropdownMenuContent,
|
|
373
|
+
{
|
|
374
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
375
|
+
className: cn(
|
|
376
|
+
"w-auto min-w-[96px] rounded-[18px] border border-border/70 bg-popover/98 p-1.5 text-popover-foreground shadow-[0_10px_24px_rgba(24,24,27,0.045)] duration-100 backdrop-blur-xl 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",
|
|
377
|
+
className
|
|
378
|
+
),
|
|
379
|
+
align,
|
|
380
|
+
alignOffset,
|
|
381
|
+
side,
|
|
382
|
+
sideOffset,
|
|
383
|
+
...props
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
function DropdownMenuCheckboxItem({
|
|
388
|
+
className,
|
|
389
|
+
children,
|
|
390
|
+
checked,
|
|
391
|
+
inset,
|
|
392
|
+
...props
|
|
393
|
+
}) {
|
|
394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
395
|
+
import_menu.Menu.CheckboxItem,
|
|
396
|
+
{
|
|
397
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
398
|
+
"data-inset": inset,
|
|
399
|
+
className: cn(
|
|
400
|
+
"relative flex min-h-10 cursor-default items-center gap-1.5 rounded-[12px] py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground focus:**:text-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
401
|
+
className
|
|
402
|
+
),
|
|
403
|
+
checked,
|
|
404
|
+
...props,
|
|
405
|
+
children: [
|
|
406
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
407
|
+
"span",
|
|
408
|
+
{
|
|
409
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
410
|
+
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
411
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.CheckIcon, {}) })
|
|
412
|
+
}
|
|
413
|
+
),
|
|
414
|
+
children
|
|
415
|
+
]
|
|
416
|
+
}
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
function DropdownMenuRadioGroup({ ...props }) {
|
|
420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
|
|
421
|
+
}
|
|
422
|
+
function DropdownMenuRadioItem({
|
|
423
|
+
className,
|
|
424
|
+
children,
|
|
425
|
+
inset,
|
|
426
|
+
...props
|
|
427
|
+
}) {
|
|
428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
429
|
+
import_menu.Menu.RadioItem,
|
|
430
|
+
{
|
|
431
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
432
|
+
"data-inset": inset,
|
|
433
|
+
className: cn(
|
|
434
|
+
"relative flex min-h-10 cursor-default items-center gap-1.5 rounded-[12px] py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground focus:**:text-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
435
|
+
className
|
|
436
|
+
),
|
|
437
|
+
...props,
|
|
438
|
+
children: [
|
|
439
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
440
|
+
"span",
|
|
441
|
+
{
|
|
442
|
+
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
443
|
+
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
444
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_menu.Menu.RadioItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.CheckIcon, {}) })
|
|
445
|
+
}
|
|
446
|
+
),
|
|
447
|
+
children
|
|
448
|
+
]
|
|
449
|
+
}
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
function DropdownMenuSeparator({
|
|
453
|
+
className,
|
|
454
|
+
...props
|
|
455
|
+
}) {
|
|
456
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
457
|
+
import_menu.Menu.Separator,
|
|
458
|
+
{
|
|
459
|
+
"data-slot": "dropdown-menu-separator",
|
|
460
|
+
className: cn("bg-border -mx-0.5 my-1 h-px", className),
|
|
461
|
+
...props
|
|
462
|
+
}
|
|
463
|
+
);
|
|
464
|
+
}
|
|
465
|
+
function DropdownMenuShortcut({
|
|
466
|
+
className,
|
|
467
|
+
...props
|
|
468
|
+
}) {
|
|
469
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
470
|
+
"span",
|
|
471
|
+
{
|
|
472
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
473
|
+
className: cn(
|
|
474
|
+
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-foreground",
|
|
475
|
+
className
|
|
476
|
+
),
|
|
477
|
+
...props
|
|
478
|
+
}
|
|
479
|
+
);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// src/components/popover.tsx
|
|
483
|
+
var import_popover = require("@base-ui/react/popover");
|
|
484
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
485
|
+
function Popover({ ...props }) {
|
|
486
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Root, { "data-slot": "popover", ...props });
|
|
487
|
+
}
|
|
488
|
+
function PopoverTrigger({ ...props }) {
|
|
489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
490
|
+
}
|
|
491
|
+
function PopoverContent({
|
|
492
|
+
className,
|
|
493
|
+
side = "bottom",
|
|
494
|
+
sideOffset = 6,
|
|
495
|
+
align = "center",
|
|
496
|
+
alignOffset = 0,
|
|
497
|
+
...props
|
|
498
|
+
}) {
|
|
499
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
500
|
+
import_popover.Popover.Positioner,
|
|
501
|
+
{
|
|
502
|
+
side,
|
|
503
|
+
sideOffset,
|
|
504
|
+
align,
|
|
505
|
+
alignOffset,
|
|
506
|
+
className: "isolate z-50",
|
|
507
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
508
|
+
import_popover.Popover.Popup,
|
|
509
|
+
{
|
|
510
|
+
"data-slot": "popover-content",
|
|
511
|
+
className: cn(
|
|
512
|
+
"z-50 origin-(--transform-origin) rounded-[18px] border border-border/70 bg-popover/98 text-popover-foreground shadow-[0_10px_24px_rgba(24,24,27,0.045)] outline-none backdrop-blur-xl 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",
|
|
513
|
+
className
|
|
514
|
+
),
|
|
515
|
+
...props
|
|
516
|
+
}
|
|
517
|
+
)
|
|
518
|
+
}
|
|
519
|
+
) });
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// src/components/sonner.tsx
|
|
523
|
+
var import_lucide_react2 = require("lucide-react");
|
|
524
|
+
var import_sonner = require("sonner");
|
|
525
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
526
|
+
function Toaster({ ...props }) {
|
|
527
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
528
|
+
import_sonner.Toaster,
|
|
529
|
+
{
|
|
530
|
+
className: "toaster group",
|
|
531
|
+
icons: {
|
|
532
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.CircleCheckIcon, { className: "size-4" }),
|
|
533
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.InfoIcon, { className: "size-4" }),
|
|
534
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.TriangleAlertIcon, { className: "size-4" }),
|
|
535
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.OctagonXIcon, { className: "size-4" }),
|
|
536
|
+
loading: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Loader2Icon, { className: "size-4 animate-spin" })
|
|
537
|
+
},
|
|
538
|
+
style: {
|
|
539
|
+
"--normal-bg": "var(--popover)",
|
|
540
|
+
"--normal-text": "var(--popover-foreground)",
|
|
541
|
+
"--normal-border": "var(--border)",
|
|
542
|
+
"--border-radius": "var(--radius)"
|
|
543
|
+
},
|
|
544
|
+
toastOptions: {
|
|
545
|
+
classNames: {
|
|
546
|
+
toast: "cn-toast"
|
|
547
|
+
}
|
|
548
|
+
},
|
|
549
|
+
...props
|
|
550
|
+
}
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
554
|
+
0 && (module.exports = {
|
|
555
|
+
Badge,
|
|
556
|
+
Button,
|
|
557
|
+
Card,
|
|
558
|
+
CardAction,
|
|
559
|
+
CardContent,
|
|
560
|
+
CardDescription,
|
|
561
|
+
CardFooter,
|
|
562
|
+
CardHeader,
|
|
563
|
+
CardTitle,
|
|
564
|
+
DropdownMenu,
|
|
565
|
+
DropdownMenuCheckboxItem,
|
|
566
|
+
DropdownMenuContent,
|
|
567
|
+
DropdownMenuGroup,
|
|
568
|
+
DropdownMenuItem,
|
|
569
|
+
DropdownMenuLabel,
|
|
570
|
+
DropdownMenuPortal,
|
|
571
|
+
DropdownMenuRadioGroup,
|
|
572
|
+
DropdownMenuRadioItem,
|
|
573
|
+
DropdownMenuSeparator,
|
|
574
|
+
DropdownMenuShortcut,
|
|
575
|
+
DropdownMenuSub,
|
|
576
|
+
DropdownMenuSubContent,
|
|
577
|
+
DropdownMenuSubTrigger,
|
|
578
|
+
DropdownMenuTrigger,
|
|
579
|
+
Popover,
|
|
580
|
+
PopoverContent,
|
|
581
|
+
PopoverTrigger,
|
|
582
|
+
Toaster,
|
|
583
|
+
badgeVariants,
|
|
584
|
+
buttonVariants,
|
|
585
|
+
cn
|
|
586
|
+
});
|