@doscientos/ui 0.1.17 → 0.1.19
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 +522 -344
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +60 -17
- package/dist/index.d.ts +60 -17
- package/dist/index.js +488 -315
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -95,6 +95,12 @@ function useFormDirty() {
|
|
|
95
95
|
return { formRef, isDirty, markDirty: () => setIsDirty(true), reset };
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
// src/lib/action-ripple.ts
|
|
99
|
+
import { cva } from "class-variance-authority";
|
|
100
|
+
var actionRipple = cva(
|
|
101
|
+
"relative isolate overflow-hidden after:pointer-events-none after:absolute after:top-1/2 after:left-1/2 after:aspect-square after:w-full after:-translate-x-1/2 after:-translate-y-1/2 after:scale-0 after:rounded-full after:bg-current after:opacity-0 after:content-[''] after:transition-[scale,opacity] after:duration-300 after:ease-out active:after:scale-150 active:after:opacity-10 data-pressed:after:scale-150 data-pressed:after:opacity-10 motion-reduce:after:hidden"
|
|
102
|
+
);
|
|
103
|
+
|
|
98
104
|
// src/lib/cn.ts
|
|
99
105
|
import { clsx } from "clsx";
|
|
100
106
|
import { twMerge } from "tailwind-merge";
|
|
@@ -233,9 +239,9 @@ function AccordionContent({
|
|
|
233
239
|
}
|
|
234
240
|
|
|
235
241
|
// src/ui/alert/alert.tsx
|
|
236
|
-
import { cva } from "class-variance-authority";
|
|
242
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
237
243
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
238
|
-
var alertVariants =
|
|
244
|
+
var alertVariants = cva2(
|
|
239
245
|
"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",
|
|
240
246
|
{
|
|
241
247
|
variants: {
|
|
@@ -408,10 +414,10 @@ function AvatarGroupCount({ className, ...props }) {
|
|
|
408
414
|
}
|
|
409
415
|
|
|
410
416
|
// src/ui/badge/badge.tsx
|
|
411
|
-
import { cva as
|
|
417
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
412
418
|
import { Link } from "react-aria-components";
|
|
413
419
|
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
414
|
-
var badgeVariants =
|
|
420
|
+
var badgeVariants = cva3(
|
|
415
421
|
"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",
|
|
416
422
|
{
|
|
417
423
|
variants: {
|
|
@@ -474,80 +480,14 @@ function BreadcrumbSeparator({ children = "/", className, ...props }) {
|
|
|
474
480
|
return /* @__PURE__ */ jsx6("span", { "data-slot": "breadcrumb-separator", "aria-hidden": "true", className: cn("text-muted-foreground/60", className), ...props, children });
|
|
475
481
|
}
|
|
476
482
|
|
|
477
|
-
// src/ui/button/button.tsx
|
|
478
|
-
import { cva as cva3 } from "class-variance-authority";
|
|
479
|
-
import {
|
|
480
|
-
Button as ButtonPrimitive,
|
|
481
|
-
Link as LinkPrimitive
|
|
482
|
-
} from "react-aria-components";
|
|
483
|
-
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
484
|
-
var buttonVariants = cva3(
|
|
485
|
-
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
486
|
-
{
|
|
487
|
-
variants: {
|
|
488
|
-
variant: {
|
|
489
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
490
|
-
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",
|
|
491
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
492
|
-
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
493
|
-
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",
|
|
494
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
495
|
-
},
|
|
496
|
-
size: {
|
|
497
|
-
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
498
|
-
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",
|
|
499
|
-
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",
|
|
500
|
-
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
501
|
-
icon: "size-8",
|
|
502
|
-
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
503
|
-
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
504
|
-
"icon-lg": "size-9"
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
defaultVariants: {
|
|
508
|
-
variant: "default",
|
|
509
|
-
size: "default"
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
);
|
|
513
|
-
function Button({ className, variant = "default", size = "default", ...props }) {
|
|
514
|
-
return /* @__PURE__ */ jsx7(
|
|
515
|
-
ButtonPrimitive,
|
|
516
|
-
{
|
|
517
|
-
"data-slot": "button",
|
|
518
|
-
"data-variant": variant,
|
|
519
|
-
"data-size": size,
|
|
520
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
521
|
-
...props
|
|
522
|
-
}
|
|
523
|
-
);
|
|
524
|
-
}
|
|
525
|
-
function LinkButton({
|
|
526
|
-
className,
|
|
527
|
-
variant = "default",
|
|
528
|
-
size = "default",
|
|
529
|
-
...props
|
|
530
|
-
}) {
|
|
531
|
-
return /* @__PURE__ */ jsx7(
|
|
532
|
-
LinkPrimitive,
|
|
533
|
-
{
|
|
534
|
-
"data-slot": "button",
|
|
535
|
-
"data-variant": variant,
|
|
536
|
-
"data-size": size,
|
|
537
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
538
|
-
...props
|
|
539
|
-
}
|
|
540
|
-
);
|
|
541
|
-
}
|
|
542
|
-
|
|
543
483
|
// src/ui/button-group/button-group.tsx
|
|
544
484
|
import { cva as cva4 } from "class-variance-authority";
|
|
545
485
|
|
|
546
486
|
// src/ui/separator/separator.tsx
|
|
547
487
|
import { Separator as SeparatorPrimitive } from "react-aria-components";
|
|
548
|
-
import { jsx as
|
|
488
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
549
489
|
function Separator({ className, orientation = "horizontal", ...props }) {
|
|
550
|
-
return /* @__PURE__ */
|
|
490
|
+
return /* @__PURE__ */ jsx7(
|
|
551
491
|
SeparatorPrimitive,
|
|
552
492
|
{
|
|
553
493
|
"data-slot": "separator",
|
|
@@ -562,7 +502,7 @@ function Separator({ className, orientation = "horizontal", ...props }) {
|
|
|
562
502
|
}
|
|
563
503
|
|
|
564
504
|
// src/ui/button-group/button-group.tsx
|
|
565
|
-
import { jsx as
|
|
505
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
566
506
|
var buttonGroupVariants = cva4(
|
|
567
507
|
"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",
|
|
568
508
|
{
|
|
@@ -584,7 +524,7 @@ function ButtonGroup({
|
|
|
584
524
|
}) {
|
|
585
525
|
return (
|
|
586
526
|
// biome-ignore lint/a11y/useSemanticElements: fieldset would impose form semantics on a generic action group.
|
|
587
|
-
/* @__PURE__ */
|
|
527
|
+
/* @__PURE__ */ jsx8(
|
|
588
528
|
"div",
|
|
589
529
|
{
|
|
590
530
|
role: "group",
|
|
@@ -612,7 +552,7 @@ function ButtonGroupText({
|
|
|
612
552
|
};
|
|
613
553
|
return render(renderProps);
|
|
614
554
|
}
|
|
615
|
-
return /* @__PURE__ */
|
|
555
|
+
return /* @__PURE__ */ jsx8(
|
|
616
556
|
"div",
|
|
617
557
|
{
|
|
618
558
|
"data-slot": "button-group-text",
|
|
@@ -629,7 +569,7 @@ function ButtonGroupSeparator({
|
|
|
629
569
|
orientation = "vertical",
|
|
630
570
|
...props
|
|
631
571
|
}) {
|
|
632
|
-
return /* @__PURE__ */
|
|
572
|
+
return /* @__PURE__ */ jsx8(
|
|
633
573
|
Separator,
|
|
634
574
|
{
|
|
635
575
|
"data-slot": "button-group-separator",
|
|
@@ -643,6 +583,75 @@ function ButtonGroupSeparator({
|
|
|
643
583
|
);
|
|
644
584
|
}
|
|
645
585
|
|
|
586
|
+
// src/ui/button/button.tsx
|
|
587
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
588
|
+
import {
|
|
589
|
+
Button as ButtonPrimitive,
|
|
590
|
+
Link as LinkPrimitive
|
|
591
|
+
} from "react-aria-components";
|
|
592
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
593
|
+
var buttonVariants = cva5(
|
|
594
|
+
cn(
|
|
595
|
+
"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",
|
|
596
|
+
actionRipple()
|
|
597
|
+
),
|
|
598
|
+
{
|
|
599
|
+
variants: {
|
|
600
|
+
variant: {
|
|
601
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
602
|
+
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",
|
|
603
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
604
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
605
|
+
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",
|
|
606
|
+
link: "text-primary underline-offset-4 hover:underline after:hidden"
|
|
607
|
+
},
|
|
608
|
+
size: {
|
|
609
|
+
default: "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
610
|
+
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",
|
|
611
|
+
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",
|
|
612
|
+
lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
613
|
+
icon: "size-8",
|
|
614
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
|
|
615
|
+
"icon-sm": "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
|
|
616
|
+
"icon-lg": "size-9"
|
|
617
|
+
}
|
|
618
|
+
},
|
|
619
|
+
defaultVariants: {
|
|
620
|
+
variant: "default",
|
|
621
|
+
size: "default"
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
);
|
|
625
|
+
function Button({ className, variant = "default", size = "default", ...props }) {
|
|
626
|
+
return /* @__PURE__ */ jsx9(
|
|
627
|
+
ButtonPrimitive,
|
|
628
|
+
{
|
|
629
|
+
"data-slot": "button",
|
|
630
|
+
"data-variant": variant,
|
|
631
|
+
"data-size": size,
|
|
632
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
633
|
+
...props
|
|
634
|
+
}
|
|
635
|
+
);
|
|
636
|
+
}
|
|
637
|
+
function LinkButton({
|
|
638
|
+
className,
|
|
639
|
+
variant = "default",
|
|
640
|
+
size = "default",
|
|
641
|
+
...props
|
|
642
|
+
}) {
|
|
643
|
+
return /* @__PURE__ */ jsx9(
|
|
644
|
+
LinkPrimitive,
|
|
645
|
+
{
|
|
646
|
+
"data-slot": "button",
|
|
647
|
+
"data-variant": variant,
|
|
648
|
+
"data-size": size,
|
|
649
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
650
|
+
...props
|
|
651
|
+
}
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
|
|
646
655
|
// src/ui/card/card.tsx
|
|
647
656
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
648
657
|
function Card({ className, size = "default", ...props }) {
|
|
@@ -950,29 +959,182 @@ function ConfirmDialog({
|
|
|
950
959
|
);
|
|
951
960
|
}
|
|
952
961
|
|
|
962
|
+
// src/ui/dialog/dialog.tsx
|
|
963
|
+
import { XIcon } from "lucide-react";
|
|
964
|
+
import * as React2 from "react";
|
|
965
|
+
import {
|
|
966
|
+
Dialog as AriaDialog2,
|
|
967
|
+
Heading as Heading2,
|
|
968
|
+
Modal as Modal2,
|
|
969
|
+
ModalOverlay as ModalOverlay2,
|
|
970
|
+
Text as Text3
|
|
971
|
+
} from "react-aria-components";
|
|
972
|
+
import { Fragment as Fragment5, jsx as jsx16, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
973
|
+
var DialogContext = React2.createContext(null);
|
|
974
|
+
function useDialogContext() {
|
|
975
|
+
const context = React2.useContext(DialogContext);
|
|
976
|
+
if (!context) throw new Error("Dialog components must be rendered within Dialog.");
|
|
977
|
+
return context;
|
|
978
|
+
}
|
|
979
|
+
function Dialog({ children, defaultOpen = false, onOpenChange, open: controlledOpen }) {
|
|
980
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React2.useState(defaultOpen);
|
|
981
|
+
const open = controlledOpen ?? uncontrolledOpen;
|
|
982
|
+
const setOpen = React2.useCallback(
|
|
983
|
+
(nextOpen) => {
|
|
984
|
+
if (controlledOpen === void 0) setUncontrolledOpen(nextOpen);
|
|
985
|
+
onOpenChange?.(nextOpen);
|
|
986
|
+
},
|
|
987
|
+
[controlledOpen, onOpenChange]
|
|
988
|
+
);
|
|
989
|
+
return /* @__PURE__ */ jsx16(DialogContext.Provider, { value: { open, setOpen }, children });
|
|
990
|
+
}
|
|
991
|
+
function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
992
|
+
const { setOpen } = useDialogContext();
|
|
993
|
+
const handleClick = (event) => {
|
|
994
|
+
onClick?.(event);
|
|
995
|
+
if (!event.defaultPrevented) setOpen(true);
|
|
996
|
+
};
|
|
997
|
+
if (asChild && React2.isValidElement(children)) {
|
|
998
|
+
const child = children;
|
|
999
|
+
return React2.cloneElement(child, {
|
|
1000
|
+
...props,
|
|
1001
|
+
"data-slot": "dialog-trigger",
|
|
1002
|
+
onClick: (event) => {
|
|
1003
|
+
child.props.onClick?.(event);
|
|
1004
|
+
handleClick(event);
|
|
1005
|
+
}
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
return /* @__PURE__ */ jsx16(Button, { "data-slot": "dialog-trigger", onPress: () => setOpen(true), ...props, children });
|
|
1009
|
+
}
|
|
1010
|
+
function DialogPortal({ children }) {
|
|
1011
|
+
return /* @__PURE__ */ jsx16(Fragment5, { children });
|
|
1012
|
+
}
|
|
1013
|
+
function DialogOverlay({ children, className, ...props }) {
|
|
1014
|
+
const { open, setOpen } = useDialogContext();
|
|
1015
|
+
if (!open) return null;
|
|
1016
|
+
return /* @__PURE__ */ jsx16(
|
|
1017
|
+
ModalOverlay2,
|
|
1018
|
+
{
|
|
1019
|
+
"data-slot": "dialog-overlay",
|
|
1020
|
+
isDismissable: true,
|
|
1021
|
+
isOpen: open,
|
|
1022
|
+
onOpenChange: setOpen,
|
|
1023
|
+
className: cn(
|
|
1024
|
+
"fixed inset-0 isolate z-50 grid place-items-center bg-black/10 p-4 duration-100 supports-backdrop-filter:backdrop-blur-xs data-entering:animate-ui-overlay-in data-exiting:animate-ui-overlay-out",
|
|
1025
|
+
className
|
|
1026
|
+
),
|
|
1027
|
+
...props,
|
|
1028
|
+
children
|
|
1029
|
+
}
|
|
1030
|
+
);
|
|
1031
|
+
}
|
|
1032
|
+
function DialogContent({
|
|
1033
|
+
children,
|
|
1034
|
+
className,
|
|
1035
|
+
onOverlayClick,
|
|
1036
|
+
showCloseButton = true,
|
|
1037
|
+
...props
|
|
1038
|
+
}) {
|
|
1039
|
+
const { setOpen } = useDialogContext();
|
|
1040
|
+
return /* @__PURE__ */ jsx16(DialogPortal, { children: /* @__PURE__ */ jsx16(
|
|
1041
|
+
DialogOverlay,
|
|
1042
|
+
{
|
|
1043
|
+
onClick: (event) => {
|
|
1044
|
+
if (event.target === event.currentTarget) onOverlayClick?.(event);
|
|
1045
|
+
},
|
|
1046
|
+
children: /* @__PURE__ */ jsx16(
|
|
1047
|
+
Modal2,
|
|
1048
|
+
{
|
|
1049
|
+
className: cn(
|
|
1050
|
+
"w-full max-w-[calc(100%-2rem)] max-h-[calc(100dvh-2rem)] outline-none sm:max-w-sm",
|
|
1051
|
+
className
|
|
1052
|
+
),
|
|
1053
|
+
children: /* @__PURE__ */ jsxs6(
|
|
1054
|
+
AriaDialog2,
|
|
1055
|
+
{
|
|
1056
|
+
"data-slot": "dialog-content",
|
|
1057
|
+
className: cn(
|
|
1058
|
+
"grid max-h-[calc(100dvh-2rem)] gap-4 overflow-y-auto rounded-xl bg-background p-4 text-sm text-foreground ring-1 ring-foreground/10 outline-none",
|
|
1059
|
+
className
|
|
1060
|
+
),
|
|
1061
|
+
...props,
|
|
1062
|
+
children: [
|
|
1063
|
+
children,
|
|
1064
|
+
showCloseButton ? /* @__PURE__ */ jsx16(
|
|
1065
|
+
Button,
|
|
1066
|
+
{
|
|
1067
|
+
"aria-label": "Cerrar di\xE1logo",
|
|
1068
|
+
"data-slot": "dialog-close",
|
|
1069
|
+
variant: "ghost",
|
|
1070
|
+
className: "absolute top-2 right-2",
|
|
1071
|
+
size: "icon-sm",
|
|
1072
|
+
onPress: () => setOpen(false),
|
|
1073
|
+
children: /* @__PURE__ */ jsx16(XIcon, {})
|
|
1074
|
+
}
|
|
1075
|
+
) : null
|
|
1076
|
+
]
|
|
1077
|
+
}
|
|
1078
|
+
)
|
|
1079
|
+
}
|
|
1080
|
+
)
|
|
1081
|
+
}
|
|
1082
|
+
) });
|
|
1083
|
+
}
|
|
1084
|
+
function DialogClose({ asChild = false, children, onClick, ...props }) {
|
|
1085
|
+
const { setOpen } = useDialogContext();
|
|
1086
|
+
if (asChild && React2.isValidElement(children)) {
|
|
1087
|
+
const child = children;
|
|
1088
|
+
return React2.cloneElement(child, {
|
|
1089
|
+
...props,
|
|
1090
|
+
"data-slot": "dialog-close",
|
|
1091
|
+
onClick: (event) => {
|
|
1092
|
+
child.props.onClick?.(event);
|
|
1093
|
+
if (!event.defaultPrevented) setOpen(false);
|
|
1094
|
+
}
|
|
1095
|
+
});
|
|
1096
|
+
}
|
|
1097
|
+
return /* @__PURE__ */ jsx16(Button, { "data-slot": "dialog-close", onPress: () => setOpen(false), ...props, children });
|
|
1098
|
+
}
|
|
1099
|
+
function DialogHeader({ className, ...props }) {
|
|
1100
|
+
return /* @__PURE__ */ jsx16("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
|
|
1101
|
+
}
|
|
1102
|
+
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
1103
|
+
return /* @__PURE__ */ jsxs6("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: [
|
|
1104
|
+
children,
|
|
1105
|
+
showCloseButton ? /* @__PURE__ */ jsx16(DialogClose, { variant: "outline", children: "Cerrar" }) : null
|
|
1106
|
+
] });
|
|
1107
|
+
}
|
|
1108
|
+
function DialogTitle({ className, ...props }) {
|
|
1109
|
+
return /* @__PURE__ */ jsx16(Heading2, { slot: "title", "data-slot": "dialog-title", className: cn("font-heading text-base leading-none font-medium", className), ...props });
|
|
1110
|
+
}
|
|
1111
|
+
function DialogDescription({ className, ...props }) {
|
|
1112
|
+
return /* @__PURE__ */ jsx16(Text3, { 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 });
|
|
1113
|
+
}
|
|
1114
|
+
|
|
953
1115
|
// src/ui/drawer/drawer.tsx
|
|
954
|
-
import { Dialog as
|
|
955
|
-
import { jsx as
|
|
1116
|
+
import { Dialog as AriaDialog3, Modal as Modal3, ModalOverlay as ModalOverlay3 } from "react-aria-components";
|
|
1117
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
956
1118
|
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" };
|
|
957
1119
|
function Drawer({ children, side = "right", className, ...props }) {
|
|
958
|
-
return /* @__PURE__ */
|
|
1120
|
+
return /* @__PURE__ */ jsx17(ModalOverlay3, { 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__ */ jsx17(Modal3, { 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__ */ jsx17(AriaDialog3, { "data-slot": "drawer", className: "outline-none", children }) }) });
|
|
959
1121
|
}
|
|
960
1122
|
function DrawerHeader({ className, ...props }) {
|
|
961
|
-
return /* @__PURE__ */
|
|
1123
|
+
return /* @__PURE__ */ jsx17("div", { "data-slot": "drawer-header", className: cn("flex flex-col gap-1.5", className), ...props });
|
|
962
1124
|
}
|
|
963
1125
|
function DrawerFooter({ className, ...props }) {
|
|
964
|
-
return /* @__PURE__ */
|
|
1126
|
+
return /* @__PURE__ */ jsx17("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 });
|
|
965
1127
|
}
|
|
966
1128
|
function DrawerTitle({ className, ...props }) {
|
|
967
|
-
return /* @__PURE__ */
|
|
1129
|
+
return /* @__PURE__ */ jsx17("h2", { "data-slot": "drawer-title", className: cn("text-base font-semibold", className), ...props });
|
|
968
1130
|
}
|
|
969
1131
|
function DrawerDescription({ className, ...props }) {
|
|
970
|
-
return /* @__PURE__ */
|
|
1132
|
+
return /* @__PURE__ */ jsx17("p", { "data-slot": "drawer-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
971
1133
|
}
|
|
972
1134
|
|
|
973
1135
|
// src/ui/dropdown-menu/dropdown-menu.tsx
|
|
974
1136
|
import "react";
|
|
975
|
-
import { cva as
|
|
1137
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
976
1138
|
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
977
1139
|
import {
|
|
978
1140
|
composeRenderProps,
|
|
@@ -985,11 +1147,11 @@ import {
|
|
|
985
1147
|
Separator as SeparatorPrimitive2,
|
|
986
1148
|
SubmenuTrigger as SubmenuTriggerPrimitive
|
|
987
1149
|
} from "react-aria-components";
|
|
988
|
-
import { Fragment as
|
|
1150
|
+
import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
989
1151
|
function DropdownMenuTrigger({
|
|
990
1152
|
...props
|
|
991
1153
|
}) {
|
|
992
|
-
return /* @__PURE__ */
|
|
1154
|
+
return /* @__PURE__ */ jsx18(MenuTriggerPrimitive, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
993
1155
|
}
|
|
994
1156
|
function DropdownMenu({
|
|
995
1157
|
"data-slot": dataSlot = "dropdown-menu-content",
|
|
@@ -1000,7 +1162,7 @@ function DropdownMenu({
|
|
|
1000
1162
|
children,
|
|
1001
1163
|
...props
|
|
1002
1164
|
}) {
|
|
1003
|
-
return /* @__PURE__ */
|
|
1165
|
+
return /* @__PURE__ */ jsx18(
|
|
1004
1166
|
PopoverPrimitive,
|
|
1005
1167
|
{
|
|
1006
1168
|
"data-slot": dataSlot,
|
|
@@ -1008,7 +1170,7 @@ function DropdownMenu({
|
|
|
1008
1170
|
offset,
|
|
1009
1171
|
crossOffset,
|
|
1010
1172
|
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),
|
|
1011
|
-
children: /* @__PURE__ */
|
|
1173
|
+
children: /* @__PURE__ */ jsx18(
|
|
1012
1174
|
MenuPrimitive,
|
|
1013
1175
|
{
|
|
1014
1176
|
className: "max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden",
|
|
@@ -1022,14 +1184,14 @@ function DropdownMenu({
|
|
|
1022
1184
|
function DropdownMenuGroup({
|
|
1023
1185
|
...props
|
|
1024
1186
|
}) {
|
|
1025
|
-
return /* @__PURE__ */
|
|
1187
|
+
return /* @__PURE__ */ jsx18(MenuSectionPrimitive, { "data-slot": "dropdown-menu-group", ...props });
|
|
1026
1188
|
}
|
|
1027
1189
|
function DropdownMenuLabel({
|
|
1028
1190
|
className,
|
|
1029
1191
|
inset,
|
|
1030
1192
|
...props
|
|
1031
1193
|
}) {
|
|
1032
|
-
return /* @__PURE__ */
|
|
1194
|
+
return /* @__PURE__ */ jsx18(
|
|
1033
1195
|
HeaderPrimitive,
|
|
1034
1196
|
{
|
|
1035
1197
|
"data-slot": "dropdown-menu-label",
|
|
@@ -1042,7 +1204,7 @@ function DropdownMenuLabel({
|
|
|
1042
1204
|
}
|
|
1043
1205
|
);
|
|
1044
1206
|
}
|
|
1045
|
-
var dropdownMenuItemVariants =
|
|
1207
|
+
var dropdownMenuItemVariants = cva6(
|
|
1046
1208
|
"group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
1047
1209
|
{
|
|
1048
1210
|
variants: {
|
|
@@ -1061,7 +1223,7 @@ function DropdownMenuItem({
|
|
|
1061
1223
|
children,
|
|
1062
1224
|
...props
|
|
1063
1225
|
}) {
|
|
1064
|
-
return /* @__PURE__ */
|
|
1226
|
+
return /* @__PURE__ */ jsx18(
|
|
1065
1227
|
MenuItemPrimitive,
|
|
1066
1228
|
{
|
|
1067
1229
|
"data-slot": "dropdown-menu-item",
|
|
@@ -1075,13 +1237,13 @@ function DropdownMenuItem({
|
|
|
1075
1237
|
...props,
|
|
1076
1238
|
children: composeRenderProps(
|
|
1077
1239
|
children,
|
|
1078
|
-
(children2, { isSelected, selectionMode }) => /* @__PURE__ */
|
|
1079
|
-
selectionMode !== "none" ? /* @__PURE__ */
|
|
1240
|
+
(children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs7(Fragment6, { children: [
|
|
1241
|
+
selectionMode !== "none" ? /* @__PURE__ */ jsx18(
|
|
1080
1242
|
"span",
|
|
1081
1243
|
{
|
|
1082
1244
|
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
1083
1245
|
"data-slot": selectionMode === "single" ? "dropdown-menu-radio-item-indicator" : "dropdown-menu-checkbox-item-indicator",
|
|
1084
|
-
children: isSelected ? /* @__PURE__ */
|
|
1246
|
+
children: isSelected ? /* @__PURE__ */ jsx18(CheckIcon, {}) : null
|
|
1085
1247
|
}
|
|
1086
1248
|
) : null,
|
|
1087
1249
|
children2
|
|
@@ -1093,7 +1255,7 @@ function DropdownMenuItem({
|
|
|
1093
1255
|
function DropdownMenuSub({
|
|
1094
1256
|
...props
|
|
1095
1257
|
}) {
|
|
1096
|
-
return /* @__PURE__ */
|
|
1258
|
+
return /* @__PURE__ */ jsx18(SubmenuTriggerPrimitive, { "data-slot": "dropdown-menu-sub", ...props });
|
|
1097
1259
|
}
|
|
1098
1260
|
function DropdownMenuSubTrigger({
|
|
1099
1261
|
className,
|
|
@@ -1101,7 +1263,7 @@ function DropdownMenuSubTrigger({
|
|
|
1101
1263
|
children,
|
|
1102
1264
|
...props
|
|
1103
1265
|
}) {
|
|
1104
|
-
return /* @__PURE__ */
|
|
1266
|
+
return /* @__PURE__ */ jsx18(
|
|
1105
1267
|
MenuItemPrimitive,
|
|
1106
1268
|
{
|
|
1107
1269
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -1112,9 +1274,9 @@ function DropdownMenuSubTrigger({
|
|
|
1112
1274
|
className
|
|
1113
1275
|
),
|
|
1114
1276
|
...props,
|
|
1115
|
-
children: composeRenderProps(children, (children2) => /* @__PURE__ */
|
|
1277
|
+
children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs7(Fragment6, { children: [
|
|
1116
1278
|
children2,
|
|
1117
|
-
/* @__PURE__ */
|
|
1279
|
+
/* @__PURE__ */ jsx18(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
|
|
1118
1280
|
] }))
|
|
1119
1281
|
}
|
|
1120
1282
|
);
|
|
@@ -1126,7 +1288,7 @@ function DropdownMenuSubContent({
|
|
|
1126
1288
|
className,
|
|
1127
1289
|
...props
|
|
1128
1290
|
}) {
|
|
1129
|
-
return /* @__PURE__ */
|
|
1291
|
+
return /* @__PURE__ */ jsx18(
|
|
1130
1292
|
DropdownMenu,
|
|
1131
1293
|
{
|
|
1132
1294
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -1142,7 +1304,7 @@ function DropdownMenuSeparator({
|
|
|
1142
1304
|
className,
|
|
1143
1305
|
...props
|
|
1144
1306
|
}) {
|
|
1145
|
-
return /* @__PURE__ */
|
|
1307
|
+
return /* @__PURE__ */ jsx18(
|
|
1146
1308
|
SeparatorPrimitive2,
|
|
1147
1309
|
{
|
|
1148
1310
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -1155,7 +1317,7 @@ function DropdownMenuShortcut({
|
|
|
1155
1317
|
className,
|
|
1156
1318
|
...props
|
|
1157
1319
|
}) {
|
|
1158
|
-
return /* @__PURE__ */
|
|
1320
|
+
return /* @__PURE__ */ jsx18(
|
|
1159
1321
|
"span",
|
|
1160
1322
|
{
|
|
1161
1323
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -1169,10 +1331,10 @@ function DropdownMenuShortcut({
|
|
|
1169
1331
|
}
|
|
1170
1332
|
|
|
1171
1333
|
// src/ui/empty-state/empty-state.tsx
|
|
1172
|
-
import { cva as
|
|
1173
|
-
import { jsx as
|
|
1334
|
+
import { cva as cva7 } from "class-variance-authority";
|
|
1335
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1174
1336
|
function EmptyState({ className, ...props }) {
|
|
1175
|
-
return /* @__PURE__ */
|
|
1337
|
+
return /* @__PURE__ */ jsx19(
|
|
1176
1338
|
"div",
|
|
1177
1339
|
{
|
|
1178
1340
|
"data-slot": "empty-state",
|
|
@@ -1185,7 +1347,7 @@ function EmptyState({ className, ...props }) {
|
|
|
1185
1347
|
);
|
|
1186
1348
|
}
|
|
1187
1349
|
function EmptyStateHeader({ className, ...props }) {
|
|
1188
|
-
return /* @__PURE__ */
|
|
1350
|
+
return /* @__PURE__ */ jsx19(
|
|
1189
1351
|
"div",
|
|
1190
1352
|
{
|
|
1191
1353
|
"data-slot": "empty-state-header",
|
|
@@ -1194,7 +1356,7 @@ function EmptyStateHeader({ className, ...props }) {
|
|
|
1194
1356
|
}
|
|
1195
1357
|
);
|
|
1196
1358
|
}
|
|
1197
|
-
var emptyStateMediaVariants =
|
|
1359
|
+
var emptyStateMediaVariants = cva7(
|
|
1198
1360
|
"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
1199
1361
|
{
|
|
1200
1362
|
variants: {
|
|
@@ -1211,7 +1373,7 @@ function EmptyStateMedia({
|
|
|
1211
1373
|
variant = "default",
|
|
1212
1374
|
...props
|
|
1213
1375
|
}) {
|
|
1214
|
-
return /* @__PURE__ */
|
|
1376
|
+
return /* @__PURE__ */ jsx19(
|
|
1215
1377
|
"div",
|
|
1216
1378
|
{
|
|
1217
1379
|
"data-slot": "empty-state-media",
|
|
@@ -1222,7 +1384,7 @@ function EmptyStateMedia({
|
|
|
1222
1384
|
);
|
|
1223
1385
|
}
|
|
1224
1386
|
function EmptyStateTitle({ className, ...props }) {
|
|
1225
|
-
return /* @__PURE__ */
|
|
1387
|
+
return /* @__PURE__ */ jsx19(
|
|
1226
1388
|
"h3",
|
|
1227
1389
|
{
|
|
1228
1390
|
"data-slot": "empty-state-title",
|
|
@@ -1232,7 +1394,7 @@ function EmptyStateTitle({ className, ...props }) {
|
|
|
1232
1394
|
);
|
|
1233
1395
|
}
|
|
1234
1396
|
function EmptyStateDescription({ className, ...props }) {
|
|
1235
|
-
return /* @__PURE__ */
|
|
1397
|
+
return /* @__PURE__ */ jsx19(
|
|
1236
1398
|
"p",
|
|
1237
1399
|
{
|
|
1238
1400
|
"data-slot": "empty-state-description",
|
|
@@ -1245,7 +1407,7 @@ function EmptyStateDescription({ className, ...props }) {
|
|
|
1245
1407
|
);
|
|
1246
1408
|
}
|
|
1247
1409
|
function EmptyStateContent({ className, ...props }) {
|
|
1248
|
-
return /* @__PURE__ */
|
|
1410
|
+
return /* @__PURE__ */ jsx19(
|
|
1249
1411
|
"div",
|
|
1250
1412
|
{
|
|
1251
1413
|
"data-slot": "empty-state-content",
|
|
@@ -1259,27 +1421,27 @@ function EmptyStateContent({ className, ...props }) {
|
|
|
1259
1421
|
}
|
|
1260
1422
|
|
|
1261
1423
|
// src/ui/field/field.tsx
|
|
1262
|
-
import { cva as
|
|
1424
|
+
import { cva as cva8 } from "class-variance-authority";
|
|
1263
1425
|
|
|
1264
1426
|
// src/ui/label/label.tsx
|
|
1265
1427
|
import { forwardRef } from "react";
|
|
1266
1428
|
import { Label as LabelPrimitive } from "react-aria-components";
|
|
1267
|
-
import { jsx as
|
|
1429
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1268
1430
|
var Label2 = forwardRef(function Label3({ className, ...props }, ref) {
|
|
1269
|
-
return /* @__PURE__ */
|
|
1431
|
+
return /* @__PURE__ */ jsx20(LabelPrimitive, { ref, "data-slot": "label", className: cn("flex items-center gap-2 text-sm font-medium leading-none select-none", className), ...props });
|
|
1270
1432
|
});
|
|
1271
1433
|
|
|
1272
1434
|
// src/ui/field/field.tsx
|
|
1273
|
-
import { jsx as
|
|
1435
|
+
import { jsx as jsx21, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1274
1436
|
function FieldSet({ className, ...props }) {
|
|
1275
|
-
return /* @__PURE__ */
|
|
1437
|
+
return /* @__PURE__ */ jsx21("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
|
|
1276
1438
|
}
|
|
1277
1439
|
function FieldLegend({
|
|
1278
1440
|
className,
|
|
1279
1441
|
variant = "legend",
|
|
1280
1442
|
...props
|
|
1281
1443
|
}) {
|
|
1282
|
-
return /* @__PURE__ */
|
|
1444
|
+
return /* @__PURE__ */ jsx21(
|
|
1283
1445
|
"legend",
|
|
1284
1446
|
{
|
|
1285
1447
|
"data-slot": "field-legend",
|
|
@@ -1293,7 +1455,7 @@ function FieldLegend({
|
|
|
1293
1455
|
);
|
|
1294
1456
|
}
|
|
1295
1457
|
function FieldGroup({ className, ...props }) {
|
|
1296
|
-
return /* @__PURE__ */
|
|
1458
|
+
return /* @__PURE__ */ jsx21(
|
|
1297
1459
|
"div",
|
|
1298
1460
|
{
|
|
1299
1461
|
"data-slot": "field-group",
|
|
@@ -1305,7 +1467,7 @@ function FieldGroup({ className, ...props }) {
|
|
|
1305
1467
|
}
|
|
1306
1468
|
);
|
|
1307
1469
|
}
|
|
1308
|
-
var fieldVariants =
|
|
1470
|
+
var fieldVariants = cva8(
|
|
1309
1471
|
"group/field flex w-full gap-2 data-[invalid=true]:text-destructive",
|
|
1310
1472
|
{
|
|
1311
1473
|
variants: {
|
|
@@ -1321,7 +1483,7 @@ var fieldVariants = cva7(
|
|
|
1321
1483
|
function Field({ className, orientation = "vertical", ...props }) {
|
|
1322
1484
|
return (
|
|
1323
1485
|
// biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.
|
|
1324
|
-
/* @__PURE__ */
|
|
1486
|
+
/* @__PURE__ */ jsx21(
|
|
1325
1487
|
"div",
|
|
1326
1488
|
{
|
|
1327
1489
|
role: "group",
|
|
@@ -1334,7 +1496,7 @@ function Field({ className, orientation = "vertical", ...props }) {
|
|
|
1334
1496
|
);
|
|
1335
1497
|
}
|
|
1336
1498
|
function FieldContent({ className, ...props }) {
|
|
1337
|
-
return /* @__PURE__ */
|
|
1499
|
+
return /* @__PURE__ */ jsx21(
|
|
1338
1500
|
"div",
|
|
1339
1501
|
{
|
|
1340
1502
|
"data-slot": "field-content",
|
|
@@ -1344,7 +1506,7 @@ function FieldContent({ className, ...props }) {
|
|
|
1344
1506
|
);
|
|
1345
1507
|
}
|
|
1346
1508
|
function FieldLabel({ className, ...props }) {
|
|
1347
|
-
return /* @__PURE__ */
|
|
1509
|
+
return /* @__PURE__ */ jsx21(
|
|
1348
1510
|
Label2,
|
|
1349
1511
|
{
|
|
1350
1512
|
"data-slot": "field-label",
|
|
@@ -1357,7 +1519,7 @@ function FieldLabel({ className, ...props }) {
|
|
|
1357
1519
|
);
|
|
1358
1520
|
}
|
|
1359
1521
|
function FieldTitle({ className, ...props }) {
|
|
1360
|
-
return /* @__PURE__ */
|
|
1522
|
+
return /* @__PURE__ */ jsx21(
|
|
1361
1523
|
"div",
|
|
1362
1524
|
{
|
|
1363
1525
|
"data-slot": "field-title",
|
|
@@ -1367,7 +1529,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
1367
1529
|
);
|
|
1368
1530
|
}
|
|
1369
1531
|
function FieldDescription({ className, ...props }) {
|
|
1370
|
-
return /* @__PURE__ */
|
|
1532
|
+
return /* @__PURE__ */ jsx21(
|
|
1371
1533
|
"p",
|
|
1372
1534
|
{
|
|
1373
1535
|
"data-slot": "field-description",
|
|
@@ -1380,7 +1542,7 @@ function FieldDescription({ className, ...props }) {
|
|
|
1380
1542
|
);
|
|
1381
1543
|
}
|
|
1382
1544
|
function FieldSeparator({ className, children, ...props }) {
|
|
1383
|
-
return /* @__PURE__ */
|
|
1545
|
+
return /* @__PURE__ */ jsxs8(
|
|
1384
1546
|
"div",
|
|
1385
1547
|
{
|
|
1386
1548
|
"data-slot": "field-separator",
|
|
@@ -1388,8 +1550,8 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1388
1550
|
className: cn("relative -my-2 h-5 text-sm", className),
|
|
1389
1551
|
...props,
|
|
1390
1552
|
children: [
|
|
1391
|
-
/* @__PURE__ */
|
|
1392
|
-
children ? /* @__PURE__ */
|
|
1553
|
+
/* @__PURE__ */ jsx21(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
1554
|
+
children ? /* @__PURE__ */ jsx21(
|
|
1393
1555
|
"span",
|
|
1394
1556
|
{
|
|
1395
1557
|
"data-slot": "field-separator-content",
|
|
@@ -1403,9 +1565,9 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1403
1565
|
}
|
|
1404
1566
|
function FieldError2({ className, children, errors, ...props }) {
|
|
1405
1567
|
const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])];
|
|
1406
|
-
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */
|
|
1568
|
+
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ jsx21("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ jsx21("li", { children: message }, message)) }) : null);
|
|
1407
1569
|
if (!content) return null;
|
|
1408
|
-
return /* @__PURE__ */
|
|
1570
|
+
return /* @__PURE__ */ jsx21(
|
|
1409
1571
|
"div",
|
|
1410
1572
|
{
|
|
1411
1573
|
role: "alert",
|
|
@@ -1418,65 +1580,65 @@ function FieldError2({ className, children, errors, ...props }) {
|
|
|
1418
1580
|
}
|
|
1419
1581
|
|
|
1420
1582
|
// src/ui/form-feedback/form-feedback.tsx
|
|
1421
|
-
import { useCallback as
|
|
1583
|
+
import { useCallback as useCallback4, useEffect as useEffect4, useRef as useRef3, useState as useState7 } from "react";
|
|
1422
1584
|
import { CheckCircle, LoaderCircle, CircleAlert } from "lucide-react";
|
|
1423
|
-
import { jsx as
|
|
1585
|
+
import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1424
1586
|
function useFormFeedback(options) {
|
|
1425
1587
|
const resetMs = options?.successResetMs ?? 2500;
|
|
1426
|
-
const [state, setState] =
|
|
1588
|
+
const [state, setState] = useState7({ status: "idle" });
|
|
1427
1589
|
const timer = useRef3(null);
|
|
1428
|
-
const clearTimer =
|
|
1590
|
+
const clearTimer = useCallback4(() => {
|
|
1429
1591
|
if (timer.current) clearTimeout(timer.current);
|
|
1430
1592
|
timer.current = null;
|
|
1431
1593
|
}, []);
|
|
1432
1594
|
useEffect4(() => () => clearTimer(), [clearTimer]);
|
|
1433
|
-
const setPending =
|
|
1595
|
+
const setPending = useCallback4(() => {
|
|
1434
1596
|
clearTimer();
|
|
1435
1597
|
setState({ status: "pending" });
|
|
1436
1598
|
}, [clearTimer]);
|
|
1437
|
-
const setSuccess =
|
|
1599
|
+
const setSuccess = useCallback4((message) => {
|
|
1438
1600
|
clearTimer();
|
|
1439
1601
|
setState({ status: "success", message });
|
|
1440
1602
|
if (resetMs > 0) timer.current = setTimeout(() => setState({ status: "idle" }), resetMs);
|
|
1441
1603
|
}, [clearTimer, resetMs]);
|
|
1442
|
-
const setError =
|
|
1604
|
+
const setError = useCallback4((message) => {
|
|
1443
1605
|
clearTimer();
|
|
1444
1606
|
setState({ status: "error", message });
|
|
1445
1607
|
}, [clearTimer]);
|
|
1446
|
-
const reset =
|
|
1608
|
+
const reset = useCallback4(() => {
|
|
1447
1609
|
clearTimer();
|
|
1448
1610
|
setState({ status: "idle" });
|
|
1449
1611
|
}, [clearTimer]);
|
|
1450
1612
|
return { state, pending: state.status === "pending", setPending, setSuccess, setError, reset };
|
|
1451
1613
|
}
|
|
1452
1614
|
function FormFeedback({ state, className, pendingLabel = "Guardando\u2026", successLabel = "Guardado" }) {
|
|
1453
|
-
if (state.status === "idle") return /* @__PURE__ */
|
|
1615
|
+
if (state.status === "idle") return /* @__PURE__ */ jsx22("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
|
|
1454
1616
|
const error = state.status === "error";
|
|
1455
1617
|
const success = state.status === "success";
|
|
1456
|
-
return /* @__PURE__ */
|
|
1457
|
-
state.status === "pending" && /* @__PURE__ */
|
|
1458
|
-
success && /* @__PURE__ */
|
|
1459
|
-
error && /* @__PURE__ */
|
|
1460
|
-
/* @__PURE__ */
|
|
1618
|
+
return /* @__PURE__ */ jsxs9("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: [
|
|
1619
|
+
state.status === "pending" && /* @__PURE__ */ jsx22(LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
1620
|
+
success && /* @__PURE__ */ jsx22(CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1621
|
+
error && /* @__PURE__ */ jsx22(CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1622
|
+
/* @__PURE__ */ jsx22("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
|
|
1461
1623
|
] });
|
|
1462
1624
|
}
|
|
1463
1625
|
|
|
1464
1626
|
// src/ui/form-row/form-row.tsx
|
|
1465
|
-
import { Fragment as
|
|
1627
|
+
import { Fragment as Fragment7, jsx as jsx23, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1466
1628
|
function FormRow({ label, htmlFor, required, hint, error, className, children }) {
|
|
1467
1629
|
const hintId = hint ? `${htmlFor}-hint` : void 0;
|
|
1468
1630
|
const errorId = error ? `${htmlFor}-error` : void 0;
|
|
1469
|
-
return /* @__PURE__ */
|
|
1470
|
-
/* @__PURE__ */
|
|
1631
|
+
return /* @__PURE__ */ jsxs10("div", { "data-slot": "form-row", className: cn("flex flex-col gap-1.5", className), children: [
|
|
1632
|
+
/* @__PURE__ */ jsxs10("label", { htmlFor, className: "text-sm font-medium text-foreground", children: [
|
|
1471
1633
|
label,
|
|
1472
|
-
required && /* @__PURE__ */
|
|
1473
|
-
/* @__PURE__ */
|
|
1474
|
-
/* @__PURE__ */
|
|
1634
|
+
required && /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
1635
|
+
/* @__PURE__ */ jsx23("span", { "aria-hidden": "true", className: "ml-0.5 text-destructive", children: "*" }),
|
|
1636
|
+
/* @__PURE__ */ jsx23("span", { className: "sr-only", children: " (obligatorio)" })
|
|
1475
1637
|
] })
|
|
1476
1638
|
] }),
|
|
1477
1639
|
children,
|
|
1478
|
-
hint && /* @__PURE__ */
|
|
1479
|
-
error && /* @__PURE__ */
|
|
1640
|
+
hint && /* @__PURE__ */ jsx23("p", { id: hintId, className: "text-xs text-muted-foreground", children: hint }),
|
|
1641
|
+
error && /* @__PURE__ */ jsx23("p", { id: errorId, role: "alert", className: "text-xs font-medium text-destructive", children: error })
|
|
1480
1642
|
] });
|
|
1481
1643
|
}
|
|
1482
1644
|
|
|
@@ -1484,28 +1646,28 @@ function FormRow({ label, htmlFor, required, hint, error, className, children })
|
|
|
1484
1646
|
import { Link as Link2 } from "react-aria-components";
|
|
1485
1647
|
|
|
1486
1648
|
// src/ui/tooltip/tooltip.tsx
|
|
1487
|
-
import * as
|
|
1649
|
+
import * as React4 from "react";
|
|
1488
1650
|
import {
|
|
1489
1651
|
Focusable,
|
|
1490
1652
|
OverlayArrow,
|
|
1491
1653
|
Tooltip as TooltipPrimitive,
|
|
1492
1654
|
TooltipTrigger as TooltipTriggerPrimitive
|
|
1493
1655
|
} from "react-aria-components";
|
|
1494
|
-
import { jsx as
|
|
1656
|
+
import { jsx as jsx24, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1495
1657
|
function TooltipTrigger({
|
|
1496
1658
|
delay = 0,
|
|
1497
1659
|
children,
|
|
1498
1660
|
...props
|
|
1499
1661
|
}) {
|
|
1500
|
-
const [trigger, tooltip] =
|
|
1501
|
-
return /* @__PURE__ */
|
|
1662
|
+
const [trigger, tooltip] = React4.Children.toArray(children);
|
|
1663
|
+
return /* @__PURE__ */ jsxs11(
|
|
1502
1664
|
TooltipTriggerPrimitive,
|
|
1503
1665
|
{
|
|
1504
1666
|
"data-slot": "tooltip-trigger",
|
|
1505
1667
|
delay,
|
|
1506
1668
|
...props,
|
|
1507
1669
|
children: [
|
|
1508
|
-
/* @__PURE__ */
|
|
1670
|
+
/* @__PURE__ */ jsx24(Focusable, { children: trigger }),
|
|
1509
1671
|
tooltip
|
|
1510
1672
|
]
|
|
1511
1673
|
}
|
|
@@ -1519,7 +1681,7 @@ function Tooltip({
|
|
|
1519
1681
|
children,
|
|
1520
1682
|
...props
|
|
1521
1683
|
}) {
|
|
1522
|
-
return /* @__PURE__ */
|
|
1684
|
+
return /* @__PURE__ */ jsxs11(
|
|
1523
1685
|
TooltipPrimitive,
|
|
1524
1686
|
{
|
|
1525
1687
|
"data-slot": "tooltip-content",
|
|
@@ -1533,7 +1695,7 @@ function Tooltip({
|
|
|
1533
1695
|
...props,
|
|
1534
1696
|
children: [
|
|
1535
1697
|
children,
|
|
1536
|
-
/* @__PURE__ */
|
|
1698
|
+
/* @__PURE__ */ jsx24(
|
|
1537
1699
|
OverlayArrow,
|
|
1538
1700
|
{
|
|
1539
1701
|
className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground",
|
|
@@ -1551,7 +1713,7 @@ function Tooltip({
|
|
|
1551
1713
|
}
|
|
1552
1714
|
|
|
1553
1715
|
// src/ui/icon-button/icon-button.tsx
|
|
1554
|
-
import { jsx as
|
|
1716
|
+
import { jsx as jsx25, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1555
1717
|
function IconButton({
|
|
1556
1718
|
label,
|
|
1557
1719
|
children,
|
|
@@ -1564,8 +1726,8 @@ function IconButton({
|
|
|
1564
1726
|
buttonVariants({ variant, size: "icon" }),
|
|
1565
1727
|
className
|
|
1566
1728
|
);
|
|
1567
|
-
return /* @__PURE__ */
|
|
1568
|
-
href ? /* @__PURE__ */
|
|
1729
|
+
return /* @__PURE__ */ jsxs12(TooltipTrigger, { children: [
|
|
1730
|
+
href ? /* @__PURE__ */ jsx25(
|
|
1569
1731
|
Link2,
|
|
1570
1732
|
{
|
|
1571
1733
|
"data-slot": "icon-button",
|
|
@@ -1574,7 +1736,7 @@ function IconButton({
|
|
|
1574
1736
|
className: linkClassName,
|
|
1575
1737
|
children
|
|
1576
1738
|
}
|
|
1577
|
-
) : /* @__PURE__ */
|
|
1739
|
+
) : /* @__PURE__ */ jsx25(
|
|
1578
1740
|
Button,
|
|
1579
1741
|
{
|
|
1580
1742
|
"data-slot": "icon-button",
|
|
@@ -1586,37 +1748,37 @@ function IconButton({
|
|
|
1586
1748
|
children
|
|
1587
1749
|
}
|
|
1588
1750
|
),
|
|
1589
|
-
/* @__PURE__ */
|
|
1751
|
+
/* @__PURE__ */ jsx25(Tooltip, { children: label })
|
|
1590
1752
|
] });
|
|
1591
1753
|
}
|
|
1592
1754
|
|
|
1755
|
+
// src/ui/input-group/input-group.tsx
|
|
1756
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
1757
|
+
|
|
1593
1758
|
// src/ui/input/input.tsx
|
|
1594
1759
|
import { forwardRef as forwardRef2 } from "react";
|
|
1595
1760
|
import { Input as AriaInput2 } from "react-aria-components";
|
|
1596
|
-
import { jsx as
|
|
1761
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
1597
1762
|
var InputImpl = forwardRef2(function Input2({ className, type, ...props }, ref) {
|
|
1598
|
-
return /* @__PURE__ */
|
|
1763
|
+
return /* @__PURE__ */ jsx26(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 });
|
|
1599
1764
|
});
|
|
1600
1765
|
var Input3 = InputImpl;
|
|
1601
1766
|
|
|
1602
|
-
// src/ui/input-group/input-group.tsx
|
|
1603
|
-
import { cva as cva8 } from "class-variance-authority";
|
|
1604
|
-
|
|
1605
1767
|
// src/ui/textarea/textarea.tsx
|
|
1606
1768
|
import { forwardRef as forwardRef3 } from "react";
|
|
1607
1769
|
import { TextArea as AriaTextArea } from "react-aria-components";
|
|
1608
|
-
import { jsx as
|
|
1770
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1609
1771
|
var TextareaImpl = forwardRef3(function Textarea({ className, ...props }, ref) {
|
|
1610
|
-
return /* @__PURE__ */
|
|
1772
|
+
return /* @__PURE__ */ jsx27(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 });
|
|
1611
1773
|
});
|
|
1612
1774
|
var Textarea2 = TextareaImpl;
|
|
1613
1775
|
|
|
1614
1776
|
// src/ui/input-group/input-group.tsx
|
|
1615
|
-
import { jsx as
|
|
1777
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1616
1778
|
function InputGroup({ className, ...props }) {
|
|
1617
1779
|
return (
|
|
1618
1780
|
// biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.
|
|
1619
|
-
/* @__PURE__ */
|
|
1781
|
+
/* @__PURE__ */ jsx28(
|
|
1620
1782
|
"div",
|
|
1621
1783
|
{
|
|
1622
1784
|
role: "group",
|
|
@@ -1630,7 +1792,7 @@ function InputGroup({ className, ...props }) {
|
|
|
1630
1792
|
)
|
|
1631
1793
|
);
|
|
1632
1794
|
}
|
|
1633
|
-
var inputGroupAddonVariants =
|
|
1795
|
+
var inputGroupAddonVariants = cva9(
|
|
1634
1796
|
"flex cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none [&_svg:not([class*='size-'])]:size-4",
|
|
1635
1797
|
{
|
|
1636
1798
|
variants: {
|
|
@@ -1652,7 +1814,7 @@ function InputGroupAddon({
|
|
|
1652
1814
|
}) {
|
|
1653
1815
|
return (
|
|
1654
1816
|
// biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.
|
|
1655
|
-
/* @__PURE__ */
|
|
1817
|
+
/* @__PURE__ */ jsx28(
|
|
1656
1818
|
"div",
|
|
1657
1819
|
{
|
|
1658
1820
|
role: "group",
|
|
@@ -1669,7 +1831,7 @@ function InputGroupAddon({
|
|
|
1669
1831
|
)
|
|
1670
1832
|
);
|
|
1671
1833
|
}
|
|
1672
|
-
var inputGroupButtonVariants =
|
|
1834
|
+
var inputGroupButtonVariants = cva9("shrink-0 shadow-none", {
|
|
1673
1835
|
variants: {
|
|
1674
1836
|
size: { xs: "h-6 px-1.5 text-xs", sm: "h-7 px-2", "icon-xs": "size-6", "icon-sm": "size-7" }
|
|
1675
1837
|
},
|
|
@@ -1683,7 +1845,7 @@ function InputGroupButton({
|
|
|
1683
1845
|
...props
|
|
1684
1846
|
}) {
|
|
1685
1847
|
const buttonSize = size === "icon-xs" || size === "icon-sm" ? size : size;
|
|
1686
|
-
return /* @__PURE__ */
|
|
1848
|
+
return /* @__PURE__ */ jsx28(
|
|
1687
1849
|
Button,
|
|
1688
1850
|
{
|
|
1689
1851
|
"data-slot": "input-group-button",
|
|
@@ -1696,7 +1858,7 @@ function InputGroupButton({
|
|
|
1696
1858
|
);
|
|
1697
1859
|
}
|
|
1698
1860
|
function InputGroupText({ className, ...props }) {
|
|
1699
|
-
return /* @__PURE__ */
|
|
1861
|
+
return /* @__PURE__ */ jsx28(
|
|
1700
1862
|
"span",
|
|
1701
1863
|
{
|
|
1702
1864
|
"data-slot": "input-group-text",
|
|
@@ -1709,7 +1871,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
1709
1871
|
);
|
|
1710
1872
|
}
|
|
1711
1873
|
function InputGroupInput({ className, ...props }) {
|
|
1712
|
-
return /* @__PURE__ */
|
|
1874
|
+
return /* @__PURE__ */ jsx28(
|
|
1713
1875
|
Input3,
|
|
1714
1876
|
{
|
|
1715
1877
|
"data-slot": "input-group-control",
|
|
@@ -1722,7 +1884,7 @@ function InputGroupInput({ className, ...props }) {
|
|
|
1722
1884
|
);
|
|
1723
1885
|
}
|
|
1724
1886
|
function InputGroupTextarea({ className, ...props }) {
|
|
1725
|
-
return /* @__PURE__ */
|
|
1887
|
+
return /* @__PURE__ */ jsx28(
|
|
1726
1888
|
Textarea2,
|
|
1727
1889
|
{
|
|
1728
1890
|
"data-slot": "input-group-control",
|
|
@@ -1736,21 +1898,21 @@ function InputGroupTextarea({ className, ...props }) {
|
|
|
1736
1898
|
}
|
|
1737
1899
|
|
|
1738
1900
|
// src/ui/kbd/kbd.tsx
|
|
1739
|
-
import { jsx as
|
|
1901
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1740
1902
|
function Kbd({ className, ...props }) {
|
|
1741
|
-
return /* @__PURE__ */
|
|
1903
|
+
return /* @__PURE__ */ jsx29("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 });
|
|
1742
1904
|
}
|
|
1743
1905
|
function KbdGroup({ className, ...props }) {
|
|
1744
|
-
return /* @__PURE__ */
|
|
1906
|
+
return /* @__PURE__ */ jsx29("span", { "data-slot": "kbd-group", className: cn("inline-flex items-center gap-1", className), ...props });
|
|
1745
1907
|
}
|
|
1746
1908
|
|
|
1747
1909
|
// src/ui/loading-overlay/loading-overlay.tsx
|
|
1748
1910
|
import { LoaderCircle as LoaderCircle2 } from "lucide-react";
|
|
1749
|
-
import { jsx as
|
|
1911
|
+
import { jsx as jsx30, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1750
1912
|
function LoadingOverlay({ label = "Cargando", className, ...props }) {
|
|
1751
|
-
return /* @__PURE__ */
|
|
1752
|
-
/* @__PURE__ */
|
|
1753
|
-
/* @__PURE__ */
|
|
1913
|
+
return /* @__PURE__ */ jsx30("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__ */ jsxs13("div", { className: "flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm shadow-sm", children: [
|
|
1914
|
+
/* @__PURE__ */ jsx30(LoaderCircle2, { className: "animate-spin", "aria-hidden": "true" }),
|
|
1915
|
+
/* @__PURE__ */ jsx30("span", { children: label })
|
|
1754
1916
|
] }) });
|
|
1755
1917
|
}
|
|
1756
1918
|
|
|
@@ -1761,16 +1923,16 @@ import {
|
|
|
1761
1923
|
MenuTrigger as AriaMenuTrigger,
|
|
1762
1924
|
Popover as Popover3
|
|
1763
1925
|
} from "react-aria-components";
|
|
1764
|
-
import { jsx as
|
|
1926
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1765
1927
|
var MenuTrigger = AriaMenuTrigger;
|
|
1766
1928
|
function MenuContent({ className, ...props }) {
|
|
1767
|
-
return /* @__PURE__ */
|
|
1929
|
+
return /* @__PURE__ */ jsx31(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 });
|
|
1768
1930
|
}
|
|
1769
1931
|
function Menu({ className, ...props }) {
|
|
1770
|
-
return /* @__PURE__ */
|
|
1932
|
+
return /* @__PURE__ */ jsx31(AriaMenu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
|
|
1771
1933
|
}
|
|
1772
1934
|
function MenuItem({ className, children, ...props }) {
|
|
1773
|
-
return /* @__PURE__ */
|
|
1935
|
+
return /* @__PURE__ */ jsx31(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 });
|
|
1774
1936
|
}
|
|
1775
1937
|
|
|
1776
1938
|
// src/ui/otp-input/otp-input.tsx
|
|
@@ -1778,10 +1940,10 @@ import {
|
|
|
1778
1940
|
forwardRef as forwardRef4,
|
|
1779
1941
|
useImperativeHandle,
|
|
1780
1942
|
useRef as useRef4,
|
|
1781
|
-
useState as
|
|
1943
|
+
useState as useState8
|
|
1782
1944
|
} from "react";
|
|
1783
1945
|
import { Input as AriaInput3 } from "react-aria-components";
|
|
1784
|
-
import { jsx as
|
|
1946
|
+
import { jsx as jsx32, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1785
1947
|
function normalizeOtp(value, length) {
|
|
1786
1948
|
return value.replace(/[^0-9]/g, "").slice(0, length);
|
|
1787
1949
|
}
|
|
@@ -1802,12 +1964,12 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1802
1964
|
}, forwardedRef) {
|
|
1803
1965
|
const slotCount = Math.max(1, Math.floor(length));
|
|
1804
1966
|
const controlled = value !== void 0;
|
|
1805
|
-
const [internalValue, setInternalValue] =
|
|
1967
|
+
const [internalValue, setInternalValue] = useState8(() => normalizeOtp(defaultValue, slotCount));
|
|
1806
1968
|
const code = normalizeOtp(controlled ? value : internalValue, slotCount);
|
|
1807
1969
|
const slots = Array.from({ length: slotCount }, (_, index) => `otp-slot-${index + 1}`);
|
|
1808
1970
|
const inputRef = useRef4(null);
|
|
1809
|
-
const [focused, setFocused] =
|
|
1810
|
-
const [selectionStart, setSelectionStart] =
|
|
1971
|
+
const [focused, setFocused] = useState8(false);
|
|
1972
|
+
const [selectionStart, setSelectionStart] = useState8(0);
|
|
1811
1973
|
const invalid = props["aria-invalid"] === true || props["aria-invalid"] === "true";
|
|
1812
1974
|
const activeIndex = code.length === slotCount ? slotCount - 1 : Math.min(selectionStart, code.length, slotCount - 1);
|
|
1813
1975
|
useImperativeHandle(forwardedRef, () => inputRef.current);
|
|
@@ -1833,7 +1995,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1833
1995
|
input.setSelectionRange(position, position);
|
|
1834
1996
|
setSelectionStart(position);
|
|
1835
1997
|
}
|
|
1836
|
-
return /* @__PURE__ */
|
|
1998
|
+
return /* @__PURE__ */ jsxs14(
|
|
1837
1999
|
"div",
|
|
1838
2000
|
{
|
|
1839
2001
|
"data-slot": "otp-input",
|
|
@@ -1843,7 +2005,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1843
2005
|
style: { gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` },
|
|
1844
2006
|
onPointerDown: handlePointerDown,
|
|
1845
2007
|
children: [
|
|
1846
|
-
/* @__PURE__ */
|
|
2008
|
+
/* @__PURE__ */ jsx32(
|
|
1847
2009
|
AriaInput3,
|
|
1848
2010
|
{
|
|
1849
2011
|
...props,
|
|
@@ -1883,7 +2045,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1883
2045
|
}
|
|
1884
2046
|
}
|
|
1885
2047
|
),
|
|
1886
|
-
slots.map((slot, index) => /* @__PURE__ */
|
|
2048
|
+
slots.map((slot, index) => /* @__PURE__ */ jsx32(
|
|
1887
2049
|
"span",
|
|
1888
2050
|
{
|
|
1889
2051
|
"aria-hidden": "true",
|
|
@@ -1906,39 +2068,39 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1906
2068
|
var OtpInput2 = OtpInputImpl;
|
|
1907
2069
|
|
|
1908
2070
|
// src/ui/page-header/page-header.tsx
|
|
1909
|
-
import { jsx as
|
|
2071
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1910
2072
|
function PageHeader({ className, ...props }) {
|
|
1911
|
-
return /* @__PURE__ */
|
|
2073
|
+
return /* @__PURE__ */ jsx33("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 });
|
|
1912
2074
|
}
|
|
1913
2075
|
function PageHeaderHeading({ className, ...props }) {
|
|
1914
|
-
return /* @__PURE__ */
|
|
2076
|
+
return /* @__PURE__ */ jsx33("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
|
|
1915
2077
|
}
|
|
1916
2078
|
function PageHeaderTitle({ className, ...props }) {
|
|
1917
|
-
return /* @__PURE__ */
|
|
2079
|
+
return /* @__PURE__ */ jsx33("h1", { "data-slot": "page-header-title", className: cn("truncate text-xl font-semibold tracking-tight md:text-2xl", className), ...props });
|
|
1918
2080
|
}
|
|
1919
2081
|
function PageHeaderDescription({ className, ...props }) {
|
|
1920
|
-
return /* @__PURE__ */
|
|
2082
|
+
return /* @__PURE__ */ jsx33("p", { "data-slot": "page-header-description", className: cn("mt-1 text-sm text-muted-foreground", className), ...props });
|
|
1921
2083
|
}
|
|
1922
2084
|
function PageHeaderActions({ className, ...props }) {
|
|
1923
|
-
return /* @__PURE__ */
|
|
2085
|
+
return /* @__PURE__ */ jsx33("div", { "data-slot": "page-header-actions", className: cn("flex shrink-0 items-center gap-2", className), ...props });
|
|
1924
2086
|
}
|
|
1925
2087
|
|
|
1926
2088
|
// src/ui/pagination/pagination.tsx
|
|
1927
2089
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
1928
|
-
import { jsx as
|
|
2090
|
+
import { jsx as jsx34, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1929
2091
|
function Pagination({ page, pageCount, onPageChange, className }) {
|
|
1930
2092
|
const pages = Array.from({ length: pageCount }, (_, index) => index + 1);
|
|
1931
|
-
return /* @__PURE__ */
|
|
1932
|
-
/* @__PURE__ */
|
|
2093
|
+
return /* @__PURE__ */ jsxs15("nav", { "aria-label": "Paginaci\xF3n", className: cn("flex items-center justify-between gap-4", className), children: [
|
|
2094
|
+
/* @__PURE__ */ jsxs15("p", { className: "text-sm text-muted-foreground", children: [
|
|
1933
2095
|
"P\xE1gina ",
|
|
1934
2096
|
page,
|
|
1935
2097
|
" de ",
|
|
1936
2098
|
pageCount
|
|
1937
2099
|
] }),
|
|
1938
|
-
/* @__PURE__ */
|
|
1939
|
-
/* @__PURE__ */
|
|
1940
|
-
pages.map((item) => /* @__PURE__ */
|
|
1941
|
-
/* @__PURE__ */
|
|
2100
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-1", children: [
|
|
2101
|
+
/* @__PURE__ */ jsx34(Button, { "aria-label": "P\xE1gina anterior", isDisabled: page <= 1, onPress: () => onPageChange(page - 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ jsx34(ChevronLeft, {}) }),
|
|
2102
|
+
pages.map((item) => /* @__PURE__ */ jsx34(Button, { "aria-current": item === page ? "page" : void 0, "aria-label": `P\xE1gina ${item}`, onPress: () => onPageChange(item), size: "icon", variant: item === page ? "secondary" : "ghost", children: item }, item)),
|
|
2103
|
+
/* @__PURE__ */ jsx34(Button, { "aria-label": "P\xE1gina siguiente", isDisabled: page >= pageCount, onPress: () => onPageChange(page + 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ jsx34(ChevronRight, {}) })
|
|
1942
2104
|
] })
|
|
1943
2105
|
] });
|
|
1944
2106
|
}
|
|
@@ -1948,10 +2110,10 @@ import {
|
|
|
1948
2110
|
DialogTrigger as AriaDialogTrigger,
|
|
1949
2111
|
Popover as AriaPopover
|
|
1950
2112
|
} from "react-aria-components";
|
|
1951
|
-
import { jsx as
|
|
2113
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
1952
2114
|
var PopoverTrigger = AriaDialogTrigger;
|
|
1953
2115
|
function Popover4({ className, ...props }) {
|
|
1954
|
-
return /* @__PURE__ */
|
|
2116
|
+
return /* @__PURE__ */ jsx35(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 });
|
|
1955
2117
|
}
|
|
1956
2118
|
var PopoverContent = Popover4;
|
|
1957
2119
|
|
|
@@ -1963,7 +2125,7 @@ import {
|
|
|
1963
2125
|
Input as AriaInput4,
|
|
1964
2126
|
NumberField as AriaNumberField
|
|
1965
2127
|
} from "react-aria-components";
|
|
1966
|
-
import { jsx as
|
|
2128
|
+
import { jsx as jsx36, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1967
2129
|
function QuantityInput({
|
|
1968
2130
|
className,
|
|
1969
2131
|
inputClassName,
|
|
@@ -1973,7 +2135,7 @@ function QuantityInput({
|
|
|
1973
2135
|
step = 1,
|
|
1974
2136
|
...props
|
|
1975
2137
|
}) {
|
|
1976
|
-
return /* @__PURE__ */
|
|
2138
|
+
return /* @__PURE__ */ jsx36(
|
|
1977
2139
|
AriaNumberField,
|
|
1978
2140
|
{
|
|
1979
2141
|
...props,
|
|
@@ -1981,15 +2143,15 @@ function QuantityInput({
|
|
|
1981
2143
|
step,
|
|
1982
2144
|
"data-slot": "quantity-input",
|
|
1983
2145
|
className: cn("group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
|
|
1984
|
-
children: /* @__PURE__ */
|
|
2146
|
+
children: /* @__PURE__ */ jsxs16(
|
|
1985
2147
|
AriaGroup,
|
|
1986
2148
|
{
|
|
1987
2149
|
"data-slot": "quantity-input-group",
|
|
1988
2150
|
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",
|
|
1989
2151
|
children: [
|
|
1990
|
-
/* @__PURE__ */
|
|
1991
|
-
/* @__PURE__ */
|
|
1992
|
-
/* @__PURE__ */
|
|
2152
|
+
/* @__PURE__ */ jsx36(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__ */ jsx36(Minus, { "aria-hidden": "true", className: "size-4" }) }),
|
|
2153
|
+
/* @__PURE__ */ jsx36(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) }),
|
|
2154
|
+
/* @__PURE__ */ jsx36(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__ */ jsx36(Plus, { "aria-hidden": "true", className: "size-4" }) })
|
|
1993
2155
|
]
|
|
1994
2156
|
}
|
|
1995
2157
|
)
|
|
@@ -2004,13 +2166,13 @@ import {
|
|
|
2004
2166
|
Input as Input4
|
|
2005
2167
|
} from "react-aria-components";
|
|
2006
2168
|
import { X as X2 } from "lucide-react";
|
|
2007
|
-
import { jsx as
|
|
2169
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
2008
2170
|
var SearchField = AriaSearchField;
|
|
2009
2171
|
function SearchInput({ className, ...props }) {
|
|
2010
|
-
return /* @__PURE__ */
|
|
2172
|
+
return /* @__PURE__ */ jsx37(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 });
|
|
2011
2173
|
}
|
|
2012
|
-
function SearchClearButton({ className, children = /* @__PURE__ */
|
|
2013
|
-
return /* @__PURE__ */
|
|
2174
|
+
function SearchClearButton({ className, children = /* @__PURE__ */ jsx37(X2, { "aria-hidden": "true", className: "size-4" }), ...props }) {
|
|
2175
|
+
return /* @__PURE__ */ jsx37(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 });
|
|
2014
2176
|
}
|
|
2015
2177
|
|
|
2016
2178
|
// src/ui/select/select.tsx
|
|
@@ -2023,43 +2185,43 @@ import {
|
|
|
2023
2185
|
Popover as Popover5
|
|
2024
2186
|
} from "react-aria-components";
|
|
2025
2187
|
import { ChevronDown } from "lucide-react";
|
|
2026
|
-
import { Fragment as
|
|
2188
|
+
import { Fragment as Fragment8, jsx as jsx38, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2027
2189
|
var Select = AriaSelect;
|
|
2028
2190
|
function SelectTrigger({ className, children, ...props }) {
|
|
2029
|
-
return /* @__PURE__ */
|
|
2191
|
+
return /* @__PURE__ */ jsx38(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__ */ jsxs17(Fragment8, { children: [
|
|
2030
2192
|
typeof children === "function" ? children(state) : children,
|
|
2031
|
-
/* @__PURE__ */
|
|
2193
|
+
/* @__PURE__ */ jsx38(ChevronDown, { "aria-hidden": "true", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
|
|
2032
2194
|
] }) });
|
|
2033
2195
|
}
|
|
2034
2196
|
function SelectValue({ className, ...props }) {
|
|
2035
|
-
return /* @__PURE__ */
|
|
2197
|
+
return /* @__PURE__ */ jsx38(AriaSelectValue, { "data-slot": "select-value", className: cn("flex-1 truncate data-placeholder:text-muted-foreground", className), ...props });
|
|
2036
2198
|
}
|
|
2037
2199
|
function SelectContent({ className, ...props }) {
|
|
2038
|
-
return /* @__PURE__ */
|
|
2200
|
+
return /* @__PURE__ */ jsx38(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 });
|
|
2039
2201
|
}
|
|
2040
2202
|
function SelectList({ className, ...props }) {
|
|
2041
|
-
return /* @__PURE__ */
|
|
2203
|
+
return /* @__PURE__ */ jsx38(ListBox3, { "data-slot": "select-list", className: cn("max-h-64 overflow-y-auto", className), ...props });
|
|
2042
2204
|
}
|
|
2043
2205
|
function SelectItem({ className, children, ...props }) {
|
|
2044
|
-
return /* @__PURE__ */
|
|
2206
|
+
return /* @__PURE__ */ jsx38(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 });
|
|
2045
2207
|
}
|
|
2046
2208
|
|
|
2047
2209
|
// src/ui/sheet/sheet.tsx
|
|
2048
|
-
import { XIcon } from "lucide-react";
|
|
2210
|
+
import { XIcon as XIcon2 } from "lucide-react";
|
|
2049
2211
|
import {
|
|
2050
|
-
Heading as
|
|
2212
|
+
Heading as Heading3,
|
|
2051
2213
|
ModalOverlay as ModalOverlayPrimitive,
|
|
2052
2214
|
Modal as ModalPrimitive,
|
|
2053
2215
|
Dialog as SheetPrimitive,
|
|
2054
2216
|
DialogTrigger as SheetTriggerPrimitive,
|
|
2055
|
-
Text as
|
|
2217
|
+
Text as Text4
|
|
2056
2218
|
} from "react-aria-components";
|
|
2057
|
-
import { jsx as
|
|
2219
|
+
import { jsx as jsx39, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2058
2220
|
function SheetTrigger({ ...props }) {
|
|
2059
|
-
return /* @__PURE__ */
|
|
2221
|
+
return /* @__PURE__ */ jsx39(SheetTriggerPrimitive, { "data-slot": "sheet-trigger", ...props });
|
|
2060
2222
|
}
|
|
2061
2223
|
function SheetClose({ className, variant = "outline", size = "default", ...props }) {
|
|
2062
|
-
return /* @__PURE__ */
|
|
2224
|
+
return /* @__PURE__ */ jsx39(
|
|
2063
2225
|
Button,
|
|
2064
2226
|
{
|
|
2065
2227
|
slot: "close",
|
|
@@ -2076,7 +2238,7 @@ function SheetOverlay({
|
|
|
2076
2238
|
children,
|
|
2077
2239
|
...props
|
|
2078
2240
|
}) {
|
|
2079
|
-
return /* @__PURE__ */
|
|
2241
|
+
return /* @__PURE__ */ jsx39(
|
|
2080
2242
|
ModalOverlayPrimitive,
|
|
2081
2243
|
{
|
|
2082
2244
|
"data-slot": "sheet-overlay",
|
|
@@ -2097,7 +2259,7 @@ function Sheet({
|
|
|
2097
2259
|
showCloseButton = true,
|
|
2098
2260
|
...props
|
|
2099
2261
|
}) {
|
|
2100
|
-
return /* @__PURE__ */
|
|
2262
|
+
return /* @__PURE__ */ jsx39(SheetOverlay, { ...props, children: /* @__PURE__ */ jsx39(
|
|
2101
2263
|
ModalPrimitive,
|
|
2102
2264
|
{
|
|
2103
2265
|
"data-slot": "sheet-content",
|
|
@@ -2106,16 +2268,16 @@ function Sheet({
|
|
|
2106
2268
|
"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",
|
|
2107
2269
|
className
|
|
2108
2270
|
),
|
|
2109
|
-
children: /* @__PURE__ */
|
|
2271
|
+
children: /* @__PURE__ */ jsxs18(
|
|
2110
2272
|
SheetPrimitive,
|
|
2111
2273
|
{
|
|
2112
2274
|
"data-slot": "sheet",
|
|
2113
2275
|
className: "[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none",
|
|
2114
2276
|
children: [
|
|
2115
2277
|
children,
|
|
2116
|
-
showCloseButton && /* @__PURE__ */
|
|
2117
|
-
/* @__PURE__ */
|
|
2118
|
-
/* @__PURE__ */
|
|
2278
|
+
showCloseButton && /* @__PURE__ */ jsxs18(SheetClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
|
|
2279
|
+
/* @__PURE__ */ jsx39(XIcon2, {}),
|
|
2280
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Cerrar" })
|
|
2119
2281
|
] })
|
|
2120
2282
|
]
|
|
2121
2283
|
}
|
|
@@ -2130,10 +2292,10 @@ function SheetContent({
|
|
|
2130
2292
|
showCloseButton = true,
|
|
2131
2293
|
...props
|
|
2132
2294
|
}) {
|
|
2133
|
-
return /* @__PURE__ */
|
|
2295
|
+
return /* @__PURE__ */ jsx39(Sheet, { className, side, showCloseButton, ...props, children });
|
|
2134
2296
|
}
|
|
2135
2297
|
function SheetHeader({ className, ...props }) {
|
|
2136
|
-
return /* @__PURE__ */
|
|
2298
|
+
return /* @__PURE__ */ jsx39(
|
|
2137
2299
|
"div",
|
|
2138
2300
|
{
|
|
2139
2301
|
"data-slot": "sheet-header",
|
|
@@ -2143,7 +2305,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
2143
2305
|
);
|
|
2144
2306
|
}
|
|
2145
2307
|
function SheetFooter({ className, ...props }) {
|
|
2146
|
-
return /* @__PURE__ */
|
|
2308
|
+
return /* @__PURE__ */ jsx39(
|
|
2147
2309
|
"div",
|
|
2148
2310
|
{
|
|
2149
2311
|
"data-slot": "sheet-footer",
|
|
@@ -2153,8 +2315,8 @@ function SheetFooter({ className, ...props }) {
|
|
|
2153
2315
|
);
|
|
2154
2316
|
}
|
|
2155
2317
|
function SheetTitle({ className, ...props }) {
|
|
2156
|
-
return /* @__PURE__ */
|
|
2157
|
-
|
|
2318
|
+
return /* @__PURE__ */ jsx39(
|
|
2319
|
+
Heading3,
|
|
2158
2320
|
{
|
|
2159
2321
|
slot: "title",
|
|
2160
2322
|
"data-slot": "sheet-title",
|
|
@@ -2167,8 +2329,8 @@ function SheetDescription({
|
|
|
2167
2329
|
className,
|
|
2168
2330
|
...props
|
|
2169
2331
|
}) {
|
|
2170
|
-
return /* @__PURE__ */
|
|
2171
|
-
|
|
2332
|
+
return /* @__PURE__ */ jsx39(
|
|
2333
|
+
Text4,
|
|
2172
2334
|
{
|
|
2173
2335
|
slot: "description",
|
|
2174
2336
|
"data-slot": "sheet-description",
|
|
@@ -2186,16 +2348,16 @@ import {
|
|
|
2186
2348
|
Search
|
|
2187
2349
|
} from "lucide-react";
|
|
2188
2350
|
import {
|
|
2189
|
-
createContext as
|
|
2190
|
-
useContext as
|
|
2351
|
+
createContext as createContext3,
|
|
2352
|
+
useContext as useContext3,
|
|
2191
2353
|
useMemo as useMemo2,
|
|
2192
|
-
useState as
|
|
2354
|
+
useState as useState9
|
|
2193
2355
|
} from "react";
|
|
2194
2356
|
import { Link as Link3 } from "react-aria-components";
|
|
2195
|
-
import { Fragment as
|
|
2196
|
-
var SidebarContext =
|
|
2357
|
+
import { Fragment as Fragment9, jsx as jsx40, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2358
|
+
var SidebarContext = createContext3(null);
|
|
2197
2359
|
function useSidebar() {
|
|
2198
|
-
const context =
|
|
2360
|
+
const context = useContext3(SidebarContext);
|
|
2199
2361
|
if (!context)
|
|
2200
2362
|
throw new Error("useSidebar must be used inside SidebarProvider");
|
|
2201
2363
|
return context;
|
|
@@ -2204,7 +2366,7 @@ function SidebarProvider({
|
|
|
2204
2366
|
defaultCollapsed = false,
|
|
2205
2367
|
children
|
|
2206
2368
|
}) {
|
|
2207
|
-
const [collapsed, setCollapsed] =
|
|
2369
|
+
const [collapsed, setCollapsed] = useState9(defaultCollapsed);
|
|
2208
2370
|
const value = useMemo2(
|
|
2209
2371
|
() => ({
|
|
2210
2372
|
collapsed,
|
|
@@ -2213,14 +2375,14 @@ function SidebarProvider({
|
|
|
2213
2375
|
}),
|
|
2214
2376
|
[collapsed]
|
|
2215
2377
|
);
|
|
2216
|
-
return /* @__PURE__ */
|
|
2378
|
+
return /* @__PURE__ */ jsx40(SidebarContext.Provider, { value, children });
|
|
2217
2379
|
}
|
|
2218
2380
|
function Sidebar({
|
|
2219
2381
|
className,
|
|
2220
2382
|
...props
|
|
2221
2383
|
}) {
|
|
2222
2384
|
const { collapsed } = useSidebar();
|
|
2223
|
-
return /* @__PURE__ */
|
|
2385
|
+
return /* @__PURE__ */ jsx40(
|
|
2224
2386
|
"aside",
|
|
2225
2387
|
{
|
|
2226
2388
|
"data-slot": "sidebar",
|
|
@@ -2237,7 +2399,7 @@ function SidebarHeader({
|
|
|
2237
2399
|
className,
|
|
2238
2400
|
...props
|
|
2239
2401
|
}) {
|
|
2240
|
-
return /* @__PURE__ */
|
|
2402
|
+
return /* @__PURE__ */ jsx40(
|
|
2241
2403
|
"div",
|
|
2242
2404
|
{
|
|
2243
2405
|
"data-slot": "sidebar-header",
|
|
@@ -2252,7 +2414,7 @@ function SidebarSearch({
|
|
|
2252
2414
|
className,
|
|
2253
2415
|
...props
|
|
2254
2416
|
}) {
|
|
2255
|
-
return /* @__PURE__ */
|
|
2417
|
+
return /* @__PURE__ */ jsxs19(
|
|
2256
2418
|
"button",
|
|
2257
2419
|
{
|
|
2258
2420
|
type: "button",
|
|
@@ -2263,9 +2425,9 @@ function SidebarSearch({
|
|
|
2263
2425
|
),
|
|
2264
2426
|
...props,
|
|
2265
2427
|
children: [
|
|
2266
|
-
/* @__PURE__ */
|
|
2267
|
-
/* @__PURE__ */
|
|
2268
|
-
/* @__PURE__ */
|
|
2428
|
+
/* @__PURE__ */ jsx40(Search, { className: "size-4 shrink-0" }),
|
|
2429
|
+
/* @__PURE__ */ jsx40("span", { className: "flex-1 text-left", children: label }),
|
|
2430
|
+
/* @__PURE__ */ jsx40("kbd", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground", children: shortcut })
|
|
2269
2431
|
]
|
|
2270
2432
|
}
|
|
2271
2433
|
);
|
|
@@ -2274,7 +2436,7 @@ function SidebarContent({
|
|
|
2274
2436
|
className,
|
|
2275
2437
|
...props
|
|
2276
2438
|
}) {
|
|
2277
|
-
return /* @__PURE__ */
|
|
2439
|
+
return /* @__PURE__ */ jsx40(
|
|
2278
2440
|
"nav",
|
|
2279
2441
|
{
|
|
2280
2442
|
"data-slot": "sidebar-content",
|
|
@@ -2288,7 +2450,7 @@ function SidebarFooter({
|
|
|
2288
2450
|
className,
|
|
2289
2451
|
...props
|
|
2290
2452
|
}) {
|
|
2291
|
-
return /* @__PURE__ */
|
|
2453
|
+
return /* @__PURE__ */ jsx40(
|
|
2292
2454
|
"div",
|
|
2293
2455
|
{
|
|
2294
2456
|
"data-slot": "sidebar-footer",
|
|
@@ -2307,14 +2469,14 @@ function SidebarGroup({
|
|
|
2307
2469
|
...props
|
|
2308
2470
|
}) {
|
|
2309
2471
|
const { collapsed } = useSidebar();
|
|
2310
|
-
return /* @__PURE__ */
|
|
2472
|
+
return /* @__PURE__ */ jsxs19(
|
|
2311
2473
|
"section",
|
|
2312
2474
|
{
|
|
2313
2475
|
"data-slot": "sidebar-group",
|
|
2314
2476
|
className: cn("mb-4 last:mb-0", className),
|
|
2315
2477
|
...props,
|
|
2316
2478
|
children: [
|
|
2317
|
-
label && /* @__PURE__ */
|
|
2479
|
+
label && /* @__PURE__ */ jsx40(
|
|
2318
2480
|
"h2",
|
|
2319
2481
|
{
|
|
2320
2482
|
className: cn(
|
|
@@ -2340,7 +2502,7 @@ function SidebarItem({
|
|
|
2340
2502
|
}) {
|
|
2341
2503
|
const { collapsed } = useSidebar();
|
|
2342
2504
|
const content = typeof children === "function" ? label : children ?? label;
|
|
2343
|
-
return /* @__PURE__ */
|
|
2505
|
+
return /* @__PURE__ */ jsx40(
|
|
2344
2506
|
Link3,
|
|
2345
2507
|
{
|
|
2346
2508
|
"data-slot": "sidebar-item",
|
|
@@ -2352,16 +2514,16 @@ function SidebarItem({
|
|
|
2352
2514
|
typeof className === "function" ? className : className
|
|
2353
2515
|
),
|
|
2354
2516
|
...props,
|
|
2355
|
-
children: (values) => /* @__PURE__ */
|
|
2356
|
-
/* @__PURE__ */
|
|
2357
|
-
/* @__PURE__ */
|
|
2517
|
+
children: (values) => /* @__PURE__ */ jsxs19(Fragment9, { children: [
|
|
2518
|
+
/* @__PURE__ */ jsx40("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
|
|
2519
|
+
/* @__PURE__ */ jsx40(
|
|
2358
2520
|
"span",
|
|
2359
2521
|
{
|
|
2360
2522
|
className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"),
|
|
2361
2523
|
children: typeof children === "function" ? children(values) : content
|
|
2362
2524
|
}
|
|
2363
2525
|
),
|
|
2364
|
-
badge && !collapsed && /* @__PURE__ */
|
|
2526
|
+
badge && !collapsed && /* @__PURE__ */ jsx40("span", { className: "text-xs text-muted-foreground", children: badge })
|
|
2365
2527
|
] })
|
|
2366
2528
|
}
|
|
2367
2529
|
);
|
|
@@ -2370,7 +2532,7 @@ function SidebarSeparator({
|
|
|
2370
2532
|
className,
|
|
2371
2533
|
...props
|
|
2372
2534
|
}) {
|
|
2373
|
-
return /* @__PURE__ */
|
|
2535
|
+
return /* @__PURE__ */ jsx40(
|
|
2374
2536
|
"hr",
|
|
2375
2537
|
{
|
|
2376
2538
|
"data-slot": "sidebar-separator",
|
|
@@ -2381,7 +2543,7 @@ function SidebarSeparator({
|
|
|
2381
2543
|
}
|
|
2382
2544
|
function SidebarTrigger({ className, ...props }) {
|
|
2383
2545
|
const { collapsed, toggle } = useSidebar();
|
|
2384
|
-
return /* @__PURE__ */
|
|
2546
|
+
return /* @__PURE__ */ jsx40(
|
|
2385
2547
|
Button,
|
|
2386
2548
|
{
|
|
2387
2549
|
"aria-label": collapsed ? "Expandir navegaci\xF3n" : "Colapsar navegaci\xF3n",
|
|
@@ -2390,7 +2552,7 @@ function SidebarTrigger({ className, ...props }) {
|
|
|
2390
2552
|
variant: "ghost",
|
|
2391
2553
|
className: cn("ml-auto", className),
|
|
2392
2554
|
...props,
|
|
2393
|
-
children: collapsed ? /* @__PURE__ */
|
|
2555
|
+
children: collapsed ? /* @__PURE__ */ jsx40(ChevronRight2, {}) : /* @__PURE__ */ jsx40(ChevronLeft2, {})
|
|
2394
2556
|
}
|
|
2395
2557
|
);
|
|
2396
2558
|
}
|
|
@@ -2399,7 +2561,7 @@ function SidebarRail({
|
|
|
2399
2561
|
...props
|
|
2400
2562
|
}) {
|
|
2401
2563
|
const { toggle } = useSidebar();
|
|
2402
|
-
return /* @__PURE__ */
|
|
2564
|
+
return /* @__PURE__ */ jsx40(
|
|
2403
2565
|
"button",
|
|
2404
2566
|
{
|
|
2405
2567
|
type: "button",
|
|
@@ -2414,7 +2576,7 @@ function SidebarRail({
|
|
|
2414
2576
|
);
|
|
2415
2577
|
}
|
|
2416
2578
|
function SidebarMore({ className, ...props }) {
|
|
2417
|
-
return /* @__PURE__ */
|
|
2579
|
+
return /* @__PURE__ */ jsx40(
|
|
2418
2580
|
Button,
|
|
2419
2581
|
{
|
|
2420
2582
|
"aria-label": "M\xE1s opciones",
|
|
@@ -2422,26 +2584,26 @@ function SidebarMore({ className, ...props }) {
|
|
|
2422
2584
|
variant: "ghost",
|
|
2423
2585
|
className: cn("size-7", className),
|
|
2424
2586
|
...props,
|
|
2425
|
-
children: /* @__PURE__ */
|
|
2587
|
+
children: /* @__PURE__ */ jsx40(Ellipsis, {})
|
|
2426
2588
|
}
|
|
2427
2589
|
);
|
|
2428
2590
|
}
|
|
2429
2591
|
|
|
2430
2592
|
// src/ui/skeleton/skeleton.tsx
|
|
2431
|
-
import { jsx as
|
|
2593
|
+
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
2432
2594
|
function Skeleton({ className, ...props }) {
|
|
2433
|
-
return /* @__PURE__ */
|
|
2595
|
+
return /* @__PURE__ */ jsx41("div", { "aria-hidden": "true", "data-slot": "skeleton", className: cn("animate-pulse rounded-md bg-muted", className), ...props });
|
|
2434
2596
|
}
|
|
2435
2597
|
|
|
2436
2598
|
// src/ui/submit-button/submit-button.tsx
|
|
2437
2599
|
import { useFormStatus } from "react-dom";
|
|
2438
2600
|
import { LoaderCircle as LoaderCircle3 } from "lucide-react";
|
|
2439
|
-
import { Fragment as
|
|
2601
|
+
import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2440
2602
|
function SubmitButton({ pendingLabel = "Guardando\u2026", loading = false, children, isDisabled, size = "sm", ...props }) {
|
|
2441
2603
|
const { pending } = useFormStatus();
|
|
2442
2604
|
const busy = pending || loading;
|
|
2443
|
-
return /* @__PURE__ */
|
|
2444
|
-
/* @__PURE__ */
|
|
2605
|
+
return /* @__PURE__ */ jsx42(Button, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ jsxs20(Fragment10, { children: [
|
|
2606
|
+
/* @__PURE__ */ jsx42(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
2445
2607
|
pendingLabel
|
|
2446
2608
|
] }) : children });
|
|
2447
2609
|
}
|
|
@@ -2451,7 +2613,7 @@ import { useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
|
2451
2613
|
import {
|
|
2452
2614
|
Switch as AriaSwitch
|
|
2453
2615
|
} from "react-aria-components";
|
|
2454
|
-
import { Fragment as
|
|
2616
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2455
2617
|
var switchSizes = {
|
|
2456
2618
|
sm: {
|
|
2457
2619
|
control: "h-4 w-[1.875rem] p-0.5",
|
|
@@ -2507,7 +2669,7 @@ function Switch({
|
|
|
2507
2669
|
ownerDocument.addEventListener("keydown", handleDirectionalKey);
|
|
2508
2670
|
return () => ownerDocument.removeEventListener("keydown", handleDirectionalKey);
|
|
2509
2671
|
}, [isDisabled, isReadOnly, resolvedInputRef]);
|
|
2510
|
-
return /* @__PURE__ */
|
|
2672
|
+
return /* @__PURE__ */ jsx43(
|
|
2511
2673
|
AriaSwitch,
|
|
2512
2674
|
{
|
|
2513
2675
|
"data-slot": "switch",
|
|
@@ -2524,8 +2686,8 @@ function Switch({
|
|
|
2524
2686
|
children: (state) => {
|
|
2525
2687
|
const isThumbActive = state.isHovered || state.isPressed;
|
|
2526
2688
|
const thumbOffset = state.isSelected ? isThumbActive ? styles.activeSelectedOffset : styles.selectedOffset : "0";
|
|
2527
|
-
return /* @__PURE__ */
|
|
2528
|
-
/* @__PURE__ */
|
|
2689
|
+
return /* @__PURE__ */ jsxs21(Fragment11, { children: [
|
|
2690
|
+
/* @__PURE__ */ jsx43(
|
|
2529
2691
|
"span",
|
|
2530
2692
|
{
|
|
2531
2693
|
"aria-hidden": "true",
|
|
@@ -2539,7 +2701,7 @@ function Switch({
|
|
|
2539
2701
|
"group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50",
|
|
2540
2702
|
styles.control
|
|
2541
2703
|
),
|
|
2542
|
-
children: /* @__PURE__ */
|
|
2704
|
+
children: /* @__PURE__ */ jsx43(
|
|
2543
2705
|
"span",
|
|
2544
2706
|
{
|
|
2545
2707
|
"data-slot": "switch-thumb",
|
|
@@ -2559,9 +2721,9 @@ function Switch({
|
|
|
2559
2721
|
)
|
|
2560
2722
|
}
|
|
2561
2723
|
),
|
|
2562
|
-
children || description ? /* @__PURE__ */
|
|
2563
|
-
children ? /* @__PURE__ */
|
|
2564
|
-
description ? /* @__PURE__ */
|
|
2724
|
+
children || description ? /* @__PURE__ */ jsxs21("span", { className: "grid gap-0.5 leading-tight", children: [
|
|
2725
|
+
children ? /* @__PURE__ */ jsx43("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
|
|
2726
|
+
description ? /* @__PURE__ */ jsx43("span", { "data-slot": "switch-description", className: "text-xs font-normal text-muted-foreground", children: description }) : null
|
|
2565
2727
|
] }) : null
|
|
2566
2728
|
] });
|
|
2567
2729
|
}
|
|
@@ -2570,9 +2732,9 @@ function Switch({
|
|
|
2570
2732
|
}
|
|
2571
2733
|
|
|
2572
2734
|
// src/ui/table/table.tsx
|
|
2573
|
-
import { jsx as
|
|
2735
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
2574
2736
|
function Table({ className, ...props }) {
|
|
2575
|
-
return /* @__PURE__ */
|
|
2737
|
+
return /* @__PURE__ */ jsx44("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx44(
|
|
2576
2738
|
"table",
|
|
2577
2739
|
{
|
|
2578
2740
|
"data-slot": "table",
|
|
@@ -2582,10 +2744,10 @@ function Table({ className, ...props }) {
|
|
|
2582
2744
|
) });
|
|
2583
2745
|
}
|
|
2584
2746
|
function TableHeader({ className, ...props }) {
|
|
2585
|
-
return /* @__PURE__ */
|
|
2747
|
+
return /* @__PURE__ */ jsx44("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
|
|
2586
2748
|
}
|
|
2587
2749
|
function TableBody({ className, ...props }) {
|
|
2588
|
-
return /* @__PURE__ */
|
|
2750
|
+
return /* @__PURE__ */ jsx44(
|
|
2589
2751
|
"tbody",
|
|
2590
2752
|
{
|
|
2591
2753
|
"data-slot": "table-body",
|
|
@@ -2595,7 +2757,7 @@ function TableBody({ className, ...props }) {
|
|
|
2595
2757
|
);
|
|
2596
2758
|
}
|
|
2597
2759
|
function TableRow({ className, ...props }) {
|
|
2598
|
-
return /* @__PURE__ */
|
|
2760
|
+
return /* @__PURE__ */ jsx44(
|
|
2599
2761
|
"tr",
|
|
2600
2762
|
{
|
|
2601
2763
|
"data-slot": "table-row",
|
|
@@ -2608,7 +2770,7 @@ function TableRow({ className, ...props }) {
|
|
|
2608
2770
|
);
|
|
2609
2771
|
}
|
|
2610
2772
|
function TableHead({ className, ...props }) {
|
|
2611
|
-
return /* @__PURE__ */
|
|
2773
|
+
return /* @__PURE__ */ jsx44(
|
|
2612
2774
|
"th",
|
|
2613
2775
|
{
|
|
2614
2776
|
"data-slot": "table-head",
|
|
@@ -2621,7 +2783,7 @@ function TableHead({ className, ...props }) {
|
|
|
2621
2783
|
);
|
|
2622
2784
|
}
|
|
2623
2785
|
function TableCell({ className, ...props }) {
|
|
2624
|
-
return /* @__PURE__ */
|
|
2786
|
+
return /* @__PURE__ */ jsx44(
|
|
2625
2787
|
"td",
|
|
2626
2788
|
{
|
|
2627
2789
|
"data-slot": "table-cell",
|
|
@@ -2631,7 +2793,7 @@ function TableCell({ className, ...props }) {
|
|
|
2631
2793
|
);
|
|
2632
2794
|
}
|
|
2633
2795
|
function TableCaption({ className, ...props }) {
|
|
2634
|
-
return /* @__PURE__ */
|
|
2796
|
+
return /* @__PURE__ */ jsx44(
|
|
2635
2797
|
"caption",
|
|
2636
2798
|
{
|
|
2637
2799
|
"data-slot": "table-caption",
|
|
@@ -2641,7 +2803,7 @@ function TableCaption({ className, ...props }) {
|
|
|
2641
2803
|
);
|
|
2642
2804
|
}
|
|
2643
2805
|
function TableFooter({ className, ...props }) {
|
|
2644
|
-
return /* @__PURE__ */
|
|
2806
|
+
return /* @__PURE__ */ jsx44(
|
|
2645
2807
|
"tfoot",
|
|
2646
2808
|
{
|
|
2647
2809
|
"data-slot": "table-footer",
|
|
@@ -2660,27 +2822,27 @@ import {
|
|
|
2660
2822
|
Tabs as AriaTabs,
|
|
2661
2823
|
composeRenderProps as composeRenderProps2
|
|
2662
2824
|
} from "react-aria-components";
|
|
2663
|
-
import { jsx as
|
|
2825
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
2664
2826
|
function Tabs({ className, ...props }) {
|
|
2665
|
-
return /* @__PURE__ */
|
|
2827
|
+
return /* @__PURE__ */ jsx45(AriaTabs, { "data-slot": "tabs", className: composeRenderProps2(className, (value) => cn("flex flex-col gap-2", value)), ...props });
|
|
2666
2828
|
}
|
|
2667
2829
|
function TabsList({ className, ...props }) {
|
|
2668
|
-
return /* @__PURE__ */
|
|
2830
|
+
return /* @__PURE__ */ jsx45(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 });
|
|
2669
2831
|
}
|
|
2670
2832
|
function TabsTrigger({ className, ...props }) {
|
|
2671
|
-
return /* @__PURE__ */
|
|
2833
|
+
return /* @__PURE__ */ jsx45(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 });
|
|
2672
2834
|
}
|
|
2673
2835
|
function TabsPanels({ className, ...props }) {
|
|
2674
|
-
return /* @__PURE__ */
|
|
2836
|
+
return /* @__PURE__ */ jsx45(AriaTabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
|
|
2675
2837
|
}
|
|
2676
2838
|
function TabsContent({ className, ...props }) {
|
|
2677
|
-
return /* @__PURE__ */
|
|
2839
|
+
return /* @__PURE__ */ jsx45(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 });
|
|
2678
2840
|
}
|
|
2679
2841
|
|
|
2680
2842
|
// src/ui/toast/toast.tsx
|
|
2681
2843
|
import { useEffect as useEffect6 } from "react";
|
|
2682
2844
|
import { sileo, Toaster as SileoToaster } from "sileo";
|
|
2683
|
-
import { Fragment as
|
|
2845
|
+
import { Fragment as Fragment12, jsx as jsx46, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2684
2846
|
function toSileoOptions({ title, description, duration, position, action }) {
|
|
2685
2847
|
return {
|
|
2686
2848
|
title,
|
|
@@ -2719,18 +2881,18 @@ function useToast() {
|
|
|
2719
2881
|
return toast;
|
|
2720
2882
|
}
|
|
2721
2883
|
function ToastProvider({ children }) {
|
|
2722
|
-
return /* @__PURE__ */
|
|
2884
|
+
return /* @__PURE__ */ jsxs22(Fragment12, { children: [
|
|
2723
2885
|
children,
|
|
2724
|
-
/* @__PURE__ */
|
|
2886
|
+
/* @__PURE__ */ jsx46(Toaster, {})
|
|
2725
2887
|
] });
|
|
2726
2888
|
}
|
|
2727
2889
|
function Toaster({ position }) {
|
|
2728
|
-
return /* @__PURE__ */
|
|
2890
|
+
return /* @__PURE__ */ jsx46(SileoToaster, { position, options: { fill: "var(--ui-secondary)" } });
|
|
2729
2891
|
}
|
|
2730
2892
|
function ToastViewport({ position, visiblePosition, className }) {
|
|
2731
2893
|
void className;
|
|
2732
2894
|
if (visiblePosition && visiblePosition !== position) return null;
|
|
2733
|
-
return /* @__PURE__ */
|
|
2895
|
+
return /* @__PURE__ */ jsx46(Toaster, { position });
|
|
2734
2896
|
}
|
|
2735
2897
|
function Toast({ id, title, description, variant = "default", action, state = "open", duration = 0, position, onDismiss }) {
|
|
2736
2898
|
useEffect6(() => {
|
|
@@ -2745,15 +2907,15 @@ function Toast({ id, title, description, variant = "default", action, state = "o
|
|
|
2745
2907
|
}
|
|
2746
2908
|
|
|
2747
2909
|
// src/ui/toolbar/toolbar.tsx
|
|
2748
|
-
import { jsx as
|
|
2910
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
2749
2911
|
function Toolbar({ className, ...props }) {
|
|
2750
|
-
return /* @__PURE__ */
|
|
2912
|
+
return /* @__PURE__ */ jsx47("div", { role: "toolbar", "data-slot": "toolbar", className: cn("flex flex-wrap items-center gap-2", className), ...props });
|
|
2751
2913
|
}
|
|
2752
2914
|
function ToolbarGroup({ className, ...props }) {
|
|
2753
|
-
return /* @__PURE__ */
|
|
2915
|
+
return /* @__PURE__ */ jsx47("div", { "data-slot": "toolbar-group", className: cn("flex items-center gap-2", className), ...props });
|
|
2754
2916
|
}
|
|
2755
2917
|
function ToolbarSpacer({ className, ...props }) {
|
|
2756
|
-
return /* @__PURE__ */
|
|
2918
|
+
return /* @__PURE__ */ jsx47("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
|
|
2757
2919
|
}
|
|
2758
2920
|
export {
|
|
2759
2921
|
Accordion,
|
|
@@ -2808,6 +2970,16 @@ export {
|
|
|
2808
2970
|
CommandItem,
|
|
2809
2971
|
CommandList,
|
|
2810
2972
|
ConfirmDialog,
|
|
2973
|
+
Dialog,
|
|
2974
|
+
DialogClose,
|
|
2975
|
+
DialogContent,
|
|
2976
|
+
DialogDescription,
|
|
2977
|
+
DialogFooter,
|
|
2978
|
+
DialogHeader,
|
|
2979
|
+
DialogOverlay,
|
|
2980
|
+
DialogPortal,
|
|
2981
|
+
DialogTitle,
|
|
2982
|
+
DialogTrigger,
|
|
2811
2983
|
Drawer,
|
|
2812
2984
|
DrawerDescription,
|
|
2813
2985
|
DrawerFooter,
|
|
@@ -2927,6 +3099,7 @@ export {
|
|
|
2927
3099
|
ToolbarSpacer,
|
|
2928
3100
|
Tooltip,
|
|
2929
3101
|
TooltipTrigger,
|
|
3102
|
+
actionRipple,
|
|
2930
3103
|
alertVariants,
|
|
2931
3104
|
badgeVariants,
|
|
2932
3105
|
buttonGroupVariants,
|