framepexls-ui-lib 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppTopbar.js +1 -1
- package/dist/AppTopbar.mjs +1 -1
- package/dist/AvatarGroup.js +7 -2
- package/dist/AvatarGroup.mjs +7 -2
- package/dist/Badge.js +6 -1
- package/dist/Badge.mjs +6 -1
- package/dist/Breadcrumb.js +46 -2
- package/dist/Breadcrumb.mjs +46 -2
- package/dist/Button.js +8 -2
- package/dist/Button.mjs +8 -2
- package/dist/CalendarPanel.js +45 -26
- package/dist/CalendarPanel.mjs +45 -26
- package/dist/Card.js +7 -2
- package/dist/Card.mjs +7 -2
- package/dist/Checkbox.js +51 -18
- package/dist/Checkbox.mjs +51 -18
- package/dist/ColorPicker.js +9 -4
- package/dist/ColorPicker.mjs +9 -4
- package/dist/ComboSelect.js +11 -4
- package/dist/ComboSelect.mjs +11 -4
- package/dist/DateTimeField.js +8 -2
- package/dist/DateTimeField.mjs +8 -2
- package/dist/Dropdown.js +15 -10
- package/dist/Dropdown.mjs +15 -10
- package/dist/Input.js +23 -0
- package/dist/Input.mjs +23 -0
- package/dist/KpiCard.js +26 -2
- package/dist/KpiCard.mjs +26 -2
- package/dist/Link.js +16 -2
- package/dist/Link.mjs +16 -2
- package/dist/MediaCard.js +18 -11
- package/dist/MediaCard.mjs +18 -11
- package/dist/MediaSelector.js +9 -8
- package/dist/MediaSelector.mjs +9 -8
- package/dist/MotionProvider.d.mts +10 -0
- package/dist/MotionProvider.d.ts +10 -0
- package/dist/MotionProvider.js +30 -0
- package/dist/MotionProvider.mjs +10 -0
- package/dist/MultiComboSelect.js +6 -4
- package/dist/MultiComboSelect.mjs +6 -4
- package/dist/Pagination.js +66 -29
- package/dist/Pagination.mjs +66 -29
- package/dist/ReviewHistory.js +8 -6
- package/dist/ReviewHistory.mjs +8 -6
- package/dist/SearchInput.js +16 -2
- package/dist/SearchInput.mjs +16 -2
- package/dist/Select.js +12 -4
- package/dist/Select.mjs +12 -4
- package/dist/Sidebar.js +20 -2
- package/dist/Sidebar.mjs +20 -2
- package/dist/StatCard.js +17 -1
- package/dist/StatCard.mjs +19 -3
- package/dist/Steps.js +51 -37
- package/dist/Steps.mjs +51 -37
- package/dist/StorageUsage.js +7 -3
- package/dist/StorageUsage.mjs +7 -3
- package/dist/Table.d.mts +5 -1
- package/dist/Table.d.ts +5 -1
- package/dist/Table.js +32 -4
- package/dist/Table.mjs +31 -4
- package/dist/Textarea.js +42 -17
- package/dist/Textarea.mjs +43 -18
- package/dist/TimePopover.js +116 -83
- package/dist/TimePopover.mjs +116 -83
- package/dist/Toast.js +0 -4
- package/dist/Toast.mjs +0 -4
- package/dist/Tooltip.js +29 -19
- package/dist/Tooltip.mjs +29 -19
- package/dist/UploadCard.js +34 -21
- package/dist/UploadCard.mjs +34 -21
- package/dist/animations-CHrNeawW.d.mts +28 -0
- package/dist/animations-CHrNeawW.d.ts +28 -0
- package/dist/animations.d.mts +2 -0
- package/dist/animations.d.ts +2 -0
- package/dist/animations.js +75 -0
- package/dist/animations.mjs +42 -0
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +8 -0
- package/dist/index.mjs +18 -13
- package/package.json +1 -1
package/dist/Pagination.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { LayoutGroup, motion } from "framer-motion";
|
|
4
|
+
import { springSm } from "./animations";
|
|
3
5
|
import Button from "./Button";
|
|
4
6
|
function Pagination({
|
|
5
7
|
page,
|
|
@@ -23,55 +25,90 @@ function Pagination({
|
|
|
23
25
|
return range2;
|
|
24
26
|
};
|
|
25
27
|
const range = getRange();
|
|
26
|
-
const
|
|
27
|
-
slate: "bg-slate-600
|
|
28
|
-
gray: "bg-gray-600
|
|
29
|
-
zinc: "bg-zinc-600
|
|
30
|
-
neutral: "bg-neutral-600
|
|
31
|
-
stone: "bg-stone-600
|
|
32
|
-
red: "bg-red-600
|
|
33
|
-
orange: "bg-orange-600
|
|
34
|
-
amber: "bg-amber-600
|
|
35
|
-
yellow: "bg-yellow-500
|
|
36
|
-
lime: "bg-lime-600
|
|
37
|
-
green: "bg-green-600
|
|
38
|
-
emerald: "bg-emerald-600
|
|
39
|
-
teal: "bg-teal-600
|
|
40
|
-
cyan: "bg-cyan-600
|
|
41
|
-
sky: "bg-sky-600
|
|
42
|
-
blue: "bg-blue-600
|
|
43
|
-
indigo: "bg-indigo-600
|
|
44
|
-
violet: "bg-violet-600
|
|
45
|
-
purple: "bg-purple-600
|
|
46
|
-
fuchsia: "bg-fuchsia-600
|
|
47
|
-
pink: "bg-pink-600
|
|
48
|
-
rose: "bg-rose-600
|
|
28
|
+
const PILL_BG = {
|
|
29
|
+
slate: "bg-slate-600",
|
|
30
|
+
gray: "bg-gray-600",
|
|
31
|
+
zinc: "bg-zinc-600",
|
|
32
|
+
neutral: "bg-neutral-600",
|
|
33
|
+
stone: "bg-stone-600",
|
|
34
|
+
red: "bg-red-600",
|
|
35
|
+
orange: "bg-orange-600",
|
|
36
|
+
amber: "bg-amber-600",
|
|
37
|
+
yellow: "bg-yellow-500",
|
|
38
|
+
lime: "bg-lime-600",
|
|
39
|
+
green: "bg-green-600",
|
|
40
|
+
emerald: "bg-emerald-600",
|
|
41
|
+
teal: "bg-teal-600",
|
|
42
|
+
cyan: "bg-cyan-600",
|
|
43
|
+
sky: "bg-sky-600",
|
|
44
|
+
blue: "bg-blue-600",
|
|
45
|
+
indigo: "bg-indigo-600",
|
|
46
|
+
violet: "bg-violet-600",
|
|
47
|
+
purple: "bg-purple-600",
|
|
48
|
+
fuchsia: "bg-fuchsia-600",
|
|
49
|
+
pink: "bg-pink-600",
|
|
50
|
+
rose: "bg-rose-600"
|
|
51
|
+
};
|
|
52
|
+
const ACTIVE_TEXT = {
|
|
53
|
+
slate: "text-white",
|
|
54
|
+
gray: "text-white",
|
|
55
|
+
zinc: "text-white",
|
|
56
|
+
neutral: "text-white",
|
|
57
|
+
stone: "text-white",
|
|
58
|
+
red: "text-white",
|
|
59
|
+
orange: "text-white",
|
|
60
|
+
amber: "text-white",
|
|
61
|
+
yellow: "text-slate-900",
|
|
62
|
+
lime: "text-white",
|
|
63
|
+
green: "text-white",
|
|
64
|
+
emerald: "text-white",
|
|
65
|
+
teal: "text-white",
|
|
66
|
+
cyan: "text-white",
|
|
67
|
+
sky: "text-white",
|
|
68
|
+
blue: "text-white",
|
|
69
|
+
indigo: "text-white",
|
|
70
|
+
violet: "text-white",
|
|
71
|
+
purple: "text-white",
|
|
72
|
+
fuchsia: "text-white",
|
|
73
|
+
pink: "text-white",
|
|
74
|
+
rose: "text-white"
|
|
49
75
|
};
|
|
50
76
|
const Btn = ({
|
|
51
77
|
children,
|
|
52
78
|
active,
|
|
53
79
|
disabled,
|
|
54
80
|
onClick
|
|
55
|
-
}) => /* @__PURE__ */
|
|
81
|
+
}) => /* @__PURE__ */ jsxs(
|
|
56
82
|
Button,
|
|
57
83
|
{
|
|
58
84
|
unstyled: true,
|
|
59
85
|
disabled,
|
|
60
86
|
onClick,
|
|
61
|
-
className: `h-10 min-w-10 px-3 inline-flex items-center justify-center text-[15px] font-medium transition
|
|
62
|
-
${active ? `${
|
|
87
|
+
className: `relative h-10 min-w-10 px-3 inline-flex items-center justify-center text-[15px] font-medium transition
|
|
88
|
+
${active ? `${ACTIVE_TEXT[color]}` : "text-slate-900 hover:bg-white/60"}
|
|
63
89
|
${disabled ? "opacity-40 cursor-not-allowed" : ""}`,
|
|
64
90
|
"aria-current": active ? "page" : void 0,
|
|
65
|
-
children
|
|
91
|
+
children: [
|
|
92
|
+
active && /* @__PURE__ */ jsx(
|
|
93
|
+
motion.span,
|
|
94
|
+
{
|
|
95
|
+
layoutId: "pagination-pill",
|
|
96
|
+
transition: springSm,
|
|
97
|
+
className: `absolute inset-0 rounded-2xl ${PILL_BG[color]} shadow-sm will-change-transform`,
|
|
98
|
+
style: { willChange: "transform" }
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
children
|
|
102
|
+
]
|
|
66
103
|
}
|
|
67
104
|
);
|
|
68
|
-
return /* @__PURE__ */ jsx("nav", { className: className || "w-full md:w-auto", children: /* @__PURE__ */ jsxs("div", { className: "inline-flex overflow-hidden rounded-2xl border border-slate-200 bg-slate-100/60 shadow-sm dark:border-white/10 dark:bg-white/5", children: [
|
|
105
|
+
return /* @__PURE__ */ jsx("nav", { className: className || "w-full md:w-auto", children: /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsxs("div", { className: "relative inline-flex overflow-hidden rounded-2xl border border-slate-200 bg-slate-100/60 shadow-sm dark:border-white/10 dark:bg-white/5", children: [
|
|
69
106
|
/* @__PURE__ */ jsx(Btn, { disabled: page === 1, onClick: () => onPageChange(page - 1), children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", className: "h-5 w-5", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M15 18l-6-6 6-6" }) }) }),
|
|
70
107
|
range.map(
|
|
71
108
|
(it, idx) => it === "..." ? /* @__PURE__ */ jsx("span", { className: "h-10 min-w-10 px-3 inline-flex items-center justify-center text-slate-500 dark:text-slate-400", children: "\u2026" }, `dots-${idx}`) : /* @__PURE__ */ jsx(Btn, { active: it === page, onClick: () => onPageChange(it), children: it }, it)
|
|
72
109
|
),
|
|
73
110
|
/* @__PURE__ */ jsx(Btn, { disabled: page === totalPages, onClick: () => onPageChange(page + 1), children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", className: "h-5 w-5", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M9 6l6 6-6 6" }) }) })
|
|
74
|
-
] }) });
|
|
111
|
+
] }) }) });
|
|
75
112
|
}
|
|
76
113
|
export {
|
|
77
114
|
Pagination as default
|
package/dist/ReviewHistory.js
CHANGED
|
@@ -37,6 +37,8 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
37
37
|
var import_Dialog = __toESM(require("./Dialog"));
|
|
38
38
|
var import_Button = __toESM(require("./Button"));
|
|
39
39
|
var import_Badge = __toESM(require("./Badge"));
|
|
40
|
+
var import_framer_motion = require("framer-motion");
|
|
41
|
+
var import_animations = require("./animations");
|
|
40
42
|
function ReviewHistory({
|
|
41
43
|
items,
|
|
42
44
|
loading,
|
|
@@ -49,9 +51,9 @@ function ReviewHistory({
|
|
|
49
51
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs text-muted", children: loading ? "Cargando\u2026" : `${items.length} total` })
|
|
50
52
|
] }),
|
|
51
53
|
latest.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm text-muted", children: "Sin registros" }),
|
|
52
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid gap-2", children: latest.map((r) => {
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: latest.map((r) => {
|
|
53
55
|
var _a;
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
56
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_framer_motion.motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -8 }, transition: import_animations.springSm, className: "rounded-xl border border-border bg-surface px-3 py-2 text-sm", children: [
|
|
55
57
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
56
58
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "font-medium", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Badge.default, { tone: statusTone(r.status), children: statusLabel(r.status) }) }),
|
|
57
59
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs text-muted", children: formatDateTime(r.created_at) })
|
|
@@ -59,7 +61,7 @@ function ReviewHistory({
|
|
|
59
61
|
r.comment && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-sm text-foreground whitespace-pre-line", children: r.comment }),
|
|
60
62
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-xs text-muted", children: r.by_name || r.by_email ? `${(_a = r.by_name) != null ? _a : ""} ${r.by_email ? `\xB7 ${r.by_email}` : ""}` : r.user_id ? "Usuario interno" : "Invitado" })
|
|
61
63
|
] }, r.id);
|
|
62
|
-
}) }),
|
|
64
|
+
}) }) }),
|
|
63
65
|
items.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pt-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.default, { unstyled: true, className: "text-sm text-blue-600 hover:underline dark:text-blue-400", onClick: onViewAll, children: "Ver todos" }) })
|
|
64
66
|
] });
|
|
65
67
|
}
|
|
@@ -72,9 +74,9 @@ function ReviewHistoryDialog({
|
|
|
72
74
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Dialog.default.Header, { title: "Historial de estado", onClose, showClose: true, compact: true }),
|
|
73
75
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Dialog.default.Body, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid gap-2", children: [
|
|
74
76
|
items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm text-muted", children: "Sin registros" }),
|
|
75
|
-
items.map((r) => {
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid gap-2", children: items.map((r) => {
|
|
76
78
|
var _a;
|
|
77
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
79
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_framer_motion.motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, transition: import_animations.springSm, className: "rounded-xl border border-border bg-surface px-3 py-2 text-sm", children: [
|
|
78
80
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
79
81
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "font-medium", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Badge.default, { tone: statusTone(r.status), children: statusLabel(r.status) }) }),
|
|
80
82
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs text-muted", children: formatDateTime(r.created_at) })
|
|
@@ -82,7 +84,7 @@ function ReviewHistoryDialog({
|
|
|
82
84
|
r.comment && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-sm text-foreground whitespace-pre-line", children: r.comment }),
|
|
83
85
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-xs text-muted", children: r.by_name || r.by_email ? `${(_a = r.by_name) != null ? _a : ""} ${r.by_email ? `\xB7 ${r.by_email}` : ""}` : r.user_id ? "Usuario interno" : "Invitado" })
|
|
84
86
|
] }, r.id);
|
|
85
|
-
})
|
|
87
|
+
}) })
|
|
86
88
|
] }) }),
|
|
87
89
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Dialog.default.Footer, { align: "end", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.default, { variant: "secondary", size: "md", className: "shadow-sm", onClick: onClose, children: "Cerrar" }) })
|
|
88
90
|
] });
|
package/dist/ReviewHistory.mjs
CHANGED
|
@@ -3,6 +3,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import Dialog from "./Dialog";
|
|
4
4
|
import Button from "./Button";
|
|
5
5
|
import Badge from "./Badge";
|
|
6
|
+
import { AnimatePresence, motion } from "framer-motion";
|
|
7
|
+
import { springSm } from "./animations";
|
|
6
8
|
function ReviewHistory({
|
|
7
9
|
items,
|
|
8
10
|
loading,
|
|
@@ -15,9 +17,9 @@ function ReviewHistory({
|
|
|
15
17
|
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted", children: loading ? "Cargando\u2026" : `${items.length} total` })
|
|
16
18
|
] }),
|
|
17
19
|
latest.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted", children: "Sin registros" }),
|
|
18
|
-
/* @__PURE__ */ jsx("div", { className: "grid gap-2", children: latest.map((r) => {
|
|
20
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-2", children: /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: latest.map((r) => {
|
|
19
21
|
var _a;
|
|
20
|
-
return /* @__PURE__ */ jsxs(
|
|
22
|
+
return /* @__PURE__ */ jsxs(motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -8 }, transition: springSm, className: "rounded-xl border border-border bg-surface px-3 py-2 text-sm", children: [
|
|
21
23
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
22
24
|
/* @__PURE__ */ jsx("div", { className: "font-medium", children: /* @__PURE__ */ jsx(Badge, { tone: statusTone(r.status), children: statusLabel(r.status) }) }),
|
|
23
25
|
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted", children: formatDateTime(r.created_at) })
|
|
@@ -25,7 +27,7 @@ function ReviewHistory({
|
|
|
25
27
|
r.comment && /* @__PURE__ */ jsx("div", { className: "mt-1 text-sm text-foreground whitespace-pre-line", children: r.comment }),
|
|
26
28
|
/* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-muted", children: r.by_name || r.by_email ? `${(_a = r.by_name) != null ? _a : ""} ${r.by_email ? `\xB7 ${r.by_email}` : ""}` : r.user_id ? "Usuario interno" : "Invitado" })
|
|
27
29
|
] }, r.id);
|
|
28
|
-
}) }),
|
|
30
|
+
}) }) }),
|
|
29
31
|
items.length > 3 && /* @__PURE__ */ jsx("div", { className: "pt-1", children: /* @__PURE__ */ jsx(Button, { unstyled: true, className: "text-sm text-blue-600 hover:underline dark:text-blue-400", onClick: onViewAll, children: "Ver todos" }) })
|
|
30
32
|
] });
|
|
31
33
|
}
|
|
@@ -38,9 +40,9 @@ function ReviewHistoryDialog({
|
|
|
38
40
|
/* @__PURE__ */ jsx(Dialog.Header, { title: "Historial de estado", onClose, showClose: true, compact: true }),
|
|
39
41
|
/* @__PURE__ */ jsx(Dialog.Body, { children: /* @__PURE__ */ jsxs("div", { className: "grid gap-2", children: [
|
|
40
42
|
items.length === 0 && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted", children: "Sin registros" }),
|
|
41
|
-
items.map((r) => {
|
|
43
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-2", children: items.map((r) => {
|
|
42
44
|
var _a;
|
|
43
|
-
return /* @__PURE__ */ jsxs(
|
|
45
|
+
return /* @__PURE__ */ jsxs(motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, transition: springSm, className: "rounded-xl border border-border bg-surface px-3 py-2 text-sm", children: [
|
|
44
46
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
45
47
|
/* @__PURE__ */ jsx("div", { className: "font-medium", children: /* @__PURE__ */ jsx(Badge, { tone: statusTone(r.status), children: statusLabel(r.status) }) }),
|
|
46
48
|
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted", children: formatDateTime(r.created_at) })
|
|
@@ -48,7 +50,7 @@ function ReviewHistoryDialog({
|
|
|
48
50
|
r.comment && /* @__PURE__ */ jsx("div", { className: "mt-1 text-sm text-foreground whitespace-pre-line", children: r.comment }),
|
|
49
51
|
/* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-muted", children: r.by_name || r.by_email ? `${(_a = r.by_name) != null ? _a : ""} ${r.by_email ? `\xB7 ${r.by_email}` : ""}` : r.user_id ? "Usuario interno" : "Invitado" })
|
|
50
52
|
] }, r.id);
|
|
51
|
-
})
|
|
53
|
+
}) })
|
|
52
54
|
] }) }),
|
|
53
55
|
/* @__PURE__ */ jsx(Dialog.Footer, { align: "end", children: /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "md", className: "shadow-sm", onClick: onClose, children: "Cerrar" }) })
|
|
54
56
|
] });
|
package/dist/SearchInput.js
CHANGED
|
@@ -34,6 +34,8 @@ __export(SearchInput_exports, {
|
|
|
34
34
|
module.exports = __toCommonJS(SearchInput_exports);
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
36
|
var import_react = __toESM(require("react"));
|
|
37
|
+
var import_framer_motion = require("framer-motion");
|
|
38
|
+
var import_animations = require("./animations");
|
|
37
39
|
var import_Input = __toESM(require("./Input"));
|
|
38
40
|
function SearchInput({
|
|
39
41
|
value,
|
|
@@ -71,14 +73,17 @@ function SearchInput({
|
|
|
71
73
|
}
|
|
72
74
|
},
|
|
73
75
|
rightSlot: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
74
|
-
|
|
76
|
+
import_framer_motion.motion.svg,
|
|
75
77
|
{
|
|
76
78
|
viewBox: "0 0 24 24",
|
|
77
|
-
className: "h-5 w-5 opacity-
|
|
79
|
+
className: "h-5 w-5 opacity-60",
|
|
78
80
|
fill: "none",
|
|
79
81
|
stroke: "currentColor",
|
|
80
82
|
strokeWidth: "2",
|
|
81
83
|
"aria-hidden": "true",
|
|
84
|
+
initial: false,
|
|
85
|
+
animate: { x: value ? 2 : 0, opacity: value ? 0.8 : 0.6 },
|
|
86
|
+
transition: import_animations.microTransition,
|
|
82
87
|
children: [
|
|
83
88
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "m21 21-4.3-4.3" }),
|
|
84
89
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "11", cy: "11", r: "7" })
|
|
@@ -86,6 +91,15 @@ function SearchInput({
|
|
|
86
91
|
}
|
|
87
92
|
)
|
|
88
93
|
}
|
|
94
|
+
),
|
|
95
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
96
|
+
import_framer_motion.motion.span,
|
|
97
|
+
{
|
|
98
|
+
className: "pointer-events-none absolute inset-0 rounded-2xl ring-2 ring-sky-400/20",
|
|
99
|
+
initial: { opacity: 0 },
|
|
100
|
+
animate: { opacity: value ? 1 : 0 },
|
|
101
|
+
transition: import_animations.microTransition
|
|
102
|
+
}
|
|
89
103
|
)
|
|
90
104
|
] });
|
|
91
105
|
}
|
package/dist/SearchInput.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
|
+
import { motion } from "framer-motion";
|
|
5
|
+
import { microTransition } from "./animations";
|
|
4
6
|
import Input from "./Input";
|
|
5
7
|
function SearchInput({
|
|
6
8
|
value,
|
|
@@ -38,14 +40,17 @@ function SearchInput({
|
|
|
38
40
|
}
|
|
39
41
|
},
|
|
40
42
|
rightSlot: /* @__PURE__ */ jsxs(
|
|
41
|
-
|
|
43
|
+
motion.svg,
|
|
42
44
|
{
|
|
43
45
|
viewBox: "0 0 24 24",
|
|
44
|
-
className: "h-5 w-5 opacity-
|
|
46
|
+
className: "h-5 w-5 opacity-60",
|
|
45
47
|
fill: "none",
|
|
46
48
|
stroke: "currentColor",
|
|
47
49
|
strokeWidth: "2",
|
|
48
50
|
"aria-hidden": "true",
|
|
51
|
+
initial: false,
|
|
52
|
+
animate: { x: value ? 2 : 0, opacity: value ? 0.8 : 0.6 },
|
|
53
|
+
transition: microTransition,
|
|
49
54
|
children: [
|
|
50
55
|
/* @__PURE__ */ jsx("path", { d: "m21 21-4.3-4.3" }),
|
|
51
56
|
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "7" })
|
|
@@ -53,6 +58,15 @@ function SearchInput({
|
|
|
53
58
|
}
|
|
54
59
|
)
|
|
55
60
|
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsx(
|
|
63
|
+
motion.span,
|
|
64
|
+
{
|
|
65
|
+
className: "pointer-events-none absolute inset-0 rounded-2xl ring-2 ring-sky-400/20",
|
|
66
|
+
initial: { opacity: 0 },
|
|
67
|
+
animate: { opacity: value ? 1 : 0 },
|
|
68
|
+
transition: microTransition
|
|
69
|
+
}
|
|
56
70
|
)
|
|
57
71
|
] });
|
|
58
72
|
}
|
package/dist/Select.js
CHANGED
|
@@ -34,6 +34,8 @@ __export(Select_exports, {
|
|
|
34
34
|
module.exports = __toCommonJS(Select_exports);
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
36
|
var import_react = __toESM(require("react"));
|
|
37
|
+
var import_framer_motion = require("framer-motion");
|
|
38
|
+
var import_animations = require("./animations");
|
|
37
39
|
var import_Button = __toESM(require("./Button"));
|
|
38
40
|
const S = {
|
|
39
41
|
sm: { h: "h-8", text: "text-[13px]", radius: "rounded-xl", padX: "px-3", itemPad: "px-3 py-1.5" },
|
|
@@ -223,9 +225,14 @@ function ModernSelect({
|
|
|
223
225
|
}
|
|
224
226
|
)
|
|
225
227
|
] }),
|
|
226
|
-
open
|
|
227
|
-
|
|
228
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.AnimatePresence, { initial: false, children: open ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
229
|
+
import_framer_motion.motion.ul,
|
|
228
230
|
{
|
|
231
|
+
variants: import_animations.popOver,
|
|
232
|
+
initial: "initial",
|
|
233
|
+
animate: "animate",
|
|
234
|
+
exit: "exit",
|
|
235
|
+
transition: import_animations.menuTransition,
|
|
229
236
|
id: `${selectId}-listbox`,
|
|
230
237
|
role: "listbox",
|
|
231
238
|
ref: listRef,
|
|
@@ -241,7 +248,8 @@ function ModernSelect({
|
|
|
241
248
|
top: menuPos.top,
|
|
242
249
|
left: menuPos.left,
|
|
243
250
|
width: menuPos.width,
|
|
244
|
-
maxWidth: "calc(100vw - 24px)"
|
|
251
|
+
maxWidth: "calc(100vw - 24px)",
|
|
252
|
+
willChange: "transform, opacity"
|
|
245
253
|
},
|
|
246
254
|
children: [
|
|
247
255
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -290,7 +298,7 @@ function ModernSelect({
|
|
|
290
298
|
})
|
|
291
299
|
]
|
|
292
300
|
}
|
|
293
|
-
),
|
|
301
|
+
) : null }),
|
|
294
302
|
hasError ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { id: errorId, className: "mt-1 text-[12px] text-blue-600", children: typeof error === "string" ? error : "Corrige este campo" }) : hint ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { id: hintId, className: "mt-1 text-[12px] text-slate-500", children: hint }) : null
|
|
295
303
|
] });
|
|
296
304
|
}
|
package/dist/Select.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from "react";
|
|
4
|
+
import { AnimatePresence, motion } from "framer-motion";
|
|
5
|
+
import { popOver, menuTransition } from "./animations";
|
|
4
6
|
import Button from "./Button";
|
|
5
7
|
const S = {
|
|
6
8
|
sm: { h: "h-8", text: "text-[13px]", radius: "rounded-xl", padX: "px-3", itemPad: "px-3 py-1.5" },
|
|
@@ -190,9 +192,14 @@ function ModernSelect({
|
|
|
190
192
|
}
|
|
191
193
|
)
|
|
192
194
|
] }),
|
|
193
|
-
open
|
|
194
|
-
|
|
195
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: open ? /* @__PURE__ */ jsxs(
|
|
196
|
+
motion.ul,
|
|
195
197
|
{
|
|
198
|
+
variants: popOver,
|
|
199
|
+
initial: "initial",
|
|
200
|
+
animate: "animate",
|
|
201
|
+
exit: "exit",
|
|
202
|
+
transition: menuTransition,
|
|
196
203
|
id: `${selectId}-listbox`,
|
|
197
204
|
role: "listbox",
|
|
198
205
|
ref: listRef,
|
|
@@ -208,7 +215,8 @@ function ModernSelect({
|
|
|
208
215
|
top: menuPos.top,
|
|
209
216
|
left: menuPos.left,
|
|
210
217
|
width: menuPos.width,
|
|
211
|
-
maxWidth: "calc(100vw - 24px)"
|
|
218
|
+
maxWidth: "calc(100vw - 24px)",
|
|
219
|
+
willChange: "transform, opacity"
|
|
212
220
|
},
|
|
213
221
|
children: [
|
|
214
222
|
/* @__PURE__ */ jsx(
|
|
@@ -257,7 +265,7 @@ function ModernSelect({
|
|
|
257
265
|
})
|
|
258
266
|
]
|
|
259
267
|
}
|
|
260
|
-
),
|
|
268
|
+
) : null }),
|
|
261
269
|
hasError ? /* @__PURE__ */ jsx("div", { id: errorId, className: "mt-1 text-[12px] text-blue-600", children: typeof error === "string" ? error : "Corrige este campo" }) : hint ? /* @__PURE__ */ jsx("div", { id: hintId, className: "mt-1 text-[12px] text-slate-500", children: hint }) : null
|
|
262
270
|
] });
|
|
263
271
|
}
|
package/dist/Sidebar.js
CHANGED
|
@@ -415,10 +415,19 @@ function RenderItem({
|
|
|
415
415
|
"div",
|
|
416
416
|
{
|
|
417
417
|
className: [
|
|
418
|
-
"flex w-full min-w-0 items-center rounded-2xl px-3 py-2 text-[15px] transition gap-2",
|
|
418
|
+
"relative flex w-full min-w-0 items-center rounded-2xl px-3 py-2 text-[15px] transition gap-2",
|
|
419
419
|
isActive ? `${WRAP_ACTIVE[color]} text-slate-900 dark:text-white` : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10"
|
|
420
420
|
].join(" "),
|
|
421
421
|
children: [
|
|
422
|
+
isActive && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
423
|
+
import_framer_motion.motion.span,
|
|
424
|
+
{
|
|
425
|
+
layoutId: "sidebar-active",
|
|
426
|
+
className: `absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]} will-change-transform`,
|
|
427
|
+
transition: { type: "spring", stiffness: 300, damping: 26 },
|
|
428
|
+
style: { zIndex: 0, willChange: "transform" }
|
|
429
|
+
}
|
|
430
|
+
),
|
|
422
431
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_Button.default, { unstyled: true, type: "button", onClick: () => go(item.key), className: "flex min-w-0 flex-1 items-center gap-3", children: [
|
|
423
432
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
424
433
|
"span",
|
|
@@ -493,11 +502,20 @@ function RenderItem({
|
|
|
493
502
|
onClick: () => go(item.key),
|
|
494
503
|
title: collapsed ? item.label : void 0,
|
|
495
504
|
className: [
|
|
496
|
-
"group flex w-full min-w-0 items-center gap-3 rounded-2xl px-3 py-2 text-left text-[15px] transition",
|
|
505
|
+
"group relative flex w-full min-w-0 items-center gap-3 rounded-2xl px-3 py-2 text-left text-[15px] transition",
|
|
497
506
|
active ? `${WRAP_ACTIVE[color]} text-slate-900 dark:text-white` : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
|
|
498
507
|
collapsed ? "justify-center" : ""
|
|
499
508
|
].join(" "),
|
|
500
509
|
children: [
|
|
510
|
+
active && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
511
|
+
import_framer_motion.motion.span,
|
|
512
|
+
{
|
|
513
|
+
layoutId: "sidebar-active",
|
|
514
|
+
className: `absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]} will-change-transform`,
|
|
515
|
+
transition: { type: "spring", stiffness: 300, damping: 26 },
|
|
516
|
+
style: { zIndex: 0, willChange: "transform" }
|
|
517
|
+
}
|
|
518
|
+
),
|
|
501
519
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
502
520
|
"span",
|
|
503
521
|
{
|
package/dist/Sidebar.mjs
CHANGED
|
@@ -382,10 +382,19 @@ function RenderItem({
|
|
|
382
382
|
"div",
|
|
383
383
|
{
|
|
384
384
|
className: [
|
|
385
|
-
"flex w-full min-w-0 items-center rounded-2xl px-3 py-2 text-[15px] transition gap-2",
|
|
385
|
+
"relative flex w-full min-w-0 items-center rounded-2xl px-3 py-2 text-[15px] transition gap-2",
|
|
386
386
|
isActive ? `${WRAP_ACTIVE[color]} text-slate-900 dark:text-white` : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10"
|
|
387
387
|
].join(" "),
|
|
388
388
|
children: [
|
|
389
|
+
isActive && /* @__PURE__ */ jsx(
|
|
390
|
+
motion.span,
|
|
391
|
+
{
|
|
392
|
+
layoutId: "sidebar-active",
|
|
393
|
+
className: `absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]} will-change-transform`,
|
|
394
|
+
transition: { type: "spring", stiffness: 300, damping: 26 },
|
|
395
|
+
style: { zIndex: 0, willChange: "transform" }
|
|
396
|
+
}
|
|
397
|
+
),
|
|
389
398
|
/* @__PURE__ */ jsxs(Button, { unstyled: true, type: "button", onClick: () => go(item.key), className: "flex min-w-0 flex-1 items-center gap-3", children: [
|
|
390
399
|
/* @__PURE__ */ jsx(
|
|
391
400
|
"span",
|
|
@@ -460,11 +469,20 @@ function RenderItem({
|
|
|
460
469
|
onClick: () => go(item.key),
|
|
461
470
|
title: collapsed ? item.label : void 0,
|
|
462
471
|
className: [
|
|
463
|
-
"group flex w-full min-w-0 items-center gap-3 rounded-2xl px-3 py-2 text-left text-[15px] transition",
|
|
472
|
+
"group relative flex w-full min-w-0 items-center gap-3 rounded-2xl px-3 py-2 text-left text-[15px] transition",
|
|
464
473
|
active ? `${WRAP_ACTIVE[color]} text-slate-900 dark:text-white` : "text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/10",
|
|
465
474
|
collapsed ? "justify-center" : ""
|
|
466
475
|
].join(" "),
|
|
467
476
|
children: [
|
|
477
|
+
active && /* @__PURE__ */ jsx(
|
|
478
|
+
motion.span,
|
|
479
|
+
{
|
|
480
|
+
layoutId: "sidebar-active",
|
|
481
|
+
className: `absolute inset-0 rounded-2xl ${WRAP_ACTIVE[color]} will-change-transform`,
|
|
482
|
+
transition: { type: "spring", stiffness: 300, damping: 26 },
|
|
483
|
+
style: { zIndex: 0, willChange: "transform" }
|
|
484
|
+
}
|
|
485
|
+
),
|
|
468
486
|
/* @__PURE__ */ jsx(
|
|
469
487
|
"span",
|
|
470
488
|
{
|
package/dist/StatCard.js
CHANGED
|
@@ -26,14 +26,30 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
26
26
|
var import_framer_motion = require("framer-motion");
|
|
27
27
|
var import_react = require("react");
|
|
28
28
|
var import_recharts = require("recharts");
|
|
29
|
+
function MotionNumber({ value, format }) {
|
|
30
|
+
const mv = (0, import_framer_motion.useMotionValue)(value);
|
|
31
|
+
const [display, setDisplay] = (0, import_react.useState)(value);
|
|
32
|
+
const prevRef = (0, import_react.useRef)(value);
|
|
33
|
+
(0, import_react.useEffect)(() => {
|
|
34
|
+
const controls = (0, import_framer_motion.animate)(mv, value, { duration: 0.5, ease: "easeOut" });
|
|
35
|
+
const unsub = mv.on("change", (v) => setDisplay(v));
|
|
36
|
+
prevRef.current = value;
|
|
37
|
+
return () => {
|
|
38
|
+
controls.stop();
|
|
39
|
+
unsub();
|
|
40
|
+
};
|
|
41
|
+
}, [value]);
|
|
42
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: format ? format(display) : Math.round(display).toLocaleString() });
|
|
43
|
+
}
|
|
29
44
|
function StatCard({ title, value, hint, spark }) {
|
|
30
45
|
var _a;
|
|
31
46
|
const gid = (0, import_react.useId)();
|
|
32
47
|
const color = (_a = spark == null ? void 0 : spark.color) != null ? _a : "#10b981";
|
|
48
|
+
const isNumber = typeof value === "number";
|
|
33
49
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_framer_motion.motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.25 }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "h-full group relative overflow-hidden rounded-2xl border border-slate-200 bg-white/80 p-4 shadow-sm ring-1 ring-black/5 backdrop-blur transition hover:shadow-md dark:border-white/10 dark:bg-white/5", children: [
|
|
34
50
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative z-10", children: [
|
|
35
51
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: title }),
|
|
36
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-2xl font-semibold tracking-tight", children: value }),
|
|
52
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-2xl font-semibold tracking-tight", children: isNumber ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MotionNumber, { value }) : value }),
|
|
37
53
|
hint && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-xs text-slate-400", children: hint })
|
|
38
54
|
] }),
|
|
39
55
|
spark && spark.values.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-y-0 right-0 w-1/2 opacity-90", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_recharts.AreaChart, { data: spark.values.map((v, i) => ({ i, v })), margin: { top: 8, bottom: 0, left: 0, right: 0 }, children: [
|
package/dist/StatCard.mjs
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { motion } from "framer-motion";
|
|
4
|
-
import { useId } from "react";
|
|
3
|
+
import { animate, motion, useMotionValue } from "framer-motion";
|
|
4
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
5
5
|
import { Area, AreaChart, ResponsiveContainer } from "recharts";
|
|
6
|
+
function MotionNumber({ value, format }) {
|
|
7
|
+
const mv = useMotionValue(value);
|
|
8
|
+
const [display, setDisplay] = useState(value);
|
|
9
|
+
const prevRef = useRef(value);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
const controls = animate(mv, value, { duration: 0.5, ease: "easeOut" });
|
|
12
|
+
const unsub = mv.on("change", (v) => setDisplay(v));
|
|
13
|
+
prevRef.current = value;
|
|
14
|
+
return () => {
|
|
15
|
+
controls.stop();
|
|
16
|
+
unsub();
|
|
17
|
+
};
|
|
18
|
+
}, [value]);
|
|
19
|
+
return /* @__PURE__ */ jsx("span", { children: format ? format(display) : Math.round(display).toLocaleString() });
|
|
20
|
+
}
|
|
6
21
|
function StatCard({ title, value, hint, spark }) {
|
|
7
22
|
var _a;
|
|
8
23
|
const gid = useId();
|
|
9
24
|
const color = (_a = spark == null ? void 0 : spark.color) != null ? _a : "#10b981";
|
|
25
|
+
const isNumber = typeof value === "number";
|
|
10
26
|
return /* @__PURE__ */ jsx(motion.div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.25 }, children: /* @__PURE__ */ jsxs("div", { className: "h-full group relative overflow-hidden rounded-2xl border border-slate-200 bg-white/80 p-4 shadow-sm ring-1 ring-black/5 backdrop-blur transition hover:shadow-md dark:border-white/10 dark:bg-white/5", children: [
|
|
11
27
|
/* @__PURE__ */ jsxs("div", { className: "relative z-10", children: [
|
|
12
28
|
/* @__PURE__ */ jsx("div", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: title }),
|
|
13
|
-
/* @__PURE__ */ jsx("div", { className: "mt-1 text-2xl font-semibold tracking-tight", children: value }),
|
|
29
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1 text-2xl font-semibold tracking-tight", children: isNumber ? /* @__PURE__ */ jsx(MotionNumber, { value }) : value }),
|
|
14
30
|
hint && /* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-slate-400", children: hint })
|
|
15
31
|
] }),
|
|
16
32
|
spark && spark.values.length > 1 && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 w-1/2 opacity-90", children: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxs(AreaChart, { data: spark.values.map((v, i) => ({ i, v })), margin: { top: 8, bottom: 0, left: 0, right: 0 }, children: [
|