@use-stall/ui 0.0.1
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 +5 -0
- package/dist/index.d.mts +770 -0
- package/dist/index.d.ts +770 -0
- package/dist/index.js +3744 -0
- package/dist/index.mjs +3525 -0
- package/dist/styles.css +3 -0
- package/dist/styles.d.mts +2 -0
- package/dist/styles.d.ts +2 -0
- package/package.json +81 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,3525 @@
|
|
|
1
|
+
// src/components/accordion.tsx
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
4
|
+
import { ChevronDown } from "lucide-react";
|
|
5
|
+
|
|
6
|
+
// src/lib/utils.ts
|
|
7
|
+
import { clsx } from "clsx";
|
|
8
|
+
import { twMerge } from "tailwind-merge";
|
|
9
|
+
function cn(...inputs) {
|
|
10
|
+
return twMerge(clsx(inputs));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// src/components/accordion.tsx
|
|
14
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
var Accordion = AccordionPrimitive.Root;
|
|
16
|
+
var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
17
|
+
AccordionPrimitive.Item,
|
|
18
|
+
{
|
|
19
|
+
ref,
|
|
20
|
+
className: cn("border-b last:border-b-0", className),
|
|
21
|
+
...props
|
|
22
|
+
}
|
|
23
|
+
));
|
|
24
|
+
AccordionItem.displayName = "AccordionItem";
|
|
25
|
+
var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
26
|
+
AccordionPrimitive.Trigger,
|
|
27
|
+
{
|
|
28
|
+
ref,
|
|
29
|
+
className: cn(
|
|
30
|
+
"flex flex-1 items-center justify-between py-4 font-medium text-xs transition-all hover:underline [&[data-state=open]>svg]:rotate-180 cursor-pointer",
|
|
31
|
+
className
|
|
32
|
+
),
|
|
33
|
+
...props,
|
|
34
|
+
children: [
|
|
35
|
+
children,
|
|
36
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
) }));
|
|
40
|
+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
41
|
+
var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
42
|
+
AccordionPrimitive.Content,
|
|
43
|
+
{
|
|
44
|
+
ref,
|
|
45
|
+
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
46
|
+
...props,
|
|
47
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
|
|
48
|
+
}
|
|
49
|
+
));
|
|
50
|
+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
51
|
+
|
|
52
|
+
// src/components/alert-dialog.tsx
|
|
53
|
+
import { AlertDialog as AlertDialogPrimitive } from "@base-ui-components/react/alert-dialog";
|
|
54
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
55
|
+
function AlertDialog(props) {
|
|
56
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
57
|
+
}
|
|
58
|
+
function AlertDialogTrigger(props) {
|
|
59
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
60
|
+
}
|
|
61
|
+
function AlertDialogPortal(props) {
|
|
62
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Portal, { ...props });
|
|
63
|
+
}
|
|
64
|
+
function AlertDialogBackdrop({
|
|
65
|
+
className,
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
return /* @__PURE__ */ jsx2(
|
|
69
|
+
AlertDialogPrimitive.Backdrop,
|
|
70
|
+
{
|
|
71
|
+
className: cn(
|
|
72
|
+
"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 ease-out data-ending-style:opacity-0 data-starting-style:opacity-0",
|
|
73
|
+
className
|
|
74
|
+
),
|
|
75
|
+
"data-slot": "alert-dialog-backdrop",
|
|
76
|
+
...props
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
function AlertDialogPopup({
|
|
81
|
+
className,
|
|
82
|
+
...props
|
|
83
|
+
}) {
|
|
84
|
+
return /* @__PURE__ */ jsxs2(AlertDialogPortal, { children: [
|
|
85
|
+
/* @__PURE__ */ jsx2(AlertDialogBackdrop, {}),
|
|
86
|
+
/* @__PURE__ */ jsx2("div", { className: "fixed inset-0 z-50", children: /* @__PURE__ */ jsx2("div", { className: "flex h-dvh flex-col items-center overflow-hidden pt-6 max-sm:before:flex-1 sm:overflow-y-auto sm:p-4 sm:after:flex-1 sm:before:basis-[20vh]", children: /* @__PURE__ */ jsx2(
|
|
87
|
+
AlertDialogPrimitive.Popup,
|
|
88
|
+
{
|
|
89
|
+
className: cn(
|
|
90
|
+
"sm:-translate-y-[calc(1.25rem*var(--nested-dialogs))] row-start-2 grid w-full min-w-0 origin-top gap-4 border bg-popover bg-clip-padding p-6 text-popover-foreground shadow-lg transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform data-ending-style:opacity-0 data-starting-style:opacity-0 max-sm:overflow-y-auto max-sm:border-none max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 sm:max-w-lg sm:scale-[calc(1-0.1*var(--nested-dialogs))] sm:rounded-2xl sm:data-ending-style:scale-98 sm:data-starting-style:scale-98 dark:bg-clip-border",
|
|
91
|
+
"relative before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/4%)] max-sm:before:hidden sm:data-nested:data-ending-style:translate-y-8 sm:data-nested:data-starting-style:translate-y-8 sm:before:rounded-[calc(var(--radius-2xl)-1px)] dark:before:shadow-[0_-1px_--theme(--color-white/8%)]",
|
|
92
|
+
className
|
|
93
|
+
),
|
|
94
|
+
"data-slot": "alert-dialog-popup",
|
|
95
|
+
...props
|
|
96
|
+
}
|
|
97
|
+
) }) })
|
|
98
|
+
] });
|
|
99
|
+
}
|
|
100
|
+
function AlertDialogHeader({
|
|
101
|
+
className,
|
|
102
|
+
...props
|
|
103
|
+
}) {
|
|
104
|
+
return /* @__PURE__ */ jsx2(
|
|
105
|
+
"div",
|
|
106
|
+
{
|
|
107
|
+
className: cn("flex flex-col gap-1 text-center sm:text-left", className),
|
|
108
|
+
"data-slot": "alert-dialog-header",
|
|
109
|
+
...props
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
function AlertDialogFooter({
|
|
114
|
+
className,
|
|
115
|
+
...props
|
|
116
|
+
}) {
|
|
117
|
+
return /* @__PURE__ */ jsx2(
|
|
118
|
+
"div",
|
|
119
|
+
{
|
|
120
|
+
className: cn(
|
|
121
|
+
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
|
|
122
|
+
className
|
|
123
|
+
),
|
|
124
|
+
"data-slot": "alert-dialog-footer",
|
|
125
|
+
...props
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
function AlertDialogTitle({
|
|
130
|
+
className,
|
|
131
|
+
...props
|
|
132
|
+
}) {
|
|
133
|
+
return /* @__PURE__ */ jsx2(
|
|
134
|
+
AlertDialogPrimitive.Title,
|
|
135
|
+
{
|
|
136
|
+
className: cn("font-semibold text-lg", className),
|
|
137
|
+
"data-slot": "alert-dialog-title",
|
|
138
|
+
...props
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
function AlertDialogDescription({
|
|
143
|
+
className,
|
|
144
|
+
...props
|
|
145
|
+
}) {
|
|
146
|
+
return /* @__PURE__ */ jsx2(
|
|
147
|
+
AlertDialogPrimitive.Description,
|
|
148
|
+
{
|
|
149
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
150
|
+
"data-slot": "alert-dialog-description",
|
|
151
|
+
...props
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
function AlertDialogClose(props) {
|
|
156
|
+
return /* @__PURE__ */ jsx2(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-close", ...props });
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// src/components/avatar.tsx
|
|
160
|
+
import * as React2 from "react";
|
|
161
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
162
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
163
|
+
var Avatar = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
164
|
+
AvatarPrimitive.Root,
|
|
165
|
+
{
|
|
166
|
+
ref,
|
|
167
|
+
className: cn(
|
|
168
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
169
|
+
className
|
|
170
|
+
),
|
|
171
|
+
...props
|
|
172
|
+
}
|
|
173
|
+
));
|
|
174
|
+
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
175
|
+
var AvatarImage = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
176
|
+
AvatarPrimitive.Image,
|
|
177
|
+
{
|
|
178
|
+
ref,
|
|
179
|
+
className: cn("aspect-square h-full w-full object-cover object-center", className),
|
|
180
|
+
...props
|
|
181
|
+
}
|
|
182
|
+
));
|
|
183
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
184
|
+
var AvatarFallback = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
|
|
185
|
+
AvatarPrimitive.Fallback,
|
|
186
|
+
{
|
|
187
|
+
ref,
|
|
188
|
+
className: cn(
|
|
189
|
+
"flex h-full w-full items-center justify-center rounded-full bg-muted",
|
|
190
|
+
className
|
|
191
|
+
),
|
|
192
|
+
...props
|
|
193
|
+
}
|
|
194
|
+
));
|
|
195
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
196
|
+
|
|
197
|
+
// src/components/badge.tsx
|
|
198
|
+
import { mergeProps } from "@base-ui-components/react/merge-props";
|
|
199
|
+
import { useRender } from "@base-ui-components/react/use-render";
|
|
200
|
+
import { cva } from "class-variance-authority";
|
|
201
|
+
var badgeVariants = cva(
|
|
202
|
+
"relative inline-flex shrink-0 items-center justify-center gap-1 whitespace-nowrap rounded-lg border border-transparent font-medium outline-none transition-shadow focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='size-'])]:size-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [button,a&]:cursor-pointer [button,a&]:pointer-coarse:after:absolute [button,a&]:pointer-coarse:after:size-full [button,a&]:pointer-coarse:after:min-h-11 [button,a&]:pointer-coarse:after:min-w-11",
|
|
203
|
+
{
|
|
204
|
+
defaultVariants: {
|
|
205
|
+
size: "default",
|
|
206
|
+
variant: "default"
|
|
207
|
+
},
|
|
208
|
+
variants: {
|
|
209
|
+
size: {
|
|
210
|
+
default: "px-[calc(--spacing(1)-1px)] text-xs",
|
|
211
|
+
lg: "px-[calc(--spacing(1.5)-1px)] text-sm",
|
|
212
|
+
sm: "px-[calc(--spacing(1)-1px)] text-[.625rem]"
|
|
213
|
+
},
|
|
214
|
+
variant: {
|
|
215
|
+
default: "bg-primary text-primary-foreground [button,a&]:hover:bg-primary/90",
|
|
216
|
+
destructive: "bg-destructive text-white [button,a&]:hover:bg-destructive/90",
|
|
217
|
+
error: "bg-destructive/8 text-destructive-foreground dark:bg-destructive/16",
|
|
218
|
+
info: "bg-info/8 text-info-foreground dark:bg-info/16",
|
|
219
|
+
outline: "border-border bg-accent/30 text-muted-foreground [button,a&]:hover:bg-accent/50 dark:[button,a&]:hover:bg-input/48",
|
|
220
|
+
secondary: "bg-secondary text-secondary-foreground [button,a&]:hover:bg-secondary/90",
|
|
221
|
+
success: "bg-success/8 text-success-foreground dark:bg-success/16",
|
|
222
|
+
warning: "bg-warning/8 text-warning-foreground dark:bg-warning/16"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
function Badge({ className, variant, size, render, ...props }) {
|
|
228
|
+
const defaultProps = {
|
|
229
|
+
className: cn(badgeVariants({ className, size, variant })),
|
|
230
|
+
"data-slot": "badge"
|
|
231
|
+
};
|
|
232
|
+
return useRender({
|
|
233
|
+
defaultTagName: "span",
|
|
234
|
+
props: mergeProps(defaultProps, props),
|
|
235
|
+
render
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// src/components/breadcrumb.tsx
|
|
240
|
+
import * as React3 from "react";
|
|
241
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
242
|
+
import { ChevronRight, MoreHorizontal } from "lucide-react";
|
|
243
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
244
|
+
var Breadcrumb = React3.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx4("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
245
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
246
|
+
var BreadcrumbList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
247
|
+
"ol",
|
|
248
|
+
{
|
|
249
|
+
ref,
|
|
250
|
+
className: cn(
|
|
251
|
+
"flex flex-wrap items-center gap-1 wrap-break-word text-sm text-muted-foreground",
|
|
252
|
+
className
|
|
253
|
+
),
|
|
254
|
+
...props
|
|
255
|
+
}
|
|
256
|
+
));
|
|
257
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
258
|
+
var BreadcrumbItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
259
|
+
"li",
|
|
260
|
+
{
|
|
261
|
+
ref,
|
|
262
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
263
|
+
...props
|
|
264
|
+
}
|
|
265
|
+
));
|
|
266
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
267
|
+
var BreadcrumbLink = React3.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
268
|
+
const Comp = asChild ? Slot : "a";
|
|
269
|
+
return /* @__PURE__ */ jsx4(
|
|
270
|
+
Comp,
|
|
271
|
+
{
|
|
272
|
+
ref,
|
|
273
|
+
className: cn("transition-colors hover:text-foreground", className),
|
|
274
|
+
...props
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
});
|
|
278
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
279
|
+
var BreadcrumbPage = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
|
|
280
|
+
"span",
|
|
281
|
+
{
|
|
282
|
+
ref,
|
|
283
|
+
role: "link",
|
|
284
|
+
"aria-disabled": "true",
|
|
285
|
+
"aria-current": "page",
|
|
286
|
+
className: cn("font-normal text-foreground", className),
|
|
287
|
+
...props
|
|
288
|
+
}
|
|
289
|
+
));
|
|
290
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
291
|
+
var BreadcrumbSeparator = ({
|
|
292
|
+
children,
|
|
293
|
+
className,
|
|
294
|
+
...props
|
|
295
|
+
}) => /* @__PURE__ */ jsx4(
|
|
296
|
+
"li",
|
|
297
|
+
{
|
|
298
|
+
role: "presentation",
|
|
299
|
+
"aria-hidden": "true",
|
|
300
|
+
className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
|
|
301
|
+
...props,
|
|
302
|
+
children: children ?? /* @__PURE__ */ jsx4(ChevronRight, {})
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
306
|
+
var BreadcrumbEllipsis = ({
|
|
307
|
+
className,
|
|
308
|
+
...props
|
|
309
|
+
}) => /* @__PURE__ */ jsxs3(
|
|
310
|
+
"span",
|
|
311
|
+
{
|
|
312
|
+
role: "presentation",
|
|
313
|
+
"aria-hidden": "true",
|
|
314
|
+
className: cn("flex h-9 w-9 items-center justify-center", className),
|
|
315
|
+
...props,
|
|
316
|
+
children: [
|
|
317
|
+
/* @__PURE__ */ jsx4(MoreHorizontal, { className: "h-4 w-4" }),
|
|
318
|
+
/* @__PURE__ */ jsx4("span", { className: "sr-only", children: "More" })
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
);
|
|
322
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
323
|
+
|
|
324
|
+
// src/components/button.tsx
|
|
325
|
+
import { mergeProps as mergeProps2 } from "@base-ui-components/react/merge-props";
|
|
326
|
+
import { useRender as useRender2 } from "@base-ui-components/react/use-render";
|
|
327
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
328
|
+
var buttonVariants = cva2(
|
|
329
|
+
"relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-10 border bg-clip-padding text-sm font-medium whitespace-nowrap transition-shadow outline-none before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
330
|
+
{
|
|
331
|
+
variants: {
|
|
332
|
+
variant: {
|
|
333
|
+
default: "border-primary bg-primary text-primary-foreground shadow-xs shadow-primary/24 not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] hover:bg-primary/90 [&:is(:active,[data-pressed])]:inset-shadow-[0_1px_--theme(--color-black/8%)] [&:is(:disabled,:active,[data-pressed])]:shadow-none",
|
|
334
|
+
outline: "border-border bg-background text-muted-foreground shadow-xs not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-in-data-[slot=group]:bg-clip-border dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/4%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/8%)] [&:is(:disabled,:active,[data-pressed])]:shadow-none [&:is(:hover,[data-pressed])]:opacity-80",
|
|
335
|
+
secondary: "border-secondary bg-secondary text-secondary-foreground hover:bg-secondary/90 data-pressed:bg-secondary/90",
|
|
336
|
+
destructive: "border-destructive bg-destructive text-white shadow-xs shadow-destructive/24 not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] hover:bg-destructive/90 [&:is(:active,[data-pressed])]:inset-shadow-[0_1px_--theme(--color-black/8%)] [&:is(:disabled,:active,[data-pressed])]:shadow-none",
|
|
337
|
+
"destructive-outline": "border-border bg-transparent text-destructive-foreground shadow-xs not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-input/32 dark:not-in-data-[slot=group]:bg-clip-border dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/4%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/8%)] [&:is(:disabled,:active,[data-pressed])]:shadow-none [&:is(:hover,[data-pressed])]:border-destructive/32 [&:is(:hover,[data-pressed])]:bg-destructive/4",
|
|
338
|
+
ghost: "border-transparent hover:bg-accent data-pressed:bg-accent",
|
|
339
|
+
link: "border-transparent underline-offset-4 hover:underline"
|
|
340
|
+
},
|
|
341
|
+
size: {
|
|
342
|
+
default: "min-h-10 px-[calc(--spacing(3)-1px)] py-[calc(--spacing(1.5)-1px)]",
|
|
343
|
+
xs: "min-h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] py-[calc(--spacing(1)-1px)] text-xs before:rounded-[calc(var(--radius-md)-1px)] [&_svg:not([class*='size-'])]:size-3",
|
|
344
|
+
sm: "min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] py-[calc(--spacing(1)-1px)]",
|
|
345
|
+
lg: "min-h-10 px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2)-1px)]",
|
|
346
|
+
xl: "min-h-12 px-[calc(--spacing(4)-1px)] py-[calc(--spacing(2)-1px)] text-base [&_svg:not([class*='size-'])]:size-4.5",
|
|
347
|
+
icon: "size-10",
|
|
348
|
+
"icon-xs": "size-6 rounded-md before:rounded-[calc(var(--radius-md)-1px)]",
|
|
349
|
+
"icon-sm": "size-7",
|
|
350
|
+
"icon-lg": "size-9",
|
|
351
|
+
"icon-xl": "size-10 [&_svg:not([class*='size-'])]:size-4.5"
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
defaultVariants: {
|
|
355
|
+
variant: "default",
|
|
356
|
+
size: "default"
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
);
|
|
360
|
+
function Button({ className, variant, size, render, ...props }) {
|
|
361
|
+
const typeValue = render ? void 0 : "button";
|
|
362
|
+
const defaultProps = {
|
|
363
|
+
"data-slot": "button",
|
|
364
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
365
|
+
type: typeValue
|
|
366
|
+
};
|
|
367
|
+
return useRender2({
|
|
368
|
+
defaultTagName: "button",
|
|
369
|
+
render,
|
|
370
|
+
props: mergeProps2(defaultProps, props)
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// src/components/card.tsx
|
|
375
|
+
import * as React4 from "react";
|
|
376
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
377
|
+
var Card = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
378
|
+
"div",
|
|
379
|
+
{
|
|
380
|
+
ref,
|
|
381
|
+
className: cn(
|
|
382
|
+
"rounded-2xl border bg-card text-card-foreground shadow-xs",
|
|
383
|
+
className
|
|
384
|
+
),
|
|
385
|
+
...props
|
|
386
|
+
}
|
|
387
|
+
));
|
|
388
|
+
Card.displayName = "Card";
|
|
389
|
+
var CardHeader = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
390
|
+
"div",
|
|
391
|
+
{
|
|
392
|
+
ref,
|
|
393
|
+
className: cn("flex flex-col space-y-1.5 p-5", className),
|
|
394
|
+
...props
|
|
395
|
+
}
|
|
396
|
+
));
|
|
397
|
+
CardHeader.displayName = "CardHeader";
|
|
398
|
+
var CardTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
399
|
+
"h3",
|
|
400
|
+
{
|
|
401
|
+
ref,
|
|
402
|
+
className: cn(
|
|
403
|
+
"text-2xl font-semibold leading-none tracking-tight",
|
|
404
|
+
className
|
|
405
|
+
),
|
|
406
|
+
...props
|
|
407
|
+
}
|
|
408
|
+
));
|
|
409
|
+
CardTitle.displayName = "CardTitle";
|
|
410
|
+
var CardDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
411
|
+
"p",
|
|
412
|
+
{
|
|
413
|
+
ref,
|
|
414
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
415
|
+
...props
|
|
416
|
+
}
|
|
417
|
+
));
|
|
418
|
+
CardDescription.displayName = "CardDescription";
|
|
419
|
+
var CardContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5("div", { ref, className: cn("p-5 pt-0", className), ...props }));
|
|
420
|
+
CardContent.displayName = "CardContent";
|
|
421
|
+
var CardFooter = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
422
|
+
"div",
|
|
423
|
+
{
|
|
424
|
+
ref,
|
|
425
|
+
className: cn("flex items-center p-5 pt-0", className),
|
|
426
|
+
...props
|
|
427
|
+
}
|
|
428
|
+
));
|
|
429
|
+
CardFooter.displayName = "CardFooter";
|
|
430
|
+
|
|
431
|
+
// src/components/checkbox.tsx
|
|
432
|
+
import * as React5 from "react";
|
|
433
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
434
|
+
import { Check } from "lucide-react";
|
|
435
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
436
|
+
var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx6(
|
|
437
|
+
CheckboxPrimitive.Root,
|
|
438
|
+
{
|
|
439
|
+
ref,
|
|
440
|
+
className: cn(
|
|
441
|
+
"peer h-4 w-4 shrink-0 rounded-sm shadow-xs border border-border ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-none",
|
|
442
|
+
className
|
|
443
|
+
),
|
|
444
|
+
...props,
|
|
445
|
+
children: /* @__PURE__ */ jsx6(
|
|
446
|
+
CheckboxPrimitive.Indicator,
|
|
447
|
+
{
|
|
448
|
+
className: cn("flex items-center justify-center text-current"),
|
|
449
|
+
children: /* @__PURE__ */ jsx6(Check, { className: "h-3 w-3 stroke-white" })
|
|
450
|
+
}
|
|
451
|
+
)
|
|
452
|
+
}
|
|
453
|
+
));
|
|
454
|
+
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
455
|
+
|
|
456
|
+
// src/components/combobox-multi.tsx
|
|
457
|
+
import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
|
|
458
|
+
import { ChevronsUpDownIcon, XIcon } from "lucide-react";
|
|
459
|
+
import * as React8 from "react";
|
|
460
|
+
|
|
461
|
+
// src/components/input.tsx
|
|
462
|
+
import * as React6 from "react";
|
|
463
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
464
|
+
var Input = React6.forwardRef(
|
|
465
|
+
({ className, type, removeFocusIndicator, ...props }, ref) => {
|
|
466
|
+
return /* @__PURE__ */ jsx7(
|
|
467
|
+
"input",
|
|
468
|
+
{
|
|
469
|
+
type,
|
|
470
|
+
className: cn(
|
|
471
|
+
`flex h-10 w-full rounded-10 border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0
|
|
472
|
+
file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/30 font-normal
|
|
473
|
+
focus-visible:outline-hidden focus-visible:border-primary/80 focus-visible:ring-2 focus-visible:ring-ring/30
|
|
474
|
+
focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50`,
|
|
475
|
+
removeFocusIndicator && "focus-visible:ring-0 focus:ring-0 focus-visible:ring-offset-0 focus-visible:border-input",
|
|
476
|
+
className
|
|
477
|
+
),
|
|
478
|
+
ref,
|
|
479
|
+
...props
|
|
480
|
+
}
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
);
|
|
484
|
+
Input.displayName = "Input";
|
|
485
|
+
|
|
486
|
+
// src/components/scroll-area.tsx
|
|
487
|
+
import * as React7 from "react";
|
|
488
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
489
|
+
import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
490
|
+
var ScrollArea = React7.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs4(
|
|
491
|
+
ScrollAreaPrimitive.Root,
|
|
492
|
+
{
|
|
493
|
+
ref,
|
|
494
|
+
className: cn("relative overflow-hidden", className),
|
|
495
|
+
...props,
|
|
496
|
+
children: [
|
|
497
|
+
/* @__PURE__ */ jsx8(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
|
|
498
|
+
/* @__PURE__ */ jsx8(ScrollBar, {}),
|
|
499
|
+
/* @__PURE__ */ jsx8(ScrollAreaPrimitive.Corner, {})
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
));
|
|
503
|
+
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
504
|
+
var ScrollBar = React7.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
505
|
+
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
506
|
+
{
|
|
507
|
+
ref,
|
|
508
|
+
orientation,
|
|
509
|
+
className: cn(
|
|
510
|
+
"flex touch-none select-none transition-colors",
|
|
511
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
|
|
512
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
|
|
513
|
+
className
|
|
514
|
+
),
|
|
515
|
+
...props,
|
|
516
|
+
children: /* @__PURE__ */ jsx8(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
|
|
517
|
+
}
|
|
518
|
+
));
|
|
519
|
+
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
520
|
+
|
|
521
|
+
// src/components/combobox-multi.tsx
|
|
522
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
523
|
+
var ComboboxContext = React8.createContext({
|
|
524
|
+
chipsRef: null,
|
|
525
|
+
multiple: false
|
|
526
|
+
});
|
|
527
|
+
function Combobox(props) {
|
|
528
|
+
const chipsRef = React8.useRef(null);
|
|
529
|
+
return /* @__PURE__ */ jsx9(ComboboxContext.Provider, { value: { chipsRef, multiple: !!props.multiple }, children: /* @__PURE__ */ jsx9(
|
|
530
|
+
ComboboxPrimitive.Root,
|
|
531
|
+
{
|
|
532
|
+
...props
|
|
533
|
+
}
|
|
534
|
+
) });
|
|
535
|
+
}
|
|
536
|
+
function ComboboxInput({
|
|
537
|
+
className,
|
|
538
|
+
showTrigger = true,
|
|
539
|
+
showClear = false,
|
|
540
|
+
startAddon,
|
|
541
|
+
size,
|
|
542
|
+
...props
|
|
543
|
+
}) {
|
|
544
|
+
const { multiple } = React8.useContext(ComboboxContext);
|
|
545
|
+
const sizeValue = size ?? "default";
|
|
546
|
+
if (multiple) {
|
|
547
|
+
return /* @__PURE__ */ jsx9(
|
|
548
|
+
ComboboxPrimitive.Input,
|
|
549
|
+
{
|
|
550
|
+
className: cn(
|
|
551
|
+
"min-w-12 flex-1 text-base outline-none sm:text-sm [[data-slot=combobox-chip]+&]:ps-0.5",
|
|
552
|
+
sizeValue === "sm" ? "ps-1.5" : "ps-2",
|
|
553
|
+
className
|
|
554
|
+
),
|
|
555
|
+
"data-size": typeof sizeValue === "string" ? sizeValue : void 0,
|
|
556
|
+
"data-slot": "combobox-input",
|
|
557
|
+
size: typeof sizeValue === "number" ? sizeValue : void 0,
|
|
558
|
+
...props
|
|
559
|
+
}
|
|
560
|
+
);
|
|
561
|
+
}
|
|
562
|
+
return /* @__PURE__ */ jsxs5("div", { className: "relative not-has-[>*.w-full]:w-fit w-full text-foreground has-disabled:opacity-64", children: [
|
|
563
|
+
startAddon && /* @__PURE__ */ jsx9(
|
|
564
|
+
"div",
|
|
565
|
+
{
|
|
566
|
+
"aria-hidden": "true",
|
|
567
|
+
className: "[&_svg]:-mx-0.5 pointer-events-none absolute inset-y-0 start-px z-10 flex items-center ps-[calc(--spacing(3)-1px)] opacity-80 has-[+[data-size=sm]]:ps-[calc(--spacing(2.5)-1px)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4",
|
|
568
|
+
"data-slot": "combobox-start-addon",
|
|
569
|
+
children: startAddon
|
|
570
|
+
}
|
|
571
|
+
),
|
|
572
|
+
/* @__PURE__ */ jsx9(
|
|
573
|
+
ComboboxPrimitive.Input,
|
|
574
|
+
{
|
|
575
|
+
className: cn(
|
|
576
|
+
startAddon && "data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7.5)-1px)] *:data-[slot=combobox-input]:ps-[calc(--spacing(8.5)-1px)] sm:data-[size=sm]:*:data-[slot=combobox-input]:ps-[calc(--spacing(7)-1px)] sm:*:data-[slot=combobox-input]:ps-[calc(--spacing(8)-1px)]",
|
|
577
|
+
sizeValue === "sm" ? "has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-6.5" : "has-[+[data-slot=combobox-trigger],+[data-slot=combobox-clear]]:*:data-[slot=combobox-input]:pe-7",
|
|
578
|
+
className
|
|
579
|
+
),
|
|
580
|
+
"data-slot": "combobox-input",
|
|
581
|
+
render: /* @__PURE__ */ jsx9(
|
|
582
|
+
Input,
|
|
583
|
+
{
|
|
584
|
+
className: "has-disabled:opacity-100",
|
|
585
|
+
size: sizeValue
|
|
586
|
+
}
|
|
587
|
+
),
|
|
588
|
+
...props
|
|
589
|
+
}
|
|
590
|
+
),
|
|
591
|
+
showTrigger && /* @__PURE__ */ jsx9(
|
|
592
|
+
ComboboxTrigger,
|
|
593
|
+
{
|
|
594
|
+
className: cn(
|
|
595
|
+
"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
596
|
+
sizeValue === "sm" ? "end-0" : "end-0.5"
|
|
597
|
+
),
|
|
598
|
+
children: /* @__PURE__ */ jsx9(ChevronsUpDownIcon, {})
|
|
599
|
+
}
|
|
600
|
+
),
|
|
601
|
+
showClear && /* @__PURE__ */ jsx9(
|
|
602
|
+
ComboboxClear,
|
|
603
|
+
{
|
|
604
|
+
className: cn(
|
|
605
|
+
"-translate-y-1/2 absolute top-1/2 inline-flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-80 outline-none transition-opacity pointer-coarse:after:absolute pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 has-[+[data-slot=combobox-clear]]:hidden sm:size-7 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
606
|
+
sizeValue === "sm" ? "end-0" : "end-0.5"
|
|
607
|
+
),
|
|
608
|
+
children: /* @__PURE__ */ jsx9(XIcon, {})
|
|
609
|
+
}
|
|
610
|
+
)
|
|
611
|
+
] });
|
|
612
|
+
}
|
|
613
|
+
function ComboboxTrigger({
|
|
614
|
+
className,
|
|
615
|
+
...props
|
|
616
|
+
}) {
|
|
617
|
+
return /* @__PURE__ */ jsx9(
|
|
618
|
+
ComboboxPrimitive.Trigger,
|
|
619
|
+
{
|
|
620
|
+
className,
|
|
621
|
+
"data-slot": "combobox-trigger",
|
|
622
|
+
...props
|
|
623
|
+
}
|
|
624
|
+
);
|
|
625
|
+
}
|
|
626
|
+
function ComboboxPopup({
|
|
627
|
+
className,
|
|
628
|
+
children,
|
|
629
|
+
sideOffset = 4,
|
|
630
|
+
...props
|
|
631
|
+
}) {
|
|
632
|
+
const { chipsRef } = React8.useContext(ComboboxContext);
|
|
633
|
+
return /* @__PURE__ */ jsx9(ComboboxPrimitive.Portal, { children: /* @__PURE__ */ jsx9(
|
|
634
|
+
ComboboxPrimitive.Positioner,
|
|
635
|
+
{
|
|
636
|
+
anchor: chipsRef,
|
|
637
|
+
className: "z-50 select-none",
|
|
638
|
+
"data-slot": "combobox-positioner",
|
|
639
|
+
sideOffset,
|
|
640
|
+
children: /* @__PURE__ */ jsx9(
|
|
641
|
+
"span",
|
|
642
|
+
{
|
|
643
|
+
className: cn(
|
|
644
|
+
"relative flex max-h-full origin-(--transform-origin) rounded-lg border bg-popover not-dark:bg-clip-padding shadow-lg/5 transition-[scale,opacity] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]",
|
|
645
|
+
className
|
|
646
|
+
),
|
|
647
|
+
children: /* @__PURE__ */ jsx9(
|
|
648
|
+
ComboboxPrimitive.Popup,
|
|
649
|
+
{
|
|
650
|
+
className: "flex max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) flex-col text-foreground",
|
|
651
|
+
"data-slot": "combobox-popup",
|
|
652
|
+
...props,
|
|
653
|
+
children
|
|
654
|
+
}
|
|
655
|
+
)
|
|
656
|
+
}
|
|
657
|
+
)
|
|
658
|
+
}
|
|
659
|
+
) });
|
|
660
|
+
}
|
|
661
|
+
function ComboboxItem({
|
|
662
|
+
className,
|
|
663
|
+
children,
|
|
664
|
+
...props
|
|
665
|
+
}) {
|
|
666
|
+
return /* @__PURE__ */ jsxs5(
|
|
667
|
+
ComboboxPrimitive.Item,
|
|
668
|
+
{
|
|
669
|
+
className: cn(
|
|
670
|
+
"grid min-h-8 in-data-[side=none]:min-w-[calc(var(--anchor-width)+1.25rem)] cursor-default grid-cols-[1rem_1fr] items-center gap-2 rounded-sm py-1 ps-2 pe-4 text-base outline-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-64 sm:min-h-7 sm:text-sm [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
671
|
+
className
|
|
672
|
+
),
|
|
673
|
+
"data-slot": "combobox-item",
|
|
674
|
+
...props,
|
|
675
|
+
children: [
|
|
676
|
+
/* @__PURE__ */ jsx9(ComboboxPrimitive.ItemIndicator, { className: "col-start-1", children: /* @__PURE__ */ jsx9(
|
|
677
|
+
"svg",
|
|
678
|
+
{
|
|
679
|
+
fill: "none",
|
|
680
|
+
height: "24",
|
|
681
|
+
stroke: "currentColor",
|
|
682
|
+
strokeLinecap: "round",
|
|
683
|
+
strokeLinejoin: "round",
|
|
684
|
+
strokeWidth: "2",
|
|
685
|
+
viewBox: "0 0 24 24",
|
|
686
|
+
width: "24",
|
|
687
|
+
xmlns: "http://www.w3.org/1500/svg",
|
|
688
|
+
children: /* @__PURE__ */ jsx9("path", { d: "M5.252 12.7 10.2 18.63 18.748 5.37" })
|
|
689
|
+
}
|
|
690
|
+
) }),
|
|
691
|
+
/* @__PURE__ */ jsx9("div", { className: "col-start-2", children })
|
|
692
|
+
]
|
|
693
|
+
}
|
|
694
|
+
);
|
|
695
|
+
}
|
|
696
|
+
function ComboboxSeparator({
|
|
697
|
+
className,
|
|
698
|
+
...props
|
|
699
|
+
}) {
|
|
700
|
+
return /* @__PURE__ */ jsx9(
|
|
701
|
+
ComboboxPrimitive.Separator,
|
|
702
|
+
{
|
|
703
|
+
className: cn("mx-2 my-1 h-px bg-border last:hidden", className),
|
|
704
|
+
"data-slot": "combobox-separator",
|
|
705
|
+
...props
|
|
706
|
+
}
|
|
707
|
+
);
|
|
708
|
+
}
|
|
709
|
+
function ComboboxGroup({ className, ...props }) {
|
|
710
|
+
return /* @__PURE__ */ jsx9(
|
|
711
|
+
ComboboxPrimitive.Group,
|
|
712
|
+
{
|
|
713
|
+
className: cn("[[role=group]+&]:mt-1.5", className),
|
|
714
|
+
"data-slot": "combobox-group",
|
|
715
|
+
...props
|
|
716
|
+
}
|
|
717
|
+
);
|
|
718
|
+
}
|
|
719
|
+
function ComboboxGroupLabel({
|
|
720
|
+
className,
|
|
721
|
+
...props
|
|
722
|
+
}) {
|
|
723
|
+
return /* @__PURE__ */ jsx9(
|
|
724
|
+
ComboboxPrimitive.GroupLabel,
|
|
725
|
+
{
|
|
726
|
+
className: cn(
|
|
727
|
+
"px-2 py-1.5 font-medium text-muted-foreground text-xs",
|
|
728
|
+
className
|
|
729
|
+
),
|
|
730
|
+
"data-slot": "combobox-group-label",
|
|
731
|
+
...props
|
|
732
|
+
}
|
|
733
|
+
);
|
|
734
|
+
}
|
|
735
|
+
function ComboboxEmpty({ className, ...props }) {
|
|
736
|
+
return /* @__PURE__ */ jsx9(
|
|
737
|
+
ComboboxPrimitive.Empty,
|
|
738
|
+
{
|
|
739
|
+
className: cn(
|
|
740
|
+
"not-empty:p-2 text-center text-base text-muted-foreground sm:text-sm",
|
|
741
|
+
className
|
|
742
|
+
),
|
|
743
|
+
"data-slot": "combobox-empty",
|
|
744
|
+
...props
|
|
745
|
+
}
|
|
746
|
+
);
|
|
747
|
+
}
|
|
748
|
+
function ComboboxRow({ className, ...props }) {
|
|
749
|
+
return /* @__PURE__ */ jsx9(
|
|
750
|
+
ComboboxPrimitive.Row,
|
|
751
|
+
{
|
|
752
|
+
className,
|
|
753
|
+
"data-slot": "combobox-row",
|
|
754
|
+
...props
|
|
755
|
+
}
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
function ComboboxValue({ ...props }) {
|
|
759
|
+
return /* @__PURE__ */ jsx9(ComboboxPrimitive.Value, { "data-slot": "combobox-value", ...props });
|
|
760
|
+
}
|
|
761
|
+
function ComboboxList({ className, ...props }) {
|
|
762
|
+
return /* @__PURE__ */ jsx9(ScrollArea, { children: /* @__PURE__ */ jsx9(
|
|
763
|
+
ComboboxPrimitive.List,
|
|
764
|
+
{
|
|
765
|
+
className: cn(
|
|
766
|
+
"not-empty:scroll-py-1 not-empty:px-1 not-empty:py-1 in-data-has-overflow-y:pe-3",
|
|
767
|
+
className
|
|
768
|
+
),
|
|
769
|
+
"data-slot": "combobox-list",
|
|
770
|
+
...props
|
|
771
|
+
}
|
|
772
|
+
) });
|
|
773
|
+
}
|
|
774
|
+
function ComboboxClear({ className, ...props }) {
|
|
775
|
+
return /* @__PURE__ */ jsx9(
|
|
776
|
+
ComboboxPrimitive.Clear,
|
|
777
|
+
{
|
|
778
|
+
className,
|
|
779
|
+
"data-slot": "combobox-clear",
|
|
780
|
+
...props
|
|
781
|
+
}
|
|
782
|
+
);
|
|
783
|
+
}
|
|
784
|
+
function ComboboxStatus({
|
|
785
|
+
className,
|
|
786
|
+
...props
|
|
787
|
+
}) {
|
|
788
|
+
return /* @__PURE__ */ jsx9(
|
|
789
|
+
ComboboxPrimitive.Status,
|
|
790
|
+
{
|
|
791
|
+
className: cn(
|
|
792
|
+
"px-3 py-2 font-medium text-muted-foreground text-xs empty:m-0 empty:p-0",
|
|
793
|
+
className
|
|
794
|
+
),
|
|
795
|
+
"data-slot": "combobox-status",
|
|
796
|
+
...props
|
|
797
|
+
}
|
|
798
|
+
);
|
|
799
|
+
}
|
|
800
|
+
function ComboboxCollection(props) {
|
|
801
|
+
return /* @__PURE__ */ jsx9(ComboboxPrimitive.Collection, { "data-slot": "combobox-collection", ...props });
|
|
802
|
+
}
|
|
803
|
+
function ComboboxChips({
|
|
804
|
+
className,
|
|
805
|
+
children,
|
|
806
|
+
startAddon,
|
|
807
|
+
...props
|
|
808
|
+
}) {
|
|
809
|
+
const { chipsRef } = React8.useContext(ComboboxContext);
|
|
810
|
+
return /* @__PURE__ */ jsxs5(
|
|
811
|
+
ComboboxPrimitive.Chips,
|
|
812
|
+
{
|
|
813
|
+
className: cn(
|
|
814
|
+
"relative inline-flex min-h-9 w-full flex-wrap gap-1 rounded-lg border border-input bg-background not-dark:bg-clip-padding p-[calc(--spacing(1)-1px)] text-base shadow-xs/5 outline-none ring-ring/24 transition-shadow *:min-h-7 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/6%)] focus-within:border-ring focus-within:ring-[3px] has-disabled:pointer-events-none has-data-[size=lg]:min-h-10 has-data-[size=sm]:min-h-8 has-aria-invalid:border-destructive/36 has-disabled:opacity-64 has-[:disabled,:focus-within,[aria-invalid]]:shadow-none focus-within:has-aria-invalid:border-destructive/64 focus-within:has-aria-invalid:ring-destructive/16 has-data-[size=lg]:*:min-h-8 has-data-[size=sm]:*:min-h-6 sm:min-h-8 sm:text-sm sm:has-data-[size=lg]:min-h-9 sm:has-data-[size=sm]:min-h-7 sm:*:min-h-6 sm:has-data-[size=lg]:*:min-h-7 sm:has-data-[size=sm]:*:min-h-5 dark:not-has-disabled:bg-input/32 dark:has-aria-invalid:ring-destructive/24 dark:not-has-disabled:not-focus-within:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)]",
|
|
815
|
+
className
|
|
816
|
+
),
|
|
817
|
+
"data-slot": "combobox-chips",
|
|
818
|
+
onMouseDown: (e) => {
|
|
819
|
+
const target = e.target;
|
|
820
|
+
const isChip = target.closest('[data-slot="combobox-chip"]');
|
|
821
|
+
if (isChip || !chipsRef?.current) return;
|
|
822
|
+
e.preventDefault();
|
|
823
|
+
const input = chipsRef.current.querySelector("input");
|
|
824
|
+
if (input && !chipsRef.current.querySelector("input:focus")) {
|
|
825
|
+
input.focus();
|
|
826
|
+
}
|
|
827
|
+
},
|
|
828
|
+
ref: chipsRef,
|
|
829
|
+
...props,
|
|
830
|
+
children: [
|
|
831
|
+
startAddon && /* @__PURE__ */ jsx9(
|
|
832
|
+
"div",
|
|
833
|
+
{
|
|
834
|
+
"aria-hidden": "true",
|
|
835
|
+
className: "[&_svg]:-ms-0.5 [&_svg]:-me-1.5 flex shrink-0 items-center ps-2 opacity-80 has-[~[data-size=sm]]:has-[+[data-slot=combobox-chip]]:pe-1.5 has-[~[data-size=sm]]:ps-1.5 has-[+[data-slot=combobox-chip]]:pe-2 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
|
|
836
|
+
"data-slot": "combobox-start-addon",
|
|
837
|
+
children: startAddon
|
|
838
|
+
}
|
|
839
|
+
),
|
|
840
|
+
children
|
|
841
|
+
]
|
|
842
|
+
}
|
|
843
|
+
);
|
|
844
|
+
}
|
|
845
|
+
function ComboboxChip({ children, ...props }) {
|
|
846
|
+
return /* @__PURE__ */ jsxs5(
|
|
847
|
+
ComboboxPrimitive.Chip,
|
|
848
|
+
{
|
|
849
|
+
className: "flex items-center rounded-[calc(var(--radius-md)-1px)] bg-accent ps-2 font-medium text-accent-foreground text-sm outline-none sm:text-xs/(--text-xs--line-height) [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5",
|
|
850
|
+
"data-slot": "combobox-chip",
|
|
851
|
+
...props,
|
|
852
|
+
children: [
|
|
853
|
+
children,
|
|
854
|
+
/* @__PURE__ */ jsx9(ComboboxChipRemove, {})
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
);
|
|
858
|
+
}
|
|
859
|
+
function ComboboxChipRemove(props) {
|
|
860
|
+
return /* @__PURE__ */ jsx9(
|
|
861
|
+
ComboboxPrimitive.ChipRemove,
|
|
862
|
+
{
|
|
863
|
+
"aria-label": "Remove",
|
|
864
|
+
className: "h-full shrink-0 cursor-pointer px-1.5 opacity-80 hover:opacity-100 [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5",
|
|
865
|
+
"data-slot": "combobox-chip-remove",
|
|
866
|
+
...props,
|
|
867
|
+
children: /* @__PURE__ */ jsx9(XIcon, {})
|
|
868
|
+
}
|
|
869
|
+
);
|
|
870
|
+
}
|
|
871
|
+
var useComboboxFilter = ComboboxPrimitive.useFilter;
|
|
872
|
+
|
|
873
|
+
// src/components/combobox.tsx
|
|
874
|
+
import * as React11 from "react";
|
|
875
|
+
import { Check as Check2, ChevronsUpDown } from "lucide-react";
|
|
876
|
+
|
|
877
|
+
// src/components/command.tsx
|
|
878
|
+
import * as React9 from "react";
|
|
879
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
880
|
+
import { Search } from "lucide-react";
|
|
881
|
+
|
|
882
|
+
// src/components/dialog.tsx
|
|
883
|
+
import { Dialog as DialogPrimitive } from "@base-ui-components/react/dialog";
|
|
884
|
+
import { XIcon as XIcon2 } from "lucide-react";
|
|
885
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
886
|
+
var Dialog = DialogPrimitive.Root;
|
|
887
|
+
function DialogTrigger(props) {
|
|
888
|
+
return /* @__PURE__ */ jsx10(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
889
|
+
}
|
|
890
|
+
function DialogPortal(props) {
|
|
891
|
+
return /* @__PURE__ */ jsx10(DialogPrimitive.Portal, { ...props });
|
|
892
|
+
}
|
|
893
|
+
function DialogClose(props) {
|
|
894
|
+
return /* @__PURE__ */ jsx10(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
|
|
895
|
+
}
|
|
896
|
+
function DialogBackdrop({
|
|
897
|
+
className,
|
|
898
|
+
...props
|
|
899
|
+
}) {
|
|
900
|
+
return /* @__PURE__ */ jsx10(
|
|
901
|
+
DialogPrimitive.Backdrop,
|
|
902
|
+
{
|
|
903
|
+
className: cn(
|
|
904
|
+
"fixed inset-0 z-50 bg-black/32 backdrop-blur-sm transition-all duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0",
|
|
905
|
+
className
|
|
906
|
+
),
|
|
907
|
+
"data-slot": "dialog-backdrop",
|
|
908
|
+
...props
|
|
909
|
+
}
|
|
910
|
+
);
|
|
911
|
+
}
|
|
912
|
+
function DialogPopup({
|
|
913
|
+
className,
|
|
914
|
+
children,
|
|
915
|
+
showCloseButton = true,
|
|
916
|
+
...props
|
|
917
|
+
}) {
|
|
918
|
+
return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
|
|
919
|
+
/* @__PURE__ */ jsx10(DialogBackdrop, {}),
|
|
920
|
+
/* @__PURE__ */ jsx10("div", { className: "fixed inset-0 z-50", children: /* @__PURE__ */ jsx10("div", { className: "grid h-dvh grid-rows-[1fr_auto] justify-items-center pt-6 sm:grid-rows-[1fr_auto_3fr] sm:p-4", children: /* @__PURE__ */ jsx10(
|
|
921
|
+
DialogPrimitive.Popup,
|
|
922
|
+
{
|
|
923
|
+
className: cn(
|
|
924
|
+
"sm:-translate-y-[calc(1.25rem*var(--nested-dialogs))] relative row-start-2 grid max-h-full w-full min-w-0 origin-top overflow-hidden border bg-popover bg-clip-padding text-popover-foreground opacity-[calc(1-0.1*var(--nested-dialogs))] shadow-lg transition-[scale,opacity,translate] duration-200 ease-in-out will-change-transform before:pointer-events-none before:absolute before:inset-0 before:shadow-[0_1px_--theme(--color-black/4%)] **:has-[+[data-slot=dialog-footer]]:pb-4 data-ending-style:opacity-0 data-starting-style:opacity-0 max-sm:border-none max-sm:opacity-[calc(1-min(var(--nested-dialogs),1))] max-sm:data-ending-style:translate-y-4 max-sm:data-starting-style:translate-y-4 max-sm:before:hidden sm:max-w-lg sm:data-nested:data-ending-style:translate-y-8 sm:data-nested:data-starting-style:translate-y-8 sm:scale-[calc(1-0.1*var(--nested-dialogs))] sm:rounded-2xl sm:data-ending-style:scale-98 sm:data-starting-style:scale-98 sm:before:rounded-[calc(var(--radius-2xl)-1px)] sm:**:has-[+[data-slot=dialog-footer]]:pb-6 dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)]",
|
|
925
|
+
className
|
|
926
|
+
),
|
|
927
|
+
"data-slot": "dialog-popup",
|
|
928
|
+
...props,
|
|
929
|
+
children: /* @__PURE__ */ jsxs6("div", { className: "flex h-full flex-col overflow-y-auto", children: [
|
|
930
|
+
children,
|
|
931
|
+
showCloseButton && /* @__PURE__ */ jsxs6(DialogPrimitive.Close, { className: "absolute end-2 top-2 inline-flex size-7 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent opacity-72 outline-none transition-[color,background-color,box-shadow,opacity] pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", children: [
|
|
932
|
+
/* @__PURE__ */ jsx10(XIcon2, {}),
|
|
933
|
+
/* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Close" })
|
|
934
|
+
] })
|
|
935
|
+
] })
|
|
936
|
+
}
|
|
937
|
+
) }) })
|
|
938
|
+
] });
|
|
939
|
+
}
|
|
940
|
+
function DialogHeader({ className, ...props }) {
|
|
941
|
+
return /* @__PURE__ */ jsx10(
|
|
942
|
+
"div",
|
|
943
|
+
{
|
|
944
|
+
className: cn(
|
|
945
|
+
"flex flex-col gap-1 px-6 pt-6 pb-4 text-center last:pb-6 sm:text-left",
|
|
946
|
+
className
|
|
947
|
+
),
|
|
948
|
+
"data-slot": "dialog-header",
|
|
949
|
+
...props
|
|
950
|
+
}
|
|
951
|
+
);
|
|
952
|
+
}
|
|
953
|
+
function DialogFooter({ className, ...props }) {
|
|
954
|
+
return /* @__PURE__ */ jsx10(
|
|
955
|
+
"div",
|
|
956
|
+
{
|
|
957
|
+
className: cn(
|
|
958
|
+
"flex flex-col-reverse gap-2 px-6 pb-4 sm:flex-row sm:justify-end sm:rounded-b-xl sm:border-t sm:bg-muted/50 sm:pt-4",
|
|
959
|
+
className
|
|
960
|
+
),
|
|
961
|
+
"data-slot": "dialog-footer",
|
|
962
|
+
...props
|
|
963
|
+
}
|
|
964
|
+
);
|
|
965
|
+
}
|
|
966
|
+
function DialogTitle({ className, ...props }) {
|
|
967
|
+
return /* @__PURE__ */ jsx10(
|
|
968
|
+
DialogPrimitive.Title,
|
|
969
|
+
{
|
|
970
|
+
className: cn("font-heading text-xl font-semibold leading-none", className),
|
|
971
|
+
"data-slot": "dialog-title",
|
|
972
|
+
...props
|
|
973
|
+
}
|
|
974
|
+
);
|
|
975
|
+
}
|
|
976
|
+
function DialogDescription({
|
|
977
|
+
className,
|
|
978
|
+
...props
|
|
979
|
+
}) {
|
|
980
|
+
return /* @__PURE__ */ jsx10(
|
|
981
|
+
DialogPrimitive.Description,
|
|
982
|
+
{
|
|
983
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
984
|
+
"data-slot": "dialog-description",
|
|
985
|
+
...props
|
|
986
|
+
}
|
|
987
|
+
);
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
// src/components/command.tsx
|
|
991
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
992
|
+
var Command = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
993
|
+
CommandPrimitive,
|
|
994
|
+
{
|
|
995
|
+
ref,
|
|
996
|
+
className: cn(
|
|
997
|
+
"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
|
|
998
|
+
className
|
|
999
|
+
),
|
|
1000
|
+
...props
|
|
1001
|
+
}
|
|
1002
|
+
));
|
|
1003
|
+
Command.displayName = CommandPrimitive.displayName;
|
|
1004
|
+
var CommandDialog = ({ children, ...props }) => {
|
|
1005
|
+
return /* @__PURE__ */ jsx11(Dialog, { ...props, children: /* @__PURE__ */ jsx11(DialogPopup, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsx11(Command, { className: "**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 **:[[cmdk-input]]:h-12 **:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
|
|
1006
|
+
};
|
|
1007
|
+
var CommandInput = React9.forwardRef(({ className, searchContainerClassName, icon, ...props }, ref) => /* @__PURE__ */ jsxs7(
|
|
1008
|
+
"div",
|
|
1009
|
+
{
|
|
1010
|
+
className: cn("flex items-center border-b px-3", searchContainerClassName),
|
|
1011
|
+
"cmdk-input-wrapper": "",
|
|
1012
|
+
children: [
|
|
1013
|
+
icon || /* @__PURE__ */ jsx11(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
1014
|
+
/* @__PURE__ */ jsx11(
|
|
1015
|
+
CommandPrimitive.Input,
|
|
1016
|
+
{
|
|
1017
|
+
ref,
|
|
1018
|
+
className: cn(
|
|
1019
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
1020
|
+
className
|
|
1021
|
+
),
|
|
1022
|
+
...props
|
|
1023
|
+
}
|
|
1024
|
+
)
|
|
1025
|
+
]
|
|
1026
|
+
}
|
|
1027
|
+
));
|
|
1028
|
+
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
1029
|
+
var CommandList = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
1030
|
+
CommandPrimitive.List,
|
|
1031
|
+
{
|
|
1032
|
+
ref,
|
|
1033
|
+
className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
|
|
1034
|
+
...props
|
|
1035
|
+
}
|
|
1036
|
+
));
|
|
1037
|
+
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
1038
|
+
var CommandEmpty = React9.forwardRef((props, ref) => /* @__PURE__ */ jsx11(
|
|
1039
|
+
CommandPrimitive.Empty,
|
|
1040
|
+
{
|
|
1041
|
+
ref,
|
|
1042
|
+
className: "py-6 text-center text-sm",
|
|
1043
|
+
...props
|
|
1044
|
+
}
|
|
1045
|
+
));
|
|
1046
|
+
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
1047
|
+
var CommandGroup = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
1048
|
+
CommandPrimitive.Group,
|
|
1049
|
+
{
|
|
1050
|
+
ref,
|
|
1051
|
+
className: cn(
|
|
1052
|
+
"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",
|
|
1053
|
+
className
|
|
1054
|
+
),
|
|
1055
|
+
...props
|
|
1056
|
+
}
|
|
1057
|
+
));
|
|
1058
|
+
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
1059
|
+
var CommandSeparator = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
1060
|
+
CommandPrimitive.Separator,
|
|
1061
|
+
{
|
|
1062
|
+
ref,
|
|
1063
|
+
className: cn("-mx-1 h-px bg-border", className),
|
|
1064
|
+
...props
|
|
1065
|
+
}
|
|
1066
|
+
));
|
|
1067
|
+
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
1068
|
+
var CommandItem = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
|
|
1069
|
+
CommandPrimitive.Item,
|
|
1070
|
+
{
|
|
1071
|
+
ref,
|
|
1072
|
+
className: cn(
|
|
1073
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",
|
|
1074
|
+
className
|
|
1075
|
+
),
|
|
1076
|
+
...props
|
|
1077
|
+
}
|
|
1078
|
+
));
|
|
1079
|
+
CommandItem.displayName = CommandPrimitive.Item.displayName;
|
|
1080
|
+
var CommandShortcut = ({
|
|
1081
|
+
className,
|
|
1082
|
+
...props
|
|
1083
|
+
}) => {
|
|
1084
|
+
return /* @__PURE__ */ jsx11(
|
|
1085
|
+
"span",
|
|
1086
|
+
{
|
|
1087
|
+
className: cn(
|
|
1088
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
1089
|
+
className
|
|
1090
|
+
),
|
|
1091
|
+
...props
|
|
1092
|
+
}
|
|
1093
|
+
);
|
|
1094
|
+
};
|
|
1095
|
+
CommandShortcut.displayName = "CommandShortcut";
|
|
1096
|
+
|
|
1097
|
+
// src/components/popover.tsx
|
|
1098
|
+
import * as React10 from "react";
|
|
1099
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
1100
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1101
|
+
var Popover = PopoverPrimitive.Root;
|
|
1102
|
+
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1103
|
+
var PopoverContent = React10.forwardRef(
|
|
1104
|
+
({
|
|
1105
|
+
className,
|
|
1106
|
+
align = "center",
|
|
1107
|
+
sideOffset = 4,
|
|
1108
|
+
hidePrimitive = false,
|
|
1109
|
+
...props
|
|
1110
|
+
}, ref) => {
|
|
1111
|
+
const Contents = () => /* @__PURE__ */ jsx12(
|
|
1112
|
+
PopoverPrimitive.Content,
|
|
1113
|
+
{
|
|
1114
|
+
ref,
|
|
1115
|
+
align,
|
|
1116
|
+
sideOffset,
|
|
1117
|
+
className: cn(
|
|
1118
|
+
`z-50 w-72 rounded-10 border bg-popover p-4 text-popover-foreground shadow-md
|
|
1119
|
+
outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out
|
|
1120
|
+
data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95
|
|
1121
|
+
data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2
|
|
1122
|
+
data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,
|
|
1123
|
+
className
|
|
1124
|
+
),
|
|
1125
|
+
...props
|
|
1126
|
+
}
|
|
1127
|
+
);
|
|
1128
|
+
if (hidePrimitive) {
|
|
1129
|
+
return /* @__PURE__ */ jsx12(Contents, {});
|
|
1130
|
+
}
|
|
1131
|
+
return /* @__PURE__ */ jsx12(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx12(Contents, {}) });
|
|
1132
|
+
}
|
|
1133
|
+
);
|
|
1134
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
1135
|
+
|
|
1136
|
+
// src/components/combobox.tsx
|
|
1137
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1138
|
+
function Combobox2({ modal = false, ...props }) {
|
|
1139
|
+
const [open, setOpen] = React11.useState(false);
|
|
1140
|
+
const options2 = props?.options || props?.data_source;
|
|
1141
|
+
const active_option = React11.useMemo(
|
|
1142
|
+
() => options2?.find((item) => item.value === props.value)?.label,
|
|
1143
|
+
[options2, props.value]
|
|
1144
|
+
);
|
|
1145
|
+
return /* @__PURE__ */ jsxs8(Popover, { open, onOpenChange: setOpen, modal, children: [
|
|
1146
|
+
/* @__PURE__ */ jsx13(
|
|
1147
|
+
PopoverTrigger,
|
|
1148
|
+
{
|
|
1149
|
+
disabled: props.disabled,
|
|
1150
|
+
asChild: !!props.trigger,
|
|
1151
|
+
className: cn(
|
|
1152
|
+
"bg-tranparent w-full px-0",
|
|
1153
|
+
props.disabled && "pointer-events-none cursor-not-allowed"
|
|
1154
|
+
),
|
|
1155
|
+
children: props.trigger ? props.trigger : /* @__PURE__ */ jsxs8(
|
|
1156
|
+
"button",
|
|
1157
|
+
{
|
|
1158
|
+
type: "button",
|
|
1159
|
+
role: "combobox",
|
|
1160
|
+
"aria-expanded": open,
|
|
1161
|
+
disabled: props.disabled,
|
|
1162
|
+
className: cn(
|
|
1163
|
+
buttonVariants({ variant: "outline" }),
|
|
1164
|
+
`relative w-full h-10 px-3 gap-2 overflow-hidden justify-between bg-background shadow-none
|
|
1165
|
+
text-muted-foreground/40 ring-offset-0 ring-inset [font-weight:inherit]`,
|
|
1166
|
+
props.value && "text-foreground",
|
|
1167
|
+
props?.className,
|
|
1168
|
+
props.disabled && "pointer-events-none cursor-not-allowed"
|
|
1169
|
+
),
|
|
1170
|
+
children: [
|
|
1171
|
+
/* @__PURE__ */ jsx13(
|
|
1172
|
+
"span",
|
|
1173
|
+
{
|
|
1174
|
+
className: cn(
|
|
1175
|
+
"max-w-full whitespace-nowrap truncate overflow-hidden text-inherit",
|
|
1176
|
+
props.nestedClassName
|
|
1177
|
+
),
|
|
1178
|
+
children: active_option ? active_option : props.placeholder || "Select ..."
|
|
1179
|
+
}
|
|
1180
|
+
),
|
|
1181
|
+
!props.disabled && /* @__PURE__ */ jsx13(ChevronsUpDown, { className: "h-4 w-4 shrink-0 opacity-50 -mr-1" }),
|
|
1182
|
+
/* @__PURE__ */ jsx13(
|
|
1183
|
+
"input",
|
|
1184
|
+
{
|
|
1185
|
+
onChange: (e) => props.onChange(e.target.value),
|
|
1186
|
+
type: "text",
|
|
1187
|
+
className: "scale-0 absolute",
|
|
1188
|
+
value: props.value ?? "",
|
|
1189
|
+
required: props.required ?? false
|
|
1190
|
+
}
|
|
1191
|
+
)
|
|
1192
|
+
]
|
|
1193
|
+
}
|
|
1194
|
+
)
|
|
1195
|
+
}
|
|
1196
|
+
),
|
|
1197
|
+
/* @__PURE__ */ jsx13(
|
|
1198
|
+
PopoverContent,
|
|
1199
|
+
{
|
|
1200
|
+
align: props.align || "center",
|
|
1201
|
+
hidePrimitive: props.hidePrimitive,
|
|
1202
|
+
className: "w-[var(--radix-popover-trigger-width)] max-h-(--radix-popover-content-available-height)\n min-w-40 p-0 overflow-hidden",
|
|
1203
|
+
children: /* @__PURE__ */ jsxs8(
|
|
1204
|
+
Command,
|
|
1205
|
+
{
|
|
1206
|
+
className: "w-full",
|
|
1207
|
+
filter: (value, search, keywords = []) => {
|
|
1208
|
+
const extendValue = value + " " + keywords.join(" ");
|
|
1209
|
+
if (extendValue.toLowerCase().includes(search.toLowerCase())) {
|
|
1210
|
+
return 1;
|
|
1211
|
+
}
|
|
1212
|
+
return 0;
|
|
1213
|
+
},
|
|
1214
|
+
children: [
|
|
1215
|
+
!props.hideSearch && /* @__PURE__ */ jsx13(CommandInput, { placeholder: "Search ...", className: "text-xs" }),
|
|
1216
|
+
/* @__PURE__ */ jsxs8(CommandList, { children: [
|
|
1217
|
+
/* @__PURE__ */ jsx13(CommandEmpty, { className: "flex flex-col items-center justify-center p-6", children: /* @__PURE__ */ jsx13("span", { className: "mt-2 text-xs text-zinc-400", children: "No data found" }) }),
|
|
1218
|
+
/* @__PURE__ */ jsx13(CommandGroup, { children: options2?.map((item) => /* @__PURE__ */ jsxs8(
|
|
1219
|
+
CommandItem,
|
|
1220
|
+
{
|
|
1221
|
+
value: item.value,
|
|
1222
|
+
onSelect: (currentValue) => {
|
|
1223
|
+
props.onChange(
|
|
1224
|
+
currentValue === props.value ? "" : currentValue,
|
|
1225
|
+
item.item
|
|
1226
|
+
);
|
|
1227
|
+
setOpen(false);
|
|
1228
|
+
},
|
|
1229
|
+
keywords: [item.label],
|
|
1230
|
+
className: "cursor-pointer font-medium text-xs capitalize",
|
|
1231
|
+
children: [
|
|
1232
|
+
/* @__PURE__ */ jsx13(
|
|
1233
|
+
Check2,
|
|
1234
|
+
{
|
|
1235
|
+
className: cn(
|
|
1236
|
+
"h-3 w-3",
|
|
1237
|
+
props.value === item.value ? "opacity-100" : "opacity-0"
|
|
1238
|
+
)
|
|
1239
|
+
}
|
|
1240
|
+
),
|
|
1241
|
+
item.label
|
|
1242
|
+
]
|
|
1243
|
+
},
|
|
1244
|
+
item.value
|
|
1245
|
+
)) })
|
|
1246
|
+
] })
|
|
1247
|
+
]
|
|
1248
|
+
}
|
|
1249
|
+
)
|
|
1250
|
+
}
|
|
1251
|
+
)
|
|
1252
|
+
] });
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
// src/components/confirm-dialog.tsx
|
|
1256
|
+
import React14 from "react";
|
|
1257
|
+
|
|
1258
|
+
// src/components/fancy-button.tsx
|
|
1259
|
+
import * as React13 from "react";
|
|
1260
|
+
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
1261
|
+
|
|
1262
|
+
// src/lib/recursive-clone-children.tsx
|
|
1263
|
+
import * as React12 from "react";
|
|
1264
|
+
function recursiveCloneChildren(children, additionalProps, displayNames, uniqueId, asChild) {
|
|
1265
|
+
const mappedChildren = React12.Children.map(
|
|
1266
|
+
children,
|
|
1267
|
+
(child, index) => {
|
|
1268
|
+
if (!React12.isValidElement(child)) {
|
|
1269
|
+
return child;
|
|
1270
|
+
}
|
|
1271
|
+
const displayName = child.type?.displayName || "";
|
|
1272
|
+
const newProps = displayNames.includes(displayName) ? additionalProps : {};
|
|
1273
|
+
const childProps = child.props;
|
|
1274
|
+
return React12.cloneElement(
|
|
1275
|
+
child,
|
|
1276
|
+
{ ...newProps, key: `${uniqueId}-${index}` },
|
|
1277
|
+
recursiveCloneChildren(
|
|
1278
|
+
childProps?.children,
|
|
1279
|
+
additionalProps,
|
|
1280
|
+
displayNames,
|
|
1281
|
+
uniqueId,
|
|
1282
|
+
childProps?.asChild
|
|
1283
|
+
)
|
|
1284
|
+
);
|
|
1285
|
+
}
|
|
1286
|
+
);
|
|
1287
|
+
return asChild ? mappedChildren?.[0] : mappedChildren;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
// src/lib/tv.ts
|
|
1291
|
+
import { createTV } from "tailwind-variants";
|
|
1292
|
+
var tv = createTV({});
|
|
1293
|
+
|
|
1294
|
+
// src/components/fancy-button.tsx
|
|
1295
|
+
import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1296
|
+
var BUTTON_ROOT_NAME = "ButtonRoot";
|
|
1297
|
+
var BUTTON_ICON_NAME = "ButtonIcon";
|
|
1298
|
+
var fancyButtonVariants = tv({
|
|
1299
|
+
slots: {
|
|
1300
|
+
root: [
|
|
1301
|
+
// base
|
|
1302
|
+
"group relative inline-flex items-center justify-center whitespace-nowrap text-label-sm outline-none",
|
|
1303
|
+
"transition duration-200 ease-out cursor-pointer",
|
|
1304
|
+
// focus
|
|
1305
|
+
"focus:outline-none",
|
|
1306
|
+
// disabled
|
|
1307
|
+
"disabled:pointer-events-none",
|
|
1308
|
+
"disabled:opacity-80"
|
|
1309
|
+
],
|
|
1310
|
+
icon: "relative z-10 size-5 shrink-0"
|
|
1311
|
+
},
|
|
1312
|
+
variants: {
|
|
1313
|
+
variant: {
|
|
1314
|
+
neutral: {
|
|
1315
|
+
root: "bg-bg-strong-950 text-text-white-0 border border-border shadow-ancy-buttons-neutral"
|
|
1316
|
+
},
|
|
1317
|
+
primary: {
|
|
1318
|
+
root: "bg-primary-base text-static-white shadow-fancy-buttons-primary"
|
|
1319
|
+
},
|
|
1320
|
+
destructive: {
|
|
1321
|
+
root: "bg-error-base text-static-white shadow-fancy-buttons-error"
|
|
1322
|
+
},
|
|
1323
|
+
basic: {
|
|
1324
|
+
root: [
|
|
1325
|
+
// base
|
|
1326
|
+
"bg-bg-white-0 text-text-sub-600 shadow-fancy-buttons-stroke",
|
|
1327
|
+
// hover
|
|
1328
|
+
"hover:bg-bg-weak-50 hover:text-text-strong-950 hover:shadow-none"
|
|
1329
|
+
]
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
size: {
|
|
1333
|
+
medium: {
|
|
1334
|
+
root: "h-10 gap-3 rounded-10 px-3.5",
|
|
1335
|
+
icon: "-mx-1"
|
|
1336
|
+
},
|
|
1337
|
+
small: {
|
|
1338
|
+
root: "h-9 gap-3 rounded-lg px-3",
|
|
1339
|
+
icon: "-mx-1"
|
|
1340
|
+
},
|
|
1341
|
+
xsmall: {
|
|
1342
|
+
root: "h-8 gap-3 rounded-lg px-2.5",
|
|
1343
|
+
icon: "-mx-1"
|
|
1344
|
+
},
|
|
1345
|
+
icon: {
|
|
1346
|
+
root: "size-10 rounded-10 p-0",
|
|
1347
|
+
icon: ""
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
},
|
|
1351
|
+
compoundVariants: [
|
|
1352
|
+
{
|
|
1353
|
+
variant: ["neutral", "primary", "destructive"],
|
|
1354
|
+
class: {
|
|
1355
|
+
root: [
|
|
1356
|
+
// before
|
|
1357
|
+
"before:pointer-events-none before:absolute before:inset-0 before:z-10 before:rounded-[inherit]",
|
|
1358
|
+
"before:bg-gradient-to-b before:p-px",
|
|
1359
|
+
"before:from-static-white/[.12] before:to-transparent",
|
|
1360
|
+
// before mask
|
|
1361
|
+
"before:[mask-clip:content-box,border-box] before:[mask-composite:exclude] before:[mask-image:linear-gradient(#fff_0_0),linear-gradient(#fff_0_0)]",
|
|
1362
|
+
// after
|
|
1363
|
+
"after:absolute after:inset-0 after:rounded-[inherit] after:bg-gradient-to-b after:from-static-white after:to-transparent",
|
|
1364
|
+
"after:pointer-events-none after:opacity-[.16] after:transition after:duration-200 after:ease-out",
|
|
1365
|
+
// hover
|
|
1366
|
+
"hover:after:opacity-[.24]"
|
|
1367
|
+
]
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
],
|
|
1371
|
+
defaultVariants: {
|
|
1372
|
+
variant: "primary",
|
|
1373
|
+
size: "medium"
|
|
1374
|
+
}
|
|
1375
|
+
});
|
|
1376
|
+
var ButtonRoot = React13.forwardRef(
|
|
1377
|
+
({
|
|
1378
|
+
asChild,
|
|
1379
|
+
children,
|
|
1380
|
+
variant = "primary",
|
|
1381
|
+
size,
|
|
1382
|
+
className,
|
|
1383
|
+
loading,
|
|
1384
|
+
...rest
|
|
1385
|
+
}, forwardedRef) => {
|
|
1386
|
+
const uniqueId = React13.useId();
|
|
1387
|
+
const Component = asChild ? Slot2 : "button";
|
|
1388
|
+
const { root } = fancyButtonVariants({ variant, size });
|
|
1389
|
+
const sharedProps = {
|
|
1390
|
+
variant,
|
|
1391
|
+
size
|
|
1392
|
+
};
|
|
1393
|
+
const extendedChildren = recursiveCloneChildren(
|
|
1394
|
+
children,
|
|
1395
|
+
sharedProps,
|
|
1396
|
+
[BUTTON_ICON_NAME],
|
|
1397
|
+
uniqueId,
|
|
1398
|
+
asChild
|
|
1399
|
+
);
|
|
1400
|
+
return /* @__PURE__ */ jsxs9(
|
|
1401
|
+
Component,
|
|
1402
|
+
{
|
|
1403
|
+
ref: forwardedRef,
|
|
1404
|
+
className: root({ class: className }),
|
|
1405
|
+
disabled: loading,
|
|
1406
|
+
...rest,
|
|
1407
|
+
children: [
|
|
1408
|
+
loading && /* @__PURE__ */ jsx14(
|
|
1409
|
+
"div",
|
|
1410
|
+
{
|
|
1411
|
+
className: cn(
|
|
1412
|
+
`size-4 shrink-0 rounded-full border-2 border-background/30
|
|
1413
|
+
border-l-background animate-spin`,
|
|
1414
|
+
{
|
|
1415
|
+
"border-primary/30 border-l-primary": ![
|
|
1416
|
+
"primary",
|
|
1417
|
+
"destructive"
|
|
1418
|
+
].includes(variant)
|
|
1419
|
+
}
|
|
1420
|
+
)
|
|
1421
|
+
}
|
|
1422
|
+
),
|
|
1423
|
+
extendedChildren
|
|
1424
|
+
]
|
|
1425
|
+
}
|
|
1426
|
+
);
|
|
1427
|
+
}
|
|
1428
|
+
);
|
|
1429
|
+
ButtonRoot.displayName = BUTTON_ROOT_NAME;
|
|
1430
|
+
function ButtonIcon({
|
|
1431
|
+
className,
|
|
1432
|
+
variant,
|
|
1433
|
+
size,
|
|
1434
|
+
as,
|
|
1435
|
+
...rest
|
|
1436
|
+
}) {
|
|
1437
|
+
const Component = as || "div";
|
|
1438
|
+
const { icon } = fancyButtonVariants({ variant, size });
|
|
1439
|
+
return /* @__PURE__ */ jsx14(Component, { className: icon({ class: className }), ...rest });
|
|
1440
|
+
}
|
|
1441
|
+
ButtonIcon.displayName = BUTTON_ICON_NAME;
|
|
1442
|
+
|
|
1443
|
+
// src/components/confirm-dialog.tsx
|
|
1444
|
+
import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1445
|
+
var ConfirmDialog = React14.memo(({ trigger, confirmAction }) => {
|
|
1446
|
+
return /* @__PURE__ */ jsxs10(AlertDialog, { children: [
|
|
1447
|
+
/* @__PURE__ */ jsx15(AlertDialogTrigger, { className: "contents", children: trigger || /* @__PURE__ */ jsx15(ButtonRoot, { variant: "neutral", children: "Confirm" }) }),
|
|
1448
|
+
/* @__PURE__ */ jsxs10(AlertDialogPopup, { children: [
|
|
1449
|
+
/* @__PURE__ */ jsxs10(AlertDialogHeader, { children: [
|
|
1450
|
+
/* @__PURE__ */ jsx15(AlertDialogTitle, { className: "text-lg", children: "Are you want to proceed?" }),
|
|
1451
|
+
/* @__PURE__ */ jsx15(AlertDialogDescription, { className: "text-sm", children: "This action may be destructive and can potentially harm any related data. Please ensure that you have backed up all important information before proceeding. If you are unsure about the consequences, it is recommended to cancel and seek further assistance." })
|
|
1452
|
+
] }),
|
|
1453
|
+
/* @__PURE__ */ jsxs10(AlertDialogFooter, { className: "justify-start!", children: [
|
|
1454
|
+
/* @__PURE__ */ jsx15(
|
|
1455
|
+
AlertDialogClose,
|
|
1456
|
+
{
|
|
1457
|
+
render: /* @__PURE__ */ jsx15(ButtonRoot, { variant: "neutral", className: "w-full max-sm:bg-accent sm:w-24" }),
|
|
1458
|
+
children: "Cancel"
|
|
1459
|
+
}
|
|
1460
|
+
),
|
|
1461
|
+
/* @__PURE__ */ jsx15(
|
|
1462
|
+
AlertDialogClose,
|
|
1463
|
+
{
|
|
1464
|
+
onClick: async () => {
|
|
1465
|
+
confirmAction();
|
|
1466
|
+
},
|
|
1467
|
+
render: /* @__PURE__ */ jsx15(ButtonRoot, { variant: "destructive", className: "w-full sm:w-24" }),
|
|
1468
|
+
children: "Continue"
|
|
1469
|
+
}
|
|
1470
|
+
)
|
|
1471
|
+
] })
|
|
1472
|
+
] })
|
|
1473
|
+
] });
|
|
1474
|
+
});
|
|
1475
|
+
|
|
1476
|
+
// src/components/copy-button.tsx
|
|
1477
|
+
import { StCheckMarkCircle, StCopy } from "@use-stall/icons";
|
|
1478
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1479
|
+
var CopyButton = ({
|
|
1480
|
+
isCopied,
|
|
1481
|
+
copyFunction,
|
|
1482
|
+
clearFunction,
|
|
1483
|
+
className,
|
|
1484
|
+
icon_size
|
|
1485
|
+
}) => {
|
|
1486
|
+
return /* @__PURE__ */ jsx16(
|
|
1487
|
+
Button,
|
|
1488
|
+
{
|
|
1489
|
+
onClick: () => {
|
|
1490
|
+
copyFunction();
|
|
1491
|
+
setTimeout(() => {
|
|
1492
|
+
clearFunction();
|
|
1493
|
+
}, 2e3);
|
|
1494
|
+
},
|
|
1495
|
+
size: "icon",
|
|
1496
|
+
variant: "ghost",
|
|
1497
|
+
className: cn("size-6 text-primary", className),
|
|
1498
|
+
children: /* @__PURE__ */ jsxs11("div", { className: "relative", children: [
|
|
1499
|
+
/* @__PURE__ */ jsx16(
|
|
1500
|
+
"div",
|
|
1501
|
+
{
|
|
1502
|
+
className: cn(
|
|
1503
|
+
"absolute inset-0 flex items-center justify-center transition-all duration-300 ease-in-out will-change-[transform, opacity, filter]",
|
|
1504
|
+
isCopied ? "scale-100 opacity-100 blur-0" : "blur-xs scale-[0.25] opacity-0"
|
|
1505
|
+
),
|
|
1506
|
+
children: /* @__PURE__ */ jsx16(StCheckMarkCircle, { size: icon_size, className: "fill-primary/20" })
|
|
1507
|
+
}
|
|
1508
|
+
),
|
|
1509
|
+
/* @__PURE__ */ jsx16(
|
|
1510
|
+
"div",
|
|
1511
|
+
{
|
|
1512
|
+
className: cn(
|
|
1513
|
+
"transition-[transform, opacity, filter] duration-300 ease-in-out will-change-[transform, opacity, filter]",
|
|
1514
|
+
isCopied ? "blur-xs scale-[0.25] opacity-0" : "scale-100 opacity-100 blur-0"
|
|
1515
|
+
),
|
|
1516
|
+
children: /* @__PURE__ */ jsx16(StCopy, { size: icon_size, className: "fill-primary/20" })
|
|
1517
|
+
}
|
|
1518
|
+
)
|
|
1519
|
+
] })
|
|
1520
|
+
}
|
|
1521
|
+
);
|
|
1522
|
+
};
|
|
1523
|
+
|
|
1524
|
+
// src/components/country-picker.tsx
|
|
1525
|
+
import * as React15 from "react";
|
|
1526
|
+
import { Check as Check3, ChevronsUpDown as ChevronsUpDown2 } from "lucide-react";
|
|
1527
|
+
|
|
1528
|
+
// src/constants/countries.ts
|
|
1529
|
+
var COUNTRIES = [
|
|
1530
|
+
{ code: "AF", name: "Afghanistan", label: "\u{1F1E6}\u{1F1EB} Afghanistan" },
|
|
1531
|
+
{ code: "AL", name: "Albania", label: "\u{1F1E6}\u{1F1F1} Albania" },
|
|
1532
|
+
{ code: "DZ", name: "Algeria", label: "\u{1F1E9}\u{1F1FF} Algeria" },
|
|
1533
|
+
{ code: "AD", name: "Andorra", label: "\u{1F1E6}\u{1F1E9} Andorra" },
|
|
1534
|
+
{ code: "AO", name: "Angola", label: "\u{1F1E6}\u{1F1F4} Angola" },
|
|
1535
|
+
{ code: "AG", name: "Antigua and Barbuda", label: "\u{1F1E6}\u{1F1EC} Antigua and Barbuda" },
|
|
1536
|
+
{ code: "AR", name: "Argentina", label: "\u{1F1E6}\u{1F1F7} Argentina" },
|
|
1537
|
+
{ code: "AM", name: "Armenia", label: "\u{1F1E6}\u{1F1F2} Armenia" },
|
|
1538
|
+
{ code: "AU", name: "Australia", label: "\u{1F1E6}\u{1F1FA} Australia" },
|
|
1539
|
+
{ code: "AT", name: "Austria", label: "\u{1F1E6}\u{1F1F9} Austria" },
|
|
1540
|
+
{ code: "AZ", name: "Azerbaijan", label: "\u{1F1E6}\u{1F1FF} Azerbaijan" },
|
|
1541
|
+
{ code: "BS", name: "Bahamas", label: "\u{1F1E7}\u{1F1F8} Bahamas" },
|
|
1542
|
+
{ code: "BH", name: "Bahrain", label: "\u{1F1E7}\u{1F1ED} Bahrain" },
|
|
1543
|
+
{ code: "BD", name: "Bangladesh", label: "\u{1F1E7}\u{1F1E9} Bangladesh" },
|
|
1544
|
+
{ code: "BB", name: "Barbados", label: "\u{1F1E7}\u{1F1E7} Barbados" },
|
|
1545
|
+
{ code: "BY", name: "Belarus", label: "\u{1F1E7}\u{1F1FE} Belarus" },
|
|
1546
|
+
{ code: "BE", name: "Belgium", label: "\u{1F1E7}\u{1F1EA} Belgium" },
|
|
1547
|
+
{ code: "BZ", name: "Belize", label: "\u{1F1E7}\u{1F1FF} Belize" },
|
|
1548
|
+
{ code: "BJ", name: "Benin", label: "\u{1F1E7}\u{1F1EF} Benin" },
|
|
1549
|
+
{ code: "BT", name: "Bhutan", label: "\u{1F1E7}\u{1F1F9} Bhutan" },
|
|
1550
|
+
{ code: "BO", name: "Bolivia", label: "\u{1F1E7}\u{1F1F4} Bolivia" },
|
|
1551
|
+
{ code: "BA", name: "Bosnia and Herzegovina", label: "\u{1F1E7}\u{1F1E6} Bosnia and Herzegovina" },
|
|
1552
|
+
{ code: "BW", name: "Botswana", label: "\u{1F1E7}\u{1F1FC} Botswana" },
|
|
1553
|
+
{ code: "BR", name: "Brazil", label: "\u{1F1E7}\u{1F1F7} Brazil" },
|
|
1554
|
+
{ code: "BN", name: "Brunei", label: "\u{1F1E7}\u{1F1F3} Brunei" },
|
|
1555
|
+
{ code: "BG", name: "Bulgaria", label: "\u{1F1E7}\u{1F1EC} Bulgaria" },
|
|
1556
|
+
{ code: "BF", name: "Burkina Faso", label: "\u{1F1E7}\u{1F1EB} Burkina Faso" },
|
|
1557
|
+
{ code: "BI", name: "Burundi", label: "\u{1F1E7}\u{1F1EE} Burundi" },
|
|
1558
|
+
{ code: "CV", name: "Cabo Verde", label: "\u{1F1E8}\u{1F1FB} Cabo Verde" },
|
|
1559
|
+
{ code: "KH", name: "Cambodia", label: "\u{1F1F0}\u{1F1ED} Cambodia" },
|
|
1560
|
+
{ code: "CM", name: "Cameroon", label: "\u{1F1E8}\u{1F1F2} Cameroon" },
|
|
1561
|
+
{ code: "CA", name: "Canada", label: "\u{1F1E8}\u{1F1E6} Canada" },
|
|
1562
|
+
{ code: "CF", name: "Central African Republic", label: "\u{1F1E8}\u{1F1EB} Central African Republic" },
|
|
1563
|
+
{ code: "TD", name: "Chad", label: "\u{1F1F9}\u{1F1E9} Chad" },
|
|
1564
|
+
{ code: "CL", name: "Chile", label: "\u{1F1E8}\u{1F1F1} Chile" },
|
|
1565
|
+
{ code: "CN", name: "China", label: "\u{1F1E8}\u{1F1F3} China" },
|
|
1566
|
+
{ code: "CO", name: "Colombia", label: "\u{1F1E8}\u{1F1F4} Colombia" },
|
|
1567
|
+
{ code: "KM", name: "Comoros", label: "\u{1F1F0}\u{1F1F2} Comoros" },
|
|
1568
|
+
{ code: "CG", name: "Congo", label: "\u{1F1E8}\u{1F1EC} Congo" },
|
|
1569
|
+
{ code: "CD", name: "Congo (DRC)", label: "\u{1F1E8}\u{1F1E9} Congo (DRC)" },
|
|
1570
|
+
{ code: "CR", name: "Costa Rica", label: "\u{1F1E8}\u{1F1F7} Costa Rica" },
|
|
1571
|
+
{ code: "CI", name: "C\xF4te d\u2019Ivoire", label: "\u{1F1E8}\u{1F1EE} C\xF4te d\u2019Ivoire" },
|
|
1572
|
+
{ code: "HR", name: "Croatia", label: "\u{1F1ED}\u{1F1F7} Croatia" },
|
|
1573
|
+
{ code: "CU", name: "Cuba", label: "\u{1F1E8}\u{1F1FA} Cuba" },
|
|
1574
|
+
{ code: "CY", name: "Cyprus", label: "\u{1F1E8}\u{1F1FE} Cyprus" },
|
|
1575
|
+
{ code: "CZ", name: "Czechia", label: "\u{1F1E8}\u{1F1FF} Czechia" },
|
|
1576
|
+
{ code: "DK", name: "Denmark", label: "\u{1F1E9}\u{1F1F0} Denmark" },
|
|
1577
|
+
{ code: "DJ", name: "Djibouti", label: "\u{1F1E9}\u{1F1EF} Djibouti" },
|
|
1578
|
+
{ code: "DM", name: "Dominica", label: "\u{1F1E9}\u{1F1F2} Dominica" },
|
|
1579
|
+
{ code: "DO", name: "Dominican Republic", label: "\u{1F1E9}\u{1F1F4} Dominican Republic" },
|
|
1580
|
+
{ code: "EC", name: "Ecuador", label: "\u{1F1EA}\u{1F1E8} Ecuador" },
|
|
1581
|
+
{ code: "EG", name: "Egypt", label: "\u{1F1EA}\u{1F1EC} Egypt" },
|
|
1582
|
+
{ code: "SV", name: "El Salvador", label: "\u{1F1F8}\u{1F1FB} El Salvador" },
|
|
1583
|
+
{ code: "GQ", name: "Equatorial Guinea", label: "\u{1F1EC}\u{1F1F6} Equatorial Guinea" },
|
|
1584
|
+
{ code: "ER", name: "Eritrea", label: "\u{1F1EA}\u{1F1F7} Eritrea" },
|
|
1585
|
+
{ code: "EE", name: "Estonia", label: "\u{1F1EA}\u{1F1EA} Estonia" },
|
|
1586
|
+
{ code: "SZ", name: "Eswatini", label: "\u{1F1F8}\u{1F1FF} Eswatini" },
|
|
1587
|
+
{ code: "ET", name: "Ethiopia", label: "\u{1F1EA}\u{1F1F9} Ethiopia" },
|
|
1588
|
+
{ code: "FJ", name: "Fiji", label: "\u{1F1EB}\u{1F1EF} Fiji" },
|
|
1589
|
+
{ code: "FI", name: "Finland", label: "\u{1F1EB}\u{1F1EE} Finland" },
|
|
1590
|
+
{ code: "FR", name: "France", label: "\u{1F1EB}\u{1F1F7} France" },
|
|
1591
|
+
{ code: "GA", name: "Gabon", label: "\u{1F1EC}\u{1F1E6} Gabon" },
|
|
1592
|
+
{ code: "GM", name: "Gambia", label: "\u{1F1EC}\u{1F1F2} Gambia" },
|
|
1593
|
+
{ code: "GE", name: "Georgia", label: "\u{1F1EC}\u{1F1EA} Georgia" },
|
|
1594
|
+
{ code: "DE", name: "Germany", label: "\u{1F1E9}\u{1F1EA} Germany" },
|
|
1595
|
+
{ code: "GH", name: "Ghana", label: "\u{1F1EC}\u{1F1ED} Ghana" },
|
|
1596
|
+
{ code: "GR", name: "Greece", label: "\u{1F1EC}\u{1F1F7} Greece" },
|
|
1597
|
+
{ code: "GD", name: "Grenada", label: "\u{1F1EC}\u{1F1E9} Grenada" },
|
|
1598
|
+
{ code: "GT", name: "Guatemala", label: "\u{1F1EC}\u{1F1F9} Guatemala" },
|
|
1599
|
+
{ code: "GN", name: "Guinea", label: "\u{1F1EC}\u{1F1F3} Guinea" },
|
|
1600
|
+
{ code: "GW", name: "Guinea-Bissau", label: "\u{1F1EC}\u{1F1FC} Guinea-Bissau" },
|
|
1601
|
+
{ code: "GY", name: "Guyana", label: "\u{1F1EC}\u{1F1FE} Guyana" },
|
|
1602
|
+
{ code: "HT", name: "Haiti", label: "\u{1F1ED}\u{1F1F9} Haiti" },
|
|
1603
|
+
{ code: "HN", name: "Honduras", label: "\u{1F1ED}\u{1F1F3} Honduras" },
|
|
1604
|
+
{ code: "HU", name: "Hungary", label: "\u{1F1ED}\u{1F1FA} Hungary" },
|
|
1605
|
+
{ code: "IS", name: "Iceland", label: "\u{1F1EE}\u{1F1F8} Iceland" },
|
|
1606
|
+
{ code: "IN", name: "India", label: "\u{1F1EE}\u{1F1F3} India" },
|
|
1607
|
+
{ code: "ID", name: "Indonesia", label: "\u{1F1EE}\u{1F1E9} Indonesia" },
|
|
1608
|
+
{ code: "IR", name: "Iran", label: "\u{1F1EE}\u{1F1F7} Iran" },
|
|
1609
|
+
{ code: "IQ", name: "Iraq", label: "\u{1F1EE}\u{1F1F6} Iraq" },
|
|
1610
|
+
{ code: "IE", name: "Ireland", label: "\u{1F1EE}\u{1F1EA} Ireland" },
|
|
1611
|
+
{ code: "IL", name: "Israel", label: "\u{1F1EE}\u{1F1F1} Israel" },
|
|
1612
|
+
{ code: "IT", name: "Italy", label: "\u{1F1EE}\u{1F1F9} Italy" },
|
|
1613
|
+
{ code: "JM", name: "Jamaica", label: "\u{1F1EF}\u{1F1F2} Jamaica" },
|
|
1614
|
+
{ code: "JP", name: "Japan", label: "\u{1F1EF}\u{1F1F5} Japan" },
|
|
1615
|
+
{ code: "JO", name: "Jordan", label: "\u{1F1EF}\u{1F1F4} Jordan" },
|
|
1616
|
+
{ code: "KZ", name: "Kazakhstan", label: "\u{1F1F0}\u{1F1FF} Kazakhstan" },
|
|
1617
|
+
{ code: "KE", name: "Kenya", label: "\u{1F1F0}\u{1F1EA} Kenya" },
|
|
1618
|
+
{ code: "KI", name: "Kiribati", label: "\u{1F1F0}\u{1F1EE} Kiribati" },
|
|
1619
|
+
{ code: "KP", name: "North Korea", label: "\u{1F1F0}\u{1F1F5} North Korea" },
|
|
1620
|
+
{ code: "KR", name: "South Korea", label: "\u{1F1F0}\u{1F1F7} South Korea" },
|
|
1621
|
+
{ code: "KW", name: "Kuwait", label: "\u{1F1F0}\u{1F1FC} Kuwait" },
|
|
1622
|
+
{ code: "KG", name: "Kyrgyzstan", label: "\u{1F1F0}\u{1F1EC} Kyrgyzstan" },
|
|
1623
|
+
{ code: "LA", name: "Laos", label: "\u{1F1F1}\u{1F1E6} Laos" },
|
|
1624
|
+
{ code: "LV", name: "Latvia", label: "\u{1F1F1}\u{1F1FB} Latvia" },
|
|
1625
|
+
{ code: "LB", name: "Lebanon", label: "\u{1F1F1}\u{1F1E7} Lebanon" },
|
|
1626
|
+
{ code: "LS", name: "Lesotho", label: "\u{1F1F1}\u{1F1F8} Lesotho" },
|
|
1627
|
+
{ code: "LR", name: "Liberia", label: "\u{1F1F1}\u{1F1F7} Liberia" },
|
|
1628
|
+
{ code: "LY", name: "Libya", label: "\u{1F1F1}\u{1F1FE} Libya" },
|
|
1629
|
+
{ code: "LI", name: "Liechtenstein", label: "\u{1F1F1}\u{1F1EE} Liechtenstein" },
|
|
1630
|
+
{ code: "LT", name: "Lithuania", label: "\u{1F1F1}\u{1F1F9} Lithuania" },
|
|
1631
|
+
{ code: "LU", name: "Luxembourg", label: "\u{1F1F1}\u{1F1FA} Luxembourg" },
|
|
1632
|
+
{ code: "MG", name: "Madagascar", label: "\u{1F1F2}\u{1F1EC} Madagascar" },
|
|
1633
|
+
{ code: "MW", name: "Malawi", label: "\u{1F1F2}\u{1F1FC} Malawi" },
|
|
1634
|
+
{ code: "MY", name: "Malaysia", label: "\u{1F1F2}\u{1F1FE} Malaysia" },
|
|
1635
|
+
{ code: "MV", name: "Maldives", label: "\u{1F1F2}\u{1F1FB} Maldives" },
|
|
1636
|
+
{ code: "ML", name: "Mali", label: "\u{1F1F2}\u{1F1F1} Mali" },
|
|
1637
|
+
{ code: "MT", name: "Malta", label: "\u{1F1F2}\u{1F1F9} Malta" },
|
|
1638
|
+
{ code: "MH", name: "Marshall Islands", label: "\u{1F1F2}\u{1F1ED} Marshall Islands" },
|
|
1639
|
+
{ code: "MR", name: "Mauritania", label: "\u{1F1F2}\u{1F1F7} Mauritania" },
|
|
1640
|
+
{ code: "MU", name: "Mauritius", label: "\u{1F1F2}\u{1F1FA} Mauritius" },
|
|
1641
|
+
{ code: "MX", name: "Mexico", label: "\u{1F1F2}\u{1F1FD} Mexico" },
|
|
1642
|
+
{ code: "FM", name: "Micronesia", label: "\u{1F1EB}\u{1F1F2} Micronesia" },
|
|
1643
|
+
{ code: "MD", name: "Moldova", label: "\u{1F1F2}\u{1F1E9} Moldova" },
|
|
1644
|
+
{ code: "MC", name: "Monaco", label: "\u{1F1F2}\u{1F1E8} Monaco" },
|
|
1645
|
+
{ code: "MN", name: "Mongolia", label: "\u{1F1F2}\u{1F1F3} Mongolia" },
|
|
1646
|
+
{ code: "ME", name: "Montenegro", label: "\u{1F1F2}\u{1F1EA} Montenegro" },
|
|
1647
|
+
{ code: "MA", name: "Morocco", label: "\u{1F1F2}\u{1F1E6} Morocco" },
|
|
1648
|
+
{ code: "MZ", name: "Mozambique", label: "\u{1F1F2}\u{1F1FF} Mozambique" },
|
|
1649
|
+
{ code: "MM", name: "Myanmar", label: "\u{1F1F2}\u{1F1F2} Myanmar" },
|
|
1650
|
+
{ code: "NA", name: "Namibia", label: "\u{1F1F3}\u{1F1E6} Namibia" },
|
|
1651
|
+
{ code: "NR", name: "Nauru", label: "\u{1F1F3}\u{1F1F7} Nauru" },
|
|
1652
|
+
{ code: "NP", name: "Nepal", label: "\u{1F1F3}\u{1F1F5} Nepal" },
|
|
1653
|
+
{ code: "NL", name: "Netherlands", label: "\u{1F1F3}\u{1F1F1} Netherlands" },
|
|
1654
|
+
{ code: "NZ", name: "New Zealand", label: "\u{1F1F3}\u{1F1FF} New Zealand" },
|
|
1655
|
+
{ code: "NI", name: "Nicaragua", label: "\u{1F1F3}\u{1F1EE} Nicaragua" },
|
|
1656
|
+
{ code: "NE", name: "Niger", label: "\u{1F1F3}\u{1F1EA} Niger" },
|
|
1657
|
+
{ code: "NG", name: "Nigeria", label: "\u{1F1F3}\u{1F1EC} Nigeria" },
|
|
1658
|
+
{ code: "MK", name: "North Macedonia", label: "\u{1F1F2}\u{1F1F0} North Macedonia" },
|
|
1659
|
+
{ code: "NO", name: "Norway", label: "\u{1F1F3}\u{1F1F4} Norway" },
|
|
1660
|
+
{ code: "OM", name: "Oman", label: "\u{1F1F4}\u{1F1F2} Oman" },
|
|
1661
|
+
{ code: "PK", name: "Pakistan", label: "\u{1F1F5}\u{1F1F0} Pakistan" },
|
|
1662
|
+
{ code: "PW", name: "Palau", label: "\u{1F1F5}\u{1F1FC} Palau" },
|
|
1663
|
+
{ code: "PA", name: "Panama", label: "\u{1F1F5}\u{1F1E6} Panama" },
|
|
1664
|
+
{ code: "PG", name: "Papua New Guinea", label: "\u{1F1F5}\u{1F1EC} Papua New Guinea" },
|
|
1665
|
+
{ code: "PY", name: "Paraguay", label: "\u{1F1F5}\u{1F1FE} Paraguay" },
|
|
1666
|
+
{ code: "PE", name: "Peru", label: "\u{1F1F5}\u{1F1EA} Peru" },
|
|
1667
|
+
{ code: "PH", name: "Philippines", label: "\u{1F1F5}\u{1F1ED} Philippines" },
|
|
1668
|
+
{ code: "PL", name: "Poland", label: "\u{1F1F5}\u{1F1F1} Poland" },
|
|
1669
|
+
{ code: "PT", name: "Portugal", label: "\u{1F1F5}\u{1F1F9} Portugal" },
|
|
1670
|
+
{ code: "QA", name: "Qatar", label: "\u{1F1F6}\u{1F1E6} Qatar" },
|
|
1671
|
+
{ code: "RO", name: "Romania", label: "\u{1F1F7}\u{1F1F4} Romania" },
|
|
1672
|
+
{ code: "RU", name: "Russia", label: "\u{1F1F7}\u{1F1FA} Russia" },
|
|
1673
|
+
{ code: "RW", name: "Rwanda", label: "\u{1F1F7}\u{1F1FC} Rwanda" },
|
|
1674
|
+
{ code: "KN", name: "Saint Kitts and Nevis", label: "\u{1F1F0}\u{1F1F3} Saint Kitts and Nevis" },
|
|
1675
|
+
{ code: "LC", name: "Saint Lucia", label: "\u{1F1F1}\u{1F1E8} Saint Lucia" },
|
|
1676
|
+
{ code: "VC", name: "Saint Vincent and the Grenadines", label: "\u{1F1FB}\u{1F1E8} Saint Vincent and the Grenadines" },
|
|
1677
|
+
{ code: "WS", name: "Samoa", label: "\u{1F1FC}\u{1F1F8} Samoa" },
|
|
1678
|
+
{ code: "SM", name: "San Marino", label: "\u{1F1F8}\u{1F1F2} San Marino" },
|
|
1679
|
+
{ code: "ST", name: "Sao Tome and Principe", label: "\u{1F1F8}\u{1F1F9} Sao Tome and Principe" },
|
|
1680
|
+
{ code: "SA", name: "Saudi Arabia", label: "\u{1F1F8}\u{1F1E6} Saudi Arabia" },
|
|
1681
|
+
{ code: "SN", name: "Senegal", label: "\u{1F1F8}\u{1F1F3} Senegal" },
|
|
1682
|
+
{ code: "RS", name: "Serbia", label: "\u{1F1F7}\u{1F1F8} Serbia" },
|
|
1683
|
+
{ code: "SC", name: "Seychelles", label: "\u{1F1F8}\u{1F1E8} Seychelles" },
|
|
1684
|
+
{ code: "SL", name: "Sierra Leone", label: "\u{1F1F8}\u{1F1F1} Sierra Leone" },
|
|
1685
|
+
{ code: "SG", name: "Singapore", label: "\u{1F1F8}\u{1F1EC} Singapore" },
|
|
1686
|
+
{ code: "SK", name: "Slovakia", label: "\u{1F1F8}\u{1F1F0} Slovakia" },
|
|
1687
|
+
{ code: "SI", name: "Slovenia", label: "\u{1F1F8}\u{1F1EE} Slovenia" },
|
|
1688
|
+
{ code: "SB", name: "Solomon Islands", label: "\u{1F1F8}\u{1F1E7} Solomon Islands" },
|
|
1689
|
+
{ code: "SO", name: "Somalia", label: "\u{1F1F8}\u{1F1F4} Somalia" },
|
|
1690
|
+
{ code: "ZA", name: "South Africa", label: "\u{1F1FF}\u{1F1E6} South Africa" },
|
|
1691
|
+
{ code: "SS", name: "South Sudan", label: "\u{1F1F8}\u{1F1F8} South Sudan" },
|
|
1692
|
+
{ code: "ES", name: "Spain", label: "\u{1F1EA}\u{1F1F8} Spain" },
|
|
1693
|
+
{ code: "LK", name: "Sri Lanka", label: "\u{1F1F1}\u{1F1F0} Sri Lanka" },
|
|
1694
|
+
{ code: "SD", name: "Sudan", label: "\u{1F1F8}\u{1F1E9} Sudan" },
|
|
1695
|
+
{ code: "SR", name: "Suriname", label: "\u{1F1F8}\u{1F1F7} Suriname" },
|
|
1696
|
+
{ code: "SE", name: "Sweden", label: "\u{1F1F8}\u{1F1EA} Sweden" },
|
|
1697
|
+
{ code: "CH", name: "Switzerland", label: "\u{1F1E8}\u{1F1ED} Switzerland" },
|
|
1698
|
+
{ code: "SY", name: "Syria", label: "\u{1F1F8}\u{1F1FE} Syria" },
|
|
1699
|
+
{ code: "TW", name: "Taiwan", label: "\u{1F1F9}\u{1F1FC} Taiwan" },
|
|
1700
|
+
{ code: "TJ", name: "Tajikistan", label: "\u{1F1F9}\u{1F1EF} Tajikistan" },
|
|
1701
|
+
{ code: "TZ", name: "Tanzania", label: "\u{1F1F9}\u{1F1FF} Tanzania" },
|
|
1702
|
+
{ code: "TH", name: "Thailand", label: "\u{1F1F9}\u{1F1ED} Thailand" },
|
|
1703
|
+
{ code: "TL", name: "Timor-Leste", label: "\u{1F1F9}\u{1F1F1} Timor-Leste" },
|
|
1704
|
+
{ code: "TG", name: "Togo", label: "\u{1F1F9}\u{1F1EC} Togo" },
|
|
1705
|
+
{ code: "TO", name: "Tonga", label: "\u{1F1F9}\u{1F1F4} Tonga" },
|
|
1706
|
+
{ code: "TT", name: "Trinidad and Tobago", label: "\u{1F1F9}\u{1F1F9} Trinidad and Tobago" },
|
|
1707
|
+
{ code: "TN", name: "Tunisia", label: "\u{1F1F9}\u{1F1F3} Tunisia" },
|
|
1708
|
+
{ code: "TR", name: "Turkey", label: "\u{1F1F9}\u{1F1F7} Turkey" },
|
|
1709
|
+
{ code: "TM", name: "Turkmenistan", label: "\u{1F1F9}\u{1F1F2} Turkmenistan" },
|
|
1710
|
+
{ code: "TV", name: "Tuvalu", label: "\u{1F1F9}\u{1F1FB} Tuvalu" },
|
|
1711
|
+
{ code: "UG", name: "Uganda", label: "\u{1F1FA}\u{1F1EC} Uganda" },
|
|
1712
|
+
{ code: "UA", name: "Ukraine", label: "\u{1F1FA}\u{1F1E6} Ukraine" },
|
|
1713
|
+
{ code: "AE", name: "United Arab Emirates", label: "\u{1F1E6}\u{1F1EA} United Arab Emirates" },
|
|
1714
|
+
{ code: "GB", name: "United Kingdom", label: "\u{1F1EC}\u{1F1E7} United Kingdom" },
|
|
1715
|
+
{ code: "US", name: "United States", label: "\u{1F1FA}\u{1F1F8} United States" },
|
|
1716
|
+
{ code: "UY", name: "Uruguay", label: "\u{1F1FA}\u{1F1FE} Uruguay" },
|
|
1717
|
+
{ code: "UZ", name: "Uzbekistan", label: "\u{1F1FA}\u{1F1FF} Uzbekistan" },
|
|
1718
|
+
{ code: "VU", name: "Vanuatu", label: "\u{1F1FB}\u{1F1FA} Vanuatu" },
|
|
1719
|
+
{ code: "VA", name: "Vatican City", label: "\u{1F1FB}\u{1F1E6} Vatican City" },
|
|
1720
|
+
{ code: "VE", name: "Venezuela", label: "\u{1F1FB}\u{1F1EA} Venezuela" },
|
|
1721
|
+
{ code: "VN", name: "Vietnam", label: "\u{1F1FB}\u{1F1F3} Vietnam" },
|
|
1722
|
+
{ code: "YE", name: "Yemen", label: "\u{1F1FE}\u{1F1EA} Yemen" },
|
|
1723
|
+
{ code: "ZM", name: "Zambia", label: "\u{1F1FF}\u{1F1F2} Zambia" },
|
|
1724
|
+
{ code: "ZW", name: "Zimbabwe", label: "\u{1F1FF}\u{1F1FC} Zimbabwe" }
|
|
1725
|
+
];
|
|
1726
|
+
|
|
1727
|
+
// src/components/country-picker.tsx
|
|
1728
|
+
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1729
|
+
var options = COUNTRIES.map((c) => ({
|
|
1730
|
+
label: c.label,
|
|
1731
|
+
value: c.name,
|
|
1732
|
+
name: c.name,
|
|
1733
|
+
alpha2: c.code
|
|
1734
|
+
}));
|
|
1735
|
+
function CountryPicker({
|
|
1736
|
+
modal = false,
|
|
1737
|
+
value_key = "value",
|
|
1738
|
+
...props
|
|
1739
|
+
}) {
|
|
1740
|
+
const [open, setOpen] = React15.useState(false);
|
|
1741
|
+
const active_option = React15.useMemo(
|
|
1742
|
+
() => options?.find(
|
|
1743
|
+
(item) => item[value_key] === props.value
|
|
1744
|
+
)?.label,
|
|
1745
|
+
[props.value, value_key]
|
|
1746
|
+
);
|
|
1747
|
+
return /* @__PURE__ */ jsxs12(Popover, { open, onOpenChange: setOpen, modal, children: [
|
|
1748
|
+
/* @__PURE__ */ jsx17(
|
|
1749
|
+
PopoverTrigger,
|
|
1750
|
+
{
|
|
1751
|
+
disabled: props.disabled,
|
|
1752
|
+
asChild: !!props.trigger,
|
|
1753
|
+
className: cn(
|
|
1754
|
+
"bg-tranparent w-full px-0",
|
|
1755
|
+
props.disabled && "pointer-events-none cursor-not-allowed"
|
|
1756
|
+
),
|
|
1757
|
+
children: props.trigger ? props.trigger : /* @__PURE__ */ jsxs12(
|
|
1758
|
+
"button",
|
|
1759
|
+
{
|
|
1760
|
+
type: "button",
|
|
1761
|
+
role: "combobox",
|
|
1762
|
+
"aria-expanded": open,
|
|
1763
|
+
disabled: props.disabled,
|
|
1764
|
+
className: cn(
|
|
1765
|
+
buttonVariants({ variant: "outline" }),
|
|
1766
|
+
`relative w-full h-10 px-3 gap-2 overflow-hidden justify-between bg-background shadow-none
|
|
1767
|
+
text-muted-foreground/40 ring-offset-0 ring-inset [font-weight:inherit]`,
|
|
1768
|
+
props.value && "text-foreground",
|
|
1769
|
+
props?.className,
|
|
1770
|
+
props.disabled && "pointer-events-none cursor-not-allowed"
|
|
1771
|
+
),
|
|
1772
|
+
children: [
|
|
1773
|
+
/* @__PURE__ */ jsx17(
|
|
1774
|
+
"span",
|
|
1775
|
+
{
|
|
1776
|
+
className: cn(
|
|
1777
|
+
"max-w-full whitespace-nowrap truncate overflow-hidden text-inherit",
|
|
1778
|
+
props.nestedClassName
|
|
1779
|
+
),
|
|
1780
|
+
children: active_option ? active_option : props.placeholder || "Pick a country"
|
|
1781
|
+
}
|
|
1782
|
+
),
|
|
1783
|
+
!props.disabled && /* @__PURE__ */ jsx17(ChevronsUpDown2, { className: "h-4 w-4 shrink-0 opacity-50 -mr-1" }),
|
|
1784
|
+
/* @__PURE__ */ jsx17(
|
|
1785
|
+
"input",
|
|
1786
|
+
{
|
|
1787
|
+
type: "text",
|
|
1788
|
+
className: "scale-0 absolute",
|
|
1789
|
+
value: props.value ?? "",
|
|
1790
|
+
required: props.required ?? false
|
|
1791
|
+
}
|
|
1792
|
+
)
|
|
1793
|
+
]
|
|
1794
|
+
}
|
|
1795
|
+
)
|
|
1796
|
+
}
|
|
1797
|
+
),
|
|
1798
|
+
/* @__PURE__ */ jsx17(
|
|
1799
|
+
PopoverContent,
|
|
1800
|
+
{
|
|
1801
|
+
align: props.align || "center",
|
|
1802
|
+
hidePrimitive: props.hidePrimitive,
|
|
1803
|
+
className: "w-[var(--radix-popover-trigger-width)] max-h-(--radix-popover-content-available-height)\n min-w-40 p-0 overflow-hidden",
|
|
1804
|
+
children: /* @__PURE__ */ jsxs12(
|
|
1805
|
+
Command,
|
|
1806
|
+
{
|
|
1807
|
+
className: "w-full",
|
|
1808
|
+
filter: (value, search, keywords = []) => {
|
|
1809
|
+
const extendValue = value + " " + keywords.join(" ");
|
|
1810
|
+
if (extendValue.toLowerCase().includes(search.toLowerCase())) {
|
|
1811
|
+
return 1;
|
|
1812
|
+
}
|
|
1813
|
+
return 0;
|
|
1814
|
+
},
|
|
1815
|
+
children: [
|
|
1816
|
+
!props.hideSearch && /* @__PURE__ */ jsx17(CommandInput, { placeholder: "Search ...", className: "text-xs" }),
|
|
1817
|
+
/* @__PURE__ */ jsxs12(CommandList, { children: [
|
|
1818
|
+
/* @__PURE__ */ jsx17(CommandEmpty, { className: "flex flex-col items-center justify-center p-6", children: /* @__PURE__ */ jsx17("span", { className: "mt-2 text-xs text-zinc-400", children: "No data found" }) }),
|
|
1819
|
+
/* @__PURE__ */ jsx17(CommandGroup, { children: options?.map((item) => {
|
|
1820
|
+
const item_value = item[value_key];
|
|
1821
|
+
return /* @__PURE__ */ jsxs12(
|
|
1822
|
+
CommandItem,
|
|
1823
|
+
{
|
|
1824
|
+
value: item_value,
|
|
1825
|
+
onSelect: (e) => {
|
|
1826
|
+
props.onChange(e);
|
|
1827
|
+
setOpen(false);
|
|
1828
|
+
},
|
|
1829
|
+
keywords: [item.label],
|
|
1830
|
+
className: "cursor-pointer font-medium text-xs capitalize",
|
|
1831
|
+
children: [
|
|
1832
|
+
/* @__PURE__ */ jsx17(
|
|
1833
|
+
Check3,
|
|
1834
|
+
{
|
|
1835
|
+
className: cn(
|
|
1836
|
+
"h-3 w-3",
|
|
1837
|
+
props.value === item_value ? "opacity-100" : "opacity-0"
|
|
1838
|
+
)
|
|
1839
|
+
}
|
|
1840
|
+
),
|
|
1841
|
+
item.label
|
|
1842
|
+
]
|
|
1843
|
+
},
|
|
1844
|
+
item_value
|
|
1845
|
+
);
|
|
1846
|
+
}) })
|
|
1847
|
+
] })
|
|
1848
|
+
]
|
|
1849
|
+
}
|
|
1850
|
+
)
|
|
1851
|
+
}
|
|
1852
|
+
)
|
|
1853
|
+
] });
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
// src/components/drawer.tsx
|
|
1857
|
+
import * as React16 from "react";
|
|
1858
|
+
import { Drawer as DrawerPrimitive } from "vaul";
|
|
1859
|
+
import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1860
|
+
var Drawer = ({
|
|
1861
|
+
shouldScaleBackground = true,
|
|
1862
|
+
...props
|
|
1863
|
+
}) => /* @__PURE__ */ jsx18(
|
|
1864
|
+
DrawerPrimitive.Root,
|
|
1865
|
+
{
|
|
1866
|
+
shouldScaleBackground,
|
|
1867
|
+
...props
|
|
1868
|
+
}
|
|
1869
|
+
);
|
|
1870
|
+
Drawer.displayName = "Drawer";
|
|
1871
|
+
var DrawerTrigger = DrawerPrimitive.Trigger;
|
|
1872
|
+
var DrawerPortal = DrawerPrimitive.Portal;
|
|
1873
|
+
var DrawerClose = DrawerPrimitive.Close;
|
|
1874
|
+
var DrawerOverlay = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
|
|
1875
|
+
DrawerPrimitive.Overlay,
|
|
1876
|
+
{
|
|
1877
|
+
ref,
|
|
1878
|
+
className: cn("fixed inset-0 z-50 bg-black/80", className),
|
|
1879
|
+
...props
|
|
1880
|
+
}
|
|
1881
|
+
));
|
|
1882
|
+
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
|
|
1883
|
+
var DrawerContent = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(DrawerPortal, { children: [
|
|
1884
|
+
/* @__PURE__ */ jsx18(DrawerOverlay, {}),
|
|
1885
|
+
/* @__PURE__ */ jsxs13(
|
|
1886
|
+
DrawerPrimitive.Content,
|
|
1887
|
+
{
|
|
1888
|
+
ref,
|
|
1889
|
+
className: cn(
|
|
1890
|
+
"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
|
|
1891
|
+
className
|
|
1892
|
+
),
|
|
1893
|
+
...props,
|
|
1894
|
+
children: [
|
|
1895
|
+
/* @__PURE__ */ jsx18("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
|
|
1896
|
+
children
|
|
1897
|
+
]
|
|
1898
|
+
}
|
|
1899
|
+
)
|
|
1900
|
+
] }));
|
|
1901
|
+
DrawerContent.displayName = "DrawerContent";
|
|
1902
|
+
var DrawerHeader = ({
|
|
1903
|
+
className,
|
|
1904
|
+
...props
|
|
1905
|
+
}) => /* @__PURE__ */ jsx18(
|
|
1906
|
+
"div",
|
|
1907
|
+
{
|
|
1908
|
+
className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
|
|
1909
|
+
...props
|
|
1910
|
+
}
|
|
1911
|
+
);
|
|
1912
|
+
DrawerHeader.displayName = "DrawerHeader";
|
|
1913
|
+
var DrawerFooter = ({
|
|
1914
|
+
className,
|
|
1915
|
+
...props
|
|
1916
|
+
}) => /* @__PURE__ */ jsx18(
|
|
1917
|
+
"div",
|
|
1918
|
+
{
|
|
1919
|
+
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
1920
|
+
...props
|
|
1921
|
+
}
|
|
1922
|
+
);
|
|
1923
|
+
DrawerFooter.displayName = "DrawerFooter";
|
|
1924
|
+
var DrawerTitle = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
|
|
1925
|
+
DrawerPrimitive.Title,
|
|
1926
|
+
{
|
|
1927
|
+
ref,
|
|
1928
|
+
className: cn(
|
|
1929
|
+
"text-lg font-semibold leading-none tracking-tight",
|
|
1930
|
+
className
|
|
1931
|
+
),
|
|
1932
|
+
...props
|
|
1933
|
+
}
|
|
1934
|
+
));
|
|
1935
|
+
DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
|
|
1936
|
+
var DrawerDescription = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx18(
|
|
1937
|
+
DrawerPrimitive.Description,
|
|
1938
|
+
{
|
|
1939
|
+
ref,
|
|
1940
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
1941
|
+
...props
|
|
1942
|
+
}
|
|
1943
|
+
));
|
|
1944
|
+
DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
|
|
1945
|
+
|
|
1946
|
+
// src/components/dropdown-menu.tsx
|
|
1947
|
+
import * as React17 from "react";
|
|
1948
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1949
|
+
import { Check as Check4, ChevronRight as ChevronRight2, Circle } from "lucide-react";
|
|
1950
|
+
import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1951
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
1952
|
+
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
1953
|
+
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
1954
|
+
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
1955
|
+
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
1956
|
+
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
1957
|
+
var DropdownMenuSubTrigger = React17.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
1958
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
1959
|
+
{
|
|
1960
|
+
ref,
|
|
1961
|
+
className: cn(
|
|
1962
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent",
|
|
1963
|
+
inset && "pl-8",
|
|
1964
|
+
className
|
|
1965
|
+
),
|
|
1966
|
+
...props,
|
|
1967
|
+
children: [
|
|
1968
|
+
children,
|
|
1969
|
+
/* @__PURE__ */ jsx19(ChevronRight2, { className: "ml-auto h-4 w-4" })
|
|
1970
|
+
]
|
|
1971
|
+
}
|
|
1972
|
+
));
|
|
1973
|
+
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
1974
|
+
var DropdownMenuSubContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
1975
|
+
DropdownMenuPrimitive.SubContent,
|
|
1976
|
+
{
|
|
1977
|
+
ref,
|
|
1978
|
+
className: cn(
|
|
1979
|
+
"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[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",
|
|
1980
|
+
className
|
|
1981
|
+
),
|
|
1982
|
+
...props
|
|
1983
|
+
}
|
|
1984
|
+
));
|
|
1985
|
+
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
1986
|
+
var DropdownMenuContent = React17.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx19(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx19(
|
|
1987
|
+
DropdownMenuPrimitive.Content,
|
|
1988
|
+
{
|
|
1989
|
+
ref,
|
|
1990
|
+
sideOffset,
|
|
1991
|
+
className: cn(
|
|
1992
|
+
"z-50 min-w-32 overflow-hidden rounded-10 border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[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",
|
|
1993
|
+
className
|
|
1994
|
+
),
|
|
1995
|
+
...props
|
|
1996
|
+
}
|
|
1997
|
+
) }));
|
|
1998
|
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1999
|
+
var DropdownMenuItem = React17.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
2000
|
+
DropdownMenuPrimitive.Item,
|
|
2001
|
+
{
|
|
2002
|
+
ref,
|
|
2003
|
+
className: cn(
|
|
2004
|
+
"relative flex cursor-pointer select-none items-center rounded-[0.45rem] px-2 py-1 text-xs font-medium outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
2005
|
+
inset && "pl-8",
|
|
2006
|
+
className
|
|
2007
|
+
),
|
|
2008
|
+
...props
|
|
2009
|
+
}
|
|
2010
|
+
));
|
|
2011
|
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
2012
|
+
var DropdownMenuCheckboxItem = React17.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
2013
|
+
DropdownMenuPrimitive.CheckboxItem,
|
|
2014
|
+
{
|
|
2015
|
+
ref,
|
|
2016
|
+
className: cn(
|
|
2017
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
2018
|
+
className
|
|
2019
|
+
),
|
|
2020
|
+
checked,
|
|
2021
|
+
...props,
|
|
2022
|
+
children: [
|
|
2023
|
+
/* @__PURE__ */ jsx19("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx19(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx19(Check4, { className: "h-4 w-4" }) }) }),
|
|
2024
|
+
children
|
|
2025
|
+
]
|
|
2026
|
+
}
|
|
2027
|
+
));
|
|
2028
|
+
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
2029
|
+
var DropdownMenuRadioItem = React17.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
2030
|
+
DropdownMenuPrimitive.RadioItem,
|
|
2031
|
+
{
|
|
2032
|
+
ref,
|
|
2033
|
+
className: cn(
|
|
2034
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
2035
|
+
className
|
|
2036
|
+
),
|
|
2037
|
+
...props,
|
|
2038
|
+
children: [
|
|
2039
|
+
/* @__PURE__ */ jsx19("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx19(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx19(Circle, { className: "h-2 w-2 fill-current" }) }) }),
|
|
2040
|
+
children
|
|
2041
|
+
]
|
|
2042
|
+
}
|
|
2043
|
+
));
|
|
2044
|
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
2045
|
+
var DropdownMenuLabel = React17.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
2046
|
+
DropdownMenuPrimitive.Label,
|
|
2047
|
+
{
|
|
2048
|
+
ref,
|
|
2049
|
+
className: cn(
|
|
2050
|
+
"px-2 py-1.5 text-sm font-semibold",
|
|
2051
|
+
inset && "pl-8",
|
|
2052
|
+
className
|
|
2053
|
+
),
|
|
2054
|
+
...props
|
|
2055
|
+
}
|
|
2056
|
+
));
|
|
2057
|
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
2058
|
+
var DropdownMenuSeparator = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
2059
|
+
DropdownMenuPrimitive.Separator,
|
|
2060
|
+
{
|
|
2061
|
+
ref,
|
|
2062
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
2063
|
+
...props
|
|
2064
|
+
}
|
|
2065
|
+
));
|
|
2066
|
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
2067
|
+
var DropdownMenuShortcut = ({
|
|
2068
|
+
className,
|
|
2069
|
+
...props
|
|
2070
|
+
}) => {
|
|
2071
|
+
return /* @__PURE__ */ jsx19(
|
|
2072
|
+
"span",
|
|
2073
|
+
{
|
|
2074
|
+
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
2075
|
+
...props
|
|
2076
|
+
}
|
|
2077
|
+
);
|
|
2078
|
+
};
|
|
2079
|
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
2080
|
+
|
|
2081
|
+
// src/components/field.tsx
|
|
2082
|
+
import { Field as FieldPrimitive } from "@base-ui-components/react/field";
|
|
2083
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
2084
|
+
function Field({ className, ...props }) {
|
|
2085
|
+
return /* @__PURE__ */ jsx20(
|
|
2086
|
+
FieldPrimitive.Root,
|
|
2087
|
+
{
|
|
2088
|
+
className: cn("flex flex-col items-start gap-2", className),
|
|
2089
|
+
"data-slot": "field",
|
|
2090
|
+
...props
|
|
2091
|
+
}
|
|
2092
|
+
);
|
|
2093
|
+
}
|
|
2094
|
+
function FieldLabel({ className, ...props }) {
|
|
2095
|
+
return /* @__PURE__ */ jsx20(
|
|
2096
|
+
FieldPrimitive.Label,
|
|
2097
|
+
{
|
|
2098
|
+
className: cn("inline-flex items-center gap-2 text-sm/4", className),
|
|
2099
|
+
"data-slot": "field-label",
|
|
2100
|
+
...props
|
|
2101
|
+
}
|
|
2102
|
+
);
|
|
2103
|
+
}
|
|
2104
|
+
function FieldDescription({
|
|
2105
|
+
className,
|
|
2106
|
+
...props
|
|
2107
|
+
}) {
|
|
2108
|
+
return /* @__PURE__ */ jsx20(
|
|
2109
|
+
FieldPrimitive.Description,
|
|
2110
|
+
{
|
|
2111
|
+
className: cn("text-muted-foreground text-xs", className),
|
|
2112
|
+
"data-slot": "field-description",
|
|
2113
|
+
...props
|
|
2114
|
+
}
|
|
2115
|
+
);
|
|
2116
|
+
}
|
|
2117
|
+
function FieldError({ className, ...props }) {
|
|
2118
|
+
return /* @__PURE__ */ jsx20(
|
|
2119
|
+
FieldPrimitive.Error,
|
|
2120
|
+
{
|
|
2121
|
+
className: cn("text-destructive-foreground text-xs", className),
|
|
2122
|
+
"data-slot": "field-error",
|
|
2123
|
+
...props
|
|
2124
|
+
}
|
|
2125
|
+
);
|
|
2126
|
+
}
|
|
2127
|
+
var FieldControl = FieldPrimitive.Control;
|
|
2128
|
+
var FieldValidity = FieldPrimitive.Validity;
|
|
2129
|
+
|
|
2130
|
+
// src/components/form.tsx
|
|
2131
|
+
import * as React19 from "react";
|
|
2132
|
+
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
2133
|
+
import {
|
|
2134
|
+
Controller,
|
|
2135
|
+
FormProvider,
|
|
2136
|
+
useFormContext
|
|
2137
|
+
} from "react-hook-form";
|
|
2138
|
+
|
|
2139
|
+
// src/components/label.tsx
|
|
2140
|
+
import * as React18 from "react";
|
|
2141
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
2142
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
2143
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
2144
|
+
var labelVariants = cva3(
|
|
2145
|
+
"text-xs text-muted-foreground font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
2146
|
+
);
|
|
2147
|
+
var Label2 = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
|
|
2148
|
+
LabelPrimitive.Root,
|
|
2149
|
+
{
|
|
2150
|
+
ref,
|
|
2151
|
+
className: cn(labelVariants(), className),
|
|
2152
|
+
...props
|
|
2153
|
+
}
|
|
2154
|
+
));
|
|
2155
|
+
Label2.displayName = LabelPrimitive.Root.displayName;
|
|
2156
|
+
|
|
2157
|
+
// src/components/form.tsx
|
|
2158
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
2159
|
+
var Form = FormProvider;
|
|
2160
|
+
var FormFieldContext = React19.createContext(
|
|
2161
|
+
{}
|
|
2162
|
+
);
|
|
2163
|
+
var FormField = ({
|
|
2164
|
+
...props
|
|
2165
|
+
}) => {
|
|
2166
|
+
return /* @__PURE__ */ jsx22(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx22(Controller, { ...props }) });
|
|
2167
|
+
};
|
|
2168
|
+
var useFormField = () => {
|
|
2169
|
+
const fieldContext = React19.useContext(FormFieldContext);
|
|
2170
|
+
const itemContext = React19.useContext(FormItemContext);
|
|
2171
|
+
const { getFieldState, formState } = useFormContext();
|
|
2172
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
2173
|
+
if (!fieldContext) {
|
|
2174
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
2175
|
+
}
|
|
2176
|
+
const { id } = itemContext;
|
|
2177
|
+
return {
|
|
2178
|
+
id,
|
|
2179
|
+
name: fieldContext.name,
|
|
2180
|
+
formItemId: `${id}-form-item`,
|
|
2181
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
2182
|
+
formMessageId: `${id}-form-item-message`,
|
|
2183
|
+
...fieldState
|
|
2184
|
+
};
|
|
2185
|
+
};
|
|
2186
|
+
var FormItemContext = React19.createContext(
|
|
2187
|
+
{}
|
|
2188
|
+
);
|
|
2189
|
+
var FormItem = React19.forwardRef(({ className, ...props }, ref) => {
|
|
2190
|
+
const id = React19.useId();
|
|
2191
|
+
return /* @__PURE__ */ jsx22(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx22("div", { ref, className: cn("space-y-2", className), ...props }) });
|
|
2192
|
+
});
|
|
2193
|
+
FormItem.displayName = "FormItem";
|
|
2194
|
+
var FormLabel = React19.forwardRef(({ className, ...props }, ref) => {
|
|
2195
|
+
const { error, formItemId } = useFormField();
|
|
2196
|
+
return /* @__PURE__ */ jsx22(
|
|
2197
|
+
Label2,
|
|
2198
|
+
{
|
|
2199
|
+
ref,
|
|
2200
|
+
className: cn(error && "text-destructive", className),
|
|
2201
|
+
htmlFor: formItemId,
|
|
2202
|
+
...props
|
|
2203
|
+
}
|
|
2204
|
+
);
|
|
2205
|
+
});
|
|
2206
|
+
FormLabel.displayName = "FormLabel";
|
|
2207
|
+
var FormControl = React19.forwardRef(({ ...props }, ref) => {
|
|
2208
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
2209
|
+
return /* @__PURE__ */ jsx22(
|
|
2210
|
+
Slot3,
|
|
2211
|
+
{
|
|
2212
|
+
ref,
|
|
2213
|
+
id: formItemId,
|
|
2214
|
+
"aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
|
|
2215
|
+
"aria-invalid": !!error,
|
|
2216
|
+
...props
|
|
2217
|
+
}
|
|
2218
|
+
);
|
|
2219
|
+
});
|
|
2220
|
+
FormControl.displayName = "FormControl";
|
|
2221
|
+
var FormDescription = React19.forwardRef(({ className, ...props }, ref) => {
|
|
2222
|
+
const { formDescriptionId } = useFormField();
|
|
2223
|
+
return /* @__PURE__ */ jsx22(
|
|
2224
|
+
"p",
|
|
2225
|
+
{
|
|
2226
|
+
ref,
|
|
2227
|
+
id: formDescriptionId,
|
|
2228
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
2229
|
+
...props
|
|
2230
|
+
}
|
|
2231
|
+
);
|
|
2232
|
+
});
|
|
2233
|
+
FormDescription.displayName = "FormDescription";
|
|
2234
|
+
var FormMessage = React19.forwardRef(({ className, children, ...props }, ref) => {
|
|
2235
|
+
const { error, formMessageId } = useFormField();
|
|
2236
|
+
const body = error ? String(error?.message) : children;
|
|
2237
|
+
if (!body) {
|
|
2238
|
+
return null;
|
|
2239
|
+
}
|
|
2240
|
+
return /* @__PURE__ */ jsx22(
|
|
2241
|
+
"p",
|
|
2242
|
+
{
|
|
2243
|
+
ref,
|
|
2244
|
+
id: formMessageId,
|
|
2245
|
+
className: cn("text-sm font-medium text-destructive", className),
|
|
2246
|
+
...props,
|
|
2247
|
+
children: body
|
|
2248
|
+
}
|
|
2249
|
+
);
|
|
2250
|
+
});
|
|
2251
|
+
FormMessage.displayName = "FormMessage";
|
|
2252
|
+
|
|
2253
|
+
// src/components/image-card.tsx
|
|
2254
|
+
import React20 from "react";
|
|
2255
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
2256
|
+
var ImageCard = React20.memo(
|
|
2257
|
+
({ src = "", alt = "", onErrorImage, className }) => {
|
|
2258
|
+
return /* @__PURE__ */ jsx23(
|
|
2259
|
+
"img",
|
|
2260
|
+
{
|
|
2261
|
+
onError: (e) => {
|
|
2262
|
+
const target = e?.currentTarget;
|
|
2263
|
+
if (target) {
|
|
2264
|
+
target.src = onErrorImage || "";
|
|
2265
|
+
}
|
|
2266
|
+
},
|
|
2267
|
+
src,
|
|
2268
|
+
alt,
|
|
2269
|
+
className: cn(
|
|
2270
|
+
`h-8 w-8 rounded-10 bg-main-background object-cover object-center shadow-s
|
|
2271
|
+
overflow-hidden border-4 border-main-background shrink-0`,
|
|
2272
|
+
className
|
|
2273
|
+
)
|
|
2274
|
+
}
|
|
2275
|
+
);
|
|
2276
|
+
}
|
|
2277
|
+
);
|
|
2278
|
+
|
|
2279
|
+
// src/components/input-otp.tsx
|
|
2280
|
+
import * as React21 from "react";
|
|
2281
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
2282
|
+
import { Dot } from "lucide-react";
|
|
2283
|
+
import { jsx as jsx24, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2284
|
+
var InputOTP = React21.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
2285
|
+
OTPInput,
|
|
2286
|
+
{
|
|
2287
|
+
ref,
|
|
2288
|
+
containerClassName: cn(
|
|
2289
|
+
"flex items-center gap-2 has-disabled:opacity-50",
|
|
2290
|
+
containerClassName
|
|
2291
|
+
),
|
|
2292
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
2293
|
+
...props
|
|
2294
|
+
}
|
|
2295
|
+
));
|
|
2296
|
+
InputOTP.displayName = "InputOTP";
|
|
2297
|
+
var InputOTPGroup = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
2298
|
+
InputOTPGroup.displayName = "InputOTPGroup";
|
|
2299
|
+
var InputOTPSlot = React21.forwardRef(({ index, className, ...props }, ref) => {
|
|
2300
|
+
const inputOTPContext = React21.useContext(OTPInputContext);
|
|
2301
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
2302
|
+
return /* @__PURE__ */ jsxs15(
|
|
2303
|
+
"div",
|
|
2304
|
+
{
|
|
2305
|
+
ref,
|
|
2306
|
+
className: cn(
|
|
2307
|
+
"relative flex h-10 w-10 items-center justify-center bg-background border-y border-r border-input text-sm transition-all first:rounded-l-10 first:border-l last:rounded-r-10",
|
|
2308
|
+
isActive && "z-10 ring-2 ring-ring ring-offset-background",
|
|
2309
|
+
className
|
|
2310
|
+
),
|
|
2311
|
+
...props,
|
|
2312
|
+
children: [
|
|
2313
|
+
char,
|
|
2314
|
+
hasFakeCaret && /* @__PURE__ */ jsx24("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx24("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
|
|
2315
|
+
]
|
|
2316
|
+
}
|
|
2317
|
+
);
|
|
2318
|
+
});
|
|
2319
|
+
InputOTPSlot.displayName = "InputOTPSlot";
|
|
2320
|
+
var InputOTPSeparator = React21.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx24("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx24(Dot, {}) }));
|
|
2321
|
+
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
2322
|
+
|
|
2323
|
+
// src/components/modal-container.tsx
|
|
2324
|
+
import React22 from "react";
|
|
2325
|
+
import { motion } from "framer-motion";
|
|
2326
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
2327
|
+
var ModalContainer = React22.memo((props) => {
|
|
2328
|
+
return /* @__PURE__ */ jsx25(
|
|
2329
|
+
motion.div,
|
|
2330
|
+
{
|
|
2331
|
+
initial: { y: 10, opacity: 0 },
|
|
2332
|
+
exit: { y: 10, opacity: 0 },
|
|
2333
|
+
animate: { y: 0, opacity: 1 },
|
|
2334
|
+
className: "fixed inset-0 md:inset-2 md:rounded-xl md:border-4 border-white dark:border-zinc-700\n shadow-3xl bg-main-background overflow-hidden z-10",
|
|
2335
|
+
children: /* @__PURE__ */ jsx25("div", { className: "w-full h-full overflow-hidden overflow-y-auto flex justify-center", children: /* @__PURE__ */ jsx25("div", { className: "w-full max-w-[700px] h-fit shrink-0 overflow-hidden flex flex-col p-4", children: props.children }) })
|
|
2336
|
+
}
|
|
2337
|
+
);
|
|
2338
|
+
});
|
|
2339
|
+
|
|
2340
|
+
// src/components/multi-select.tsx
|
|
2341
|
+
import * as React23 from "react";
|
|
2342
|
+
import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2343
|
+
var MultiSelect = ({
|
|
2344
|
+
options: options2 = [],
|
|
2345
|
+
value = [],
|
|
2346
|
+
onValueChange,
|
|
2347
|
+
className,
|
|
2348
|
+
searchInputClassName,
|
|
2349
|
+
placeholder,
|
|
2350
|
+
maxCount,
|
|
2351
|
+
required
|
|
2352
|
+
}) => {
|
|
2353
|
+
const selectedOptions = React23.useMemo(() => {
|
|
2354
|
+
return value.map((v) => options2.find((opt) => opt.value === v)).filter(Boolean);
|
|
2355
|
+
}, [value, options2]);
|
|
2356
|
+
const handleValueChange = React23.useCallback(
|
|
2357
|
+
(newValue) => {
|
|
2358
|
+
if (Array.isArray(newValue)) {
|
|
2359
|
+
onValueChange?.(newValue.map((opt) => opt.value));
|
|
2360
|
+
} else if (newValue === null) {
|
|
2361
|
+
onValueChange?.([]);
|
|
2362
|
+
}
|
|
2363
|
+
},
|
|
2364
|
+
[onValueChange]
|
|
2365
|
+
);
|
|
2366
|
+
return /* @__PURE__ */ jsxs16(
|
|
2367
|
+
Combobox,
|
|
2368
|
+
{
|
|
2369
|
+
required,
|
|
2370
|
+
items: options2,
|
|
2371
|
+
multiple: true,
|
|
2372
|
+
value: selectedOptions,
|
|
2373
|
+
onValueChange: handleValueChange,
|
|
2374
|
+
disabled: maxCount === options2.length,
|
|
2375
|
+
children: [
|
|
2376
|
+
/* @__PURE__ */ jsx26(
|
|
2377
|
+
ComboboxChips,
|
|
2378
|
+
{
|
|
2379
|
+
className: cn(
|
|
2380
|
+
"min-h-10! before:hidden shadow-none rounded-10!",
|
|
2381
|
+
className
|
|
2382
|
+
),
|
|
2383
|
+
children: /* @__PURE__ */ jsx26(ComboboxValue, { children: (value2) => /* @__PURE__ */ jsxs16(React23.Fragment, { children: [
|
|
2384
|
+
value2?.map((item) => /* @__PURE__ */ jsx26(
|
|
2385
|
+
ComboboxChip,
|
|
2386
|
+
{
|
|
2387
|
+
"aria-label": item.value,
|
|
2388
|
+
className: "bg-background border border-border text-xs text-primary [&_svg]:text-muted-foreground/80\n [&_svg]:hover:text-destructive cursor-default font-medium pl-2 flex items-center rounded-lg",
|
|
2389
|
+
children: item.label
|
|
2390
|
+
},
|
|
2391
|
+
item.value
|
|
2392
|
+
)),
|
|
2393
|
+
/* @__PURE__ */ jsx26(
|
|
2394
|
+
ComboboxInput,
|
|
2395
|
+
{
|
|
2396
|
+
placeholder: value2.length > 0 ? void 0 : placeholder || "Select an item...",
|
|
2397
|
+
"aria-label": "Select an item",
|
|
2398
|
+
className: cn(
|
|
2399
|
+
"text-sm! placeholder:text-muted-foreground/50 rounded-10",
|
|
2400
|
+
searchInputClassName
|
|
2401
|
+
)
|
|
2402
|
+
}
|
|
2403
|
+
)
|
|
2404
|
+
] }) })
|
|
2405
|
+
}
|
|
2406
|
+
),
|
|
2407
|
+
/* @__PURE__ */ jsxs16(ComboboxPopup, { className: "rounded-xl", children: [
|
|
2408
|
+
/* @__PURE__ */ jsxs16(ComboboxEmpty, { className: "w-full center-flex flex-col", children: [
|
|
2409
|
+
/* @__PURE__ */ jsx26(
|
|
2410
|
+
"div",
|
|
2411
|
+
{
|
|
2412
|
+
style: { borderRadius: "30% 70% 70% 30% / 30% 38% 62% 70%" },
|
|
2413
|
+
className: "mt-8 size-24 center-flex bg-accent/50 rounded-blob",
|
|
2414
|
+
children: /* @__PURE__ */ jsx26(
|
|
2415
|
+
"img",
|
|
2416
|
+
{
|
|
2417
|
+
src: "/images/no-direction.png",
|
|
2418
|
+
alt: "no-results",
|
|
2419
|
+
className: "size-16 object-cover object-center"
|
|
2420
|
+
}
|
|
2421
|
+
)
|
|
2422
|
+
}
|
|
2423
|
+
),
|
|
2424
|
+
/* @__PURE__ */ jsx26("h1", { className: "mt-4 text-sm text-foreground font-semibold", children: "Nothing Found" }),
|
|
2425
|
+
/* @__PURE__ */ jsx26("p", { className: "mt-1 mb-8 text-sm text-center text-muted-foreground max-w-62", children: "We couldn't find anything matching your search" })
|
|
2426
|
+
] }),
|
|
2427
|
+
/* @__PURE__ */ jsx26(ComboboxList, { children: (item) => /* @__PURE__ */ jsx26(
|
|
2428
|
+
ComboboxItem,
|
|
2429
|
+
{
|
|
2430
|
+
value: item,
|
|
2431
|
+
className: "pe-0! flex data-selected:hidden",
|
|
2432
|
+
children: item.label
|
|
2433
|
+
},
|
|
2434
|
+
item.value
|
|
2435
|
+
) })
|
|
2436
|
+
] })
|
|
2437
|
+
]
|
|
2438
|
+
}
|
|
2439
|
+
);
|
|
2440
|
+
};
|
|
2441
|
+
MultiSelect.displayName = "MultiSelect";
|
|
2442
|
+
|
|
2443
|
+
// src/components/password-input.tsx
|
|
2444
|
+
import { Check as Check5, Eye, EyeOff, X } from "lucide-react";
|
|
2445
|
+
import React24 from "react";
|
|
2446
|
+
import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2447
|
+
var PasswordInput = React24.forwardRef(
|
|
2448
|
+
({ className, onSubmit, showStrength, ...props }, ref) => {
|
|
2449
|
+
const [isVisible, setIsVisible] = React24.useState(false);
|
|
2450
|
+
const toggleVisibility = () => setIsVisible((prevState) => !prevState);
|
|
2451
|
+
const checkStrength = (pass) => {
|
|
2452
|
+
const requirements = [
|
|
2453
|
+
{ regex: /.{8,}/, text: "At least 8 characters" },
|
|
2454
|
+
{ regex: /[0-9]/, text: "At least 1 number" },
|
|
2455
|
+
{ regex: /[a-z]/, text: "At least 1 lowercase letter" },
|
|
2456
|
+
{ regex: /[A-Z]/, text: "At least 1 uppercase letter" }
|
|
2457
|
+
];
|
|
2458
|
+
return requirements.map((req) => ({
|
|
2459
|
+
met: req.regex.test(pass),
|
|
2460
|
+
text: req.text
|
|
2461
|
+
}));
|
|
2462
|
+
};
|
|
2463
|
+
const strength = checkStrength(props.value?.toString() || "");
|
|
2464
|
+
const strengthScore = React24.useMemo(() => {
|
|
2465
|
+
return strength.filter((req) => req.met).length;
|
|
2466
|
+
}, [strength]);
|
|
2467
|
+
const getStrengthColor = (score) => {
|
|
2468
|
+
if (score === 0) return "bg-border";
|
|
2469
|
+
if (score <= 1) return "bg-red-500";
|
|
2470
|
+
if (score <= 2) return "bg-orange-500";
|
|
2471
|
+
if (score === 3) return "bg-amber-500";
|
|
2472
|
+
return "bg-emerald-500";
|
|
2473
|
+
};
|
|
2474
|
+
const getStrengthText = (score) => {
|
|
2475
|
+
if (score === 0) return "Enter a password";
|
|
2476
|
+
if (score <= 2) return "Weak password";
|
|
2477
|
+
if (score === 3) return "Medium password";
|
|
2478
|
+
return "Strong password";
|
|
2479
|
+
};
|
|
2480
|
+
const handleSubmit = (event) => {
|
|
2481
|
+
if (showStrength && strengthScore < 4) {
|
|
2482
|
+
event.preventDefault();
|
|
2483
|
+
return;
|
|
2484
|
+
}
|
|
2485
|
+
onSubmit?.(event);
|
|
2486
|
+
};
|
|
2487
|
+
return /* @__PURE__ */ jsxs17("div", { className: "relative w-full", children: [
|
|
2488
|
+
/* @__PURE__ */ jsxs17("div", { className: "relative w-full", children: [
|
|
2489
|
+
/* @__PURE__ */ jsx27(
|
|
2490
|
+
Input,
|
|
2491
|
+
{
|
|
2492
|
+
className: cn("pe-9", className),
|
|
2493
|
+
...props,
|
|
2494
|
+
ref,
|
|
2495
|
+
type: isVisible ? "text" : "password",
|
|
2496
|
+
"aria-invalid": showStrength ? strengthScore < 4 : false,
|
|
2497
|
+
onSubmit: handleSubmit
|
|
2498
|
+
}
|
|
2499
|
+
),
|
|
2500
|
+
showStrength && /* @__PURE__ */ jsx27(
|
|
2501
|
+
"input",
|
|
2502
|
+
{
|
|
2503
|
+
title: "password",
|
|
2504
|
+
type: "password",
|
|
2505
|
+
className: "scale-0 absolute",
|
|
2506
|
+
required: true,
|
|
2507
|
+
value: showStrength ? strengthScore >= 4 ? props?.value : "" : props.value
|
|
2508
|
+
}
|
|
2509
|
+
),
|
|
2510
|
+
/* @__PURE__ */ jsx27(
|
|
2511
|
+
"button",
|
|
2512
|
+
{
|
|
2513
|
+
className: "absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-lg text-muted-foreground/80 outline-offset-2 transition-colors hover:text-foreground focus:z-10 focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-ring/70 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
2514
|
+
type: "button",
|
|
2515
|
+
onClick: toggleVisibility,
|
|
2516
|
+
"aria-label": isVisible ? "Hide password" : "Show password",
|
|
2517
|
+
"aria-pressed": isVisible,
|
|
2518
|
+
"aria-controls": "password",
|
|
2519
|
+
children: isVisible ? /* @__PURE__ */ jsx27(EyeOff, { size: 16, strokeWidth: 2, "aria-hidden": "true" }) : /* @__PURE__ */ jsx27(Eye, { size: 16, strokeWidth: 2, "aria-hidden": "true" })
|
|
2520
|
+
}
|
|
2521
|
+
)
|
|
2522
|
+
] }),
|
|
2523
|
+
showStrength && /* @__PURE__ */ jsxs17(React24.Fragment, { children: [
|
|
2524
|
+
/* @__PURE__ */ jsx27(
|
|
2525
|
+
"div",
|
|
2526
|
+
{
|
|
2527
|
+
className: "my-3 h-1 w-full overflow-hidden rounded-full bg-border",
|
|
2528
|
+
role: "progressbar",
|
|
2529
|
+
"aria-valuenow": strengthScore,
|
|
2530
|
+
"aria-valuemin": 0,
|
|
2531
|
+
"aria-valuemax": 4,
|
|
2532
|
+
"aria-label": "Password strength",
|
|
2533
|
+
children: /* @__PURE__ */ jsx27(
|
|
2534
|
+
"div",
|
|
2535
|
+
{
|
|
2536
|
+
className: `h-full ${getStrengthColor(
|
|
2537
|
+
strengthScore
|
|
2538
|
+
)} transition-all duration-500 ease-out`,
|
|
2539
|
+
style: { width: `${strengthScore / 4 * 100}%` }
|
|
2540
|
+
}
|
|
2541
|
+
)
|
|
2542
|
+
}
|
|
2543
|
+
),
|
|
2544
|
+
/* @__PURE__ */ jsxs17(
|
|
2545
|
+
"p",
|
|
2546
|
+
{
|
|
2547
|
+
id: "password-strength",
|
|
2548
|
+
className: "mb-2 text-xs font-medium text-zinc-600",
|
|
2549
|
+
children: [
|
|
2550
|
+
getStrengthText(strengthScore),
|
|
2551
|
+
". Must contain:"
|
|
2552
|
+
]
|
|
2553
|
+
}
|
|
2554
|
+
),
|
|
2555
|
+
/* @__PURE__ */ jsx27("ul", { className: "space-y-1.5", "aria-label": "Password requirements", children: strength.map((req, index) => /* @__PURE__ */ jsxs17("li", { className: "flex items-center gap-2", children: [
|
|
2556
|
+
req.met ? /* @__PURE__ */ jsx27(
|
|
2557
|
+
Check5,
|
|
2558
|
+
{
|
|
2559
|
+
size: 16,
|
|
2560
|
+
className: "text-emerald-500",
|
|
2561
|
+
"aria-hidden": "true"
|
|
2562
|
+
}
|
|
2563
|
+
) : /* @__PURE__ */ jsx27(
|
|
2564
|
+
X,
|
|
2565
|
+
{
|
|
2566
|
+
size: 16,
|
|
2567
|
+
className: "text-muted-foreground/80",
|
|
2568
|
+
"aria-hidden": "true"
|
|
2569
|
+
}
|
|
2570
|
+
),
|
|
2571
|
+
/* @__PURE__ */ jsxs17(
|
|
2572
|
+
"span",
|
|
2573
|
+
{
|
|
2574
|
+
className: `text-xs ${req.met ? "text-emerald-600" : "text-muted-foreground"}`,
|
|
2575
|
+
children: [
|
|
2576
|
+
req.text,
|
|
2577
|
+
/* @__PURE__ */ jsx27("span", { className: "sr-only", children: req.met ? " - Requirement met" : " - Requirement not met" })
|
|
2578
|
+
]
|
|
2579
|
+
}
|
|
2580
|
+
)
|
|
2581
|
+
] }, index)) })
|
|
2582
|
+
] })
|
|
2583
|
+
] });
|
|
2584
|
+
}
|
|
2585
|
+
);
|
|
2586
|
+
PasswordInput.displayName = "PasswordInput";
|
|
2587
|
+
var password_input_default = React24.memo(PasswordInput);
|
|
2588
|
+
|
|
2589
|
+
// src/components/phone-number-input.tsx
|
|
2590
|
+
import { ChevronDown as ChevronDown2, Phone } from "lucide-react";
|
|
2591
|
+
import { forwardRef as forwardRef16, useState as useState3 } from "react";
|
|
2592
|
+
import * as RPNInput from "react-phone-number-input";
|
|
2593
|
+
import flags from "react-phone-number-input/flags";
|
|
2594
|
+
import { isValidPhoneNumber } from "react-phone-number-input";
|
|
2595
|
+
import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2596
|
+
var PhoneInput = forwardRef16(
|
|
2597
|
+
({ className, ...props }, ref) => {
|
|
2598
|
+
return /* @__PURE__ */ jsx28(
|
|
2599
|
+
Input,
|
|
2600
|
+
{
|
|
2601
|
+
className: cn(
|
|
2602
|
+
"-ms-px rounded-s-none shadow-none focus-visible:z-10 ring-0! border!",
|
|
2603
|
+
className
|
|
2604
|
+
),
|
|
2605
|
+
ref,
|
|
2606
|
+
...props
|
|
2607
|
+
}
|
|
2608
|
+
);
|
|
2609
|
+
}
|
|
2610
|
+
);
|
|
2611
|
+
PhoneInput.displayName = "PhoneInput";
|
|
2612
|
+
|
|
2613
|
+
// src/components/price-input.tsx
|
|
2614
|
+
import React26 from "react";
|
|
2615
|
+
import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2616
|
+
var PriceInput = React26.forwardRef(({ currency, ...props }, ref) => {
|
|
2617
|
+
return /* @__PURE__ */ jsxs19(
|
|
2618
|
+
"div",
|
|
2619
|
+
{
|
|
2620
|
+
className: cn(
|
|
2621
|
+
"relative h-fit flex overflow-hidden p-0",
|
|
2622
|
+
props.containerClassname
|
|
2623
|
+
),
|
|
2624
|
+
children: [
|
|
2625
|
+
!props.hide_currency_symbol && /* @__PURE__ */ jsx29("div", { className: "absolute inset-y-0.5 flex items-center pl-4 pr-2", children: /* @__PURE__ */ jsx29("span", { className: "[fontSize:inherit] font-medium text-muted-foreground/50", children: currency?.symbol }) }),
|
|
2626
|
+
/* @__PURE__ */ jsx29(
|
|
2627
|
+
Input,
|
|
2628
|
+
{
|
|
2629
|
+
ref,
|
|
2630
|
+
placeholder: "0.00",
|
|
2631
|
+
type: "text",
|
|
2632
|
+
...props,
|
|
2633
|
+
className: cn("px-10 shadow-none m-0! py-0", props.className)
|
|
2634
|
+
}
|
|
2635
|
+
),
|
|
2636
|
+
!props.hide_currency_code && /* @__PURE__ */ jsx29("div", { className: "absolute inset-y-0.5 right-0 flex items-center pl-3 pr-4", children: /* @__PURE__ */ jsx29("span", { className: "[fontSize:inherit] font-medium text-muted-foreground/50", children: currency?.code }) })
|
|
2637
|
+
]
|
|
2638
|
+
}
|
|
2639
|
+
);
|
|
2640
|
+
});
|
|
2641
|
+
PriceInput.displayName = "PriceInput";
|
|
2642
|
+
|
|
2643
|
+
// src/components/progress.tsx
|
|
2644
|
+
import * as React27 from "react";
|
|
2645
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
2646
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2647
|
+
var Progress = React27.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx30(
|
|
2648
|
+
ProgressPrimitive.Root,
|
|
2649
|
+
{
|
|
2650
|
+
ref,
|
|
2651
|
+
className: cn(
|
|
2652
|
+
"relative h-4 w-full overflow-hidden rounded-full bg-secondary",
|
|
2653
|
+
className
|
|
2654
|
+
),
|
|
2655
|
+
...props,
|
|
2656
|
+
children: /* @__PURE__ */ jsx30(
|
|
2657
|
+
ProgressPrimitive.Indicator,
|
|
2658
|
+
{
|
|
2659
|
+
className: "h-full w-full flex-1 bg-primary transition-all",
|
|
2660
|
+
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
2661
|
+
}
|
|
2662
|
+
)
|
|
2663
|
+
}
|
|
2664
|
+
));
|
|
2665
|
+
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
2666
|
+
|
|
2667
|
+
// src/components/select.tsx
|
|
2668
|
+
import * as React28 from "react";
|
|
2669
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
2670
|
+
import { Check as Check6, ChevronDown as ChevronDown3, ChevronUp } from "lucide-react";
|
|
2671
|
+
import { jsx as jsx31, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2672
|
+
var Select = SelectPrimitive.Root;
|
|
2673
|
+
var SelectGroup = SelectPrimitive.Group;
|
|
2674
|
+
var SelectValue = SelectPrimitive.Value;
|
|
2675
|
+
var SelectTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(
|
|
2676
|
+
SelectPrimitive.Trigger,
|
|
2677
|
+
{
|
|
2678
|
+
ref,
|
|
2679
|
+
className: cn(
|
|
2680
|
+
"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-xs ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
2681
|
+
className
|
|
2682
|
+
),
|
|
2683
|
+
...props,
|
|
2684
|
+
children: [
|
|
2685
|
+
children,
|
|
2686
|
+
/* @__PURE__ */ jsx31(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx31(ChevronDown3, { className: "h-4 w-4 opacity-50" }) })
|
|
2687
|
+
]
|
|
2688
|
+
}
|
|
2689
|
+
));
|
|
2690
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
2691
|
+
var SelectScrollUpButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
2692
|
+
SelectPrimitive.ScrollUpButton,
|
|
2693
|
+
{
|
|
2694
|
+
ref,
|
|
2695
|
+
className: cn(
|
|
2696
|
+
"flex cursor-default items-center justify-center py-1",
|
|
2697
|
+
className
|
|
2698
|
+
),
|
|
2699
|
+
...props,
|
|
2700
|
+
children: /* @__PURE__ */ jsx31(ChevronUp, { className: "h-4 w-4" })
|
|
2701
|
+
}
|
|
2702
|
+
));
|
|
2703
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
2704
|
+
var SelectScrollDownButton = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
2705
|
+
SelectPrimitive.ScrollDownButton,
|
|
2706
|
+
{
|
|
2707
|
+
ref,
|
|
2708
|
+
className: cn(
|
|
2709
|
+
"flex cursor-default items-center justify-center py-1",
|
|
2710
|
+
className
|
|
2711
|
+
),
|
|
2712
|
+
...props,
|
|
2713
|
+
children: /* @__PURE__ */ jsx31(ChevronDown3, { className: "h-4 w-4" })
|
|
2714
|
+
}
|
|
2715
|
+
));
|
|
2716
|
+
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
2717
|
+
var SelectContent = React28.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx31(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs20(
|
|
2718
|
+
SelectPrimitive.Content,
|
|
2719
|
+
{
|
|
2720
|
+
ref,
|
|
2721
|
+
className: cn(
|
|
2722
|
+
"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[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",
|
|
2723
|
+
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
2724
|
+
className
|
|
2725
|
+
),
|
|
2726
|
+
position,
|
|
2727
|
+
...props,
|
|
2728
|
+
children: [
|
|
2729
|
+
/* @__PURE__ */ jsx31(SelectScrollUpButton, {}),
|
|
2730
|
+
/* @__PURE__ */ jsx31(
|
|
2731
|
+
SelectPrimitive.Viewport,
|
|
2732
|
+
{
|
|
2733
|
+
className: cn(
|
|
2734
|
+
"p-1",
|
|
2735
|
+
position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"
|
|
2736
|
+
),
|
|
2737
|
+
children
|
|
2738
|
+
}
|
|
2739
|
+
),
|
|
2740
|
+
/* @__PURE__ */ jsx31(SelectScrollDownButton, {})
|
|
2741
|
+
]
|
|
2742
|
+
}
|
|
2743
|
+
) }));
|
|
2744
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
2745
|
+
var SelectLabel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
2746
|
+
SelectPrimitive.Label,
|
|
2747
|
+
{
|
|
2748
|
+
ref,
|
|
2749
|
+
className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
|
|
2750
|
+
...props
|
|
2751
|
+
}
|
|
2752
|
+
));
|
|
2753
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
2754
|
+
var SelectItem = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs20(
|
|
2755
|
+
SelectPrimitive.Item,
|
|
2756
|
+
{
|
|
2757
|
+
ref,
|
|
2758
|
+
className: cn(
|
|
2759
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-xs outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
2760
|
+
className
|
|
2761
|
+
),
|
|
2762
|
+
...props,
|
|
2763
|
+
children: [
|
|
2764
|
+
/* @__PURE__ */ jsx31("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx31(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Check6, { className: "h-4 w-4" }) }) }),
|
|
2765
|
+
/* @__PURE__ */ jsx31(SelectPrimitive.ItemText, { children })
|
|
2766
|
+
]
|
|
2767
|
+
}
|
|
2768
|
+
));
|
|
2769
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
2770
|
+
var SelectSeparator = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
2771
|
+
SelectPrimitive.Separator,
|
|
2772
|
+
{
|
|
2773
|
+
ref,
|
|
2774
|
+
className: cn("-mx-1 my-1 h-px bg-muted", className),
|
|
2775
|
+
...props
|
|
2776
|
+
}
|
|
2777
|
+
));
|
|
2778
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
2779
|
+
|
|
2780
|
+
// src/components/separator.tsx
|
|
2781
|
+
import * as React29 from "react";
|
|
2782
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
2783
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
2784
|
+
var Separator3 = React29.forwardRef(
|
|
2785
|
+
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
2786
|
+
SeparatorPrimitive.Root,
|
|
2787
|
+
{
|
|
2788
|
+
ref,
|
|
2789
|
+
decorative,
|
|
2790
|
+
orientation,
|
|
2791
|
+
className: cn(
|
|
2792
|
+
"shrink-0 bg-border",
|
|
2793
|
+
orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
|
|
2794
|
+
className
|
|
2795
|
+
),
|
|
2796
|
+
...props
|
|
2797
|
+
}
|
|
2798
|
+
)
|
|
2799
|
+
);
|
|
2800
|
+
Separator3.displayName = SeparatorPrimitive.Root.displayName;
|
|
2801
|
+
|
|
2802
|
+
// src/components/sheet.tsx
|
|
2803
|
+
import * as React30 from "react";
|
|
2804
|
+
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
2805
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
2806
|
+
import { X as X2 } from "lucide-react";
|
|
2807
|
+
import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2808
|
+
var Sheet = SheetPrimitive.Root;
|
|
2809
|
+
var SheetTrigger = SheetPrimitive.Trigger;
|
|
2810
|
+
var SheetClose = SheetPrimitive.Close;
|
|
2811
|
+
var SheetPortal = SheetPrimitive.Portal;
|
|
2812
|
+
var SheetOverlay = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
2813
|
+
SheetPrimitive.Overlay,
|
|
2814
|
+
{
|
|
2815
|
+
className: cn(
|
|
2816
|
+
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2817
|
+
className
|
|
2818
|
+
),
|
|
2819
|
+
...props,
|
|
2820
|
+
ref
|
|
2821
|
+
}
|
|
2822
|
+
));
|
|
2823
|
+
SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
|
|
2824
|
+
var sheetVariants = cva4(
|
|
2825
|
+
"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
2826
|
+
{
|
|
2827
|
+
variants: {
|
|
2828
|
+
side: {
|
|
2829
|
+
top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
2830
|
+
bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
2831
|
+
left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
|
|
2832
|
+
right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
|
|
2833
|
+
}
|
|
2834
|
+
},
|
|
2835
|
+
defaultVariants: {
|
|
2836
|
+
side: "right"
|
|
2837
|
+
}
|
|
2838
|
+
}
|
|
2839
|
+
);
|
|
2840
|
+
var SheetContent = React30.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs21(SheetPortal, { children: [
|
|
2841
|
+
/* @__PURE__ */ jsx33(SheetOverlay, {}),
|
|
2842
|
+
/* @__PURE__ */ jsxs21(
|
|
2843
|
+
SheetPrimitive.Content,
|
|
2844
|
+
{
|
|
2845
|
+
ref,
|
|
2846
|
+
className: cn(sheetVariants({ side }), className),
|
|
2847
|
+
...props,
|
|
2848
|
+
children: [
|
|
2849
|
+
children,
|
|
2850
|
+
/* @__PURE__ */ jsxs21(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
|
|
2851
|
+
/* @__PURE__ */ jsx33(X2, { className: "h-4 w-4" }),
|
|
2852
|
+
/* @__PURE__ */ jsx33("span", { className: "sr-only", children: "Close" })
|
|
2853
|
+
] })
|
|
2854
|
+
]
|
|
2855
|
+
}
|
|
2856
|
+
)
|
|
2857
|
+
] }));
|
|
2858
|
+
SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
2859
|
+
var SheetHeader = ({
|
|
2860
|
+
className,
|
|
2861
|
+
...props
|
|
2862
|
+
}) => /* @__PURE__ */ jsx33(
|
|
2863
|
+
"div",
|
|
2864
|
+
{
|
|
2865
|
+
className: cn(
|
|
2866
|
+
"flex flex-col space-y-2 text-center sm:text-left",
|
|
2867
|
+
className
|
|
2868
|
+
),
|
|
2869
|
+
...props
|
|
2870
|
+
}
|
|
2871
|
+
);
|
|
2872
|
+
SheetHeader.displayName = "SheetHeader";
|
|
2873
|
+
var SheetFooter = ({
|
|
2874
|
+
className,
|
|
2875
|
+
...props
|
|
2876
|
+
}) => /* @__PURE__ */ jsx33(
|
|
2877
|
+
"div",
|
|
2878
|
+
{
|
|
2879
|
+
className: cn(
|
|
2880
|
+
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
|
|
2881
|
+
className
|
|
2882
|
+
),
|
|
2883
|
+
...props
|
|
2884
|
+
}
|
|
2885
|
+
);
|
|
2886
|
+
SheetFooter.displayName = "SheetFooter";
|
|
2887
|
+
var SheetTitle = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
2888
|
+
SheetPrimitive.Title,
|
|
2889
|
+
{
|
|
2890
|
+
ref,
|
|
2891
|
+
className: cn("text-lg font-semibold text-foreground", className),
|
|
2892
|
+
...props
|
|
2893
|
+
}
|
|
2894
|
+
));
|
|
2895
|
+
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
2896
|
+
var SheetDescription = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
|
|
2897
|
+
SheetPrimitive.Description,
|
|
2898
|
+
{
|
|
2899
|
+
ref,
|
|
2900
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
2901
|
+
...props
|
|
2902
|
+
}
|
|
2903
|
+
));
|
|
2904
|
+
SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
2905
|
+
|
|
2906
|
+
// src/components/skeleton.tsx
|
|
2907
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
2908
|
+
function Skeleton({
|
|
2909
|
+
className,
|
|
2910
|
+
...props
|
|
2911
|
+
}) {
|
|
2912
|
+
return /* @__PURE__ */ jsx34(
|
|
2913
|
+
"div",
|
|
2914
|
+
{
|
|
2915
|
+
className: cn("animate-pulse rounded-lg bg-muted", className),
|
|
2916
|
+
...props
|
|
2917
|
+
}
|
|
2918
|
+
);
|
|
2919
|
+
}
|
|
2920
|
+
|
|
2921
|
+
// src/components/status-indicator.tsx
|
|
2922
|
+
import { mergeProps as mergeProps3 } from "@base-ui-components/react/merge-props";
|
|
2923
|
+
import { useRender as useRender3 } from "@base-ui-components/react/use-render";
|
|
2924
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
2925
|
+
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2926
|
+
var statusIndicatorVariants = cva5(
|
|
2927
|
+
"relative inline-flex size-2.5 shrink-0",
|
|
2928
|
+
{
|
|
2929
|
+
defaultVariants: {
|
|
2930
|
+
variant: "active"
|
|
2931
|
+
},
|
|
2932
|
+
variants: {
|
|
2933
|
+
variant: {
|
|
2934
|
+
active: "[&>span:first-child]:bg-teal-500 [&>span:last-child]:bg-teal-600",
|
|
2935
|
+
degraded: "[&>span:first-child]:bg-yellow-500 [&>span:last-child]:bg-yellow-600",
|
|
2936
|
+
critical: "[&>span:first-child]:bg-red-500 [&>span:last-child]:bg-red-600",
|
|
2937
|
+
neutral: "[&>span:first-child]:bg-muted-foreground/80 [&>span:last-child]:bg-muted-foreground"
|
|
2938
|
+
}
|
|
2939
|
+
}
|
|
2940
|
+
}
|
|
2941
|
+
);
|
|
2942
|
+
function StatusIndicator({
|
|
2943
|
+
className,
|
|
2944
|
+
variant,
|
|
2945
|
+
animated = true,
|
|
2946
|
+
render,
|
|
2947
|
+
...props
|
|
2948
|
+
}) {
|
|
2949
|
+
const defaultProps = {
|
|
2950
|
+
className: cn(statusIndicatorVariants({ className, variant })),
|
|
2951
|
+
"data-slot": "status-indicator"
|
|
2952
|
+
};
|
|
2953
|
+
return useRender3({
|
|
2954
|
+
defaultTagName: "span",
|
|
2955
|
+
props: mergeProps3(defaultProps, props),
|
|
2956
|
+
render: render || /* @__PURE__ */ jsxs22("span", { ...defaultProps, children: [
|
|
2957
|
+
/* @__PURE__ */ jsx35(
|
|
2958
|
+
"span",
|
|
2959
|
+
{
|
|
2960
|
+
className: cn(
|
|
2961
|
+
"absolute inline-flex h-full w-full rounded-full opacity-75",
|
|
2962
|
+
animated && "animate-ping"
|
|
2963
|
+
)
|
|
2964
|
+
}
|
|
2965
|
+
),
|
|
2966
|
+
/* @__PURE__ */ jsx35("span", { className: "relative inline-flex rounded-full size-2.5" })
|
|
2967
|
+
] })
|
|
2968
|
+
});
|
|
2969
|
+
}
|
|
2970
|
+
|
|
2971
|
+
// src/components/switch.tsx
|
|
2972
|
+
import { Switch as SwitchPrimitive } from "@base-ui-components/react/switch";
|
|
2973
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
2974
|
+
function Switch({ className, ...props }) {
|
|
2975
|
+
return /* @__PURE__ */ jsx36(
|
|
2976
|
+
SwitchPrimitive.Root,
|
|
2977
|
+
{
|
|
2978
|
+
className: cn(
|
|
2979
|
+
"cursor-pointer group/switch inset-shadow-[0_1px_--theme(--color-black/4%)] inline-flex h-4.5 w-7.5 shrink-0 items-center rounded-full p-px outline-none transition-all focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-64 data-checked:bg-primary data-unchecked:bg-input",
|
|
2980
|
+
className
|
|
2981
|
+
),
|
|
2982
|
+
"data-slot": "switch",
|
|
2983
|
+
...props,
|
|
2984
|
+
children: /* @__PURE__ */ jsx36(
|
|
2985
|
+
SwitchPrimitive.Thumb,
|
|
2986
|
+
{
|
|
2987
|
+
className: cn(
|
|
2988
|
+
"pointer-events-none block size-4 rounded-full bg-background shadow-sm transition-[translate,width] group-active/switch:w-4.5 data-checked:translate-x-3 data-unchecked:translate-x-0 data-checked:group-active/switch:translate-x-2.5"
|
|
2989
|
+
),
|
|
2990
|
+
"data-slot": "switch-thumb"
|
|
2991
|
+
}
|
|
2992
|
+
)
|
|
2993
|
+
}
|
|
2994
|
+
);
|
|
2995
|
+
}
|
|
2996
|
+
|
|
2997
|
+
// src/components/table.tsx
|
|
2998
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
2999
|
+
function Table({ className, ...props }) {
|
|
3000
|
+
return /* @__PURE__ */ jsx37(
|
|
3001
|
+
"div",
|
|
3002
|
+
{
|
|
3003
|
+
className: "relative w-full overflow-x-auto",
|
|
3004
|
+
"data-slot": "table-container",
|
|
3005
|
+
children: /* @__PURE__ */ jsx37(
|
|
3006
|
+
"table",
|
|
3007
|
+
{
|
|
3008
|
+
className: cn(
|
|
3009
|
+
"w-full caption-bottom in-data-[slot=frame]:border-separate in-data-[slot=frame]:border-spacing-0 text-sm",
|
|
3010
|
+
className
|
|
3011
|
+
),
|
|
3012
|
+
"data-slot": "table",
|
|
3013
|
+
...props
|
|
3014
|
+
}
|
|
3015
|
+
)
|
|
3016
|
+
}
|
|
3017
|
+
);
|
|
3018
|
+
}
|
|
3019
|
+
function TableHeader({ className, ...props }) {
|
|
3020
|
+
return /* @__PURE__ */ jsx37(
|
|
3021
|
+
"thead",
|
|
3022
|
+
{
|
|
3023
|
+
className: cn(
|
|
3024
|
+
"[&_tr]:border-b in-data-[slot=frame]:**:[th]:h-9 in-data-[slot=frame]:*:[tr]:border-none in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
|
|
3025
|
+
className
|
|
3026
|
+
),
|
|
3027
|
+
"data-slot": "table-header",
|
|
3028
|
+
...props
|
|
3029
|
+
}
|
|
3030
|
+
);
|
|
3031
|
+
}
|
|
3032
|
+
function TableBody({ className, ...props }) {
|
|
3033
|
+
return /* @__PURE__ */ jsx37(
|
|
3034
|
+
"tbody",
|
|
3035
|
+
{
|
|
3036
|
+
className: cn(
|
|
3037
|
+
"relative in-data-[slot=frame]:rounded-xl in-data-[slot=frame]:shadow-xs before:pointer-events-none before:absolute before:inset-px not-in-data-[slot=frame]:before:hidden before:rounded-[calc(var(--radius-xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:bg-clip-border dark:before:shadow-[0_-1px_--theme(--color-white/8%)] [&_tr:last-child]:border-0 in-data-[slot=frame]:*:[tr]:border-0 in-data-[slot=frame]:*:[tr]:*:[td]:border-b in-data-[slot=frame]:*:[tr]:*:[td]:bg-card in-data-[slot=frame]:*:[tr]:*:[td]:bg-clip-padding in-data-[slot=frame]:*:[tr]:first:*:[td]:first:rounded-ss-xl in-data-[slot=frame]:*:[tr]:*:[td]:first:border-s in-data-[slot=frame]:*:[tr]:first:*:[td]:border-t in-data-[slot=frame]:*:[tr]:last:*:[td]:last:rounded-ee-xl in-data-[slot=frame]:*:[tr]:*:[td]:last:border-e in-data-[slot=frame]:*:[tr]:first:*:[td]:last:rounded-se-xl in-data-[slot=frame]:*:[tr]:last:*:[td]:first:rounded-es-xl in-data-[slot=frame]:*:[tr]:hover:*:[td]:bg-muted/32",
|
|
3038
|
+
className
|
|
3039
|
+
),
|
|
3040
|
+
"data-slot": "table-body",
|
|
3041
|
+
...props
|
|
3042
|
+
}
|
|
3043
|
+
);
|
|
3044
|
+
}
|
|
3045
|
+
function TableFooter({ className, ...props }) {
|
|
3046
|
+
return /* @__PURE__ */ jsx37(
|
|
3047
|
+
"tfoot",
|
|
3048
|
+
{
|
|
3049
|
+
className: cn(
|
|
3050
|
+
"border-t in-data-[slot=frame]:border-none bg-muted/72 in-data-[slot=frame]:bg-transparent font-medium [&>tr]:last:border-b-0 in-data-[slot=frame]:*:[tr]:hover:bg-transparent",
|
|
3051
|
+
className
|
|
3052
|
+
),
|
|
3053
|
+
"data-slot": "table-footer",
|
|
3054
|
+
...props
|
|
3055
|
+
}
|
|
3056
|
+
);
|
|
3057
|
+
}
|
|
3058
|
+
function TableRow({ className, ...props }) {
|
|
3059
|
+
return /* @__PURE__ */ jsx37(
|
|
3060
|
+
"tr",
|
|
3061
|
+
{
|
|
3062
|
+
className: cn(
|
|
3063
|
+
"border-b transition-colors hover:bg-muted in-data-[slot=frame]:hover:bg-transparent data-[state=selected]:bg-muted in-data-[slot=frame]:data-[state=selected]:bg-transparent",
|
|
3064
|
+
className
|
|
3065
|
+
),
|
|
3066
|
+
"data-slot": "table-row",
|
|
3067
|
+
...props
|
|
3068
|
+
}
|
|
3069
|
+
);
|
|
3070
|
+
}
|
|
3071
|
+
function TableHead({ className, ...props }) {
|
|
3072
|
+
return /* @__PURE__ */ jsx37(
|
|
3073
|
+
"th",
|
|
3074
|
+
{
|
|
3075
|
+
className: cn(
|
|
3076
|
+
"h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-foreground has-[[role=checkbox]]:pe-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
3077
|
+
className
|
|
3078
|
+
),
|
|
3079
|
+
"data-slot": "table-head",
|
|
3080
|
+
...props
|
|
3081
|
+
}
|
|
3082
|
+
);
|
|
3083
|
+
}
|
|
3084
|
+
function TableCell({ className, ...props }) {
|
|
3085
|
+
return /* @__PURE__ */ jsx37(
|
|
3086
|
+
"td",
|
|
3087
|
+
{
|
|
3088
|
+
className: cn(
|
|
3089
|
+
"whitespace-nowrap p-2 align-middle has-[[role=checkbox]]:pe-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
3090
|
+
className
|
|
3091
|
+
),
|
|
3092
|
+
"data-slot": "table-cell",
|
|
3093
|
+
...props
|
|
3094
|
+
}
|
|
3095
|
+
);
|
|
3096
|
+
}
|
|
3097
|
+
function TableCaption({
|
|
3098
|
+
className,
|
|
3099
|
+
...props
|
|
3100
|
+
}) {
|
|
3101
|
+
return /* @__PURE__ */ jsx37(
|
|
3102
|
+
"caption",
|
|
3103
|
+
{
|
|
3104
|
+
className: cn(
|
|
3105
|
+
"in-data-[slot=frame]:my-4 mt-4 text-muted-foreground text-sm",
|
|
3106
|
+
className
|
|
3107
|
+
),
|
|
3108
|
+
"data-slot": "table-caption",
|
|
3109
|
+
...props
|
|
3110
|
+
}
|
|
3111
|
+
);
|
|
3112
|
+
}
|
|
3113
|
+
|
|
3114
|
+
// src/components/tabs.tsx
|
|
3115
|
+
import * as React31 from "react";
|
|
3116
|
+
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
3117
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
3118
|
+
var Tabs = TabsPrimitive.Root;
|
|
3119
|
+
var TabsList = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
|
|
3120
|
+
TabsPrimitive.List,
|
|
3121
|
+
{
|
|
3122
|
+
ref,
|
|
3123
|
+
className: cn(
|
|
3124
|
+
"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
|
|
3125
|
+
className
|
|
3126
|
+
),
|
|
3127
|
+
...props
|
|
3128
|
+
}
|
|
3129
|
+
));
|
|
3130
|
+
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
3131
|
+
var TabsTrigger = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
|
|
3132
|
+
TabsPrimitive.Trigger,
|
|
3133
|
+
{
|
|
3134
|
+
ref,
|
|
3135
|
+
className: cn(
|
|
3136
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-[11px] font-medium ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs",
|
|
3137
|
+
className
|
|
3138
|
+
),
|
|
3139
|
+
...props
|
|
3140
|
+
}
|
|
3141
|
+
));
|
|
3142
|
+
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
3143
|
+
var TabsContent = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
|
|
3144
|
+
TabsPrimitive.Content,
|
|
3145
|
+
{
|
|
3146
|
+
ref,
|
|
3147
|
+
className: cn(
|
|
3148
|
+
"mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
3149
|
+
className
|
|
3150
|
+
),
|
|
3151
|
+
...props
|
|
3152
|
+
}
|
|
3153
|
+
));
|
|
3154
|
+
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
3155
|
+
|
|
3156
|
+
// src/components/tags-input.tsx
|
|
3157
|
+
import { TagInput } from "emblor";
|
|
3158
|
+
import { useId as useId3, useState as useState4 } from "react";
|
|
3159
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
3160
|
+
|
|
3161
|
+
// src/components/textarea.tsx
|
|
3162
|
+
import * as React32 from "react";
|
|
3163
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
3164
|
+
var Textarea = React32.forwardRef(
|
|
3165
|
+
({ className, ...props }, ref) => {
|
|
3166
|
+
return /* @__PURE__ */ jsx40(
|
|
3167
|
+
"textarea",
|
|
3168
|
+
{
|
|
3169
|
+
className: cn(
|
|
3170
|
+
"flex min-h-20 w-full rounded-10 border border-input bg-background p-3 text-sm font-normal ring-offset-background placeholder:text-muted-foreground/30 focus-visible:border-primary focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50",
|
|
3171
|
+
className
|
|
3172
|
+
),
|
|
3173
|
+
ref,
|
|
3174
|
+
...props
|
|
3175
|
+
}
|
|
3176
|
+
);
|
|
3177
|
+
}
|
|
3178
|
+
);
|
|
3179
|
+
Textarea.displayName = "Textarea";
|
|
3180
|
+
|
|
3181
|
+
// src/components/timeline.tsx
|
|
3182
|
+
import * as React33 from "react";
|
|
3183
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
3184
|
+
var TimelineContext = React33.createContext(null);
|
|
3185
|
+
function useTimeline() {
|
|
3186
|
+
const context = React33.useContext(TimelineContext);
|
|
3187
|
+
if (!context) {
|
|
3188
|
+
throw new Error("useTimeline must be used within a <Timeline />.");
|
|
3189
|
+
}
|
|
3190
|
+
return context;
|
|
3191
|
+
}
|
|
3192
|
+
var Timeline = React33.forwardRef(
|
|
3193
|
+
({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx41(TimelineContext.Provider, { value: { orientation }, children: /* @__PURE__ */ jsx41(
|
|
3194
|
+
"ol",
|
|
3195
|
+
{
|
|
3196
|
+
ref,
|
|
3197
|
+
role: "list",
|
|
3198
|
+
"data-orientation": orientation,
|
|
3199
|
+
className: cn(
|
|
3200
|
+
"flex",
|
|
3201
|
+
orientation === "vertical" && "flex-col",
|
|
3202
|
+
className
|
|
3203
|
+
),
|
|
3204
|
+
...props
|
|
3205
|
+
}
|
|
3206
|
+
) })
|
|
3207
|
+
);
|
|
3208
|
+
Timeline.displayName = "Timeline";
|
|
3209
|
+
var TimelineItem = React33.forwardRef(({ className, ...props }, ref) => {
|
|
3210
|
+
const { orientation } = useTimeline();
|
|
3211
|
+
return /* @__PURE__ */ jsx41(
|
|
3212
|
+
"li",
|
|
3213
|
+
{
|
|
3214
|
+
ref,
|
|
3215
|
+
"data-orientation": orientation,
|
|
3216
|
+
className: cn(
|
|
3217
|
+
"flex gap-4",
|
|
3218
|
+
orientation === "horizontal" && "flex-col",
|
|
3219
|
+
className
|
|
3220
|
+
),
|
|
3221
|
+
...props
|
|
3222
|
+
}
|
|
3223
|
+
);
|
|
3224
|
+
});
|
|
3225
|
+
TimelineItem.displayName = "TimelineItem";
|
|
3226
|
+
var TimelineSeparator = React33.forwardRef(({ className, ...props }, ref) => {
|
|
3227
|
+
const { orientation } = useTimeline();
|
|
3228
|
+
return /* @__PURE__ */ jsx41(
|
|
3229
|
+
"div",
|
|
3230
|
+
{
|
|
3231
|
+
ref,
|
|
3232
|
+
"data-orientation": orientation,
|
|
3233
|
+
className: cn(
|
|
3234
|
+
"flex items-center",
|
|
3235
|
+
orientation === "vertical" && "flex-col",
|
|
3236
|
+
className
|
|
3237
|
+
),
|
|
3238
|
+
...props
|
|
3239
|
+
}
|
|
3240
|
+
);
|
|
3241
|
+
});
|
|
3242
|
+
TimelineSeparator.displayName = "TimelineSeparator";
|
|
3243
|
+
var TimelineDot = React33.forwardRef(({ variant = "default", className, ...props }, ref) => {
|
|
3244
|
+
const { orientation } = useTimeline();
|
|
3245
|
+
return /* @__PURE__ */ jsx41(
|
|
3246
|
+
"div",
|
|
3247
|
+
{
|
|
3248
|
+
ref,
|
|
3249
|
+
"data-orientation": orientation,
|
|
3250
|
+
className: cn(
|
|
3251
|
+
"flex size-4 items-center justify-center empty:after:block empty:after:rounded-full empty:after:outline-current [&_svg]:size-4",
|
|
3252
|
+
orientation === "vertical" && "mt-1",
|
|
3253
|
+
variant === "default" && "empty:after:size-2.5 empty:after:bg-current",
|
|
3254
|
+
variant === "outline-solid" && "empty:after:size-2 empty:after:outline-solid",
|
|
3255
|
+
className
|
|
3256
|
+
),
|
|
3257
|
+
...props
|
|
3258
|
+
}
|
|
3259
|
+
);
|
|
3260
|
+
});
|
|
3261
|
+
TimelineDot.displayName = "TimelineDot";
|
|
3262
|
+
var TimelineConnector = React33.forwardRef(({ className, ...props }, ref) => {
|
|
3263
|
+
const { orientation } = useTimeline();
|
|
3264
|
+
return /* @__PURE__ */ jsx41(
|
|
3265
|
+
"div",
|
|
3266
|
+
{
|
|
3267
|
+
ref,
|
|
3268
|
+
"data-orientation": orientation,
|
|
3269
|
+
className: cn(
|
|
3270
|
+
"flex-1 bg-border",
|
|
3271
|
+
orientation === "vertical" && "my-2 w-0.5",
|
|
3272
|
+
orientation === "horizontal" && "mx-2 h-0.5",
|
|
3273
|
+
className
|
|
3274
|
+
),
|
|
3275
|
+
...props
|
|
3276
|
+
}
|
|
3277
|
+
);
|
|
3278
|
+
});
|
|
3279
|
+
TimelineConnector.displayName = "TimelineConnector";
|
|
3280
|
+
var TimelineContent = React33.forwardRef(({ className, ...props }, ref) => {
|
|
3281
|
+
const { orientation } = useTimeline();
|
|
3282
|
+
return /* @__PURE__ */ jsx41(
|
|
3283
|
+
"div",
|
|
3284
|
+
{
|
|
3285
|
+
ref,
|
|
3286
|
+
"data-orientation": orientation,
|
|
3287
|
+
className: cn(
|
|
3288
|
+
"flex-1",
|
|
3289
|
+
orientation === "vertical" && "pb-8 first:text-right last:text-left",
|
|
3290
|
+
orientation === "horizontal" && "pr-8",
|
|
3291
|
+
className
|
|
3292
|
+
),
|
|
3293
|
+
...props
|
|
3294
|
+
}
|
|
3295
|
+
);
|
|
3296
|
+
});
|
|
3297
|
+
TimelineContent.displayName = "TimelineContent";
|
|
3298
|
+
var TimelineTitle = React33.forwardRef((props, ref) => {
|
|
3299
|
+
const { orientation } = useTimeline();
|
|
3300
|
+
return /* @__PURE__ */ jsx41("div", { ref, "data-orientation": orientation, ...props });
|
|
3301
|
+
});
|
|
3302
|
+
TimelineTitle.displayName = "TimelineTitle";
|
|
3303
|
+
var TimelineDescription = React33.forwardRef(({ className, ...props }, ref) => {
|
|
3304
|
+
const { orientation } = useTimeline();
|
|
3305
|
+
return /* @__PURE__ */ jsx41(
|
|
3306
|
+
"div",
|
|
3307
|
+
{
|
|
3308
|
+
ref,
|
|
3309
|
+
"data-orientation": orientation,
|
|
3310
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
3311
|
+
...props
|
|
3312
|
+
}
|
|
3313
|
+
);
|
|
3314
|
+
});
|
|
3315
|
+
TimelineDescription.displayName = "TimelineDescription";
|
|
3316
|
+
|
|
3317
|
+
// src/components/tooltip.tsx
|
|
3318
|
+
import * as React34 from "react";
|
|
3319
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
3320
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
3321
|
+
var TooltipProvider = TooltipPrimitive.Provider;
|
|
3322
|
+
var Tooltip = TooltipPrimitive.Root;
|
|
3323
|
+
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
3324
|
+
var TooltipContent = React34.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx42(
|
|
3325
|
+
TooltipPrimitive.Content,
|
|
3326
|
+
{
|
|
3327
|
+
ref,
|
|
3328
|
+
sideOffset,
|
|
3329
|
+
className: cn(
|
|
3330
|
+
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 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",
|
|
3331
|
+
className
|
|
3332
|
+
),
|
|
3333
|
+
...props
|
|
3334
|
+
}
|
|
3335
|
+
));
|
|
3336
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
3337
|
+
export {
|
|
3338
|
+
Accordion,
|
|
3339
|
+
AccordionContent,
|
|
3340
|
+
AccordionItem,
|
|
3341
|
+
AccordionTrigger,
|
|
3342
|
+
AlertDialog,
|
|
3343
|
+
AlertDialogBackdrop,
|
|
3344
|
+
AlertDialogClose,
|
|
3345
|
+
AlertDialogPopup as AlertDialogContent,
|
|
3346
|
+
AlertDialogDescription,
|
|
3347
|
+
AlertDialogFooter,
|
|
3348
|
+
AlertDialogHeader,
|
|
3349
|
+
AlertDialogBackdrop as AlertDialogOverlay,
|
|
3350
|
+
AlertDialogPopup,
|
|
3351
|
+
AlertDialogPortal,
|
|
3352
|
+
AlertDialogTitle,
|
|
3353
|
+
AlertDialogTrigger,
|
|
3354
|
+
Avatar,
|
|
3355
|
+
AvatarFallback,
|
|
3356
|
+
AvatarImage,
|
|
3357
|
+
Badge,
|
|
3358
|
+
Breadcrumb,
|
|
3359
|
+
BreadcrumbEllipsis,
|
|
3360
|
+
BreadcrumbItem,
|
|
3361
|
+
BreadcrumbLink,
|
|
3362
|
+
BreadcrumbList,
|
|
3363
|
+
BreadcrumbPage,
|
|
3364
|
+
BreadcrumbSeparator,
|
|
3365
|
+
Button,
|
|
3366
|
+
Card,
|
|
3367
|
+
CardContent,
|
|
3368
|
+
CardDescription,
|
|
3369
|
+
CardFooter,
|
|
3370
|
+
CardHeader,
|
|
3371
|
+
CardTitle,
|
|
3372
|
+
Checkbox,
|
|
3373
|
+
Combobox2 as Combobox,
|
|
3374
|
+
ComboboxChip,
|
|
3375
|
+
ComboboxChips,
|
|
3376
|
+
ComboboxClear,
|
|
3377
|
+
ComboboxCollection,
|
|
3378
|
+
ComboboxEmpty,
|
|
3379
|
+
ComboboxGroup,
|
|
3380
|
+
ComboboxGroupLabel,
|
|
3381
|
+
ComboboxInput,
|
|
3382
|
+
ComboboxItem,
|
|
3383
|
+
ComboboxList,
|
|
3384
|
+
Combobox as ComboboxMulti,
|
|
3385
|
+
ComboboxPopup,
|
|
3386
|
+
ComboboxRow,
|
|
3387
|
+
ComboboxSeparator,
|
|
3388
|
+
ComboboxStatus,
|
|
3389
|
+
ComboboxTrigger,
|
|
3390
|
+
ComboboxValue,
|
|
3391
|
+
Command,
|
|
3392
|
+
CommandDialog,
|
|
3393
|
+
CommandEmpty,
|
|
3394
|
+
CommandGroup,
|
|
3395
|
+
CommandInput,
|
|
3396
|
+
CommandItem,
|
|
3397
|
+
CommandList,
|
|
3398
|
+
CommandSeparator,
|
|
3399
|
+
CommandShortcut,
|
|
3400
|
+
ConfirmDialog,
|
|
3401
|
+
CopyButton,
|
|
3402
|
+
CountryPicker,
|
|
3403
|
+
Dialog,
|
|
3404
|
+
DialogBackdrop,
|
|
3405
|
+
DialogClose,
|
|
3406
|
+
DialogPopup as DialogContent,
|
|
3407
|
+
DialogDescription,
|
|
3408
|
+
DialogFooter,
|
|
3409
|
+
DialogHeader,
|
|
3410
|
+
DialogBackdrop as DialogOverlay,
|
|
3411
|
+
DialogPopup,
|
|
3412
|
+
DialogPortal,
|
|
3413
|
+
DialogTitle,
|
|
3414
|
+
DialogTrigger,
|
|
3415
|
+
Drawer,
|
|
3416
|
+
DrawerClose,
|
|
3417
|
+
DrawerContent,
|
|
3418
|
+
DrawerDescription,
|
|
3419
|
+
DrawerFooter,
|
|
3420
|
+
DrawerHeader,
|
|
3421
|
+
DrawerOverlay,
|
|
3422
|
+
DrawerPortal,
|
|
3423
|
+
DrawerTitle,
|
|
3424
|
+
DrawerTrigger,
|
|
3425
|
+
DropdownMenu,
|
|
3426
|
+
DropdownMenuCheckboxItem,
|
|
3427
|
+
DropdownMenuContent,
|
|
3428
|
+
DropdownMenuGroup,
|
|
3429
|
+
DropdownMenuItem,
|
|
3430
|
+
DropdownMenuLabel,
|
|
3431
|
+
DropdownMenuPortal,
|
|
3432
|
+
DropdownMenuRadioGroup,
|
|
3433
|
+
DropdownMenuRadioItem,
|
|
3434
|
+
DropdownMenuSeparator,
|
|
3435
|
+
DropdownMenuShortcut,
|
|
3436
|
+
DropdownMenuSub,
|
|
3437
|
+
DropdownMenuSubContent,
|
|
3438
|
+
DropdownMenuSubTrigger,
|
|
3439
|
+
DropdownMenuTrigger,
|
|
3440
|
+
ButtonRoot as FancyButton,
|
|
3441
|
+
Field,
|
|
3442
|
+
FieldControl,
|
|
3443
|
+
FieldDescription,
|
|
3444
|
+
FieldError,
|
|
3445
|
+
FieldLabel,
|
|
3446
|
+
FieldValidity,
|
|
3447
|
+
Form,
|
|
3448
|
+
FormControl,
|
|
3449
|
+
FormDescription,
|
|
3450
|
+
FormField,
|
|
3451
|
+
FormItem,
|
|
3452
|
+
FormLabel,
|
|
3453
|
+
FormMessage,
|
|
3454
|
+
ButtonIcon as Icon,
|
|
3455
|
+
Input,
|
|
3456
|
+
InputOTP,
|
|
3457
|
+
InputOTPGroup,
|
|
3458
|
+
InputOTPSeparator,
|
|
3459
|
+
InputOTPSlot,
|
|
3460
|
+
Label2 as Label,
|
|
3461
|
+
MultiSelect,
|
|
3462
|
+
Popover,
|
|
3463
|
+
PopoverContent,
|
|
3464
|
+
PopoverTrigger,
|
|
3465
|
+
Progress,
|
|
3466
|
+
ButtonRoot as Root,
|
|
3467
|
+
ScrollArea,
|
|
3468
|
+
ScrollBar,
|
|
3469
|
+
Select,
|
|
3470
|
+
SelectContent,
|
|
3471
|
+
SelectGroup,
|
|
3472
|
+
SelectItem,
|
|
3473
|
+
SelectLabel,
|
|
3474
|
+
SelectScrollDownButton,
|
|
3475
|
+
SelectScrollUpButton,
|
|
3476
|
+
SelectSeparator,
|
|
3477
|
+
SelectTrigger,
|
|
3478
|
+
SelectValue,
|
|
3479
|
+
Separator3 as Separator,
|
|
3480
|
+
Sheet,
|
|
3481
|
+
SheetClose,
|
|
3482
|
+
SheetContent,
|
|
3483
|
+
SheetDescription,
|
|
3484
|
+
SheetFooter,
|
|
3485
|
+
SheetHeader,
|
|
3486
|
+
SheetOverlay,
|
|
3487
|
+
SheetPortal,
|
|
3488
|
+
SheetTitle,
|
|
3489
|
+
SheetTrigger,
|
|
3490
|
+
Skeleton,
|
|
3491
|
+
StatusIndicator,
|
|
3492
|
+
Switch,
|
|
3493
|
+
Table,
|
|
3494
|
+
TableBody,
|
|
3495
|
+
TableCaption,
|
|
3496
|
+
TableCell,
|
|
3497
|
+
TableFooter,
|
|
3498
|
+
TableHead,
|
|
3499
|
+
TableHeader,
|
|
3500
|
+
TableRow,
|
|
3501
|
+
Tabs,
|
|
3502
|
+
TabsContent,
|
|
3503
|
+
TabsList,
|
|
3504
|
+
TabsTrigger,
|
|
3505
|
+
Textarea,
|
|
3506
|
+
Timeline,
|
|
3507
|
+
TimelineConnector,
|
|
3508
|
+
TimelineContent,
|
|
3509
|
+
TimelineDescription,
|
|
3510
|
+
TimelineDot,
|
|
3511
|
+
TimelineItem,
|
|
3512
|
+
TimelineSeparator,
|
|
3513
|
+
TimelineTitle,
|
|
3514
|
+
Tooltip,
|
|
3515
|
+
TooltipContent,
|
|
3516
|
+
TooltipProvider,
|
|
3517
|
+
TooltipTrigger,
|
|
3518
|
+
badgeVariants,
|
|
3519
|
+
buttonVariants,
|
|
3520
|
+
cn,
|
|
3521
|
+
statusIndicatorVariants,
|
|
3522
|
+
tv,
|
|
3523
|
+
useComboboxFilter,
|
|
3524
|
+
useFormField
|
|
3525
|
+
};
|