@doscientos/ui 0.1.32 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -1
- package/dist/index.cjs +599 -551
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +73 -64
- package/dist/index.d.ts +73 -64
- package/dist/index.js +617 -569
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -314,6 +314,7 @@ function useAsyncAction(action) {
|
|
|
314
314
|
pendingRef.current = true;
|
|
315
315
|
setStatus("pending");
|
|
316
316
|
setError(null);
|
|
317
|
+
setData(null);
|
|
317
318
|
try {
|
|
318
319
|
const result = await action(...args);
|
|
319
320
|
setData(result);
|
|
@@ -330,6 +331,7 @@ function useAsyncAction(action) {
|
|
|
330
331
|
[action]
|
|
331
332
|
);
|
|
332
333
|
const reset = (0, import_react.useCallback)(() => {
|
|
334
|
+
if (pendingRef.current) return;
|
|
333
335
|
setData(null);
|
|
334
336
|
setError(null);
|
|
335
337
|
setStatus("idle");
|
|
@@ -352,24 +354,45 @@ function useAutosave({
|
|
|
352
354
|
const saveRef = (0, import_react2.useRef)(onSave);
|
|
353
355
|
const serializeRef = (0, import_react2.useRef)(serialize);
|
|
354
356
|
const latestSaveId = (0, import_react2.useRef)(0);
|
|
357
|
+
const queue = (0, import_react2.useRef)(Promise.resolve());
|
|
358
|
+
const queuedCount = (0, import_react2.useRef)(0);
|
|
359
|
+
const timeoutRef = (0, import_react2.useRef)(void 0);
|
|
360
|
+
const mounted = (0, import_react2.useRef)(true);
|
|
361
|
+
(0, import_react2.useEffect)(() => {
|
|
362
|
+
mounted.current = true;
|
|
363
|
+
return () => {
|
|
364
|
+
mounted.current = false;
|
|
365
|
+
clearTimeout(timeoutRef.current);
|
|
366
|
+
};
|
|
367
|
+
}, []);
|
|
355
368
|
(0, import_react2.useEffect)(() => {
|
|
356
369
|
saveRef.current = onSave;
|
|
357
370
|
serializeRef.current = serialize;
|
|
358
371
|
}, [onSave, serialize]);
|
|
359
|
-
const save = (0, import_react2.useCallback)(
|
|
372
|
+
const save = (0, import_react2.useCallback)((value, force = false) => {
|
|
373
|
+
clearTimeout(timeoutRef.current);
|
|
360
374
|
const saveId = ++latestSaveId.current;
|
|
375
|
+
const snapshot = serializeRef.current(value);
|
|
376
|
+
const write = saveRef.current;
|
|
377
|
+
queuedCount.current += 1;
|
|
361
378
|
setStatus("saving");
|
|
362
379
|
setError(null);
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
380
|
+
const pending = queue.current.then(async () => {
|
|
381
|
+
try {
|
|
382
|
+
if (!mounted.current) return;
|
|
383
|
+
if (force || lastSaved.current !== snapshot) await write(value);
|
|
384
|
+
lastSaved.current = snapshot;
|
|
385
|
+
if (mounted.current && saveId === latestSaveId.current) setStatus("saved");
|
|
386
|
+
} catch (cause) {
|
|
387
|
+
if (!mounted.current || saveId !== latestSaveId.current) return;
|
|
388
|
+
setError(cause instanceof Error ? cause : new Error("No se pudo guardar."));
|
|
389
|
+
setStatus("error");
|
|
390
|
+
} finally {
|
|
391
|
+
queuedCount.current -= 1;
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
queue.current = pending;
|
|
395
|
+
return pending;
|
|
373
396
|
}, []);
|
|
374
397
|
(0, import_react2.useEffect)(() => {
|
|
375
398
|
if (!enabled) return;
|
|
@@ -378,11 +401,11 @@ function useAutosave({
|
|
|
378
401
|
lastSaved.current = snapshot;
|
|
379
402
|
return;
|
|
380
403
|
}
|
|
381
|
-
if (snapshot === lastSaved.current) return;
|
|
382
|
-
|
|
383
|
-
return () =>
|
|
404
|
+
if (snapshot === lastSaved.current && queuedCount.current === 0) return;
|
|
405
|
+
timeoutRef.current = setTimeout(() => void save(data), debounceMs);
|
|
406
|
+
return () => clearTimeout(timeoutRef.current);
|
|
384
407
|
}, [data, debounceMs, enabled, save]);
|
|
385
|
-
return { status, error, saveNow: () => save(data) };
|
|
408
|
+
return { status, error, saveNow: () => save(data, true) };
|
|
386
409
|
}
|
|
387
410
|
|
|
388
411
|
// src/hooks/use-clipboard.ts
|
|
@@ -1783,10 +1806,10 @@ function ComboboxContent({ className, ...props }) {
|
|
|
1783
1806
|
import_react_aria_components9.Popover,
|
|
1784
1807
|
{
|
|
1785
1808
|
"data-slot": "combobox-content",
|
|
1786
|
-
className: cn(
|
|
1809
|
+
className: (state) => cn(
|
|
1787
1810
|
floatingSurfaceClassName,
|
|
1788
1811
|
"max-h-72 w-(--trigger-width) overflow-hidden rounded-xl border border-border bg-background p-1.5 text-foreground",
|
|
1789
|
-
className
|
|
1812
|
+
typeof className === "function" ? className(state) : className
|
|
1790
1813
|
),
|
|
1791
1814
|
...props
|
|
1792
1815
|
}
|
|
@@ -1801,7 +1824,10 @@ function ComboboxList({
|
|
|
1801
1824
|
import_react_aria_components9.ListBox,
|
|
1802
1825
|
{
|
|
1803
1826
|
"data-slot": "combobox-list",
|
|
1804
|
-
className:
|
|
1827
|
+
className: (state) => cn(
|
|
1828
|
+
"max-h-64 overflow-y-auto",
|
|
1829
|
+
typeof className === "function" ? className(state) : className
|
|
1830
|
+
),
|
|
1805
1831
|
renderEmptyState: emptyState ? () => emptyState : void 0,
|
|
1806
1832
|
...props
|
|
1807
1833
|
}
|
|
@@ -1816,9 +1842,9 @@ function ComboboxItem({
|
|
|
1816
1842
|
import_react_aria_components9.ListBoxItem,
|
|
1817
1843
|
{
|
|
1818
1844
|
"data-slot": "combobox-item",
|
|
1819
|
-
className: cn(
|
|
1845
|
+
className: (state) => cn(
|
|
1820
1846
|
"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",
|
|
1821
|
-
className
|
|
1847
|
+
typeof className === "function" ? className(state) : className
|
|
1822
1848
|
),
|
|
1823
1849
|
...props,
|
|
1824
1850
|
children
|
|
@@ -1893,7 +1919,10 @@ function AutocompleteCombobox({
|
|
|
1893
1919
|
import_react_aria_components9.ComboBox,
|
|
1894
1920
|
{
|
|
1895
1921
|
...props,
|
|
1896
|
-
className:
|
|
1922
|
+
className: (state) => cn(
|
|
1923
|
+
"group/combobox flex w-full flex-col gap-1.5",
|
|
1924
|
+
typeof className === "function" ? className(state) : className
|
|
1925
|
+
),
|
|
1897
1926
|
items: filteredItems,
|
|
1898
1927
|
selectedKey,
|
|
1899
1928
|
inputValue,
|
|
@@ -1997,15 +2026,197 @@ function CommandItem({ className, ...props }) {
|
|
|
1997
2026
|
);
|
|
1998
2027
|
}
|
|
1999
2028
|
|
|
2000
|
-
// src/ui/
|
|
2029
|
+
// src/ui/confirm-dialog/confirm-dialog.tsx
|
|
2030
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
2031
|
+
function ConfirmDialog({
|
|
2032
|
+
open,
|
|
2033
|
+
onOpenChange,
|
|
2034
|
+
title,
|
|
2035
|
+
description,
|
|
2036
|
+
confirmLabel = "Confirmar",
|
|
2037
|
+
cancelLabel = "Cancelar",
|
|
2038
|
+
destructive = false,
|
|
2039
|
+
pending = false,
|
|
2040
|
+
onConfirm
|
|
2041
|
+
}) {
|
|
2042
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2043
|
+
AlertDialog,
|
|
2044
|
+
{
|
|
2045
|
+
open,
|
|
2046
|
+
onOpenChange: (nextOpen) => {
|
|
2047
|
+
if (!pending || nextOpen) onOpenChange(nextOpen);
|
|
2048
|
+
},
|
|
2049
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(AlertDialogContent, { children: [
|
|
2050
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(AlertDialogHeader, { children: [
|
|
2051
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AlertDialogTitle, { children: title }),
|
|
2052
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AlertDialogDescription, { children: description }) : null
|
|
2053
|
+
] }),
|
|
2054
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(AlertDialogFooter, { children: [
|
|
2055
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
|
|
2056
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
2057
|
+
Button,
|
|
2058
|
+
{
|
|
2059
|
+
variant: destructive ? "destructive" : "default",
|
|
2060
|
+
isDisabled: pending,
|
|
2061
|
+
onPress: onConfirm,
|
|
2062
|
+
children: confirmLabel
|
|
2063
|
+
}
|
|
2064
|
+
)
|
|
2065
|
+
] })
|
|
2066
|
+
] })
|
|
2067
|
+
}
|
|
2068
|
+
);
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
// src/ui/copy-button/copy-button.tsx
|
|
2001
2072
|
var import_lucide_react4 = require("lucide-react");
|
|
2073
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
2074
|
+
function CopyButton({
|
|
2075
|
+
value,
|
|
2076
|
+
children,
|
|
2077
|
+
copiedLabel = "Copiado",
|
|
2078
|
+
resetMs,
|
|
2079
|
+
onCopied,
|
|
2080
|
+
onCopyError,
|
|
2081
|
+
...props
|
|
2082
|
+
}) {
|
|
2083
|
+
const { copy, status } = useClipboard({ resetMs, onError: onCopyError });
|
|
2084
|
+
const copied = status === "copied";
|
|
2085
|
+
const label = copied ? copiedLabel : children ?? "Copiar";
|
|
2086
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
2087
|
+
Button,
|
|
2088
|
+
{
|
|
2089
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
2090
|
+
onPress: () => {
|
|
2091
|
+
void copy(value).then((wasCopied) => {
|
|
2092
|
+
if (wasCopied) onCopied?.(value);
|
|
2093
|
+
});
|
|
2094
|
+
},
|
|
2095
|
+
...props,
|
|
2096
|
+
children: [
|
|
2097
|
+
copied ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react4.Check, { "aria-hidden": "true", className: "size-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react4.Copy, { "aria-hidden": "true", className: "size-3.5" }),
|
|
2098
|
+
label
|
|
2099
|
+
]
|
|
2100
|
+
}
|
|
2101
|
+
);
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2104
|
+
// src/ui/danger-zone/danger-zone.tsx
|
|
2105
|
+
var import_lucide_react5 = require("lucide-react");
|
|
2002
2106
|
var import_react_aria_components11 = require("react-aria-components");
|
|
2003
|
-
var
|
|
2107
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2108
|
+
function DangerZone({
|
|
2109
|
+
title = "Zona de peligro",
|
|
2110
|
+
description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
|
|
2111
|
+
defaultOpen = false,
|
|
2112
|
+
className,
|
|
2113
|
+
children
|
|
2114
|
+
}) {
|
|
2115
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react_aria_components11.Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Card, { className: cn("border-destructive/30", className), children: [
|
|
2116
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react_aria_components11.Heading, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2117
|
+
import_react_aria_components11.Button,
|
|
2118
|
+
{
|
|
2119
|
+
slot: "trigger",
|
|
2120
|
+
"data-slot": "danger-zone-trigger",
|
|
2121
|
+
className: "group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3",
|
|
2122
|
+
children: [
|
|
2123
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.ShieldAlert, { className: "text-destructive size-4 shrink-0" }),
|
|
2124
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "flex flex-1 flex-col gap-0.5", children: [
|
|
2125
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-heading text-destructive text-base leading-snug font-medium", children: title }),
|
|
2126
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-muted-foreground text-xs", children: description })
|
|
2127
|
+
] }),
|
|
2128
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.ChevronDown, { className: "text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180" })
|
|
2129
|
+
]
|
|
2130
|
+
}
|
|
2131
|
+
) }),
|
|
2132
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react_aria_components11.DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CardContent, { children }) })
|
|
2133
|
+
] }) });
|
|
2134
|
+
}
|
|
2135
|
+
|
|
2136
|
+
// src/ui/data-view-state/data-view-state.tsx
|
|
2137
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2138
|
+
function DataViewState({ className, ...props }) {
|
|
2139
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2140
|
+
"section",
|
|
2141
|
+
{
|
|
2142
|
+
"data-slot": "data-view-state",
|
|
2143
|
+
className: cn(
|
|
2144
|
+
"flex min-h-40 flex-col items-center justify-center gap-3 rounded-xl border p-6 text-center",
|
|
2145
|
+
className
|
|
2146
|
+
),
|
|
2147
|
+
...props
|
|
2148
|
+
}
|
|
2149
|
+
);
|
|
2150
|
+
}
|
|
2151
|
+
function DataViewStateTitle({ children, className, ...props }) {
|
|
2152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h2", { "data-slot": "data-view-state-title", className: cn("font-semibold", className), ...props, children });
|
|
2153
|
+
}
|
|
2154
|
+
function DataViewStateDescription({ className, ...props }) {
|
|
2155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2156
|
+
"p",
|
|
2157
|
+
{
|
|
2158
|
+
"data-slot": "data-view-state-description",
|
|
2159
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
2160
|
+
...props
|
|
2161
|
+
}
|
|
2162
|
+
);
|
|
2163
|
+
}
|
|
2164
|
+
function DataViewStateActions({ className, ...props }) {
|
|
2165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2166
|
+
"div",
|
|
2167
|
+
{
|
|
2168
|
+
"data-slot": "data-view-state-actions",
|
|
2169
|
+
className: cn("flex items-center gap-2", className),
|
|
2170
|
+
...props
|
|
2171
|
+
}
|
|
2172
|
+
);
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
// src/ui/description-list/description-list.tsx
|
|
2176
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2177
|
+
function DescriptionList({ className, ...props }) {
|
|
2178
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2179
|
+
"dl",
|
|
2180
|
+
{
|
|
2181
|
+
"data-slot": "description-list",
|
|
2182
|
+
className: cn("grid gap-x-6 gap-y-4 sm:grid-cols-2", className),
|
|
2183
|
+
...props
|
|
2184
|
+
}
|
|
2185
|
+
);
|
|
2186
|
+
}
|
|
2187
|
+
function DescriptionItem({ className, ...props }) {
|
|
2188
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { "data-slot": "description-item", className: cn("min-w-0", className), ...props });
|
|
2189
|
+
}
|
|
2190
|
+
function DescriptionTerm({ className, ...props }) {
|
|
2191
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2192
|
+
"dt",
|
|
2193
|
+
{
|
|
2194
|
+
"data-slot": "description-term",
|
|
2195
|
+
className: cn("text-xs font-medium text-muted-foreground", className),
|
|
2196
|
+
...props
|
|
2197
|
+
}
|
|
2198
|
+
);
|
|
2199
|
+
}
|
|
2200
|
+
function DescriptionDetails({ className, ...props }) {
|
|
2201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2202
|
+
"dd",
|
|
2203
|
+
{
|
|
2204
|
+
"data-slot": "description-details",
|
|
2205
|
+
className: cn("mt-1 wrap-break-word text-sm", className),
|
|
2206
|
+
...props
|
|
2207
|
+
}
|
|
2208
|
+
);
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
// src/ui/drawer/drawer.tsx
|
|
2212
|
+
var import_lucide_react6 = require("lucide-react");
|
|
2213
|
+
var import_react_aria_components12 = require("react-aria-components");
|
|
2214
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2004
2215
|
function DrawerTrigger({ ...props }) {
|
|
2005
|
-
return /* @__PURE__ */ (0,
|
|
2216
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_aria_components12.DialogTrigger, { "data-slot": "drawer-trigger", ...props });
|
|
2006
2217
|
}
|
|
2007
2218
|
function DrawerClose({ className, variant = "outline", size = "default", ...props }) {
|
|
2008
|
-
return /* @__PURE__ */ (0,
|
|
2219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2009
2220
|
Button,
|
|
2010
2221
|
{
|
|
2011
2222
|
slot: "close",
|
|
@@ -2022,8 +2233,8 @@ function DrawerOverlay({
|
|
|
2022
2233
|
children,
|
|
2023
2234
|
...props
|
|
2024
2235
|
}) {
|
|
2025
|
-
return /* @__PURE__ */ (0,
|
|
2026
|
-
|
|
2236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2237
|
+
import_react_aria_components12.ModalOverlay,
|
|
2027
2238
|
{
|
|
2028
2239
|
"data-slot": "drawer-overlay",
|
|
2029
2240
|
isDismissable: true,
|
|
@@ -2044,8 +2255,8 @@ function DrawerContent({
|
|
|
2044
2255
|
showCloseButton = true,
|
|
2045
2256
|
...props
|
|
2046
2257
|
}) {
|
|
2047
|
-
return /* @__PURE__ */ (0,
|
|
2048
|
-
|
|
2258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerOverlay, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2259
|
+
import_react_aria_components12.Modal,
|
|
2049
2260
|
{
|
|
2050
2261
|
"data-slot": "drawer-content",
|
|
2051
2262
|
"data-side": side,
|
|
@@ -2053,17 +2264,17 @@ function DrawerContent({
|
|
|
2053
2264
|
"fixed z-50 flex max-h-svh flex-col gap-4 border-border bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg motion-safe:transition motion-safe:duration-200 motion-safe:ease-in-out motion-safe:data-entering:opacity-0 motion-safe:data-exiting:opacity-0 motion-reduce:transition-none data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:pb-[env(safe-area-inset-bottom)] motion-safe:data-[side=bottom]:data-entering:translate-y-10 motion-safe: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 motion-safe:data-[side=left]:data-entering:-translate-x-10 motion-safe: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 motion-safe:data-[side=right]:data-entering:translate-x-10 motion-safe: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]:pt-[env(safe-area-inset-top)] motion-safe:data-[side=top]:data-entering:-translate-y-10 motion-safe:data-[side=top]:data-exiting:-translate-y-10 data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",
|
|
2054
2265
|
className
|
|
2055
2266
|
),
|
|
2056
|
-
children: /* @__PURE__ */ (0,
|
|
2057
|
-
|
|
2267
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2268
|
+
import_react_aria_components12.Dialog,
|
|
2058
2269
|
{
|
|
2059
2270
|
"data-slot": "drawer",
|
|
2060
2271
|
className: "[display:inherit] h-full max-h-[inherit] [flex-direction:inherit] gap-[inherit] outline-none",
|
|
2061
2272
|
...dialogProps,
|
|
2062
2273
|
children: [
|
|
2063
2274
|
children,
|
|
2064
|
-
showCloseButton && /* @__PURE__ */ (0,
|
|
2065
|
-
/* @__PURE__ */ (0,
|
|
2066
|
-
/* @__PURE__ */ (0,
|
|
2275
|
+
showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DrawerClose, { variant: "ghost", className: "absolute top-3 right-3", size: "icon-sm", children: [
|
|
2276
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react6.XIcon, {}),
|
|
2277
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "sr-only", children: "Cerrar" })
|
|
2067
2278
|
] })
|
|
2068
2279
|
]
|
|
2069
2280
|
}
|
|
@@ -2072,16 +2283,16 @@ function DrawerContent({
|
|
|
2072
2283
|
) });
|
|
2073
2284
|
}
|
|
2074
2285
|
function Drawer(props) {
|
|
2075
|
-
if (!("trigger" in props)) return /* @__PURE__ */ (0,
|
|
2286
|
+
if (!("trigger" in props)) return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerContent, { ...props });
|
|
2076
2287
|
const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
|
|
2077
|
-
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0,
|
|
2078
|
-
return /* @__PURE__ */ (0,
|
|
2288
|
+
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Button, { ...triggerProps, children: trigger }) : trigger;
|
|
2289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DrawerTrigger, { defaultOpen, isOpen, onOpenChange, children: [
|
|
2079
2290
|
triggerElement,
|
|
2080
|
-
/* @__PURE__ */ (0,
|
|
2291
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerContent, { ...contentProps, children })
|
|
2081
2292
|
] });
|
|
2082
2293
|
}
|
|
2083
2294
|
function DrawerHeader({ className, ...props }) {
|
|
2084
|
-
return /* @__PURE__ */ (0,
|
|
2295
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2085
2296
|
"div",
|
|
2086
2297
|
{
|
|
2087
2298
|
"data-slot": "drawer-header",
|
|
@@ -2091,7 +2302,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
2091
2302
|
);
|
|
2092
2303
|
}
|
|
2093
2304
|
function DrawerFooter({ className, ...props }) {
|
|
2094
|
-
return /* @__PURE__ */ (0,
|
|
2305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2095
2306
|
"div",
|
|
2096
2307
|
{
|
|
2097
2308
|
"data-slot": "drawer-footer",
|
|
@@ -2101,8 +2312,8 @@ function DrawerFooter({ className, ...props }) {
|
|
|
2101
2312
|
);
|
|
2102
2313
|
}
|
|
2103
2314
|
function DrawerTitle({ className, ...props }) {
|
|
2104
|
-
return /* @__PURE__ */ (0,
|
|
2105
|
-
|
|
2315
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2316
|
+
import_react_aria_components12.Heading,
|
|
2106
2317
|
{
|
|
2107
2318
|
slot: "title",
|
|
2108
2319
|
"data-slot": "drawer-title",
|
|
@@ -2115,8 +2326,8 @@ function DrawerDescription({
|
|
|
2115
2326
|
className,
|
|
2116
2327
|
...props
|
|
2117
2328
|
}) {
|
|
2118
|
-
return /* @__PURE__ */ (0,
|
|
2119
|
-
|
|
2329
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2330
|
+
import_react_aria_components12.Text,
|
|
2120
2331
|
{
|
|
2121
2332
|
slot: "description",
|
|
2122
2333
|
"data-slot": "drawer-description",
|
|
@@ -2134,281 +2345,29 @@ var SheetHeader = DrawerHeader;
|
|
|
2134
2345
|
var SheetTitle = DrawerTitle;
|
|
2135
2346
|
var SheetTrigger = DrawerTrigger;
|
|
2136
2347
|
|
|
2137
|
-
// src/ui/
|
|
2138
|
-
var
|
|
2139
|
-
function FilterBar({ className, ...props }) {
|
|
2140
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2141
|
-
"div",
|
|
2142
|
-
{
|
|
2143
|
-
"data-slot": "filter-bar",
|
|
2144
|
-
className: cn("flex flex-wrap items-center gap-2", className),
|
|
2145
|
-
...props
|
|
2146
|
-
}
|
|
2147
|
-
);
|
|
2148
|
-
}
|
|
2149
|
-
function FilterGroup({ className, ...props }) {
|
|
2150
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2151
|
-
"div",
|
|
2152
|
-
{
|
|
2153
|
-
"data-slot": "filter-group",
|
|
2154
|
-
className: cn("flex flex-wrap items-center gap-2", className),
|
|
2155
|
-
...props
|
|
2156
|
-
}
|
|
2157
|
-
);
|
|
2158
|
-
}
|
|
2159
|
-
function ActiveFilters({ className, ...props }) {
|
|
2160
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2161
|
-
"div",
|
|
2162
|
-
{
|
|
2163
|
-
"data-slot": "active-filters",
|
|
2164
|
-
"aria-label": "Filtros activos",
|
|
2165
|
-
className: cn("flex flex-wrap items-center gap-1.5", className),
|
|
2166
|
-
...props
|
|
2167
|
-
}
|
|
2168
|
-
);
|
|
2169
|
-
}
|
|
2170
|
-
function FilterChip({
|
|
2171
|
-
children,
|
|
2172
|
-
onRemove,
|
|
2173
|
-
...props
|
|
2174
|
-
}) {
|
|
2175
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Button, { size: "sm", variant: "outline", onPress: onRemove, ...props, children: [
|
|
2176
|
-
children,
|
|
2177
|
-
" \xD7"
|
|
2178
|
-
] });
|
|
2179
|
-
}
|
|
2180
|
-
function SelectionToolbar({
|
|
2181
|
-
count,
|
|
2182
|
-
className,
|
|
2183
|
-
children,
|
|
2184
|
-
...props
|
|
2185
|
-
}) {
|
|
2186
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
2187
|
-
"div",
|
|
2188
|
-
{
|
|
2189
|
-
"data-slot": "selection-toolbar",
|
|
2190
|
-
className: cn(
|
|
2191
|
-
"flex flex-wrap items-center justify-between gap-2 rounded-lg border bg-muted/40 p-2",
|
|
2192
|
-
className
|
|
2193
|
-
),
|
|
2194
|
-
...props,
|
|
2195
|
-
children: [
|
|
2196
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("output", { "aria-live": "polite", className: "text-sm font-medium", children: [
|
|
2197
|
-
count,
|
|
2198
|
-
" seleccionados"
|
|
2199
|
-
] }),
|
|
2200
|
-
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex items-center gap-2", children })
|
|
2201
|
-
]
|
|
2202
|
-
}
|
|
2203
|
-
);
|
|
2204
|
-
}
|
|
2205
|
-
function DescriptionList({ className, ...props }) {
|
|
2206
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2207
|
-
"dl",
|
|
2208
|
-
{
|
|
2209
|
-
"data-slot": "description-list",
|
|
2210
|
-
className: cn("grid gap-x-6 gap-y-4 sm:grid-cols-2", className),
|
|
2211
|
-
...props
|
|
2212
|
-
}
|
|
2213
|
-
);
|
|
2214
|
-
}
|
|
2215
|
-
function DescriptionItem({ className, ...props }) {
|
|
2216
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { "data-slot": "description-item", className: cn("min-w-0", className), ...props });
|
|
2217
|
-
}
|
|
2218
|
-
function DescriptionTerm({ className, ...props }) {
|
|
2219
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2220
|
-
"dt",
|
|
2221
|
-
{
|
|
2222
|
-
"data-slot": "description-term",
|
|
2223
|
-
className: cn("text-xs font-medium text-muted-foreground", className),
|
|
2224
|
-
...props
|
|
2225
|
-
}
|
|
2226
|
-
);
|
|
2227
|
-
}
|
|
2228
|
-
function DescriptionDetails({ className, ...props }) {
|
|
2229
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2230
|
-
"dd",
|
|
2231
|
-
{
|
|
2232
|
-
"data-slot": "description-details",
|
|
2233
|
-
className: cn("mt-1 wrap-break-word text-sm", className),
|
|
2234
|
-
...props
|
|
2235
|
-
}
|
|
2236
|
-
);
|
|
2237
|
-
}
|
|
2238
|
-
function DataViewState({ className, ...props }) {
|
|
2239
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2240
|
-
"section",
|
|
2241
|
-
{
|
|
2242
|
-
"data-slot": "data-view-state",
|
|
2243
|
-
className: cn(
|
|
2244
|
-
"flex min-h-40 flex-col items-center justify-center gap-3 rounded-xl border p-6 text-center",
|
|
2245
|
-
className
|
|
2246
|
-
),
|
|
2247
|
-
...props
|
|
2248
|
-
}
|
|
2249
|
-
);
|
|
2250
|
-
}
|
|
2251
|
-
function DataViewStateTitle({ children, className, ...props }) {
|
|
2252
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { "data-slot": "data-view-state-title", className: cn("font-semibold", className), ...props, children });
|
|
2253
|
-
}
|
|
2254
|
-
function DataViewStateDescription({ className, ...props }) {
|
|
2255
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2256
|
-
"p",
|
|
2257
|
-
{
|
|
2258
|
-
"data-slot": "data-view-state-description",
|
|
2259
|
-
className: cn("text-sm text-muted-foreground", className),
|
|
2260
|
-
...props
|
|
2261
|
-
}
|
|
2262
|
-
);
|
|
2263
|
-
}
|
|
2264
|
-
function DataViewStateActions({ className, ...props }) {
|
|
2265
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2266
|
-
"div",
|
|
2267
|
-
{
|
|
2268
|
-
"data-slot": "data-view-state-actions",
|
|
2269
|
-
className: cn("flex items-center gap-2", className),
|
|
2270
|
-
...props
|
|
2271
|
-
}
|
|
2272
|
-
);
|
|
2273
|
-
}
|
|
2274
|
-
function MetricGrid({ className, ...props }) {
|
|
2275
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2276
|
-
"div",
|
|
2277
|
-
{
|
|
2278
|
-
"data-slot": "metric-grid",
|
|
2279
|
-
className: cn("grid gap-4 sm:grid-cols-2 xl:grid-cols-4", className),
|
|
2280
|
-
...props
|
|
2281
|
-
}
|
|
2282
|
-
);
|
|
2283
|
-
}
|
|
2348
|
+
// src/ui/detail-drawer/detail-drawer.tsx
|
|
2349
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2284
2350
|
function DetailDrawer({ children, ...props }) {
|
|
2285
|
-
return /* @__PURE__ */ (0,
|
|
2351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DrawerContent, { ...props, children });
|
|
2286
2352
|
}
|
|
2287
2353
|
function DetailDrawerBody({ className, ...props }) {
|
|
2288
|
-
return /* @__PURE__ */ (0,
|
|
2354
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2289
2355
|
"div",
|
|
2290
2356
|
{
|
|
2291
2357
|
"data-slot": "detail-drawer-body",
|
|
2292
2358
|
className: cn("min-h-0 flex-1 overflow-y-auto px-4", className),
|
|
2293
|
-
...props
|
|
2294
|
-
}
|
|
2295
|
-
);
|
|
2296
|
-
}
|
|
2297
|
-
|
|
2298
|
-
// src/ui/confirm-dialog/confirm-dialog.tsx
|
|
2299
|
-
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2300
|
-
function ConfirmDialog({
|
|
2301
|
-
open,
|
|
2302
|
-
onOpenChange,
|
|
2303
|
-
title,
|
|
2304
|
-
description,
|
|
2305
|
-
confirmLabel = "Confirmar",
|
|
2306
|
-
cancelLabel = "Cancelar",
|
|
2307
|
-
destructive = false,
|
|
2308
|
-
pending = false,
|
|
2309
|
-
onConfirm
|
|
2310
|
-
}) {
|
|
2311
|
-
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2312
|
-
AlertDialog,
|
|
2313
|
-
{
|
|
2314
|
-
open,
|
|
2315
|
-
onOpenChange: (nextOpen) => {
|
|
2316
|
-
if (!pending || nextOpen) onOpenChange(nextOpen);
|
|
2317
|
-
},
|
|
2318
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(AlertDialogContent, { children: [
|
|
2319
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(AlertDialogHeader, { children: [
|
|
2320
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AlertDialogTitle, { children: title }),
|
|
2321
|
-
description ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AlertDialogDescription, { children: description }) : null
|
|
2322
|
-
] }),
|
|
2323
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(AlertDialogFooter, { children: [
|
|
2324
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Button, { variant: "outline", isDisabled: pending, onPress: () => onOpenChange(false), children: cancelLabel }),
|
|
2325
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2326
|
-
Button,
|
|
2327
|
-
{
|
|
2328
|
-
variant: destructive ? "destructive" : "default",
|
|
2329
|
-
isDisabled: pending,
|
|
2330
|
-
onPress: onConfirm,
|
|
2331
|
-
children: confirmLabel
|
|
2332
|
-
}
|
|
2333
|
-
)
|
|
2334
|
-
] })
|
|
2335
|
-
] })
|
|
2336
|
-
}
|
|
2337
|
-
);
|
|
2338
|
-
}
|
|
2339
|
-
|
|
2340
|
-
// src/ui/copy-button/copy-button.tsx
|
|
2341
|
-
var import_lucide_react5 = require("lucide-react");
|
|
2342
|
-
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
2343
|
-
function CopyButton({
|
|
2344
|
-
value,
|
|
2345
|
-
children,
|
|
2346
|
-
copiedLabel = "Copiado",
|
|
2347
|
-
resetMs,
|
|
2348
|
-
onCopied,
|
|
2349
|
-
onCopyError,
|
|
2350
|
-
...props
|
|
2351
|
-
}) {
|
|
2352
|
-
const { copy, status } = useClipboard({ resetMs, onError: onCopyError });
|
|
2353
|
-
const copied = status === "copied";
|
|
2354
|
-
const label = copied ? copiedLabel : children ?? "Copiar";
|
|
2355
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
2356
|
-
Button,
|
|
2357
|
-
{
|
|
2358
|
-
"aria-label": typeof label === "string" ? label : void 0,
|
|
2359
|
-
onPress: () => {
|
|
2360
|
-
void copy(value).then((wasCopied) => {
|
|
2361
|
-
if (wasCopied) onCopied?.(value);
|
|
2362
|
-
});
|
|
2363
|
-
},
|
|
2364
|
-
...props,
|
|
2365
|
-
children: [
|
|
2366
|
-
copied ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react5.Check, { "aria-hidden": "true", className: "size-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react5.Copy, { "aria-hidden": "true", className: "size-3.5" }),
|
|
2367
|
-
label
|
|
2368
|
-
]
|
|
2359
|
+
...props
|
|
2369
2360
|
}
|
|
2370
2361
|
);
|
|
2371
2362
|
}
|
|
2372
2363
|
|
|
2373
|
-
// src/ui/danger-zone/danger-zone.tsx
|
|
2374
|
-
var import_lucide_react6 = require("lucide-react");
|
|
2375
|
-
var import_react_aria_components12 = require("react-aria-components");
|
|
2376
|
-
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2377
|
-
function DangerZone({
|
|
2378
|
-
title = "Zona de peligro",
|
|
2379
|
-
description = "Acciones irreversibles. \xC1brela solo si est\xE1s seguro.",
|
|
2380
|
-
defaultOpen = false,
|
|
2381
|
-
className,
|
|
2382
|
-
children
|
|
2383
|
-
}) {
|
|
2384
|
-
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_aria_components12.Disclosure, { defaultExpanded: defaultOpen, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Card, { className: cn("border-destructive/30", className), children: [
|
|
2385
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_aria_components12.Heading, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
2386
|
-
import_react_aria_components12.Button,
|
|
2387
|
-
{
|
|
2388
|
-
slot: "trigger",
|
|
2389
|
-
"data-slot": "danger-zone-trigger",
|
|
2390
|
-
className: "group/danger focus-visible:ring-ring/50 flex w-full items-center gap-3 px-4 text-left outline-none focus-visible:ring-3",
|
|
2391
|
-
children: [
|
|
2392
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react6.ShieldAlert, { className: "text-destructive size-4 shrink-0" }),
|
|
2393
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: "flex flex-1 flex-col gap-0.5", children: [
|
|
2394
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "font-heading text-destructive text-base leading-snug font-medium", children: title }),
|
|
2395
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-muted-foreground text-xs", children: description })
|
|
2396
|
-
] }),
|
|
2397
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react6.ChevronDown, { className: "text-muted-foreground size-4 shrink-0 transition-transform group-aria-expanded/danger:rotate-180" })
|
|
2398
|
-
]
|
|
2399
|
-
}
|
|
2400
|
-
) }),
|
|
2401
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_aria_components12.DisclosurePanel, { "data-slot": "danger-zone-content", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CardContent, { children }) })
|
|
2402
|
-
] }) });
|
|
2403
|
-
}
|
|
2404
|
-
|
|
2405
2364
|
// src/ui/doc-preview/doc-preview.tsx
|
|
2406
2365
|
var import_lucide_react7 = require("lucide-react");
|
|
2407
|
-
var
|
|
2366
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2408
2367
|
function DocPreview({ url, mimeType, name }) {
|
|
2409
|
-
if (!url) return /* @__PURE__ */ (0,
|
|
2368
|
+
if (!url) return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Fallback, { mimeType, reason: "no-url" });
|
|
2410
2369
|
if (mimeType === "application/pdf" || mimeType === "text/plain" || mimeType === "text/csv") {
|
|
2411
|
-
return /* @__PURE__ */ (0,
|
|
2370
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2412
2371
|
"iframe",
|
|
2413
2372
|
{
|
|
2414
2373
|
src: url,
|
|
@@ -2419,9 +2378,9 @@ function DocPreview({ url, mimeType, name }) {
|
|
|
2419
2378
|
);
|
|
2420
2379
|
}
|
|
2421
2380
|
if (mimeType?.startsWith("image/")) {
|
|
2422
|
-
return /* @__PURE__ */ (0,
|
|
2381
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "bg-muted/30 flex justify-center rounded-sm p-6", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: url, alt: name, className: "max-h-[75vh] max-w-full rounded object-contain" }) });
|
|
2423
2382
|
}
|
|
2424
|
-
return /* @__PURE__ */ (0,
|
|
2383
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Fallback, { mimeType, reason: "unsupported" });
|
|
2425
2384
|
}
|
|
2426
2385
|
function Fallback({
|
|
2427
2386
|
mimeType,
|
|
@@ -2429,11 +2388,11 @@ function Fallback({
|
|
|
2429
2388
|
}) {
|
|
2430
2389
|
const Icon = mimeType?.startsWith("image/") ? import_lucide_react7.Image : import_lucide_react7.FileText;
|
|
2431
2390
|
const message = reason === "no-url" ? "No se pudo generar la URL de preview." : "Preview no disponible para este tipo de archivo.";
|
|
2432
|
-
return /* @__PURE__ */ (0,
|
|
2433
|
-
/* @__PURE__ */ (0,
|
|
2434
|
-
/* @__PURE__ */ (0,
|
|
2435
|
-
mimeType ? /* @__PURE__ */ (0,
|
|
2436
|
-
/* @__PURE__ */ (0,
|
|
2391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "text-muted-foreground flex flex-col items-center justify-center gap-2 py-14", children: [
|
|
2392
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { className: "size-9 opacity-30" }),
|
|
2393
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-sm", children: message }),
|
|
2394
|
+
mimeType ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "font-mono text-xs opacity-50", children: mimeType }) : null,
|
|
2395
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs opacity-50", children: "Usa el bot\xF3n Descargar para abrir el archivo." })
|
|
2437
2396
|
] });
|
|
2438
2397
|
}
|
|
2439
2398
|
|
|
@@ -2442,9 +2401,9 @@ var import_class_variance_authority6 = require("class-variance-authority");
|
|
|
2442
2401
|
var import_lucide_react8 = require("lucide-react");
|
|
2443
2402
|
var React5 = require("react");
|
|
2444
2403
|
var import_react_aria_components13 = require("react-aria-components");
|
|
2445
|
-
var
|
|
2404
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2446
2405
|
function DropdownMenuTrigger({ ...props }) {
|
|
2447
|
-
return /* @__PURE__ */ (0,
|
|
2406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_aria_components13.MenuTrigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
2448
2407
|
}
|
|
2449
2408
|
function DropdownMenuContent({
|
|
2450
2409
|
"data-slot": dataSlot = "dropdown-menu-content",
|
|
@@ -2455,7 +2414,7 @@ function DropdownMenuContent({
|
|
|
2455
2414
|
children,
|
|
2456
2415
|
...props
|
|
2457
2416
|
}) {
|
|
2458
|
-
return /* @__PURE__ */ (0,
|
|
2417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2459
2418
|
import_react_aria_components13.Popover,
|
|
2460
2419
|
{
|
|
2461
2420
|
"data-slot": dataSlot,
|
|
@@ -2467,7 +2426,7 @@ function DropdownMenuContent({
|
|
|
2467
2426
|
"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",
|
|
2468
2427
|
className
|
|
2469
2428
|
),
|
|
2470
|
-
children: /* @__PURE__ */ (0,
|
|
2429
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2471
2430
|
import_react_aria_components13.Menu,
|
|
2472
2431
|
{
|
|
2473
2432
|
className: "max-h-[inherit] overflow-x-hidden overflow-y-auto outline-hidden",
|
|
@@ -2479,25 +2438,25 @@ function DropdownMenuContent({
|
|
|
2479
2438
|
);
|
|
2480
2439
|
}
|
|
2481
2440
|
function DropdownMenu(props) {
|
|
2482
|
-
if (!("trigger" in props)) return /* @__PURE__ */ (0,
|
|
2441
|
+
if (!("trigger" in props)) return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuContent, { ...props });
|
|
2483
2442
|
const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
|
|
2484
|
-
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0,
|
|
2485
|
-
return /* @__PURE__ */ (0,
|
|
2443
|
+
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { ...triggerProps, children: trigger }) : trigger;
|
|
2444
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DropdownMenuTrigger, { defaultOpen, isOpen, onOpenChange, children: [
|
|
2486
2445
|
triggerElement,
|
|
2487
|
-
/* @__PURE__ */ (0,
|
|
2446
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DropdownMenuContent, { ...contentProps, children })
|
|
2488
2447
|
] });
|
|
2489
2448
|
}
|
|
2490
2449
|
function DropdownMenuGroup({
|
|
2491
2450
|
...props
|
|
2492
2451
|
}) {
|
|
2493
|
-
return /* @__PURE__ */ (0,
|
|
2452
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_aria_components13.MenuSection, { "data-slot": "dropdown-menu-group", ...props });
|
|
2494
2453
|
}
|
|
2495
2454
|
function DropdownMenuLabel({
|
|
2496
2455
|
className,
|
|
2497
2456
|
inset,
|
|
2498
2457
|
...props
|
|
2499
2458
|
}) {
|
|
2500
|
-
return /* @__PURE__ */ (0,
|
|
2459
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2501
2460
|
import_react_aria_components13.Header,
|
|
2502
2461
|
{
|
|
2503
2462
|
"data-slot": "dropdown-menu-label",
|
|
@@ -2529,7 +2488,7 @@ function DropdownMenuItem({
|
|
|
2529
2488
|
children,
|
|
2530
2489
|
...props
|
|
2531
2490
|
}) {
|
|
2532
|
-
return /* @__PURE__ */ (0,
|
|
2491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2533
2492
|
import_react_aria_components13.MenuItem,
|
|
2534
2493
|
{
|
|
2535
2494
|
"data-slot": "dropdown-menu-item",
|
|
@@ -2541,13 +2500,13 @@ function DropdownMenuItem({
|
|
|
2541
2500
|
(className2, { selectionMode }) => cn(dropdownMenuItemVariants({ selectionMode }), className2)
|
|
2542
2501
|
),
|
|
2543
2502
|
...props,
|
|
2544
|
-
children: (0, import_react_aria_components13.composeRenderProps)(children, (children2, { isSelected, selectionMode }) => /* @__PURE__ */ (0,
|
|
2545
|
-
selectionMode !== "none" ? /* @__PURE__ */ (0,
|
|
2503
|
+
children: (0, import_react_aria_components13.composeRenderProps)(children, (children2, { isSelected, selectionMode }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
|
|
2504
|
+
selectionMode !== "none" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2546
2505
|
"span",
|
|
2547
2506
|
{
|
|
2548
2507
|
className: "pointer-events-none absolute right-2 flex items-center justify-center",
|
|
2549
2508
|
"data-slot": selectionMode === "single" ? "dropdown-menu-radio-item-indicator" : "dropdown-menu-checkbox-item-indicator",
|
|
2550
|
-
children: isSelected ? /* @__PURE__ */ (0,
|
|
2509
|
+
children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react8.CheckIcon, {}) : null
|
|
2551
2510
|
}
|
|
2552
2511
|
) : null,
|
|
2553
2512
|
children2
|
|
@@ -2556,7 +2515,7 @@ function DropdownMenuItem({
|
|
|
2556
2515
|
);
|
|
2557
2516
|
}
|
|
2558
2517
|
function DropdownMenuSub({ ...props }) {
|
|
2559
|
-
return /* @__PURE__ */ (0,
|
|
2518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_aria_components13.SubmenuTrigger, { "data-slot": "dropdown-menu-sub", ...props });
|
|
2560
2519
|
}
|
|
2561
2520
|
function DropdownMenuSubTrigger({
|
|
2562
2521
|
className,
|
|
@@ -2564,7 +2523,7 @@ function DropdownMenuSubTrigger({
|
|
|
2564
2523
|
children,
|
|
2565
2524
|
...props
|
|
2566
2525
|
}) {
|
|
2567
|
-
return /* @__PURE__ */ (0,
|
|
2526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2568
2527
|
import_react_aria_components13.MenuItem,
|
|
2569
2528
|
{
|
|
2570
2529
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -2575,9 +2534,9 @@ function DropdownMenuSubTrigger({
|
|
|
2575
2534
|
className
|
|
2576
2535
|
),
|
|
2577
2536
|
...props,
|
|
2578
|
-
children: (0, import_react_aria_components13.composeRenderProps)(children, (children2) => /* @__PURE__ */ (0,
|
|
2537
|
+
children: (0, import_react_aria_components13.composeRenderProps)(children, (children2) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
|
|
2579
2538
|
children2,
|
|
2580
|
-
/* @__PURE__ */ (0,
|
|
2539
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react8.ChevronRightIcon, { className: "cn-rtl-flip ml-auto" })
|
|
2581
2540
|
] }))
|
|
2582
2541
|
}
|
|
2583
2542
|
);
|
|
@@ -2589,7 +2548,7 @@ function DropdownMenuSubContent({
|
|
|
2589
2548
|
className,
|
|
2590
2549
|
...props
|
|
2591
2550
|
}) {
|
|
2592
|
-
return /* @__PURE__ */ (0,
|
|
2551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2593
2552
|
DropdownMenuContent,
|
|
2594
2553
|
{
|
|
2595
2554
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -2608,7 +2567,7 @@ function DropdownMenuSeparator({
|
|
|
2608
2567
|
className,
|
|
2609
2568
|
...props
|
|
2610
2569
|
}) {
|
|
2611
|
-
return /* @__PURE__ */ (0,
|
|
2570
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2612
2571
|
import_react_aria_components13.Separator,
|
|
2613
2572
|
{
|
|
2614
2573
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -2618,7 +2577,7 @@ function DropdownMenuSeparator({
|
|
|
2618
2577
|
);
|
|
2619
2578
|
}
|
|
2620
2579
|
function DropdownMenuShortcut({ className, ...props }) {
|
|
2621
|
-
return /* @__PURE__ */ (0,
|
|
2580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2622
2581
|
"span",
|
|
2623
2582
|
{
|
|
2624
2583
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -2647,9 +2606,9 @@ var emptyStateMediaVariants = (0, import_class_variance_authority7.cva)(
|
|
|
2647
2606
|
);
|
|
2648
2607
|
|
|
2649
2608
|
// src/ui/empty-state/empty-state.tsx
|
|
2650
|
-
var
|
|
2609
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2651
2610
|
function EmptyState({ className, ...props }) {
|
|
2652
|
-
return /* @__PURE__ */ (0,
|
|
2611
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2653
2612
|
"div",
|
|
2654
2613
|
{
|
|
2655
2614
|
"data-slot": "empty-state",
|
|
@@ -2662,7 +2621,7 @@ function EmptyState({ className, ...props }) {
|
|
|
2662
2621
|
);
|
|
2663
2622
|
}
|
|
2664
2623
|
function EmptyStateHeader({ className, ...props }) {
|
|
2665
|
-
return /* @__PURE__ */ (0,
|
|
2624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2666
2625
|
"div",
|
|
2667
2626
|
{
|
|
2668
2627
|
"data-slot": "empty-state-header",
|
|
@@ -2676,7 +2635,7 @@ function EmptyStateMedia({
|
|
|
2676
2635
|
variant = "default",
|
|
2677
2636
|
...props
|
|
2678
2637
|
}) {
|
|
2679
|
-
return /* @__PURE__ */ (0,
|
|
2638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2680
2639
|
"div",
|
|
2681
2640
|
{
|
|
2682
2641
|
"data-slot": "empty-state-media",
|
|
@@ -2687,7 +2646,7 @@ function EmptyStateMedia({
|
|
|
2687
2646
|
);
|
|
2688
2647
|
}
|
|
2689
2648
|
function EmptyStateTitle({ className, children, ...props }) {
|
|
2690
|
-
return /* @__PURE__ */ (0,
|
|
2649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2691
2650
|
"h3",
|
|
2692
2651
|
{
|
|
2693
2652
|
"data-slot": "empty-state-title",
|
|
@@ -2698,7 +2657,7 @@ function EmptyStateTitle({ className, children, ...props }) {
|
|
|
2698
2657
|
);
|
|
2699
2658
|
}
|
|
2700
2659
|
function EmptyStateDescription({ className, ...props }) {
|
|
2701
|
-
return /* @__PURE__ */ (0,
|
|
2660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2702
2661
|
"p",
|
|
2703
2662
|
{
|
|
2704
2663
|
"data-slot": "empty-state-description",
|
|
@@ -2711,7 +2670,7 @@ function EmptyStateDescription({ className, ...props }) {
|
|
|
2711
2670
|
);
|
|
2712
2671
|
}
|
|
2713
2672
|
function EmptyStateContent({ className, ...props }) {
|
|
2714
|
-
return /* @__PURE__ */ (0,
|
|
2673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2715
2674
|
"div",
|
|
2716
2675
|
{
|
|
2717
2676
|
"data-slot": "empty-state-content",
|
|
@@ -2729,9 +2688,9 @@ var import_react9 = require("react");
|
|
|
2729
2688
|
|
|
2730
2689
|
// src/ui/error-state/error-state.tsx
|
|
2731
2690
|
var import_lucide_react9 = require("lucide-react");
|
|
2732
|
-
var
|
|
2691
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2733
2692
|
function ErrorState({ className, ...props }) {
|
|
2734
|
-
return /* @__PURE__ */ (0,
|
|
2693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2735
2694
|
"section",
|
|
2736
2695
|
{
|
|
2737
2696
|
"data-slot": "error-state",
|
|
@@ -2748,7 +2707,7 @@ function ErrorStateIcon({
|
|
|
2748
2707
|
className,
|
|
2749
2708
|
...props
|
|
2750
2709
|
}) {
|
|
2751
|
-
return /* @__PURE__ */ (0,
|
|
2710
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2752
2711
|
import_lucide_react9.AlertCircle,
|
|
2753
2712
|
{
|
|
2754
2713
|
"data-slot": "error-state-icon",
|
|
@@ -2759,7 +2718,7 @@ function ErrorStateIcon({
|
|
|
2759
2718
|
);
|
|
2760
2719
|
}
|
|
2761
2720
|
function ErrorStateTitle({ className, ...props }) {
|
|
2762
|
-
return /* @__PURE__ */ (0,
|
|
2721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2763
2722
|
"h2",
|
|
2764
2723
|
{
|
|
2765
2724
|
"data-slot": "error-state-title",
|
|
@@ -2769,7 +2728,7 @@ function ErrorStateTitle({ className, ...props }) {
|
|
|
2769
2728
|
);
|
|
2770
2729
|
}
|
|
2771
2730
|
function ErrorStateDescription({ className, ...props }) {
|
|
2772
|
-
return /* @__PURE__ */ (0,
|
|
2731
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2773
2732
|
"p",
|
|
2774
2733
|
{
|
|
2775
2734
|
"data-slot": "error-state-description",
|
|
@@ -2779,7 +2738,7 @@ function ErrorStateDescription({ className, ...props }) {
|
|
|
2779
2738
|
);
|
|
2780
2739
|
}
|
|
2781
2740
|
function ErrorStateActions({ className, ...props }) {
|
|
2782
|
-
return /* @__PURE__ */ (0,
|
|
2741
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2783
2742
|
"div",
|
|
2784
2743
|
{
|
|
2785
2744
|
"data-slot": "error-state-actions",
|
|
@@ -2790,17 +2749,20 @@ function ErrorStateActions({ className, ...props }) {
|
|
|
2790
2749
|
}
|
|
2791
2750
|
|
|
2792
2751
|
// src/ui/error-boundary/error-boundary.tsx
|
|
2793
|
-
var
|
|
2752
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2753
|
+
function normalizeError(cause) {
|
|
2754
|
+
return cause instanceof Error ? cause : new Error("No se pudo renderizar este contenido.", { cause });
|
|
2755
|
+
}
|
|
2794
2756
|
function changedResetKeys(previous = [], next = []) {
|
|
2795
2757
|
return previous.length !== next.length || previous.some((value, index) => !Object.is(value, next[index]));
|
|
2796
2758
|
}
|
|
2797
2759
|
var Boundary = class extends import_react9.Component {
|
|
2798
2760
|
state = { error: null };
|
|
2799
2761
|
static getDerivedStateFromError(error) {
|
|
2800
|
-
return { error };
|
|
2762
|
+
return { error: normalizeError(error) };
|
|
2801
2763
|
}
|
|
2802
2764
|
componentDidCatch(error, info) {
|
|
2803
|
-
this.props.onError?.(error, info);
|
|
2765
|
+
this.props.onError?.(this.state.error ?? normalizeError(error), info);
|
|
2804
2766
|
}
|
|
2805
2767
|
componentDidUpdate(previousProps) {
|
|
2806
2768
|
if (this.state.error && changedResetKeys(previousProps.resetKeys, this.props.resetKeys))
|
|
@@ -2812,32 +2774,32 @@ var Boundary = class extends import_react9.Component {
|
|
|
2812
2774
|
if (!this.state.error) return children;
|
|
2813
2775
|
if (typeof fallback === "function")
|
|
2814
2776
|
return fallback({ error: this.state.error, reset: this.reset });
|
|
2815
|
-
if (fallback) return fallback;
|
|
2816
|
-
return /* @__PURE__ */ (0,
|
|
2817
|
-
/* @__PURE__ */ (0,
|
|
2818
|
-
/* @__PURE__ */ (0,
|
|
2819
|
-
/* @__PURE__ */ (0,
|
|
2820
|
-
/* @__PURE__ */ (0,
|
|
2777
|
+
if (fallback !== void 0) return fallback;
|
|
2778
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(ErrorState, { children: [
|
|
2779
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ErrorStateIcon, {}),
|
|
2780
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ErrorStateTitle, { children: "No se pudo cargar este contenido" }),
|
|
2781
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ErrorStateDescription, { children: "Prueba a cargarlo de nuevo." }),
|
|
2782
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ErrorStateActions, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { onPress: this.reset, children: "Reintentar" }) })
|
|
2821
2783
|
] });
|
|
2822
2784
|
}
|
|
2823
2785
|
};
|
|
2824
2786
|
function ErrorBoundary(props) {
|
|
2825
|
-
return /* @__PURE__ */ (0,
|
|
2787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Boundary, { ...props });
|
|
2826
2788
|
}
|
|
2827
2789
|
function AsyncBoundary({
|
|
2828
2790
|
pending = null,
|
|
2829
2791
|
...props
|
|
2830
2792
|
}) {
|
|
2831
|
-
return /* @__PURE__ */ (0,
|
|
2793
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(ErrorBoundary, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react9.Suspense, { fallback: pending, children: props.children }) });
|
|
2832
2794
|
}
|
|
2833
2795
|
|
|
2834
2796
|
// src/ui/label/label.tsx
|
|
2835
2797
|
var import_react10 = require("react");
|
|
2836
2798
|
var import_react_aria_components14 = require("react-aria-components");
|
|
2837
|
-
var
|
|
2799
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
2838
2800
|
var Label2 = (0, import_react10.forwardRef)(
|
|
2839
2801
|
function Label3({ className, ...props }, ref) {
|
|
2840
|
-
return /* @__PURE__ */ (0,
|
|
2802
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
2841
2803
|
import_react_aria_components14.Label,
|
|
2842
2804
|
{
|
|
2843
2805
|
ref,
|
|
@@ -2869,16 +2831,16 @@ var fieldVariants = (0, import_class_variance_authority8.cva)(
|
|
|
2869
2831
|
);
|
|
2870
2832
|
|
|
2871
2833
|
// src/ui/field/field.tsx
|
|
2872
|
-
var
|
|
2834
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
2873
2835
|
function FieldSet({ className, ...props }) {
|
|
2874
|
-
return /* @__PURE__ */ (0,
|
|
2836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("fieldset", { "data-slot": "field-set", className: cn("flex flex-col gap-4", className), ...props });
|
|
2875
2837
|
}
|
|
2876
2838
|
function FieldLegend({
|
|
2877
2839
|
className,
|
|
2878
2840
|
variant = "legend",
|
|
2879
2841
|
...props
|
|
2880
2842
|
}) {
|
|
2881
|
-
return /* @__PURE__ */ (0,
|
|
2843
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2882
2844
|
"legend",
|
|
2883
2845
|
{
|
|
2884
2846
|
"data-slot": "field-legend",
|
|
@@ -2892,7 +2854,7 @@ function FieldLegend({
|
|
|
2892
2854
|
);
|
|
2893
2855
|
}
|
|
2894
2856
|
function FieldGroup({ className, ...props }) {
|
|
2895
|
-
return /* @__PURE__ */ (0,
|
|
2857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2896
2858
|
"div",
|
|
2897
2859
|
{
|
|
2898
2860
|
"data-slot": "field-group",
|
|
@@ -2907,7 +2869,7 @@ function FieldGroup({ className, ...props }) {
|
|
|
2907
2869
|
function Field({ className, orientation = "vertical", ...props }) {
|
|
2908
2870
|
return (
|
|
2909
2871
|
// biome-ignore lint/a11y/useSemanticElements: FieldSet provides native fieldset semantics when they are appropriate.
|
|
2910
|
-
/* @__PURE__ */ (0,
|
|
2872
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2911
2873
|
"div",
|
|
2912
2874
|
{
|
|
2913
2875
|
role: "group",
|
|
@@ -2920,7 +2882,7 @@ function Field({ className, orientation = "vertical", ...props }) {
|
|
|
2920
2882
|
);
|
|
2921
2883
|
}
|
|
2922
2884
|
function FieldContent({ className, ...props }) {
|
|
2923
|
-
return /* @__PURE__ */ (0,
|
|
2885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2924
2886
|
"div",
|
|
2925
2887
|
{
|
|
2926
2888
|
"data-slot": "field-content",
|
|
@@ -2930,7 +2892,7 @@ function FieldContent({ className, ...props }) {
|
|
|
2930
2892
|
);
|
|
2931
2893
|
}
|
|
2932
2894
|
function FieldLabel({ className, ...props }) {
|
|
2933
|
-
return /* @__PURE__ */ (0,
|
|
2895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2934
2896
|
Label2,
|
|
2935
2897
|
{
|
|
2936
2898
|
"data-slot": "field-label",
|
|
@@ -2943,7 +2905,7 @@ function FieldLabel({ className, ...props }) {
|
|
|
2943
2905
|
);
|
|
2944
2906
|
}
|
|
2945
2907
|
function FieldTitle({ className, ...props }) {
|
|
2946
|
-
return /* @__PURE__ */ (0,
|
|
2908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2947
2909
|
"div",
|
|
2948
2910
|
{
|
|
2949
2911
|
"data-slot": "field-title",
|
|
@@ -2953,7 +2915,7 @@ function FieldTitle({ className, ...props }) {
|
|
|
2953
2915
|
);
|
|
2954
2916
|
}
|
|
2955
2917
|
function FieldDescription({ className, ...props }) {
|
|
2956
|
-
return /* @__PURE__ */ (0,
|
|
2918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2957
2919
|
"p",
|
|
2958
2920
|
{
|
|
2959
2921
|
"data-slot": "field-description",
|
|
@@ -2966,7 +2928,7 @@ function FieldDescription({ className, ...props }) {
|
|
|
2966
2928
|
);
|
|
2967
2929
|
}
|
|
2968
2930
|
function FieldSeparator({ className, children, ...props }) {
|
|
2969
|
-
return /* @__PURE__ */ (0,
|
|
2931
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
2970
2932
|
"div",
|
|
2971
2933
|
{
|
|
2972
2934
|
"data-slot": "field-separator",
|
|
@@ -2974,8 +2936,8 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
2974
2936
|
className: cn("relative -my-2 h-5 text-sm", className),
|
|
2975
2937
|
...props,
|
|
2976
2938
|
children: [
|
|
2977
|
-
/* @__PURE__ */ (0,
|
|
2978
|
-
children ? /* @__PURE__ */ (0,
|
|
2939
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
|
|
2940
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2979
2941
|
"span",
|
|
2980
2942
|
{
|
|
2981
2943
|
"data-slot": "field-separator-content",
|
|
@@ -2989,9 +2951,9 @@ function FieldSeparator({ className, children, ...props }) {
|
|
|
2989
2951
|
}
|
|
2990
2952
|
function FieldError2({ className, children, errors, ...props }) {
|
|
2991
2953
|
const messages = [...new Set(errors?.flatMap((error) => error?.message ?? []) ?? [])];
|
|
2992
|
-
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ (0,
|
|
2954
|
+
const content = children ?? (messages.length === 1 ? messages[0] : messages.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("ul", { className: "ml-4 list-disc", children: messages.map((message) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { children: message }, message)) }) : null);
|
|
2993
2955
|
if (!content) return null;
|
|
2994
|
-
return /* @__PURE__ */ (0,
|
|
2956
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
2995
2957
|
"div",
|
|
2996
2958
|
{
|
|
2997
2959
|
role: "alert",
|
|
@@ -3003,9 +2965,53 @@ function FieldError2({ className, children, errors, ...props }) {
|
|
|
3003
2965
|
);
|
|
3004
2966
|
}
|
|
3005
2967
|
|
|
2968
|
+
// src/ui/filter-bar/filter-bar.tsx
|
|
2969
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
2970
|
+
function FilterBar({ className, ...props }) {
|
|
2971
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2972
|
+
"div",
|
|
2973
|
+
{
|
|
2974
|
+
"data-slot": "filter-bar",
|
|
2975
|
+
className: cn("flex flex-wrap items-center gap-2", className),
|
|
2976
|
+
...props
|
|
2977
|
+
}
|
|
2978
|
+
);
|
|
2979
|
+
}
|
|
2980
|
+
function FilterGroup({ className, ...props }) {
|
|
2981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2982
|
+
"div",
|
|
2983
|
+
{
|
|
2984
|
+
"data-slot": "filter-group",
|
|
2985
|
+
className: cn("flex flex-wrap items-center gap-2", className),
|
|
2986
|
+
...props
|
|
2987
|
+
}
|
|
2988
|
+
);
|
|
2989
|
+
}
|
|
2990
|
+
function ActiveFilters({ className, ...props }) {
|
|
2991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
2992
|
+
"div",
|
|
2993
|
+
{
|
|
2994
|
+
"data-slot": "active-filters",
|
|
2995
|
+
"aria-label": "Filtros activos",
|
|
2996
|
+
className: cn("flex flex-wrap items-center gap-1.5", className),
|
|
2997
|
+
...props
|
|
2998
|
+
}
|
|
2999
|
+
);
|
|
3000
|
+
}
|
|
3001
|
+
function FilterChip({
|
|
3002
|
+
children,
|
|
3003
|
+
onRemove,
|
|
3004
|
+
...props
|
|
3005
|
+
}) {
|
|
3006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Button, { size: "sm", variant: "outline", onPress: onRemove, ...props, children: [
|
|
3007
|
+
children,
|
|
3008
|
+
" \xD7"
|
|
3009
|
+
] });
|
|
3010
|
+
}
|
|
3011
|
+
|
|
3006
3012
|
// src/ui/form-feedback/form-feedback.tsx
|
|
3007
3013
|
var import_lucide_react10 = require("lucide-react");
|
|
3008
|
-
var
|
|
3014
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
3009
3015
|
function FormFeedback({
|
|
3010
3016
|
state,
|
|
3011
3017
|
className,
|
|
@@ -3013,10 +3019,10 @@ function FormFeedback({
|
|
|
3013
3019
|
successLabel = "Guardado"
|
|
3014
3020
|
}) {
|
|
3015
3021
|
if (state.status === "idle")
|
|
3016
|
-
return /* @__PURE__ */ (0,
|
|
3022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { "aria-hidden": "true", className: cn("inline-flex h-5 items-center", className) });
|
|
3017
3023
|
const error = state.status === "error";
|
|
3018
3024
|
const success = state.status === "success";
|
|
3019
|
-
return /* @__PURE__ */ (0,
|
|
3025
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
3020
3026
|
"span",
|
|
3021
3027
|
{
|
|
3022
3028
|
role: error ? "alert" : "status",
|
|
@@ -3029,10 +3035,10 @@ function FormFeedback({
|
|
|
3029
3035
|
className
|
|
3030
3036
|
),
|
|
3031
3037
|
children: [
|
|
3032
|
-
state.status === "pending" && /* @__PURE__ */ (0,
|
|
3033
|
-
success && /* @__PURE__ */ (0,
|
|
3034
|
-
error && /* @__PURE__ */ (0,
|
|
3035
|
-
/* @__PURE__ */ (0,
|
|
3038
|
+
state.status === "pending" && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react10.LoaderCircle, { "aria-hidden": "true", className: "size-3.5 animate-spin" }),
|
|
3039
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react10.CheckCircle, { "aria-hidden": "true", className: "size-3.5" }),
|
|
3040
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react10.CircleAlert, { "aria-hidden": "true", className: "size-3.5" }),
|
|
3041
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { children: state.status === "pending" ? pendingLabel : success ? state.message ?? successLabel : state.message })
|
|
3036
3042
|
]
|
|
3037
3043
|
}
|
|
3038
3044
|
);
|
|
@@ -3076,7 +3082,7 @@ function useFormFeedback(options) {
|
|
|
3076
3082
|
}
|
|
3077
3083
|
|
|
3078
3084
|
// src/ui/form-row/form-row.tsx
|
|
3079
|
-
var
|
|
3085
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
3080
3086
|
function FormRow({
|
|
3081
3087
|
label,
|
|
3082
3088
|
htmlFor,
|
|
@@ -3088,17 +3094,17 @@ function FormRow({
|
|
|
3088
3094
|
}) {
|
|
3089
3095
|
const hintId = hint ? `${htmlFor}-hint` : void 0;
|
|
3090
3096
|
const errorId = error ? `${htmlFor}-error` : void 0;
|
|
3091
|
-
return /* @__PURE__ */ (0,
|
|
3092
|
-
/* @__PURE__ */ (0,
|
|
3097
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { "data-slot": "form-row", className: cn("flex flex-col gap-1.5", className), children: [
|
|
3098
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("label", { htmlFor, className: "text-foreground text-sm font-medium", children: [
|
|
3093
3099
|
label,
|
|
3094
|
-
required && /* @__PURE__ */ (0,
|
|
3095
|
-
/* @__PURE__ */ (0,
|
|
3096
|
-
/* @__PURE__ */ (0,
|
|
3100
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
3101
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { "aria-hidden": "true", className: "text-destructive ml-0.5", children: "*" }),
|
|
3102
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "sr-only", children: " (obligatorio)" })
|
|
3097
3103
|
] })
|
|
3098
3104
|
] }),
|
|
3099
3105
|
children,
|
|
3100
|
-
hint && /* @__PURE__ */ (0,
|
|
3101
|
-
error && /* @__PURE__ */ (0,
|
|
3106
|
+
hint && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { id: hintId, className: "text-muted-foreground text-xs", children: hint }),
|
|
3107
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { id: errorId, role: "alert", className: "text-destructive text-xs font-medium", children: error })
|
|
3102
3108
|
] });
|
|
3103
3109
|
}
|
|
3104
3110
|
|
|
@@ -3107,17 +3113,17 @@ var import_react_aria_components16 = require("react-aria-components");
|
|
|
3107
3113
|
|
|
3108
3114
|
// src/ui/tooltip/tooltip.tsx
|
|
3109
3115
|
var import_react_aria_components15 = require("react-aria-components");
|
|
3110
|
-
var
|
|
3116
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
3111
3117
|
function TooltipTrigger({
|
|
3112
3118
|
delay = 0,
|
|
3113
3119
|
...props
|
|
3114
3120
|
}) {
|
|
3115
|
-
return /* @__PURE__ */ (0,
|
|
3121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react_aria_components15.TooltipTrigger, { "data-slot": "tooltip-trigger", delay, ...props });
|
|
3116
3122
|
}
|
|
3117
3123
|
function Tooltip({ label, children, delay, ...props }) {
|
|
3118
|
-
return /* @__PURE__ */ (0,
|
|
3124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(TooltipTrigger, { delay, children: [
|
|
3119
3125
|
children,
|
|
3120
|
-
/* @__PURE__ */ (0,
|
|
3126
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TooltipContent, { ...props, children: label })
|
|
3121
3127
|
] });
|
|
3122
3128
|
}
|
|
3123
3129
|
function TooltipContent({
|
|
@@ -3128,7 +3134,7 @@ function TooltipContent({
|
|
|
3128
3134
|
children,
|
|
3129
3135
|
...props
|
|
3130
3136
|
}) {
|
|
3131
|
-
return /* @__PURE__ */ (0,
|
|
3137
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
3132
3138
|
import_react_aria_components15.Tooltip,
|
|
3133
3139
|
{
|
|
3134
3140
|
"data-slot": "tooltip-content",
|
|
@@ -3142,7 +3148,7 @@ function TooltipContent({
|
|
|
3142
3148
|
...props,
|
|
3143
3149
|
children: [
|
|
3144
3150
|
children,
|
|
3145
|
-
/* @__PURE__ */ (0,
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
3146
3152
|
import_react_aria_components15.OverlayArrow,
|
|
3147
3153
|
{
|
|
3148
3154
|
className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs",
|
|
@@ -3160,7 +3166,7 @@ function TooltipContent({
|
|
|
3160
3166
|
}
|
|
3161
3167
|
|
|
3162
3168
|
// src/ui/icon-button/icon-button.tsx
|
|
3163
|
-
var
|
|
3169
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
3164
3170
|
function IconButton({
|
|
3165
3171
|
label,
|
|
3166
3172
|
children,
|
|
@@ -3170,7 +3176,7 @@ function IconButton({
|
|
|
3170
3176
|
...props
|
|
3171
3177
|
}) {
|
|
3172
3178
|
const linkClassName = cn(buttonVariants({ variant, size: "icon" }), className);
|
|
3173
|
-
return /* @__PURE__ */ (0,
|
|
3179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Tooltip, { label, children: href ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_react_aria_components16.Link, { "data-slot": "icon-button", "aria-label": label, href, className: linkClassName, children }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
3174
3180
|
Button,
|
|
3175
3181
|
{
|
|
3176
3182
|
"data-slot": "icon-button",
|
|
@@ -3190,9 +3196,9 @@ var import_class_variance_authority10 = require("class-variance-authority");
|
|
|
3190
3196
|
// src/ui/input/input.tsx
|
|
3191
3197
|
var import_react12 = require("react");
|
|
3192
3198
|
var import_react_aria_components17 = require("react-aria-components");
|
|
3193
|
-
var
|
|
3199
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
3194
3200
|
var InputImpl = (0, import_react12.forwardRef)(function Input2({ className, type, ...props }, ref) {
|
|
3195
|
-
return /* @__PURE__ */ (0,
|
|
3201
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
3196
3202
|
import_react_aria_components17.Input,
|
|
3197
3203
|
{
|
|
3198
3204
|
ref,
|
|
@@ -3211,9 +3217,9 @@ var Input3 = InputImpl;
|
|
|
3211
3217
|
// src/ui/textarea/textarea.tsx
|
|
3212
3218
|
var import_react13 = require("react");
|
|
3213
3219
|
var import_react_aria_components18 = require("react-aria-components");
|
|
3214
|
-
var
|
|
3220
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
3215
3221
|
var TextareaImpl = (0, import_react13.forwardRef)(function Textarea({ className, ...props }, ref) {
|
|
3216
|
-
return /* @__PURE__ */ (0,
|
|
3222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
3217
3223
|
import_react_aria_components18.TextArea,
|
|
3218
3224
|
{
|
|
3219
3225
|
ref,
|
|
@@ -3246,12 +3252,12 @@ var inputGroupAddonVariants = (0, import_class_variance_authority9.cva)(
|
|
|
3246
3252
|
);
|
|
3247
3253
|
|
|
3248
3254
|
// src/ui/input-group/input-group.tsx
|
|
3249
|
-
var
|
|
3255
|
+
var import_jsx_runtime38 = (
|
|
3250
3256
|
// biome-ignore lint/a11y/useSemanticElements: fieldset cannot preserve this inline control composition.
|
|
3251
3257
|
require("react/jsx-runtime")
|
|
3252
3258
|
);
|
|
3253
3259
|
function InputGroup({ className, ...props }) {
|
|
3254
|
-
return /* @__PURE__ */ (0,
|
|
3260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3255
3261
|
"div",
|
|
3256
3262
|
{
|
|
3257
3263
|
role: "group",
|
|
@@ -3272,7 +3278,7 @@ function InputGroupAddon({
|
|
|
3272
3278
|
}) {
|
|
3273
3279
|
return (
|
|
3274
3280
|
// biome-ignore lint/a11y/useSemanticElements: this addon delegates focus to its associated input.
|
|
3275
|
-
/* @__PURE__ */ (0,
|
|
3281
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3276
3282
|
"div",
|
|
3277
3283
|
{
|
|
3278
3284
|
role: "group",
|
|
@@ -3303,7 +3309,7 @@ function InputGroupButton({
|
|
|
3303
3309
|
...props
|
|
3304
3310
|
}) {
|
|
3305
3311
|
const buttonSize = size === "icon-xs" || size === "icon-sm" ? size : size;
|
|
3306
|
-
return /* @__PURE__ */ (0,
|
|
3312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3307
3313
|
Button,
|
|
3308
3314
|
{
|
|
3309
3315
|
"data-slot": "input-group-button",
|
|
@@ -3316,7 +3322,7 @@ function InputGroupButton({
|
|
|
3316
3322
|
);
|
|
3317
3323
|
}
|
|
3318
3324
|
function InputGroupText({ className, ...props }) {
|
|
3319
|
-
return /* @__PURE__ */ (0,
|
|
3325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3320
3326
|
"span",
|
|
3321
3327
|
{
|
|
3322
3328
|
"data-slot": "input-group-text",
|
|
@@ -3329,7 +3335,7 @@ function InputGroupText({ className, ...props }) {
|
|
|
3329
3335
|
);
|
|
3330
3336
|
}
|
|
3331
3337
|
function InputGroupInput({ className, ...props }) {
|
|
3332
|
-
return /* @__PURE__ */ (0,
|
|
3338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3333
3339
|
Input3,
|
|
3334
3340
|
{
|
|
3335
3341
|
"data-slot": "input-group-control",
|
|
@@ -3342,7 +3348,7 @@ function InputGroupInput({ className, ...props }) {
|
|
|
3342
3348
|
);
|
|
3343
3349
|
}
|
|
3344
3350
|
function InputGroupTextarea({ className, ...props }) {
|
|
3345
|
-
return /* @__PURE__ */ (0,
|
|
3351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
3346
3352
|
Textarea2,
|
|
3347
3353
|
{
|
|
3348
3354
|
"data-slot": "input-group-control",
|
|
@@ -3356,7 +3362,7 @@ function InputGroupTextarea({ className, ...props }) {
|
|
|
3356
3362
|
}
|
|
3357
3363
|
|
|
3358
3364
|
// src/ui/kanban/kanban.tsx
|
|
3359
|
-
var
|
|
3365
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
3360
3366
|
var columnSize = {
|
|
3361
3367
|
compact: "w-56",
|
|
3362
3368
|
default: "w-72",
|
|
@@ -3368,13 +3374,13 @@ function KanbanViewport({
|
|
|
3368
3374
|
contentClassName,
|
|
3369
3375
|
...props
|
|
3370
3376
|
}) {
|
|
3371
|
-
return /* @__PURE__ */ (0,
|
|
3377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3372
3378
|
"div",
|
|
3373
3379
|
{
|
|
3374
3380
|
"data-slot": "kanban-viewport",
|
|
3375
3381
|
className: cn("-mx-1 overflow-x-auto pb-3", className),
|
|
3376
3382
|
...props,
|
|
3377
|
-
children: /* @__PURE__ */ (0,
|
|
3383
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3378
3384
|
"div",
|
|
3379
3385
|
{
|
|
3380
3386
|
"data-slot": "kanban-viewport-content",
|
|
@@ -3390,7 +3396,7 @@ function KanbanColumn({
|
|
|
3390
3396
|
size = "default",
|
|
3391
3397
|
...props
|
|
3392
3398
|
}) {
|
|
3393
|
-
return /* @__PURE__ */ (0,
|
|
3399
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3394
3400
|
"section",
|
|
3395
3401
|
{
|
|
3396
3402
|
"data-slot": "kanban-column",
|
|
@@ -3401,7 +3407,7 @@ function KanbanColumn({
|
|
|
3401
3407
|
);
|
|
3402
3408
|
}
|
|
3403
3409
|
function KanbanColumnHeader({ className, ...props }) {
|
|
3404
|
-
return /* @__PURE__ */ (0,
|
|
3410
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3405
3411
|
"header",
|
|
3406
3412
|
{
|
|
3407
3413
|
"data-slot": "kanban-column-header",
|
|
@@ -3411,7 +3417,7 @@ function KanbanColumnHeader({ className, ...props }) {
|
|
|
3411
3417
|
);
|
|
3412
3418
|
}
|
|
3413
3419
|
function KanbanColumnTitle({ className, ...props }) {
|
|
3414
|
-
return /* @__PURE__ */ (0,
|
|
3420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3415
3421
|
"span",
|
|
3416
3422
|
{
|
|
3417
3423
|
"data-slot": "kanban-column-title",
|
|
@@ -3424,14 +3430,14 @@ function KanbanColumnTitle({ className, ...props }) {
|
|
|
3424
3430
|
);
|
|
3425
3431
|
}
|
|
3426
3432
|
function KanbanColumnBody({ className, ...props }) {
|
|
3427
|
-
return /* @__PURE__ */ (0,
|
|
3433
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { "data-slot": "kanban-column-body", className: cn("space-y-2", className), ...props });
|
|
3428
3434
|
}
|
|
3429
3435
|
function KanbanEmpty({
|
|
3430
3436
|
className,
|
|
3431
3437
|
compact = false,
|
|
3432
3438
|
...props
|
|
3433
3439
|
}) {
|
|
3434
|
-
return /* @__PURE__ */ (0,
|
|
3440
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
3435
3441
|
"p",
|
|
3436
3442
|
{
|
|
3437
3443
|
"data-slot": "kanban-empty",
|
|
@@ -3447,9 +3453,9 @@ function KanbanEmpty({
|
|
|
3447
3453
|
}
|
|
3448
3454
|
|
|
3449
3455
|
// src/ui/kbd/kbd.tsx
|
|
3450
|
-
var
|
|
3456
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
3451
3457
|
function Kbd({ className, ...props }) {
|
|
3452
|
-
return /* @__PURE__ */ (0,
|
|
3458
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3453
3459
|
"kbd",
|
|
3454
3460
|
{
|
|
3455
3461
|
"data-slot": "kbd",
|
|
@@ -3462,7 +3468,7 @@ function Kbd({ className, ...props }) {
|
|
|
3462
3468
|
);
|
|
3463
3469
|
}
|
|
3464
3470
|
function KbdGroup({ className, ...props }) {
|
|
3465
|
-
return /* @__PURE__ */ (0,
|
|
3471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
3466
3472
|
"span",
|
|
3467
3473
|
{
|
|
3468
3474
|
"data-slot": "kbd-group",
|
|
@@ -3474,13 +3480,13 @@ function KbdGroup({ className, ...props }) {
|
|
|
3474
3480
|
|
|
3475
3481
|
// src/ui/loading-overlay/loading-overlay.tsx
|
|
3476
3482
|
var import_lucide_react11 = require("lucide-react");
|
|
3477
|
-
var
|
|
3483
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3478
3484
|
function LoadingOverlay({
|
|
3479
3485
|
label = "Cargando",
|
|
3480
3486
|
className,
|
|
3481
3487
|
...props
|
|
3482
3488
|
}) {
|
|
3483
|
-
return /* @__PURE__ */ (0,
|
|
3489
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3484
3490
|
"output",
|
|
3485
3491
|
{
|
|
3486
3492
|
"aria-live": "polite",
|
|
@@ -3489,9 +3495,9 @@ function LoadingOverlay({
|
|
|
3489
3495
|
className
|
|
3490
3496
|
),
|
|
3491
3497
|
...props,
|
|
3492
|
-
children: /* @__PURE__ */ (0,
|
|
3493
|
-
/* @__PURE__ */ (0,
|
|
3494
|
-
/* @__PURE__ */ (0,
|
|
3498
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "border-border bg-background flex items-center gap-2 rounded-lg border px-3 py-2 text-sm shadow-sm", children: [
|
|
3499
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react11.LoaderCircle, { className: "motion-safe:animate-spin", "aria-hidden": "true" }),
|
|
3500
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: label })
|
|
3495
3501
|
] })
|
|
3496
3502
|
}
|
|
3497
3503
|
);
|
|
@@ -3499,10 +3505,10 @@ function LoadingOverlay({
|
|
|
3499
3505
|
|
|
3500
3506
|
// src/ui/menu/menu.tsx
|
|
3501
3507
|
var import_react_aria_components19 = require("react-aria-components");
|
|
3502
|
-
var
|
|
3508
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3503
3509
|
var MenuTrigger = import_react_aria_components19.MenuTrigger;
|
|
3504
3510
|
function MenuContent({ className, ...props }) {
|
|
3505
|
-
return /* @__PURE__ */ (0,
|
|
3511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3506
3512
|
import_react_aria_components19.Popover,
|
|
3507
3513
|
{
|
|
3508
3514
|
"data-slot": "menu-content",
|
|
@@ -3516,10 +3522,10 @@ function MenuContent({ className, ...props }) {
|
|
|
3516
3522
|
);
|
|
3517
3523
|
}
|
|
3518
3524
|
function Menu({ className, ...props }) {
|
|
3519
|
-
return /* @__PURE__ */ (0,
|
|
3525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react_aria_components19.Menu, { "data-slot": "menu", className: cn("outline-none", className), ...props });
|
|
3520
3526
|
}
|
|
3521
3527
|
function MenuItem({ className, children, ...props }) {
|
|
3522
|
-
return /* @__PURE__ */ (0,
|
|
3528
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3523
3529
|
import_react_aria_components19.MenuItem,
|
|
3524
3530
|
{
|
|
3525
3531
|
"data-slot": "menu-item",
|
|
@@ -3534,7 +3540,7 @@ function MenuItem({ className, children, ...props }) {
|
|
|
3534
3540
|
}
|
|
3535
3541
|
|
|
3536
3542
|
// src/ui/metric-card/metric-card.tsx
|
|
3537
|
-
var
|
|
3543
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
3538
3544
|
function MetricCard({
|
|
3539
3545
|
className,
|
|
3540
3546
|
label,
|
|
@@ -3548,7 +3554,7 @@ function MetricCard({
|
|
|
3548
3554
|
loadingLabel = "Cargando m\xE9trica",
|
|
3549
3555
|
...props
|
|
3550
3556
|
}) {
|
|
3551
|
-
return /* @__PURE__ */ (0,
|
|
3557
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3552
3558
|
Card,
|
|
3553
3559
|
{
|
|
3554
3560
|
"data-slot": "metric-card",
|
|
@@ -3557,16 +3563,16 @@ function MetricCard({
|
|
|
3557
3563
|
"aria-busy": loading || void 0,
|
|
3558
3564
|
className: cn("min-w-0", className),
|
|
3559
3565
|
...props,
|
|
3560
|
-
children: /* @__PURE__ */ (0,
|
|
3561
|
-
icon ? /* @__PURE__ */ (0,
|
|
3562
|
-
/* @__PURE__ */ (0,
|
|
3563
|
-
/* @__PURE__ */ (0,
|
|
3564
|
-
/* @__PURE__ */ (0,
|
|
3566
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(CardContent, { className: "flex items-start gap-3", children: [
|
|
3567
|
+
icon ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { "data-slot": "metric-card-icon", className: "text-muted-foreground shrink-0", children: icon }) : null,
|
|
3568
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "min-w-0", children: [
|
|
3569
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { "data-slot": "metric-card-label", className: "text-muted-foreground text-sm", children: label }),
|
|
3570
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3565
3571
|
"strong",
|
|
3566
3572
|
{
|
|
3567
3573
|
"data-slot": "metric-card-value",
|
|
3568
3574
|
className: "mt-1 block text-2xl font-semibold tracking-tight",
|
|
3569
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
3575
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3570
3576
|
"span",
|
|
3571
3577
|
{
|
|
3572
3578
|
"data-slot": "metric-card-loading",
|
|
@@ -3576,7 +3582,7 @@ function MetricCard({
|
|
|
3576
3582
|
) : value
|
|
3577
3583
|
}
|
|
3578
3584
|
),
|
|
3579
|
-
delta ? /* @__PURE__ */ (0,
|
|
3585
|
+
delta ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
3580
3586
|
"span",
|
|
3581
3587
|
{
|
|
3582
3588
|
"data-slot": "metric-card-delta",
|
|
@@ -3589,17 +3595,30 @@ function MetricCard({
|
|
|
3589
3595
|
children: delta
|
|
3590
3596
|
}
|
|
3591
3597
|
) : null,
|
|
3592
|
-
description ? /* @__PURE__ */ (0,
|
|
3598
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { "data-slot": "metric-card-description", className: "text-muted-foreground mt-1 text-xs", children: description }) : null
|
|
3593
3599
|
] })
|
|
3594
3600
|
] })
|
|
3595
3601
|
}
|
|
3596
3602
|
);
|
|
3597
3603
|
}
|
|
3598
3604
|
|
|
3605
|
+
// src/ui/metric-grid/metric-grid.tsx
|
|
3606
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
3607
|
+
function MetricGrid({ className, ...props }) {
|
|
3608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
3609
|
+
"div",
|
|
3610
|
+
{
|
|
3611
|
+
"data-slot": "metric-grid",
|
|
3612
|
+
className: cn("grid gap-4 sm:grid-cols-2 xl:grid-cols-4", className),
|
|
3613
|
+
...props
|
|
3614
|
+
}
|
|
3615
|
+
);
|
|
3616
|
+
}
|
|
3617
|
+
|
|
3599
3618
|
// src/ui/otp-input/otp-input.tsx
|
|
3600
3619
|
var import_react14 = require("react");
|
|
3601
3620
|
var import_react_aria_components20 = require("react-aria-components");
|
|
3602
|
-
var
|
|
3621
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3603
3622
|
function normalizeOtp(value, length) {
|
|
3604
3623
|
return value.replace(/[^0-9]/g, "").slice(0, length);
|
|
3605
3624
|
}
|
|
@@ -3651,7 +3670,7 @@ var OtpInputImpl = (0, import_react14.forwardRef)(function OtpInput({
|
|
|
3651
3670
|
input.setSelectionRange(position, position);
|
|
3652
3671
|
setSelectionStart(position);
|
|
3653
3672
|
}
|
|
3654
|
-
return /* @__PURE__ */ (0,
|
|
3673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
3655
3674
|
"div",
|
|
3656
3675
|
{
|
|
3657
3676
|
"data-slot": "otp-input",
|
|
@@ -3661,7 +3680,7 @@ var OtpInputImpl = (0, import_react14.forwardRef)(function OtpInput({
|
|
|
3661
3680
|
style: { gridTemplateColumns: `repeat(${slotCount}, minmax(0, 2.5rem))` },
|
|
3662
3681
|
onPointerDown: handlePointerDown,
|
|
3663
3682
|
children: [
|
|
3664
|
-
/* @__PURE__ */ (0,
|
|
3683
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3665
3684
|
import_react_aria_components20.Input,
|
|
3666
3685
|
{
|
|
3667
3686
|
...props,
|
|
@@ -3701,7 +3720,7 @@ var OtpInputImpl = (0, import_react14.forwardRef)(function OtpInput({
|
|
|
3701
3720
|
}
|
|
3702
3721
|
}
|
|
3703
3722
|
),
|
|
3704
|
-
slots.map((slot, index) => /* @__PURE__ */ (0,
|
|
3723
|
+
slots.map((slot, index) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
3705
3724
|
"span",
|
|
3706
3725
|
{
|
|
3707
3726
|
"aria-hidden": "true",
|
|
@@ -3724,9 +3743,9 @@ var OtpInputImpl = (0, import_react14.forwardRef)(function OtpInput({
|
|
|
3724
3743
|
var OtpInput2 = OtpInputImpl;
|
|
3725
3744
|
|
|
3726
3745
|
// src/ui/page-header/page-header.tsx
|
|
3727
|
-
var
|
|
3746
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
3728
3747
|
function PageHeader({ className, ...props }) {
|
|
3729
|
-
return /* @__PURE__ */ (0,
|
|
3748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3730
3749
|
"header",
|
|
3731
3750
|
{
|
|
3732
3751
|
"data-slot": "page-header",
|
|
@@ -3739,10 +3758,10 @@ function PageHeader({ className, ...props }) {
|
|
|
3739
3758
|
);
|
|
3740
3759
|
}
|
|
3741
3760
|
function PageHeaderHeading({ className, ...props }) {
|
|
3742
|
-
return /* @__PURE__ */ (0,
|
|
3761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { "data-slot": "page-header-heading", className: cn("min-w-0", className), ...props });
|
|
3743
3762
|
}
|
|
3744
3763
|
function PageHeaderTitle({ className, children, ...props }) {
|
|
3745
|
-
return /* @__PURE__ */ (0,
|
|
3764
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3746
3765
|
"h1",
|
|
3747
3766
|
{
|
|
3748
3767
|
"data-slot": "page-header-title",
|
|
@@ -3753,7 +3772,7 @@ function PageHeaderTitle({ className, children, ...props }) {
|
|
|
3753
3772
|
);
|
|
3754
3773
|
}
|
|
3755
3774
|
function PageHeaderDescription({ className, ...props }) {
|
|
3756
|
-
return /* @__PURE__ */ (0,
|
|
3775
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3757
3776
|
"p",
|
|
3758
3777
|
{
|
|
3759
3778
|
"data-slot": "page-header-description",
|
|
@@ -3763,7 +3782,7 @@ function PageHeaderDescription({ className, ...props }) {
|
|
|
3763
3782
|
);
|
|
3764
3783
|
}
|
|
3765
3784
|
function PageHeaderActions({ className, ...props }) {
|
|
3766
|
-
return /* @__PURE__ */ (0,
|
|
3785
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3767
3786
|
"div",
|
|
3768
3787
|
{
|
|
3769
3788
|
"data-slot": "page-header-actions",
|
|
@@ -3773,7 +3792,7 @@ function PageHeaderActions({ className, ...props }) {
|
|
|
3773
3792
|
);
|
|
3774
3793
|
}
|
|
3775
3794
|
function SectionHeader({ className, ...props }) {
|
|
3776
|
-
return /* @__PURE__ */ (0,
|
|
3795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3777
3796
|
"div",
|
|
3778
3797
|
{
|
|
3779
3798
|
"data-slot": "section-header",
|
|
@@ -3783,10 +3802,10 @@ function SectionHeader({ className, ...props }) {
|
|
|
3783
3802
|
);
|
|
3784
3803
|
}
|
|
3785
3804
|
function SectionHeaderHeading({ className, ...props }) {
|
|
3786
|
-
return /* @__PURE__ */ (0,
|
|
3805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { "data-slot": "section-header-heading", className: cn("min-w-0", className), ...props });
|
|
3787
3806
|
}
|
|
3788
3807
|
function SectionHeaderTitle({ className, ...props }) {
|
|
3789
|
-
return /* @__PURE__ */ (0,
|
|
3808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3790
3809
|
"h2",
|
|
3791
3810
|
{
|
|
3792
3811
|
"data-slot": "section-header-title",
|
|
@@ -3796,7 +3815,7 @@ function SectionHeaderTitle({ className, ...props }) {
|
|
|
3796
3815
|
);
|
|
3797
3816
|
}
|
|
3798
3817
|
function SectionHeaderDescription({ className, ...props }) {
|
|
3799
|
-
return /* @__PURE__ */ (0,
|
|
3818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3800
3819
|
"p",
|
|
3801
3820
|
{
|
|
3802
3821
|
"data-slot": "section-header-description",
|
|
@@ -3806,7 +3825,7 @@ function SectionHeaderDescription({ className, ...props }) {
|
|
|
3806
3825
|
);
|
|
3807
3826
|
}
|
|
3808
3827
|
function SectionHeaderActions({ className, ...props }) {
|
|
3809
|
-
return /* @__PURE__ */ (0,
|
|
3828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
3810
3829
|
"div",
|
|
3811
3830
|
{
|
|
3812
3831
|
"data-slot": "section-header-actions",
|
|
@@ -3819,18 +3838,19 @@ function SectionHeaderActions({ className, ...props }) {
|
|
|
3819
3838
|
// src/ui/pagination/pagination.tsx
|
|
3820
3839
|
var import_lucide_react12 = require("lucide-react");
|
|
3821
3840
|
var React6 = __toESM(require("react"), 1);
|
|
3822
|
-
var
|
|
3841
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
3823
3842
|
function visiblePages(page, pageCount, siblingCount) {
|
|
3843
|
+
const siblings = Number.isFinite(siblingCount) ? Math.min(10, Math.max(0, Math.floor(siblingCount))) : 1;
|
|
3824
3844
|
return [
|
|
3825
3845
|
.../* @__PURE__ */ new Set([
|
|
3826
3846
|
1,
|
|
3827
|
-
...Array.from({ length:
|
|
3847
|
+
...Array.from({ length: siblings * 2 + 1 }, (_, index) => page - siblings + index),
|
|
3828
3848
|
pageCount
|
|
3829
3849
|
])
|
|
3830
3850
|
].filter((item) => item >= 1 && item <= pageCount).sort((left, right) => left - right);
|
|
3831
3851
|
}
|
|
3832
3852
|
function normalizedPageCount(pageCount) {
|
|
3833
|
-
return Number.isFinite(pageCount) ? Math.max(0, Math.floor(pageCount)) : 0;
|
|
3853
|
+
return Number.isFinite(pageCount) ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(pageCount))) : 0;
|
|
3834
3854
|
}
|
|
3835
3855
|
function normalizedPage(page, pageCount) {
|
|
3836
3856
|
if (!Number.isFinite(page)) return 1;
|
|
@@ -3849,15 +3869,15 @@ function Pagination({
|
|
|
3849
3869
|
if (totalPages <= 1) return null;
|
|
3850
3870
|
const currentPage = normalizedPage(page, totalPages);
|
|
3851
3871
|
const pages = visiblePages(currentPage, totalPages, siblingCount);
|
|
3852
|
-
return /* @__PURE__ */ (0,
|
|
3872
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
3853
3873
|
"nav",
|
|
3854
3874
|
{
|
|
3855
3875
|
"aria-label": ariaLabel,
|
|
3856
3876
|
className: cn("flex flex-wrap items-center justify-between gap-4", className),
|
|
3857
3877
|
children: [
|
|
3858
|
-
/* @__PURE__ */ (0,
|
|
3859
|
-
/* @__PURE__ */ (0,
|
|
3860
|
-
/* @__PURE__ */ (0,
|
|
3878
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "text-muted-foreground text-sm", children: summary ?? `P\xE1gina ${currentPage} de ${totalPages}` }),
|
|
3879
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
3880
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3861
3881
|
Button,
|
|
3862
3882
|
{
|
|
3863
3883
|
"aria-label": "P\xE1gina anterior",
|
|
@@ -3865,27 +3885,27 @@ function Pagination({
|
|
|
3865
3885
|
onPress: () => onPageChange(currentPage - 1),
|
|
3866
3886
|
size: "icon",
|
|
3867
3887
|
variant: "ghost",
|
|
3868
|
-
children: /* @__PURE__ */ (0,
|
|
3888
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react12.ChevronLeft, {})
|
|
3869
3889
|
}
|
|
3870
3890
|
),
|
|
3871
3891
|
pages.map((item, index) => {
|
|
3872
3892
|
const previousPage = pages[index - 1];
|
|
3873
|
-
return /* @__PURE__ */ (0,
|
|
3874
|
-
previousPage !== void 0 && item > previousPage + 1 ? /* @__PURE__ */ (0,
|
|
3875
|
-
/* @__PURE__ */ (0,
|
|
3893
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(React6.Fragment, { children: [
|
|
3894
|
+
previousPage !== void 0 && item > previousPage + 1 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { "aria-hidden": "true", className: "text-muted-foreground px-1", children: "\u2026" }) : null,
|
|
3895
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3876
3896
|
Button,
|
|
3877
3897
|
{
|
|
3878
3898
|
"aria-current": item === currentPage ? "page" : void 0,
|
|
3879
3899
|
"aria-label": `P\xE1gina ${item}`,
|
|
3880
3900
|
onPress: () => onPageChange(item),
|
|
3881
3901
|
size: "icon",
|
|
3882
|
-
variant: item ===
|
|
3902
|
+
variant: item === currentPage ? "secondary" : "ghost",
|
|
3883
3903
|
children: item
|
|
3884
3904
|
}
|
|
3885
3905
|
)
|
|
3886
3906
|
] }, item);
|
|
3887
3907
|
}),
|
|
3888
|
-
/* @__PURE__ */ (0,
|
|
3908
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
3889
3909
|
Button,
|
|
3890
3910
|
{
|
|
3891
3911
|
"aria-label": "P\xE1gina siguiente",
|
|
@@ -3893,7 +3913,7 @@ function Pagination({
|
|
|
3893
3913
|
onPress: () => onPageChange(currentPage + 1),
|
|
3894
3914
|
size: "icon",
|
|
3895
3915
|
variant: "ghost",
|
|
3896
|
-
children: /* @__PURE__ */ (0,
|
|
3916
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react12.ChevronRight, {})
|
|
3897
3917
|
}
|
|
3898
3918
|
)
|
|
3899
3919
|
] })
|
|
@@ -3904,10 +3924,10 @@ function Pagination({
|
|
|
3904
3924
|
|
|
3905
3925
|
// src/ui/popover/popover.tsx
|
|
3906
3926
|
var import_react_aria_components21 = require("react-aria-components");
|
|
3907
|
-
var
|
|
3927
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
3908
3928
|
var PopoverTrigger = import_react_aria_components21.DialogTrigger;
|
|
3909
3929
|
function PopoverContent({ className, ...props }) {
|
|
3910
|
-
return /* @__PURE__ */ (0,
|
|
3930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
3911
3931
|
import_react_aria_components21.Popover,
|
|
3912
3932
|
{
|
|
3913
3933
|
"data-slot": "popover",
|
|
@@ -3922,19 +3942,19 @@ function PopoverContent({ className, ...props }) {
|
|
|
3922
3942
|
);
|
|
3923
3943
|
}
|
|
3924
3944
|
function Popover4(props) {
|
|
3925
|
-
if (!("trigger" in props)) return /* @__PURE__ */ (0,
|
|
3945
|
+
if (!("trigger" in props)) return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(PopoverContent, { ...props });
|
|
3926
3946
|
const { children, trigger, triggerProps, defaultOpen, isOpen, onOpenChange, ...contentProps } = props;
|
|
3927
|
-
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0,
|
|
3928
|
-
return /* @__PURE__ */ (0,
|
|
3947
|
+
const triggerElement = typeof trigger === "string" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Button, { ...triggerProps, children: trigger }) : trigger;
|
|
3948
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(PopoverTrigger, { defaultOpen, isOpen, onOpenChange, children: [
|
|
3929
3949
|
triggerElement,
|
|
3930
|
-
/* @__PURE__ */ (0,
|
|
3950
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(PopoverContent, { ...contentProps, children })
|
|
3931
3951
|
] });
|
|
3932
3952
|
}
|
|
3933
3953
|
|
|
3934
3954
|
// src/ui/quantity-input/quantity-input.tsx
|
|
3935
3955
|
var import_lucide_react13 = require("lucide-react");
|
|
3936
3956
|
var import_react_aria_components22 = require("react-aria-components");
|
|
3937
|
-
var
|
|
3957
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
3938
3958
|
function QuantityInput({
|
|
3939
3959
|
className,
|
|
3940
3960
|
inputClassName,
|
|
@@ -3944,7 +3964,7 @@ function QuantityInput({
|
|
|
3944
3964
|
step = 1,
|
|
3945
3965
|
...props
|
|
3946
3966
|
}) {
|
|
3947
|
-
return /* @__PURE__ */ (0,
|
|
3967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3948
3968
|
import_react_aria_components22.NumberField,
|
|
3949
3969
|
{
|
|
3950
3970
|
...props,
|
|
@@ -3955,23 +3975,23 @@ function QuantityInput({
|
|
|
3955
3975
|
"group/quantity-input inline-flex min-w-0 data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
3956
3976
|
className
|
|
3957
3977
|
),
|
|
3958
|
-
children: /* @__PURE__ */ (0,
|
|
3978
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
3959
3979
|
import_react_aria_components22.Group,
|
|
3960
3980
|
{
|
|
3961
3981
|
"data-slot": "quantity-input-group",
|
|
3962
3982
|
className: "border-border bg-background text-foreground focus-within:border-ring focus-within:ring-ring/50 group-data-invalid/quantity-input:border-destructive flex h-8 min-w-0 items-stretch overflow-hidden rounded-lg border transition-[border-color,box-shadow] focus-within:ring-3",
|
|
3963
3983
|
children: [
|
|
3964
|
-
/* @__PURE__ */ (0,
|
|
3984
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3965
3985
|
import_react_aria_components22.Button,
|
|
3966
3986
|
{
|
|
3967
3987
|
slot: "decrement",
|
|
3968
3988
|
"aria-label": decrementAriaLabel,
|
|
3969
3989
|
"data-slot": "quantity-input-decrement",
|
|
3970
3990
|
className: "border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-r transition-colors outline-none data-disabled:pointer-events-none",
|
|
3971
|
-
children: /* @__PURE__ */ (0,
|
|
3991
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react13.Minus, { "aria-hidden": "true", className: "size-4" })
|
|
3972
3992
|
}
|
|
3973
3993
|
),
|
|
3974
|
-
/* @__PURE__ */ (0,
|
|
3994
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3975
3995
|
import_react_aria_components22.Input,
|
|
3976
3996
|
{
|
|
3977
3997
|
"data-slot": "quantity-input-value",
|
|
@@ -3981,14 +4001,14 @@ function QuantityInput({
|
|
|
3981
4001
|
)
|
|
3982
4002
|
}
|
|
3983
4003
|
),
|
|
3984
|
-
/* @__PURE__ */ (0,
|
|
4004
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
3985
4005
|
import_react_aria_components22.Button,
|
|
3986
4006
|
{
|
|
3987
4007
|
slot: "increment",
|
|
3988
4008
|
"aria-label": incrementAriaLabel,
|
|
3989
4009
|
"data-slot": "quantity-input-increment",
|
|
3990
4010
|
className: "border-border text-muted-foreground hover:bg-muted hover:text-foreground data-focus-visible:bg-muted data-pressed:bg-muted flex size-8 shrink-0 cursor-pointer items-center justify-center border-l transition-colors outline-none data-disabled:pointer-events-none",
|
|
3991
|
-
children: /* @__PURE__ */ (0,
|
|
4011
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react13.Plus, { "aria-hidden": "true", className: "size-4" })
|
|
3992
4012
|
}
|
|
3993
4013
|
)
|
|
3994
4014
|
]
|
|
@@ -4001,10 +4021,10 @@ function QuantityInput({
|
|
|
4001
4021
|
// src/ui/select/select.tsx
|
|
4002
4022
|
var import_lucide_react14 = require("lucide-react");
|
|
4003
4023
|
var import_react_aria_components23 = require("react-aria-components");
|
|
4004
|
-
var
|
|
4024
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
4005
4025
|
var Select = import_react_aria_components23.Select;
|
|
4006
4026
|
function SelectTrigger({ className, children, ...props }) {
|
|
4007
|
-
return /* @__PURE__ */ (0,
|
|
4027
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4008
4028
|
import_react_aria_components23.Button,
|
|
4009
4029
|
{
|
|
4010
4030
|
"data-slot": "select-trigger",
|
|
@@ -4013,9 +4033,9 @@ function SelectTrigger({ className, children, ...props }) {
|
|
|
4013
4033
|
className
|
|
4014
4034
|
),
|
|
4015
4035
|
...props,
|
|
4016
|
-
children: (state) => /* @__PURE__ */ (0,
|
|
4036
|
+
children: (state) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_jsx_runtime50.Fragment, { children: [
|
|
4017
4037
|
typeof children === "function" ? children(state) : children,
|
|
4018
|
-
/* @__PURE__ */ (0,
|
|
4038
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4019
4039
|
import_lucide_react14.ChevronDown,
|
|
4020
4040
|
{
|
|
4021
4041
|
"aria-hidden": "true",
|
|
@@ -4027,7 +4047,7 @@ function SelectTrigger({ className, children, ...props }) {
|
|
|
4027
4047
|
);
|
|
4028
4048
|
}
|
|
4029
4049
|
function SelectValue({ className, ...props }) {
|
|
4030
|
-
return /* @__PURE__ */ (0,
|
|
4050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4031
4051
|
import_react_aria_components23.SelectValue,
|
|
4032
4052
|
{
|
|
4033
4053
|
"data-slot": "select-value",
|
|
@@ -4037,7 +4057,7 @@ function SelectValue({ className, ...props }) {
|
|
|
4037
4057
|
);
|
|
4038
4058
|
}
|
|
4039
4059
|
function SelectContent({ className, ...props }) {
|
|
4040
|
-
return /* @__PURE__ */ (0,
|
|
4060
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4041
4061
|
import_react_aria_components23.Popover,
|
|
4042
4062
|
{
|
|
4043
4063
|
"data-slot": "select-content",
|
|
@@ -4051,7 +4071,7 @@ function SelectContent({ className, ...props }) {
|
|
|
4051
4071
|
);
|
|
4052
4072
|
}
|
|
4053
4073
|
function SelectList({ className, ...props }) {
|
|
4054
|
-
return /* @__PURE__ */ (0,
|
|
4074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4055
4075
|
import_react_aria_components23.ListBox,
|
|
4056
4076
|
{
|
|
4057
4077
|
"data-slot": "select-list",
|
|
@@ -4065,7 +4085,7 @@ function SelectItem({
|
|
|
4065
4085
|
children,
|
|
4066
4086
|
...props
|
|
4067
4087
|
}) {
|
|
4068
|
-
return /* @__PURE__ */ (0,
|
|
4088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
4069
4089
|
import_react_aria_components23.ListBoxItem,
|
|
4070
4090
|
{
|
|
4071
4091
|
"data-slot": "select-item",
|
|
@@ -4079,6 +4099,34 @@ function SelectItem({
|
|
|
4079
4099
|
);
|
|
4080
4100
|
}
|
|
4081
4101
|
|
|
4102
|
+
// src/ui/selection-toolbar/selection-toolbar.tsx
|
|
4103
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
4104
|
+
function SelectionToolbar({
|
|
4105
|
+
count,
|
|
4106
|
+
className,
|
|
4107
|
+
children,
|
|
4108
|
+
...props
|
|
4109
|
+
}) {
|
|
4110
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
4111
|
+
"div",
|
|
4112
|
+
{
|
|
4113
|
+
"data-slot": "selection-toolbar",
|
|
4114
|
+
className: cn(
|
|
4115
|
+
"flex flex-wrap items-center justify-between gap-2 rounded-lg border bg-muted/40 p-2",
|
|
4116
|
+
className
|
|
4117
|
+
),
|
|
4118
|
+
...props,
|
|
4119
|
+
children: [
|
|
4120
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("output", { "aria-live": "polite", className: "text-sm font-medium", children: [
|
|
4121
|
+
count,
|
|
4122
|
+
" seleccionados"
|
|
4123
|
+
] }),
|
|
4124
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center gap-2", children })
|
|
4125
|
+
]
|
|
4126
|
+
}
|
|
4127
|
+
);
|
|
4128
|
+
}
|
|
4129
|
+
|
|
4082
4130
|
// src/ui/sidebar/sidebar.tsx
|
|
4083
4131
|
var import_lucide_react15 = require("lucide-react");
|
|
4084
4132
|
var import_react16 = require("react");
|
|
@@ -4094,7 +4142,7 @@ function useSidebar() {
|
|
|
4094
4142
|
}
|
|
4095
4143
|
|
|
4096
4144
|
// src/ui/sidebar/sidebar.tsx
|
|
4097
|
-
var
|
|
4145
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
4098
4146
|
function SidebarProvider({
|
|
4099
4147
|
defaultCollapsed = false,
|
|
4100
4148
|
collapsed: controlledCollapsed,
|
|
@@ -4119,11 +4167,11 @@ function SidebarProvider({
|
|
|
4119
4167
|
}),
|
|
4120
4168
|
[collapsed, setCollapsed, toggle]
|
|
4121
4169
|
);
|
|
4122
|
-
return /* @__PURE__ */ (0,
|
|
4170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(SidebarContext.Provider, { value, children });
|
|
4123
4171
|
}
|
|
4124
4172
|
function Sidebar({ className, ...props }) {
|
|
4125
4173
|
const { collapsed } = useSidebar();
|
|
4126
|
-
return /* @__PURE__ */ (0,
|
|
4174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4127
4175
|
"aside",
|
|
4128
4176
|
{
|
|
4129
4177
|
"data-slot": "sidebar",
|
|
@@ -4137,7 +4185,7 @@ function Sidebar({ className, ...props }) {
|
|
|
4137
4185
|
);
|
|
4138
4186
|
}
|
|
4139
4187
|
function SidebarHeader({ className, ...props }) {
|
|
4140
|
-
return /* @__PURE__ */ (0,
|
|
4188
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4141
4189
|
"div",
|
|
4142
4190
|
{
|
|
4143
4191
|
"data-slot": "sidebar-header",
|
|
@@ -4152,7 +4200,7 @@ function SidebarSearch({
|
|
|
4152
4200
|
className,
|
|
4153
4201
|
...props
|
|
4154
4202
|
}) {
|
|
4155
|
-
return /* @__PURE__ */ (0,
|
|
4203
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
4156
4204
|
"button",
|
|
4157
4205
|
{
|
|
4158
4206
|
type: "button",
|
|
@@ -4163,15 +4211,15 @@ function SidebarSearch({
|
|
|
4163
4211
|
),
|
|
4164
4212
|
...props,
|
|
4165
4213
|
children: [
|
|
4166
|
-
/* @__PURE__ */ (0,
|
|
4167
|
-
/* @__PURE__ */ (0,
|
|
4168
|
-
/* @__PURE__ */ (0,
|
|
4214
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react15.Search, { className: "size-4 shrink-0" }),
|
|
4215
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "flex-1 text-left", children: label }),
|
|
4216
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("kbd", { className: "bg-secondary text-muted-foreground rounded px-1.5 py-0.5 font-mono text-[10px]", children: shortcut })
|
|
4169
4217
|
]
|
|
4170
4218
|
}
|
|
4171
4219
|
);
|
|
4172
4220
|
}
|
|
4173
4221
|
function SidebarContent({ className, ...props }) {
|
|
4174
|
-
return /* @__PURE__ */ (0,
|
|
4222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4175
4223
|
"nav",
|
|
4176
4224
|
{
|
|
4177
4225
|
"data-slot": "sidebar-content",
|
|
@@ -4182,7 +4230,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
4182
4230
|
);
|
|
4183
4231
|
}
|
|
4184
4232
|
function SidebarFooter({ className, ...props }) {
|
|
4185
|
-
return /* @__PURE__ */ (0,
|
|
4233
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4186
4234
|
"div",
|
|
4187
4235
|
{
|
|
4188
4236
|
"data-slot": "sidebar-footer",
|
|
@@ -4198,8 +4246,8 @@ function SidebarGroup({
|
|
|
4198
4246
|
...props
|
|
4199
4247
|
}) {
|
|
4200
4248
|
const { collapsed } = useSidebar();
|
|
4201
|
-
return /* @__PURE__ */ (0,
|
|
4202
|
-
label && /* @__PURE__ */ (0,
|
|
4249
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("section", { "data-slot": "sidebar-group", className: cn("mb-4 last:mb-0", className), ...props, children: [
|
|
4250
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4203
4251
|
"h2",
|
|
4204
4252
|
{
|
|
4205
4253
|
className: cn(
|
|
@@ -4223,7 +4271,7 @@ function SidebarItem({
|
|
|
4223
4271
|
}) {
|
|
4224
4272
|
const { collapsed } = useSidebar();
|
|
4225
4273
|
const content = typeof children === "function" ? label : children ?? label;
|
|
4226
|
-
return /* @__PURE__ */ (0,
|
|
4274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4227
4275
|
import_react_aria_components24.Link,
|
|
4228
4276
|
{
|
|
4229
4277
|
"data-slot": "sidebar-item",
|
|
@@ -4235,16 +4283,16 @@ function SidebarItem({
|
|
|
4235
4283
|
typeof className === "function" ? className : className
|
|
4236
4284
|
),
|
|
4237
4285
|
...props,
|
|
4238
|
-
children: (values) => /* @__PURE__ */ (0,
|
|
4239
|
-
/* @__PURE__ */ (0,
|
|
4240
|
-
/* @__PURE__ */ (0,
|
|
4241
|
-
badge && !collapsed && /* @__PURE__ */ (0,
|
|
4286
|
+
children: (values) => /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
4287
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "flex size-4 shrink-0 items-center justify-center", children: icon }),
|
|
4288
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: cn("min-w-0 flex-1 truncate", collapsed && "sr-only"), children: typeof children === "function" ? children(values) : content }),
|
|
4289
|
+
badge && !collapsed && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-muted-foreground text-xs", children: badge })
|
|
4242
4290
|
] })
|
|
4243
4291
|
}
|
|
4244
4292
|
);
|
|
4245
4293
|
}
|
|
4246
4294
|
function SidebarSeparator({ className, ...props }) {
|
|
4247
|
-
return /* @__PURE__ */ (0,
|
|
4295
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4248
4296
|
"hr",
|
|
4249
4297
|
{
|
|
4250
4298
|
"data-slot": "sidebar-separator",
|
|
@@ -4256,7 +4304,7 @@ function SidebarSeparator({ className, ...props }) {
|
|
|
4256
4304
|
function SidebarTrigger({ className, ...props }) {
|
|
4257
4305
|
const { collapsed, toggle } = useSidebar();
|
|
4258
4306
|
const { onPress, ...buttonProps } = props;
|
|
4259
|
-
return /* @__PURE__ */ (0,
|
|
4307
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4260
4308
|
Button,
|
|
4261
4309
|
{
|
|
4262
4310
|
"aria-label": collapsed ? "Expandir navegaci\xF3n" : "Colapsar navegaci\xF3n",
|
|
@@ -4268,14 +4316,14 @@ function SidebarTrigger({ className, ...props }) {
|
|
|
4268
4316
|
variant: "ghost",
|
|
4269
4317
|
className: cn("ml-auto", className),
|
|
4270
4318
|
...buttonProps,
|
|
4271
|
-
children: collapsed ? /* @__PURE__ */ (0,
|
|
4319
|
+
children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react15.ChevronRight, {}) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react15.ChevronLeft, {})
|
|
4272
4320
|
}
|
|
4273
4321
|
);
|
|
4274
4322
|
}
|
|
4275
4323
|
function SidebarRail({ className, ...props }) {
|
|
4276
4324
|
const { toggle } = useSidebar();
|
|
4277
4325
|
const { onClick, ...buttonProps } = props;
|
|
4278
|
-
return /* @__PURE__ */ (0,
|
|
4326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4279
4327
|
"button",
|
|
4280
4328
|
{
|
|
4281
4329
|
type: "button",
|
|
@@ -4293,7 +4341,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
4293
4341
|
);
|
|
4294
4342
|
}
|
|
4295
4343
|
function SidebarMore({ className, ...props }) {
|
|
4296
|
-
return /* @__PURE__ */ (0,
|
|
4344
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
4297
4345
|
Button,
|
|
4298
4346
|
{
|
|
4299
4347
|
"aria-label": "M\xE1s opciones",
|
|
@@ -4301,15 +4349,15 @@ function SidebarMore({ className, ...props }) {
|
|
|
4301
4349
|
variant: "ghost",
|
|
4302
4350
|
className: cn("size-7", className),
|
|
4303
4351
|
...props,
|
|
4304
|
-
children: /* @__PURE__ */ (0,
|
|
4352
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react15.Ellipsis, {})
|
|
4305
4353
|
}
|
|
4306
4354
|
);
|
|
4307
4355
|
}
|
|
4308
4356
|
|
|
4309
4357
|
// src/ui/skeleton/skeleton.tsx
|
|
4310
|
-
var
|
|
4358
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
4311
4359
|
function Skeleton({ className, ...props }) {
|
|
4312
|
-
return /* @__PURE__ */ (0,
|
|
4360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
4313
4361
|
"div",
|
|
4314
4362
|
{
|
|
4315
4363
|
"aria-hidden": "true",
|
|
@@ -4324,7 +4372,7 @@ function Skeleton({ className, ...props }) {
|
|
|
4324
4372
|
var import_lucide_react16 = require("lucide-react");
|
|
4325
4373
|
var import_react17 = require("react");
|
|
4326
4374
|
var import_react_dom = require("react-dom");
|
|
4327
|
-
var
|
|
4375
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
4328
4376
|
function assignRef(ref, node) {
|
|
4329
4377
|
if (typeof ref === "function") {
|
|
4330
4378
|
ref(node);
|
|
@@ -4359,7 +4407,7 @@ function SubmitButton({
|
|
|
4359
4407
|
if (busy) button.setAttribute("aria-busy", "true");
|
|
4360
4408
|
else button.removeAttribute("aria-busy");
|
|
4361
4409
|
}, [busy]);
|
|
4362
|
-
return /* @__PURE__ */ (0,
|
|
4410
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
4363
4411
|
Button,
|
|
4364
4412
|
{
|
|
4365
4413
|
ref: setButtonRef,
|
|
@@ -4368,8 +4416,8 @@ function SubmitButton({
|
|
|
4368
4416
|
isDisabled: busy || isDisabled,
|
|
4369
4417
|
"aria-busy": busy || void 0,
|
|
4370
4418
|
...props,
|
|
4371
|
-
children: busy ? /* @__PURE__ */ (0,
|
|
4372
|
-
/* @__PURE__ */ (0,
|
|
4419
|
+
children: busy ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
|
|
4420
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react16.LoaderCircle, { "aria-hidden": "true", className: "size-3.5 motion-safe:animate-spin" }),
|
|
4373
4421
|
label
|
|
4374
4422
|
] }) : children
|
|
4375
4423
|
}
|
|
@@ -4379,7 +4427,7 @@ function SubmitButton({
|
|
|
4379
4427
|
// src/ui/switch/switch.tsx
|
|
4380
4428
|
var import_react18 = require("react");
|
|
4381
4429
|
var import_react_aria_components25 = require("react-aria-components");
|
|
4382
|
-
var
|
|
4430
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
4383
4431
|
var switchSizes = {
|
|
4384
4432
|
sm: {
|
|
4385
4433
|
control: "h-4 w-[1.875rem] p-0.5",
|
|
@@ -4436,7 +4484,7 @@ function Switch({
|
|
|
4436
4484
|
ownerDocument.addEventListener("keydown", handleDirectionalKey);
|
|
4437
4485
|
return () => ownerDocument.removeEventListener("keydown", handleDirectionalKey);
|
|
4438
4486
|
}, [isDisabled, isReadOnly, resolvedInputRef]);
|
|
4439
|
-
return /* @__PURE__ */ (0,
|
|
4487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4440
4488
|
import_react_aria_components25.Switch,
|
|
4441
4489
|
{
|
|
4442
4490
|
"data-slot": "switch",
|
|
@@ -4453,8 +4501,8 @@ function Switch({
|
|
|
4453
4501
|
children: (state) => {
|
|
4454
4502
|
const isThumbPressed = state.isPressed;
|
|
4455
4503
|
const thumbOffset = state.isSelected ? isThumbPressed ? styles.activeSelectedOffset : styles.selectedOffset : "0";
|
|
4456
|
-
return /* @__PURE__ */ (0,
|
|
4457
|
-
/* @__PURE__ */ (0,
|
|
4504
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
4505
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4458
4506
|
"span",
|
|
4459
4507
|
{
|
|
4460
4508
|
"aria-hidden": "true",
|
|
@@ -4468,7 +4516,7 @@ function Switch({
|
|
|
4468
4516
|
"group-data-focus-visible/switch:ring-3 group-data-focus-visible/switch:ring-ring/50",
|
|
4469
4517
|
styles.control
|
|
4470
4518
|
),
|
|
4471
|
-
children: /* @__PURE__ */ (0,
|
|
4519
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4472
4520
|
"span",
|
|
4473
4521
|
{
|
|
4474
4522
|
"data-slot": "switch-thumb",
|
|
@@ -4488,9 +4536,9 @@ function Switch({
|
|
|
4488
4536
|
)
|
|
4489
4537
|
}
|
|
4490
4538
|
),
|
|
4491
|
-
children || description ? /* @__PURE__ */ (0,
|
|
4492
|
-
children ? /* @__PURE__ */ (0,
|
|
4493
|
-
description ? /* @__PURE__ */ (0,
|
|
4539
|
+
children || description ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { className: "grid gap-0.5 leading-tight", children: [
|
|
4540
|
+
children ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { "data-slot": "switch-label", className: "font-medium", children: typeof children === "function" ? children(state) : children }) : null,
|
|
4541
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
4494
4542
|
"span",
|
|
4495
4543
|
{
|
|
4496
4544
|
"data-slot": "switch-description",
|
|
@@ -4506,9 +4554,9 @@ function Switch({
|
|
|
4506
4554
|
}
|
|
4507
4555
|
|
|
4508
4556
|
// src/ui/table/table.tsx
|
|
4509
|
-
var
|
|
4557
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
4510
4558
|
function Table({ className, ...props }) {
|
|
4511
|
-
return /* @__PURE__ */ (0,
|
|
4559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4512
4560
|
"table",
|
|
4513
4561
|
{
|
|
4514
4562
|
"data-slot": "table",
|
|
@@ -4518,10 +4566,10 @@ function Table({ className, ...props }) {
|
|
|
4518
4566
|
) });
|
|
4519
4567
|
}
|
|
4520
4568
|
function TableHeader({ className, ...props }) {
|
|
4521
|
-
return /* @__PURE__ */ (0,
|
|
4569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
|
|
4522
4570
|
}
|
|
4523
4571
|
function TableBody({ className, ...props }) {
|
|
4524
|
-
return /* @__PURE__ */ (0,
|
|
4572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4525
4573
|
"tbody",
|
|
4526
4574
|
{
|
|
4527
4575
|
"data-slot": "table-body",
|
|
@@ -4531,7 +4579,7 @@ function TableBody({ className, ...props }) {
|
|
|
4531
4579
|
);
|
|
4532
4580
|
}
|
|
4533
4581
|
function TableRow({ className, ...props }) {
|
|
4534
|
-
return /* @__PURE__ */ (0,
|
|
4582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4535
4583
|
"tr",
|
|
4536
4584
|
{
|
|
4537
4585
|
"data-slot": "table-row",
|
|
@@ -4544,7 +4592,7 @@ function TableRow({ className, ...props }) {
|
|
|
4544
4592
|
);
|
|
4545
4593
|
}
|
|
4546
4594
|
function TableHead({ className, ...props }) {
|
|
4547
|
-
return /* @__PURE__ */ (0,
|
|
4595
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4548
4596
|
"th",
|
|
4549
4597
|
{
|
|
4550
4598
|
"data-slot": "table-head",
|
|
@@ -4557,7 +4605,7 @@ function TableHead({ className, ...props }) {
|
|
|
4557
4605
|
);
|
|
4558
4606
|
}
|
|
4559
4607
|
function TableCell({ className, ...props }) {
|
|
4560
|
-
return /* @__PURE__ */ (0,
|
|
4608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4561
4609
|
"td",
|
|
4562
4610
|
{
|
|
4563
4611
|
"data-slot": "table-cell",
|
|
@@ -4567,7 +4615,7 @@ function TableCell({ className, ...props }) {
|
|
|
4567
4615
|
);
|
|
4568
4616
|
}
|
|
4569
4617
|
function TableCaption({ className, ...props }) {
|
|
4570
|
-
return /* @__PURE__ */ (0,
|
|
4618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4571
4619
|
"caption",
|
|
4572
4620
|
{
|
|
4573
4621
|
"data-slot": "table-caption",
|
|
@@ -4577,7 +4625,7 @@ function TableCaption({ className, ...props }) {
|
|
|
4577
4625
|
);
|
|
4578
4626
|
}
|
|
4579
4627
|
function TableFooter({ className, ...props }) {
|
|
4580
|
-
return /* @__PURE__ */ (0,
|
|
4628
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4581
4629
|
"tfoot",
|
|
4582
4630
|
{
|
|
4583
4631
|
"data-slot": "table-footer",
|
|
@@ -4590,7 +4638,7 @@ function TableFooter({ className, ...props }) {
|
|
|
4590
4638
|
);
|
|
4591
4639
|
}
|
|
4592
4640
|
function TableToolbar({ className, ...props }) {
|
|
4593
|
-
return /* @__PURE__ */ (0,
|
|
4641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4594
4642
|
"div",
|
|
4595
4643
|
{
|
|
4596
4644
|
"data-slot": "table-toolbar",
|
|
@@ -4604,7 +4652,7 @@ function TableEmpty({
|
|
|
4604
4652
|
className,
|
|
4605
4653
|
children = "No hay resultados."
|
|
4606
4654
|
}) {
|
|
4607
|
-
return /* @__PURE__ */ (0,
|
|
4655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TableRow, { "data-slot": "table-empty", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4608
4656
|
TableCell,
|
|
4609
4657
|
{
|
|
4610
4658
|
colSpan,
|
|
@@ -4618,7 +4666,7 @@ function TableLoading({
|
|
|
4618
4666
|
className,
|
|
4619
4667
|
children = "Cargando\u2026"
|
|
4620
4668
|
}) {
|
|
4621
|
-
return /* @__PURE__ */ (0,
|
|
4669
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TableRow, { "data-slot": "table-loading", "aria-busy": "true", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
4622
4670
|
TableCell,
|
|
4623
4671
|
{
|
|
4624
4672
|
colSpan,
|
|
@@ -4630,9 +4678,9 @@ function TableLoading({
|
|
|
4630
4678
|
|
|
4631
4679
|
// src/ui/tabs/tabs.tsx
|
|
4632
4680
|
var import_react_aria_components26 = require("react-aria-components");
|
|
4633
|
-
var
|
|
4681
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
4634
4682
|
function Tabs({ className, ...props }) {
|
|
4635
|
-
return /* @__PURE__ */ (0,
|
|
4683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4636
4684
|
import_react_aria_components26.Tabs,
|
|
4637
4685
|
{
|
|
4638
4686
|
"data-slot": "tabs",
|
|
@@ -4642,7 +4690,7 @@ function Tabs({ className, ...props }) {
|
|
|
4642
4690
|
);
|
|
4643
4691
|
}
|
|
4644
4692
|
function TabsList({ className, ...props }) {
|
|
4645
|
-
return /* @__PURE__ */ (0,
|
|
4693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4646
4694
|
import_react_aria_components26.TabList,
|
|
4647
4695
|
{
|
|
4648
4696
|
"data-slot": "tabs-list",
|
|
@@ -4658,7 +4706,7 @@ function TabsList({ className, ...props }) {
|
|
|
4658
4706
|
);
|
|
4659
4707
|
}
|
|
4660
4708
|
function TabsTrigger({ className, ...props }) {
|
|
4661
|
-
return /* @__PURE__ */ (0,
|
|
4709
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4662
4710
|
import_react_aria_components26.Tab,
|
|
4663
4711
|
{
|
|
4664
4712
|
"data-slot": "tabs-trigger",
|
|
@@ -4674,10 +4722,10 @@ function TabsTrigger({ className, ...props }) {
|
|
|
4674
4722
|
);
|
|
4675
4723
|
}
|
|
4676
4724
|
function TabsPanels({ className, ...props }) {
|
|
4677
|
-
return /* @__PURE__ */ (0,
|
|
4725
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_aria_components26.TabPanels, { "data-slot": "tabs-panels", className: cn("min-w-0", className), ...props });
|
|
4678
4726
|
}
|
|
4679
4727
|
function TabsContent({ className, ...props }) {
|
|
4680
|
-
return /* @__PURE__ */ (0,
|
|
4728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
4681
4729
|
import_react_aria_components26.TabPanel,
|
|
4682
4730
|
{
|
|
4683
4731
|
"data-slot": "tabs-content",
|
|
@@ -4741,15 +4789,15 @@ function useToast() {
|
|
|
4741
4789
|
}
|
|
4742
4790
|
|
|
4743
4791
|
// src/ui/toast/toast.tsx
|
|
4744
|
-
var
|
|
4792
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
4745
4793
|
function ToastProvider({ children }) {
|
|
4746
|
-
return /* @__PURE__ */ (0,
|
|
4794
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
|
|
4747
4795
|
children,
|
|
4748
|
-
/* @__PURE__ */ (0,
|
|
4796
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Toaster, {})
|
|
4749
4797
|
] });
|
|
4750
4798
|
}
|
|
4751
4799
|
function Toaster({ position }) {
|
|
4752
|
-
return /* @__PURE__ */ (0,
|
|
4800
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_sileo2.Toaster, { position, options: { fill: "var(--ui-secondary)" } });
|
|
4753
4801
|
}
|
|
4754
4802
|
function ToastViewport({
|
|
4755
4803
|
position,
|
|
@@ -4758,7 +4806,7 @@ function ToastViewport({
|
|
|
4758
4806
|
}) {
|
|
4759
4807
|
void className;
|
|
4760
4808
|
if (visiblePosition && visiblePosition !== position) return null;
|
|
4761
|
-
return /* @__PURE__ */ (0,
|
|
4809
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Toaster, { position });
|
|
4762
4810
|
}
|
|
4763
4811
|
function Toast({
|
|
4764
4812
|
id,
|
|
@@ -4783,9 +4831,9 @@ function Toast({
|
|
|
4783
4831
|
}
|
|
4784
4832
|
|
|
4785
4833
|
// src/ui/toolbar/toolbar.tsx
|
|
4786
|
-
var
|
|
4834
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
4787
4835
|
function Toolbar({ className, ...props }) {
|
|
4788
|
-
return /* @__PURE__ */ (0,
|
|
4836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
4789
4837
|
"div",
|
|
4790
4838
|
{
|
|
4791
4839
|
role: "toolbar",
|
|
@@ -4796,7 +4844,7 @@ function Toolbar({ className, ...props }) {
|
|
|
4796
4844
|
);
|
|
4797
4845
|
}
|
|
4798
4846
|
function ToolbarGroup({ className, ...props }) {
|
|
4799
|
-
return /* @__PURE__ */ (0,
|
|
4847
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
4800
4848
|
"div",
|
|
4801
4849
|
{
|
|
4802
4850
|
"data-slot": "toolbar-group",
|
|
@@ -4806,7 +4854,7 @@ function ToolbarGroup({ className, ...props }) {
|
|
|
4806
4854
|
);
|
|
4807
4855
|
}
|
|
4808
4856
|
function ToolbarSpacer({ className, ...props }) {
|
|
4809
|
-
return /* @__PURE__ */ (0,
|
|
4857
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { "aria-hidden": "true", className: cn("hidden flex-1 sm:block", className), ...props });
|
|
4810
4858
|
}
|
|
4811
4859
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4812
4860
|
0 && (module.exports = {
|