@doscientos/ui 0.1.23 → 0.1.26
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/dist/index.cjs +762 -528
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +221 -32
- package/dist/index.d.ts +221 -32
- package/dist/index.js +728 -504
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -238,10 +238,199 @@ function AccordionContent({
|
|
|
238
238
|
);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
// src/ui/alert/alert.tsx
|
|
241
|
+
// src/ui/alert-dialog/alert-dialog.tsx
|
|
242
|
+
import * as React2 from "react";
|
|
243
|
+
import {
|
|
244
|
+
Dialog as AriaDialog,
|
|
245
|
+
Heading,
|
|
246
|
+
Modal,
|
|
247
|
+
ModalOverlay,
|
|
248
|
+
Text
|
|
249
|
+
} from "react-aria-components";
|
|
250
|
+
|
|
251
|
+
// src/ui/button/button.tsx
|
|
242
252
|
import { cva as cva2 } from "class-variance-authority";
|
|
243
|
-
import {
|
|
244
|
-
|
|
253
|
+
import { useState as useState4 } from "react";
|
|
254
|
+
import {
|
|
255
|
+
Button as ButtonPrimitive,
|
|
256
|
+
Link as LinkPrimitive
|
|
257
|
+
} from "react-aria-components";
|
|
258
|
+
import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
259
|
+
var centeredRipplePosition = { x: "50%", y: "50%" };
|
|
260
|
+
function getRipplePosition(event) {
|
|
261
|
+
if (event.pointerType === "keyboard" || event.pointerType === "virtual") {
|
|
262
|
+
return centeredRipplePosition;
|
|
263
|
+
}
|
|
264
|
+
if (!(event.target instanceof Element) || event.x === void 0 || event.y === void 0) {
|
|
265
|
+
return centeredRipplePosition;
|
|
266
|
+
}
|
|
267
|
+
const bounds = event.target.getBoundingClientRect();
|
|
268
|
+
return {
|
|
269
|
+
x: `${event.x - bounds.left}px`,
|
|
270
|
+
y: `${event.y - bounds.top}px`
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function useActionRipple(enabled) {
|
|
274
|
+
const [ripple, setRipple] = useState4(null);
|
|
275
|
+
function triggerRipple(event) {
|
|
276
|
+
if (!enabled) return;
|
|
277
|
+
const position = getRipplePosition(event);
|
|
278
|
+
setRipple((currentRipple) => ({
|
|
279
|
+
id: (currentRipple?.id ?? 0) + 1,
|
|
280
|
+
position
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
const rippleElement = ripple ? /* @__PURE__ */ jsx2(
|
|
284
|
+
"span",
|
|
285
|
+
{
|
|
286
|
+
"aria-hidden": "true",
|
|
287
|
+
"data-slot": "button-ripple",
|
|
288
|
+
className: "pointer-events-none absolute aspect-square w-full rounded-full bg-current animate-ui-ripple motion-reduce:hidden",
|
|
289
|
+
style: { left: ripple.position.x, top: ripple.position.y },
|
|
290
|
+
onAnimationEnd: () => setRipple((currentRipple) => currentRipple?.id === ripple.id ? null : currentRipple)
|
|
291
|
+
},
|
|
292
|
+
ripple.id
|
|
293
|
+
) : null;
|
|
294
|
+
return { ripple: rippleElement, triggerRipple };
|
|
295
|
+
}
|
|
296
|
+
var buttonVariants = cva2(
|
|
297
|
+
cn(
|
|
298
|
+
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
299
|
+
actionRipple()
|
|
300
|
+
),
|
|
301
|
+
{
|
|
302
|
+
variants: {
|
|
303
|
+
variant: {
|
|
304
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
305
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
306
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
307
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
308
|
+
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
|
|
309
|
+
link: "text-primary underline-offset-4 hover:underline after:hidden"
|
|
310
|
+
},
|
|
311
|
+
size: {
|
|
312
|
+
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
313
|
+
xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
314
|
+
sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
315
|
+
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
316
|
+
icon: "size-8",
|
|
317
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
318
|
+
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
319
|
+
"icon-lg": "size-9"
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
defaultVariants: {
|
|
323
|
+
variant: "default",
|
|
324
|
+
size: "default"
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
function Button({ className, variant = "default", size = "default", children, disabled, isDisabled, onClick, onPress, ...props }) {
|
|
329
|
+
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
330
|
+
return /* @__PURE__ */ jsx2(
|
|
331
|
+
ButtonPrimitive,
|
|
332
|
+
{
|
|
333
|
+
"data-slot": "button",
|
|
334
|
+
"data-variant": variant,
|
|
335
|
+
"data-size": size,
|
|
336
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
337
|
+
onClick,
|
|
338
|
+
isDisabled: isDisabled ?? disabled,
|
|
339
|
+
onPress: (event) => {
|
|
340
|
+
onPress?.(event);
|
|
341
|
+
triggerRipple(event);
|
|
342
|
+
},
|
|
343
|
+
...props,
|
|
344
|
+
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
345
|
+
typeof children === "function" ? children(renderProps) : children,
|
|
346
|
+
ripple
|
|
347
|
+
] })
|
|
348
|
+
}
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
function LinkButton({
|
|
352
|
+
className,
|
|
353
|
+
variant = "default",
|
|
354
|
+
size = "default",
|
|
355
|
+
children,
|
|
356
|
+
onClick,
|
|
357
|
+
onPress,
|
|
358
|
+
...props
|
|
359
|
+
}) {
|
|
360
|
+
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
361
|
+
return /* @__PURE__ */ jsx2(
|
|
362
|
+
LinkPrimitive,
|
|
363
|
+
{
|
|
364
|
+
"data-slot": "button",
|
|
365
|
+
"data-variant": variant,
|
|
366
|
+
"data-size": size,
|
|
367
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
368
|
+
onClick,
|
|
369
|
+
onPress: (event) => {
|
|
370
|
+
onPress?.(event);
|
|
371
|
+
triggerRipple(event);
|
|
372
|
+
},
|
|
373
|
+
...props,
|
|
374
|
+
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
375
|
+
typeof children === "function" ? children(renderProps) : children,
|
|
376
|
+
ripple
|
|
377
|
+
] })
|
|
378
|
+
}
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// src/ui/alert-dialog/alert-dialog.tsx
|
|
383
|
+
import { Fragment as Fragment2, jsx as jsx3 } from "react/jsx-runtime";
|
|
384
|
+
var AlertDialogContext = React2.createContext(null);
|
|
385
|
+
function useAlertDialogContext() {
|
|
386
|
+
const context = React2.useContext(AlertDialogContext);
|
|
387
|
+
if (!context) throw new Error("AlertDialog components must be rendered within AlertDialog.");
|
|
388
|
+
return context;
|
|
389
|
+
}
|
|
390
|
+
function AlertDialog({ children, open, onOpenChange }) {
|
|
391
|
+
return /* @__PURE__ */ jsx3(AlertDialogContext.Provider, { value: { open, setOpen: onOpenChange }, children });
|
|
392
|
+
}
|
|
393
|
+
function AlertDialogPortal({ children }) {
|
|
394
|
+
return /* @__PURE__ */ jsx3(Fragment2, { children });
|
|
395
|
+
}
|
|
396
|
+
function AlertDialogTrigger({ children, ...props }) {
|
|
397
|
+
const { setOpen } = useAlertDialogContext();
|
|
398
|
+
return /* @__PURE__ */ jsx3(Button, { "data-slot": "alert-dialog-trigger", onPress: () => setOpen(true), ...props, children });
|
|
399
|
+
}
|
|
400
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
401
|
+
const { open, setOpen } = useAlertDialogContext();
|
|
402
|
+
if (!open) return null;
|
|
403
|
+
return /* @__PURE__ */ jsx3(ModalOverlay, { "data-slot": "alert-dialog-overlay", isDismissable: true, isOpen: open, onOpenChange: setOpen, className: cn("fixed inset-0 isolate z-50 grid place-items-center bg-black/10 p-4 backdrop-blur-[1px]", className), ...props });
|
|
404
|
+
}
|
|
405
|
+
function AlertDialogContent({ className, size = "default", children }) {
|
|
406
|
+
const { open, setOpen } = useAlertDialogContext();
|
|
407
|
+
if (!open) return null;
|
|
408
|
+
return /* @__PURE__ */ jsx3(AlertDialogPortal, { children: /* @__PURE__ */ jsx3(ModalOverlay, { isDismissable: true, isOpen: open, onOpenChange: setOpen, className: "fixed inset-0 isolate z-50 grid place-items-center bg-black/10 p-4 backdrop-blur-[1px]", children: /* @__PURE__ */ jsx3(Modal, { className: cn("w-full max-w-[calc(100%-2rem)] outline-none", size === "sm" ? "sm:max-w-xs" : "sm:max-w-sm", className), children: /* @__PURE__ */ jsx3(AriaDialog, { role: "alertdialog", "data-slot": "alert-dialog-content", className: "grid gap-4 rounded-xl bg-background p-4 text-sm text-foreground ring-1 ring-foreground/10 outline-none", children }) }) }) });
|
|
409
|
+
}
|
|
410
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
411
|
+
return /* @__PURE__ */ jsx3("div", { "data-slot": "alert-dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props });
|
|
412
|
+
}
|
|
413
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
414
|
+
return /* @__PURE__ */ jsx3("div", { "data-slot": "alert-dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end", className), ...props });
|
|
415
|
+
}
|
|
416
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
417
|
+
return /* @__PURE__ */ jsx3(Heading, { slot: "title", "data-slot": "alert-dialog-title", className: cn("font-heading text-base font-medium", className), ...props });
|
|
418
|
+
}
|
|
419
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
420
|
+
return /* @__PURE__ */ jsx3(Text, { slot: "description", "data-slot": "alert-dialog-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
421
|
+
}
|
|
422
|
+
function AlertDialogAction({ className, ...props }) {
|
|
423
|
+
return /* @__PURE__ */ jsx3(Button, { "data-slot": "alert-dialog-action", className: cn(className), ...props });
|
|
424
|
+
}
|
|
425
|
+
function AlertDialogCancel({ children = "Cancelar", onClick, ...props }) {
|
|
426
|
+
const { setOpen } = useAlertDialogContext();
|
|
427
|
+
return /* @__PURE__ */ jsx3(Button, { "data-slot": "alert-dialog-cancel", variant: "outline", onClick, onPress: () => setOpen(false), ...props, children });
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// src/ui/alert/alert.tsx
|
|
431
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
432
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
433
|
+
var alertVariants = cva3(
|
|
245
434
|
"group/alert relative grid w-full gap-0.5 rounded-lg border border-border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
|
|
246
435
|
{
|
|
247
436
|
variants: {
|
|
@@ -259,7 +448,7 @@ var alertVariants = cva2(
|
|
|
259
448
|
}
|
|
260
449
|
);
|
|
261
450
|
function Alert({ className, variant, ...props }) {
|
|
262
|
-
return /* @__PURE__ */
|
|
451
|
+
return /* @__PURE__ */ jsx4(
|
|
263
452
|
"div",
|
|
264
453
|
{
|
|
265
454
|
"data-slot": "alert",
|
|
@@ -270,7 +459,7 @@ function Alert({ className, variant, ...props }) {
|
|
|
270
459
|
);
|
|
271
460
|
}
|
|
272
461
|
function AlertTitle({ className, ...props }) {
|
|
273
|
-
return /* @__PURE__ */
|
|
462
|
+
return /* @__PURE__ */ jsx4(
|
|
274
463
|
"div",
|
|
275
464
|
{
|
|
276
465
|
"data-slot": "alert-title",
|
|
@@ -283,7 +472,7 @@ function AlertTitle({ className, ...props }) {
|
|
|
283
472
|
);
|
|
284
473
|
}
|
|
285
474
|
function AlertDescription({ className, ...props }) {
|
|
286
|
-
return /* @__PURE__ */
|
|
475
|
+
return /* @__PURE__ */ jsx4(
|
|
287
476
|
"div",
|
|
288
477
|
{
|
|
289
478
|
"data-slot": "alert-description",
|
|
@@ -296,17 +485,17 @@ function AlertDescription({ className, ...props }) {
|
|
|
296
485
|
);
|
|
297
486
|
}
|
|
298
487
|
function AlertAction({ className, ...props }) {
|
|
299
|
-
return /* @__PURE__ */
|
|
488
|
+
return /* @__PURE__ */ jsx4("div", { "data-slot": "alert-action", className: cn("absolute top-2 right-2", className), ...props });
|
|
300
489
|
}
|
|
301
490
|
|
|
302
491
|
// src/ui/app-shell/app-shell.tsx
|
|
303
|
-
import { jsx as
|
|
492
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
304
493
|
function AppShell({
|
|
305
494
|
className,
|
|
306
495
|
sidebarBreakpoint = "md",
|
|
307
496
|
...props
|
|
308
497
|
}) {
|
|
309
|
-
return /* @__PURE__ */
|
|
498
|
+
return /* @__PURE__ */ jsx5(
|
|
310
499
|
"div",
|
|
311
500
|
{
|
|
312
501
|
"data-slot": "app-shell",
|
|
@@ -317,7 +506,7 @@ function AppShell({
|
|
|
317
506
|
);
|
|
318
507
|
}
|
|
319
508
|
function AppShellSidebar({ className, ...props }) {
|
|
320
|
-
return /* @__PURE__ */
|
|
509
|
+
return /* @__PURE__ */ jsx5(
|
|
321
510
|
"aside",
|
|
322
511
|
{
|
|
323
512
|
"data-slot": "app-shell-sidebar",
|
|
@@ -327,10 +516,10 @@ function AppShellSidebar({ className, ...props }) {
|
|
|
327
516
|
);
|
|
328
517
|
}
|
|
329
518
|
function AppShellMain({ className, ...props }) {
|
|
330
|
-
return /* @__PURE__ */
|
|
519
|
+
return /* @__PURE__ */ jsx5("main", { "data-slot": "app-shell-main", className: cn("bg-background", className), ...props });
|
|
331
520
|
}
|
|
332
521
|
function AppShellHeader({ className, ...props }) {
|
|
333
|
-
return /* @__PURE__ */
|
|
522
|
+
return /* @__PURE__ */ jsx5(
|
|
334
523
|
"header",
|
|
335
524
|
{
|
|
336
525
|
"data-slot": "app-shell-header",
|
|
@@ -343,7 +532,7 @@ function AppShellMobileHeader({
|
|
|
343
532
|
className,
|
|
344
533
|
...props
|
|
345
534
|
}) {
|
|
346
|
-
return /* @__PURE__ */
|
|
535
|
+
return /* @__PURE__ */ jsx5(
|
|
347
536
|
"header",
|
|
348
537
|
{
|
|
349
538
|
"data-slot": "app-shell-mobile-header",
|
|
@@ -359,7 +548,7 @@ function AppShellContent({
|
|
|
359
548
|
scrollable = true,
|
|
360
549
|
...props
|
|
361
550
|
}) {
|
|
362
|
-
return /* @__PURE__ */
|
|
551
|
+
return /* @__PURE__ */ jsx5(
|
|
363
552
|
"div",
|
|
364
553
|
{
|
|
365
554
|
"data-slot": "app-shell-content",
|
|
@@ -373,23 +562,23 @@ function AppShellContent({
|
|
|
373
562
|
}
|
|
374
563
|
|
|
375
564
|
// src/ui/avatar/avatar.tsx
|
|
376
|
-
import { createContext, useContext, useEffect as useEffect3, useState as
|
|
377
|
-
import { jsx as
|
|
565
|
+
import { createContext as createContext2, useContext as useContext2, useEffect as useEffect3, useState as useState5 } from "react";
|
|
566
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
378
567
|
var sizes = { xs: "size-5 text-[10px]", sm: "size-6 text-xs", default: "size-8 text-sm", lg: "size-10 text-base" };
|
|
379
|
-
var AvatarContext =
|
|
568
|
+
var AvatarContext = createContext2(null);
|
|
380
569
|
function Avatar({ className, size = "default", children, ...props }) {
|
|
381
|
-
const [status, setStatus] =
|
|
382
|
-
return /* @__PURE__ */
|
|
570
|
+
const [status, setStatus] = useState5("idle");
|
|
571
|
+
return /* @__PURE__ */ jsx6(AvatarContext.Provider, { value: { status, setStatus }, children: /* @__PURE__ */ jsx6("div", { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex shrink-0 overflow-hidden rounded-full bg-muted text-muted-foreground", sizes[size], className), ...props, children }) });
|
|
383
572
|
}
|
|
384
573
|
function AvatarImage({ className, src, onError, onLoad, ...props }) {
|
|
385
|
-
const avatar =
|
|
386
|
-
const [failed, setFailed] =
|
|
574
|
+
const avatar = useContext2(AvatarContext);
|
|
575
|
+
const [failed, setFailed] = useState5(false);
|
|
387
576
|
useEffect3(() => {
|
|
388
577
|
setFailed(false);
|
|
389
578
|
avatar?.setStatus(src ? "loading" : "idle");
|
|
390
579
|
}, [avatar?.setStatus, src]);
|
|
391
580
|
if (failed || avatar?.status === "error") return null;
|
|
392
|
-
return /* @__PURE__ */
|
|
581
|
+
return /* @__PURE__ */ jsx6("img", { "data-slot": "avatar-image", src, className: cn("aspect-square size-full object-cover", className), onLoad: (event) => {
|
|
393
582
|
avatar?.setStatus("loaded");
|
|
394
583
|
onLoad?.(event);
|
|
395
584
|
}, onError: (event) => {
|
|
@@ -399,25 +588,25 @@ function AvatarImage({ className, src, onError, onLoad, ...props }) {
|
|
|
399
588
|
}, ...props });
|
|
400
589
|
}
|
|
401
590
|
function AvatarFallback({ className, ...props }) {
|
|
402
|
-
const avatar =
|
|
591
|
+
const avatar = useContext2(AvatarContext);
|
|
403
592
|
if (avatar?.status === "loaded") return null;
|
|
404
|
-
return /* @__PURE__ */
|
|
593
|
+
return /* @__PURE__ */ jsx6("span", { "data-slot": "avatar-fallback", className: cn("flex size-full items-center justify-center font-medium", className), ...props });
|
|
405
594
|
}
|
|
406
595
|
function AvatarBadge({ className, ...props }) {
|
|
407
|
-
return /* @__PURE__ */
|
|
596
|
+
return /* @__PURE__ */ jsx6("span", { "data-slot": "avatar-badge", className: cn("absolute right-0 bottom-0 size-2.5 rounded-full bg-success ring-2 ring-background", className), ...props });
|
|
408
597
|
}
|
|
409
598
|
function AvatarGroup({ className, ...props }) {
|
|
410
|
-
return /* @__PURE__ */
|
|
599
|
+
return /* @__PURE__ */ jsx6("div", { "data-slot": "avatar-group", className: cn("flex -space-x-2 [&>[data-slot=avatar]]:ring-2 [&>[data-slot=avatar]]:ring-background", className), ...props });
|
|
411
600
|
}
|
|
412
601
|
function AvatarGroupCount({ className, ...props }) {
|
|
413
|
-
return /* @__PURE__ */
|
|
602
|
+
return /* @__PURE__ */ jsx6("span", { "data-slot": "avatar-group-count", className: cn("flex size-8 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground ring-2 ring-background", className), ...props });
|
|
414
603
|
}
|
|
415
604
|
|
|
416
605
|
// src/ui/badge/badge.tsx
|
|
417
|
-
import { cva as
|
|
606
|
+
import { cva as cva4 } from "class-variance-authority";
|
|
418
607
|
import { Link } from "react-aria-components";
|
|
419
|
-
import { jsx as
|
|
420
|
-
var badgeVariants =
|
|
608
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
609
|
+
var badgeVariants = cva4(
|
|
421
610
|
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
422
611
|
{
|
|
423
612
|
variants: {
|
|
@@ -439,7 +628,7 @@ var badgeVariants = cva3(
|
|
|
439
628
|
}
|
|
440
629
|
);
|
|
441
630
|
function Badge({ className, variant, ...props }) {
|
|
442
|
-
return /* @__PURE__ */
|
|
631
|
+
return /* @__PURE__ */ jsx7(
|
|
443
632
|
"span",
|
|
444
633
|
{
|
|
445
634
|
"data-slot": "badge",
|
|
@@ -450,7 +639,7 @@ function Badge({ className, variant, ...props }) {
|
|
|
450
639
|
);
|
|
451
640
|
}
|
|
452
641
|
function BadgeLink({ className, variant, ...props }) {
|
|
453
|
-
return /* @__PURE__ */
|
|
642
|
+
return /* @__PURE__ */ jsx7(
|
|
454
643
|
Link,
|
|
455
644
|
{
|
|
456
645
|
"data-slot": "badge",
|
|
@@ -463,31 +652,31 @@ function BadgeLink({ className, variant, ...props }) {
|
|
|
463
652
|
|
|
464
653
|
// src/ui/breadcrumb/breadcrumb.tsx
|
|
465
654
|
import { Breadcrumb as AriaBreadcrumb, Breadcrumbs as AriaBreadcrumbs, Link as AriaLink } from "react-aria-components";
|
|
466
|
-
import { jsx as
|
|
655
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
467
656
|
function Breadcrumbs({ className, ...props }) {
|
|
468
|
-
return /* @__PURE__ */
|
|
657
|
+
return /* @__PURE__ */ jsx8(AriaBreadcrumbs, { "data-slot": "breadcrumbs", className: cn("flex flex-wrap items-center gap-1.5 text-sm text-muted-foreground", className), ...props });
|
|
469
658
|
}
|
|
470
659
|
function Breadcrumb({ className, ...props }) {
|
|
471
|
-
return /* @__PURE__ */
|
|
660
|
+
return /* @__PURE__ */ jsx8(AriaBreadcrumb, { "data-slot": "breadcrumb", className: cn("inline-flex items-center gap-1.5", className), ...props });
|
|
472
661
|
}
|
|
473
662
|
function BreadcrumbLink({ className, ...props }) {
|
|
474
|
-
return /* @__PURE__ */
|
|
663
|
+
return /* @__PURE__ */ jsx8(AriaLink, { "data-slot": "breadcrumb-link", className: cn("transition-colors hover:text-foreground", className), ...props });
|
|
475
664
|
}
|
|
476
665
|
function BreadcrumbPage({ className, ...props }) {
|
|
477
|
-
return /* @__PURE__ */
|
|
666
|
+
return /* @__PURE__ */ jsx8("span", { "data-slot": "breadcrumb-page", "aria-current": "page", className: cn("font-medium text-foreground", className), ...props });
|
|
478
667
|
}
|
|
479
668
|
function BreadcrumbSeparator({ children = "/", className, ...props }) {
|
|
480
|
-
return /* @__PURE__ */
|
|
669
|
+
return /* @__PURE__ */ jsx8("span", { "data-slot": "breadcrumb-separator", "aria-hidden": "true", className: cn("text-muted-foreground/60", className), ...props, children });
|
|
481
670
|
}
|
|
482
671
|
|
|
483
672
|
// src/ui/button-group/button-group.tsx
|
|
484
|
-
import { cva as
|
|
673
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
485
674
|
|
|
486
675
|
// src/ui/separator/separator.tsx
|
|
487
676
|
import { Separator as SeparatorPrimitive } from "react-aria-components";
|
|
488
|
-
import { jsx as
|
|
677
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
489
678
|
function Separator({ className, orientation = "horizontal", ...props }) {
|
|
490
|
-
return /* @__PURE__ */
|
|
679
|
+
return /* @__PURE__ */ jsx9(
|
|
491
680
|
SeparatorPrimitive,
|
|
492
681
|
{
|
|
493
682
|
"data-slot": "separator",
|
|
@@ -502,8 +691,8 @@ function Separator({ className, orientation = "horizontal", ...props }) {
|
|
|
502
691
|
}
|
|
503
692
|
|
|
504
693
|
// src/ui/button-group/button-group.tsx
|
|
505
|
-
import { jsx as
|
|
506
|
-
var buttonGroupVariants =
|
|
694
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
695
|
+
var buttonGroupVariants = cva5(
|
|
507
696
|
"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
|
|
508
697
|
{
|
|
509
698
|
variants: {
|
|
@@ -524,7 +713,7 @@ function ButtonGroup({
|
|
|
524
713
|
}) {
|
|
525
714
|
return (
|
|
526
715
|
// biome-ignore lint/a11y/useSemanticElements: fieldset would impose form semantics on a generic action group.
|
|
527
|
-
/* @__PURE__ */
|
|
716
|
+
/* @__PURE__ */ jsx10(
|
|
528
717
|
"div",
|
|
529
718
|
{
|
|
530
719
|
role: "group",
|
|
@@ -552,7 +741,7 @@ function ButtonGroupText({
|
|
|
552
741
|
};
|
|
553
742
|
return render(renderProps);
|
|
554
743
|
}
|
|
555
|
-
return /* @__PURE__ */
|
|
744
|
+
return /* @__PURE__ */ jsx10(
|
|
556
745
|
"div",
|
|
557
746
|
{
|
|
558
747
|
"data-slot": "button-group-text",
|
|
@@ -569,7 +758,7 @@ function ButtonGroupSeparator({
|
|
|
569
758
|
orientation = "vertical",
|
|
570
759
|
...props
|
|
571
760
|
}) {
|
|
572
|
-
return /* @__PURE__ */
|
|
761
|
+
return /* @__PURE__ */ jsx10(
|
|
573
762
|
Separator,
|
|
574
763
|
{
|
|
575
764
|
"data-slot": "button-group-separator",
|
|
@@ -583,117 +772,10 @@ function ButtonGroupSeparator({
|
|
|
583
772
|
);
|
|
584
773
|
}
|
|
585
774
|
|
|
586
|
-
// src/ui/button/button.tsx
|
|
587
|
-
import { cva as cva5 } from "class-variance-authority";
|
|
588
|
-
import { useState as useState5 } from "react";
|
|
589
|
-
import {
|
|
590
|
-
Button as ButtonPrimitive,
|
|
591
|
-
Link as LinkPrimitive
|
|
592
|
-
} from "react-aria-components";
|
|
593
|
-
import { Fragment, jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
594
|
-
function useActionRipple(enabled) {
|
|
595
|
-
const [rippleId, setRippleId] = useState5(0);
|
|
596
|
-
function triggerRipple() {
|
|
597
|
-
if (enabled) setRippleId((currentId) => currentId + 1);
|
|
598
|
-
}
|
|
599
|
-
const ripple = rippleId ? /* @__PURE__ */ jsx9(
|
|
600
|
-
"span",
|
|
601
|
-
{
|
|
602
|
-
"aria-hidden": "true",
|
|
603
|
-
"data-slot": "button-ripple",
|
|
604
|
-
className: "pointer-events-none absolute top-1/2 left-1/2 aspect-square w-full rounded-full bg-current animate-ui-ripple motion-reduce:hidden",
|
|
605
|
-
onAnimationEnd: () => setRippleId(0)
|
|
606
|
-
},
|
|
607
|
-
rippleId
|
|
608
|
-
) : null;
|
|
609
|
-
return { ripple, triggerRipple };
|
|
610
|
-
}
|
|
611
|
-
var buttonVariants = cva5(
|
|
612
|
-
cn(
|
|
613
|
-
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
614
|
-
actionRipple()
|
|
615
|
-
),
|
|
616
|
-
{
|
|
617
|
-
variants: {
|
|
618
|
-
variant: {
|
|
619
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
620
|
-
outline: "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
621
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
622
|
-
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
623
|
-
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
|
|
624
|
-
link: "text-primary underline-offset-4 hover:underline after:hidden"
|
|
625
|
-
},
|
|
626
|
-
size: {
|
|
627
|
-
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
628
|
-
xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
629
|
-
sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
630
|
-
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
631
|
-
icon: "size-8",
|
|
632
|
-
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
633
|
-
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
634
|
-
"icon-lg": "size-9"
|
|
635
|
-
}
|
|
636
|
-
},
|
|
637
|
-
defaultVariants: {
|
|
638
|
-
variant: "default",
|
|
639
|
-
size: "default"
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
);
|
|
643
|
-
function Button({ className, variant = "default", size = "default", onClick, children, ...props }) {
|
|
644
|
-
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
645
|
-
return /* @__PURE__ */ jsx9(
|
|
646
|
-
ButtonPrimitive,
|
|
647
|
-
{
|
|
648
|
-
"data-slot": "button",
|
|
649
|
-
"data-variant": variant,
|
|
650
|
-
"data-size": size,
|
|
651
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
652
|
-
onClick: (event) => {
|
|
653
|
-
onClick?.(event);
|
|
654
|
-
triggerRipple();
|
|
655
|
-
},
|
|
656
|
-
...props,
|
|
657
|
-
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
658
|
-
typeof children === "function" ? children(renderProps) : children,
|
|
659
|
-
ripple
|
|
660
|
-
] })
|
|
661
|
-
}
|
|
662
|
-
);
|
|
663
|
-
}
|
|
664
|
-
function LinkButton({
|
|
665
|
-
className,
|
|
666
|
-
variant = "default",
|
|
667
|
-
size = "default",
|
|
668
|
-
onClick,
|
|
669
|
-
children,
|
|
670
|
-
...props
|
|
671
|
-
}) {
|
|
672
|
-
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
673
|
-
return /* @__PURE__ */ jsx9(
|
|
674
|
-
LinkPrimitive,
|
|
675
|
-
{
|
|
676
|
-
"data-slot": "button",
|
|
677
|
-
"data-variant": variant,
|
|
678
|
-
"data-size": size,
|
|
679
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
680
|
-
onClick: (event) => {
|
|
681
|
-
onClick?.(event);
|
|
682
|
-
triggerRipple();
|
|
683
|
-
},
|
|
684
|
-
...props,
|
|
685
|
-
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
686
|
-
typeof children === "function" ? children(renderProps) : children,
|
|
687
|
-
ripple
|
|
688
|
-
] })
|
|
689
|
-
}
|
|
690
|
-
);
|
|
691
|
-
}
|
|
692
|
-
|
|
693
775
|
// src/ui/card/card.tsx
|
|
694
|
-
import { jsx as
|
|
776
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
695
777
|
function Card({ className, size = "default", ...props }) {
|
|
696
|
-
return /* @__PURE__ */
|
|
778
|
+
return /* @__PURE__ */ jsx11(
|
|
697
779
|
"div",
|
|
698
780
|
{
|
|
699
781
|
"data-slot": "card",
|
|
@@ -707,7 +789,7 @@ function Card({ className, size = "default", ...props }) {
|
|
|
707
789
|
);
|
|
708
790
|
}
|
|
709
791
|
function CardHeader({ className, ...props }) {
|
|
710
|
-
return /* @__PURE__ */
|
|
792
|
+
return /* @__PURE__ */ jsx11(
|
|
711
793
|
"div",
|
|
712
794
|
{
|
|
713
795
|
"data-slot": "card-header",
|
|
@@ -720,7 +802,7 @@ function CardHeader({ className, ...props }) {
|
|
|
720
802
|
);
|
|
721
803
|
}
|
|
722
804
|
function CardTitle({ className, ...props }) {
|
|
723
|
-
return /* @__PURE__ */
|
|
805
|
+
return /* @__PURE__ */ jsx11(
|
|
724
806
|
"div",
|
|
725
807
|
{
|
|
726
808
|
"data-slot": "card-title",
|
|
@@ -733,7 +815,7 @@ function CardTitle({ className, ...props }) {
|
|
|
733
815
|
);
|
|
734
816
|
}
|
|
735
817
|
function CardDescription({ className, ...props }) {
|
|
736
|
-
return /* @__PURE__ */
|
|
818
|
+
return /* @__PURE__ */ jsx11(
|
|
737
819
|
"div",
|
|
738
820
|
{
|
|
739
821
|
"data-slot": "card-description",
|
|
@@ -743,7 +825,7 @@ function CardDescription({ className, ...props }) {
|
|
|
743
825
|
);
|
|
744
826
|
}
|
|
745
827
|
function CardAction({ className, ...props }) {
|
|
746
|
-
return /* @__PURE__ */
|
|
828
|
+
return /* @__PURE__ */ jsx11(
|
|
747
829
|
"div",
|
|
748
830
|
{
|
|
749
831
|
"data-slot": "card-action",
|
|
@@ -753,10 +835,10 @@ function CardAction({ className, ...props }) {
|
|
|
753
835
|
);
|
|
754
836
|
}
|
|
755
837
|
function CardContent({ className, ...props }) {
|
|
756
|
-
return /* @__PURE__ */
|
|
838
|
+
return /* @__PURE__ */ jsx11("div", { "data-slot": "card-content", className: cn("px-(--card-spacing)", className), ...props });
|
|
757
839
|
}
|
|
758
840
|
function CardFooter({ className, ...props }) {
|
|
759
|
-
return /* @__PURE__ */
|
|
841
|
+
return /* @__PURE__ */ jsx11(
|
|
760
842
|
"div",
|
|
761
843
|
{
|
|
762
844
|
"data-slot": "card-footer",
|
|
@@ -774,9 +856,9 @@ import { Check } from "lucide-react";
|
|
|
774
856
|
import {
|
|
775
857
|
Checkbox as AriaCheckbox
|
|
776
858
|
} from "react-aria-components";
|
|
777
|
-
import { Fragment as
|
|
859
|
+
import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
778
860
|
function Checkbox({ className, children, ...props }) {
|
|
779
|
-
return /* @__PURE__ */
|
|
861
|
+
return /* @__PURE__ */ jsx12(
|
|
780
862
|
AriaCheckbox,
|
|
781
863
|
{
|
|
782
864
|
"data-slot": "checkbox",
|
|
@@ -785,13 +867,13 @@ function Checkbox({ className, children, ...props }) {
|
|
|
785
867
|
className
|
|
786
868
|
),
|
|
787
869
|
...props,
|
|
788
|
-
children: (state) => /* @__PURE__ */ jsxs3(
|
|
789
|
-
/* @__PURE__ */
|
|
870
|
+
children: (state) => /* @__PURE__ */ jsxs3(Fragment3, { children: [
|
|
871
|
+
/* @__PURE__ */ jsx12(
|
|
790
872
|
"span",
|
|
791
873
|
{
|
|
792
874
|
"aria-hidden": "true",
|
|
793
875
|
className: "grid size-4 place-items-center rounded border border-border bg-background text-primary-foreground transition-colors group-data-selected:border-primary group-data-selected:bg-primary group-data-focus-visible:ring-3 group-data-focus-visible:ring-ring/50",
|
|
794
|
-
children: /* @__PURE__ */
|
|
876
|
+
children: /* @__PURE__ */ jsx12(Check, { className: "size-3 opacity-0 transition-opacity group-data-selected:opacity-100 motion-reduce:transition-none" })
|
|
795
877
|
}
|
|
796
878
|
),
|
|
797
879
|
typeof children === "function" ? children(state) : children
|
|
@@ -800,28 +882,96 @@ function Checkbox({ className, children, ...props }) {
|
|
|
800
882
|
);
|
|
801
883
|
}
|
|
802
884
|
|
|
885
|
+
// src/ui/collapsible/collapsible.tsx
|
|
886
|
+
import * as React3 from "react";
|
|
887
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
888
|
+
var CollapsibleContext = React3.createContext(null);
|
|
889
|
+
function useCollapsibleContext() {
|
|
890
|
+
const context = React3.useContext(CollapsibleContext);
|
|
891
|
+
if (!context) throw new Error("Collapsible components must be rendered within Collapsible.");
|
|
892
|
+
return context;
|
|
893
|
+
}
|
|
894
|
+
function Collapsible({
|
|
895
|
+
children,
|
|
896
|
+
defaultOpen = false,
|
|
897
|
+
onOpenChange,
|
|
898
|
+
open: controlledOpen,
|
|
899
|
+
...props
|
|
900
|
+
}) {
|
|
901
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React3.useState(defaultOpen);
|
|
902
|
+
const contentId = React3.useId();
|
|
903
|
+
const open = controlledOpen ?? uncontrolledOpen;
|
|
904
|
+
const setOpen = React3.useCallback(
|
|
905
|
+
(nextOpen) => {
|
|
906
|
+
if (controlledOpen === void 0) setUncontrolledOpen(nextOpen);
|
|
907
|
+
onOpenChange?.(nextOpen);
|
|
908
|
+
},
|
|
909
|
+
[controlledOpen, onOpenChange]
|
|
910
|
+
);
|
|
911
|
+
return /* @__PURE__ */ jsx13(CollapsibleContext.Provider, { value: { contentId, open, setOpen }, children: /* @__PURE__ */ jsx13("div", { "data-slot": "collapsible", "data-state": open ? "open" : "closed", ...props, children }) });
|
|
912
|
+
}
|
|
913
|
+
function CollapsibleTrigger({ asChild = false, children, onClick, ...props }) {
|
|
914
|
+
const { contentId, open, setOpen } = useCollapsibleContext();
|
|
915
|
+
const handleClick = (event) => {
|
|
916
|
+
onClick?.(event);
|
|
917
|
+
if (!event.defaultPrevented) setOpen(!open);
|
|
918
|
+
};
|
|
919
|
+
if (asChild && React3.isValidElement(children)) {
|
|
920
|
+
const child = children;
|
|
921
|
+
return React3.cloneElement(child, {
|
|
922
|
+
...props,
|
|
923
|
+
"aria-controls": contentId,
|
|
924
|
+
"aria-expanded": open,
|
|
925
|
+
"data-slot": "collapsible-trigger",
|
|
926
|
+
"data-state": open ? "open" : "closed",
|
|
927
|
+
onClick: (event) => {
|
|
928
|
+
child.props.onClick?.(event);
|
|
929
|
+
handleClick(event);
|
|
930
|
+
}
|
|
931
|
+
});
|
|
932
|
+
}
|
|
933
|
+
return /* @__PURE__ */ jsx13(
|
|
934
|
+
"button",
|
|
935
|
+
{
|
|
936
|
+
type: "button",
|
|
937
|
+
"data-slot": "collapsible-trigger",
|
|
938
|
+
"data-state": open ? "open" : "closed",
|
|
939
|
+
"aria-controls": contentId,
|
|
940
|
+
"aria-expanded": open,
|
|
941
|
+
onClick: handleClick,
|
|
942
|
+
...props,
|
|
943
|
+
children
|
|
944
|
+
}
|
|
945
|
+
);
|
|
946
|
+
}
|
|
947
|
+
function CollapsibleContent({ children, ...props }) {
|
|
948
|
+
const { contentId, open } = useCollapsibleContext();
|
|
949
|
+
if (!open) return null;
|
|
950
|
+
return /* @__PURE__ */ jsx13("div", { id: contentId, "data-slot": "collapsible-content", "data-state": "open", ...props, children });
|
|
951
|
+
}
|
|
952
|
+
|
|
803
953
|
// src/ui/combobox/combobox.tsx
|
|
804
|
-
import { Fragment as
|
|
805
|
-
import { ComboBox as AriaComboBox, ComboBoxValue, FieldError, Input, Label, ListBox, ListBoxItem, Popover, Text } from "react-aria-components";
|
|
806
|
-
import { jsx as
|
|
954
|
+
import { Fragment as Fragment4, useMemo, useState as useState7 } from "react";
|
|
955
|
+
import { ComboBox as AriaComboBox, ComboBoxValue, FieldError, Input, Label, ListBox, ListBoxItem, Popover, Text as Text2 } from "react-aria-components";
|
|
956
|
+
import { jsx as jsx14, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
807
957
|
var Combobox = AriaComboBox;
|
|
808
958
|
function ComboboxInput({ className, ...props }) {
|
|
809
|
-
return /* @__PURE__ */
|
|
959
|
+
return /* @__PURE__ */ jsx14(Input, { "data-slot": "combobox-input", className: cn("h-9 w-full rounded-lg border border-border bg-background px-2.5 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props });
|
|
810
960
|
}
|
|
811
961
|
function ComboboxContent({ className, ...props }) {
|
|
812
|
-
return /* @__PURE__ */
|
|
962
|
+
return /* @__PURE__ */ jsx14(Popover, { "data-slot": "combobox-content", className: cn("max-h-72 w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", className), ...props });
|
|
813
963
|
}
|
|
814
964
|
function ComboboxList({ className, emptyState, ...props }) {
|
|
815
|
-
return /* @__PURE__ */
|
|
965
|
+
return /* @__PURE__ */ jsx14(ListBox, { "data-slot": "combobox-list", className: cn("max-h-64 overflow-y-auto", className), renderEmptyState: emptyState ? () => emptyState : void 0, ...props });
|
|
816
966
|
}
|
|
817
967
|
function ComboboxItem({ className, children, ...props }) {
|
|
818
|
-
return /* @__PURE__ */
|
|
968
|
+
return /* @__PURE__ */ jsx14(ListBoxItem, { "data-slot": "combobox-item", className: cn("flex w-full cursor-default items-center justify-between rounded-md px-2 py-2 text-sm outline-none transition-colors data-focused:bg-muted data-focused:text-foreground data-hovered:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props, children });
|
|
819
969
|
}
|
|
820
970
|
function HighlightMatch({ text, query, className }) {
|
|
821
|
-
return /* @__PURE__ */
|
|
971
|
+
return /* @__PURE__ */ jsx14("span", { className, children: getTextMatchParts(text, query).map((part, index) => part.match ? /* @__PURE__ */ jsx14("mark", { className: "rounded bg-accent px-0.5 text-accent-foreground", children: part.text }, `${part.text}-${index}`) : /* @__PURE__ */ jsx14(Fragment4, { children: part.text }, `${part.text}-${index}`)) });
|
|
822
972
|
}
|
|
823
|
-
function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inputValue: controlledInputValue, onInputChange, selectedKey, onSelectionChange, label, description, errorMessage, emptyState = /* @__PURE__ */
|
|
824
|
-
const [internalInputValue, setInternalInputValue] =
|
|
973
|
+
function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inputValue: controlledInputValue, onInputChange, selectedKey, onSelectionChange, label, description, errorMessage, emptyState = /* @__PURE__ */ jsx14("p", { className: "px-3 py-7 text-center text-sm text-muted-foreground", children: "No hay resultados." }), suggestion = true, placeholder, className, onKeyDown: _onKeyDown, ...props }) {
|
|
974
|
+
const [internalInputValue, setInternalInputValue] = useState7("");
|
|
825
975
|
const inputValue = controlledInputValue ?? internalInputValue;
|
|
826
976
|
const setInputValue = (value) => {
|
|
827
977
|
setInternalInputValue(value);
|
|
@@ -845,49 +995,49 @@ function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inp
|
|
|
845
995
|
if (item) setInputValue(getItemLabel(item));
|
|
846
996
|
onSelectionChange?.(key, item);
|
|
847
997
|
}, children: [
|
|
848
|
-
label && /* @__PURE__ */
|
|
998
|
+
label && /* @__PURE__ */ jsx14(Label, { className: "text-sm font-medium text-foreground", children: label }),
|
|
849
999
|
/* @__PURE__ */ jsxs4("div", { className: "relative", children: [
|
|
850
1000
|
suggestionLabel && /* @__PURE__ */ jsxs4("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-y-0 left-2.5 z-0 flex items-center whitespace-pre text-sm text-muted-foreground/60", children: [
|
|
851
|
-
/* @__PURE__ */
|
|
1001
|
+
/* @__PURE__ */ jsx14("span", { className: "text-transparent", children: inputValue }),
|
|
852
1002
|
suggestionLabel.slice(inputValue.length)
|
|
853
1003
|
] }),
|
|
854
|
-
/* @__PURE__ */
|
|
1004
|
+
/* @__PURE__ */ jsx14(ComboboxInput, { "aria-autocomplete": suggestionLabel ? "both" : "list", placeholder, onKeyDown: handleKeyDown, className: "relative z-10 bg-transparent" })
|
|
855
1005
|
] }),
|
|
856
|
-
description && /* @__PURE__ */
|
|
857
|
-
errorMessage && /* @__PURE__ */
|
|
858
|
-
/* @__PURE__ */
|
|
1006
|
+
description && /* @__PURE__ */ jsx14(Text2, { slot: "description", className: "text-xs text-muted-foreground", children: description }),
|
|
1007
|
+
errorMessage && /* @__PURE__ */ jsx14(FieldError, { className: "text-xs text-destructive", children: errorMessage }),
|
|
1008
|
+
/* @__PURE__ */ jsx14(ComboboxContent, { children: /* @__PURE__ */ jsx14(ComboboxList, { emptyState, children: (item) => /* @__PURE__ */ jsx14(ComboboxItem, { id: getItemKey(item), textValue: getItemLabel(item), children: renderItem ? renderItem(item, inputValue) : /* @__PURE__ */ jsx14(HighlightMatch, { text: getItemLabel(item), query: inputValue }) }) }) })
|
|
859
1009
|
] });
|
|
860
1010
|
}
|
|
861
1011
|
|
|
862
1012
|
// src/ui/command/command.tsx
|
|
863
1013
|
import { ComboBox as AriaComboBox2, Input as AriaInput, ListBox as ListBox2, ListBoxItem as ListBoxItem2, Popover as Popover2 } from "react-aria-components";
|
|
864
|
-
import { jsx as
|
|
1014
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
865
1015
|
function Command({ className, ...props }) {
|
|
866
|
-
return /* @__PURE__ */
|
|
1016
|
+
return /* @__PURE__ */ jsx15(AriaComboBox2, { "data-slot": "command", className: cn("w-full", className), ...props });
|
|
867
1017
|
}
|
|
868
1018
|
function CommandInput({ className, ...props }) {
|
|
869
|
-
return /* @__PURE__ */
|
|
1019
|
+
return /* @__PURE__ */ jsx15(AriaInput, { "data-slot": "command-input", className: cn("h-9 w-full border-0 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground", className), ...props });
|
|
870
1020
|
}
|
|
871
1021
|
function CommandContent({ className, ...props }) {
|
|
872
|
-
return /* @__PURE__ */
|
|
1022
|
+
return /* @__PURE__ */ jsx15(Popover2, { "data-slot": "command-content", className: cn("w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 shadow-lg outline-none", className), ...props });
|
|
873
1023
|
}
|
|
874
1024
|
function CommandList({ className, ...props }) {
|
|
875
|
-
return /* @__PURE__ */
|
|
1025
|
+
return /* @__PURE__ */ jsx15(ListBox2, { "data-slot": "command-list", className: cn("max-h-72 overflow-y-auto", className), ...props });
|
|
876
1026
|
}
|
|
877
1027
|
function CommandItem({ className, ...props }) {
|
|
878
|
-
return /* @__PURE__ */
|
|
1028
|
+
return /* @__PURE__ */ jsx15(ListBoxItem2, { "data-slot": "command-item", className: cn("flex cursor-default items-center rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props });
|
|
879
1029
|
}
|
|
880
1030
|
|
|
881
1031
|
// src/ui/modal-dialog/modal-dialog.tsx
|
|
882
1032
|
import { X } from "lucide-react";
|
|
883
1033
|
import {
|
|
884
|
-
Dialog as
|
|
885
|
-
Heading,
|
|
886
|
-
Modal,
|
|
887
|
-
ModalOverlay,
|
|
888
|
-
Text as
|
|
1034
|
+
Dialog as AriaDialog2,
|
|
1035
|
+
Heading as Heading2,
|
|
1036
|
+
Modal as Modal2,
|
|
1037
|
+
ModalOverlay as ModalOverlay2,
|
|
1038
|
+
Text as Text3
|
|
889
1039
|
} from "react-aria-components";
|
|
890
|
-
import { Fragment as
|
|
1040
|
+
import { Fragment as Fragment5, jsx as jsx16, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
891
1041
|
var sizeClasses = {
|
|
892
1042
|
sm: "w-[min(calc(100dvw-2rem),24rem)]",
|
|
893
1043
|
md: "w-[min(calc(100dvw-2rem),28rem)]",
|
|
@@ -907,35 +1057,35 @@ function ModalDialog({
|
|
|
907
1057
|
...props
|
|
908
1058
|
}) {
|
|
909
1059
|
const layoutClass = children ? footer ? "grid-rows-[auto_minmax(0,1fr)_auto]" : "grid-rows-[auto_minmax(0,1fr)]" : "grid-rows-[auto_auto]";
|
|
910
|
-
return /* @__PURE__ */
|
|
911
|
-
|
|
1060
|
+
return /* @__PURE__ */ jsx16(
|
|
1061
|
+
ModalOverlay2,
|
|
912
1062
|
{
|
|
913
1063
|
isOpen: open,
|
|
914
1064
|
onOpenChange,
|
|
915
1065
|
className: "fixed inset-0 z-50 grid place-items-center bg-black/20 p-4 backdrop-blur-[1px] motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out",
|
|
916
1066
|
...props,
|
|
917
|
-
children: /* @__PURE__ */
|
|
918
|
-
|
|
1067
|
+
children: /* @__PURE__ */ jsx16(
|
|
1068
|
+
Modal2,
|
|
919
1069
|
{
|
|
920
1070
|
className: cn(
|
|
921
1071
|
"max-h-[calc(100dvh-2rem)] outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out",
|
|
922
1072
|
sizeClasses[size],
|
|
923
1073
|
className
|
|
924
1074
|
),
|
|
925
|
-
children: /* @__PURE__ */
|
|
926
|
-
|
|
1075
|
+
children: /* @__PURE__ */ jsx16(
|
|
1076
|
+
AriaDialog2,
|
|
927
1077
|
{
|
|
928
1078
|
className: cn(
|
|
929
1079
|
"grid max-h-[calc(100dvh-2rem)] overflow-hidden rounded-xl bg-background text-foreground shadow-xl outline-none",
|
|
930
1080
|
layoutClass
|
|
931
1081
|
),
|
|
932
|
-
children: ({ close }) => /* @__PURE__ */ jsxs5(
|
|
1082
|
+
children: ({ close }) => /* @__PURE__ */ jsxs5(Fragment5, { children: [
|
|
933
1083
|
/* @__PURE__ */ jsxs5("header", { "data-slot": "modal-dialog-header", className: "flex items-start gap-3 border-b border-border px-5 py-4", children: [
|
|
934
1084
|
/* @__PURE__ */ jsxs5("div", { className: "min-w-0 flex-1", children: [
|
|
935
|
-
/* @__PURE__ */
|
|
936
|
-
description ? /* @__PURE__ */
|
|
1085
|
+
/* @__PURE__ */ jsx16(Heading2, { slot: "title", className: "font-heading text-base leading-none font-medium", children: title }),
|
|
1086
|
+
description ? /* @__PURE__ */ jsx16(Text3, { slot: "description", className: "mt-2 text-sm text-muted-foreground", children: description }) : null
|
|
937
1087
|
] }),
|
|
938
|
-
showCloseButton ? /* @__PURE__ */
|
|
1088
|
+
showCloseButton ? /* @__PURE__ */ jsx16(
|
|
939
1089
|
Button,
|
|
940
1090
|
{
|
|
941
1091
|
"aria-label": "Cerrar di\xE1logo",
|
|
@@ -943,12 +1093,12 @@ function ModalDialog({
|
|
|
943
1093
|
size: "icon",
|
|
944
1094
|
className: "-mr-2 -mt-1",
|
|
945
1095
|
onPress: close,
|
|
946
|
-
children: /* @__PURE__ */
|
|
1096
|
+
children: /* @__PURE__ */ jsx16(X, { "aria-hidden": "true", className: "size-4" })
|
|
947
1097
|
}
|
|
948
1098
|
) : null
|
|
949
1099
|
] }),
|
|
950
|
-
children ? /* @__PURE__ */
|
|
951
|
-
footer ? /* @__PURE__ */
|
|
1100
|
+
children ? /* @__PURE__ */ jsx16("div", { "data-slot": "modal-dialog-body", className: "min-h-0 overflow-y-auto px-5 py-4", children }) : null,
|
|
1101
|
+
footer ? /* @__PURE__ */ jsx16(
|
|
952
1102
|
"footer",
|
|
953
1103
|
{
|
|
954
1104
|
"data-slot": "modal-dialog-footer",
|
|
@@ -969,7 +1119,7 @@ function ModalDialog({
|
|
|
969
1119
|
}
|
|
970
1120
|
|
|
971
1121
|
// src/ui/confirm-dialog/confirm-dialog.tsx
|
|
972
|
-
import { Fragment as
|
|
1122
|
+
import { Fragment as Fragment6, jsx as jsx17, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
973
1123
|
function ConfirmDialog({
|
|
974
1124
|
open,
|
|
975
1125
|
onOpenChange,
|
|
@@ -981,7 +1131,7 @@ function ConfirmDialog({
|
|
|
981
1131
|
pending = false,
|
|
982
1132
|
onConfirm
|
|
983
1133
|
}) {
|
|
984
|
-
return /* @__PURE__ */
|
|
1134
|
+
return /* @__PURE__ */ jsx17(
|
|
985
1135
|
ModalDialog,
|
|
986
1136
|
{
|
|
987
1137
|
open,
|
|
@@ -989,9 +1139,9 @@ function ConfirmDialog({
|
|
|
989
1139
|
title,
|
|
990
1140
|
description,
|
|
991
1141
|
showCloseButton: false,
|
|
992
|
-
footer: /* @__PURE__ */ jsxs6(
|
|
993
|
-
/* @__PURE__ */
|
|
994
|
-
/* @__PURE__ */
|
|
1142
|
+
footer: /* @__PURE__ */ jsxs6(Fragment6, { children: [
|
|
1143
|
+
/* @__PURE__ */ jsx17(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
|
|
1144
|
+
/* @__PURE__ */ jsx17(Button, { variant: destructive ? "destructive" : "default", isDisabled: pending, onPress: onConfirm, children: confirmLabel })
|
|
995
1145
|
] })
|
|
996
1146
|
}
|
|
997
1147
|
);
|
|
@@ -1003,9 +1153,9 @@ import {
|
|
|
1003
1153
|
Button as DisclosureButton,
|
|
1004
1154
|
Disclosure,
|
|
1005
1155
|
DisclosurePanel,
|
|
1006
|
-
Heading as
|
|
1156
|
+
Heading as Heading3
|
|
1007
1157
|
} from "react-aria-components";
|
|
1008
|
-
import { jsx as
|
|
1158
|
+
import { jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1009
1159
|
function DangerZone({
|
|
1010
1160
|
title = "Zona de peligro",
|
|
1011
1161
|
description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
|
|
@@ -1013,55 +1163,55 @@ function DangerZone({
|
|
|
1013
1163
|
className,
|
|
1014
1164
|
children
|
|
1015
1165
|
}) {
|
|
1016
|
-
return /* @__PURE__ */
|
|
1017
|
-
/* @__PURE__ */
|
|
1166
|
+
return /* @__PURE__ */ jsx18(Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ jsxs7(Card, { className: cn("border-destructive/30", className), children: [
|
|
1167
|
+
/* @__PURE__ */ jsx18(Heading3, { className: "flex", children: /* @__PURE__ */ jsxs7(
|
|
1018
1168
|
DisclosureButton,
|
|
1019
1169
|
{
|
|
1020
1170
|
slot: "trigger",
|
|
1021
1171
|
"data-slot": "danger-zone-trigger",
|
|
1022
1172
|
className: "group/danger flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
1023
1173
|
children: [
|
|
1024
|
-
/* @__PURE__ */
|
|
1174
|
+
/* @__PURE__ */ jsx18(ShieldAlert, { className: "size-4 shrink-0 text-destructive" }),
|
|
1025
1175
|
/* @__PURE__ */ jsxs7("span", { className: "flex flex-1 flex-col gap-0.5", children: [
|
|
1026
|
-
/* @__PURE__ */
|
|
1027
|
-
/* @__PURE__ */
|
|
1176
|
+
/* @__PURE__ */ jsx18("span", { className: "font-heading text-base leading-snug font-medium text-destructive", children: title }),
|
|
1177
|
+
/* @__PURE__ */ jsx18("span", { className: "text-xs text-muted-foreground", children: description })
|
|
1028
1178
|
] }),
|
|
1029
|
-
/* @__PURE__ */
|
|
1179
|
+
/* @__PURE__ */ jsx18(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground transition-transform group-aria-expanded/danger:rotate-180" })
|
|
1030
1180
|
]
|
|
1031
1181
|
}
|
|
1032
1182
|
) }),
|
|
1033
|
-
/* @__PURE__ */
|
|
1183
|
+
/* @__PURE__ */ jsx18(DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ jsx18(CardContent, { children }) })
|
|
1034
1184
|
] }) });
|
|
1035
1185
|
}
|
|
1036
1186
|
|
|
1037
1187
|
// src/ui/dialog/dialog.tsx
|
|
1038
1188
|
import { XIcon } from "lucide-react";
|
|
1039
|
-
import * as
|
|
1189
|
+
import * as React4 from "react";
|
|
1040
1190
|
import {
|
|
1041
|
-
Dialog as
|
|
1042
|
-
Heading as
|
|
1043
|
-
Modal as
|
|
1044
|
-
ModalOverlay as
|
|
1045
|
-
Text as
|
|
1191
|
+
Dialog as AriaDialog3,
|
|
1192
|
+
Heading as Heading4,
|
|
1193
|
+
Modal as Modal3,
|
|
1194
|
+
ModalOverlay as ModalOverlay3,
|
|
1195
|
+
Text as Text4
|
|
1046
1196
|
} from "react-aria-components";
|
|
1047
|
-
import { Fragment as
|
|
1048
|
-
var DialogContext =
|
|
1197
|
+
import { Fragment as Fragment7, jsx as jsx19, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1198
|
+
var DialogContext = React4.createContext(null);
|
|
1049
1199
|
function useDialogContext() {
|
|
1050
|
-
const context =
|
|
1200
|
+
const context = React4.useContext(DialogContext);
|
|
1051
1201
|
if (!context) throw new Error("Dialog components must be rendered within Dialog.");
|
|
1052
1202
|
return context;
|
|
1053
1203
|
}
|
|
1054
1204
|
function Dialog({ children, defaultOpen = false, onOpenChange, open: controlledOpen }) {
|
|
1055
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
1205
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React4.useState(defaultOpen);
|
|
1056
1206
|
const open = controlledOpen ?? uncontrolledOpen;
|
|
1057
|
-
const setOpen =
|
|
1207
|
+
const setOpen = React4.useCallback(
|
|
1058
1208
|
(nextOpen) => {
|
|
1059
1209
|
if (controlledOpen === void 0) setUncontrolledOpen(nextOpen);
|
|
1060
1210
|
onOpenChange?.(nextOpen);
|
|
1061
1211
|
},
|
|
1062
1212
|
[controlledOpen, onOpenChange]
|
|
1063
1213
|
);
|
|
1064
|
-
return /* @__PURE__ */
|
|
1214
|
+
return /* @__PURE__ */ jsx19(DialogContext.Provider, { value: { open, setOpen }, children });
|
|
1065
1215
|
}
|
|
1066
1216
|
function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
1067
1217
|
const { setOpen } = useDialogContext();
|
|
@@ -1069,9 +1219,9 @@ function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
|
1069
1219
|
onClick?.(event);
|
|
1070
1220
|
if (!event.defaultPrevented) setOpen(true);
|
|
1071
1221
|
};
|
|
1072
|
-
if (asChild &&
|
|
1222
|
+
if (asChild && React4.isValidElement(children)) {
|
|
1073
1223
|
const child = children;
|
|
1074
|
-
return
|
|
1224
|
+
return React4.cloneElement(child, {
|
|
1075
1225
|
...props,
|
|
1076
1226
|
"data-slot": "dialog-trigger",
|
|
1077
1227
|
onClick: (event) => {
|
|
@@ -1080,16 +1230,16 @@ function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
|
1080
1230
|
}
|
|
1081
1231
|
});
|
|
1082
1232
|
}
|
|
1083
|
-
return /* @__PURE__ */
|
|
1233
|
+
return /* @__PURE__ */ jsx19(Button, { "data-slot": "dialog-trigger", onPress: () => setOpen(true), ...props, children });
|
|
1084
1234
|
}
|
|
1085
1235
|
function DialogPortal({ children }) {
|
|
1086
|
-
return /* @__PURE__ */
|
|
1236
|
+
return /* @__PURE__ */ jsx19(Fragment7, { children });
|
|
1087
1237
|
}
|
|
1088
1238
|
function DialogOverlay({ children, className, ...props }) {
|
|
1089
1239
|
const { open, setOpen } = useDialogContext();
|
|
1090
1240
|
if (!open) return null;
|
|
1091
|
-
return /* @__PURE__ */
|
|
1092
|
-
|
|
1241
|
+
return /* @__PURE__ */ jsx19(
|
|
1242
|
+
ModalOverlay3,
|
|
1093
1243
|
{
|
|
1094
1244
|
"data-slot": "dialog-overlay",
|
|
1095
1245
|
isDismissable: true,
|
|
@@ -1112,21 +1262,21 @@ function DialogContent({
|
|
|
1112
1262
|
...props
|
|
1113
1263
|
}) {
|
|
1114
1264
|
const { setOpen } = useDialogContext();
|
|
1115
|
-
return /* @__PURE__ */
|
|
1265
|
+
return /* @__PURE__ */ jsx19(DialogPortal, { children: /* @__PURE__ */ jsx19(
|
|
1116
1266
|
DialogOverlay,
|
|
1117
1267
|
{
|
|
1118
1268
|
onClick: (event) => {
|
|
1119
1269
|
if (event.target === event.currentTarget) onOverlayClick?.(event);
|
|
1120
1270
|
},
|
|
1121
|
-
children: /* @__PURE__ */
|
|
1122
|
-
|
|
1271
|
+
children: /* @__PURE__ */ jsx19(
|
|
1272
|
+
Modal3,
|
|
1123
1273
|
{
|
|
1124
1274
|
className: cn(
|
|
1125
1275
|
"w-full max-w-[calc(100%-2rem)] max-h-[calc(100dvh-2rem)] outline-none sm:max-w-sm",
|
|
1126
1276
|
className
|
|
1127
1277
|
),
|
|
1128
1278
|
children: /* @__PURE__ */ jsxs8(
|
|
1129
|
-
|
|
1279
|
+
AriaDialog3,
|
|
1130
1280
|
{
|
|
1131
1281
|
"data-slot": "dialog-content",
|
|
1132
1282
|
className: cn(
|
|
@@ -1136,7 +1286,7 @@ function DialogContent({
|
|
|
1136
1286
|
...props,
|
|
1137
1287
|
children: [
|
|
1138
1288
|
children,
|
|
1139
|
-
showCloseButton ? /* @__PURE__ */
|
|
1289
|
+
showCloseButton ? /* @__PURE__ */ jsx19(
|
|
1140
1290
|
Button,
|
|
1141
1291
|
{
|
|
1142
1292
|
"aria-label": "Cerrar di\xE1logo",
|
|
@@ -1145,7 +1295,7 @@ function DialogContent({
|
|
|
1145
1295
|
className: "absolute top-2 right-2",
|
|
1146
1296
|
size: "icon-sm",
|
|
1147
1297
|
onPress: () => setOpen(false),
|
|
1148
|
-
children: /* @__PURE__ */
|
|
1298
|
+
children: /* @__PURE__ */ jsx19(XIcon, {})
|
|
1149
1299
|
}
|
|
1150
1300
|
) : null
|
|
1151
1301
|
]
|
|
@@ -1158,9 +1308,9 @@ function DialogContent({
|
|
|
1158
1308
|
}
|
|
1159
1309
|
function DialogClose({ asChild = false, children, onClick, ...props }) {
|
|
1160
1310
|
const { setOpen } = useDialogContext();
|
|
1161
|
-
if (asChild &&
|
|
1311
|
+
if (asChild && React4.isValidElement(children)) {
|
|
1162
1312
|
const child = children;
|
|
1163
|
-
return
|
|
1313
|
+
return React4.cloneElement(child, {
|
|
1164
1314
|
...props,
|
|
1165
1315
|
"data-slot": "dialog-close",
|
|
1166
1316
|
onClick: (event) => {
|
|
@@ -1169,31 +1319,31 @@ function DialogClose({ asChild = false, children, onClick, ...props }) {
|
|
|
1169
1319
|
}
|
|
1170
1320
|
});
|
|
1171
1321
|
}
|
|
1172
|
-
return /* @__PURE__ */
|
|
1322
|
+
return /* @__PURE__ */ jsx19(Button, { "data-slot": "dialog-close", onPress: () => setOpen(false), ...props, children });
|
|
1173
1323
|
}
|
|
1174
1324
|
function DialogHeader({ className, ...props }) {
|
|
1175
|
-
return /* @__PURE__ */
|
|
1325
|
+
return /* @__PURE__ */ jsx19("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
|
|
1176
1326
|
}
|
|
1177
1327
|
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
1178
1328
|
return /* @__PURE__ */ jsxs8("div", { "data-slot": "dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:flex-wrap sm:justify-end", className), ...props, children: [
|
|
1179
1329
|
children,
|
|
1180
|
-
showCloseButton ? /* @__PURE__ */
|
|
1330
|
+
showCloseButton ? /* @__PURE__ */ jsx19(DialogClose, { variant: "outline", children: "Cerrar" }) : null
|
|
1181
1331
|
] });
|
|
1182
1332
|
}
|
|
1183
1333
|
function DialogTitle({ className, ...props }) {
|
|
1184
|
-
return /* @__PURE__ */
|
|
1334
|
+
return /* @__PURE__ */ jsx19(Heading4, { slot: "title", "data-slot": "dialog-title", className: cn("font-heading text-base leading-none font-medium", className), ...props });
|
|
1185
1335
|
}
|
|
1186
1336
|
function DialogDescription({ className, ...props }) {
|
|
1187
|
-
return /* @__PURE__ */
|
|
1337
|
+
return /* @__PURE__ */ jsx19(Text4, { slot: "description", "data-slot": "dialog-description", className: cn("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props });
|
|
1188
1338
|
}
|
|
1189
1339
|
|
|
1190
1340
|
// src/ui/doc-preview/doc-preview.tsx
|
|
1191
1341
|
import { FileText, Image } from "lucide-react";
|
|
1192
|
-
import { jsx as
|
|
1342
|
+
import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1193
1343
|
function DocPreview({ url, mimeType, name }) {
|
|
1194
|
-
if (!url) return /* @__PURE__ */
|
|
1344
|
+
if (!url) return /* @__PURE__ */ jsx20(Fallback, { mimeType, reason: "no-url" });
|
|
1195
1345
|
if (mimeType === "application/pdf" || mimeType === "text/plain" || mimeType === "text/csv") {
|
|
1196
|
-
return /* @__PURE__ */
|
|
1346
|
+
return /* @__PURE__ */ jsx20(
|
|
1197
1347
|
"iframe",
|
|
1198
1348
|
{
|
|
1199
1349
|
src: url,
|
|
@@ -1204,39 +1354,39 @@ function DocPreview({ url, mimeType, name }) {
|
|
|
1204
1354
|
);
|
|
1205
1355
|
}
|
|
1206
1356
|
if (mimeType?.startsWith("image/")) {
|
|
1207
|
-
return /* @__PURE__ */
|
|
1357
|
+
return /* @__PURE__ */ jsx20("div", { className: "flex justify-center rounded-sm bg-muted/30 p-6", children: /* @__PURE__ */ jsx20("img", { src: url, alt: name, className: "max-h-[75vh] max-w-full rounded object-contain" }) });
|
|
1208
1358
|
}
|
|
1209
|
-
return /* @__PURE__ */
|
|
1359
|
+
return /* @__PURE__ */ jsx20(Fallback, { mimeType, reason: "unsupported" });
|
|
1210
1360
|
}
|
|
1211
1361
|
function Fallback({ mimeType, reason }) {
|
|
1212
1362
|
const Icon = mimeType?.startsWith("image/") ? Image : FileText;
|
|
1213
1363
|
const message = reason === "no-url" ? "No se pudo generar la URL de preview." : "Preview no disponible para este tipo de archivo.";
|
|
1214
1364
|
return /* @__PURE__ */ jsxs9("div", { className: "flex flex-col items-center justify-center gap-2 py-14 text-muted-foreground", children: [
|
|
1215
|
-
/* @__PURE__ */
|
|
1216
|
-
/* @__PURE__ */
|
|
1217
|
-
mimeType ? /* @__PURE__ */
|
|
1218
|
-
/* @__PURE__ */
|
|
1365
|
+
/* @__PURE__ */ jsx20(Icon, { className: "size-9 opacity-30" }),
|
|
1366
|
+
/* @__PURE__ */ jsx20("p", { className: "text-sm", children: message }),
|
|
1367
|
+
mimeType ? /* @__PURE__ */ jsx20("p", { className: "font-mono text-xs opacity-50", children: mimeType }) : null,
|
|
1368
|
+
/* @__PURE__ */ jsx20("p", { className: "text-xs opacity-50", children: "Usa el bot\xF3n Descargar para abrir el archivo." })
|
|
1219
1369
|
] });
|
|
1220
1370
|
}
|
|
1221
1371
|
|
|
1222
1372
|
// src/ui/drawer/drawer.tsx
|
|
1223
|
-
import { Dialog as
|
|
1224
|
-
import { jsx as
|
|
1373
|
+
import { Dialog as AriaDialog4, Heading as Heading5, Modal as Modal4, ModalOverlay as ModalOverlay4 } from "react-aria-components";
|
|
1374
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1225
1375
|
var sideStyles = { left: "inset-y-0 left-0 h-full w-[min(22rem,calc(100%-2rem))] data-entering:animate-ui-surface-in", right: "inset-y-0 right-0 h-full w-[min(22rem,calc(100%-2rem))] data-entering:animate-ui-surface-in", bottom: "inset-x-0 bottom-0 max-h-[85vh] w-full data-entering:animate-ui-surface-in" };
|
|
1226
1376
|
function Drawer({ children, side = "right", className, ...props }) {
|
|
1227
|
-
return /* @__PURE__ */
|
|
1377
|
+
return /* @__PURE__ */ jsx21(ModalOverlay4, { isDismissable: true, className: "fixed inset-0 z-50 bg-black/20 backdrop-blur-[1px] motion-safe:data-entering:animate-ui-overlay-in motion-safe:data-exiting:animate-ui-overlay-out", ...props, children: /* @__PURE__ */ jsx21(Modal4, { className: cn("absolute grid gap-4 overflow-y-auto rounded-xl border border-border bg-background p-5 text-foreground shadow-xl outline-none", sideStyles[side], className), children: /* @__PURE__ */ jsx21(AriaDialog4, { "data-slot": "drawer", className: "outline-none", children }) }) });
|
|
1228
1378
|
}
|
|
1229
1379
|
function DrawerHeader({ className, ...props }) {
|
|
1230
|
-
return /* @__PURE__ */
|
|
1380
|
+
return /* @__PURE__ */ jsx21("div", { "data-slot": "drawer-header", className: cn("flex flex-col gap-1.5", className), ...props });
|
|
1231
1381
|
}
|
|
1232
1382
|
function DrawerFooter({ className, ...props }) {
|
|
1233
|
-
return /* @__PURE__ */
|
|
1383
|
+
return /* @__PURE__ */ jsx21("div", { "data-slot": "drawer-footer", className: cn("mt-auto flex flex-col-reverse gap-2 pt-4 sm:flex-row sm:justify-end", className), ...props });
|
|
1234
1384
|
}
|
|
1235
1385
|
function DrawerTitle({ className, ...props }) {
|
|
1236
|
-
return /* @__PURE__ */
|
|
1386
|
+
return /* @__PURE__ */ jsx21(Heading5, { slot: "title", "data-slot": "drawer-title", className: cn("text-base font-semibold", className), ...props });
|
|
1237
1387
|
}
|
|
1238
1388
|
function DrawerDescription({ className, ...props }) {
|
|
1239
|
-
return /* @__PURE__ */
|
|
1389
|
+
return /* @__PURE__ */ jsx21("p", { "data-slot": "drawer-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
1240
1390
|
}
|
|
1241
1391
|
|
|
1242
1392
|
// src/ui/dropdown-menu/dropdown-menu.tsx
|
|
@@ -1254,11 +1404,11 @@ import {
|
|
|
1254
1404
|
Separator as SeparatorPrimitive2,
|
|
1255
1405
|
SubmenuTrigger as SubmenuTriggerPrimitive
|
|
1256
1406
|
} from "react-aria-components";
|
|
1257
|
-
import { Fragment as
|
|
1407
|
+
import { Fragment as Fragment8, jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1258
1408
|
function DropdownMenuTrigger({
|
|
1259
1409
|
...props
|
|
1260
1410
|
}) {
|
|
1261
|
-
return /* @__PURE__ */
|
|
1411
|
+
return /* @__PURE__ */ jsx22(MenuTriggerPrimitive, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
1262
1412
|
}
|
|
1263
1413
|
function DropdownMenu({
|
|
1264
1414
|
"data-slot": dataSlot = "dropdown-menu-content",
|
|
@@ -1269,7 +1419,7 @@ function DropdownMenu({
|
|
|
1269
1419
|
children,
|
|
1270
1420
|
...props
|
|
1271
1421
|
}) {
|
|
1272
|
-
return /* @__PURE__ */
|
|
1422
|
+
return /* @__PURE__ */ jsx22(
|
|
1273
1423
|
PopoverPrimitive,
|
|
1274
1424
|
{
|
|
1275
1425
|
"data-slot": dataSlot,
|
|
@@ -1277,7 +1427,7 @@ function DropdownMenu({
|
|
|
1277
1427
|
offset,
|
|
1278
1428
|
crossOffset,
|
|
1279
1429
|
className: cn("z-50 w-(--trigger-width) min-w-32 origin-(--trigger-anchor-point) overflow-x-hidden overflow-y-auto rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", className),
|
|
1280
|
-
children: /* @__PURE__ */
|
|
1430
|
+
children: /* @__PURE__ */ jsx22(
|
|
1281
1431
|
MenuPrimitive,
|
|
1282
1432
|
{
|
|
1283
1433
|
className: "max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden",
|
|
@@ -1291,14 +1441,14 @@ function DropdownMenu({
|
|
|
1291
1441
|
function DropdownMenuGroup({
|
|
1292
1442
|
...props
|
|
1293
1443
|
}) {
|
|
1294
|
-
return /* @__PURE__ */
|
|
1444
|
+
return /* @__PURE__ */ jsx22(MenuSectionPrimitive, { "data-slot": "dropdown-menu-group", ...props });
|
|
1295
1445
|
}
|
|
1296
1446
|
function DropdownMenuLabel({
|
|
1297
1447
|
className,
|
|
1298
1448
|
inset,
|
|
1299
1449
|
...props
|
|
1300
1450
|
}) {
|
|
1301
|
-
return /* @__PURE__ */
|
|
1451
|
+
return /* @__PURE__ */ jsx22(
|
|
1302
1452
|
HeaderPrimitive,
|
|
1303
1453
|
{
|
|
1304
1454
|
"data-slot": "dropdown-menu-label",
|
|
@@ -1330,7 +1480,7 @@ function DropdownMenuItem({
|
|
|
1330
1480
|
children,
|
|
1331
1481
|
...props
|
|
1332
1482
|
}) {
|
|
1333
|
-
return /* @__PURE__ */
|
|
1483
|
+
return /* @__PURE__ */ jsx22(
|
|
1334
1484
|
MenuItemPrimitive,
|
|
1335
1485
|
{
|
|
1336
1486
|
"data-slot": "dropdown-menu-item",
|
|
@@ -1344,13 +1494,13 @@ function DropdownMenuItem({
|
|
|
1344
1494
|
...props,
|
|
1345
1495
|
children: composeRenderProps(
|
|
1346
1496
|
children,
|
|
1347
|
-
(children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs10(
|
|
1348
|
-
selectionMode !== "none" ? /* @__PURE__ */
|
|
1497
|
+
(children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs10(Fragment8, { children: [
|
|
1498
|
+
selectionMode !== "none" ? /* @__PURE__ */ jsx22(
|
|
1349
1499
|
"span",
|
|
1350
1500
|
{
|
|
1351
1501
|
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
1352
1502
|
"data-slot": selectionMode === "single" ? "dropdown-menu-radio-item-indicator" : "dropdown-menu-checkbox-item-indicator",
|
|
1353
|
-
children: isSelected ? /* @__PURE__ */
|
|
1503
|
+
children: isSelected ? /* @__PURE__ */ jsx22(CheckIcon, {}) : null
|
|
1354
1504
|
}
|
|
1355
1505
|
) : null,
|
|
1356
1506
|
children2
|
|
@@ -1362,7 +1512,7 @@ function DropdownMenuItem({
|
|
|
1362
1512
|
function DropdownMenuSub({
|
|
1363
1513
|
...props
|
|
1364
1514
|
}) {
|
|
1365
|
-
return /* @__PURE__ */
|
|
1515
|
+
return /* @__PURE__ */ jsx22(SubmenuTriggerPrimitive, { "data-slot": "dropdown-menu-sub", ...props });
|
|
1366
1516
|
}
|
|
1367
1517
|
function DropdownMenuSubTrigger({
|
|
1368
1518
|
className,
|
|
@@ -1370,7 +1520,7 @@ function DropdownMenuSubTrigger({
|
|
|
1370
1520
|
children,
|
|
1371
1521
|
...props
|
|
1372
1522
|
}) {
|
|
1373
|
-
return /* @__PURE__ */
|
|
1523
|
+
return /* @__PURE__ */ jsx22(
|
|
1374
1524
|
MenuItemPrimitive,
|
|
1375
1525
|
{
|
|
1376
1526
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -1381,9 +1531,9 @@ function DropdownMenuSubTrigger({
|
|
|
1381
1531
|
className
|
|
1382
1532
|
),
|
|
1383
1533
|
...props,
|
|
1384
|
-
children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs10(
|
|
1534
|
+
children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs10(Fragment8, { children: [
|
|
1385
1535
|
children2,
|
|
1386
|
-
/* @__PURE__ */
|
|
1536
|
+
/* @__PURE__ */ jsx22(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
|
|
1387
1537
|
] }))
|
|
1388
1538
|
}
|
|
1389
1539
|
);
|
|
@@ -1395,7 +1545,7 @@ function DropdownMenuSubContent({
|
|
|
1395
1545
|
className,
|
|
1396
1546
|
...props
|
|
1397
1547
|
}) {
|
|
1398
|
-
return /* @__PURE__ */
|
|
1548
|
+
return /* @__PURE__ */ jsx22(
|
|
1399
1549
|
DropdownMenu,
|
|
1400
1550
|
{
|
|
1401
1551
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -1411,7 +1561,7 @@ function DropdownMenuSeparator({
|
|
|
1411
1561
|
className,
|
|
1412
1562
|
...props
|
|
1413
1563
|
}) {
|
|
1414
|
-
return /* @__PURE__ */
|
|
1564
|
+
return /* @__PURE__ */ jsx22(
|
|
1415
1565
|
SeparatorPrimitive2,
|
|
1416
1566
|
{
|
|
1417
1567
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -1424,7 +1574,7 @@ function DropdownMenuShortcut({
|
|
|
1424
1574
|
className,
|
|
1425
1575
|
...props
|
|
1426
1576
|
}) {
|
|
1427
|
-
return /* @__PURE__ */
|
|
1577
|
+
return /* @__PURE__ */ jsx22(
|
|
1428
1578
|
"span",
|
|
1429
1579
|
{
|
|
1430
1580
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -1439,9 +1589,9 @@ function DropdownMenuShortcut({
|
|
|
1439
1589
|
|
|
1440
1590
|
// src/ui/empty-state/empty-state.tsx
|
|
1441
1591
|
import { cva as cva7 } from "class-variance-authority";
|
|
1442
|
-
import { jsx as
|
|
1592
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1443
1593
|
function EmptyState({ className, ...props }) {
|
|
1444
|
-
return /* @__PURE__ */
|
|
1594
|
+
return /* @__PURE__ */ jsx23(
|
|
1445
1595
|
"div",
|
|
1446
1596
|
{
|
|
1447
1597
|
"data-slot": "empty-state",
|
|
@@ -1454,7 +1604,7 @@ function EmptyState({ className, ...props }) {
|
|
|
1454
1604
|
);
|
|
1455
1605
|
}
|
|
1456
1606
|
function EmptyStateHeader({ className, ...props }) {
|
|
1457
|
-
return /* @__PURE__ */
|
|
1607
|
+
return /* @__PURE__ */ jsx23(
|
|
1458
1608
|
"div",
|
|
1459
1609
|
{
|
|
1460
1610
|
"data-slot": "empty-state-header",
|
|
@@ -1480,7 +1630,7 @@ function EmptyStateMedia({
|
|
|
1480
1630
|
variant = "default",
|
|
1481
1631
|
...props
|
|
1482
1632
|
}) {
|
|
1483
|
-
return /* @__PURE__ */
|
|
1633
|
+
return /* @__PURE__ */ jsx23(
|
|
1484
1634
|
"div",
|
|
1485
1635
|
{
|
|
1486
1636
|
"data-slot": "empty-state-media",
|
|
@@ -1491,7 +1641,7 @@ function EmptyStateMedia({
|
|
|
1491
1641
|
);
|
|
1492
1642
|
}
|
|
1493
1643
|
function EmptyStateTitle({ className, ...props }) {
|
|
1494
|
-
return /* @__PURE__ */
|
|
1644
|
+
return /* @__PURE__ */ jsx23(
|
|
1495
1645
|
"h3",
|
|
1496
1646
|
{
|
|
1497
1647
|
"data-slot": "empty-state-title",
|
|
@@ -1501,7 +1651,7 @@ function EmptyStateTitle({ className, ...props }) {
|
|
|
1501
1651
|
);
|
|
1502
1652
|
}
|
|
1503
1653
|
function EmptyStateDescription({ className, ...props }) {
|
|
1504
|
-
return /* @__PURE__ */
|
|
1654
|
+
return /* @__PURE__ */ jsx23(
|
|
1505
1655
|
"p",
|
|
1506
1656
|
{
|
|
1507
1657
|
"data-slot": "empty-state-description",
|
|
@@ -1514,7 +1664,7 @@ function EmptyStateDescription({ className, ...props }) {
|
|
|
1514
1664
|
);
|
|
1515
1665
|
}
|
|
1516
1666
|
function EmptyStateContent({ className, ...props }) {
|
|
1517
|
-
return /* @__PURE__ */
|
|
1667
|
+
return /* @__PURE__ */ jsx23(
|
|
1518
1668
|
"div",
|
|
1519
1669
|
{
|
|
1520
1670
|
"data-slot": "empty-state-content",
|
|
@@ -1533,22 +1683,22 @@ import { cva as cva8 } from "class-variance-authority";
|
|
|
1533
1683
|
// src/ui/label/label.tsx
|
|
1534
1684
|
import { forwardRef } from "react";
|
|
1535
1685
|
import { Label as LabelPrimitive } from "react-aria-components";
|
|
1536
|
-
import { jsx as
|
|
1686
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1537
1687
|
var Label2 = forwardRef(function Label3({ className, ...props }, ref) {
|
|
1538
|
-
return /* @__PURE__ */
|
|
1688
|
+
return /* @__PURE__ */ jsx24(LabelPrimitive, { ref, "data-slot": "label", className: cn("flex items-center gap-2 text-sm font-medium leading-none select-none", className), ...props });
|
|
1539
1689
|
});
|
|
1540
1690
|
|
|
1541
1691
|
// src/ui/field/field.tsx
|
|
1542
|
-
import { jsx as
|
|
1692
|
+
import { jsx as jsx25, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1543
1693
|
function FieldSet({ className, ...props }) {
|
|
1544
|
-
return /* @__PURE__ */
|
|
1694
|
+
return /* @__PURE__ */ jsx25("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
|
|
1545
1695
|
}
|
|
1546
1696
|
function FieldLegend({
|
|
1547
1697
|
className,
|
|
1548
1698
|
variant = "legend",
|
|
1549
1699
|
...props
|
|
1550
1700
|
}) {
|
|
1551
|
-
return /* @__PURE__ */
|
|
1701
|
+
return /* @__PURE__ */ jsx25(
|
|
1552
1702
|
"legend",
|
|
1553
1703
|
{
|
|
1554
1704
|
"data-slot": "field-legend",
|
|
@@ -1562,7 +1712,7 @@ function FieldLegend({
|
|
|
1562
1712
|
);
|
|
1563
1713
|
}
|
|
1564
1714
|
function FieldGroup({ className, ...props }) {
|
|
1565
|
-
return /* @__PURE__ */
|
|
1715
|
+
return /* @__PURE__ */ jsx25(
|
|
1566
1716
|
"div",
|
|
1567
1717
|
{
|
|
1568
1718
|
"data-slot": "field-group",
|
|
@@ -1590,7 +1740,7 @@ var fieldVariants = cva8(
|
|
|
1590
1740
|
function Field({ className, orientation = "vertical", ...props }) {
|
|
1591
1741
|
return (
|
|
1592
1742
|
// biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.
|
|
1593
|
-
/* @__PURE__ */
|
|
1743
|
+
/* @__PURE__ */ jsx25(
|
|
1594
1744
|
"div",
|
|
1595
1745
|
{
|
|
1596
1746
|
role: "group",
|
|
@@ -1603,7 +1753,7 @@ function Field({ className, orientation = "vertical", ...props }) {
|
|
|
1603
1753
|
);
|
|
1604
1754
|
}
|
|
1605
1755
|
function FieldContent({ className, ...props }) {
|
|
1606
|
-
return /* @__PURE__ */
|
|
1756
|
+
return /* @__PURE__ */ jsx25(
|
|
1607
1757
|
"div",
|
|
1608
1758
|
{
|
|
1609
1759
|
"data-slot": "field-content",
|
|
@@ -1613,7 +1763,7 @@ function FieldContent({ className, ...props }) {
|
|
|
1613
1763
|
);
|
|
1614
1764
|
}
|
|
1615
1765
|
function FieldLabel({ className, ...props }) {
|
|
1616
|
-
return /* @__PURE__ */
|
|
1766
|
+
return /* @__PURE__ */ jsx25(
|
|
1617
1767
|
Label2,
|
|
1618
1768
|
{
|
|
1619
1769
|
"data-slot": "field-label",
|
|
@@ -1626,7 +1776,7 @@ function FieldLabel({ className, ...props }) {
|
|
|
1626
1776
|
);
|
|
1627
1777
|
}
|
|
1628
1778
|
function FieldTitle({ className, ...props }) {
|
|
1629
|
-
return /* @__PURE__ */
|
|
1779
|
+
return /* @__PURE__ */ jsx25(
|
|
1630
1780
|
"div",
|
|
1631
1781
|
{
|
|
1632
1782
|
"data-slot": "field-title",
|
|
@@ -1636,7 +1786,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
1636
1786
|
);
|
|
1637
1787
|
}
|
|
1638
1788
|
function FieldDescription({ className, ...props }) {
|
|
1639
|
-
return /* @__PURE__ */
|
|
1789
|
+
return /* @__PURE__ */ jsx25(
|
|
1640
1790
|
"p",
|
|
1641
1791
|
{
|
|
1642
1792
|
"data-slot": "field-description",
|
|
@@ -1657,8 +1807,8 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1657
1807
|
className: cn("relative -my-2 h-5 text-sm", className),
|
|
1658
1808
|
...props,
|
|
1659
1809
|
children: [
|
|
1660
|
-
/* @__PURE__ */
|
|
1661
|
-
children ? /* @__PURE__ */
|
|
1810
|
+
/* @__PURE__ */ jsx25(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
1811
|
+
children ? /* @__PURE__ */ jsx25(
|
|
1662
1812
|
"span",
|
|
1663
1813
|
{
|
|
1664
1814
|
"data-slot": "field-separator-content",
|
|
@@ -1672,9 +1822,9 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1672
1822
|
}
|
|
1673
1823
|
function FieldError2({ className, children, errors, ...props }) {
|
|
1674
1824
|
const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])];
|
|
1675
|
-
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */
|
|
1825
|
+
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ jsx25("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ jsx25("li", { children: message }, message)) }) : null);
|
|
1676
1826
|
if (!content) return null;
|
|
1677
|
-
return /* @__PURE__ */
|
|
1827
|
+
return /* @__PURE__ */ jsx25(
|
|
1678
1828
|
"div",
|
|
1679
1829
|
{
|
|
1680
1830
|
role: "alert",
|
|
@@ -1687,65 +1837,65 @@ function FieldError2({ className, children, errors, ...props }) {
|
|
|
1687
1837
|
}
|
|
1688
1838
|
|
|
1689
1839
|
// src/ui/form-feedback/form-feedback.tsx
|
|
1690
|
-
import { useCallback as
|
|
1840
|
+
import { useCallback as useCallback5, useEffect as useEffect4, useRef as useRef3, useState as useState9 } from "react";
|
|
1691
1841
|
import { CheckCircle, LoaderCircle, CircleAlert } from "lucide-react";
|
|
1692
|
-
import { jsx as
|
|
1842
|
+
import { jsx as jsx26, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1693
1843
|
function useFormFeedback(options) {
|
|
1694
1844
|
const resetMs = options?.successResetMs ?? 2500;
|
|
1695
|
-
const [state, setState] =
|
|
1845
|
+
const [state, setState] = useState9({ status: "idle" });
|
|
1696
1846
|
const timer = useRef3(null);
|
|
1697
|
-
const clearTimer =
|
|
1847
|
+
const clearTimer = useCallback5(() => {
|
|
1698
1848
|
if (timer.current) clearTimeout(timer.current);
|
|
1699
1849
|
timer.current = null;
|
|
1700
1850
|
}, []);
|
|
1701
1851
|
useEffect4(() => () => clearTimer(), [clearTimer]);
|
|
1702
|
-
const setPending =
|
|
1852
|
+
const setPending = useCallback5(() => {
|
|
1703
1853
|
clearTimer();
|
|
1704
1854
|
setState({ status: "pending" });
|
|
1705
1855
|
}, [clearTimer]);
|
|
1706
|
-
const setSuccess =
|
|
1856
|
+
const setSuccess = useCallback5((message) => {
|
|
1707
1857
|
clearTimer();
|
|
1708
1858
|
setState({ status: "success", message });
|
|
1709
1859
|
if (resetMs > 0) timer.current = setTimeout(() => setState({ status: "idle" }), resetMs);
|
|
1710
1860
|
}, [clearTimer, resetMs]);
|
|
1711
|
-
const setError =
|
|
1861
|
+
const setError = useCallback5((message) => {
|
|
1712
1862
|
clearTimer();
|
|
1713
1863
|
setState({ status: "error", message });
|
|
1714
1864
|
}, [clearTimer]);
|
|
1715
|
-
const reset =
|
|
1865
|
+
const reset = useCallback5(() => {
|
|
1716
1866
|
clearTimer();
|
|
1717
1867
|
setState({ status: "idle" });
|
|
1718
1868
|
}, [clearTimer]);
|
|
1719
1869
|
return { state, pending: state.status === "pending", setPending, setSuccess, setError, reset };
|
|
1720
1870
|
}
|
|
1721
1871
|
function FormFeedback({ state, className, pendingLabel = "Guardando\u2026", successLabel = "Guardado" }) {
|
|
1722
|
-
if (state.status === "idle") return /* @__PURE__ */
|
|
1872
|
+
if (state.status === "idle") return /* @__PURE__ */ jsx26("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
|
|
1723
1873
|
const error = state.status === "error";
|
|
1724
1874
|
const success = state.status === "success";
|
|
1725
1875
|
return /* @__PURE__ */ jsxs12("span", { role: error ? "alert" : "status", "aria-live": "polite", className: cn("inline-flex h-5 items-center gap-1.5 text-xs", error && "text-destructive", success && "text-success", state.status === "pending" && "text-muted-foreground", className), children: [
|
|
1726
|
-
state.status === "pending" && /* @__PURE__ */
|
|
1727
|
-
success && /* @__PURE__ */
|
|
1728
|
-
error && /* @__PURE__ */
|
|
1729
|
-
/* @__PURE__ */
|
|
1876
|
+
state.status === "pending" && /* @__PURE__ */ jsx26(LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
1877
|
+
success && /* @__PURE__ */ jsx26(CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1878
|
+
error && /* @__PURE__ */ jsx26(CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1879
|
+
/* @__PURE__ */ jsx26("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
|
|
1730
1880
|
] });
|
|
1731
1881
|
}
|
|
1732
1882
|
|
|
1733
1883
|
// src/ui/form-row/form-row.tsx
|
|
1734
|
-
import { Fragment as
|
|
1884
|
+
import { Fragment as Fragment9, jsx as jsx27, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1735
1885
|
function FormRow({ label, htmlFor, required, hint, error, className, children }) {
|
|
1736
1886
|
const hintId = hint ? `${htmlFor}-hint` : void 0;
|
|
1737
1887
|
const errorId = error ? `${htmlFor}-error` : void 0;
|
|
1738
1888
|
return /* @__PURE__ */ jsxs13("div", { "data-slot": "form-row", className: cn("flex flex-col gap-1.5", className), children: [
|
|
1739
1889
|
/* @__PURE__ */ jsxs13("label", { htmlFor, className: "text-sm font-medium text-foreground", children: [
|
|
1740
1890
|
label,
|
|
1741
|
-
required && /* @__PURE__ */ jsxs13(
|
|
1742
|
-
/* @__PURE__ */
|
|
1743
|
-
/* @__PURE__ */
|
|
1891
|
+
required && /* @__PURE__ */ jsxs13(Fragment9, { children: [
|
|
1892
|
+
/* @__PURE__ */ jsx27("span", { "aria-hidden": "true", className: "ml-0.5 text-destructive", children: "*" }),
|
|
1893
|
+
/* @__PURE__ */ jsx27("span", { className: "sr-only", children: " (obligatorio)" })
|
|
1744
1894
|
] })
|
|
1745
1895
|
] }),
|
|
1746
1896
|
children,
|
|
1747
|
-
hint && /* @__PURE__ */
|
|
1748
|
-
error && /* @__PURE__ */
|
|
1897
|
+
hint && /* @__PURE__ */ jsx27("p", { id: hintId, className: "text-xs text-muted-foreground", children: hint }),
|
|
1898
|
+
error && /* @__PURE__ */ jsx27("p", { id: errorId, role: "alert", className: "text-xs font-medium text-destructive", children: error })
|
|
1749
1899
|
] });
|
|
1750
1900
|
}
|
|
1751
1901
|
|
|
@@ -1753,20 +1903,20 @@ function FormRow({ label, htmlFor, required, hint, error, className, children })
|
|
|
1753
1903
|
import { Link as Link2 } from "react-aria-components";
|
|
1754
1904
|
|
|
1755
1905
|
// src/ui/tooltip/tooltip.tsx
|
|
1756
|
-
import * as
|
|
1906
|
+
import * as React6 from "react";
|
|
1757
1907
|
import {
|
|
1758
1908
|
Focusable,
|
|
1759
1909
|
OverlayArrow,
|
|
1760
1910
|
Tooltip as TooltipPrimitive,
|
|
1761
1911
|
TooltipTrigger as TooltipTriggerPrimitive
|
|
1762
1912
|
} from "react-aria-components";
|
|
1763
|
-
import { jsx as
|
|
1913
|
+
import { jsx as jsx28, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1764
1914
|
function TooltipTrigger({
|
|
1765
1915
|
delay = 0,
|
|
1766
1916
|
children,
|
|
1767
1917
|
...props
|
|
1768
1918
|
}) {
|
|
1769
|
-
const [trigger, tooltip] =
|
|
1919
|
+
const [trigger, tooltip] = React6.Children.toArray(children);
|
|
1770
1920
|
return /* @__PURE__ */ jsxs14(
|
|
1771
1921
|
TooltipTriggerPrimitive,
|
|
1772
1922
|
{
|
|
@@ -1774,7 +1924,7 @@ function TooltipTrigger({
|
|
|
1774
1924
|
delay,
|
|
1775
1925
|
...props,
|
|
1776
1926
|
children: [
|
|
1777
|
-
/* @__PURE__ */
|
|
1927
|
+
/* @__PURE__ */ jsx28(Focusable, { children: trigger }),
|
|
1778
1928
|
tooltip
|
|
1779
1929
|
]
|
|
1780
1930
|
}
|
|
@@ -1802,7 +1952,7 @@ function Tooltip({
|
|
|
1802
1952
|
...props,
|
|
1803
1953
|
children: [
|
|
1804
1954
|
children,
|
|
1805
|
-
/* @__PURE__ */
|
|
1955
|
+
/* @__PURE__ */ jsx28(
|
|
1806
1956
|
OverlayArrow,
|
|
1807
1957
|
{
|
|
1808
1958
|
className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground",
|
|
@@ -1820,7 +1970,7 @@ function Tooltip({
|
|
|
1820
1970
|
}
|
|
1821
1971
|
|
|
1822
1972
|
// src/ui/icon-button/icon-button.tsx
|
|
1823
|
-
import { jsx as
|
|
1973
|
+
import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1824
1974
|
function IconButton({
|
|
1825
1975
|
label,
|
|
1826
1976
|
children,
|
|
@@ -1834,7 +1984,7 @@ function IconButton({
|
|
|
1834
1984
|
className
|
|
1835
1985
|
);
|
|
1836
1986
|
return /* @__PURE__ */ jsxs15(TooltipTrigger, { children: [
|
|
1837
|
-
href ? /* @__PURE__ */
|
|
1987
|
+
href ? /* @__PURE__ */ jsx29(
|
|
1838
1988
|
Link2,
|
|
1839
1989
|
{
|
|
1840
1990
|
"data-slot": "icon-button",
|
|
@@ -1843,7 +1993,7 @@ function IconButton({
|
|
|
1843
1993
|
className: linkClassName,
|
|
1844
1994
|
children
|
|
1845
1995
|
}
|
|
1846
|
-
) : /* @__PURE__ */
|
|
1996
|
+
) : /* @__PURE__ */ jsx29(
|
|
1847
1997
|
Button,
|
|
1848
1998
|
{
|
|
1849
1999
|
"data-slot": "icon-button",
|
|
@@ -1855,7 +2005,7 @@ function IconButton({
|
|
|
1855
2005
|
children
|
|
1856
2006
|
}
|
|
1857
2007
|
),
|
|
1858
|
-
/* @__PURE__ */
|
|
2008
|
+
/* @__PURE__ */ jsx29(Tooltip, { children: label })
|
|
1859
2009
|
] });
|
|
1860
2010
|
}
|
|
1861
2011
|
|
|
@@ -1865,27 +2015,27 @@ import { cva as cva9 } from "class-variance-authority";
|
|
|
1865
2015
|
// src/ui/input/input.tsx
|
|
1866
2016
|
import { forwardRef as forwardRef2 } from "react";
|
|
1867
2017
|
import { Input as AriaInput2 } from "react-aria-components";
|
|
1868
|
-
import { jsx as
|
|
2018
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1869
2019
|
var InputImpl = forwardRef2(function Input2({ className, type, ...props }, ref) {
|
|
1870
|
-
return /* @__PURE__ */
|
|
2020
|
+
return /* @__PURE__ */ jsx30(AriaInput2, { ref, type, "data-slot": "input", className: cn("h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive", className), ...props });
|
|
1871
2021
|
});
|
|
1872
2022
|
var Input3 = InputImpl;
|
|
1873
2023
|
|
|
1874
2024
|
// src/ui/textarea/textarea.tsx
|
|
1875
2025
|
import { forwardRef as forwardRef3 } from "react";
|
|
1876
2026
|
import { TextArea as AriaTextArea } from "react-aria-components";
|
|
1877
|
-
import { jsx as
|
|
2027
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1878
2028
|
var TextareaImpl = forwardRef3(function Textarea({ className, ...props }, ref) {
|
|
1879
|
-
return /* @__PURE__ */
|
|
2029
|
+
return /* @__PURE__ */ jsx31(AriaTextArea, { ref, "data-slot": "textarea", className: cn("min-h-20 w-full rounded-lg border border-border bg-background px-2.5 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive", className), ...props });
|
|
1880
2030
|
});
|
|
1881
2031
|
var Textarea2 = TextareaImpl;
|
|
1882
2032
|
|
|
1883
2033
|
// src/ui/input-group/input-group.tsx
|
|
1884
|
-
import { jsx as
|
|
2034
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
1885
2035
|
function InputGroup({ className, ...props }) {
|
|
1886
2036
|
return (
|
|
1887
2037
|
// biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.
|
|
1888
|
-
/* @__PURE__ */
|
|
2038
|
+
/* @__PURE__ */ jsx32(
|
|
1889
2039
|
"div",
|
|
1890
2040
|
{
|
|
1891
2041
|
role: "group",
|
|
@@ -1921,7 +2071,7 @@ function InputGroupAddon({
|
|
|
1921
2071
|
}) {
|
|
1922
2072
|
return (
|
|
1923
2073
|
// biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.
|
|
1924
|
-
/* @__PURE__ */
|
|
2074
|
+
/* @__PURE__ */ jsx32(
|
|
1925
2075
|
"div",
|
|
1926
2076
|
{
|
|
1927
2077
|
role: "group",
|
|
@@ -1952,7 +2102,7 @@ function InputGroupButton({
|
|
|
1952
2102
|
...props
|
|
1953
2103
|
}) {
|
|
1954
2104
|
const buttonSize = size === "icon-xs" || size === "icon-sm" ? size : size;
|
|
1955
|
-
return /* @__PURE__ */
|
|
2105
|
+
return /* @__PURE__ */ jsx32(
|
|
1956
2106
|
Button,
|
|
1957
2107
|
{
|
|
1958
2108
|
"data-slot": "input-group-button",
|
|
@@ -1965,7 +2115,7 @@ function InputGroupButton({
|
|
|
1965
2115
|
);
|
|
1966
2116
|
}
|
|
1967
2117
|
function InputGroupText({ className, ...props }) {
|
|
1968
|
-
return /* @__PURE__ */
|
|
2118
|
+
return /* @__PURE__ */ jsx32(
|
|
1969
2119
|
"span",
|
|
1970
2120
|
{
|
|
1971
2121
|
"data-slot": "input-group-text",
|
|
@@ -1978,7 +2128,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
1978
2128
|
);
|
|
1979
2129
|
}
|
|
1980
2130
|
function InputGroupInput({ className, ...props }) {
|
|
1981
|
-
return /* @__PURE__ */
|
|
2131
|
+
return /* @__PURE__ */ jsx32(
|
|
1982
2132
|
Input3,
|
|
1983
2133
|
{
|
|
1984
2134
|
"data-slot": "input-group-control",
|
|
@@ -1991,7 +2141,7 @@ function InputGroupInput({ className, ...props }) {
|
|
|
1991
2141
|
);
|
|
1992
2142
|
}
|
|
1993
2143
|
function InputGroupTextarea({ className, ...props }) {
|
|
1994
|
-
return /* @__PURE__ */
|
|
2144
|
+
return /* @__PURE__ */ jsx32(
|
|
1995
2145
|
Textarea2,
|
|
1996
2146
|
{
|
|
1997
2147
|
"data-slot": "input-group-control",
|
|
@@ -2005,21 +2155,21 @@ function InputGroupTextarea({ className, ...props }) {
|
|
|
2005
2155
|
}
|
|
2006
2156
|
|
|
2007
2157
|
// src/ui/kbd/kbd.tsx
|
|
2008
|
-
import { jsx as
|
|
2158
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
2009
2159
|
function Kbd({ className, ...props }) {
|
|
2010
|
-
return /* @__PURE__ */
|
|
2160
|
+
return /* @__PURE__ */ jsx33("kbd", { "data-slot": "kbd", className: cn("pointer-events-none inline-flex h-5 min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none", className), ...props });
|
|
2011
2161
|
}
|
|
2012
2162
|
function KbdGroup({ className, ...props }) {
|
|
2013
|
-
return /* @__PURE__ */
|
|
2163
|
+
return /* @__PURE__ */ jsx33("span", { "data-slot": "kbd-group", className: cn("inline-flex items-center gap-1", className), ...props });
|
|
2014
2164
|
}
|
|
2015
2165
|
|
|
2016
2166
|
// src/ui/loading-overlay/loading-overlay.tsx
|
|
2017
2167
|
import { LoaderCircle as LoaderCircle2 } from "lucide-react";
|
|
2018
|
-
import { jsx as
|
|
2168
|
+
import { jsx as jsx34, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2019
2169
|
function LoadingOverlay({ label = "Cargando", className, ...props }) {
|
|
2020
|
-
return /* @__PURE__ */
|
|
2021
|
-
/* @__PURE__ */
|
|
2022
|
-
/* @__PURE__ */
|
|
2170
|
+
return /* @__PURE__ */ jsx34("div", { role: "status", "aria-live": "polite", className: cn("absolute inset-0 z-10 flex items-center justify-center bg-background/70 backdrop-blur-[2px]", className), ...props, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm shadow-sm", children: [
|
|
2171
|
+
/* @__PURE__ */ jsx34(LoaderCircle2, { className: "animate-spin", "aria-hidden": "true" }),
|
|
2172
|
+
/* @__PURE__ */ jsx34("span", { children: label })
|
|
2023
2173
|
] }) });
|
|
2024
2174
|
}
|
|
2025
2175
|
|
|
@@ -2030,16 +2180,37 @@ import {
|
|
|
2030
2180
|
MenuTrigger as AriaMenuTrigger,
|
|
2031
2181
|
Popover as Popover3
|
|
2032
2182
|
} from "react-aria-components";
|
|
2033
|
-
import { jsx as
|
|
2183
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2034
2184
|
var MenuTrigger = AriaMenuTrigger;
|
|
2035
2185
|
function MenuContent({ className, ...props }) {
|
|
2036
|
-
return /* @__PURE__ */
|
|
2186
|
+
return /* @__PURE__ */ jsx35(Popover3, { "data-slot": "menu-content", className: cn("min-w-40 overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", className), ...props });
|
|
2037
2187
|
}
|
|
2038
2188
|
function Menu({ className, ...props }) {
|
|
2039
|
-
return /* @__PURE__ */
|
|
2189
|
+
return /* @__PURE__ */ jsx35(AriaMenu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
|
|
2040
2190
|
}
|
|
2041
2191
|
function MenuItem({ className, children, ...props }) {
|
|
2042
|
-
return /* @__PURE__ */
|
|
2192
|
+
return /* @__PURE__ */ jsx35(AriaMenuItem, { "data-slot": "menu-item", className: cn("flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props, children });
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
// src/ui/metric-card/metric-card.tsx
|
|
2196
|
+
import { jsx as jsx36, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2197
|
+
function MetricCard({
|
|
2198
|
+
className,
|
|
2199
|
+
label,
|
|
2200
|
+
value,
|
|
2201
|
+
description,
|
|
2202
|
+
icon,
|
|
2203
|
+
tone = "default",
|
|
2204
|
+
...props
|
|
2205
|
+
}) {
|
|
2206
|
+
return /* @__PURE__ */ jsx36(Card, { "data-slot": "metric-card", "data-tone": tone, className: cn("min-w-0", className), ...props, children: /* @__PURE__ */ jsxs17(CardContent, { className: "flex items-start gap-3", children: [
|
|
2207
|
+
icon ? /* @__PURE__ */ jsx36("div", { "data-slot": "metric-card-icon", className: "shrink-0 text-muted-foreground", children: icon }) : null,
|
|
2208
|
+
/* @__PURE__ */ jsxs17("div", { className: "min-w-0", children: [
|
|
2209
|
+
/* @__PURE__ */ jsx36("p", { "data-slot": "metric-card-label", className: "text-sm text-muted-foreground", children: label }),
|
|
2210
|
+
/* @__PURE__ */ jsx36("strong", { "data-slot": "metric-card-value", className: "mt-1 block text-2xl font-semibold tracking-tight", children: value }),
|
|
2211
|
+
description ? /* @__PURE__ */ jsx36("p", { "data-slot": "metric-card-description", className: "mt-1 text-xs text-muted-foreground", children: description }) : null
|
|
2212
|
+
] })
|
|
2213
|
+
] }) });
|
|
2043
2214
|
}
|
|
2044
2215
|
|
|
2045
2216
|
// src/ui/otp-input/otp-input.tsx
|
|
@@ -2047,10 +2218,10 @@ import {
|
|
|
2047
2218
|
forwardRef as forwardRef4,
|
|
2048
2219
|
useImperativeHandle,
|
|
2049
2220
|
useRef as useRef4,
|
|
2050
|
-
useState as
|
|
2221
|
+
useState as useState10
|
|
2051
2222
|
} from "react";
|
|
2052
2223
|
import { Input as AriaInput3 } from "react-aria-components";
|
|
2053
|
-
import { jsx as
|
|
2224
|
+
import { jsx as jsx37, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2054
2225
|
function normalizeOtp(value, length) {
|
|
2055
2226
|
return value.replace(/[^0-9]/g, "").slice(0, length);
|
|
2056
2227
|
}
|
|
@@ -2071,12 +2242,12 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2071
2242
|
}, forwardedRef) {
|
|
2072
2243
|
const slotCount = Math.max(1, Math.floor(length));
|
|
2073
2244
|
const controlled = value !== void 0;
|
|
2074
|
-
const [internalValue, setInternalValue] =
|
|
2245
|
+
const [internalValue, setInternalValue] = useState10(() => normalizeOtp(defaultValue, slotCount));
|
|
2075
2246
|
const code = normalizeOtp(controlled ? value : internalValue, slotCount);
|
|
2076
2247
|
const slots = Array.from({ length: slotCount }, (_, index) => `otp-slot-${index + 1}`);
|
|
2077
2248
|
const inputRef = useRef4(null);
|
|
2078
|
-
const [focused, setFocused] =
|
|
2079
|
-
const [selectionStart, setSelectionStart] =
|
|
2249
|
+
const [focused, setFocused] = useState10(false);
|
|
2250
|
+
const [selectionStart, setSelectionStart] = useState10(0);
|
|
2080
2251
|
const invalid = props["aria-invalid"] === true || props["aria-invalid"] === "true";
|
|
2081
2252
|
const activeIndex = code.length === slotCount ? slotCount - 1 : Math.min(selectionStart, code.length, slotCount - 1);
|
|
2082
2253
|
useImperativeHandle(forwardedRef, () => inputRef.current);
|
|
@@ -2102,7 +2273,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2102
2273
|
input.setSelectionRange(position, position);
|
|
2103
2274
|
setSelectionStart(position);
|
|
2104
2275
|
}
|
|
2105
|
-
return /* @__PURE__ */
|
|
2276
|
+
return /* @__PURE__ */ jsxs18(
|
|
2106
2277
|
"div",
|
|
2107
2278
|
{
|
|
2108
2279
|
"data-slot": "otp-input",
|
|
@@ -2112,7 +2283,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2112
2283
|
style: { gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` },
|
|
2113
2284
|
onPointerDown: handlePointerDown,
|
|
2114
2285
|
children: [
|
|
2115
|
-
/* @__PURE__ */
|
|
2286
|
+
/* @__PURE__ */ jsx37(
|
|
2116
2287
|
AriaInput3,
|
|
2117
2288
|
{
|
|
2118
2289
|
...props,
|
|
@@ -2152,7 +2323,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2152
2323
|
}
|
|
2153
2324
|
}
|
|
2154
2325
|
),
|
|
2155
|
-
slots.map((slot, index) => /* @__PURE__ */
|
|
2326
|
+
slots.map((slot, index) => /* @__PURE__ */ jsx37(
|
|
2156
2327
|
"span",
|
|
2157
2328
|
{
|
|
2158
2329
|
"aria-hidden": "true",
|
|
@@ -2175,41 +2346,98 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2175
2346
|
var OtpInput2 = OtpInputImpl;
|
|
2176
2347
|
|
|
2177
2348
|
// src/ui/page-header/page-header.tsx
|
|
2178
|
-
import { jsx as
|
|
2349
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2179
2350
|
function PageHeader({ className, ...props }) {
|
|
2180
|
-
return /* @__PURE__ */
|
|
2351
|
+
return /* @__PURE__ */ jsx38("header", { "data-slot": "page-header", className: cn("flex flex-col gap-4 py-2 sm:flex-row sm:items-center sm:justify-between", className), ...props });
|
|
2181
2352
|
}
|
|
2182
2353
|
function PageHeaderHeading({ className, ...props }) {
|
|
2183
|
-
return /* @__PURE__ */
|
|
2354
|
+
return /* @__PURE__ */ jsx38("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
|
|
2184
2355
|
}
|
|
2185
2356
|
function PageHeaderTitle({ className, ...props }) {
|
|
2186
|
-
return /* @__PURE__ */
|
|
2357
|
+
return /* @__PURE__ */ jsx38("h1", { "data-slot": "page-header-title", className: cn("truncate text-xl font-semibold tracking-tight md:text-2xl", className), ...props });
|
|
2187
2358
|
}
|
|
2188
2359
|
function PageHeaderDescription({ className, ...props }) {
|
|
2189
|
-
return /* @__PURE__ */
|
|
2360
|
+
return /* @__PURE__ */ jsx38("p", { "data-slot": "page-header-description", className: cn("mt-1 text-sm text-muted-foreground", className), ...props });
|
|
2190
2361
|
}
|
|
2191
2362
|
function PageHeaderActions({ className, ...props }) {
|
|
2192
|
-
return /* @__PURE__ */
|
|
2363
|
+
return /* @__PURE__ */ jsx38("div", { "data-slot": "page-header-actions", className: cn("flex shrink-0 items-center gap-2", className), ...props });
|
|
2193
2364
|
}
|
|
2194
2365
|
|
|
2195
2366
|
// src/ui/pagination/pagination.tsx
|
|
2196
2367
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
2197
|
-
import
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
return
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
page,
|
|
2204
|
-
" de ",
|
|
2368
|
+
import * as React7 from "react";
|
|
2369
|
+
import { jsx as jsx39, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2370
|
+
function visiblePages(page, pageCount, siblingCount) {
|
|
2371
|
+
return [
|
|
2372
|
+
.../* @__PURE__ */ new Set([
|
|
2373
|
+
1,
|
|
2374
|
+
...Array.from({ length: siblingCount * 2 + 1 }, (_, index) => page - siblingCount + index),
|
|
2205
2375
|
pageCount
|
|
2206
|
-
]
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2376
|
+
])
|
|
2377
|
+
].filter((item) => item >= 1 && item <= pageCount).sort((left, right) => left - right);
|
|
2378
|
+
}
|
|
2379
|
+
function Pagination({
|
|
2380
|
+
page,
|
|
2381
|
+
pageCount,
|
|
2382
|
+
onPageChange,
|
|
2383
|
+
ariaLabel = "Paginaci\xF3n",
|
|
2384
|
+
summary,
|
|
2385
|
+
siblingCount = 1,
|
|
2386
|
+
className
|
|
2387
|
+
}) {
|
|
2388
|
+
if (pageCount <= 1) return null;
|
|
2389
|
+
const pages = visiblePages(page, pageCount, siblingCount);
|
|
2390
|
+
return /* @__PURE__ */ jsxs19(
|
|
2391
|
+
"nav",
|
|
2392
|
+
{
|
|
2393
|
+
"aria-label": ariaLabel,
|
|
2394
|
+
className: cn("flex flex-wrap items-center justify-between gap-4", className),
|
|
2395
|
+
children: [
|
|
2396
|
+
/* @__PURE__ */ jsx39("p", { className: "text-sm text-muted-foreground", children: summary ?? `P\xE1gina ${page} de ${pageCount}` }),
|
|
2397
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1", children: [
|
|
2398
|
+
/* @__PURE__ */ jsx39(
|
|
2399
|
+
Button,
|
|
2400
|
+
{
|
|
2401
|
+
"aria-label": "P\xE1gina anterior",
|
|
2402
|
+
isDisabled: page <= 1,
|
|
2403
|
+
onPress: () => onPageChange(page - 1),
|
|
2404
|
+
size: "icon",
|
|
2405
|
+
variant: "ghost",
|
|
2406
|
+
children: /* @__PURE__ */ jsx39(ChevronLeft, {})
|
|
2407
|
+
}
|
|
2408
|
+
),
|
|
2409
|
+
pages.map((item, index) => {
|
|
2410
|
+
const previousPage = pages[index - 1];
|
|
2411
|
+
return /* @__PURE__ */ jsxs19(React7.Fragment, { children: [
|
|
2412
|
+
previousPage !== void 0 && item > previousPage + 1 ? /* @__PURE__ */ jsx39("span", { "aria-hidden": "true", className: "px-1 text-muted-foreground", children: "\u2026" }) : null,
|
|
2413
|
+
/* @__PURE__ */ jsx39(
|
|
2414
|
+
Button,
|
|
2415
|
+
{
|
|
2416
|
+
"aria-current": item === page ? "page" : void 0,
|
|
2417
|
+
"aria-label": `P\xE1gina ${item}`,
|
|
2418
|
+
onPress: () => onPageChange(item),
|
|
2419
|
+
size: "icon",
|
|
2420
|
+
variant: item === page ? "secondary" : "ghost",
|
|
2421
|
+
children: item
|
|
2422
|
+
}
|
|
2423
|
+
)
|
|
2424
|
+
] }, item);
|
|
2425
|
+
}),
|
|
2426
|
+
/* @__PURE__ */ jsx39(
|
|
2427
|
+
Button,
|
|
2428
|
+
{
|
|
2429
|
+
"aria-label": "P\xE1gina siguiente",
|
|
2430
|
+
isDisabled: page >= pageCount,
|
|
2431
|
+
onPress: () => onPageChange(page + 1),
|
|
2432
|
+
size: "icon",
|
|
2433
|
+
variant: "ghost",
|
|
2434
|
+
children: /* @__PURE__ */ jsx39(ChevronRight, {})
|
|
2435
|
+
}
|
|
2436
|
+
)
|
|
2437
|
+
] })
|
|
2438
|
+
]
|
|
2439
|
+
}
|
|
2440
|
+
);
|
|
2213
2441
|
}
|
|
2214
2442
|
|
|
2215
2443
|
// src/ui/popover/popover.tsx
|
|
@@ -2217,10 +2445,10 @@ import {
|
|
|
2217
2445
|
DialogTrigger as AriaDialogTrigger,
|
|
2218
2446
|
Popover as AriaPopover
|
|
2219
2447
|
} from "react-aria-components";
|
|
2220
|
-
import { jsx as
|
|
2448
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
2221
2449
|
var PopoverTrigger = AriaDialogTrigger;
|
|
2222
2450
|
function Popover4({ className, ...props }) {
|
|
2223
|
-
return /* @__PURE__ */
|
|
2451
|
+
return /* @__PURE__ */ jsx40(AriaPopover, { "data-slot": "popover", offset: 6, className: cn("min-w-48 rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg outline-none motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", className), ...props });
|
|
2224
2452
|
}
|
|
2225
2453
|
var PopoverContent = Popover4;
|
|
2226
2454
|
|
|
@@ -2232,7 +2460,7 @@ import {
|
|
|
2232
2460
|
Input as AriaInput4,
|
|
2233
2461
|
NumberField as AriaNumberField
|
|
2234
2462
|
} from "react-aria-components";
|
|
2235
|
-
import { jsx as
|
|
2463
|
+
import { jsx as jsx41, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2236
2464
|
function QuantityInput({
|
|
2237
2465
|
className,
|
|
2238
2466
|
inputClassName,
|
|
@@ -2242,7 +2470,7 @@ function QuantityInput({
|
|
|
2242
2470
|
step = 1,
|
|
2243
2471
|
...props
|
|
2244
2472
|
}) {
|
|
2245
|
-
return /* @__PURE__ */
|
|
2473
|
+
return /* @__PURE__ */ jsx41(
|
|
2246
2474
|
AriaNumberField,
|
|
2247
2475
|
{
|
|
2248
2476
|
...props,
|
|
@@ -2250,15 +2478,15 @@ function QuantityInput({
|
|
|
2250
2478
|
step,
|
|
2251
2479
|
"data-slot": "quantity-input",
|
|
2252
2480
|
className: cn("group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
|
|
2253
|
-
children: /* @__PURE__ */
|
|
2481
|
+
children: /* @__PURE__ */ jsxs20(
|
|
2254
2482
|
AriaGroup,
|
|
2255
2483
|
{
|
|
2256
2484
|
"data-slot": "quantity-input-group",
|
|
2257
2485
|
className: "flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border border-border bg-background text-foreground transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive",
|
|
2258
2486
|
children: [
|
|
2259
|
-
/* @__PURE__ */
|
|
2260
|
-
/* @__PURE__ */
|
|
2261
|
-
/* @__PURE__ */
|
|
2487
|
+
/* @__PURE__ */ jsx41(AriaButton, { slot: "decrement", "aria-label": decrementAriaLabel, "data-slot": "quantity-input-decrement", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-r border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ jsx41(Minus, { "aria-hidden": "true", className: "size-4" }) }),
|
|
2488
|
+
/* @__PURE__ */ jsx41(AriaInput4, { "data-slot": "quantity-input-value", className: cn("w-14 min-w-0 bg-transparent px-1 text-center text-sm tabular-nums outline-none", inputClassName) }),
|
|
2489
|
+
/* @__PURE__ */ jsx41(AriaButton, { slot: "increment", "aria-label": incrementAriaLabel, "data-slot": "quantity-input-increment", className: "flex size-8 shrink-0 cursor-pointer items-center justify-center border-l border-border text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted data-disabled:pointer-events-none", children: /* @__PURE__ */ jsx41(Plus, { "aria-hidden": "true", className: "size-4" }) })
|
|
2262
2490
|
]
|
|
2263
2491
|
}
|
|
2264
2492
|
)
|
|
@@ -2266,22 +2494,6 @@ function QuantityInput({
|
|
|
2266
2494
|
);
|
|
2267
2495
|
}
|
|
2268
2496
|
|
|
2269
|
-
// src/ui/search-field/search-field.tsx
|
|
2270
|
-
import {
|
|
2271
|
-
SearchField as AriaSearchField,
|
|
2272
|
-
Button as Button2,
|
|
2273
|
-
Input as Input4
|
|
2274
|
-
} from "react-aria-components";
|
|
2275
|
-
import { X as X2 } from "lucide-react";
|
|
2276
|
-
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
2277
|
-
var SearchField = AriaSearchField;
|
|
2278
|
-
function SearchInput({ className, ...props }) {
|
|
2279
|
-
return /* @__PURE__ */ jsx39(Input4, { "data-slot": "search-input", className: cn("h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props });
|
|
2280
|
-
}
|
|
2281
|
-
function SearchClearButton({ className, children = /* @__PURE__ */ jsx39(X2, { "aria-hidden": "true", className: "size-4" }), ...props }) {
|
|
2282
|
-
return /* @__PURE__ */ jsx39(Button2, { slot: "clear", "data-slot": "search-clear", className: cn("absolute top-1/2 right-1 rounded p-1 text-muted-foreground outline-none hover:bg-muted data-focus-visible:ring-2 data-focus-visible:ring-ring", className), ...props, children });
|
|
2283
|
-
}
|
|
2284
|
-
|
|
2285
2497
|
// src/ui/select/select.tsx
|
|
2286
2498
|
import {
|
|
2287
2499
|
Button as AriaButton2,
|
|
@@ -2292,43 +2504,43 @@ import {
|
|
|
2292
2504
|
Popover as Popover5
|
|
2293
2505
|
} from "react-aria-components";
|
|
2294
2506
|
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
2295
|
-
import { Fragment as
|
|
2507
|
+
import { Fragment as Fragment11, jsx as jsx42, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2296
2508
|
var Select = AriaSelect;
|
|
2297
2509
|
function SelectTrigger({ className, children, ...props }) {
|
|
2298
|
-
return /* @__PURE__ */
|
|
2510
|
+
return /* @__PURE__ */ jsx42(AriaButton2, { "data-slot": "select-trigger", className: cn("group/select-trigger flex h-8 w-full min-w-36 items-center gap-2 rounded-lg border border-border bg-background px-2.5 text-left text-sm text-foreground outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: (state) => /* @__PURE__ */ jsxs21(Fragment11, { children: [
|
|
2299
2511
|
typeof children === "function" ? children(state) : children,
|
|
2300
|
-
/* @__PURE__ */
|
|
2512
|
+
/* @__PURE__ */ jsx42(ChevronDown2, { "aria-hidden": "true", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
|
|
2301
2513
|
] }) });
|
|
2302
2514
|
}
|
|
2303
2515
|
function SelectValue({ className, ...props }) {
|
|
2304
|
-
return /* @__PURE__ */
|
|
2516
|
+
return /* @__PURE__ */ jsx42(AriaSelectValue, { "data-slot": "select-value", className: cn("flex-1 truncate data-placeholder:text-muted-foreground", className), ...props });
|
|
2305
2517
|
}
|
|
2306
2518
|
function SelectContent({ className, ...props }) {
|
|
2307
|
-
return /* @__PURE__ */
|
|
2519
|
+
return /* @__PURE__ */ jsx42(Popover5, { "data-slot": "select-content", className: cn("w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground shadow-lg motion-safe:data-entering:animate-ui-surface-in motion-safe:data-exiting:animate-ui-surface-out", className), ...props });
|
|
2308
2520
|
}
|
|
2309
2521
|
function SelectList({ className, ...props }) {
|
|
2310
|
-
return /* @__PURE__ */
|
|
2522
|
+
return /* @__PURE__ */ jsx42(ListBox3, { "data-slot": "select-list", className: cn("max-h-64 overflow-y-auto", className), ...props });
|
|
2311
2523
|
}
|
|
2312
2524
|
function SelectItem({ className, children, ...props }) {
|
|
2313
|
-
return /* @__PURE__ */
|
|
2525
|
+
return /* @__PURE__ */ jsx42(ListBoxItem3, { "data-slot": "select-item", className: cn("flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none data-focused:bg-muted data-selected:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props, children });
|
|
2314
2526
|
}
|
|
2315
2527
|
|
|
2316
2528
|
// src/ui/sheet/sheet.tsx
|
|
2317
2529
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
2318
2530
|
import {
|
|
2319
|
-
Heading as
|
|
2531
|
+
Heading as Heading6,
|
|
2320
2532
|
ModalOverlay as ModalOverlayPrimitive,
|
|
2321
2533
|
Modal as ModalPrimitive,
|
|
2322
2534
|
Dialog as SheetPrimitive,
|
|
2323
2535
|
DialogTrigger as SheetTriggerPrimitive,
|
|
2324
|
-
Text as
|
|
2536
|
+
Text as Text5
|
|
2325
2537
|
} from "react-aria-components";
|
|
2326
|
-
import { jsx as
|
|
2538
|
+
import { jsx as jsx43, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2327
2539
|
function SheetTrigger({ ...props }) {
|
|
2328
|
-
return /* @__PURE__ */
|
|
2540
|
+
return /* @__PURE__ */ jsx43(SheetTriggerPrimitive, { "data-slot": "sheet-trigger", ...props });
|
|
2329
2541
|
}
|
|
2330
2542
|
function SheetClose({ className, variant = "outline", size = "default", ...props }) {
|
|
2331
|
-
return /* @__PURE__ */
|
|
2543
|
+
return /* @__PURE__ */ jsx43(
|
|
2332
2544
|
Button,
|
|
2333
2545
|
{
|
|
2334
2546
|
slot: "close",
|
|
@@ -2345,7 +2557,7 @@ function SheetOverlay({
|
|
|
2345
2557
|
children,
|
|
2346
2558
|
...props
|
|
2347
2559
|
}) {
|
|
2348
|
-
return /* @__PURE__ */
|
|
2560
|
+
return /* @__PURE__ */ jsx43(
|
|
2349
2561
|
ModalOverlayPrimitive,
|
|
2350
2562
|
{
|
|
2351
2563
|
"data-slot": "sheet-overlay",
|
|
@@ -2366,7 +2578,7 @@ function Sheet({
|
|
|
2366
2578
|
showCloseButton = true,
|
|
2367
2579
|
...props
|
|
2368
2580
|
}) {
|
|
2369
|
-
return /* @__PURE__ */
|
|
2581
|
+
return /* @__PURE__ */ jsx43(SheetOverlay, { ...props, children: /* @__PURE__ */ jsx43(
|
|
2370
2582
|
ModalPrimitive,
|
|
2371
2583
|
{
|
|
2372
2584
|
"data-slot": "sheet-content",
|
|
@@ -2375,16 +2587,16 @@ function Sheet({
|
|
|
2375
2587
|
"fixed z-50 flex flex-col gap-4 border-border bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-entering:opacity-0 data-exiting:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-entering:translate-y-10 data-[side=bottom]:data-exiting:translate-y-10 data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-entering:-translate-x-10 data-[side=left]:data-exiting:-translate-x-10 data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-entering:translate-x-10 data-[side=right]:data-exiting:translate-x-10 data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-entering:-translate-y-10 data-[side=top]:data-exiting:-translate-y-10 data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",
|
|
2376
2588
|
className
|
|
2377
2589
|
),
|
|
2378
|
-
children: /* @__PURE__ */
|
|
2590
|
+
children: /* @__PURE__ */ jsxs22(
|
|
2379
2591
|
SheetPrimitive,
|
|
2380
2592
|
{
|
|
2381
2593
|
"data-slot": "sheet",
|
|
2382
2594
|
className: "[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none",
|
|
2383
2595
|
children: [
|
|
2384
2596
|
children,
|
|
2385
|
-
showCloseButton && /* @__PURE__ */
|
|
2386
|
-
/* @__PURE__ */
|
|
2387
|
-
/* @__PURE__ */
|
|
2597
|
+
showCloseButton && /* @__PURE__ */ jsxs22(SheetClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
|
|
2598
|
+
/* @__PURE__ */ jsx43(XIcon2, {}),
|
|
2599
|
+
/* @__PURE__ */ jsx43("span", { className: "sr-only", children: "Cerrar" })
|
|
2388
2600
|
] })
|
|
2389
2601
|
]
|
|
2390
2602
|
}
|
|
@@ -2399,10 +2611,10 @@ function SheetContent({
|
|
|
2399
2611
|
showCloseButton = true,
|
|
2400
2612
|
...props
|
|
2401
2613
|
}) {
|
|
2402
|
-
return /* @__PURE__ */
|
|
2614
|
+
return /* @__PURE__ */ jsx43(Sheet, { className, side, showCloseButton, ...props, children });
|
|
2403
2615
|
}
|
|
2404
2616
|
function SheetHeader({ className, ...props }) {
|
|
2405
|
-
return /* @__PURE__ */
|
|
2617
|
+
return /* @__PURE__ */ jsx43(
|
|
2406
2618
|
"div",
|
|
2407
2619
|
{
|
|
2408
2620
|
"data-slot": "sheet-header",
|
|
@@ -2412,7 +2624,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
2412
2624
|
);
|
|
2413
2625
|
}
|
|
2414
2626
|
function SheetFooter({ className, ...props }) {
|
|
2415
|
-
return /* @__PURE__ */
|
|
2627
|
+
return /* @__PURE__ */ jsx43(
|
|
2416
2628
|
"div",
|
|
2417
2629
|
{
|
|
2418
2630
|
"data-slot": "sheet-footer",
|
|
@@ -2422,8 +2634,8 @@ function SheetFooter({ className, ...props }) {
|
|
|
2422
2634
|
);
|
|
2423
2635
|
}
|
|
2424
2636
|
function SheetTitle({ className, ...props }) {
|
|
2425
|
-
return /* @__PURE__ */
|
|
2426
|
-
|
|
2637
|
+
return /* @__PURE__ */ jsx43(
|
|
2638
|
+
Heading6,
|
|
2427
2639
|
{
|
|
2428
2640
|
slot: "title",
|
|
2429
2641
|
"data-slot": "sheet-title",
|
|
@@ -2436,8 +2648,8 @@ function SheetDescription({
|
|
|
2436
2648
|
className,
|
|
2437
2649
|
...props
|
|
2438
2650
|
}) {
|
|
2439
|
-
return /* @__PURE__ */
|
|
2440
|
-
|
|
2651
|
+
return /* @__PURE__ */ jsx43(
|
|
2652
|
+
Text5,
|
|
2441
2653
|
{
|
|
2442
2654
|
slot: "description",
|
|
2443
2655
|
"data-slot": "sheet-description",
|
|
@@ -2455,16 +2667,16 @@ import {
|
|
|
2455
2667
|
Search
|
|
2456
2668
|
} from "lucide-react";
|
|
2457
2669
|
import {
|
|
2458
|
-
createContext as
|
|
2459
|
-
useContext as
|
|
2670
|
+
createContext as createContext5,
|
|
2671
|
+
useContext as useContext5,
|
|
2460
2672
|
useMemo as useMemo2,
|
|
2461
|
-
useState as
|
|
2673
|
+
useState as useState11
|
|
2462
2674
|
} from "react";
|
|
2463
2675
|
import { Link as Link3 } from "react-aria-components";
|
|
2464
|
-
import { Fragment as
|
|
2465
|
-
var SidebarContext =
|
|
2676
|
+
import { Fragment as Fragment12, jsx as jsx44, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2677
|
+
var SidebarContext = createContext5(null);
|
|
2466
2678
|
function useSidebar() {
|
|
2467
|
-
const context =
|
|
2679
|
+
const context = useContext5(SidebarContext);
|
|
2468
2680
|
if (!context)
|
|
2469
2681
|
throw new Error("useSidebar must be used inside SidebarProvider");
|
|
2470
2682
|
return context;
|
|
@@ -2473,7 +2685,7 @@ function SidebarProvider({
|
|
|
2473
2685
|
defaultCollapsed = false,
|
|
2474
2686
|
children
|
|
2475
2687
|
}) {
|
|
2476
|
-
const [collapsed, setCollapsed] =
|
|
2688
|
+
const [collapsed, setCollapsed] = useState11(defaultCollapsed);
|
|
2477
2689
|
const value = useMemo2(
|
|
2478
2690
|
() => ({
|
|
2479
2691
|
collapsed,
|
|
@@ -2482,14 +2694,14 @@ function SidebarProvider({
|
|
|
2482
2694
|
}),
|
|
2483
2695
|
[collapsed]
|
|
2484
2696
|
);
|
|
2485
|
-
return /* @__PURE__ */
|
|
2697
|
+
return /* @__PURE__ */ jsx44(SidebarContext.Provider, { value, children });
|
|
2486
2698
|
}
|
|
2487
2699
|
function Sidebar({
|
|
2488
2700
|
className,
|
|
2489
2701
|
...props
|
|
2490
2702
|
}) {
|
|
2491
2703
|
const { collapsed } = useSidebar();
|
|
2492
|
-
return /* @__PURE__ */
|
|
2704
|
+
return /* @__PURE__ */ jsx44(
|
|
2493
2705
|
"aside",
|
|
2494
2706
|
{
|
|
2495
2707
|
"data-slot": "sidebar",
|
|
@@ -2506,7 +2718,7 @@ function SidebarHeader({
|
|
|
2506
2718
|
className,
|
|
2507
2719
|
...props
|
|
2508
2720
|
}) {
|
|
2509
|
-
return /* @__PURE__ */
|
|
2721
|
+
return /* @__PURE__ */ jsx44(
|
|
2510
2722
|
"div",
|
|
2511
2723
|
{
|
|
2512
2724
|
"data-slot": "sidebar-header",
|
|
@@ -2521,7 +2733,7 @@ function SidebarSearch({
|
|
|
2521
2733
|
className,
|
|
2522
2734
|
...props
|
|
2523
2735
|
}) {
|
|
2524
|
-
return /* @__PURE__ */
|
|
2736
|
+
return /* @__PURE__ */ jsxs23(
|
|
2525
2737
|
"button",
|
|
2526
2738
|
{
|
|
2527
2739
|
type: "button",
|
|
@@ -2532,9 +2744,9 @@ function SidebarSearch({
|
|
|
2532
2744
|
),
|
|
2533
2745
|
...props,
|
|
2534
2746
|
children: [
|
|
2535
|
-
/* @__PURE__ */
|
|
2536
|
-
/* @__PURE__ */
|
|
2537
|
-
/* @__PURE__ */
|
|
2747
|
+
/* @__PURE__ */ jsx44(Search, { className: "size-4 shrink-0" }),
|
|
2748
|
+
/* @__PURE__ */ jsx44("span", { className: "flex-1 text-left", children: label }),
|
|
2749
|
+
/* @__PURE__ */ jsx44("kbd", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground", children: shortcut })
|
|
2538
2750
|
]
|
|
2539
2751
|
}
|
|
2540
2752
|
);
|
|
@@ -2543,7 +2755,7 @@ function SidebarContent({
|
|
|
2543
2755
|
className,
|
|
2544
2756
|
...props
|
|
2545
2757
|
}) {
|
|
2546
|
-
return /* @__PURE__ */
|
|
2758
|
+
return /* @__PURE__ */ jsx44(
|
|
2547
2759
|
"nav",
|
|
2548
2760
|
{
|
|
2549
2761
|
"data-slot": "sidebar-content",
|
|
@@ -2557,7 +2769,7 @@ function SidebarFooter({
|
|
|
2557
2769
|
className,
|
|
2558
2770
|
...props
|
|
2559
2771
|
}) {
|
|
2560
|
-
return /* @__PURE__ */
|
|
2772
|
+
return /* @__PURE__ */ jsx44(
|
|
2561
2773
|
"div",
|
|
2562
2774
|
{
|
|
2563
2775
|
"data-slot": "sidebar-footer",
|
|
@@ -2576,14 +2788,14 @@ function SidebarGroup({
|
|
|
2576
2788
|
...props
|
|
2577
2789
|
}) {
|
|
2578
2790
|
const { collapsed } = useSidebar();
|
|
2579
|
-
return /* @__PURE__ */
|
|
2791
|
+
return /* @__PURE__ */ jsxs23(
|
|
2580
2792
|
"section",
|
|
2581
2793
|
{
|
|
2582
2794
|
"data-slot": "sidebar-group",
|
|
2583
2795
|
className: cn("mb-4 last:mb-0", className),
|
|
2584
2796
|
...props,
|
|
2585
2797
|
children: [
|
|
2586
|
-
label && /* @__PURE__ */
|
|
2798
|
+
label && /* @__PURE__ */ jsx44(
|
|
2587
2799
|
"h2",
|
|
2588
2800
|
{
|
|
2589
2801
|
className: cn(
|
|
@@ -2609,7 +2821,7 @@ function SidebarItem({
|
|
|
2609
2821
|
}) {
|
|
2610
2822
|
const { collapsed } = useSidebar();
|
|
2611
2823
|
const content = typeof children === "function" ? label : children ?? label;
|
|
2612
|
-
return /* @__PURE__ */
|
|
2824
|
+
return /* @__PURE__ */ jsx44(
|
|
2613
2825
|
Link3,
|
|
2614
2826
|
{
|
|
2615
2827
|
"data-slot": "sidebar-item",
|
|
@@ -2621,16 +2833,16 @@ function SidebarItem({
|
|
|
2621
2833
|
typeof className === "function" ? className : className
|
|
2622
2834
|
),
|
|
2623
2835
|
...props,
|
|
2624
|
-
children: (values) => /* @__PURE__ */
|
|
2625
|
-
/* @__PURE__ */
|
|
2626
|
-
/* @__PURE__ */
|
|
2836
|
+
children: (values) => /* @__PURE__ */ jsxs23(Fragment12, { children: [
|
|
2837
|
+
/* @__PURE__ */ jsx44("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
|
|
2838
|
+
/* @__PURE__ */ jsx44(
|
|
2627
2839
|
"span",
|
|
2628
2840
|
{
|
|
2629
2841
|
className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"),
|
|
2630
2842
|
children: typeof children === "function" ? children(values) : content
|
|
2631
2843
|
}
|
|
2632
2844
|
),
|
|
2633
|
-
badge && !collapsed && /* @__PURE__ */
|
|
2845
|
+
badge && !collapsed && /* @__PURE__ */ jsx44("span", { className: "text-xs text-muted-foreground", children: badge })
|
|
2634
2846
|
] })
|
|
2635
2847
|
}
|
|
2636
2848
|
);
|
|
@@ -2639,7 +2851,7 @@ function SidebarSeparator({
|
|
|
2639
2851
|
className,
|
|
2640
2852
|
...props
|
|
2641
2853
|
}) {
|
|
2642
|
-
return /* @__PURE__ */
|
|
2854
|
+
return /* @__PURE__ */ jsx44(
|
|
2643
2855
|
"hr",
|
|
2644
2856
|
{
|
|
2645
2857
|
"data-slot": "sidebar-separator",
|
|
@@ -2650,7 +2862,7 @@ function SidebarSeparator({
|
|
|
2650
2862
|
}
|
|
2651
2863
|
function SidebarTrigger({ className, ...props }) {
|
|
2652
2864
|
const { collapsed, toggle } = useSidebar();
|
|
2653
|
-
return /* @__PURE__ */
|
|
2865
|
+
return /* @__PURE__ */ jsx44(
|
|
2654
2866
|
Button,
|
|
2655
2867
|
{
|
|
2656
2868
|
"aria-label": collapsed ? "Expandir navegaci\xF3n" : "Colapsar navegaci\xF3n",
|
|
@@ -2659,7 +2871,7 @@ function SidebarTrigger({ className, ...props }) {
|
|
|
2659
2871
|
variant: "ghost",
|
|
2660
2872
|
className: cn("ml-auto", className),
|
|
2661
2873
|
...props,
|
|
2662
|
-
children: collapsed ? /* @__PURE__ */
|
|
2874
|
+
children: collapsed ? /* @__PURE__ */ jsx44(ChevronRight2, {}) : /* @__PURE__ */ jsx44(ChevronLeft2, {})
|
|
2663
2875
|
}
|
|
2664
2876
|
);
|
|
2665
2877
|
}
|
|
@@ -2668,7 +2880,7 @@ function SidebarRail({
|
|
|
2668
2880
|
...props
|
|
2669
2881
|
}) {
|
|
2670
2882
|
const { toggle } = useSidebar();
|
|
2671
|
-
return /* @__PURE__ */
|
|
2883
|
+
return /* @__PURE__ */ jsx44(
|
|
2672
2884
|
"button",
|
|
2673
2885
|
{
|
|
2674
2886
|
type: "button",
|
|
@@ -2683,7 +2895,7 @@ function SidebarRail({
|
|
|
2683
2895
|
);
|
|
2684
2896
|
}
|
|
2685
2897
|
function SidebarMore({ className, ...props }) {
|
|
2686
|
-
return /* @__PURE__ */
|
|
2898
|
+
return /* @__PURE__ */ jsx44(
|
|
2687
2899
|
Button,
|
|
2688
2900
|
{
|
|
2689
2901
|
"aria-label": "M\xE1s opciones",
|
|
@@ -2691,26 +2903,26 @@ function SidebarMore({ className, ...props }) {
|
|
|
2691
2903
|
variant: "ghost",
|
|
2692
2904
|
className: cn("size-7", className),
|
|
2693
2905
|
...props,
|
|
2694
|
-
children: /* @__PURE__ */
|
|
2906
|
+
children: /* @__PURE__ */ jsx44(Ellipsis, {})
|
|
2695
2907
|
}
|
|
2696
2908
|
);
|
|
2697
2909
|
}
|
|
2698
2910
|
|
|
2699
2911
|
// src/ui/skeleton/skeleton.tsx
|
|
2700
|
-
import { jsx as
|
|
2912
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
2701
2913
|
function Skeleton({ className, ...props }) {
|
|
2702
|
-
return /* @__PURE__ */
|
|
2914
|
+
return /* @__PURE__ */ jsx45("div", { "aria-hidden": "true", "data-slot": "skeleton", className: cn("animate-pulse rounded-md bg-muted", className), ...props });
|
|
2703
2915
|
}
|
|
2704
2916
|
|
|
2705
2917
|
// src/ui/submit-button/submit-button.tsx
|
|
2706
2918
|
import { useFormStatus } from "react-dom";
|
|
2707
2919
|
import { LoaderCircle as LoaderCircle3 } from "lucide-react";
|
|
2708
|
-
import { Fragment as
|
|
2920
|
+
import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2709
2921
|
function SubmitButton({ pendingLabel = "Guardando\u2026", loading = false, children, isDisabled, size = "sm", ...props }) {
|
|
2710
2922
|
const { pending } = useFormStatus();
|
|
2711
2923
|
const busy = pending || loading;
|
|
2712
|
-
return /* @__PURE__ */
|
|
2713
|
-
/* @__PURE__ */
|
|
2924
|
+
return /* @__PURE__ */ jsx46(Button, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ jsxs24(Fragment13, { children: [
|
|
2925
|
+
/* @__PURE__ */ jsx46(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
2714
2926
|
pendingLabel
|
|
2715
2927
|
] }) : children });
|
|
2716
2928
|
}
|
|
@@ -2720,7 +2932,7 @@ import { useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
|
2720
2932
|
import {
|
|
2721
2933
|
Switch as AriaSwitch
|
|
2722
2934
|
} from "react-aria-components";
|
|
2723
|
-
import { Fragment as
|
|
2935
|
+
import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2724
2936
|
var switchSizes = {
|
|
2725
2937
|
sm: {
|
|
2726
2938
|
control: "h-4 w-[1.875rem] p-0.5",
|
|
@@ -2776,7 +2988,7 @@ function Switch({
|
|
|
2776
2988
|
ownerDocument.addEventListener("keydown", handleDirectionalKey);
|
|
2777
2989
|
return () => ownerDocument.removeEventListener("keydown", handleDirectionalKey);
|
|
2778
2990
|
}, [isDisabled, isReadOnly, resolvedInputRef]);
|
|
2779
|
-
return /* @__PURE__ */
|
|
2991
|
+
return /* @__PURE__ */ jsx47(
|
|
2780
2992
|
AriaSwitch,
|
|
2781
2993
|
{
|
|
2782
2994
|
"data-slot": "switch",
|
|
@@ -2793,8 +3005,8 @@ function Switch({
|
|
|
2793
3005
|
children: (state) => {
|
|
2794
3006
|
const isThumbActive = state.isHovered || state.isPressed;
|
|
2795
3007
|
const thumbOffset = state.isSelected ? isThumbActive ? styles.activeSelectedOffset : styles.selectedOffset : "0";
|
|
2796
|
-
return /* @__PURE__ */
|
|
2797
|
-
/* @__PURE__ */
|
|
3008
|
+
return /* @__PURE__ */ jsxs25(Fragment14, { children: [
|
|
3009
|
+
/* @__PURE__ */ jsx47(
|
|
2798
3010
|
"span",
|
|
2799
3011
|
{
|
|
2800
3012
|
"aria-hidden": "true",
|
|
@@ -2808,7 +3020,7 @@ function Switch({
|
|
|
2808
3020
|
"group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50",
|
|
2809
3021
|
styles.control
|
|
2810
3022
|
),
|
|
2811
|
-
children: /* @__PURE__ */
|
|
3023
|
+
children: /* @__PURE__ */ jsx47(
|
|
2812
3024
|
"span",
|
|
2813
3025
|
{
|
|
2814
3026
|
"data-slot": "switch-thumb",
|
|
@@ -2828,9 +3040,9 @@ function Switch({
|
|
|
2828
3040
|
)
|
|
2829
3041
|
}
|
|
2830
3042
|
),
|
|
2831
|
-
children || description ? /* @__PURE__ */
|
|
2832
|
-
children ? /* @__PURE__ */
|
|
2833
|
-
description ? /* @__PURE__ */
|
|
3043
|
+
children || description ? /* @__PURE__ */ jsxs25("span", { className: "grid gap-0.5 leading-tight", children: [
|
|
3044
|
+
children ? /* @__PURE__ */ jsx47("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
|
|
3045
|
+
description ? /* @__PURE__ */ jsx47("span", { "data-slot": "switch-description", className: "text-xs font-normal text-muted-foreground", children: description }) : null
|
|
2834
3046
|
] }) : null
|
|
2835
3047
|
] });
|
|
2836
3048
|
}
|
|
@@ -2839,9 +3051,9 @@ function Switch({
|
|
|
2839
3051
|
}
|
|
2840
3052
|
|
|
2841
3053
|
// src/ui/table/table.tsx
|
|
2842
|
-
import { jsx as
|
|
3054
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
2843
3055
|
function Table({ className, ...props }) {
|
|
2844
|
-
return /* @__PURE__ */
|
|
3056
|
+
return /* @__PURE__ */ jsx48("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx48(
|
|
2845
3057
|
"table",
|
|
2846
3058
|
{
|
|
2847
3059
|
"data-slot": "table",
|
|
@@ -2851,10 +3063,10 @@ function Table({ className, ...props }) {
|
|
|
2851
3063
|
) });
|
|
2852
3064
|
}
|
|
2853
3065
|
function TableHeader({ className, ...props }) {
|
|
2854
|
-
return /* @__PURE__ */
|
|
3066
|
+
return /* @__PURE__ */ jsx48("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
|
|
2855
3067
|
}
|
|
2856
3068
|
function TableBody({ className, ...props }) {
|
|
2857
|
-
return /* @__PURE__ */
|
|
3069
|
+
return /* @__PURE__ */ jsx48(
|
|
2858
3070
|
"tbody",
|
|
2859
3071
|
{
|
|
2860
3072
|
"data-slot": "table-body",
|
|
@@ -2864,7 +3076,7 @@ function TableBody({ className, ...props }) {
|
|
|
2864
3076
|
);
|
|
2865
3077
|
}
|
|
2866
3078
|
function TableRow({ className, ...props }) {
|
|
2867
|
-
return /* @__PURE__ */
|
|
3079
|
+
return /* @__PURE__ */ jsx48(
|
|
2868
3080
|
"tr",
|
|
2869
3081
|
{
|
|
2870
3082
|
"data-slot": "table-row",
|
|
@@ -2877,7 +3089,7 @@ function TableRow({ className, ...props }) {
|
|
|
2877
3089
|
);
|
|
2878
3090
|
}
|
|
2879
3091
|
function TableHead({ className, ...props }) {
|
|
2880
|
-
return /* @__PURE__ */
|
|
3092
|
+
return /* @__PURE__ */ jsx48(
|
|
2881
3093
|
"th",
|
|
2882
3094
|
{
|
|
2883
3095
|
"data-slot": "table-head",
|
|
@@ -2890,7 +3102,7 @@ function TableHead({ className, ...props }) {
|
|
|
2890
3102
|
);
|
|
2891
3103
|
}
|
|
2892
3104
|
function TableCell({ className, ...props }) {
|
|
2893
|
-
return /* @__PURE__ */
|
|
3105
|
+
return /* @__PURE__ */ jsx48(
|
|
2894
3106
|
"td",
|
|
2895
3107
|
{
|
|
2896
3108
|
"data-slot": "table-cell",
|
|
@@ -2900,7 +3112,7 @@ function TableCell({ className, ...props }) {
|
|
|
2900
3112
|
);
|
|
2901
3113
|
}
|
|
2902
3114
|
function TableCaption({ className, ...props }) {
|
|
2903
|
-
return /* @__PURE__ */
|
|
3115
|
+
return /* @__PURE__ */ jsx48(
|
|
2904
3116
|
"caption",
|
|
2905
3117
|
{
|
|
2906
3118
|
"data-slot": "table-caption",
|
|
@@ -2910,7 +3122,7 @@ function TableCaption({ className, ...props }) {
|
|
|
2910
3122
|
);
|
|
2911
3123
|
}
|
|
2912
3124
|
function TableFooter({ className, ...props }) {
|
|
2913
|
-
return /* @__PURE__ */
|
|
3125
|
+
return /* @__PURE__ */ jsx48(
|
|
2914
3126
|
"tfoot",
|
|
2915
3127
|
{
|
|
2916
3128
|
"data-slot": "table-footer",
|
|
@@ -2929,27 +3141,27 @@ import {
|
|
|
2929
3141
|
Tabs as AriaTabs,
|
|
2930
3142
|
composeRenderProps as composeRenderProps2
|
|
2931
3143
|
} from "react-aria-components";
|
|
2932
|
-
import { jsx as
|
|
3144
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
2933
3145
|
function Tabs({ className, ...props }) {
|
|
2934
|
-
return /* @__PURE__ */
|
|
3146
|
+
return /* @__PURE__ */ jsx49(AriaTabs, { "data-slot": "tabs", className: composeRenderProps2(className, (value) => cn("flex flex-col gap-2", value)), ...props });
|
|
2935
3147
|
}
|
|
2936
3148
|
function TabsList({ className, ...props }) {
|
|
2937
|
-
return /* @__PURE__ */
|
|
3149
|
+
return /* @__PURE__ */ jsx49(AriaTabList, { "data-slot": "tabs-list", className: composeRenderProps2(className, (value) => cn("inline-flex w-fit items-center gap-1 rounded-lg bg-muted p-1 text-muted-foreground", value)), ...props });
|
|
2938
3150
|
}
|
|
2939
3151
|
function TabsTrigger({ className, ...props }) {
|
|
2940
|
-
return /* @__PURE__ */
|
|
3152
|
+
return /* @__PURE__ */ jsx49(AriaTab, { "data-slot": "tabs-trigger", className: composeRenderProps2(className, (value) => cn("inline-flex h-7 items-center justify-center gap-1.5 rounded-md px-2.5 text-sm font-medium outline-none transition-colors data-hovered:text-foreground data-selected:bg-background data-selected:text-foreground data-selected:shadow-sm data-focus-visible:ring-3 data-focus-visible:ring-ring/50 data-disabled:cursor-not-allowed data-disabled:opacity-50", value)), ...props });
|
|
2941
3153
|
}
|
|
2942
3154
|
function TabsPanels({ className, ...props }) {
|
|
2943
|
-
return /* @__PURE__ */
|
|
3155
|
+
return /* @__PURE__ */ jsx49(AriaTabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
|
|
2944
3156
|
}
|
|
2945
3157
|
function TabsContent({ className, ...props }) {
|
|
2946
|
-
return /* @__PURE__ */
|
|
3158
|
+
return /* @__PURE__ */ jsx49(AriaTabPanel, { "data-slot": "tabs-content", className: composeRenderProps2(className, (value) => cn("text-sm outline-none data-focus-visible:ring-3 data-focus-visible:ring-ring/50", value)), ...props });
|
|
2947
3159
|
}
|
|
2948
3160
|
|
|
2949
3161
|
// src/ui/toast/toast.tsx
|
|
2950
3162
|
import { useEffect as useEffect6 } from "react";
|
|
2951
3163
|
import { sileo, Toaster as SileoToaster } from "sileo";
|
|
2952
|
-
import { Fragment as
|
|
3164
|
+
import { Fragment as Fragment15, jsx as jsx50, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2953
3165
|
function toSileoOptions({ title, description, duration, position, action }) {
|
|
2954
3166
|
return {
|
|
2955
3167
|
title,
|
|
@@ -2988,18 +3200,18 @@ function useToast() {
|
|
|
2988
3200
|
return toast;
|
|
2989
3201
|
}
|
|
2990
3202
|
function ToastProvider({ children }) {
|
|
2991
|
-
return /* @__PURE__ */
|
|
3203
|
+
return /* @__PURE__ */ jsxs26(Fragment15, { children: [
|
|
2992
3204
|
children,
|
|
2993
|
-
/* @__PURE__ */
|
|
3205
|
+
/* @__PURE__ */ jsx50(Toaster, {})
|
|
2994
3206
|
] });
|
|
2995
3207
|
}
|
|
2996
3208
|
function Toaster({ position }) {
|
|
2997
|
-
return /* @__PURE__ */
|
|
3209
|
+
return /* @__PURE__ */ jsx50(SileoToaster, { position, options: { fill: "var(--ui-secondary)" } });
|
|
2998
3210
|
}
|
|
2999
3211
|
function ToastViewport({ position, visiblePosition, className }) {
|
|
3000
3212
|
void className;
|
|
3001
3213
|
if (visiblePosition && visiblePosition !== position) return null;
|
|
3002
|
-
return /* @__PURE__ */
|
|
3214
|
+
return /* @__PURE__ */ jsx50(Toaster, { position });
|
|
3003
3215
|
}
|
|
3004
3216
|
function Toast({ id, title, description, variant = "default", action, state = "open", duration = 0, position, onDismiss }) {
|
|
3005
3217
|
useEffect6(() => {
|
|
@@ -3014,15 +3226,15 @@ function Toast({ id, title, description, variant = "default", action, state = "o
|
|
|
3014
3226
|
}
|
|
3015
3227
|
|
|
3016
3228
|
// src/ui/toolbar/toolbar.tsx
|
|
3017
|
-
import { jsx as
|
|
3229
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
3018
3230
|
function Toolbar({ className, ...props }) {
|
|
3019
|
-
return /* @__PURE__ */
|
|
3231
|
+
return /* @__PURE__ */ jsx51("div", { role: "toolbar", "data-slot": "toolbar", className: cn("flex flex-wrap items-center gap-2", className), ...props });
|
|
3020
3232
|
}
|
|
3021
3233
|
function ToolbarGroup({ className, ...props }) {
|
|
3022
|
-
return /* @__PURE__ */
|
|
3234
|
+
return /* @__PURE__ */ jsx51("div", { "data-slot": "toolbar-group", className: cn("flex items-center gap-2", className), ...props });
|
|
3023
3235
|
}
|
|
3024
3236
|
function ToolbarSpacer({ className, ...props }) {
|
|
3025
|
-
return /* @__PURE__ */
|
|
3237
|
+
return /* @__PURE__ */ jsx51("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
|
|
3026
3238
|
}
|
|
3027
3239
|
export {
|
|
3028
3240
|
Accordion,
|
|
@@ -3032,6 +3244,17 @@ export {
|
|
|
3032
3244
|
Alert,
|
|
3033
3245
|
AlertAction,
|
|
3034
3246
|
AlertDescription,
|
|
3247
|
+
AlertDialog,
|
|
3248
|
+
AlertDialogAction,
|
|
3249
|
+
AlertDialogCancel,
|
|
3250
|
+
AlertDialogContent,
|
|
3251
|
+
AlertDialogDescription,
|
|
3252
|
+
AlertDialogFooter,
|
|
3253
|
+
AlertDialogHeader,
|
|
3254
|
+
AlertDialogOverlay,
|
|
3255
|
+
AlertDialogPortal,
|
|
3256
|
+
AlertDialogTitle,
|
|
3257
|
+
AlertDialogTrigger,
|
|
3035
3258
|
AlertTitle,
|
|
3036
3259
|
AppShell,
|
|
3037
3260
|
AppShellContent,
|
|
@@ -3065,6 +3288,9 @@ export {
|
|
|
3065
3288
|
CardHeader,
|
|
3066
3289
|
CardTitle,
|
|
3067
3290
|
Checkbox,
|
|
3291
|
+
Collapsible,
|
|
3292
|
+
CollapsibleContent,
|
|
3293
|
+
CollapsibleTrigger,
|
|
3068
3294
|
Combobox,
|
|
3069
3295
|
ComboboxContent,
|
|
3070
3296
|
ComboboxInput,
|
|
@@ -3140,6 +3366,7 @@ export {
|
|
|
3140
3366
|
MenuContent,
|
|
3141
3367
|
MenuItem,
|
|
3142
3368
|
MenuTrigger,
|
|
3369
|
+
MetricCard,
|
|
3143
3370
|
ModalDialog,
|
|
3144
3371
|
OtpInput2 as OtpInput,
|
|
3145
3372
|
PageHeader,
|
|
@@ -3152,9 +3379,6 @@ export {
|
|
|
3152
3379
|
PopoverContent,
|
|
3153
3380
|
PopoverTrigger,
|
|
3154
3381
|
QuantityInput,
|
|
3155
|
-
SearchClearButton,
|
|
3156
|
-
SearchField,
|
|
3157
|
-
SearchInput,
|
|
3158
3382
|
Select,
|
|
3159
3383
|
SelectContent,
|
|
3160
3384
|
SelectItem,
|