@doscientos/ui 0.1.21 → 0.1.23
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 +423 -317
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -5
- package/dist/index.d.ts +22 -5
- package/dist/index.js +360 -251
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -98,7 +98,7 @@ function useFormDirty() {
|
|
|
98
98
|
// src/lib/action-ripple.ts
|
|
99
99
|
import { cva } from "class-variance-authority";
|
|
100
100
|
var actionRipple = cva(
|
|
101
|
-
"relative isolate overflow-hidden
|
|
101
|
+
"relative isolate overflow-hidden"
|
|
102
102
|
);
|
|
103
103
|
|
|
104
104
|
// src/lib/cn.ts
|
|
@@ -585,11 +585,29 @@ function ButtonGroupSeparator({
|
|
|
585
585
|
|
|
586
586
|
// src/ui/button/button.tsx
|
|
587
587
|
import { cva as cva5 } from "class-variance-authority";
|
|
588
|
+
import { useState as useState5 } from "react";
|
|
588
589
|
import {
|
|
589
590
|
Button as ButtonPrimitive,
|
|
590
591
|
Link as LinkPrimitive
|
|
591
592
|
} from "react-aria-components";
|
|
592
|
-
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
593
|
+
import { Fragment, jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
594
|
+
function useActionRipple(enabled) {
|
|
595
|
+
const [rippleId, setRippleId] = useState5(0);
|
|
596
|
+
function triggerRipple() {
|
|
597
|
+
if (enabled) setRippleId((currentId) => currentId + 1);
|
|
598
|
+
}
|
|
599
|
+
const ripple = rippleId ? /* @__PURE__ */ jsx9(
|
|
600
|
+
"span",
|
|
601
|
+
{
|
|
602
|
+
"aria-hidden": "true",
|
|
603
|
+
"data-slot": "button-ripple",
|
|
604
|
+
className: "pointer-events-none absolute top-1/2 left-1/2 aspect-square w-full rounded-full bg-current animate-ui-ripple motion-reduce:hidden",
|
|
605
|
+
onAnimationEnd: () => setRippleId(0)
|
|
606
|
+
},
|
|
607
|
+
rippleId
|
|
608
|
+
) : null;
|
|
609
|
+
return { ripple, triggerRipple };
|
|
610
|
+
}
|
|
593
611
|
var buttonVariants = cva5(
|
|
594
612
|
cn(
|
|
595
613
|
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
@@ -622,7 +640,8 @@ var buttonVariants = cva5(
|
|
|
622
640
|
}
|
|
623
641
|
}
|
|
624
642
|
);
|
|
625
|
-
function Button({ className, variant = "default", size = "default", ...props }) {
|
|
643
|
+
function Button({ className, variant = "default", size = "default", onClick, children, ...props }) {
|
|
644
|
+
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
626
645
|
return /* @__PURE__ */ jsx9(
|
|
627
646
|
ButtonPrimitive,
|
|
628
647
|
{
|
|
@@ -630,7 +649,15 @@ function Button({ className, variant = "default", size = "default", ...props })
|
|
|
630
649
|
"data-variant": variant,
|
|
631
650
|
"data-size": size,
|
|
632
651
|
className: cn(buttonVariants({ variant, size, className })),
|
|
633
|
-
|
|
652
|
+
onClick: (event) => {
|
|
653
|
+
onClick?.(event);
|
|
654
|
+
triggerRipple();
|
|
655
|
+
},
|
|
656
|
+
...props,
|
|
657
|
+
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
658
|
+
typeof children === "function" ? children(renderProps) : children,
|
|
659
|
+
ripple
|
|
660
|
+
] })
|
|
634
661
|
}
|
|
635
662
|
);
|
|
636
663
|
}
|
|
@@ -638,8 +665,11 @@ function LinkButton({
|
|
|
638
665
|
className,
|
|
639
666
|
variant = "default",
|
|
640
667
|
size = "default",
|
|
668
|
+
onClick,
|
|
669
|
+
children,
|
|
641
670
|
...props
|
|
642
671
|
}) {
|
|
672
|
+
const { ripple, triggerRipple } = useActionRipple(variant !== "link");
|
|
643
673
|
return /* @__PURE__ */ jsx9(
|
|
644
674
|
LinkPrimitive,
|
|
645
675
|
{
|
|
@@ -647,7 +677,15 @@ function LinkButton({
|
|
|
647
677
|
"data-variant": variant,
|
|
648
678
|
"data-size": size,
|
|
649
679
|
className: cn(buttonVariants({ variant, size, className })),
|
|
650
|
-
|
|
680
|
+
onClick: (event) => {
|
|
681
|
+
onClick?.(event);
|
|
682
|
+
triggerRipple();
|
|
683
|
+
},
|
|
684
|
+
...props,
|
|
685
|
+
children: (renderProps) => /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
686
|
+
typeof children === "function" ? children(renderProps) : children,
|
|
687
|
+
ripple
|
|
688
|
+
] })
|
|
651
689
|
}
|
|
652
690
|
);
|
|
653
691
|
}
|
|
@@ -736,7 +774,7 @@ import { Check } from "lucide-react";
|
|
|
736
774
|
import {
|
|
737
775
|
Checkbox as AriaCheckbox
|
|
738
776
|
} from "react-aria-components";
|
|
739
|
-
import { Fragment, jsx as jsx11, jsxs as
|
|
777
|
+
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
740
778
|
function Checkbox({ className, children, ...props }) {
|
|
741
779
|
return /* @__PURE__ */ jsx11(
|
|
742
780
|
AriaCheckbox,
|
|
@@ -747,7 +785,7 @@ function Checkbox({ className, children, ...props }) {
|
|
|
747
785
|
className
|
|
748
786
|
),
|
|
749
787
|
...props,
|
|
750
|
-
children: (state) => /* @__PURE__ */
|
|
788
|
+
children: (state) => /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
751
789
|
/* @__PURE__ */ jsx11(
|
|
752
790
|
"span",
|
|
753
791
|
{
|
|
@@ -763,9 +801,9 @@ function Checkbox({ className, children, ...props }) {
|
|
|
763
801
|
}
|
|
764
802
|
|
|
765
803
|
// src/ui/combobox/combobox.tsx
|
|
766
|
-
import { Fragment as
|
|
804
|
+
import { Fragment as Fragment3, useMemo, useState as useState6 } from "react";
|
|
767
805
|
import { ComboBox as AriaComboBox, ComboBoxValue, FieldError, Input, Label, ListBox, ListBoxItem, Popover, Text } from "react-aria-components";
|
|
768
|
-
import { jsx as jsx12, jsxs as
|
|
806
|
+
import { jsx as jsx12, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
769
807
|
var Combobox = AriaComboBox;
|
|
770
808
|
function ComboboxInput({ className, ...props }) {
|
|
771
809
|
return /* @__PURE__ */ jsx12(Input, { "data-slot": "combobox-input", className: cn("h-9 w-full rounded-lg border border-border bg-background px-2.5 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props });
|
|
@@ -780,10 +818,10 @@ function ComboboxItem({ className, children, ...props }) {
|
|
|
780
818
|
return /* @__PURE__ */ jsx12(ListBoxItem, { "data-slot": "combobox-item", className: cn("flex w-full cursor-default items-center justify-between rounded-md px-2 py-2 text-sm outline-none transition-colors data-focused:bg-muted data-focused:text-foreground data-hovered:bg-muted data-disabled:pointer-events-none data-disabled:opacity-50", className), ...props, children });
|
|
781
819
|
}
|
|
782
820
|
function HighlightMatch({ text, query, className }) {
|
|
783
|
-
return /* @__PURE__ */ jsx12("span", { className, children: getTextMatchParts(text, query).map((part, index) => part.match ? /* @__PURE__ */ jsx12("mark", { className: "rounded bg-accent px-0.5 text-accent-foreground", children: part.text }, `${part.text}-${index}`) : /* @__PURE__ */ jsx12(
|
|
821
|
+
return /* @__PURE__ */ jsx12("span", { className, children: getTextMatchParts(text, query).map((part, index) => part.match ? /* @__PURE__ */ jsx12("mark", { className: "rounded bg-accent px-0.5 text-accent-foreground", children: part.text }, `${part.text}-${index}`) : /* @__PURE__ */ jsx12(Fragment3, { children: part.text }, `${part.text}-${index}`)) });
|
|
784
822
|
}
|
|
785
823
|
function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inputValue: controlledInputValue, onInputChange, selectedKey, onSelectionChange, label, description, errorMessage, emptyState = /* @__PURE__ */ jsx12("p", { className: "px-3 py-7 text-center text-sm text-muted-foreground", children: "No hay resultados." }), suggestion = true, placeholder, className, onKeyDown: _onKeyDown, ...props }) {
|
|
786
|
-
const [internalInputValue, setInternalInputValue] =
|
|
824
|
+
const [internalInputValue, setInternalInputValue] = useState6("");
|
|
787
825
|
const inputValue = controlledInputValue ?? internalInputValue;
|
|
788
826
|
const setInputValue = (value) => {
|
|
789
827
|
setInternalInputValue(value);
|
|
@@ -802,14 +840,14 @@ function AutocompleteCombobox({ items, getItemKey, getItemLabel, renderItem, inp
|
|
|
802
840
|
const handleKeyDown = (event) => {
|
|
803
841
|
if ((event.key === "Tab" || event.key === "Enter") && acceptSuggestion()) event.preventDefault();
|
|
804
842
|
};
|
|
805
|
-
return /* @__PURE__ */
|
|
843
|
+
return /* @__PURE__ */ jsxs4(AriaComboBox, { ...props, className: cn("group/combobox flex w-full flex-col gap-1.5", className), items: filteredItems, selectedKey, inputValue, onInputChange: setInputValue, onSelectionChange: (key) => {
|
|
806
844
|
const item = filteredItems.find((candidate) => String(getItemKey(candidate)) === String(key));
|
|
807
845
|
if (item) setInputValue(getItemLabel(item));
|
|
808
846
|
onSelectionChange?.(key, item);
|
|
809
847
|
}, children: [
|
|
810
848
|
label && /* @__PURE__ */ jsx12(Label, { className: "text-sm font-medium text-foreground", children: label }),
|
|
811
|
-
/* @__PURE__ */
|
|
812
|
-
suggestionLabel && /* @__PURE__ */
|
|
849
|
+
/* @__PURE__ */ jsxs4("div", { className: "relative", children: [
|
|
850
|
+
suggestionLabel && /* @__PURE__ */ jsxs4("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-y-0 left-2.5 z-0 flex items-center whitespace-pre text-sm text-muted-foreground/60", children: [
|
|
813
851
|
/* @__PURE__ */ jsx12("span", { className: "text-transparent", children: inputValue }),
|
|
814
852
|
suggestionLabel.slice(inputValue.length)
|
|
815
853
|
] }),
|
|
@@ -849,7 +887,7 @@ import {
|
|
|
849
887
|
ModalOverlay,
|
|
850
888
|
Text as Text2
|
|
851
889
|
} from "react-aria-components";
|
|
852
|
-
import { Fragment as
|
|
890
|
+
import { Fragment as Fragment4, jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
853
891
|
var sizeClasses = {
|
|
854
892
|
sm: "w-[min(calc(100dvw-2rem),24rem)]",
|
|
855
893
|
md: "w-[min(calc(100dvw-2rem),28rem)]",
|
|
@@ -891,9 +929,9 @@ function ModalDialog({
|
|
|
891
929
|
"grid max-h-[calc(100dvh-2rem)] overflow-hidden rounded-xl bg-background text-foreground shadow-xl outline-none",
|
|
892
930
|
layoutClass
|
|
893
931
|
),
|
|
894
|
-
children: ({ close }) => /* @__PURE__ */
|
|
895
|
-
/* @__PURE__ */
|
|
896
|
-
/* @__PURE__ */
|
|
932
|
+
children: ({ close }) => /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
|
933
|
+
/* @__PURE__ */ jsxs5("header", { "data-slot": "modal-dialog-header", className: "flex items-start gap-3 border-b border-border px-5 py-4", children: [
|
|
934
|
+
/* @__PURE__ */ jsxs5("div", { className: "min-w-0 flex-1", children: [
|
|
897
935
|
/* @__PURE__ */ jsx14(Heading, { slot: "title", className: "font-heading text-base leading-none font-medium", children: title }),
|
|
898
936
|
description ? /* @__PURE__ */ jsx14(Text2, { slot: "description", className: "mt-2 text-sm text-muted-foreground", children: description }) : null
|
|
899
937
|
] }),
|
|
@@ -931,7 +969,7 @@ function ModalDialog({
|
|
|
931
969
|
}
|
|
932
970
|
|
|
933
971
|
// src/ui/confirm-dialog/confirm-dialog.tsx
|
|
934
|
-
import { Fragment as
|
|
972
|
+
import { Fragment as Fragment5, jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
935
973
|
function ConfirmDialog({
|
|
936
974
|
open,
|
|
937
975
|
onOpenChange,
|
|
@@ -951,7 +989,7 @@ function ConfirmDialog({
|
|
|
951
989
|
title,
|
|
952
990
|
description,
|
|
953
991
|
showCloseButton: false,
|
|
954
|
-
footer: /* @__PURE__ */
|
|
992
|
+
footer: /* @__PURE__ */ jsxs6(Fragment5, { children: [
|
|
955
993
|
/* @__PURE__ */ jsx15(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
|
|
956
994
|
/* @__PURE__ */ jsx15(Button, { variant: destructive ? "destructive" : "default", isDisabled: pending, onPress: onConfirm, children: confirmLabel })
|
|
957
995
|
] })
|
|
@@ -959,17 +997,54 @@ function ConfirmDialog({
|
|
|
959
997
|
);
|
|
960
998
|
}
|
|
961
999
|
|
|
1000
|
+
// src/ui/danger-zone/danger-zone.tsx
|
|
1001
|
+
import { ChevronDown, ShieldAlert } from "lucide-react";
|
|
1002
|
+
import {
|
|
1003
|
+
Button as DisclosureButton,
|
|
1004
|
+
Disclosure,
|
|
1005
|
+
DisclosurePanel,
|
|
1006
|
+
Heading as Heading2
|
|
1007
|
+
} from "react-aria-components";
|
|
1008
|
+
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1009
|
+
function DangerZone({
|
|
1010
|
+
title = "Zona de peligro",
|
|
1011
|
+
description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
|
|
1012
|
+
defaultOpen = false,
|
|
1013
|
+
className,
|
|
1014
|
+
children
|
|
1015
|
+
}) {
|
|
1016
|
+
return /* @__PURE__ */ jsx16(Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ jsxs7(Card, { className: cn("border-destructive/30", className), children: [
|
|
1017
|
+
/* @__PURE__ */ jsx16(Heading2, { className: "flex", children: /* @__PURE__ */ jsxs7(
|
|
1018
|
+
DisclosureButton,
|
|
1019
|
+
{
|
|
1020
|
+
slot: "trigger",
|
|
1021
|
+
"data-slot": "danger-zone-trigger",
|
|
1022
|
+
className: "group/danger flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
1023
|
+
children: [
|
|
1024
|
+
/* @__PURE__ */ jsx16(ShieldAlert, { className: "size-4 shrink-0 text-destructive" }),
|
|
1025
|
+
/* @__PURE__ */ jsxs7("span", { className: "flex flex-1 flex-col gap-0.5", children: [
|
|
1026
|
+
/* @__PURE__ */ jsx16("span", { className: "font-heading text-base leading-snug font-medium text-destructive", children: title }),
|
|
1027
|
+
/* @__PURE__ */ jsx16("span", { className: "text-xs text-muted-foreground", children: description })
|
|
1028
|
+
] }),
|
|
1029
|
+
/* @__PURE__ */ jsx16(ChevronDown, { className: "size-4 shrink-0 text-muted-foreground transition-transform group-aria-expanded/danger:rotate-180" })
|
|
1030
|
+
]
|
|
1031
|
+
}
|
|
1032
|
+
) }),
|
|
1033
|
+
/* @__PURE__ */ jsx16(DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ jsx16(CardContent, { children }) })
|
|
1034
|
+
] }) });
|
|
1035
|
+
}
|
|
1036
|
+
|
|
962
1037
|
// src/ui/dialog/dialog.tsx
|
|
963
1038
|
import { XIcon } from "lucide-react";
|
|
964
1039
|
import * as React2 from "react";
|
|
965
1040
|
import {
|
|
966
1041
|
Dialog as AriaDialog2,
|
|
967
|
-
Heading as
|
|
1042
|
+
Heading as Heading3,
|
|
968
1043
|
Modal as Modal2,
|
|
969
1044
|
ModalOverlay as ModalOverlay2,
|
|
970
1045
|
Text as Text3
|
|
971
1046
|
} from "react-aria-components";
|
|
972
|
-
import { Fragment as
|
|
1047
|
+
import { Fragment as Fragment6, jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
973
1048
|
var DialogContext = React2.createContext(null);
|
|
974
1049
|
function useDialogContext() {
|
|
975
1050
|
const context = React2.useContext(DialogContext);
|
|
@@ -986,7 +1061,7 @@ function Dialog({ children, defaultOpen = false, onOpenChange, open: controlledO
|
|
|
986
1061
|
},
|
|
987
1062
|
[controlledOpen, onOpenChange]
|
|
988
1063
|
);
|
|
989
|
-
return /* @__PURE__ */
|
|
1064
|
+
return /* @__PURE__ */ jsx17(DialogContext.Provider, { value: { open, setOpen }, children });
|
|
990
1065
|
}
|
|
991
1066
|
function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
992
1067
|
const { setOpen } = useDialogContext();
|
|
@@ -1005,15 +1080,15 @@ function DialogTrigger({ asChild = false, children, onClick, ...props }) {
|
|
|
1005
1080
|
}
|
|
1006
1081
|
});
|
|
1007
1082
|
}
|
|
1008
|
-
return /* @__PURE__ */
|
|
1083
|
+
return /* @__PURE__ */ jsx17(Button, { "data-slot": "dialog-trigger", onPress: () => setOpen(true), ...props, children });
|
|
1009
1084
|
}
|
|
1010
1085
|
function DialogPortal({ children }) {
|
|
1011
|
-
return /* @__PURE__ */
|
|
1086
|
+
return /* @__PURE__ */ jsx17(Fragment6, { children });
|
|
1012
1087
|
}
|
|
1013
1088
|
function DialogOverlay({ children, className, ...props }) {
|
|
1014
1089
|
const { open, setOpen } = useDialogContext();
|
|
1015
1090
|
if (!open) return null;
|
|
1016
|
-
return /* @__PURE__ */
|
|
1091
|
+
return /* @__PURE__ */ jsx17(
|
|
1017
1092
|
ModalOverlay2,
|
|
1018
1093
|
{
|
|
1019
1094
|
"data-slot": "dialog-overlay",
|
|
@@ -1037,20 +1112,20 @@ function DialogContent({
|
|
|
1037
1112
|
...props
|
|
1038
1113
|
}) {
|
|
1039
1114
|
const { setOpen } = useDialogContext();
|
|
1040
|
-
return /* @__PURE__ */
|
|
1115
|
+
return /* @__PURE__ */ jsx17(DialogPortal, { children: /* @__PURE__ */ jsx17(
|
|
1041
1116
|
DialogOverlay,
|
|
1042
1117
|
{
|
|
1043
1118
|
onClick: (event) => {
|
|
1044
1119
|
if (event.target === event.currentTarget) onOverlayClick?.(event);
|
|
1045
1120
|
},
|
|
1046
|
-
children: /* @__PURE__ */
|
|
1121
|
+
children: /* @__PURE__ */ jsx17(
|
|
1047
1122
|
Modal2,
|
|
1048
1123
|
{
|
|
1049
1124
|
className: cn(
|
|
1050
1125
|
"w-full max-w-[calc(100%-2rem)] max-h-[calc(100dvh-2rem)] outline-none sm:max-w-sm",
|
|
1051
1126
|
className
|
|
1052
1127
|
),
|
|
1053
|
-
children: /* @__PURE__ */
|
|
1128
|
+
children: /* @__PURE__ */ jsxs8(
|
|
1054
1129
|
AriaDialog2,
|
|
1055
1130
|
{
|
|
1056
1131
|
"data-slot": "dialog-content",
|
|
@@ -1061,7 +1136,7 @@ function DialogContent({
|
|
|
1061
1136
|
...props,
|
|
1062
1137
|
children: [
|
|
1063
1138
|
children,
|
|
1064
|
-
showCloseButton ? /* @__PURE__ */
|
|
1139
|
+
showCloseButton ? /* @__PURE__ */ jsx17(
|
|
1065
1140
|
Button,
|
|
1066
1141
|
{
|
|
1067
1142
|
"aria-label": "Cerrar di\xE1logo",
|
|
@@ -1070,7 +1145,7 @@ function DialogContent({
|
|
|
1070
1145
|
className: "absolute top-2 right-2",
|
|
1071
1146
|
size: "icon-sm",
|
|
1072
1147
|
onPress: () => setOpen(false),
|
|
1073
|
-
children: /* @__PURE__ */
|
|
1148
|
+
children: /* @__PURE__ */ jsx17(XIcon, {})
|
|
1074
1149
|
}
|
|
1075
1150
|
) : null
|
|
1076
1151
|
]
|
|
@@ -1094,42 +1169,74 @@ function DialogClose({ asChild = false, children, onClick, ...props }) {
|
|
|
1094
1169
|
}
|
|
1095
1170
|
});
|
|
1096
1171
|
}
|
|
1097
|
-
return /* @__PURE__ */
|
|
1172
|
+
return /* @__PURE__ */ jsx17(Button, { "data-slot": "dialog-close", onPress: () => setOpen(false), ...props, children });
|
|
1098
1173
|
}
|
|
1099
1174
|
function DialogHeader({ className, ...props }) {
|
|
1100
|
-
return /* @__PURE__ */
|
|
1175
|
+
return /* @__PURE__ */ jsx17("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2", className), ...props });
|
|
1101
1176
|
}
|
|
1102
1177
|
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
1103
|
-
return /* @__PURE__ */
|
|
1178
|
+
return /* @__PURE__ */ jsxs8("div", { "data-slot": "dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:flex-wrap sm:justify-end", className), ...props, children: [
|
|
1104
1179
|
children,
|
|
1105
|
-
showCloseButton ? /* @__PURE__ */
|
|
1180
|
+
showCloseButton ? /* @__PURE__ */ jsx17(DialogClose, { variant: "outline", children: "Cerrar" }) : null
|
|
1106
1181
|
] });
|
|
1107
1182
|
}
|
|
1108
1183
|
function DialogTitle({ className, ...props }) {
|
|
1109
|
-
return /* @__PURE__ */
|
|
1184
|
+
return /* @__PURE__ */ jsx17(Heading3, { slot: "title", "data-slot": "dialog-title", className: cn("font-heading text-base leading-none font-medium", className), ...props });
|
|
1110
1185
|
}
|
|
1111
1186
|
function DialogDescription({ className, ...props }) {
|
|
1112
|
-
return /* @__PURE__ */
|
|
1187
|
+
return /* @__PURE__ */ jsx17(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 });
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
// src/ui/doc-preview/doc-preview.tsx
|
|
1191
|
+
import { FileText, Image } from "lucide-react";
|
|
1192
|
+
import { jsx as jsx18, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1193
|
+
function DocPreview({ url, mimeType, name }) {
|
|
1194
|
+
if (!url) return /* @__PURE__ */ jsx18(Fallback, { mimeType, reason: "no-url" });
|
|
1195
|
+
if (mimeType === "application/pdf" || mimeType === "text/plain" || mimeType === "text/csv") {
|
|
1196
|
+
return /* @__PURE__ */ jsx18(
|
|
1197
|
+
"iframe",
|
|
1198
|
+
{
|
|
1199
|
+
src: url,
|
|
1200
|
+
title: name,
|
|
1201
|
+
className: "w-full rounded-sm border-0",
|
|
1202
|
+
style: { height: "75vh", minHeight: 400 }
|
|
1203
|
+
}
|
|
1204
|
+
);
|
|
1205
|
+
}
|
|
1206
|
+
if (mimeType?.startsWith("image/")) {
|
|
1207
|
+
return /* @__PURE__ */ jsx18("div", { className: "flex justify-center rounded-sm bg-muted/30 p-6", children: /* @__PURE__ */ jsx18("img", { src: url, alt: name, className: "max-h-[75vh] max-w-full rounded object-contain" }) });
|
|
1208
|
+
}
|
|
1209
|
+
return /* @__PURE__ */ jsx18(Fallback, { mimeType, reason: "unsupported" });
|
|
1210
|
+
}
|
|
1211
|
+
function Fallback({ mimeType, reason }) {
|
|
1212
|
+
const Icon = mimeType?.startsWith("image/") ? Image : FileText;
|
|
1213
|
+
const message = reason === "no-url" ? "No se pudo generar la URL de preview." : "Preview no disponible para este tipo de archivo.";
|
|
1214
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flex flex-col items-center justify-center gap-2 py-14 text-muted-foreground", children: [
|
|
1215
|
+
/* @__PURE__ */ jsx18(Icon, { className: "size-9 opacity-30" }),
|
|
1216
|
+
/* @__PURE__ */ jsx18("p", { className: "text-sm", children: message }),
|
|
1217
|
+
mimeType ? /* @__PURE__ */ jsx18("p", { className: "font-mono text-xs opacity-50", children: mimeType }) : null,
|
|
1218
|
+
/* @__PURE__ */ jsx18("p", { className: "text-xs opacity-50", children: "Usa el bot\xF3n Descargar para abrir el archivo." })
|
|
1219
|
+
] });
|
|
1113
1220
|
}
|
|
1114
1221
|
|
|
1115
1222
|
// src/ui/drawer/drawer.tsx
|
|
1116
1223
|
import { Dialog as AriaDialog3, Modal as Modal3, ModalOverlay as ModalOverlay3 } from "react-aria-components";
|
|
1117
|
-
import { jsx as
|
|
1224
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1118
1225
|
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" };
|
|
1119
1226
|
function Drawer({ children, side = "right", className, ...props }) {
|
|
1120
|
-
return /* @__PURE__ */
|
|
1227
|
+
return /* @__PURE__ */ jsx19(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__ */ jsx19(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__ */ jsx19(AriaDialog3, { "data-slot": "drawer", className: "outline-none", children }) }) });
|
|
1121
1228
|
}
|
|
1122
1229
|
function DrawerHeader({ className, ...props }) {
|
|
1123
|
-
return /* @__PURE__ */
|
|
1230
|
+
return /* @__PURE__ */ jsx19("div", { "data-slot": "drawer-header", className: cn("flex flex-col gap-1.5", className), ...props });
|
|
1124
1231
|
}
|
|
1125
1232
|
function DrawerFooter({ className, ...props }) {
|
|
1126
|
-
return /* @__PURE__ */
|
|
1233
|
+
return /* @__PURE__ */ jsx19("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 });
|
|
1127
1234
|
}
|
|
1128
1235
|
function DrawerTitle({ className, ...props }) {
|
|
1129
|
-
return /* @__PURE__ */
|
|
1236
|
+
return /* @__PURE__ */ jsx19("h2", { "data-slot": "drawer-title", className: cn("text-base font-semibold", className), ...props });
|
|
1130
1237
|
}
|
|
1131
1238
|
function DrawerDescription({ className, ...props }) {
|
|
1132
|
-
return /* @__PURE__ */
|
|
1239
|
+
return /* @__PURE__ */ jsx19("p", { "data-slot": "drawer-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
1133
1240
|
}
|
|
1134
1241
|
|
|
1135
1242
|
// src/ui/dropdown-menu/dropdown-menu.tsx
|
|
@@ -1147,11 +1254,11 @@ import {
|
|
|
1147
1254
|
Separator as SeparatorPrimitive2,
|
|
1148
1255
|
SubmenuTrigger as SubmenuTriggerPrimitive
|
|
1149
1256
|
} from "react-aria-components";
|
|
1150
|
-
import { Fragment as
|
|
1257
|
+
import { Fragment as Fragment7, jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1151
1258
|
function DropdownMenuTrigger({
|
|
1152
1259
|
...props
|
|
1153
1260
|
}) {
|
|
1154
|
-
return /* @__PURE__ */
|
|
1261
|
+
return /* @__PURE__ */ jsx20(MenuTriggerPrimitive, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
1155
1262
|
}
|
|
1156
1263
|
function DropdownMenu({
|
|
1157
1264
|
"data-slot": dataSlot = "dropdown-menu-content",
|
|
@@ -1162,7 +1269,7 @@ function DropdownMenu({
|
|
|
1162
1269
|
children,
|
|
1163
1270
|
...props
|
|
1164
1271
|
}) {
|
|
1165
|
-
return /* @__PURE__ */
|
|
1272
|
+
return /* @__PURE__ */ jsx20(
|
|
1166
1273
|
PopoverPrimitive,
|
|
1167
1274
|
{
|
|
1168
1275
|
"data-slot": dataSlot,
|
|
@@ -1170,7 +1277,7 @@ function DropdownMenu({
|
|
|
1170
1277
|
offset,
|
|
1171
1278
|
crossOffset,
|
|
1172
1279
|
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),
|
|
1173
|
-
children: /* @__PURE__ */
|
|
1280
|
+
children: /* @__PURE__ */ jsx20(
|
|
1174
1281
|
MenuPrimitive,
|
|
1175
1282
|
{
|
|
1176
1283
|
className: "max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden",
|
|
@@ -1184,14 +1291,14 @@ function DropdownMenu({
|
|
|
1184
1291
|
function DropdownMenuGroup({
|
|
1185
1292
|
...props
|
|
1186
1293
|
}) {
|
|
1187
|
-
return /* @__PURE__ */
|
|
1294
|
+
return /* @__PURE__ */ jsx20(MenuSectionPrimitive, { "data-slot": "dropdown-menu-group", ...props });
|
|
1188
1295
|
}
|
|
1189
1296
|
function DropdownMenuLabel({
|
|
1190
1297
|
className,
|
|
1191
1298
|
inset,
|
|
1192
1299
|
...props
|
|
1193
1300
|
}) {
|
|
1194
|
-
return /* @__PURE__ */
|
|
1301
|
+
return /* @__PURE__ */ jsx20(
|
|
1195
1302
|
HeaderPrimitive,
|
|
1196
1303
|
{
|
|
1197
1304
|
"data-slot": "dropdown-menu-label",
|
|
@@ -1223,7 +1330,7 @@ function DropdownMenuItem({
|
|
|
1223
1330
|
children,
|
|
1224
1331
|
...props
|
|
1225
1332
|
}) {
|
|
1226
|
-
return /* @__PURE__ */
|
|
1333
|
+
return /* @__PURE__ */ jsx20(
|
|
1227
1334
|
MenuItemPrimitive,
|
|
1228
1335
|
{
|
|
1229
1336
|
"data-slot": "dropdown-menu-item",
|
|
@@ -1237,13 +1344,13 @@ function DropdownMenuItem({
|
|
|
1237
1344
|
...props,
|
|
1238
1345
|
children: composeRenderProps(
|
|
1239
1346
|
children,
|
|
1240
|
-
(children2, { isSelected, selectionMode }) => /* @__PURE__ */
|
|
1241
|
-
selectionMode !== "none" ? /* @__PURE__ */
|
|
1347
|
+
(children2, { isSelected, selectionMode }) => /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
1348
|
+
selectionMode !== "none" ? /* @__PURE__ */ jsx20(
|
|
1242
1349
|
"span",
|
|
1243
1350
|
{
|
|
1244
1351
|
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
1245
1352
|
"data-slot": selectionMode === "single" ? "dropdown-menu-radio-item-indicator" : "dropdown-menu-checkbox-item-indicator",
|
|
1246
|
-
children: isSelected ? /* @__PURE__ */
|
|
1353
|
+
children: isSelected ? /* @__PURE__ */ jsx20(CheckIcon, {}) : null
|
|
1247
1354
|
}
|
|
1248
1355
|
) : null,
|
|
1249
1356
|
children2
|
|
@@ -1255,7 +1362,7 @@ function DropdownMenuItem({
|
|
|
1255
1362
|
function DropdownMenuSub({
|
|
1256
1363
|
...props
|
|
1257
1364
|
}) {
|
|
1258
|
-
return /* @__PURE__ */
|
|
1365
|
+
return /* @__PURE__ */ jsx20(SubmenuTriggerPrimitive, { "data-slot": "dropdown-menu-sub", ...props });
|
|
1259
1366
|
}
|
|
1260
1367
|
function DropdownMenuSubTrigger({
|
|
1261
1368
|
className,
|
|
@@ -1263,7 +1370,7 @@ function DropdownMenuSubTrigger({
|
|
|
1263
1370
|
children,
|
|
1264
1371
|
...props
|
|
1265
1372
|
}) {
|
|
1266
|
-
return /* @__PURE__ */
|
|
1373
|
+
return /* @__PURE__ */ jsx20(
|
|
1267
1374
|
MenuItemPrimitive,
|
|
1268
1375
|
{
|
|
1269
1376
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -1274,9 +1381,9 @@ function DropdownMenuSubTrigger({
|
|
|
1274
1381
|
className
|
|
1275
1382
|
),
|
|
1276
1383
|
...props,
|
|
1277
|
-
children: composeRenderProps(children, (children2) => /* @__PURE__ */
|
|
1384
|
+
children: composeRenderProps(children, (children2) => /* @__PURE__ */ jsxs10(Fragment7, { children: [
|
|
1278
1385
|
children2,
|
|
1279
|
-
/* @__PURE__ */
|
|
1386
|
+
/* @__PURE__ */ jsx20(ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
|
|
1280
1387
|
] }))
|
|
1281
1388
|
}
|
|
1282
1389
|
);
|
|
@@ -1288,7 +1395,7 @@ function DropdownMenuSubContent({
|
|
|
1288
1395
|
className,
|
|
1289
1396
|
...props
|
|
1290
1397
|
}) {
|
|
1291
|
-
return /* @__PURE__ */
|
|
1398
|
+
return /* @__PURE__ */ jsx20(
|
|
1292
1399
|
DropdownMenu,
|
|
1293
1400
|
{
|
|
1294
1401
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -1304,7 +1411,7 @@ function DropdownMenuSeparator({
|
|
|
1304
1411
|
className,
|
|
1305
1412
|
...props
|
|
1306
1413
|
}) {
|
|
1307
|
-
return /* @__PURE__ */
|
|
1414
|
+
return /* @__PURE__ */ jsx20(
|
|
1308
1415
|
SeparatorPrimitive2,
|
|
1309
1416
|
{
|
|
1310
1417
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -1317,7 +1424,7 @@ function DropdownMenuShortcut({
|
|
|
1317
1424
|
className,
|
|
1318
1425
|
...props
|
|
1319
1426
|
}) {
|
|
1320
|
-
return /* @__PURE__ */
|
|
1427
|
+
return /* @__PURE__ */ jsx20(
|
|
1321
1428
|
"span",
|
|
1322
1429
|
{
|
|
1323
1430
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -1332,9 +1439,9 @@ function DropdownMenuShortcut({
|
|
|
1332
1439
|
|
|
1333
1440
|
// src/ui/empty-state/empty-state.tsx
|
|
1334
1441
|
import { cva as cva7 } from "class-variance-authority";
|
|
1335
|
-
import { jsx as
|
|
1442
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
1336
1443
|
function EmptyState({ className, ...props }) {
|
|
1337
|
-
return /* @__PURE__ */
|
|
1444
|
+
return /* @__PURE__ */ jsx21(
|
|
1338
1445
|
"div",
|
|
1339
1446
|
{
|
|
1340
1447
|
"data-slot": "empty-state",
|
|
@@ -1347,7 +1454,7 @@ function EmptyState({ className, ...props }) {
|
|
|
1347
1454
|
);
|
|
1348
1455
|
}
|
|
1349
1456
|
function EmptyStateHeader({ className, ...props }) {
|
|
1350
|
-
return /* @__PURE__ */
|
|
1457
|
+
return /* @__PURE__ */ jsx21(
|
|
1351
1458
|
"div",
|
|
1352
1459
|
{
|
|
1353
1460
|
"data-slot": "empty-state-header",
|
|
@@ -1373,7 +1480,7 @@ function EmptyStateMedia({
|
|
|
1373
1480
|
variant = "default",
|
|
1374
1481
|
...props
|
|
1375
1482
|
}) {
|
|
1376
|
-
return /* @__PURE__ */
|
|
1483
|
+
return /* @__PURE__ */ jsx21(
|
|
1377
1484
|
"div",
|
|
1378
1485
|
{
|
|
1379
1486
|
"data-slot": "empty-state-media",
|
|
@@ -1384,7 +1491,7 @@ function EmptyStateMedia({
|
|
|
1384
1491
|
);
|
|
1385
1492
|
}
|
|
1386
1493
|
function EmptyStateTitle({ className, ...props }) {
|
|
1387
|
-
return /* @__PURE__ */
|
|
1494
|
+
return /* @__PURE__ */ jsx21(
|
|
1388
1495
|
"h3",
|
|
1389
1496
|
{
|
|
1390
1497
|
"data-slot": "empty-state-title",
|
|
@@ -1394,7 +1501,7 @@ function EmptyStateTitle({ className, ...props }) {
|
|
|
1394
1501
|
);
|
|
1395
1502
|
}
|
|
1396
1503
|
function EmptyStateDescription({ className, ...props }) {
|
|
1397
|
-
return /* @__PURE__ */
|
|
1504
|
+
return /* @__PURE__ */ jsx21(
|
|
1398
1505
|
"p",
|
|
1399
1506
|
{
|
|
1400
1507
|
"data-slot": "empty-state-description",
|
|
@@ -1407,7 +1514,7 @@ function EmptyStateDescription({ className, ...props }) {
|
|
|
1407
1514
|
);
|
|
1408
1515
|
}
|
|
1409
1516
|
function EmptyStateContent({ className, ...props }) {
|
|
1410
|
-
return /* @__PURE__ */
|
|
1517
|
+
return /* @__PURE__ */ jsx21(
|
|
1411
1518
|
"div",
|
|
1412
1519
|
{
|
|
1413
1520
|
"data-slot": "empty-state-content",
|
|
@@ -1426,22 +1533,22 @@ import { cva as cva8 } from "class-variance-authority";
|
|
|
1426
1533
|
// src/ui/label/label.tsx
|
|
1427
1534
|
import { forwardRef } from "react";
|
|
1428
1535
|
import { Label as LabelPrimitive } from "react-aria-components";
|
|
1429
|
-
import { jsx as
|
|
1536
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1430
1537
|
var Label2 = forwardRef(function Label3({ className, ...props }, ref) {
|
|
1431
|
-
return /* @__PURE__ */
|
|
1538
|
+
return /* @__PURE__ */ jsx22(LabelPrimitive, { ref, "data-slot": "label", className: cn("flex items-center gap-2 text-sm font-medium leading-none select-none", className), ...props });
|
|
1432
1539
|
});
|
|
1433
1540
|
|
|
1434
1541
|
// src/ui/field/field.tsx
|
|
1435
|
-
import { jsx as
|
|
1542
|
+
import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1436
1543
|
function FieldSet({ className, ...props }) {
|
|
1437
|
-
return /* @__PURE__ */
|
|
1544
|
+
return /* @__PURE__ */ jsx23("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
|
|
1438
1545
|
}
|
|
1439
1546
|
function FieldLegend({
|
|
1440
1547
|
className,
|
|
1441
1548
|
variant = "legend",
|
|
1442
1549
|
...props
|
|
1443
1550
|
}) {
|
|
1444
|
-
return /* @__PURE__ */
|
|
1551
|
+
return /* @__PURE__ */ jsx23(
|
|
1445
1552
|
"legend",
|
|
1446
1553
|
{
|
|
1447
1554
|
"data-slot": "field-legend",
|
|
@@ -1455,7 +1562,7 @@ function FieldLegend({
|
|
|
1455
1562
|
);
|
|
1456
1563
|
}
|
|
1457
1564
|
function FieldGroup({ className, ...props }) {
|
|
1458
|
-
return /* @__PURE__ */
|
|
1565
|
+
return /* @__PURE__ */ jsx23(
|
|
1459
1566
|
"div",
|
|
1460
1567
|
{
|
|
1461
1568
|
"data-slot": "field-group",
|
|
@@ -1483,7 +1590,7 @@ var fieldVariants = cva8(
|
|
|
1483
1590
|
function Field({ className, orientation = "vertical", ...props }) {
|
|
1484
1591
|
return (
|
|
1485
1592
|
// biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.
|
|
1486
|
-
/* @__PURE__ */
|
|
1593
|
+
/* @__PURE__ */ jsx23(
|
|
1487
1594
|
"div",
|
|
1488
1595
|
{
|
|
1489
1596
|
role: "group",
|
|
@@ -1496,7 +1603,7 @@ function Field({ className, orientation = "vertical", ...props }) {
|
|
|
1496
1603
|
);
|
|
1497
1604
|
}
|
|
1498
1605
|
function FieldContent({ className, ...props }) {
|
|
1499
|
-
return /* @__PURE__ */
|
|
1606
|
+
return /* @__PURE__ */ jsx23(
|
|
1500
1607
|
"div",
|
|
1501
1608
|
{
|
|
1502
1609
|
"data-slot": "field-content",
|
|
@@ -1506,7 +1613,7 @@ function FieldContent({ className, ...props }) {
|
|
|
1506
1613
|
);
|
|
1507
1614
|
}
|
|
1508
1615
|
function FieldLabel({ className, ...props }) {
|
|
1509
|
-
return /* @__PURE__ */
|
|
1616
|
+
return /* @__PURE__ */ jsx23(
|
|
1510
1617
|
Label2,
|
|
1511
1618
|
{
|
|
1512
1619
|
"data-slot": "field-label",
|
|
@@ -1519,7 +1626,7 @@ function FieldLabel({ className, ...props }) {
|
|
|
1519
1626
|
);
|
|
1520
1627
|
}
|
|
1521
1628
|
function FieldTitle({ className, ...props }) {
|
|
1522
|
-
return /* @__PURE__ */
|
|
1629
|
+
return /* @__PURE__ */ jsx23(
|
|
1523
1630
|
"div",
|
|
1524
1631
|
{
|
|
1525
1632
|
"data-slot": "field-title",
|
|
@@ -1529,7 +1636,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
1529
1636
|
);
|
|
1530
1637
|
}
|
|
1531
1638
|
function FieldDescription({ className, ...props }) {
|
|
1532
|
-
return /* @__PURE__ */
|
|
1639
|
+
return /* @__PURE__ */ jsx23(
|
|
1533
1640
|
"p",
|
|
1534
1641
|
{
|
|
1535
1642
|
"data-slot": "field-description",
|
|
@@ -1542,7 +1649,7 @@ function FieldDescription({ className, ...props }) {
|
|
|
1542
1649
|
);
|
|
1543
1650
|
}
|
|
1544
1651
|
function FieldSeparator({ className, children, ...props }) {
|
|
1545
|
-
return /* @__PURE__ */
|
|
1652
|
+
return /* @__PURE__ */ jsxs11(
|
|
1546
1653
|
"div",
|
|
1547
1654
|
{
|
|
1548
1655
|
"data-slot": "field-separator",
|
|
@@ -1550,8 +1657,8 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1550
1657
|
className: cn("relative -my-2 h-5 text-sm", className),
|
|
1551
1658
|
...props,
|
|
1552
1659
|
children: [
|
|
1553
|
-
/* @__PURE__ */
|
|
1554
|
-
children ? /* @__PURE__ */
|
|
1660
|
+
/* @__PURE__ */ jsx23(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
1661
|
+
children ? /* @__PURE__ */ jsx23(
|
|
1555
1662
|
"span",
|
|
1556
1663
|
{
|
|
1557
1664
|
"data-slot": "field-separator-content",
|
|
@@ -1565,9 +1672,9 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
1565
1672
|
}
|
|
1566
1673
|
function FieldError2({ className, children, errors, ...props }) {
|
|
1567
1674
|
const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])];
|
|
1568
|
-
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */
|
|
1675
|
+
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ jsx23("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ jsx23("li", { children: message }, message)) }) : null);
|
|
1569
1676
|
if (!content) return null;
|
|
1570
|
-
return /* @__PURE__ */
|
|
1677
|
+
return /* @__PURE__ */ jsx23(
|
|
1571
1678
|
"div",
|
|
1572
1679
|
{
|
|
1573
1680
|
role: "alert",
|
|
@@ -1580,12 +1687,12 @@ function FieldError2({ className, children, errors, ...props }) {
|
|
|
1580
1687
|
}
|
|
1581
1688
|
|
|
1582
1689
|
// src/ui/form-feedback/form-feedback.tsx
|
|
1583
|
-
import { useCallback as useCallback4, useEffect as useEffect4, useRef as useRef3, useState as
|
|
1690
|
+
import { useCallback as useCallback4, useEffect as useEffect4, useRef as useRef3, useState as useState8 } from "react";
|
|
1584
1691
|
import { CheckCircle, LoaderCircle, CircleAlert } from "lucide-react";
|
|
1585
|
-
import { jsx as
|
|
1692
|
+
import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1586
1693
|
function useFormFeedback(options) {
|
|
1587
1694
|
const resetMs = options?.successResetMs ?? 2500;
|
|
1588
|
-
const [state, setState] =
|
|
1695
|
+
const [state, setState] = useState8({ status: "idle" });
|
|
1589
1696
|
const timer = useRef3(null);
|
|
1590
1697
|
const clearTimer = useCallback4(() => {
|
|
1591
1698
|
if (timer.current) clearTimeout(timer.current);
|
|
@@ -1612,33 +1719,33 @@ function useFormFeedback(options) {
|
|
|
1612
1719
|
return { state, pending: state.status === "pending", setPending, setSuccess, setError, reset };
|
|
1613
1720
|
}
|
|
1614
1721
|
function FormFeedback({ state, className, pendingLabel = "Guardando\u2026", successLabel = "Guardado" }) {
|
|
1615
|
-
if (state.status === "idle") return /* @__PURE__ */
|
|
1722
|
+
if (state.status === "idle") return /* @__PURE__ */ jsx24("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
|
|
1616
1723
|
const error = state.status === "error";
|
|
1617
1724
|
const success = state.status === "success";
|
|
1618
|
-
return /* @__PURE__ */
|
|
1619
|
-
state.status === "pending" && /* @__PURE__ */
|
|
1620
|
-
success && /* @__PURE__ */
|
|
1621
|
-
error && /* @__PURE__ */
|
|
1622
|
-
/* @__PURE__ */
|
|
1725
|
+
return /* @__PURE__ */ jsxs12("span", { role: error ? "alert" : "status", "aria-live": "polite", className: cn("inline-flex h-5 items-center gap-1.5 text-xs", error && "text-destructive", success && "text-success", state.status === "pending" && "text-muted-foreground", className), children: [
|
|
1726
|
+
state.status === "pending" && /* @__PURE__ */ jsx24(LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
1727
|
+
success && /* @__PURE__ */ jsx24(CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1728
|
+
error && /* @__PURE__ */ jsx24(CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
|
|
1729
|
+
/* @__PURE__ */ jsx24("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
|
|
1623
1730
|
] });
|
|
1624
1731
|
}
|
|
1625
1732
|
|
|
1626
1733
|
// src/ui/form-row/form-row.tsx
|
|
1627
|
-
import { Fragment as
|
|
1734
|
+
import { Fragment as Fragment8, jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1628
1735
|
function FormRow({ label, htmlFor, required, hint, error, className, children }) {
|
|
1629
1736
|
const hintId = hint ? `${htmlFor}-hint` : void 0;
|
|
1630
1737
|
const errorId = error ? `${htmlFor}-error` : void 0;
|
|
1631
|
-
return /* @__PURE__ */
|
|
1632
|
-
/* @__PURE__ */
|
|
1738
|
+
return /* @__PURE__ */ jsxs13("div", { "data-slot": "form-row", className: cn("flex flex-col gap-1.5", className), children: [
|
|
1739
|
+
/* @__PURE__ */ jsxs13("label", { htmlFor, className: "text-sm font-medium text-foreground", children: [
|
|
1633
1740
|
label,
|
|
1634
|
-
required && /* @__PURE__ */
|
|
1635
|
-
/* @__PURE__ */
|
|
1636
|
-
/* @__PURE__ */
|
|
1741
|
+
required && /* @__PURE__ */ jsxs13(Fragment8, { children: [
|
|
1742
|
+
/* @__PURE__ */ jsx25("span", { "aria-hidden": "true", className: "ml-0.5 text-destructive", children: "*" }),
|
|
1743
|
+
/* @__PURE__ */ jsx25("span", { className: "sr-only", children: " (obligatorio)" })
|
|
1637
1744
|
] })
|
|
1638
1745
|
] }),
|
|
1639
1746
|
children,
|
|
1640
|
-
hint && /* @__PURE__ */
|
|
1641
|
-
error && /* @__PURE__ */
|
|
1747
|
+
hint && /* @__PURE__ */ jsx25("p", { id: hintId, className: "text-xs text-muted-foreground", children: hint }),
|
|
1748
|
+
error && /* @__PURE__ */ jsx25("p", { id: errorId, role: "alert", className: "text-xs font-medium text-destructive", children: error })
|
|
1642
1749
|
] });
|
|
1643
1750
|
}
|
|
1644
1751
|
|
|
@@ -1653,21 +1760,21 @@ import {
|
|
|
1653
1760
|
Tooltip as TooltipPrimitive,
|
|
1654
1761
|
TooltipTrigger as TooltipTriggerPrimitive
|
|
1655
1762
|
} from "react-aria-components";
|
|
1656
|
-
import { jsx as
|
|
1763
|
+
import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1657
1764
|
function TooltipTrigger({
|
|
1658
1765
|
delay = 0,
|
|
1659
1766
|
children,
|
|
1660
1767
|
...props
|
|
1661
1768
|
}) {
|
|
1662
1769
|
const [trigger, tooltip] = React4.Children.toArray(children);
|
|
1663
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ jsxs14(
|
|
1664
1771
|
TooltipTriggerPrimitive,
|
|
1665
1772
|
{
|
|
1666
1773
|
"data-slot": "tooltip-trigger",
|
|
1667
1774
|
delay,
|
|
1668
1775
|
...props,
|
|
1669
1776
|
children: [
|
|
1670
|
-
/* @__PURE__ */
|
|
1777
|
+
/* @__PURE__ */ jsx26(Focusable, { children: trigger }),
|
|
1671
1778
|
tooltip
|
|
1672
1779
|
]
|
|
1673
1780
|
}
|
|
@@ -1681,7 +1788,7 @@ function Tooltip({
|
|
|
1681
1788
|
children,
|
|
1682
1789
|
...props
|
|
1683
1790
|
}) {
|
|
1684
|
-
return /* @__PURE__ */
|
|
1791
|
+
return /* @__PURE__ */ jsxs14(
|
|
1685
1792
|
TooltipPrimitive,
|
|
1686
1793
|
{
|
|
1687
1794
|
"data-slot": "tooltip-content",
|
|
@@ -1695,7 +1802,7 @@ function Tooltip({
|
|
|
1695
1802
|
...props,
|
|
1696
1803
|
children: [
|
|
1697
1804
|
children,
|
|
1698
|
-
/* @__PURE__ */
|
|
1805
|
+
/* @__PURE__ */ jsx26(
|
|
1699
1806
|
OverlayArrow,
|
|
1700
1807
|
{
|
|
1701
1808
|
className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs bg-foreground fill-foreground",
|
|
@@ -1713,7 +1820,7 @@ function Tooltip({
|
|
|
1713
1820
|
}
|
|
1714
1821
|
|
|
1715
1822
|
// src/ui/icon-button/icon-button.tsx
|
|
1716
|
-
import { jsx as
|
|
1823
|
+
import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1717
1824
|
function IconButton({
|
|
1718
1825
|
label,
|
|
1719
1826
|
children,
|
|
@@ -1726,8 +1833,8 @@ function IconButton({
|
|
|
1726
1833
|
buttonVariants({ variant, size: "icon" }),
|
|
1727
1834
|
className
|
|
1728
1835
|
);
|
|
1729
|
-
return /* @__PURE__ */
|
|
1730
|
-
href ? /* @__PURE__ */
|
|
1836
|
+
return /* @__PURE__ */ jsxs15(TooltipTrigger, { children: [
|
|
1837
|
+
href ? /* @__PURE__ */ jsx27(
|
|
1731
1838
|
Link2,
|
|
1732
1839
|
{
|
|
1733
1840
|
"data-slot": "icon-button",
|
|
@@ -1736,7 +1843,7 @@ function IconButton({
|
|
|
1736
1843
|
className: linkClassName,
|
|
1737
1844
|
children
|
|
1738
1845
|
}
|
|
1739
|
-
) : /* @__PURE__ */
|
|
1846
|
+
) : /* @__PURE__ */ jsx27(
|
|
1740
1847
|
Button,
|
|
1741
1848
|
{
|
|
1742
1849
|
"data-slot": "icon-button",
|
|
@@ -1748,7 +1855,7 @@ function IconButton({
|
|
|
1748
1855
|
children
|
|
1749
1856
|
}
|
|
1750
1857
|
),
|
|
1751
|
-
/* @__PURE__ */
|
|
1858
|
+
/* @__PURE__ */ jsx27(Tooltip, { children: label })
|
|
1752
1859
|
] });
|
|
1753
1860
|
}
|
|
1754
1861
|
|
|
@@ -1758,27 +1865,27 @@ import { cva as cva9 } from "class-variance-authority";
|
|
|
1758
1865
|
// src/ui/input/input.tsx
|
|
1759
1866
|
import { forwardRef as forwardRef2 } from "react";
|
|
1760
1867
|
import { Input as AriaInput2 } from "react-aria-components";
|
|
1761
|
-
import { jsx as
|
|
1868
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1762
1869
|
var InputImpl = forwardRef2(function Input2({ className, type, ...props }, ref) {
|
|
1763
|
-
return /* @__PURE__ */
|
|
1870
|
+
return /* @__PURE__ */ jsx28(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 });
|
|
1764
1871
|
});
|
|
1765
1872
|
var Input3 = InputImpl;
|
|
1766
1873
|
|
|
1767
1874
|
// src/ui/textarea/textarea.tsx
|
|
1768
1875
|
import { forwardRef as forwardRef3 } from "react";
|
|
1769
1876
|
import { TextArea as AriaTextArea } from "react-aria-components";
|
|
1770
|
-
import { jsx as
|
|
1877
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1771
1878
|
var TextareaImpl = forwardRef3(function Textarea({ className, ...props }, ref) {
|
|
1772
|
-
return /* @__PURE__ */
|
|
1879
|
+
return /* @__PURE__ */ jsx29(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 });
|
|
1773
1880
|
});
|
|
1774
1881
|
var Textarea2 = TextareaImpl;
|
|
1775
1882
|
|
|
1776
1883
|
// src/ui/input-group/input-group.tsx
|
|
1777
|
-
import { jsx as
|
|
1884
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1778
1885
|
function InputGroup({ className, ...props }) {
|
|
1779
1886
|
return (
|
|
1780
1887
|
// biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.
|
|
1781
|
-
/* @__PURE__ */
|
|
1888
|
+
/* @__PURE__ */ jsx30(
|
|
1782
1889
|
"div",
|
|
1783
1890
|
{
|
|
1784
1891
|
role: "group",
|
|
@@ -1814,7 +1921,7 @@ function InputGroupAddon({
|
|
|
1814
1921
|
}) {
|
|
1815
1922
|
return (
|
|
1816
1923
|
// biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.
|
|
1817
|
-
/* @__PURE__ */
|
|
1924
|
+
/* @__PURE__ */ jsx30(
|
|
1818
1925
|
"div",
|
|
1819
1926
|
{
|
|
1820
1927
|
role: "group",
|
|
@@ -1845,7 +1952,7 @@ function InputGroupButton({
|
|
|
1845
1952
|
...props
|
|
1846
1953
|
}) {
|
|
1847
1954
|
const buttonSize = size === "icon-xs" || size === "icon-sm" ? size : size;
|
|
1848
|
-
return /* @__PURE__ */
|
|
1955
|
+
return /* @__PURE__ */ jsx30(
|
|
1849
1956
|
Button,
|
|
1850
1957
|
{
|
|
1851
1958
|
"data-slot": "input-group-button",
|
|
@@ -1858,7 +1965,7 @@ function InputGroupButton({
|
|
|
1858
1965
|
);
|
|
1859
1966
|
}
|
|
1860
1967
|
function InputGroupText({ className, ...props }) {
|
|
1861
|
-
return /* @__PURE__ */
|
|
1968
|
+
return /* @__PURE__ */ jsx30(
|
|
1862
1969
|
"span",
|
|
1863
1970
|
{
|
|
1864
1971
|
"data-slot": "input-group-text",
|
|
@@ -1871,7 +1978,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
1871
1978
|
);
|
|
1872
1979
|
}
|
|
1873
1980
|
function InputGroupInput({ className, ...props }) {
|
|
1874
|
-
return /* @__PURE__ */
|
|
1981
|
+
return /* @__PURE__ */ jsx30(
|
|
1875
1982
|
Input3,
|
|
1876
1983
|
{
|
|
1877
1984
|
"data-slot": "input-group-control",
|
|
@@ -1884,7 +1991,7 @@ function InputGroupInput({ className, ...props }) {
|
|
|
1884
1991
|
);
|
|
1885
1992
|
}
|
|
1886
1993
|
function InputGroupTextarea({ className, ...props }) {
|
|
1887
|
-
return /* @__PURE__ */
|
|
1994
|
+
return /* @__PURE__ */ jsx30(
|
|
1888
1995
|
Textarea2,
|
|
1889
1996
|
{
|
|
1890
1997
|
"data-slot": "input-group-control",
|
|
@@ -1898,21 +2005,21 @@ function InputGroupTextarea({ className, ...props }) {
|
|
|
1898
2005
|
}
|
|
1899
2006
|
|
|
1900
2007
|
// src/ui/kbd/kbd.tsx
|
|
1901
|
-
import { jsx as
|
|
2008
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1902
2009
|
function Kbd({ className, ...props }) {
|
|
1903
|
-
return /* @__PURE__ */
|
|
2010
|
+
return /* @__PURE__ */ jsx31("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 });
|
|
1904
2011
|
}
|
|
1905
2012
|
function KbdGroup({ className, ...props }) {
|
|
1906
|
-
return /* @__PURE__ */
|
|
2013
|
+
return /* @__PURE__ */ jsx31("span", { "data-slot": "kbd-group", className: cn("inline-flex items-center gap-1", className), ...props });
|
|
1907
2014
|
}
|
|
1908
2015
|
|
|
1909
2016
|
// src/ui/loading-overlay/loading-overlay.tsx
|
|
1910
2017
|
import { LoaderCircle as LoaderCircle2 } from "lucide-react";
|
|
1911
|
-
import { jsx as
|
|
2018
|
+
import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1912
2019
|
function LoadingOverlay({ label = "Cargando", className, ...props }) {
|
|
1913
|
-
return /* @__PURE__ */
|
|
1914
|
-
/* @__PURE__ */
|
|
1915
|
-
/* @__PURE__ */
|
|
2020
|
+
return /* @__PURE__ */ jsx32("div", { role: "status", "aria-live": "polite", className: cn("absolute inset-0 z-10 flex items-center justify-center bg-background/70 backdrop-blur-[2px]", className), ...props, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2 rounded-lg border border-border bg-background px-3 py-2 text-sm shadow-sm", children: [
|
|
2021
|
+
/* @__PURE__ */ jsx32(LoaderCircle2, { className: "animate-spin", "aria-hidden": "true" }),
|
|
2022
|
+
/* @__PURE__ */ jsx32("span", { children: label })
|
|
1916
2023
|
] }) });
|
|
1917
2024
|
}
|
|
1918
2025
|
|
|
@@ -1923,16 +2030,16 @@ import {
|
|
|
1923
2030
|
MenuTrigger as AriaMenuTrigger,
|
|
1924
2031
|
Popover as Popover3
|
|
1925
2032
|
} from "react-aria-components";
|
|
1926
|
-
import { jsx as
|
|
2033
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1927
2034
|
var MenuTrigger = AriaMenuTrigger;
|
|
1928
2035
|
function MenuContent({ className, ...props }) {
|
|
1929
|
-
return /* @__PURE__ */
|
|
2036
|
+
return /* @__PURE__ */ jsx33(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 });
|
|
1930
2037
|
}
|
|
1931
2038
|
function Menu({ className, ...props }) {
|
|
1932
|
-
return /* @__PURE__ */
|
|
2039
|
+
return /* @__PURE__ */ jsx33(AriaMenu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
|
|
1933
2040
|
}
|
|
1934
2041
|
function MenuItem({ className, children, ...props }) {
|
|
1935
|
-
return /* @__PURE__ */
|
|
2042
|
+
return /* @__PURE__ */ jsx33(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 });
|
|
1936
2043
|
}
|
|
1937
2044
|
|
|
1938
2045
|
// src/ui/otp-input/otp-input.tsx
|
|
@@ -1940,10 +2047,10 @@ import {
|
|
|
1940
2047
|
forwardRef as forwardRef4,
|
|
1941
2048
|
useImperativeHandle,
|
|
1942
2049
|
useRef as useRef4,
|
|
1943
|
-
useState as
|
|
2050
|
+
useState as useState9
|
|
1944
2051
|
} from "react";
|
|
1945
2052
|
import { Input as AriaInput3 } from "react-aria-components";
|
|
1946
|
-
import { jsx as
|
|
2053
|
+
import { jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1947
2054
|
function normalizeOtp(value, length) {
|
|
1948
2055
|
return value.replace(/[^0-9]/g, "").slice(0, length);
|
|
1949
2056
|
}
|
|
@@ -1964,12 +2071,12 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1964
2071
|
}, forwardedRef) {
|
|
1965
2072
|
const slotCount = Math.max(1, Math.floor(length));
|
|
1966
2073
|
const controlled = value !== void 0;
|
|
1967
|
-
const [internalValue, setInternalValue] =
|
|
2074
|
+
const [internalValue, setInternalValue] = useState9(() => normalizeOtp(defaultValue, slotCount));
|
|
1968
2075
|
const code = normalizeOtp(controlled ? value : internalValue, slotCount);
|
|
1969
2076
|
const slots = Array.from({ length: slotCount }, (_, index) => `otp-slot-${index + 1}`);
|
|
1970
2077
|
const inputRef = useRef4(null);
|
|
1971
|
-
const [focused, setFocused] =
|
|
1972
|
-
const [selectionStart, setSelectionStart] =
|
|
2078
|
+
const [focused, setFocused] = useState9(false);
|
|
2079
|
+
const [selectionStart, setSelectionStart] = useState9(0);
|
|
1973
2080
|
const invalid = props["aria-invalid"] === true || props["aria-invalid"] === "true";
|
|
1974
2081
|
const activeIndex = code.length === slotCount ? slotCount - 1 : Math.min(selectionStart, code.length, slotCount - 1);
|
|
1975
2082
|
useImperativeHandle(forwardedRef, () => inputRef.current);
|
|
@@ -1995,7 +2102,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
1995
2102
|
input.setSelectionRange(position, position);
|
|
1996
2103
|
setSelectionStart(position);
|
|
1997
2104
|
}
|
|
1998
|
-
return /* @__PURE__ */
|
|
2105
|
+
return /* @__PURE__ */ jsxs17(
|
|
1999
2106
|
"div",
|
|
2000
2107
|
{
|
|
2001
2108
|
"data-slot": "otp-input",
|
|
@@ -2005,7 +2112,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2005
2112
|
style: { gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` },
|
|
2006
2113
|
onPointerDown: handlePointerDown,
|
|
2007
2114
|
children: [
|
|
2008
|
-
/* @__PURE__ */
|
|
2115
|
+
/* @__PURE__ */ jsx34(
|
|
2009
2116
|
AriaInput3,
|
|
2010
2117
|
{
|
|
2011
2118
|
...props,
|
|
@@ -2045,7 +2152,7 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2045
2152
|
}
|
|
2046
2153
|
}
|
|
2047
2154
|
),
|
|
2048
|
-
slots.map((slot, index) => /* @__PURE__ */
|
|
2155
|
+
slots.map((slot, index) => /* @__PURE__ */ jsx34(
|
|
2049
2156
|
"span",
|
|
2050
2157
|
{
|
|
2051
2158
|
"aria-hidden": "true",
|
|
@@ -2068,39 +2175,39 @@ var OtpInputImpl = forwardRef4(function OtpInput({
|
|
|
2068
2175
|
var OtpInput2 = OtpInputImpl;
|
|
2069
2176
|
|
|
2070
2177
|
// src/ui/page-header/page-header.tsx
|
|
2071
|
-
import { jsx as
|
|
2178
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2072
2179
|
function PageHeader({ className, ...props }) {
|
|
2073
|
-
return /* @__PURE__ */
|
|
2180
|
+
return /* @__PURE__ */ jsx35("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 });
|
|
2074
2181
|
}
|
|
2075
2182
|
function PageHeaderHeading({ className, ...props }) {
|
|
2076
|
-
return /* @__PURE__ */
|
|
2183
|
+
return /* @__PURE__ */ jsx35("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
|
|
2077
2184
|
}
|
|
2078
2185
|
function PageHeaderTitle({ className, ...props }) {
|
|
2079
|
-
return /* @__PURE__ */
|
|
2186
|
+
return /* @__PURE__ */ jsx35("h1", { "data-slot": "page-header-title", className: cn("truncate text-xl font-semibold tracking-tight md:text-2xl", className), ...props });
|
|
2080
2187
|
}
|
|
2081
2188
|
function PageHeaderDescription({ className, ...props }) {
|
|
2082
|
-
return /* @__PURE__ */
|
|
2189
|
+
return /* @__PURE__ */ jsx35("p", { "data-slot": "page-header-description", className: cn("mt-1 text-sm text-muted-foreground", className), ...props });
|
|
2083
2190
|
}
|
|
2084
2191
|
function PageHeaderActions({ className, ...props }) {
|
|
2085
|
-
return /* @__PURE__ */
|
|
2192
|
+
return /* @__PURE__ */ jsx35("div", { "data-slot": "page-header-actions", className: cn("flex shrink-0 items-center gap-2", className), ...props });
|
|
2086
2193
|
}
|
|
2087
2194
|
|
|
2088
2195
|
// src/ui/pagination/pagination.tsx
|
|
2089
2196
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
2090
|
-
import { jsx as
|
|
2197
|
+
import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2091
2198
|
function Pagination({ page, pageCount, onPageChange, className }) {
|
|
2092
2199
|
const pages = Array.from({ length: pageCount }, (_, index) => index + 1);
|
|
2093
|
-
return /* @__PURE__ */
|
|
2094
|
-
/* @__PURE__ */
|
|
2200
|
+
return /* @__PURE__ */ jsxs18("nav", { "aria-label": "Paginaci\xF3n", className: cn("flex items-center justify-between gap-4", className), children: [
|
|
2201
|
+
/* @__PURE__ */ jsxs18("p", { className: "text-sm text-muted-foreground", children: [
|
|
2095
2202
|
"P\xE1gina ",
|
|
2096
2203
|
page,
|
|
2097
2204
|
" de ",
|
|
2098
2205
|
pageCount
|
|
2099
2206
|
] }),
|
|
2100
|
-
/* @__PURE__ */
|
|
2101
|
-
/* @__PURE__ */
|
|
2102
|
-
pages.map((item) => /* @__PURE__ */
|
|
2103
|
-
/* @__PURE__ */
|
|
2207
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-1", children: [
|
|
2208
|
+
/* @__PURE__ */ jsx36(Button, { "aria-label": "P\xE1gina anterior", isDisabled: page <= 1, onPress: () => onPageChange(page - 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ jsx36(ChevronLeft, {}) }),
|
|
2209
|
+
pages.map((item) => /* @__PURE__ */ jsx36(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)),
|
|
2210
|
+
/* @__PURE__ */ jsx36(Button, { "aria-label": "P\xE1gina siguiente", isDisabled: page >= pageCount, onPress: () => onPageChange(page + 1), size: "icon", variant: "ghost", children: /* @__PURE__ */ jsx36(ChevronRight, {}) })
|
|
2104
2211
|
] })
|
|
2105
2212
|
] });
|
|
2106
2213
|
}
|
|
@@ -2110,10 +2217,10 @@ import {
|
|
|
2110
2217
|
DialogTrigger as AriaDialogTrigger,
|
|
2111
2218
|
Popover as AriaPopover
|
|
2112
2219
|
} from "react-aria-components";
|
|
2113
|
-
import { jsx as
|
|
2220
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
2114
2221
|
var PopoverTrigger = AriaDialogTrigger;
|
|
2115
2222
|
function Popover4({ className, ...props }) {
|
|
2116
|
-
return /* @__PURE__ */
|
|
2223
|
+
return /* @__PURE__ */ jsx37(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 });
|
|
2117
2224
|
}
|
|
2118
2225
|
var PopoverContent = Popover4;
|
|
2119
2226
|
|
|
@@ -2125,7 +2232,7 @@ import {
|
|
|
2125
2232
|
Input as AriaInput4,
|
|
2126
2233
|
NumberField as AriaNumberField
|
|
2127
2234
|
} from "react-aria-components";
|
|
2128
|
-
import { jsx as
|
|
2235
|
+
import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2129
2236
|
function QuantityInput({
|
|
2130
2237
|
className,
|
|
2131
2238
|
inputClassName,
|
|
@@ -2135,7 +2242,7 @@ function QuantityInput({
|
|
|
2135
2242
|
step = 1,
|
|
2136
2243
|
...props
|
|
2137
2244
|
}) {
|
|
2138
|
-
return /* @__PURE__ */
|
|
2245
|
+
return /* @__PURE__ */ jsx38(
|
|
2139
2246
|
AriaNumberField,
|
|
2140
2247
|
{
|
|
2141
2248
|
...props,
|
|
@@ -2143,15 +2250,15 @@ function QuantityInput({
|
|
|
2143
2250
|
step,
|
|
2144
2251
|
"data-slot": "quantity-input",
|
|
2145
2252
|
className: cn("group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
|
|
2146
|
-
children: /* @__PURE__ */
|
|
2253
|
+
children: /* @__PURE__ */ jsxs19(
|
|
2147
2254
|
AriaGroup,
|
|
2148
2255
|
{
|
|
2149
2256
|
"data-slot": "quantity-input-group",
|
|
2150
2257
|
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",
|
|
2151
2258
|
children: [
|
|
2152
|
-
/* @__PURE__ */
|
|
2153
|
-
/* @__PURE__ */
|
|
2154
|
-
/* @__PURE__ */
|
|
2259
|
+
/* @__PURE__ */ jsx38(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__ */ jsx38(Minus, { "aria-hidden": "true", className: "size-4" }) }),
|
|
2260
|
+
/* @__PURE__ */ jsx38(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) }),
|
|
2261
|
+
/* @__PURE__ */ jsx38(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__ */ jsx38(Plus, { "aria-hidden": "true", className: "size-4" }) })
|
|
2155
2262
|
]
|
|
2156
2263
|
}
|
|
2157
2264
|
)
|
|
@@ -2166,13 +2273,13 @@ import {
|
|
|
2166
2273
|
Input as Input4
|
|
2167
2274
|
} from "react-aria-components";
|
|
2168
2275
|
import { X as X2 } from "lucide-react";
|
|
2169
|
-
import { jsx as
|
|
2276
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
2170
2277
|
var SearchField = AriaSearchField;
|
|
2171
2278
|
function SearchInput({ className, ...props }) {
|
|
2172
|
-
return /* @__PURE__ */
|
|
2279
|
+
return /* @__PURE__ */ jsx39(Input4, { "data-slot": "search-input", className: cn("h-8 w-full min-w-0 rounded-lg border border-border bg-background px-2.5 py-1 text-sm text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-3 focus-visible:ring-ring/50", className), ...props });
|
|
2173
2280
|
}
|
|
2174
|
-
function SearchClearButton({ className, children = /* @__PURE__ */
|
|
2175
|
-
return /* @__PURE__ */
|
|
2281
|
+
function SearchClearButton({ className, children = /* @__PURE__ */ jsx39(X2, { "aria-hidden": "true", className: "size-4" }), ...props }) {
|
|
2282
|
+
return /* @__PURE__ */ jsx39(Button2, { slot: "clear", "data-slot": "search-clear", className: cn("absolute top-1/2 right-1 rounded p-1 text-muted-foreground outline-none hover:bg-muted data-focus-visible:ring-2 data-focus-visible:ring-ring", className), ...props, children });
|
|
2176
2283
|
}
|
|
2177
2284
|
|
|
2178
2285
|
// src/ui/select/select.tsx
|
|
@@ -2184,44 +2291,44 @@ import {
|
|
|
2184
2291
|
ListBoxItem as ListBoxItem3,
|
|
2185
2292
|
Popover as Popover5
|
|
2186
2293
|
} from "react-aria-components";
|
|
2187
|
-
import { ChevronDown } from "lucide-react";
|
|
2188
|
-
import { Fragment as
|
|
2294
|
+
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
2295
|
+
import { Fragment as Fragment9, jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2189
2296
|
var Select = AriaSelect;
|
|
2190
2297
|
function SelectTrigger({ className, children, ...props }) {
|
|
2191
|
-
return /* @__PURE__ */
|
|
2298
|
+
return /* @__PURE__ */ jsx40(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__ */ jsxs20(Fragment9, { children: [
|
|
2192
2299
|
typeof children === "function" ? children(state) : children,
|
|
2193
|
-
/* @__PURE__ */
|
|
2300
|
+
/* @__PURE__ */ jsx40(ChevronDown2, { "aria-hidden": "true", className: "ml-auto size-4 text-muted-foreground transition-transform group-data-pressed/select-trigger:rotate-180 motion-reduce:transition-none" })
|
|
2194
2301
|
] }) });
|
|
2195
2302
|
}
|
|
2196
2303
|
function SelectValue({ className, ...props }) {
|
|
2197
|
-
return /* @__PURE__ */
|
|
2304
|
+
return /* @__PURE__ */ jsx40(AriaSelectValue, { "data-slot": "select-value", className: cn("flex-1 truncate data-placeholder:text-muted-foreground", className), ...props });
|
|
2198
2305
|
}
|
|
2199
2306
|
function SelectContent({ className, ...props }) {
|
|
2200
|
-
return /* @__PURE__ */
|
|
2307
|
+
return /* @__PURE__ */ jsx40(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 });
|
|
2201
2308
|
}
|
|
2202
2309
|
function SelectList({ className, ...props }) {
|
|
2203
|
-
return /* @__PURE__ */
|
|
2310
|
+
return /* @__PURE__ */ jsx40(ListBox3, { "data-slot": "select-list", className: cn("max-h-64 overflow-y-auto", className), ...props });
|
|
2204
2311
|
}
|
|
2205
2312
|
function SelectItem({ className, children, ...props }) {
|
|
2206
|
-
return /* @__PURE__ */
|
|
2313
|
+
return /* @__PURE__ */ jsx40(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 });
|
|
2207
2314
|
}
|
|
2208
2315
|
|
|
2209
2316
|
// src/ui/sheet/sheet.tsx
|
|
2210
2317
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
2211
2318
|
import {
|
|
2212
|
-
Heading as
|
|
2319
|
+
Heading as Heading4,
|
|
2213
2320
|
ModalOverlay as ModalOverlayPrimitive,
|
|
2214
2321
|
Modal as ModalPrimitive,
|
|
2215
2322
|
Dialog as SheetPrimitive,
|
|
2216
2323
|
DialogTrigger as SheetTriggerPrimitive,
|
|
2217
2324
|
Text as Text4
|
|
2218
2325
|
} from "react-aria-components";
|
|
2219
|
-
import { jsx as
|
|
2326
|
+
import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2220
2327
|
function SheetTrigger({ ...props }) {
|
|
2221
|
-
return /* @__PURE__ */
|
|
2328
|
+
return /* @__PURE__ */ jsx41(SheetTriggerPrimitive, { "data-slot": "sheet-trigger", ...props });
|
|
2222
2329
|
}
|
|
2223
2330
|
function SheetClose({ className, variant = "outline", size = "default", ...props }) {
|
|
2224
|
-
return /* @__PURE__ */
|
|
2331
|
+
return /* @__PURE__ */ jsx41(
|
|
2225
2332
|
Button,
|
|
2226
2333
|
{
|
|
2227
2334
|
slot: "close",
|
|
@@ -2238,7 +2345,7 @@ function SheetOverlay({
|
|
|
2238
2345
|
children,
|
|
2239
2346
|
...props
|
|
2240
2347
|
}) {
|
|
2241
|
-
return /* @__PURE__ */
|
|
2348
|
+
return /* @__PURE__ */ jsx41(
|
|
2242
2349
|
ModalOverlayPrimitive,
|
|
2243
2350
|
{
|
|
2244
2351
|
"data-slot": "sheet-overlay",
|
|
@@ -2259,7 +2366,7 @@ function Sheet({
|
|
|
2259
2366
|
showCloseButton = true,
|
|
2260
2367
|
...props
|
|
2261
2368
|
}) {
|
|
2262
|
-
return /* @__PURE__ */
|
|
2369
|
+
return /* @__PURE__ */ jsx41(SheetOverlay, { ...props, children: /* @__PURE__ */ jsx41(
|
|
2263
2370
|
ModalPrimitive,
|
|
2264
2371
|
{
|
|
2265
2372
|
"data-slot": "sheet-content",
|
|
@@ -2268,16 +2375,16 @@ function Sheet({
|
|
|
2268
2375
|
"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",
|
|
2269
2376
|
className
|
|
2270
2377
|
),
|
|
2271
|
-
children: /* @__PURE__ */
|
|
2378
|
+
children: /* @__PURE__ */ jsxs21(
|
|
2272
2379
|
SheetPrimitive,
|
|
2273
2380
|
{
|
|
2274
2381
|
"data-slot": "sheet",
|
|
2275
2382
|
className: "[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none",
|
|
2276
2383
|
children: [
|
|
2277
2384
|
children,
|
|
2278
|
-
showCloseButton && /* @__PURE__ */
|
|
2279
|
-
/* @__PURE__ */
|
|
2280
|
-
/* @__PURE__ */
|
|
2385
|
+
showCloseButton && /* @__PURE__ */ jsxs21(SheetClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
|
|
2386
|
+
/* @__PURE__ */ jsx41(XIcon2, {}),
|
|
2387
|
+
/* @__PURE__ */ jsx41("span", { className: "sr-only", children: "Cerrar" })
|
|
2281
2388
|
] })
|
|
2282
2389
|
]
|
|
2283
2390
|
}
|
|
@@ -2292,10 +2399,10 @@ function SheetContent({
|
|
|
2292
2399
|
showCloseButton = true,
|
|
2293
2400
|
...props
|
|
2294
2401
|
}) {
|
|
2295
|
-
return /* @__PURE__ */
|
|
2402
|
+
return /* @__PURE__ */ jsx41(Sheet, { className, side, showCloseButton, ...props, children });
|
|
2296
2403
|
}
|
|
2297
2404
|
function SheetHeader({ className, ...props }) {
|
|
2298
|
-
return /* @__PURE__ */
|
|
2405
|
+
return /* @__PURE__ */ jsx41(
|
|
2299
2406
|
"div",
|
|
2300
2407
|
{
|
|
2301
2408
|
"data-slot": "sheet-header",
|
|
@@ -2305,7 +2412,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
2305
2412
|
);
|
|
2306
2413
|
}
|
|
2307
2414
|
function SheetFooter({ className, ...props }) {
|
|
2308
|
-
return /* @__PURE__ */
|
|
2415
|
+
return /* @__PURE__ */ jsx41(
|
|
2309
2416
|
"div",
|
|
2310
2417
|
{
|
|
2311
2418
|
"data-slot": "sheet-footer",
|
|
@@ -2315,8 +2422,8 @@ function SheetFooter({ className, ...props }) {
|
|
|
2315
2422
|
);
|
|
2316
2423
|
}
|
|
2317
2424
|
function SheetTitle({ className, ...props }) {
|
|
2318
|
-
return /* @__PURE__ */
|
|
2319
|
-
|
|
2425
|
+
return /* @__PURE__ */ jsx41(
|
|
2426
|
+
Heading4,
|
|
2320
2427
|
{
|
|
2321
2428
|
slot: "title",
|
|
2322
2429
|
"data-slot": "sheet-title",
|
|
@@ -2329,7 +2436,7 @@ function SheetDescription({
|
|
|
2329
2436
|
className,
|
|
2330
2437
|
...props
|
|
2331
2438
|
}) {
|
|
2332
|
-
return /* @__PURE__ */
|
|
2439
|
+
return /* @__PURE__ */ jsx41(
|
|
2333
2440
|
Text4,
|
|
2334
2441
|
{
|
|
2335
2442
|
slot: "description",
|
|
@@ -2351,10 +2458,10 @@ import {
|
|
|
2351
2458
|
createContext as createContext3,
|
|
2352
2459
|
useContext as useContext3,
|
|
2353
2460
|
useMemo as useMemo2,
|
|
2354
|
-
useState as
|
|
2461
|
+
useState as useState10
|
|
2355
2462
|
} from "react";
|
|
2356
2463
|
import { Link as Link3 } from "react-aria-components";
|
|
2357
|
-
import { Fragment as
|
|
2464
|
+
import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2358
2465
|
var SidebarContext = createContext3(null);
|
|
2359
2466
|
function useSidebar() {
|
|
2360
2467
|
const context = useContext3(SidebarContext);
|
|
@@ -2366,7 +2473,7 @@ function SidebarProvider({
|
|
|
2366
2473
|
defaultCollapsed = false,
|
|
2367
2474
|
children
|
|
2368
2475
|
}) {
|
|
2369
|
-
const [collapsed, setCollapsed] =
|
|
2476
|
+
const [collapsed, setCollapsed] = useState10(defaultCollapsed);
|
|
2370
2477
|
const value = useMemo2(
|
|
2371
2478
|
() => ({
|
|
2372
2479
|
collapsed,
|
|
@@ -2375,14 +2482,14 @@ function SidebarProvider({
|
|
|
2375
2482
|
}),
|
|
2376
2483
|
[collapsed]
|
|
2377
2484
|
);
|
|
2378
|
-
return /* @__PURE__ */
|
|
2485
|
+
return /* @__PURE__ */ jsx42(SidebarContext.Provider, { value, children });
|
|
2379
2486
|
}
|
|
2380
2487
|
function Sidebar({
|
|
2381
2488
|
className,
|
|
2382
2489
|
...props
|
|
2383
2490
|
}) {
|
|
2384
2491
|
const { collapsed } = useSidebar();
|
|
2385
|
-
return /* @__PURE__ */
|
|
2492
|
+
return /* @__PURE__ */ jsx42(
|
|
2386
2493
|
"aside",
|
|
2387
2494
|
{
|
|
2388
2495
|
"data-slot": "sidebar",
|
|
@@ -2399,7 +2506,7 @@ function SidebarHeader({
|
|
|
2399
2506
|
className,
|
|
2400
2507
|
...props
|
|
2401
2508
|
}) {
|
|
2402
|
-
return /* @__PURE__ */
|
|
2509
|
+
return /* @__PURE__ */ jsx42(
|
|
2403
2510
|
"div",
|
|
2404
2511
|
{
|
|
2405
2512
|
"data-slot": "sidebar-header",
|
|
@@ -2414,7 +2521,7 @@ function SidebarSearch({
|
|
|
2414
2521
|
className,
|
|
2415
2522
|
...props
|
|
2416
2523
|
}) {
|
|
2417
|
-
return /* @__PURE__ */
|
|
2524
|
+
return /* @__PURE__ */ jsxs22(
|
|
2418
2525
|
"button",
|
|
2419
2526
|
{
|
|
2420
2527
|
type: "button",
|
|
@@ -2425,9 +2532,9 @@ function SidebarSearch({
|
|
|
2425
2532
|
),
|
|
2426
2533
|
...props,
|
|
2427
2534
|
children: [
|
|
2428
|
-
/* @__PURE__ */
|
|
2429
|
-
/* @__PURE__ */
|
|
2430
|
-
/* @__PURE__ */
|
|
2535
|
+
/* @__PURE__ */ jsx42(Search, { className: "size-4 shrink-0" }),
|
|
2536
|
+
/* @__PURE__ */ jsx42("span", { className: "flex-1 text-left", children: label }),
|
|
2537
|
+
/* @__PURE__ */ jsx42("kbd", { className: "rounded bg-secondary px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground", children: shortcut })
|
|
2431
2538
|
]
|
|
2432
2539
|
}
|
|
2433
2540
|
);
|
|
@@ -2436,7 +2543,7 @@ function SidebarContent({
|
|
|
2436
2543
|
className,
|
|
2437
2544
|
...props
|
|
2438
2545
|
}) {
|
|
2439
|
-
return /* @__PURE__ */
|
|
2546
|
+
return /* @__PURE__ */ jsx42(
|
|
2440
2547
|
"nav",
|
|
2441
2548
|
{
|
|
2442
2549
|
"data-slot": "sidebar-content",
|
|
@@ -2450,7 +2557,7 @@ function SidebarFooter({
|
|
|
2450
2557
|
className,
|
|
2451
2558
|
...props
|
|
2452
2559
|
}) {
|
|
2453
|
-
return /* @__PURE__ */
|
|
2560
|
+
return /* @__PURE__ */ jsx42(
|
|
2454
2561
|
"div",
|
|
2455
2562
|
{
|
|
2456
2563
|
"data-slot": "sidebar-footer",
|
|
@@ -2469,14 +2576,14 @@ function SidebarGroup({
|
|
|
2469
2576
|
...props
|
|
2470
2577
|
}) {
|
|
2471
2578
|
const { collapsed } = useSidebar();
|
|
2472
|
-
return /* @__PURE__ */
|
|
2579
|
+
return /* @__PURE__ */ jsxs22(
|
|
2473
2580
|
"section",
|
|
2474
2581
|
{
|
|
2475
2582
|
"data-slot": "sidebar-group",
|
|
2476
2583
|
className: cn("mb-4 last:mb-0", className),
|
|
2477
2584
|
...props,
|
|
2478
2585
|
children: [
|
|
2479
|
-
label && /* @__PURE__ */
|
|
2586
|
+
label && /* @__PURE__ */ jsx42(
|
|
2480
2587
|
"h2",
|
|
2481
2588
|
{
|
|
2482
2589
|
className: cn(
|
|
@@ -2502,7 +2609,7 @@ function SidebarItem({
|
|
|
2502
2609
|
}) {
|
|
2503
2610
|
const { collapsed } = useSidebar();
|
|
2504
2611
|
const content = typeof children === "function" ? label : children ?? label;
|
|
2505
|
-
return /* @__PURE__ */
|
|
2612
|
+
return /* @__PURE__ */ jsx42(
|
|
2506
2613
|
Link3,
|
|
2507
2614
|
{
|
|
2508
2615
|
"data-slot": "sidebar-item",
|
|
@@ -2514,16 +2621,16 @@ function SidebarItem({
|
|
|
2514
2621
|
typeof className === "function" ? className : className
|
|
2515
2622
|
),
|
|
2516
2623
|
...props,
|
|
2517
|
-
children: (values) => /* @__PURE__ */
|
|
2518
|
-
/* @__PURE__ */
|
|
2519
|
-
/* @__PURE__ */
|
|
2624
|
+
children: (values) => /* @__PURE__ */ jsxs22(Fragment10, { children: [
|
|
2625
|
+
/* @__PURE__ */ jsx42("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
|
|
2626
|
+
/* @__PURE__ */ jsx42(
|
|
2520
2627
|
"span",
|
|
2521
2628
|
{
|
|
2522
2629
|
className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"),
|
|
2523
2630
|
children: typeof children === "function" ? children(values) : content
|
|
2524
2631
|
}
|
|
2525
2632
|
),
|
|
2526
|
-
badge && !collapsed && /* @__PURE__ */
|
|
2633
|
+
badge && !collapsed && /* @__PURE__ */ jsx42("span", { className: "text-xs text-muted-foreground", children: badge })
|
|
2527
2634
|
] })
|
|
2528
2635
|
}
|
|
2529
2636
|
);
|
|
@@ -2532,7 +2639,7 @@ function SidebarSeparator({
|
|
|
2532
2639
|
className,
|
|
2533
2640
|
...props
|
|
2534
2641
|
}) {
|
|
2535
|
-
return /* @__PURE__ */
|
|
2642
|
+
return /* @__PURE__ */ jsx42(
|
|
2536
2643
|
"hr",
|
|
2537
2644
|
{
|
|
2538
2645
|
"data-slot": "sidebar-separator",
|
|
@@ -2543,7 +2650,7 @@ function SidebarSeparator({
|
|
|
2543
2650
|
}
|
|
2544
2651
|
function SidebarTrigger({ className, ...props }) {
|
|
2545
2652
|
const { collapsed, toggle } = useSidebar();
|
|
2546
|
-
return /* @__PURE__ */
|
|
2653
|
+
return /* @__PURE__ */ jsx42(
|
|
2547
2654
|
Button,
|
|
2548
2655
|
{
|
|
2549
2656
|
"aria-label": collapsed ? "Expandir navegaci\xF3n" : "Colapsar navegaci\xF3n",
|
|
@@ -2552,7 +2659,7 @@ function SidebarTrigger({ className, ...props }) {
|
|
|
2552
2659
|
variant: "ghost",
|
|
2553
2660
|
className: cn("ml-auto", className),
|
|
2554
2661
|
...props,
|
|
2555
|
-
children: collapsed ? /* @__PURE__ */
|
|
2662
|
+
children: collapsed ? /* @__PURE__ */ jsx42(ChevronRight2, {}) : /* @__PURE__ */ jsx42(ChevronLeft2, {})
|
|
2556
2663
|
}
|
|
2557
2664
|
);
|
|
2558
2665
|
}
|
|
@@ -2561,7 +2668,7 @@ function SidebarRail({
|
|
|
2561
2668
|
...props
|
|
2562
2669
|
}) {
|
|
2563
2670
|
const { toggle } = useSidebar();
|
|
2564
|
-
return /* @__PURE__ */
|
|
2671
|
+
return /* @__PURE__ */ jsx42(
|
|
2565
2672
|
"button",
|
|
2566
2673
|
{
|
|
2567
2674
|
type: "button",
|
|
@@ -2576,7 +2683,7 @@ function SidebarRail({
|
|
|
2576
2683
|
);
|
|
2577
2684
|
}
|
|
2578
2685
|
function SidebarMore({ className, ...props }) {
|
|
2579
|
-
return /* @__PURE__ */
|
|
2686
|
+
return /* @__PURE__ */ jsx42(
|
|
2580
2687
|
Button,
|
|
2581
2688
|
{
|
|
2582
2689
|
"aria-label": "M\xE1s opciones",
|
|
@@ -2584,26 +2691,26 @@ function SidebarMore({ className, ...props }) {
|
|
|
2584
2691
|
variant: "ghost",
|
|
2585
2692
|
className: cn("size-7", className),
|
|
2586
2693
|
...props,
|
|
2587
|
-
children: /* @__PURE__ */
|
|
2694
|
+
children: /* @__PURE__ */ jsx42(Ellipsis, {})
|
|
2588
2695
|
}
|
|
2589
2696
|
);
|
|
2590
2697
|
}
|
|
2591
2698
|
|
|
2592
2699
|
// src/ui/skeleton/skeleton.tsx
|
|
2593
|
-
import { jsx as
|
|
2700
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
2594
2701
|
function Skeleton({ className, ...props }) {
|
|
2595
|
-
return /* @__PURE__ */
|
|
2702
|
+
return /* @__PURE__ */ jsx43("div", { "aria-hidden": "true", "data-slot": "skeleton", className: cn("animate-pulse rounded-md bg-muted", className), ...props });
|
|
2596
2703
|
}
|
|
2597
2704
|
|
|
2598
2705
|
// src/ui/submit-button/submit-button.tsx
|
|
2599
2706
|
import { useFormStatus } from "react-dom";
|
|
2600
2707
|
import { LoaderCircle as LoaderCircle3 } from "lucide-react";
|
|
2601
|
-
import { Fragment as
|
|
2708
|
+
import { Fragment as Fragment11, jsx as jsx44, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2602
2709
|
function SubmitButton({ pendingLabel = "Guardando\u2026", loading = false, children, isDisabled, size = "sm", ...props }) {
|
|
2603
2710
|
const { pending } = useFormStatus();
|
|
2604
2711
|
const busy = pending || loading;
|
|
2605
|
-
return /* @__PURE__ */
|
|
2606
|
-
/* @__PURE__ */
|
|
2712
|
+
return /* @__PURE__ */ jsx44(Button, { type: "submit", size, isDisabled: busy || isDisabled, "aria-busy": busy || void 0, ...props, children: busy ? /* @__PURE__ */ jsxs23(Fragment11, { children: [
|
|
2713
|
+
/* @__PURE__ */ jsx44(LoaderCircle3, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
2607
2714
|
pendingLabel
|
|
2608
2715
|
] }) : children });
|
|
2609
2716
|
}
|
|
@@ -2613,7 +2720,7 @@ import { useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
|
2613
2720
|
import {
|
|
2614
2721
|
Switch as AriaSwitch
|
|
2615
2722
|
} from "react-aria-components";
|
|
2616
|
-
import { Fragment as
|
|
2723
|
+
import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2617
2724
|
var switchSizes = {
|
|
2618
2725
|
sm: {
|
|
2619
2726
|
control: "h-4 w-[1.875rem] p-0.5",
|
|
@@ -2669,7 +2776,7 @@ function Switch({
|
|
|
2669
2776
|
ownerDocument.addEventListener("keydown", handleDirectionalKey);
|
|
2670
2777
|
return () => ownerDocument.removeEventListener("keydown", handleDirectionalKey);
|
|
2671
2778
|
}, [isDisabled, isReadOnly, resolvedInputRef]);
|
|
2672
|
-
return /* @__PURE__ */
|
|
2779
|
+
return /* @__PURE__ */ jsx45(
|
|
2673
2780
|
AriaSwitch,
|
|
2674
2781
|
{
|
|
2675
2782
|
"data-slot": "switch",
|
|
@@ -2686,8 +2793,8 @@ function Switch({
|
|
|
2686
2793
|
children: (state) => {
|
|
2687
2794
|
const isThumbActive = state.isHovered || state.isPressed;
|
|
2688
2795
|
const thumbOffset = state.isSelected ? isThumbActive ? styles.activeSelectedOffset : styles.selectedOffset : "0";
|
|
2689
|
-
return /* @__PURE__ */
|
|
2690
|
-
/* @__PURE__ */
|
|
2796
|
+
return /* @__PURE__ */ jsxs24(Fragment12, { children: [
|
|
2797
|
+
/* @__PURE__ */ jsx45(
|
|
2691
2798
|
"span",
|
|
2692
2799
|
{
|
|
2693
2800
|
"aria-hidden": "true",
|
|
@@ -2701,7 +2808,7 @@ function Switch({
|
|
|
2701
2808
|
"group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50",
|
|
2702
2809
|
styles.control
|
|
2703
2810
|
),
|
|
2704
|
-
children: /* @__PURE__ */
|
|
2811
|
+
children: /* @__PURE__ */ jsx45(
|
|
2705
2812
|
"span",
|
|
2706
2813
|
{
|
|
2707
2814
|
"data-slot": "switch-thumb",
|
|
@@ -2721,9 +2828,9 @@ function Switch({
|
|
|
2721
2828
|
)
|
|
2722
2829
|
}
|
|
2723
2830
|
),
|
|
2724
|
-
children || description ? /* @__PURE__ */
|
|
2725
|
-
children ? /* @__PURE__ */
|
|
2726
|
-
description ? /* @__PURE__ */
|
|
2831
|
+
children || description ? /* @__PURE__ */ jsxs24("span", { className: "grid gap-0.5 leading-tight", children: [
|
|
2832
|
+
children ? /* @__PURE__ */ jsx45("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
|
|
2833
|
+
description ? /* @__PURE__ */ jsx45("span", { "data-slot": "switch-description", className: "text-xs font-normal text-muted-foreground", children: description }) : null
|
|
2727
2834
|
] }) : null
|
|
2728
2835
|
] });
|
|
2729
2836
|
}
|
|
@@ -2732,9 +2839,9 @@ function Switch({
|
|
|
2732
2839
|
}
|
|
2733
2840
|
|
|
2734
2841
|
// src/ui/table/table.tsx
|
|
2735
|
-
import { jsx as
|
|
2842
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
2736
2843
|
function Table({ className, ...props }) {
|
|
2737
|
-
return /* @__PURE__ */
|
|
2844
|
+
return /* @__PURE__ */ jsx46("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ jsx46(
|
|
2738
2845
|
"table",
|
|
2739
2846
|
{
|
|
2740
2847
|
"data-slot": "table",
|
|
@@ -2744,10 +2851,10 @@ function Table({ className, ...props }) {
|
|
|
2744
2851
|
) });
|
|
2745
2852
|
}
|
|
2746
2853
|
function TableHeader({ className, ...props }) {
|
|
2747
|
-
return /* @__PURE__ */
|
|
2854
|
+
return /* @__PURE__ */ jsx46("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
|
|
2748
2855
|
}
|
|
2749
2856
|
function TableBody({ className, ...props }) {
|
|
2750
|
-
return /* @__PURE__ */
|
|
2857
|
+
return /* @__PURE__ */ jsx46(
|
|
2751
2858
|
"tbody",
|
|
2752
2859
|
{
|
|
2753
2860
|
"data-slot": "table-body",
|
|
@@ -2757,7 +2864,7 @@ function TableBody({ className, ...props }) {
|
|
|
2757
2864
|
);
|
|
2758
2865
|
}
|
|
2759
2866
|
function TableRow({ className, ...props }) {
|
|
2760
|
-
return /* @__PURE__ */
|
|
2867
|
+
return /* @__PURE__ */ jsx46(
|
|
2761
2868
|
"tr",
|
|
2762
2869
|
{
|
|
2763
2870
|
"data-slot": "table-row",
|
|
@@ -2770,7 +2877,7 @@ function TableRow({ className, ...props }) {
|
|
|
2770
2877
|
);
|
|
2771
2878
|
}
|
|
2772
2879
|
function TableHead({ className, ...props }) {
|
|
2773
|
-
return /* @__PURE__ */
|
|
2880
|
+
return /* @__PURE__ */ jsx46(
|
|
2774
2881
|
"th",
|
|
2775
2882
|
{
|
|
2776
2883
|
"data-slot": "table-head",
|
|
@@ -2783,7 +2890,7 @@ function TableHead({ className, ...props }) {
|
|
|
2783
2890
|
);
|
|
2784
2891
|
}
|
|
2785
2892
|
function TableCell({ className, ...props }) {
|
|
2786
|
-
return /* @__PURE__ */
|
|
2893
|
+
return /* @__PURE__ */ jsx46(
|
|
2787
2894
|
"td",
|
|
2788
2895
|
{
|
|
2789
2896
|
"data-slot": "table-cell",
|
|
@@ -2793,7 +2900,7 @@ function TableCell({ className, ...props }) {
|
|
|
2793
2900
|
);
|
|
2794
2901
|
}
|
|
2795
2902
|
function TableCaption({ className, ...props }) {
|
|
2796
|
-
return /* @__PURE__ */
|
|
2903
|
+
return /* @__PURE__ */ jsx46(
|
|
2797
2904
|
"caption",
|
|
2798
2905
|
{
|
|
2799
2906
|
"data-slot": "table-caption",
|
|
@@ -2803,7 +2910,7 @@ function TableCaption({ className, ...props }) {
|
|
|
2803
2910
|
);
|
|
2804
2911
|
}
|
|
2805
2912
|
function TableFooter({ className, ...props }) {
|
|
2806
|
-
return /* @__PURE__ */
|
|
2913
|
+
return /* @__PURE__ */ jsx46(
|
|
2807
2914
|
"tfoot",
|
|
2808
2915
|
{
|
|
2809
2916
|
"data-slot": "table-footer",
|
|
@@ -2822,27 +2929,27 @@ import {
|
|
|
2822
2929
|
Tabs as AriaTabs,
|
|
2823
2930
|
composeRenderProps as composeRenderProps2
|
|
2824
2931
|
} from "react-aria-components";
|
|
2825
|
-
import { jsx as
|
|
2932
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
2826
2933
|
function Tabs({ className, ...props }) {
|
|
2827
|
-
return /* @__PURE__ */
|
|
2934
|
+
return /* @__PURE__ */ jsx47(AriaTabs, { "data-slot": "tabs", className: composeRenderProps2(className, (value) => cn("flex flex-col gap-2", value)), ...props });
|
|
2828
2935
|
}
|
|
2829
2936
|
function TabsList({ className, ...props }) {
|
|
2830
|
-
return /* @__PURE__ */
|
|
2937
|
+
return /* @__PURE__ */ jsx47(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 });
|
|
2831
2938
|
}
|
|
2832
2939
|
function TabsTrigger({ className, ...props }) {
|
|
2833
|
-
return /* @__PURE__ */
|
|
2940
|
+
return /* @__PURE__ */ jsx47(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 });
|
|
2834
2941
|
}
|
|
2835
2942
|
function TabsPanels({ className, ...props }) {
|
|
2836
|
-
return /* @__PURE__ */
|
|
2943
|
+
return /* @__PURE__ */ jsx47(AriaTabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
|
|
2837
2944
|
}
|
|
2838
2945
|
function TabsContent({ className, ...props }) {
|
|
2839
|
-
return /* @__PURE__ */
|
|
2946
|
+
return /* @__PURE__ */ jsx47(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 });
|
|
2840
2947
|
}
|
|
2841
2948
|
|
|
2842
2949
|
// src/ui/toast/toast.tsx
|
|
2843
2950
|
import { useEffect as useEffect6 } from "react";
|
|
2844
2951
|
import { sileo, Toaster as SileoToaster } from "sileo";
|
|
2845
|
-
import { Fragment as
|
|
2952
|
+
import { Fragment as Fragment13, jsx as jsx48, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2846
2953
|
function toSileoOptions({ title, description, duration, position, action }) {
|
|
2847
2954
|
return {
|
|
2848
2955
|
title,
|
|
@@ -2881,18 +2988,18 @@ function useToast() {
|
|
|
2881
2988
|
return toast;
|
|
2882
2989
|
}
|
|
2883
2990
|
function ToastProvider({ children }) {
|
|
2884
|
-
return /* @__PURE__ */
|
|
2991
|
+
return /* @__PURE__ */ jsxs25(Fragment13, { children: [
|
|
2885
2992
|
children,
|
|
2886
|
-
/* @__PURE__ */
|
|
2993
|
+
/* @__PURE__ */ jsx48(Toaster, {})
|
|
2887
2994
|
] });
|
|
2888
2995
|
}
|
|
2889
2996
|
function Toaster({ position }) {
|
|
2890
|
-
return /* @__PURE__ */
|
|
2997
|
+
return /* @__PURE__ */ jsx48(SileoToaster, { position, options: { fill: "var(--ui-secondary)" } });
|
|
2891
2998
|
}
|
|
2892
2999
|
function ToastViewport({ position, visiblePosition, className }) {
|
|
2893
3000
|
void className;
|
|
2894
3001
|
if (visiblePosition && visiblePosition !== position) return null;
|
|
2895
|
-
return /* @__PURE__ */
|
|
3002
|
+
return /* @__PURE__ */ jsx48(Toaster, { position });
|
|
2896
3003
|
}
|
|
2897
3004
|
function Toast({ id, title, description, variant = "default", action, state = "open", duration = 0, position, onDismiss }) {
|
|
2898
3005
|
useEffect6(() => {
|
|
@@ -2907,15 +3014,15 @@ function Toast({ id, title, description, variant = "default", action, state = "o
|
|
|
2907
3014
|
}
|
|
2908
3015
|
|
|
2909
3016
|
// src/ui/toolbar/toolbar.tsx
|
|
2910
|
-
import { jsx as
|
|
3017
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
2911
3018
|
function Toolbar({ className, ...props }) {
|
|
2912
|
-
return /* @__PURE__ */
|
|
3019
|
+
return /* @__PURE__ */ jsx49("div", { role: "toolbar", "data-slot": "toolbar", className: cn("flex flex-wrap items-center gap-2", className), ...props });
|
|
2913
3020
|
}
|
|
2914
3021
|
function ToolbarGroup({ className, ...props }) {
|
|
2915
|
-
return /* @__PURE__ */
|
|
3022
|
+
return /* @__PURE__ */ jsx49("div", { "data-slot": "toolbar-group", className: cn("flex items-center gap-2", className), ...props });
|
|
2916
3023
|
}
|
|
2917
3024
|
function ToolbarSpacer({ className, ...props }) {
|
|
2918
|
-
return /* @__PURE__ */
|
|
3025
|
+
return /* @__PURE__ */ jsx49("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
|
|
2919
3026
|
}
|
|
2920
3027
|
export {
|
|
2921
3028
|
Accordion,
|
|
@@ -2970,6 +3077,7 @@ export {
|
|
|
2970
3077
|
CommandItem,
|
|
2971
3078
|
CommandList,
|
|
2972
3079
|
ConfirmDialog,
|
|
3080
|
+
DangerZone,
|
|
2973
3081
|
Dialog,
|
|
2974
3082
|
DialogClose,
|
|
2975
3083
|
DialogContent,
|
|
@@ -2980,6 +3088,7 @@ export {
|
|
|
2980
3088
|
DialogPortal,
|
|
2981
3089
|
DialogTitle,
|
|
2982
3090
|
DialogTrigger,
|
|
3091
|
+
DocPreview,
|
|
2983
3092
|
Drawer,
|
|
2984
3093
|
DrawerDescription,
|
|
2985
3094
|
DrawerFooter,
|