@eduardoalvarez/arrecife 0.2.0 → 0.4.0
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/CHANGELOG.md +40 -0
- package/README.md +124 -2
- package/dist/brand/index.cjs +9 -8
- package/dist/brand/index.js +4 -2
- package/dist/chart/index.cjs +287 -0
- package/dist/chart/index.d.cts +127 -0
- package/dist/chart/index.d.ts +127 -0
- package/dist/chart/index.js +103 -0
- package/dist/chunk-KPZNNMV5.js +83 -0
- package/dist/chunk-MLKGABMK.js +7 -0
- package/dist/chunk-NHS7ETKJ.js +27 -0
- package/dist/{chunk-ZL5X6XO7.js → chunk-TB3IYPOD.js} +4 -25
- package/dist/{chunk-DHF63QNM.js → chunk-TSPJOM6K.js} +10 -12
- package/dist/chunk-UOWIDFCB.js +81 -0
- package/dist/{chunk-22OXRTAL.js → chunk-VPT32GPG.js} +2 -1
- package/dist/chunk-ZEOQKRQ7.js +19 -0
- package/dist/form/index.cjs +301 -0
- package/dist/form/index.d.cts +86 -0
- package/dist/form/index.d.ts +86 -0
- package/dist/form/index.js +84 -0
- package/dist/index.cjs +832 -332
- package/dist/index.d.cts +332 -29
- package/dist/index.d.ts +332 -29
- package/dist/index.js +746 -445
- package/dist/label-DuTvJGxD.d.cts +14 -0
- package/dist/label-DuTvJGxD.d.ts +14 -0
- package/dist/og/index.js +2 -1
- package/dist/shiki/index.js +2 -1
- package/dist/tema/index.cjs +94 -0
- package/dist/tema/index.d.cts +110 -0
- package/dist/tema/index.d.ts +110 -0
- package/dist/tema/index.js +2 -0
- package/dist/tokens/index.cjs +11 -5
- package/dist/tokens/index.d.cts +65 -11
- package/dist/tokens/index.d.ts +65 -11
- package/dist/tokens/index.js +3 -2
- package/dist/tokens/theme.css +21 -5
- package/llms.txt +329 -24
- package/package.json +35 -4
package/dist/index.js
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
|
-
export { tokens } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
1
|
+
export { tokens } from './chunk-VPT32GPG.js';
|
|
2
|
+
import { alternarTema, temaActual, escucharTema } from './chunk-KPZNNMV5.js';
|
|
3
|
+
export { TEMA_ATRIBUTO, TEMA_CLAVE, TEMA_EVENTO, alternarTema, aplicarTema, escucharTema, scriptTema, temaActual, temaGuardado, temaPreferido } from './chunk-KPZNNMV5.js';
|
|
4
|
+
import { CaraDeMascota, Mascota } from './chunk-TB3IYPOD.js';
|
|
5
|
+
export { CaraDeMascota, Isotipo, Logo, Mascota } from './chunk-TB3IYPOD.js';
|
|
4
6
|
export { RUTA_ASSETS, aletas, caras, listaCaras, listaPoses, poses, usoDeCara } from './chunk-E3OMP2DL.js';
|
|
5
|
-
import {
|
|
6
|
-
export {
|
|
7
|
-
import {
|
|
7
|
+
import { Label } from './chunk-ZEOQKRQ7.js';
|
|
8
|
+
export { Label } from './chunk-ZEOQKRQ7.js';
|
|
9
|
+
import { Text } from './chunk-UOWIDFCB.js';
|
|
10
|
+
export { Text, texto as textVariants } from './chunk-UOWIDFCB.js';
|
|
11
|
+
import { cn } from './chunk-NHS7ETKJ.js';
|
|
12
|
+
export { cn } from './chunk-NHS7ETKJ.js';
|
|
13
|
+
import { naming } from './chunk-TSPJOM6K.js';
|
|
14
|
+
export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, series, shadow, sintaxis, size, spacing, tagline, typeScale } from './chunk-TSPJOM6K.js';
|
|
15
|
+
import { __export } from './chunk-MLKGABMK.js';
|
|
16
|
+
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
8
17
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
|
-
import
|
|
18
|
+
import { cva } from 'class-variance-authority';
|
|
19
|
+
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
10
20
|
import { Slot } from '@radix-ui/react-slot';
|
|
21
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
11
22
|
import { es } from 'date-fns/locale';
|
|
12
23
|
import { DayPicker } from 'react-day-picker';
|
|
13
24
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
14
25
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
15
26
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
16
|
-
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
17
27
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
18
28
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
19
29
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
@@ -22,10 +32,168 @@ import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
|
22
32
|
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
23
33
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
24
34
|
import * as ToastPrimitive from '@radix-ui/react-toast';
|
|
35
|
+
import { useSyncExternalStore, useRef, useState, useEffect, useCallback, useId } from 'react';
|
|
25
36
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
26
|
-
import { useRef, useState, useEffect, useCallback, useId } from 'react';
|
|
27
37
|
|
|
28
|
-
|
|
38
|
+
function Glyph({ children, ...props }) {
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
"svg",
|
|
41
|
+
{
|
|
42
|
+
viewBox: "0 0 16 16",
|
|
43
|
+
width: "1em",
|
|
44
|
+
height: "1em",
|
|
45
|
+
fill: "none",
|
|
46
|
+
stroke: "currentColor",
|
|
47
|
+
strokeWidth: 1.75,
|
|
48
|
+
strokeLinecap: "round",
|
|
49
|
+
strokeLinejoin: "round",
|
|
50
|
+
"aria-hidden": "true",
|
|
51
|
+
focusable: "false",
|
|
52
|
+
...props,
|
|
53
|
+
children
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
var Check = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M3 8.5 6.5 12 13 4.5" }) });
|
|
58
|
+
var Minus = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M3.5 8h9" }) });
|
|
59
|
+
var ChevronDown = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4" }) });
|
|
60
|
+
var ChevronUp = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M4 10l4-4 4 4" }) });
|
|
61
|
+
var ChevronLeft = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M10 4L6 8l4 4" }) });
|
|
62
|
+
var ChevronRight = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M6 4l4 4-4 4" }) });
|
|
63
|
+
var Close = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M4 4l8 8M12 4l-8 8" }) });
|
|
64
|
+
var Copy = (props) => /* @__PURE__ */ jsxs(Glyph, { ...props, children: [
|
|
65
|
+
/* @__PURE__ */ jsx("rect", { x: "5.5", y: "5.5", width: "8", height: "8", rx: "1.5" }),
|
|
66
|
+
/* @__PURE__ */ jsx("path", { d: "M10.5 3.5h-7a1.5 1.5 0 0 0-1.5 1.5v7" })
|
|
67
|
+
] });
|
|
68
|
+
var ArrowUpRight = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M5 11l6-6M5.5 5h5.5v5.5" }) });
|
|
69
|
+
var Ellipsis = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, strokeWidth: 2.25, children: /* @__PURE__ */ jsx("path", { d: "M4 8h.01M8 8h.01M12 8h.01" }) });
|
|
70
|
+
var Spinner = (props) => /* @__PURE__ */ jsxs(
|
|
71
|
+
"svg",
|
|
72
|
+
{
|
|
73
|
+
viewBox: "0 0 16 16",
|
|
74
|
+
width: "1em",
|
|
75
|
+
height: "1em",
|
|
76
|
+
fill: "none",
|
|
77
|
+
stroke: "currentColor",
|
|
78
|
+
strokeWidth: 2,
|
|
79
|
+
strokeLinecap: "round",
|
|
80
|
+
"aria-hidden": "true",
|
|
81
|
+
focusable: "false",
|
|
82
|
+
className: "motion-safe:animate-spin",
|
|
83
|
+
...props,
|
|
84
|
+
children: [
|
|
85
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "6", opacity: 0.3 }),
|
|
86
|
+
/* @__PURE__ */ jsx("path", { d: "M8 2a6 6 0 0 1 6 6" })
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
var Sol = (props) => /* @__PURE__ */ jsxs(Glyph, { ...props, children: [
|
|
91
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "3" }),
|
|
92
|
+
/* @__PURE__ */ jsx("path", { d: "M8 1.5v1.2M8 13.3v1.2M14.5 8h-1.2M2.7 8H1.5M12.6 3.4l-.85.85M4.25 11.75l-.85.85M12.6 12.6l-.85-.85M4.25 4.25l-.85-.85" })
|
|
93
|
+
] });
|
|
94
|
+
var Luna = (props) => /* @__PURE__ */ jsx(Glyph, { ...props, children: /* @__PURE__ */ jsx("path", { d: "M13.5 9.4A5.8 5.8 0 0 1 6.6 2.5a5.8 5.8 0 1 0 6.9 6.9Z" }) });
|
|
95
|
+
function GlifoMedia({ children, ...props }) {
|
|
96
|
+
return /* @__PURE__ */ jsx(
|
|
97
|
+
"svg",
|
|
98
|
+
{
|
|
99
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
100
|
+
viewBox: "0 0 24 24",
|
|
101
|
+
fill: "none",
|
|
102
|
+
"aria-hidden": "true",
|
|
103
|
+
focusable: "false",
|
|
104
|
+
...props,
|
|
105
|
+
children
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
var Play = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M8 5v14l11-7z" }) });
|
|
110
|
+
var Pause = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M6 4h4v16H6V4zm8 0h4v16h-4V4z" }) });
|
|
111
|
+
var Retry = (props) => /* @__PURE__ */ jsx(
|
|
112
|
+
GlifoMedia,
|
|
113
|
+
{
|
|
114
|
+
stroke: "currentColor",
|
|
115
|
+
strokeWidth: 2,
|
|
116
|
+
strokeLinecap: "round",
|
|
117
|
+
strokeLinejoin: "round",
|
|
118
|
+
...props,
|
|
119
|
+
children: /* @__PURE__ */ jsx("path", { d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" })
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
var GoBackSeconds = (props) => /* @__PURE__ */ jsxs(GlifoMedia, { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", ...props, children: [
|
|
123
|
+
/* @__PURE__ */ jsx("path", { d: "M16.5 8.5H13.8604C13.6452 8.5 13.4541 8.63772 13.386 8.84189L12.7194 10.8419C12.6114 11.1657 12.8524 11.5 13.1937 11.5H14.5C15.6046 11.5 16.5 12.3954 16.5 13.5C16.5 14.6046 15.6046 15.5 14.5 15.5H12.5" }),
|
|
124
|
+
/* @__PURE__ */ jsx("path", { d: "M7.5 10.5L10 8.5V15.5", strokeLinejoin: "round" }),
|
|
125
|
+
/* @__PURE__ */ jsx(
|
|
126
|
+
"path",
|
|
127
|
+
{
|
|
128
|
+
d: "M14 4.5L12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C8.7288 22 5.82446 20.4293 4 18.001M8 2.83209C6.87754 3.32251 5.86251 4.01303 5 4.85857C3.14864 6.67349 2 9.20261 2 12C2 12.6849 2.06886 13.3538 2.20004 14",
|
|
129
|
+
strokeLinejoin: "round"
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
] });
|
|
133
|
+
var AdvanceSeconds = (props) => /* @__PURE__ */ jsxs(GlifoMedia, { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", ...props, children: [
|
|
134
|
+
/* @__PURE__ */ jsx("path", { d: "M16.5 8.5H13.8604C13.6452 8.5 13.4541 8.63772 13.386 8.84189L12.7194 10.8419C12.6114 11.1657 12.8524 11.5 13.1937 11.5H14.5C15.6046 11.5 16.5 12.3954 16.5 13.5C16.5 14.6046 15.6046 15.5 14.5 15.5H12.5" }),
|
|
135
|
+
/* @__PURE__ */ jsx("path", { d: "M7.5 10.5L10 8.5V15.5", strokeLinejoin: "round" }),
|
|
136
|
+
/* @__PURE__ */ jsx(
|
|
137
|
+
"path",
|
|
138
|
+
{
|
|
139
|
+
d: "M10 4.5L12 2C6.47715 2 2 6.47715 2 12C2 12.6849 2.06886 13.3538 2.20004 14M16 2.83209C19.5318 4.3752 22 7.89936 22 12C22 17.5228 17.5228 22 12 22C8.72852 22 5.82443 20.4287 4 18",
|
|
140
|
+
strokeLinejoin: "round"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
] });
|
|
144
|
+
var VolumeOn = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" }) });
|
|
145
|
+
var VolumeMuted = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" }) });
|
|
146
|
+
function Accordion({ className, ...props }) {
|
|
147
|
+
return /* @__PURE__ */ jsx(
|
|
148
|
+
AccordionPrimitive.Root,
|
|
149
|
+
{
|
|
150
|
+
className: cn("border-hairline w-full border-t", className),
|
|
151
|
+
...props
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
function AccordionItem({
|
|
156
|
+
className,
|
|
157
|
+
...props
|
|
158
|
+
}) {
|
|
159
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Item, { className: cn("border-hairline border-b", className), ...props });
|
|
160
|
+
}
|
|
161
|
+
function AccordionTrigger({
|
|
162
|
+
className,
|
|
163
|
+
children,
|
|
164
|
+
headingLevel = 3,
|
|
165
|
+
...props
|
|
166
|
+
}) {
|
|
167
|
+
const Encabezado = `h${headingLevel}`;
|
|
168
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { asChild: true, children: /* @__PURE__ */ jsx(Encabezado, { children: /* @__PURE__ */ jsxs(
|
|
169
|
+
AccordionPrimitive.Trigger,
|
|
170
|
+
{
|
|
171
|
+
className: cn(
|
|
172
|
+
"gap-step-sm py-step-sm flex w-full cursor-pointer items-center justify-between text-left",
|
|
173
|
+
"font-sans text-lead font-medium text-text-primary",
|
|
174
|
+
"transition-standard",
|
|
175
|
+
"hover:text-accent",
|
|
176
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
177
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
178
|
+
"[&[data-state=open]>svg]:rotate-180",
|
|
179
|
+
className
|
|
180
|
+
),
|
|
181
|
+
...props,
|
|
182
|
+
children: [
|
|
183
|
+
children,
|
|
184
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "text-text-muted shrink-0" })
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
) }) });
|
|
188
|
+
}
|
|
189
|
+
function AccordionContent({
|
|
190
|
+
className,
|
|
191
|
+
children,
|
|
192
|
+
...props
|
|
193
|
+
}) {
|
|
194
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Content, { className: "overflow-hidden", ...props, children: /* @__PURE__ */ jsx("div", { className: cn("pb-step-md font-sans text-ui text-text-secondary max-w-measure", className), children }) });
|
|
195
|
+
}
|
|
196
|
+
var alert = cva("w-full rounded-card border p-step-md font-sans text-ui", {
|
|
29
197
|
variants: {
|
|
30
198
|
variant: {
|
|
31
199
|
accent: "text-text-secondary",
|
|
@@ -78,7 +246,7 @@ function Alert({
|
|
|
78
246
|
role: tono === "error" ? "alert" : "status",
|
|
79
247
|
className: cn(alert({ variant, enfasis }), className),
|
|
80
248
|
...props,
|
|
81
|
-
children: /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-start", children: [
|
|
249
|
+
children: /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-start", children: [
|
|
82
250
|
/* @__PURE__ */ jsx(
|
|
83
251
|
"span",
|
|
84
252
|
{
|
|
@@ -88,280 +256,274 @@ function Alert({
|
|
|
88
256
|
}
|
|
89
257
|
),
|
|
90
258
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
91
|
-
title ? /* @__PURE__ */ jsx("p", { className: "mb-xs text-text-primary font-medium", children: title }) : null,
|
|
259
|
+
title ? /* @__PURE__ */ jsx("p", { className: "mb-step-xs text-text-primary font-medium", children: title }) : null,
|
|
92
260
|
children ? /* @__PURE__ */ jsx("div", { className: "max-w-measure", children }) : null
|
|
93
261
|
] })
|
|
94
262
|
] })
|
|
95
263
|
}
|
|
96
264
|
);
|
|
97
265
|
}
|
|
98
|
-
var
|
|
99
|
-
|
|
266
|
+
var button = cva(
|
|
267
|
+
[
|
|
268
|
+
"inline-flex cursor-pointer items-center justify-center gap-step-xs whitespace-nowrap select-none",
|
|
269
|
+
"rounded-control font-sans font-medium",
|
|
270
|
+
"transition-standard",
|
|
271
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
272
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
273
|
+
"[&_svg]:shrink-0"
|
|
274
|
+
],
|
|
100
275
|
{
|
|
101
276
|
variants: {
|
|
277
|
+
variant: {
|
|
278
|
+
primary: [
|
|
279
|
+
"bg-accent text-accent-on hover:bg-accent-hover",
|
|
280
|
+
"light:bg-brand-hull light:text-accent-on light:hover:bg-text-secondary"
|
|
281
|
+
],
|
|
282
|
+
conversion: "bg-warm text-warm-on hover:bg-warm-hover",
|
|
283
|
+
secondary: [
|
|
284
|
+
"border-hairline-hover border bg-transparent text-text-primary",
|
|
285
|
+
"hover:border-accent hover:text-accent"
|
|
286
|
+
],
|
|
287
|
+
tertiary: [
|
|
288
|
+
"bg-transparent font-mono font-normal text-text-secondary",
|
|
289
|
+
"hover:text-accent hover:underline hover:underline-offset-4"
|
|
290
|
+
]
|
|
291
|
+
},
|
|
102
292
|
size: {
|
|
103
|
-
sm: "
|
|
104
|
-
md: "
|
|
105
|
-
lg: "
|
|
106
|
-
|
|
293
|
+
sm: "h-8 px-control-sm text-label",
|
|
294
|
+
md: "h-10 px-control-md text-ui",
|
|
295
|
+
lg: "h-12 px-control-lg text-lead",
|
|
296
|
+
/** Cuadrado 42×42, sin texto. Lleva `aria-label` obligatorio. */
|
|
297
|
+
icon: "size-control-icon p-0"
|
|
107
298
|
}
|
|
108
299
|
},
|
|
109
|
-
|
|
300
|
+
compoundVariants: [
|
|
301
|
+
/**
|
|
302
|
+
* El terciario no tiene caja: ni padding horizontal ni alto de control.
|
|
303
|
+
* Va aquí y no como `px-0` en la variante para que gane al `px-*` del
|
|
304
|
+
* tamaño sin depender del orden en que cva concatena las clases.
|
|
305
|
+
*/
|
|
306
|
+
{ variant: "tertiary", size: ["sm", "md", "lg"], class: "h-auto px-0" }
|
|
307
|
+
],
|
|
308
|
+
defaultVariants: { variant: "primary", size: "md" }
|
|
110
309
|
}
|
|
111
310
|
);
|
|
112
|
-
function
|
|
113
|
-
return /* @__PURE__ */ jsx(AvatarPrimitive.Root, { className: cn(avatar({ size: size2 }), className), ...props });
|
|
114
|
-
}
|
|
115
|
-
function AvatarImage({
|
|
311
|
+
function Button({
|
|
116
312
|
className,
|
|
313
|
+
variant,
|
|
314
|
+
size: size2,
|
|
315
|
+
asChild = false,
|
|
316
|
+
loading = false,
|
|
317
|
+
icon,
|
|
318
|
+
children,
|
|
319
|
+
disabled,
|
|
117
320
|
...props
|
|
118
321
|
}) {
|
|
119
|
-
|
|
322
|
+
if (asChild) {
|
|
323
|
+
return /* @__PURE__ */ jsx(Slot, { className: cn(button({ variant, size: size2 }), className), ...props, children });
|
|
324
|
+
}
|
|
325
|
+
return /* @__PURE__ */ jsxs(
|
|
326
|
+
"button",
|
|
327
|
+
{
|
|
328
|
+
className: cn(button({ variant, size: size2 }), className),
|
|
329
|
+
disabled: disabled === true || loading,
|
|
330
|
+
"aria-busy": loading || void 0,
|
|
331
|
+
...props,
|
|
332
|
+
children: [
|
|
333
|
+
loading ? /* @__PURE__ */ jsx(Spinner, {}) : icon,
|
|
334
|
+
children
|
|
335
|
+
]
|
|
336
|
+
}
|
|
337
|
+
);
|
|
120
338
|
}
|
|
121
|
-
|
|
339
|
+
var AlertDialog = AlertDialogPrimitive.Root;
|
|
340
|
+
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
341
|
+
function AlertDialogOverlay({
|
|
122
342
|
className,
|
|
123
343
|
...props
|
|
124
344
|
}) {
|
|
125
345
|
return /* @__PURE__ */ jsx(
|
|
126
|
-
|
|
346
|
+
AlertDialogPrimitive.Overlay,
|
|
127
347
|
{
|
|
128
|
-
className: cn(
|
|
129
|
-
"text-label font-mono text-text-secondary flex size-full items-center justify-center uppercase",
|
|
130
|
-
className
|
|
131
|
-
),
|
|
348
|
+
className: cn("bg-brand-hull/70 fixed inset-0 z-50", className),
|
|
132
349
|
...props
|
|
133
350
|
}
|
|
134
351
|
);
|
|
135
352
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
353
|
+
function AlertDialogContent({
|
|
354
|
+
className,
|
|
355
|
+
children,
|
|
356
|
+
...props
|
|
357
|
+
}) {
|
|
358
|
+
return /* @__PURE__ */ jsxs(AlertDialogPrimitive.Portal, { children: [
|
|
359
|
+
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
360
|
+
/* @__PURE__ */ jsx(
|
|
361
|
+
AlertDialogPrimitive.Content,
|
|
362
|
+
{
|
|
363
|
+
className: cn(
|
|
364
|
+
"fixed top-1/2 left-1/2 z-50 w-full max-w-content -translate-x-1/2 -translate-y-1/2",
|
|
365
|
+
"gap-step-md p-step-lg flex flex-col",
|
|
366
|
+
"rounded-panel border-border bg-surface shadow-standard border",
|
|
367
|
+
"text-text-primary font-sans",
|
|
368
|
+
className
|
|
369
|
+
),
|
|
370
|
+
...props,
|
|
371
|
+
children
|
|
147
372
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
);
|
|
152
|
-
function Badge({ className, variant, ...props }) {
|
|
153
|
-
return /* @__PURE__ */ jsx("span", { className: cn(badge({ variant }), className), ...props });
|
|
373
|
+
)
|
|
374
|
+
] });
|
|
154
375
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
"font-mono text-chip",
|
|
160
|
-
"border transition-standard"
|
|
161
|
-
],
|
|
162
|
-
{
|
|
163
|
-
variants: {
|
|
164
|
-
active: {
|
|
165
|
-
false: "border-warm/28 bg-transparent text-warm",
|
|
166
|
-
true: "border-warm bg-warm text-warm-on"
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
defaultVariants: { active: false }
|
|
170
|
-
}
|
|
171
|
-
);
|
|
172
|
-
function CategoryBadge({ className, active = false, ...props }) {
|
|
376
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
377
|
+
return /* @__PURE__ */ jsx("div", { className: cn("gap-step-xs flex flex-col", className), ...props });
|
|
378
|
+
}
|
|
379
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
173
380
|
return /* @__PURE__ */ jsx(
|
|
174
|
-
"
|
|
381
|
+
"div",
|
|
175
382
|
{
|
|
176
|
-
"
|
|
177
|
-
className: cn(categoria({ active }), className),
|
|
383
|
+
className: cn("gap-step-sm flex flex-col-reverse sm:flex-row sm:justify-end", className),
|
|
178
384
|
...props
|
|
179
385
|
}
|
|
180
386
|
);
|
|
181
387
|
}
|
|
182
|
-
|
|
183
|
-
|
|
388
|
+
function AlertDialogTitle({
|
|
389
|
+
className,
|
|
390
|
+
...props
|
|
391
|
+
}) {
|
|
184
392
|
return /* @__PURE__ */ jsx(
|
|
185
|
-
|
|
393
|
+
AlertDialogPrimitive.Title,
|
|
186
394
|
{
|
|
187
|
-
className: cn(
|
|
395
|
+
className: cn("text-h3 font-display text-text-primary", className),
|
|
188
396
|
...props
|
|
189
397
|
}
|
|
190
398
|
);
|
|
191
399
|
}
|
|
192
|
-
function
|
|
400
|
+
function AlertDialogDescription({
|
|
401
|
+
className,
|
|
402
|
+
...props
|
|
403
|
+
}) {
|
|
193
404
|
return /* @__PURE__ */ jsx(
|
|
194
|
-
|
|
405
|
+
AlertDialogPrimitive.Description,
|
|
195
406
|
{
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
height: "1em",
|
|
199
|
-
fill: "none",
|
|
200
|
-
stroke: "currentColor",
|
|
201
|
-
strokeWidth: 1.75,
|
|
202
|
-
strokeLinecap: "round",
|
|
203
|
-
strokeLinejoin: "round",
|
|
204
|
-
"aria-hidden": "true",
|
|
205
|
-
focusable: "false",
|
|
206
|
-
...props,
|
|
207
|
-
children
|
|
407
|
+
className: cn("text-ui text-text-secondary max-w-measure", className),
|
|
408
|
+
...props
|
|
208
409
|
}
|
|
209
410
|
);
|
|
210
411
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
412
|
+
function AlertDialogCancel({
|
|
413
|
+
className,
|
|
414
|
+
...props
|
|
415
|
+
}) {
|
|
416
|
+
return /* @__PURE__ */ jsx(
|
|
417
|
+
AlertDialogPrimitive.Cancel,
|
|
418
|
+
{
|
|
419
|
+
className: cn(button({ variant: "secondary" }), className),
|
|
420
|
+
...props
|
|
421
|
+
}
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
function AlertDialogAction({
|
|
425
|
+
className,
|
|
426
|
+
...props
|
|
427
|
+
}) {
|
|
428
|
+
return /* @__PURE__ */ jsx(
|
|
429
|
+
AlertDialogPrimitive.Action,
|
|
430
|
+
{
|
|
431
|
+
className: cn(button({ variant: "primary" }), className),
|
|
432
|
+
...props
|
|
433
|
+
}
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
var avatar = cva(
|
|
437
|
+
"relative flex shrink-0 overflow-hidden rounded-pill bg-surface-raised border border-hairline",
|
|
226
438
|
{
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
className: "motion-safe:animate-spin",
|
|
237
|
-
...props,
|
|
238
|
-
children: [
|
|
239
|
-
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "6", opacity: 0.3 }),
|
|
240
|
-
/* @__PURE__ */ jsx("path", { d: "M8 2a6 6 0 0 1 6 6" })
|
|
241
|
-
]
|
|
439
|
+
variants: {
|
|
440
|
+
size: {
|
|
441
|
+
sm: "size-8",
|
|
442
|
+
md: "size-10",
|
|
443
|
+
lg: "size-14",
|
|
444
|
+
xl: "size-24"
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
defaultVariants: { size: "md" }
|
|
242
448
|
}
|
|
243
449
|
);
|
|
244
|
-
function
|
|
450
|
+
function Avatar({ className, size: size2, ...props }) {
|
|
451
|
+
return /* @__PURE__ */ jsx(AvatarPrimitive.Root, { className: cn(avatar({ size: size2 }), className), ...props });
|
|
452
|
+
}
|
|
453
|
+
function AvatarImage({
|
|
454
|
+
className,
|
|
455
|
+
...props
|
|
456
|
+
}) {
|
|
457
|
+
return /* @__PURE__ */ jsx(AvatarPrimitive.Image, { className: cn("aspect-square size-full object-cover", className), ...props });
|
|
458
|
+
}
|
|
459
|
+
function AvatarFallback({
|
|
460
|
+
className,
|
|
461
|
+
...props
|
|
462
|
+
}) {
|
|
245
463
|
return /* @__PURE__ */ jsx(
|
|
246
|
-
|
|
464
|
+
AvatarPrimitive.Fallback,
|
|
247
465
|
{
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
...props,
|
|
254
|
-
children
|
|
466
|
+
className: cn(
|
|
467
|
+
"text-label font-mono text-text-secondary flex size-full items-center justify-center uppercase",
|
|
468
|
+
className
|
|
469
|
+
),
|
|
470
|
+
...props
|
|
255
471
|
}
|
|
256
472
|
);
|
|
257
473
|
}
|
|
258
|
-
var
|
|
259
|
-
|
|
260
|
-
var Retry = (props) => /* @__PURE__ */ jsx(
|
|
261
|
-
GlifoMedia,
|
|
474
|
+
var badge = cva(
|
|
475
|
+
["inline-flex items-center gap-step-xs", "rounded-chip px-step-xs py-0.5", "font-sans text-tag", "transition-standard"],
|
|
262
476
|
{
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
477
|
+
variants: {
|
|
478
|
+
variant: {
|
|
479
|
+
neutral: "bg-surface-raised text-text-secondary",
|
|
480
|
+
accent: "bg-accent/8 text-text-primary",
|
|
481
|
+
warm: "bg-warm/8 text-text-primary",
|
|
482
|
+
success: "bg-success/8 text-text-primary",
|
|
483
|
+
warning: "bg-warning/8 text-text-primary",
|
|
484
|
+
error: "bg-error/8 text-text-primary"
|
|
485
|
+
}
|
|
486
|
+
},
|
|
487
|
+
defaultVariants: { variant: "neutral" }
|
|
269
488
|
}
|
|
270
489
|
);
|
|
271
|
-
|
|
272
|
-
/* @__PURE__ */ jsx("
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
"path",
|
|
276
|
-
{
|
|
277
|
-
d: "M14 4.5L12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C8.7288 22 5.82446 20.4293 4 18.001M8 2.83209C6.87754 3.32251 5.86251 4.01303 5 4.85857C3.14864 6.67349 2 9.20261 2 12C2 12.6849 2.06886 13.3538 2.20004 14",
|
|
278
|
-
strokeLinejoin: "round"
|
|
279
|
-
}
|
|
280
|
-
)
|
|
281
|
-
] });
|
|
282
|
-
var AdvanceSeconds = (props) => /* @__PURE__ */ jsxs(GlifoMedia, { stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", ...props, children: [
|
|
283
|
-
/* @__PURE__ */ jsx("path", { d: "M16.5 8.5H13.8604C13.6452 8.5 13.4541 8.63772 13.386 8.84189L12.7194 10.8419C12.6114 11.1657 12.8524 11.5 13.1937 11.5H14.5C15.6046 11.5 16.5 12.3954 16.5 13.5C16.5 14.6046 15.6046 15.5 14.5 15.5H12.5" }),
|
|
284
|
-
/* @__PURE__ */ jsx("path", { d: "M7.5 10.5L10 8.5V15.5", strokeLinejoin: "round" }),
|
|
285
|
-
/* @__PURE__ */ jsx(
|
|
286
|
-
"path",
|
|
287
|
-
{
|
|
288
|
-
d: "M10 4.5L12 2C6.47715 2 2 6.47715 2 12C2 12.6849 2.06886 13.3538 2.20004 14M16 2.83209C19.5318 4.3752 22 7.89936 22 12C22 17.5228 17.5228 22 12 22C8.72852 22 5.82443 20.4287 4 18",
|
|
289
|
-
strokeLinejoin: "round"
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
|
-
] });
|
|
293
|
-
var VolumeOn = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" }) });
|
|
294
|
-
var VolumeMuted = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" }) });
|
|
295
|
-
var button = cva(
|
|
490
|
+
function Badge({ className, variant, ...props }) {
|
|
491
|
+
return /* @__PURE__ */ jsx("span", { className: cn(badge({ variant }), className), ...props });
|
|
492
|
+
}
|
|
493
|
+
var categoria = cva(
|
|
296
494
|
[
|
|
297
|
-
"inline-flex
|
|
298
|
-
"rounded-
|
|
299
|
-
"
|
|
300
|
-
"
|
|
301
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
302
|
-
"[&_svg]:shrink-0"
|
|
495
|
+
"inline-flex items-center gap-step-xs",
|
|
496
|
+
"rounded-pill px-step-sm py-0.5",
|
|
497
|
+
"font-mono text-chip",
|
|
498
|
+
"border transition-standard"
|
|
303
499
|
],
|
|
304
500
|
{
|
|
305
501
|
variants: {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
"light:bg-brand-hull light:text-accent-on light:hover:bg-text-secondary"
|
|
310
|
-
],
|
|
311
|
-
conversion: "bg-warm text-warm-on hover:bg-warm-hover",
|
|
312
|
-
secondary: [
|
|
313
|
-
"border-hairline-hover border bg-transparent text-text-primary",
|
|
314
|
-
"hover:border-accent hover:text-accent"
|
|
315
|
-
],
|
|
316
|
-
tertiary: [
|
|
317
|
-
"bg-transparent font-mono font-normal text-text-secondary",
|
|
318
|
-
"hover:text-accent hover:underline hover:underline-offset-4"
|
|
319
|
-
]
|
|
320
|
-
},
|
|
321
|
-
size: {
|
|
322
|
-
sm: "h-8 px-control-sm text-label",
|
|
323
|
-
md: "h-10 px-control-md text-ui",
|
|
324
|
-
lg: "h-12 px-control-lg text-lead",
|
|
325
|
-
/** Cuadrado 42×42, sin texto. Lleva `aria-label` obligatorio. */
|
|
326
|
-
icon: "size-control-icon p-0"
|
|
502
|
+
active: {
|
|
503
|
+
false: "border-warm/28 bg-transparent text-warm",
|
|
504
|
+
true: "border-warm bg-warm text-warm-on"
|
|
327
505
|
}
|
|
328
506
|
},
|
|
329
|
-
|
|
330
|
-
/**
|
|
331
|
-
* El terciario no tiene caja: ni padding horizontal ni alto de control.
|
|
332
|
-
* Va aquí y no como `px-0` en la variante para que gane al `px-*` del
|
|
333
|
-
* tamaño sin depender del orden en que cva concatena las clases.
|
|
334
|
-
*/
|
|
335
|
-
{ variant: "tertiary", size: ["sm", "md", "lg"], class: "h-auto px-0" }
|
|
336
|
-
],
|
|
337
|
-
defaultVariants: { variant: "primary", size: "md" }
|
|
507
|
+
defaultVariants: { active: false }
|
|
338
508
|
}
|
|
339
509
|
);
|
|
340
|
-
function
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
size: size2,
|
|
344
|
-
asChild = false,
|
|
345
|
-
loading = false,
|
|
346
|
-
icon,
|
|
347
|
-
children,
|
|
348
|
-
disabled,
|
|
349
|
-
...props
|
|
350
|
-
}) {
|
|
351
|
-
if (asChild) {
|
|
352
|
-
return /* @__PURE__ */ jsx(Slot, { className: cn(button({ variant, size: size2 }), className), ...props, children });
|
|
353
|
-
}
|
|
354
|
-
return /* @__PURE__ */ jsxs(
|
|
355
|
-
"button",
|
|
510
|
+
function CategoryBadge({ className, active = false, ...props }) {
|
|
511
|
+
return /* @__PURE__ */ jsx(
|
|
512
|
+
"span",
|
|
356
513
|
{
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
514
|
+
"data-active": active || void 0,
|
|
515
|
+
className: cn(categoria({ active }), className),
|
|
516
|
+
...props
|
|
517
|
+
}
|
|
518
|
+
);
|
|
519
|
+
}
|
|
520
|
+
var metrica = ["inline-flex items-center gap-step-xs", "rounded-pill", "font-mono text-chip text-text-muted"];
|
|
521
|
+
function MetricBadge({ className, boxed = false, ...props }) {
|
|
522
|
+
return /* @__PURE__ */ jsx(
|
|
523
|
+
"span",
|
|
524
|
+
{
|
|
525
|
+
className: cn(metrica, boxed && "border-hairline px-step-sm py-0.5 border", className),
|
|
526
|
+
...props
|
|
365
527
|
}
|
|
366
528
|
);
|
|
367
529
|
}
|
|
@@ -403,8 +565,8 @@ function Calendar({
|
|
|
403
565
|
// la raíz, y sin esto se ancla al primer ancestro posicionado —o al
|
|
404
566
|
// viewport— y las flechas acaban en los bordes de la página.
|
|
405
567
|
root: cn("relative", fullWidth ? "w-full" : "w-fit"),
|
|
406
|
-
months: cn("gap-md flex flex-col sm:flex-row", fullWidth && "w-full"),
|
|
407
|
-
month: cn("gap-sm flex flex-col", fullWidth && "min-w-0 flex-1"),
|
|
568
|
+
months: cn("gap-step-md flex flex-col sm:flex-row", fullWidth && "w-full"),
|
|
569
|
+
month: cn("gap-step-sm flex flex-col", fullWidth && "min-w-0 flex-1"),
|
|
408
570
|
month_caption: "h-8 flex items-center justify-center",
|
|
409
571
|
caption_label: "text-ui font-sans font-medium text-text-primary capitalize",
|
|
410
572
|
nav: "absolute inset-x-0 top-0 flex items-center justify-between",
|
|
@@ -432,7 +594,7 @@ function Calendar({
|
|
|
432
594
|
range_start: "[&_button]:bg-accent [&_button]:text-accent-on [&_button]:rounded-r-none",
|
|
433
595
|
range_middle: "[&_button]:bg-surface-raised [&_button]:text-text-primary [&_button]:rounded-none",
|
|
434
596
|
range_end: "[&_button]:bg-accent [&_button]:text-accent-on [&_button]:rounded-l-none",
|
|
435
|
-
footer: "text-label font-sans text-text-secondary pt-sm",
|
|
597
|
+
footer: "text-label font-sans text-text-secondary pt-step-sm",
|
|
436
598
|
...classNames
|
|
437
599
|
},
|
|
438
600
|
components: {
|
|
@@ -442,87 +604,13 @@ function Calendar({
|
|
|
442
604
|
}
|
|
443
605
|
);
|
|
444
606
|
}
|
|
445
|
-
var ETIQUETA = {
|
|
446
|
-
display: "h1",
|
|
447
|
-
stat: "p",
|
|
448
|
-
h1: "h1",
|
|
449
|
-
h2: "h2",
|
|
450
|
-
h3: "h3",
|
|
451
|
-
body: "p",
|
|
452
|
-
lead: "p",
|
|
453
|
-
ui: "p",
|
|
454
|
-
label: "span",
|
|
455
|
-
tag: "span",
|
|
456
|
-
meta: "p",
|
|
457
|
-
chip: "span",
|
|
458
|
-
eyebrow: "p"
|
|
459
|
-
};
|
|
460
|
-
var texto = cva("", {
|
|
461
|
-
variants: {
|
|
462
|
-
variant: {
|
|
463
|
-
display: "text-display font-display",
|
|
464
|
-
// Métricas grandes: 46px de display. Es la única escala pensada para un
|
|
465
|
-
// número, y por eso el interlineado es 1.
|
|
466
|
-
stat: "text-stat font-display",
|
|
467
|
-
h1: "text-h1 font-display",
|
|
468
|
-
h2: "text-h2 font-display",
|
|
469
|
-
h3: "text-h3 font-display",
|
|
470
|
-
body: "text-body font-sans",
|
|
471
|
-
// 17px: la bajada de las páginas internas y el botón grande.
|
|
472
|
-
lead: "text-lead font-sans",
|
|
473
|
-
ui: "text-ui font-sans",
|
|
474
|
-
label: "text-label font-sans",
|
|
475
|
-
// Las dos escalas de etiqueta. `tag` es el estado (sans 12.5/500) y `chip`
|
|
476
|
-
// la categoría y la métrica (mono 11.5). Ninguna transforma el texto.
|
|
477
|
-
tag: "text-tag font-sans",
|
|
478
|
-
chip: "text-chip font-mono",
|
|
479
|
-
// Mono SIN transformar: fechas, rutas, versiones, nombres de archivo y la
|
|
480
|
-
// firma del footer. Es el escalón que faltaba, y por el que cada sitio de
|
|
481
|
-
// uso terminaba escribiendo `variant="eyebrow" className="normal-case"`.
|
|
482
|
-
meta: "text-meta font-mono",
|
|
483
|
-
// `uppercase` no cabe en un token de tamaño: text-transform no es un
|
|
484
|
-
// modificador de --text-*. Por eso lo pone la variante y no theme.css.
|
|
485
|
-
eyebrow: "text-eyebrow font-mono uppercase"
|
|
486
|
-
},
|
|
487
|
-
tone: {
|
|
488
|
-
primary: "text-text-primary",
|
|
489
|
-
secondary: "text-text-secondary",
|
|
490
|
-
muted: "text-text-muted",
|
|
491
|
-
accent: "text-accent",
|
|
492
|
-
warm: "text-warm",
|
|
493
|
-
success: "text-success",
|
|
494
|
-
warning: "text-warning",
|
|
495
|
-
error: "text-error"
|
|
496
|
-
}
|
|
497
|
-
},
|
|
498
|
-
defaultVariants: { variant: "body", tone: "primary" }
|
|
499
|
-
});
|
|
500
|
-
function Text({
|
|
501
|
-
className,
|
|
502
|
-
variant,
|
|
503
|
-
tone,
|
|
504
|
-
as,
|
|
505
|
-
asChild = false,
|
|
506
|
-
measure,
|
|
507
|
-
children,
|
|
508
|
-
...props
|
|
509
|
-
}) {
|
|
510
|
-
const escala = variant ?? "body";
|
|
511
|
-
const limitar = measure ?? escala === "body";
|
|
512
|
-
const clases = cn(texto({ variant, tone }), limitar && "max-w-measure", className);
|
|
513
|
-
if (asChild) {
|
|
514
|
-
return /* @__PURE__ */ jsx(Slot, { className: clases, ...props, children });
|
|
515
|
-
}
|
|
516
|
-
const Etiqueta = as ?? ETIQUETA[escala];
|
|
517
|
-
return /* @__PURE__ */ jsx(Etiqueta, { className: clases, ...props, children });
|
|
518
|
-
}
|
|
519
607
|
var SUPERFICIE_TARJETA = "rounded-card border-hairline bg-surface border";
|
|
520
608
|
var HOVER_TARJETA = "transition-standard hover:border-hairline-hover";
|
|
521
609
|
function Card({ className, ...props }) {
|
|
522
610
|
return /* @__PURE__ */ jsx("div", { className: cn(SUPERFICIE_TARJETA, className), ...props });
|
|
523
611
|
}
|
|
524
612
|
function CardHeader({ className, ...props }) {
|
|
525
|
-
return /* @__PURE__ */ jsx("div", { className: cn("gap-xs p-lg flex flex-col", className), ...props });
|
|
613
|
+
return /* @__PURE__ */ jsx("div", { className: cn("gap-step-xs p-step-lg flex flex-col", className), ...props });
|
|
526
614
|
}
|
|
527
615
|
function CardTitle({ className, ...props }) {
|
|
528
616
|
return /* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className, ...props });
|
|
@@ -531,13 +619,13 @@ function CardDescription({ className, ...props }) {
|
|
|
531
619
|
return /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className, ...props });
|
|
532
620
|
}
|
|
533
621
|
function CardContent({ className, ...props }) {
|
|
534
|
-
return /* @__PURE__ */ jsx("div", { className: cn("px-lg pb-lg", className), ...props });
|
|
622
|
+
return /* @__PURE__ */ jsx("div", { className: cn("px-step-lg pb-step-lg", className), ...props });
|
|
535
623
|
}
|
|
536
624
|
function CardFooter({ className, ...props }) {
|
|
537
625
|
return /* @__PURE__ */ jsx(
|
|
538
626
|
"div",
|
|
539
627
|
{
|
|
540
|
-
className: cn("border-hairline px-lg py-md gap-sm flex items-center border-t", className),
|
|
628
|
+
className: cn("border-hairline px-step-lg py-step-md gap-step-sm flex items-center border-t", className),
|
|
541
629
|
...props
|
|
542
630
|
}
|
|
543
631
|
);
|
|
@@ -588,7 +676,7 @@ function DateField({
|
|
|
588
676
|
"data-invalid": invalid || void 0,
|
|
589
677
|
"aria-invalid": invalid || void 0,
|
|
590
678
|
className: cn(
|
|
591
|
-
"px-sm h-10 w-full",
|
|
679
|
+
"px-step-sm h-10 w-full",
|
|
592
680
|
"rounded-control border-border bg-surface border",
|
|
593
681
|
"font-mono text-ui text-text-primary",
|
|
594
682
|
"transition-standard",
|
|
@@ -631,7 +719,7 @@ function DialogContent({
|
|
|
631
719
|
{
|
|
632
720
|
className: cn(
|
|
633
721
|
"fixed top-1/2 left-1/2 z-50 w-full max-w-content -translate-x-1/2 -translate-y-1/2",
|
|
634
|
-
"gap-md p-lg flex flex-col",
|
|
722
|
+
"gap-step-md p-step-lg flex flex-col",
|
|
635
723
|
"rounded-panel border-border bg-surface shadow-standard border",
|
|
636
724
|
"text-text-primary font-sans",
|
|
637
725
|
className
|
|
@@ -658,10 +746,10 @@ function DialogContent({
|
|
|
658
746
|
] });
|
|
659
747
|
}
|
|
660
748
|
function DialogHeader({ className, ...props }) {
|
|
661
|
-
return /* @__PURE__ */ jsx("div", { className: cn("gap-xs flex flex-col pr-8", className), ...props });
|
|
749
|
+
return /* @__PURE__ */ jsx("div", { className: cn("gap-step-xs flex flex-col pr-8", className), ...props });
|
|
662
750
|
}
|
|
663
751
|
function DialogFooter({ className, ...props }) {
|
|
664
|
-
return /* @__PURE__ */ jsx("div", { className: cn("gap-sm flex flex-col-reverse sm:flex-row sm:justify-end", className), ...props });
|
|
752
|
+
return /* @__PURE__ */ jsx("div", { className: cn("gap-step-sm flex flex-col-reverse sm:flex-row sm:justify-end", className), ...props });
|
|
665
753
|
}
|
|
666
754
|
function DialogTitle({
|
|
667
755
|
className,
|
|
@@ -698,7 +786,7 @@ var panel = [
|
|
|
698
786
|
"text-text-primary font-sans"
|
|
699
787
|
];
|
|
700
788
|
var item = [
|
|
701
|
-
"rounded-chip px-sm relative flex h-9 cursor-default items-center gap-2 select-none",
|
|
789
|
+
"rounded-chip px-step-sm relative flex h-9 cursor-default items-center gap-2 select-none",
|
|
702
790
|
"text-ui text-text-secondary transition-standard",
|
|
703
791
|
"data-[highlighted]:bg-surface data-[highlighted]:text-text-primary",
|
|
704
792
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
|
|
@@ -750,7 +838,7 @@ function DropdownMenuLabel({
|
|
|
750
838
|
return /* @__PURE__ */ jsx(
|
|
751
839
|
DropdownMenuPrimitive.Label,
|
|
752
840
|
{
|
|
753
|
-
className: cn("px-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
|
|
841
|
+
className: cn("px-step-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
|
|
754
842
|
...props
|
|
755
843
|
}
|
|
756
844
|
);
|
|
@@ -791,7 +879,7 @@ function Input({ className, invalid = false, ...props }) {
|
|
|
791
879
|
"data-invalid": invalid || void 0,
|
|
792
880
|
"aria-invalid": invalid || void 0,
|
|
793
881
|
className: cn(
|
|
794
|
-
"h-10 w-full px-sm",
|
|
882
|
+
"h-10 w-full px-step-sm",
|
|
795
883
|
"rounded-control border border-border bg-surface",
|
|
796
884
|
"font-sans text-ui text-text-primary placeholder:text-text-muted",
|
|
797
885
|
"transition-standard",
|
|
@@ -799,20 +887,7 @@ function Input({ className, invalid = false, ...props }) {
|
|
|
799
887
|
"focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
800
888
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
801
889
|
"data-[invalid]:border-error data-[invalid]:focus-visible:outline-error",
|
|
802
|
-
"file:mr-sm file:border-0 file:bg-transparent file:font-sans file:text-label file:text-text-secondary",
|
|
803
|
-
className
|
|
804
|
-
),
|
|
805
|
-
...props
|
|
806
|
-
}
|
|
807
|
-
);
|
|
808
|
-
}
|
|
809
|
-
function Label2({ className, ...props }) {
|
|
810
|
-
return /* @__PURE__ */ jsx(
|
|
811
|
-
LabelPrimitive.Root,
|
|
812
|
-
{
|
|
813
|
-
className: cn(
|
|
814
|
-
"text-label font-sans text-text-secondary select-none",
|
|
815
|
-
"peer-disabled:opacity-50 group-data-[disabled]:opacity-50",
|
|
890
|
+
"file:mr-step-sm file:border-0 file:bg-transparent file:font-sans file:text-label file:text-text-secondary",
|
|
816
891
|
className
|
|
817
892
|
),
|
|
818
893
|
...props
|
|
@@ -831,7 +906,7 @@ function Pagination({ className, ...props }) {
|
|
|
831
906
|
);
|
|
832
907
|
}
|
|
833
908
|
function PaginationContent({ className, ...props }) {
|
|
834
|
-
return /* @__PURE__ */ jsx("ul", { className: cn("gap-xs flex flex-row items-center", className), ...props });
|
|
909
|
+
return /* @__PURE__ */ jsx("ul", { className: cn("gap-step-xs flex flex-row items-center", className), ...props });
|
|
835
910
|
}
|
|
836
911
|
function PaginationItem(props) {
|
|
837
912
|
return /* @__PURE__ */ jsx("li", { ...props });
|
|
@@ -842,7 +917,7 @@ function PaginationLink({ className, isActive = false, ...props }) {
|
|
|
842
917
|
{
|
|
843
918
|
"aria-current": isActive ? "page" : void 0,
|
|
844
919
|
className: cn(
|
|
845
|
-
"rounded-chip px-sm inline-flex h-9 min-w-9 cursor-pointer items-center justify-center",
|
|
920
|
+
"rounded-chip px-step-sm inline-flex h-9 min-w-9 cursor-pointer items-center justify-center",
|
|
846
921
|
"font-sans text-ui text-text-secondary",
|
|
847
922
|
"transition-standard",
|
|
848
923
|
"hover:bg-surface hover:text-text-primary",
|
|
@@ -855,13 +930,13 @@ function PaginationLink({ className, isActive = false, ...props }) {
|
|
|
855
930
|
);
|
|
856
931
|
}
|
|
857
932
|
function PaginationPrevious({ className, ...props }) {
|
|
858
|
-
return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina anterior", className: cn("gap-xs", className), ...props, children: [
|
|
933
|
+
return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina anterior", className: cn("gap-step-xs", className), ...props, children: [
|
|
859
934
|
/* @__PURE__ */ jsx(ChevronLeft, {}),
|
|
860
935
|
"Anterior"
|
|
861
936
|
] });
|
|
862
937
|
}
|
|
863
938
|
function PaginationNext({ className, ...props }) {
|
|
864
|
-
return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina siguiente", className: cn("gap-xs", className), ...props, children: [
|
|
939
|
+
return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina siguiente", className: cn("gap-step-xs", className), ...props, children: [
|
|
865
940
|
"Siguiente",
|
|
866
941
|
/* @__PURE__ */ jsx(ChevronRight, {})
|
|
867
942
|
] });
|
|
@@ -892,7 +967,7 @@ function PopoverContent({
|
|
|
892
967
|
align,
|
|
893
968
|
sideOffset,
|
|
894
969
|
className: cn(
|
|
895
|
-
"z-50 w-72 p-md",
|
|
970
|
+
"z-50 w-72 p-step-md",
|
|
896
971
|
"rounded-panel border-border bg-surface-raised shadow-standard border",
|
|
897
972
|
"text-text-primary font-sans text-ui",
|
|
898
973
|
"outline-none",
|
|
@@ -921,7 +996,7 @@ function Progress({ className, value, label, tone = "accent", ...props }) {
|
|
|
921
996
|
);
|
|
922
997
|
}
|
|
923
998
|
function RadioGroup2({ className, ...props }) {
|
|
924
|
-
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("gap-sm grid", className), ...props });
|
|
999
|
+
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("gap-step-sm grid", className), ...props });
|
|
925
1000
|
}
|
|
926
1001
|
function RadioGroupItem({ className, ...props }) {
|
|
927
1002
|
return /* @__PURE__ */ jsx(
|
|
@@ -953,7 +1028,7 @@ function SelectTrigger({
|
|
|
953
1028
|
SelectPrimitive.Trigger,
|
|
954
1029
|
{
|
|
955
1030
|
className: cn(
|
|
956
|
-
"gap-sm px-sm flex h-10 w-full cursor-pointer items-center justify-between",
|
|
1031
|
+
"gap-step-sm px-step-sm flex h-10 w-full cursor-pointer items-center justify-between",
|
|
957
1032
|
"rounded-control border-border bg-surface border",
|
|
958
1033
|
"font-sans text-ui text-text-primary",
|
|
959
1034
|
"transition-standard",
|
|
@@ -1004,7 +1079,7 @@ function SelectLabel({
|
|
|
1004
1079
|
return /* @__PURE__ */ jsx(
|
|
1005
1080
|
SelectPrimitive.Label,
|
|
1006
1081
|
{
|
|
1007
|
-
className: cn("px-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
|
|
1082
|
+
className: cn("px-step-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
|
|
1008
1083
|
...props
|
|
1009
1084
|
}
|
|
1010
1085
|
);
|
|
@@ -1018,7 +1093,7 @@ function SelectItem({
|
|
|
1018
1093
|
SelectPrimitive.Item,
|
|
1019
1094
|
{
|
|
1020
1095
|
className: cn(
|
|
1021
|
-
"rounded-chip px-sm relative flex h-9 w-full cursor-default items-center pr-8 select-none",
|
|
1096
|
+
"rounded-chip px-step-sm relative flex h-9 w-full cursor-default items-center pr-8 select-none",
|
|
1022
1097
|
"text-ui text-text-secondary transition-standard",
|
|
1023
1098
|
"data-[highlighted]:bg-surface data-[highlighted]:text-text-primary",
|
|
1024
1099
|
"data-[state=checked]:text-text-primary",
|
|
@@ -1120,19 +1195,19 @@ function SheetHeader({ className, ...props }) {
|
|
|
1120
1195
|
return /* @__PURE__ */ jsx(
|
|
1121
1196
|
"div",
|
|
1122
1197
|
{
|
|
1123
|
-
className: cn("border-hairline gap-xs p-lg flex flex-col border-b pr-12", className),
|
|
1198
|
+
className: cn("border-hairline gap-step-xs p-step-lg flex flex-col border-b pr-12", className),
|
|
1124
1199
|
...props
|
|
1125
1200
|
}
|
|
1126
1201
|
);
|
|
1127
1202
|
}
|
|
1128
1203
|
function SheetBody({ className, ...props }) {
|
|
1129
|
-
return /* @__PURE__ */ jsx("div", { className: cn("p-lg flex-1 overflow-y-auto", className), ...props });
|
|
1204
|
+
return /* @__PURE__ */ jsx("div", { className: cn("p-step-lg flex-1 overflow-y-auto", className), ...props });
|
|
1130
1205
|
}
|
|
1131
1206
|
function SheetFooter({ className, ...props }) {
|
|
1132
1207
|
return /* @__PURE__ */ jsx(
|
|
1133
1208
|
"div",
|
|
1134
1209
|
{
|
|
1135
|
-
className: cn("border-hairline gap-sm p-lg flex flex-wrap justify-end border-t", className),
|
|
1210
|
+
className: cn("border-hairline gap-step-sm p-step-lg flex flex-wrap justify-end border-t", className),
|
|
1136
1211
|
...props
|
|
1137
1212
|
}
|
|
1138
1213
|
);
|
|
@@ -1243,7 +1318,7 @@ function TableHead({ className, ...props }) {
|
|
|
1243
1318
|
"th",
|
|
1244
1319
|
{
|
|
1245
1320
|
className: cn(
|
|
1246
|
-
"px-sm h-10 text-left align-middle",
|
|
1321
|
+
"px-step-sm h-10 text-left align-middle",
|
|
1247
1322
|
"text-eyebrow font-mono text-text-muted uppercase",
|
|
1248
1323
|
className
|
|
1249
1324
|
),
|
|
@@ -1252,13 +1327,13 @@ function TableHead({ className, ...props }) {
|
|
|
1252
1327
|
);
|
|
1253
1328
|
}
|
|
1254
1329
|
function TableCell({ className, ...props }) {
|
|
1255
|
-
return /* @__PURE__ */ jsx("td", { className: cn("px-sm py-sm text-text-secondary align-middle", className), ...props });
|
|
1330
|
+
return /* @__PURE__ */ jsx("td", { className: cn("px-step-sm py-step-sm text-text-secondary align-middle", className), ...props });
|
|
1256
1331
|
}
|
|
1257
1332
|
function TableCaption({ className, ...props }) {
|
|
1258
|
-
return /* @__PURE__ */ jsx("caption", { className: cn("mt-sm text-label text-text-muted", className), ...props });
|
|
1333
|
+
return /* @__PURE__ */ jsx("caption", { className: cn("mt-step-sm text-label text-text-muted", className), ...props });
|
|
1259
1334
|
}
|
|
1260
1335
|
function Tabs({ className, ...props }) {
|
|
1261
|
-
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { className: cn("gap-md flex flex-col", className), ...props });
|
|
1336
|
+
return /* @__PURE__ */ jsx(TabsPrimitive.Root, { className: cn("gap-step-md flex flex-col", className), ...props });
|
|
1262
1337
|
}
|
|
1263
1338
|
function TabsList({
|
|
1264
1339
|
className,
|
|
@@ -1267,7 +1342,7 @@ function TabsList({
|
|
|
1267
1342
|
return /* @__PURE__ */ jsx(
|
|
1268
1343
|
TabsPrimitive.List,
|
|
1269
1344
|
{
|
|
1270
|
-
className: cn("rounded-control bg-surface gap-xs inline-flex items-center p-1", className),
|
|
1345
|
+
className: cn("rounded-control bg-surface gap-step-xs inline-flex items-center p-1", className),
|
|
1271
1346
|
...props
|
|
1272
1347
|
}
|
|
1273
1348
|
);
|
|
@@ -1280,7 +1355,7 @@ function TabsTrigger({
|
|
|
1280
1355
|
TabsPrimitive.Trigger,
|
|
1281
1356
|
{
|
|
1282
1357
|
className: cn(
|
|
1283
|
-
"rounded-chip px-sm inline-flex h-8 cursor-pointer items-center justify-center whitespace-nowrap",
|
|
1358
|
+
"rounded-chip px-step-sm inline-flex h-8 cursor-pointer items-center justify-center whitespace-nowrap",
|
|
1284
1359
|
"font-sans text-label text-text-secondary",
|
|
1285
1360
|
"transition-standard",
|
|
1286
1361
|
"hover:text-text-primary",
|
|
@@ -1315,7 +1390,7 @@ function Textarea({ className, invalid = false, ...props }) {
|
|
|
1315
1390
|
"data-invalid": invalid || void 0,
|
|
1316
1391
|
"aria-invalid": invalid || void 0,
|
|
1317
1392
|
className: cn(
|
|
1318
|
-
"min-h-24 w-full px-sm py-xs",
|
|
1393
|
+
"min-h-24 w-full px-step-sm py-step-xs",
|
|
1319
1394
|
"rounded-control border border-border bg-surface",
|
|
1320
1395
|
"font-sans text-ui text-text-primary placeholder:text-text-muted",
|
|
1321
1396
|
"transition-standard",
|
|
@@ -1339,7 +1414,7 @@ function ToastViewport({
|
|
|
1339
1414
|
ToastPrimitive.Viewport,
|
|
1340
1415
|
{
|
|
1341
1416
|
className: cn(
|
|
1342
|
-
"gap-sm p-lg fixed right-0 bottom-0 z-50 flex max-h-screen w-full flex-col-reverse",
|
|
1417
|
+
"gap-step-sm p-step-lg fixed right-0 bottom-0 z-50 flex max-h-screen w-full flex-col-reverse",
|
|
1343
1418
|
"sm:max-w-[420px] sm:flex-col",
|
|
1344
1419
|
className
|
|
1345
1420
|
),
|
|
@@ -1349,7 +1424,7 @@ function ToastViewport({
|
|
|
1349
1424
|
}
|
|
1350
1425
|
var toast = cva(
|
|
1351
1426
|
[
|
|
1352
|
-
"gap-md p-md pr-10 relative flex w-full items-start justify-between",
|
|
1427
|
+
"gap-step-md p-step-md pr-10 relative flex w-full items-start justify-between",
|
|
1353
1428
|
"rounded-card border bg-surface shadow-standard",
|
|
1354
1429
|
"font-sans text-ui text-text-secondary"
|
|
1355
1430
|
],
|
|
@@ -1400,6 +1475,76 @@ function ToastDescription({
|
|
|
1400
1475
|
}) {
|
|
1401
1476
|
return /* @__PURE__ */ jsx(ToastPrimitive.Description, { className: cn("max-w-measure", className), ...props });
|
|
1402
1477
|
}
|
|
1478
|
+
var avisos = [];
|
|
1479
|
+
var suscriptores = /* @__PURE__ */ new Set();
|
|
1480
|
+
var contador = 0;
|
|
1481
|
+
function emitir(siguientes) {
|
|
1482
|
+
avisos = siguientes;
|
|
1483
|
+
for (const avisar of suscriptores) avisar();
|
|
1484
|
+
}
|
|
1485
|
+
var suscribirse = (avisar) => {
|
|
1486
|
+
suscriptores.add(avisar);
|
|
1487
|
+
return () => {
|
|
1488
|
+
suscriptores.delete(avisar);
|
|
1489
|
+
};
|
|
1490
|
+
};
|
|
1491
|
+
var leer = () => avisos;
|
|
1492
|
+
var VACIO = [];
|
|
1493
|
+
var enServidor = () => VACIO;
|
|
1494
|
+
function crear(mensaje, opciones = {}) {
|
|
1495
|
+
contador += 1;
|
|
1496
|
+
const id = `arrecife-toast-${contador}`;
|
|
1497
|
+
const { description, ...resto } = opciones;
|
|
1498
|
+
emitir([
|
|
1499
|
+
...avisos,
|
|
1500
|
+
{
|
|
1501
|
+
...resto,
|
|
1502
|
+
// El primer argumento es la línea principal. Si además llega `title`, el
|
|
1503
|
+
// mensaje pasa a ser la descripción: así `toast('Guardado')` y
|
|
1504
|
+
// `toast('No se pudo guardar', { title: 'Error' })` se leen igual de bien.
|
|
1505
|
+
...opciones.title ? { description: description ?? mensaje } : { title: mensaje, ...description === void 0 ? {} : { description } },
|
|
1506
|
+
id,
|
|
1507
|
+
abierto: true
|
|
1508
|
+
}
|
|
1509
|
+
]);
|
|
1510
|
+
return id;
|
|
1511
|
+
}
|
|
1512
|
+
function descartar(id) {
|
|
1513
|
+
emitir(avisos.map((a) => id === void 0 || a.id === id ? { ...a, abierto: false } : a));
|
|
1514
|
+
}
|
|
1515
|
+
function retirar(id) {
|
|
1516
|
+
emitir(avisos.filter((a) => a.id !== id));
|
|
1517
|
+
}
|
|
1518
|
+
var toast2 = Object.assign(crear, {
|
|
1519
|
+
success: (mensaje, opciones = {}) => crear(mensaje, { ...opciones, variant: "success" }),
|
|
1520
|
+
error: (mensaje, opciones = {}) => crear(mensaje, { ...opciones, variant: "error" }),
|
|
1521
|
+
dismiss: descartar
|
|
1522
|
+
});
|
|
1523
|
+
function Toaster({ duration = 5e3, label = "Avisos" }) {
|
|
1524
|
+
const lista = useSyncExternalStore(suscribirse, leer, enServidor);
|
|
1525
|
+
return /* @__PURE__ */ jsxs(ToastProvider, { duration, label, children: [
|
|
1526
|
+
lista.map(({ id, title, description, variant, duration: propio, action, abierto }) => /* @__PURE__ */ jsxs(
|
|
1527
|
+
Toast,
|
|
1528
|
+
{
|
|
1529
|
+
open: abierto,
|
|
1530
|
+
variant: variant ?? "neutral",
|
|
1531
|
+
...propio === void 0 ? {} : { duration: propio },
|
|
1532
|
+
onOpenChange: (sigue) => {
|
|
1533
|
+
if (!sigue) retirar(id);
|
|
1534
|
+
},
|
|
1535
|
+
children: [
|
|
1536
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
1537
|
+
title ? /* @__PURE__ */ jsx(ToastTitle, { children: title }) : null,
|
|
1538
|
+
description ? /* @__PURE__ */ jsx(ToastDescription, { children: description }) : null
|
|
1539
|
+
] }),
|
|
1540
|
+
action
|
|
1541
|
+
]
|
|
1542
|
+
},
|
|
1543
|
+
id
|
|
1544
|
+
)),
|
|
1545
|
+
/* @__PURE__ */ jsx(ToastViewport, {})
|
|
1546
|
+
] });
|
|
1547
|
+
}
|
|
1403
1548
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
1404
1549
|
var Tooltip = TooltipPrimitive.Root;
|
|
1405
1550
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
@@ -1413,7 +1558,7 @@ function TooltipContent({
|
|
|
1413
1558
|
{
|
|
1414
1559
|
sideOffset,
|
|
1415
1560
|
className: cn(
|
|
1416
|
-
"z-50 px-sm py-1.5",
|
|
1561
|
+
"z-50 px-step-sm py-1.5",
|
|
1417
1562
|
"rounded-chip border-border bg-surface-raised shadow-standard border",
|
|
1418
1563
|
"font-sans text-label text-text-primary",
|
|
1419
1564
|
className
|
|
@@ -1439,6 +1584,7 @@ function ArticleCard({
|
|
|
1439
1584
|
dateTime,
|
|
1440
1585
|
readingMinutes,
|
|
1441
1586
|
tags,
|
|
1587
|
+
headingLevel = 3,
|
|
1442
1588
|
className,
|
|
1443
1589
|
...props
|
|
1444
1590
|
}) {
|
|
@@ -1449,14 +1595,22 @@ function ArticleCard({
|
|
|
1449
1595
|
" min de lectura"
|
|
1450
1596
|
] }, "lectura") : null
|
|
1451
1597
|
].filter(Boolean);
|
|
1452
|
-
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
|
|
1453
|
-
meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "gap-xs flex items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-xs flex items-center", children: [
|
|
1598
|
+
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
|
|
1599
|
+
meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "gap-step-xs flex items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
|
|
1454
1600
|
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
|
|
1455
1601
|
m
|
|
1456
1602
|
] }, i)) }) : null,
|
|
1457
|
-
/* @__PURE__ */ jsx(
|
|
1603
|
+
/* @__PURE__ */ jsx(
|
|
1604
|
+
Text,
|
|
1605
|
+
{
|
|
1606
|
+
as: headingLevel === 2 ? "h2" : "h3",
|
|
1607
|
+
variant: "h3",
|
|
1608
|
+
className: "group-hover:text-accent transition-standard",
|
|
1609
|
+
children: title
|
|
1610
|
+
}
|
|
1611
|
+
),
|
|
1458
1612
|
excerpt ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-2", children: excerpt }) : null,
|
|
1459
|
-
tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-xs mt-auto flex flex-wrap pt-sm", children: tags.map((t) => /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)) }) : null
|
|
1613
|
+
tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-step-xs mt-auto flex flex-wrap pt-step-sm", children: tags.map((t) => /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)) }) : null
|
|
1460
1614
|
] }) });
|
|
1461
1615
|
}
|
|
1462
1616
|
var AVATAR = "size-[52px]";
|
|
@@ -1464,16 +1618,16 @@ function iniciales(nombre) {
|
|
|
1464
1618
|
return nombre.split(/\s+/).slice(0, 2).map((p) => p[0] ?? "").join("").toUpperCase();
|
|
1465
1619
|
}
|
|
1466
1620
|
function AuthorCard({ name, role, src, bio, action, className, ...props }) {
|
|
1467
|
-
return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-lg gap-md flex items-start", className), ...props, children: [
|
|
1621
|
+
return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-md flex items-start", className), ...props, children: [
|
|
1468
1622
|
/* @__PURE__ */ jsxs(Avatar, { className: cn(AVATAR, "shrink-0"), children: [
|
|
1469
1623
|
src ? /* @__PURE__ */ jsx(AvatarImage, { src, alt: "" }) : null,
|
|
1470
1624
|
/* @__PURE__ */ jsx(AvatarFallback, { children: iniciales(name) })
|
|
1471
1625
|
] }),
|
|
1472
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-xs flex min-w-0 flex-1 flex-col", children: [
|
|
1626
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex min-w-0 flex-1 flex-col", children: [
|
|
1473
1627
|
/* @__PURE__ */ jsx(Text, { variant: "ui", as: "p", className: "font-medium", children: name }),
|
|
1474
1628
|
role ? /* @__PURE__ */ jsx(Text, { variant: "chip", tone: "muted", as: "p", children: role }) : null,
|
|
1475
|
-
bio ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "mt-xs", children: bio }) : null,
|
|
1476
|
-
action ? /* @__PURE__ */ jsx("div", { className: "mt-xs gap-sm flex flex-wrap items-center", children: action }) : null
|
|
1629
|
+
bio ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "mt-step-xs", children: bio }) : null,
|
|
1630
|
+
action ? /* @__PURE__ */ jsx("div", { className: "mt-step-xs gap-step-sm flex flex-wrap items-center", children: action }) : null
|
|
1477
1631
|
] })
|
|
1478
1632
|
] });
|
|
1479
1633
|
}
|
|
@@ -1592,7 +1746,7 @@ function Volumen({
|
|
|
1592
1746
|
onSilenciar,
|
|
1593
1747
|
onCambiarVolumen
|
|
1594
1748
|
}) {
|
|
1595
|
-
return /* @__PURE__ */ jsxs("div", { className: "gap-xs hidden items-center sm:flex", children: [
|
|
1749
|
+
return /* @__PURE__ */ jsxs("div", { className: "gap-step-xs hidden items-center sm:flex", children: [
|
|
1596
1750
|
/* @__PURE__ */ jsx(
|
|
1597
1751
|
"button",
|
|
1598
1752
|
{
|
|
@@ -1839,8 +1993,8 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1839
1993
|
...puntero
|
|
1840
1994
|
}
|
|
1841
1995
|
),
|
|
1842
|
-
/* @__PURE__ */ jsx("div", { className: "bg-surface/95 border-accent/25 border-t backdrop-blur-md", children: /* @__PURE__ */ jsxs("div", { className: "gap-sm px-md flex items-center py-5", children: [
|
|
1843
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-xs flex shrink-0 items-center", children: [
|
|
1996
|
+
/* @__PURE__ */ jsx("div", { className: "bg-surface/95 border-accent/25 border-t backdrop-blur-md", children: /* @__PURE__ */ jsxs("div", { className: "gap-step-sm px-step-md flex items-center py-5", children: [
|
|
1997
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex shrink-0 items-center", children: [
|
|
1844
1998
|
/* @__PURE__ */ jsx(Onda, { grosor: "w-[2px]", alto: "h-4", sonando: isPlaying }),
|
|
1845
1999
|
/* @__PURE__ */ jsx("span", { className: "text-eyebrow font-mono text-accent hidden uppercase sm:block", children: "Narraci\xF3n" })
|
|
1846
2000
|
] }),
|
|
@@ -1857,7 +2011,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1857
2011
|
/* @__PURE__ */ jsx(
|
|
1858
2012
|
BotonPlay,
|
|
1859
2013
|
{
|
|
1860
|
-
className: "rounded-pill px-sm gap-xs flex items-center py-1.5",
|
|
2014
|
+
className: "rounded-pill px-step-sm gap-step-xs flex items-center py-1.5",
|
|
1861
2015
|
tamano: "w-4 h-4",
|
|
1862
2016
|
etiqueta: etiquetaPlay,
|
|
1863
2017
|
onAlternar: togglePlay,
|
|
@@ -1882,7 +2036,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1882
2036
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1883
2037
|
/* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
|
|
1884
2038
|
/* @__PURE__ */ jsxs("div", { ref: staticRef, children: [
|
|
1885
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-sm mb-md flex items-center", children: [
|
|
2039
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm mb-step-md flex items-center", children: [
|
|
1886
2040
|
/* @__PURE__ */ jsx(Onda, { grosor: "w-[3px]", alto: "h-5", sonando: isPlaying }),
|
|
1887
2041
|
/* @__PURE__ */ jsx("span", { className: "text-eyebrow font-mono text-accent uppercase", children: "Narraci\xF3n de audio" }),
|
|
1888
2042
|
/* @__PURE__ */ jsxs("span", { className: "text-chip font-mono text-text-muted ml-auto tabular-nums", children: [
|
|
@@ -1891,13 +2045,13 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1891
2045
|
formatTime(duration)
|
|
1892
2046
|
] })
|
|
1893
2047
|
] }),
|
|
1894
|
-
/* @__PURE__ */ jsx("div", { className: "mb-md", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 14, progreso: progress, ...puntero }) }),
|
|
1895
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
|
|
2048
|
+
/* @__PURE__ */ jsx("div", { className: "mb-step-md", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 14, progreso: progress, ...puntero }) }),
|
|
2049
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
|
|
1896
2050
|
/* @__PURE__ */ jsx(BotonSalto, { segundos: -15, className: "p-2", tamano: "w-6 h-6", onSaltar: skip }),
|
|
1897
2051
|
/* @__PURE__ */ jsx(
|
|
1898
2052
|
BotonPlay,
|
|
1899
2053
|
{
|
|
1900
|
-
className: "rounded-pill px-lg gap-xs text-ui flex items-center py-2 font-medium",
|
|
2054
|
+
className: "rounded-pill px-step-lg gap-step-xs text-ui flex items-center py-2 font-medium",
|
|
1901
2055
|
tamano: "w-4 h-4",
|
|
1902
2056
|
etiqueta: etiquetaPlay,
|
|
1903
2057
|
texto: etiquetaPlay,
|
|
@@ -1906,7 +2060,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1906
2060
|
}
|
|
1907
2061
|
),
|
|
1908
2062
|
/* @__PURE__ */ jsx(BotonSalto, { segundos: 15, className: "p-2", tamano: "w-6 h-6", onSaltar: skip }),
|
|
1909
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-sm ml-auto flex items-center", children: [
|
|
2063
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm ml-auto flex items-center", children: [
|
|
1910
2064
|
/* @__PURE__ */ jsx(
|
|
1911
2065
|
BotonVelocidad,
|
|
1912
2066
|
{
|
|
@@ -1936,8 +2090,8 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1936
2090
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1937
2091
|
/* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
|
|
1938
2092
|
/* @__PURE__ */ jsxs("div", { ref: staticRef, className: "w-full", children: [
|
|
1939
|
-
/* @__PURE__ */ jsx("div", { className: "mb-xs", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 12, progreso: progress, ...puntero }) }),
|
|
1940
|
-
/* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-sm flex justify-between", children: [
|
|
2093
|
+
/* @__PURE__ */ jsx("div", { className: "mb-step-xs", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 12, progreso: progress, ...puntero }) }),
|
|
2094
|
+
/* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-step-sm flex justify-between", children: [
|
|
1941
2095
|
/* @__PURE__ */ jsx("span", { children: formatTime(currentTime) }),
|
|
1942
2096
|
/* @__PURE__ */ jsx("span", { children: formatTime(duration) })
|
|
1943
2097
|
] }),
|
|
@@ -1969,16 +2123,16 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1969
2123
|
flotanteJsx
|
|
1970
2124
|
] });
|
|
1971
2125
|
}
|
|
1972
|
-
return /* @__PURE__ */ jsxs("div", { className: "bg-surface rounded-control border-border p-md w-full border", children: [
|
|
2126
|
+
return /* @__PURE__ */ jsxs("div", { className: "bg-surface rounded-control border-border p-step-md w-full border", children: [
|
|
1973
2127
|
/* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
|
|
1974
|
-
title ? /* @__PURE__ */ jsx("p", { className: "text-ui font-sans text-text-secondary mb-sm truncate", children: title }) : null,
|
|
1975
|
-
/* @__PURE__ */ jsx("div", { className: "mb-sm", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-2", perilla: 16, progreso: progress, ...puntero }) }),
|
|
1976
|
-
/* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-sm flex justify-between", children: [
|
|
2128
|
+
title ? /* @__PURE__ */ jsx("p", { className: "text-ui font-sans text-text-secondary mb-step-sm truncate", children: title }) : null,
|
|
2129
|
+
/* @__PURE__ */ jsx("div", { className: "mb-step-sm", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-2", perilla: 16, progreso: progress, ...puntero }) }),
|
|
2130
|
+
/* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-step-sm flex justify-between", children: [
|
|
1977
2131
|
/* @__PURE__ */ jsx("span", { children: formatTime(currentTime) }),
|
|
1978
2132
|
/* @__PURE__ */ jsx("span", { children: formatTime(duration) })
|
|
1979
2133
|
] }),
|
|
1980
2134
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1981
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-xs flex items-center", children: [
|
|
2135
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex items-center", children: [
|
|
1982
2136
|
/* @__PURE__ */ jsx(BotonSalto, { segundos: -15, className: "p-2", tamano: "w-5 h-5", onSaltar: skip }),
|
|
1983
2137
|
/* @__PURE__ */ jsx(
|
|
1984
2138
|
BotonPlay,
|
|
@@ -1992,7 +2146,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
|
|
|
1992
2146
|
),
|
|
1993
2147
|
/* @__PURE__ */ jsx(BotonSalto, { segundos: 15, className: "p-2", tamano: "w-5 h-5", onSaltar: skip })
|
|
1994
2148
|
] }),
|
|
1995
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
|
|
2149
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
|
|
1996
2150
|
/* @__PURE__ */ jsx(
|
|
1997
2151
|
BotonVelocidad,
|
|
1998
2152
|
{
|
|
@@ -2020,11 +2174,11 @@ function Blockquote({ children, author, source, className, ...props }) {
|
|
|
2020
2174
|
return /* @__PURE__ */ jsxs(
|
|
2021
2175
|
"blockquote",
|
|
2022
2176
|
{
|
|
2023
|
-
className: cn("border-accent pl-md my-lg border-l-2", className),
|
|
2177
|
+
className: cn("border-accent pl-step-md my-step-lg border-l-2", className),
|
|
2024
2178
|
...props,
|
|
2025
2179
|
children: [
|
|
2026
2180
|
/* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children }),
|
|
2027
|
-
author || source ? /* @__PURE__ */ jsx("footer", { className: "mt-sm", children: /* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "span", children: [
|
|
2181
|
+
author || source ? /* @__PURE__ */ jsx("footer", { className: "mt-step-sm", children: /* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "span", children: [
|
|
2028
2182
|
author ? /* @__PURE__ */ jsx("cite", { className: "not-italic", children: author }) : null,
|
|
2029
2183
|
author && source ? " \xB7 " : null,
|
|
2030
2184
|
source
|
|
@@ -2043,11 +2197,11 @@ function Breadcrumb({
|
|
|
2043
2197
|
...props
|
|
2044
2198
|
}) {
|
|
2045
2199
|
const enlace = (href, contenido) => linkAsChild ? /* @__PURE__ */ jsx(Slot, { className: ENLACE, children: linkAsChild({ href, children: contenido }) }) : /* @__PURE__ */ jsx("a", { href, className: ENLACE, children: contenido });
|
|
2046
|
-
return /* @__PURE__ */ jsx("nav", { "aria-label": "Ruta", className: cn("font-mono text-meta text-text-muted", className), ...props, children: /* @__PURE__ */ jsxs("ol", { className: "gap-xs flex flex-wrap items-center", children: [
|
|
2200
|
+
return /* @__PURE__ */ jsx("nav", { "aria-label": "Ruta", className: cn("font-mono text-meta text-text-muted", className), ...props, children: /* @__PURE__ */ jsxs("ol", { className: "gap-step-xs flex flex-wrap items-center", children: [
|
|
2047
2201
|
/* @__PURE__ */ jsx("li", { children: enlace(homeHref, /* @__PURE__ */ jsx("span", { "aria-label": homeLabel, children: "~" })) }),
|
|
2048
2202
|
items.map((item2, i) => {
|
|
2049
2203
|
const ultimo = i === items.length - 1;
|
|
2050
|
-
return /* @__PURE__ */ jsxs("li", { className: "gap-xs flex items-center", children: [
|
|
2204
|
+
return /* @__PURE__ */ jsxs("li", { className: "gap-step-xs flex items-center", children: [
|
|
2051
2205
|
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-border", children: "/" }),
|
|
2052
2206
|
item2.href && !ultimo ? enlace(item2.href, item2.label) : /* @__PURE__ */ jsx("span", { "aria-current": ultimo ? "page" : void 0, className: "text-text-secondary", children: item2.label })
|
|
2053
2207
|
] }, i);
|
|
@@ -2077,7 +2231,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
|
|
|
2077
2231
|
),
|
|
2078
2232
|
...props,
|
|
2079
2233
|
children: [
|
|
2080
|
-
/* @__PURE__ */ jsxs("div", { className: "border-hairline px-sm flex items-center justify-between border-b py-1.5", children: [
|
|
2234
|
+
/* @__PURE__ */ jsxs("div", { className: "border-hairline px-step-sm flex items-center justify-between border-b py-1.5", children: [
|
|
2081
2235
|
/* @__PURE__ */ jsxs("span", { className: "text-eyebrow font-mono text-text-muted uppercase", children: [
|
|
2082
2236
|
/* @__PURE__ */ jsx("span", { className: "text-accent", children: "\u276F" }),
|
|
2083
2237
|
" ",
|
|
@@ -2091,7 +2245,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
|
|
|
2091
2245
|
"aria-label": copiado ? "C\xF3digo copiado" : "Copiar c\xF3digo",
|
|
2092
2246
|
"aria-live": "polite",
|
|
2093
2247
|
className: cn(
|
|
2094
|
-
"gap-xs rounded-chip flex items-center px-2 py-1",
|
|
2248
|
+
"gap-step-xs rounded-chip flex items-center px-2 py-1",
|
|
2095
2249
|
"text-label font-mono text-text-muted cursor-pointer",
|
|
2096
2250
|
"transition-standard hover:bg-surface hover:text-text-primary",
|
|
2097
2251
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
|
|
@@ -2103,7 +2257,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
|
|
|
2103
2257
|
}
|
|
2104
2258
|
) : null
|
|
2105
2259
|
] }),
|
|
2106
|
-
/* @__PURE__ */ jsx("pre", { className: "p-md font-mono text-meta text-text-primary overflow-x-auto leading-relaxed", children })
|
|
2260
|
+
/* @__PURE__ */ jsx("pre", { className: "p-step-md font-mono text-meta text-text-primary overflow-x-auto leading-relaxed", children })
|
|
2107
2261
|
]
|
|
2108
2262
|
}
|
|
2109
2263
|
);
|
|
@@ -2117,15 +2271,15 @@ function CourseCard({
|
|
|
2117
2271
|
className,
|
|
2118
2272
|
...props
|
|
2119
2273
|
}) {
|
|
2120
|
-
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
|
|
2274
|
+
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
|
|
2121
2275
|
status ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge, { variant: "warm", children: status }) }) : null,
|
|
2122
2276
|
/* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className: "group-hover:text-accent transition-standard", children: title }),
|
|
2123
2277
|
summary ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-3", children: summary }) : null,
|
|
2124
|
-
meta && meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-xs flex flex-wrap items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-xs flex items-center", children: [
|
|
2278
|
+
meta && meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-step-xs flex flex-wrap items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
|
|
2125
2279
|
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
|
|
2126
2280
|
m
|
|
2127
2281
|
] }, i)) }) : null,
|
|
2128
|
-
typeof progress === "number" ? /* @__PURE__ */ jsxs("div", { className: "gap-xs mt-auto flex flex-col pt-sm", children: [
|
|
2282
|
+
typeof progress === "number" ? /* @__PURE__ */ jsxs("div", { className: "gap-step-xs mt-auto flex flex-col pt-step-sm", children: [
|
|
2129
2283
|
/* @__PURE__ */ jsx(Progress, { value: progress, tone: "warm", label: `Progreso del curso: ${progress}%` }),
|
|
2130
2284
|
/* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "p", children: [
|
|
2131
2285
|
progress,
|
|
@@ -2147,13 +2301,13 @@ function EmptyState({
|
|
|
2147
2301
|
return /* @__PURE__ */ jsxs(
|
|
2148
2302
|
"div",
|
|
2149
2303
|
{
|
|
2150
|
-
className: cn(SUPERFICIE_TARJETA, "p-lg gap-sm flex flex-col items-center text-center", className),
|
|
2304
|
+
className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-sm flex flex-col items-center text-center", className),
|
|
2151
2305
|
...props,
|
|
2152
2306
|
children: [
|
|
2153
2307
|
/* @__PURE__ */ jsx(CaraDeMascota, { expresion, className: CARA, basePath }),
|
|
2154
2308
|
/* @__PURE__ */ jsx(Text, { variant: "ui", as: "p", className: "font-medium", children: title }),
|
|
2155
2309
|
description ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "max-w-measure font-normal", children: description }) : null,
|
|
2156
|
-
action ? /* @__PURE__ */ jsx("div", { className: "mt-xs", children: action }) : null
|
|
2310
|
+
action ? /* @__PURE__ */ jsx("div", { className: "mt-step-xs", children: action }) : null
|
|
2157
2311
|
]
|
|
2158
2312
|
}
|
|
2159
2313
|
);
|
|
@@ -2162,11 +2316,13 @@ function Footer({
|
|
|
2162
2316
|
social,
|
|
2163
2317
|
year = (/* @__PURE__ */ new Date()).getFullYear(),
|
|
2164
2318
|
children,
|
|
2319
|
+
brand: brand2,
|
|
2165
2320
|
className,
|
|
2166
2321
|
...props
|
|
2167
2322
|
}) {
|
|
2168
|
-
return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-md py-xl gap-lg mx-auto flex flex-col", children: [
|
|
2169
|
-
|
|
2323
|
+
return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md py-step-xl gap-step-lg mx-auto flex flex-col", children: [
|
|
2324
|
+
brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }) : null,
|
|
2325
|
+
children ? /* @__PURE__ */ jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }) : null,
|
|
2170
2326
|
social && social.length > 0 ? (
|
|
2171
2327
|
// 18px de separación, del documento. No es un escalón de `spacing`:
|
|
2172
2328
|
// es el ritmo de una fila de iconos, no el de una página.
|
|
@@ -2216,27 +2372,55 @@ function Hero({
|
|
|
2216
2372
|
action,
|
|
2217
2373
|
pose,
|
|
2218
2374
|
basePath,
|
|
2375
|
+
variant = "cabecera",
|
|
2219
2376
|
className,
|
|
2220
2377
|
...props
|
|
2221
2378
|
}) {
|
|
2379
|
+
const centrado = variant === "centrado";
|
|
2222
2380
|
return /* @__PURE__ */ jsxs(
|
|
2223
2381
|
"section",
|
|
2224
2382
|
{
|
|
2225
2383
|
className: cn(
|
|
2226
2384
|
"degradado-hero rounded-panel border-hairline relative overflow-hidden border",
|
|
2227
2385
|
// 44 arriba, 40 a los lados y abajo. Del documento.
|
|
2228
|
-
"px-xl pt-[44px] pb-xl",
|
|
2386
|
+
"px-step-xl pt-[44px] pb-step-xl",
|
|
2229
2387
|
className
|
|
2230
2388
|
),
|
|
2231
2389
|
...props,
|
|
2232
2390
|
children: [
|
|
2233
|
-
/* @__PURE__ */
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2391
|
+
centrado && pose ? /* @__PURE__ */ jsx(
|
|
2392
|
+
Mascota,
|
|
2393
|
+
{
|
|
2394
|
+
pose,
|
|
2395
|
+
basePath,
|
|
2396
|
+
className: "mb-step-md mx-auto w-48 md:w-56"
|
|
2397
|
+
}
|
|
2398
|
+
) : null,
|
|
2399
|
+
/* @__PURE__ */ jsxs(
|
|
2400
|
+
"div",
|
|
2401
|
+
{
|
|
2402
|
+
className: cn(
|
|
2403
|
+
"gap-step-md flex flex-col",
|
|
2404
|
+
centrado ? "items-center text-center" : "md:max-w-[62%]"
|
|
2405
|
+
),
|
|
2406
|
+
children: [
|
|
2407
|
+
eyebrow ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: eyebrow }) : null,
|
|
2408
|
+
/* @__PURE__ */ jsx(Text, { as: "h1", variant: "display", children: title }),
|
|
2409
|
+
description ? /* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children: description }) : null,
|
|
2410
|
+
action ? /* @__PURE__ */ jsx(
|
|
2411
|
+
"div",
|
|
2412
|
+
{
|
|
2413
|
+
className: cn(
|
|
2414
|
+
"gap-step-sm mt-step-xs flex flex-wrap items-center",
|
|
2415
|
+
centrado && "justify-center"
|
|
2416
|
+
),
|
|
2417
|
+
children: action
|
|
2418
|
+
}
|
|
2419
|
+
) : null
|
|
2420
|
+
]
|
|
2421
|
+
}
|
|
2422
|
+
),
|
|
2423
|
+
!centrado && pose ? /* @__PURE__ */ jsx(
|
|
2240
2424
|
Mascota,
|
|
2241
2425
|
{
|
|
2242
2426
|
pose,
|
|
@@ -2244,7 +2428,7 @@ function Hero({
|
|
|
2244
2428
|
className: cn(
|
|
2245
2429
|
// En móvil, en el flujo y bajo los botones. Desde md, sangrando por
|
|
2246
2430
|
// la esquina inferior derecha.
|
|
2247
|
-
"mt-lg mx-auto w-40",
|
|
2431
|
+
"mt-step-lg mx-auto w-40",
|
|
2248
2432
|
"md:mt-0 md:absolute md:right-0 md:-bottom-4 md:mx-0 md:w-64"
|
|
2249
2433
|
)
|
|
2250
2434
|
}
|
|
@@ -2266,11 +2450,11 @@ function LinkRow({
|
|
|
2266
2450
|
return /* @__PURE__ */ jsx(
|
|
2267
2451
|
Tarjeta,
|
|
2268
2452
|
{
|
|
2269
|
-
className: cn("px-md py-sm", className),
|
|
2453
|
+
className: cn("px-step-md py-step-sm", className),
|
|
2270
2454
|
...props,
|
|
2271
2455
|
rel,
|
|
2272
2456
|
...target ? { target } : {},
|
|
2273
|
-
children: /* @__PURE__ */ jsxs("span", { className: "gap-sm flex items-center", children: [
|
|
2457
|
+
children: /* @__PURE__ */ jsxs("span", { className: "gap-step-sm flex items-center", children: [
|
|
2274
2458
|
icon ? /* @__PURE__ */ jsx("span", { className: "text-text-muted group-hover:text-accent transition-standard shrink-0 text-2xl", children: icon }) : null,
|
|
2275
2459
|
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
2276
2460
|
/* @__PURE__ */ jsx(Text, { as: "span", variant: "ui", className: "group-hover:text-accent transition-standard block font-medium", children: name }),
|
|
@@ -2300,10 +2484,10 @@ function Nav({ brand: brand2, children, actions, className, ...props }) {
|
|
|
2300
2484
|
className
|
|
2301
2485
|
),
|
|
2302
2486
|
...props,
|
|
2303
|
-
children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-md h-nav gap-lg mx-auto flex items-center", children: [
|
|
2487
|
+
children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md h-nav gap-step-lg mx-auto flex items-center", children: [
|
|
2304
2488
|
brand2 ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: brand2 }) : null,
|
|
2305
|
-
children ? /* @__PURE__ */ jsx("nav", { "aria-label": "Principal", className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx("ul", { className: "gap-md flex items-center", children }) }) : /* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
2306
|
-
actions ? /* @__PURE__ */ jsx("div", { className: "gap-sm flex shrink-0 items-center", children: actions }) : null
|
|
2489
|
+
children ? /* @__PURE__ */ jsx("nav", { "aria-label": "Principal", className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx("ul", { className: "gap-step-md flex items-center", children }) }) : /* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
2490
|
+
actions ? /* @__PURE__ */ jsx("div", { className: "gap-step-sm flex shrink-0 items-center", children: actions }) : null
|
|
2307
2491
|
] })
|
|
2308
2492
|
}
|
|
2309
2493
|
);
|
|
@@ -2341,6 +2525,10 @@ function NewsletterForm({
|
|
|
2341
2525
|
submitLabel = "Suscribirme",
|
|
2342
2526
|
placeholder = "tu@correo.dev",
|
|
2343
2527
|
fieldLabel = "Correo electr\xF3nico",
|
|
2528
|
+
nameField = false,
|
|
2529
|
+
nameLabel = "Nombre",
|
|
2530
|
+
namePlaceholder = "C\xF3mo te llamas",
|
|
2531
|
+
nameInputProps,
|
|
2344
2532
|
className,
|
|
2345
2533
|
...props
|
|
2346
2534
|
}) {
|
|
@@ -2351,53 +2539,74 @@ function NewsletterForm({
|
|
|
2351
2539
|
evento.preventDefault();
|
|
2352
2540
|
const datos = new FormData(evento.currentTarget);
|
|
2353
2541
|
const correo = String(datos.get("email") ?? "");
|
|
2354
|
-
|
|
2542
|
+
const nombre = nameField ? String(datos.get("name") ?? "") : void 0;
|
|
2543
|
+
onSubmitEmail?.(correo, nombre);
|
|
2355
2544
|
}
|
|
2545
|
+
const boton = /* @__PURE__ */ jsx(
|
|
2546
|
+
Button,
|
|
2547
|
+
{
|
|
2548
|
+
type: "submit",
|
|
2549
|
+
variant: "conversion",
|
|
2550
|
+
loading: enviando,
|
|
2551
|
+
className: cn("disabled:opacity-60", nameField && "sm:self-start"),
|
|
2552
|
+
children: submitLabel
|
|
2553
|
+
}
|
|
2554
|
+
);
|
|
2356
2555
|
return /* @__PURE__ */ jsxs(
|
|
2357
2556
|
"section",
|
|
2358
2557
|
{
|
|
2359
2558
|
className: cn(
|
|
2360
|
-
"degradado-seccion rounded-panel border-hairline p-lg gap-md flex flex-col border",
|
|
2559
|
+
"degradado-seccion rounded-panel border-hairline p-step-lg gap-step-md flex flex-col border",
|
|
2361
2560
|
className
|
|
2362
2561
|
),
|
|
2363
2562
|
...props,
|
|
2364
2563
|
children: [
|
|
2365
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-xs flex flex-col", children: [
|
|
2564
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex flex-col", children: [
|
|
2366
2565
|
/* @__PURE__ */ jsx(Text, { as: "h2", variant: "h3", children: title }),
|
|
2367
2566
|
description ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", children: description }) : null
|
|
2368
2567
|
] }),
|
|
2369
|
-
/* @__PURE__ */ jsxs("form", { onSubmit: enviar, className: "gap-sm flex flex-col
|
|
2370
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-
|
|
2371
|
-
/* @__PURE__ */
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2568
|
+
/* @__PURE__ */ jsxs("form", { onSubmit: enviar, className: "gap-step-sm flex flex-col", noValidate: true, children: [
|
|
2569
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex flex-col sm:flex-row sm:items-end", children: [
|
|
2570
|
+
nameField ? /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex flex-1 flex-col", children: [
|
|
2571
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: `${id}-nombre`, children: nameLabel }),
|
|
2572
|
+
/* @__PURE__ */ jsx(
|
|
2573
|
+
Input,
|
|
2574
|
+
{
|
|
2575
|
+
id: `${id}-nombre`,
|
|
2576
|
+
name: "name",
|
|
2577
|
+
type: "text",
|
|
2578
|
+
autoComplete: "name",
|
|
2579
|
+
required: true,
|
|
2580
|
+
placeholder: namePlaceholder,
|
|
2581
|
+
disabled: enviando,
|
|
2582
|
+
...nameInputProps
|
|
2583
|
+
}
|
|
2584
|
+
)
|
|
2585
|
+
] }) : null,
|
|
2586
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex flex-1 flex-col", children: [
|
|
2587
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: id, children: fieldLabel }),
|
|
2588
|
+
/* @__PURE__ */ jsx(
|
|
2589
|
+
Input,
|
|
2590
|
+
{
|
|
2591
|
+
id,
|
|
2592
|
+
name: "email",
|
|
2593
|
+
type: "email",
|
|
2594
|
+
autoComplete: "email",
|
|
2595
|
+
required: true,
|
|
2596
|
+
placeholder,
|
|
2597
|
+
disabled: enviando,
|
|
2598
|
+
invalid: error,
|
|
2599
|
+
"aria-describedby": state === "exito" || error ? `${id}-aviso` : void 0
|
|
2600
|
+
}
|
|
2601
|
+
)
|
|
2602
|
+
] }),
|
|
2603
|
+
nameField ? null : boton
|
|
2386
2604
|
] }),
|
|
2387
|
-
|
|
2388
|
-
Button,
|
|
2389
|
-
{
|
|
2390
|
-
type: "submit",
|
|
2391
|
-
variant: "conversion",
|
|
2392
|
-
loading: enviando,
|
|
2393
|
-
className: "disabled:opacity-60",
|
|
2394
|
-
children: submitLabel
|
|
2395
|
-
}
|
|
2396
|
-
)
|
|
2605
|
+
nameField ? boton : null
|
|
2397
2606
|
] }),
|
|
2398
2607
|
state === "exito" ? /* @__PURE__ */ jsx(Alert, { id: `${id}-aviso`, variant: "success", enfasis: "fuerte", children: successMessage }) : null,
|
|
2399
2608
|
error ? /* @__PURE__ */ jsx(Alert, { id: `${id}-aviso`, variant: "error", enfasis: "fuerte", children: errorMessage }) : null,
|
|
2400
|
-
disclaimer ? /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
|
|
2609
|
+
disclaimer ? /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
|
|
2401
2610
|
expresion ? /* @__PURE__ */ jsx(CaraDeMascota, { expresion, basePath, className: "w-10 max-w-none" }) : null,
|
|
2402
2611
|
/* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "font-normal", children: disclaimer })
|
|
2403
2612
|
] }) : null
|
|
@@ -2405,11 +2614,11 @@ function NewsletterForm({
|
|
|
2405
2614
|
}
|
|
2406
2615
|
);
|
|
2407
2616
|
}
|
|
2408
|
-
var cabecera = cva("gap-sm flex flex-col", {
|
|
2617
|
+
var cabecera = cva("gap-step-sm flex flex-col", {
|
|
2409
2618
|
variants: {
|
|
2410
2619
|
size: {
|
|
2411
2620
|
display: "py-section",
|
|
2412
|
-
page: "py-xl"
|
|
2621
|
+
page: "py-step-xl"
|
|
2413
2622
|
}
|
|
2414
2623
|
},
|
|
2415
2624
|
defaultVariants: { size: "page" }
|
|
@@ -2428,9 +2637,65 @@ function PageHeader({
|
|
|
2428
2637
|
eyebrow ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: eyebrow }) : null,
|
|
2429
2638
|
/* @__PURE__ */ jsx(Text, { as, variant: size2 === "display" ? "display" : "h1", className: "max-w-measure", children: title }),
|
|
2430
2639
|
description ? /* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children: description }) : null,
|
|
2431
|
-
action ? /* @__PURE__ */ jsx("div", { className: "gap-sm mt-sm flex flex-wrap items-center", children: action }) : null
|
|
2640
|
+
action ? /* @__PURE__ */ jsx("div", { className: "gap-step-sm mt-step-sm flex flex-wrap items-center", children: action }) : null
|
|
2432
2641
|
] });
|
|
2433
2642
|
}
|
|
2643
|
+
function ScrollingProgressBar({
|
|
2644
|
+
target,
|
|
2645
|
+
tone = "accent",
|
|
2646
|
+
sticky = true,
|
|
2647
|
+
className,
|
|
2648
|
+
...props
|
|
2649
|
+
}) {
|
|
2650
|
+
const [avance, setAvance] = useState(0);
|
|
2651
|
+
const pendiente = useRef(0);
|
|
2652
|
+
useEffect(() => {
|
|
2653
|
+
const medir = () => {
|
|
2654
|
+
pendiente.current = 0;
|
|
2655
|
+
const elemento = target?.current;
|
|
2656
|
+
const inicio = elemento ? elemento.getBoundingClientRect().top + scrollY : 0;
|
|
2657
|
+
const alto = elemento ? elemento.offsetHeight : document.documentElement.scrollHeight;
|
|
2658
|
+
const recorrible = alto - innerHeight;
|
|
2659
|
+
if (recorrible <= 0) {
|
|
2660
|
+
setAvance(scrollY >= inicio ? 100 : 0);
|
|
2661
|
+
return;
|
|
2662
|
+
}
|
|
2663
|
+
const recorrido = scrollY - inicio;
|
|
2664
|
+
setAvance(Math.min(100, Math.max(0, recorrido / recorrible * 100)));
|
|
2665
|
+
};
|
|
2666
|
+
const alMoverse = () => {
|
|
2667
|
+
if (pendiente.current) return;
|
|
2668
|
+
pendiente.current = requestAnimationFrame(medir);
|
|
2669
|
+
};
|
|
2670
|
+
medir();
|
|
2671
|
+
addEventListener("scroll", alMoverse, { passive: true });
|
|
2672
|
+
addEventListener("resize", alMoverse);
|
|
2673
|
+
return () => {
|
|
2674
|
+
if (pendiente.current) cancelAnimationFrame(pendiente.current);
|
|
2675
|
+
removeEventListener("scroll", alMoverse);
|
|
2676
|
+
removeEventListener("resize", alMoverse);
|
|
2677
|
+
};
|
|
2678
|
+
}, [target]);
|
|
2679
|
+
return /* @__PURE__ */ jsx(
|
|
2680
|
+
"div",
|
|
2681
|
+
{
|
|
2682
|
+
"aria-hidden": "true",
|
|
2683
|
+
className: cn(
|
|
2684
|
+
"h-1 w-full overflow-hidden",
|
|
2685
|
+
sticky && "sticky top-0 z-40",
|
|
2686
|
+
className
|
|
2687
|
+
),
|
|
2688
|
+
...props,
|
|
2689
|
+
children: /* @__PURE__ */ jsx(
|
|
2690
|
+
"div",
|
|
2691
|
+
{
|
|
2692
|
+
className: cn("h-full", tone === "warm" ? "bg-warm" : "bg-accent"),
|
|
2693
|
+
style: { width: `${avance}%` }
|
|
2694
|
+
}
|
|
2695
|
+
)
|
|
2696
|
+
}
|
|
2697
|
+
);
|
|
2698
|
+
}
|
|
2434
2699
|
function SidebarItem({
|
|
2435
2700
|
active = false,
|
|
2436
2701
|
asChild = false,
|
|
@@ -2445,7 +2710,7 @@ function SidebarItem({
|
|
|
2445
2710
|
{
|
|
2446
2711
|
"aria-current": active ? "page" : void 0,
|
|
2447
2712
|
className: cn(
|
|
2448
|
-
"rounded-chip px-sm gap-xs flex cursor-pointer items-center py-1.5",
|
|
2713
|
+
"rounded-chip px-step-sm gap-step-xs flex cursor-pointer items-center py-1.5",
|
|
2449
2714
|
"font-mono text-meta transition-standard",
|
|
2450
2715
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
2451
2716
|
// El activo es fondo `surfaceRaised` y tinta primaria, igual que
|
|
@@ -2479,14 +2744,14 @@ function SidebarNav({
|
|
|
2479
2744
|
{
|
|
2480
2745
|
"aria-label": typeof title === "string" ? title : "Administraci\xF3n",
|
|
2481
2746
|
className: cn(
|
|
2482
|
-
"border-hairline bg-surface p-sm gap-sm flex h-full flex-col border-r",
|
|
2747
|
+
"border-hairline bg-surface p-step-sm gap-step-sm flex h-full flex-col border-r",
|
|
2483
2748
|
className
|
|
2484
2749
|
),
|
|
2485
2750
|
...props,
|
|
2486
2751
|
children: [
|
|
2487
|
-
title ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", className: "px-sm", children: title }) : null,
|
|
2752
|
+
title ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", className: "px-step-sm", children: title }) : null,
|
|
2488
2753
|
/* @__PURE__ */ jsx("ul", { className: "gap-0.5 flex flex-1 flex-col", children }),
|
|
2489
|
-
pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "border-hairline px-sm pt-sm border-t", children: pie.map((p, i) => /* @__PURE__ */ jsxs("span", { children: [
|
|
2754
|
+
pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "border-hairline px-step-sm pt-step-sm border-t", children: pie.map((p, i) => /* @__PURE__ */ jsxs("span", { children: [
|
|
2490
2755
|
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }) : null,
|
|
2491
2756
|
p
|
|
2492
2757
|
] }, i)) }) : null
|
|
@@ -2495,7 +2760,7 @@ function SidebarNav({
|
|
|
2495
2760
|
);
|
|
2496
2761
|
}
|
|
2497
2762
|
function Stat({ value, label, tone = "neutral", progress, className, ...props }) {
|
|
2498
|
-
return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-lg gap-xs flex flex-col", className), ...props, children: [
|
|
2763
|
+
return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-xs flex flex-col", className), ...props, children: [
|
|
2499
2764
|
/* @__PURE__ */ jsx(Text, { variant: "stat", as: "p", tone: tone === "alerta" ? "warm" : "accent", children: value }),
|
|
2500
2765
|
/* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", children: label }),
|
|
2501
2766
|
typeof progress === "number" ? /* @__PURE__ */ jsx(
|
|
@@ -2504,7 +2769,7 @@ function Stat({ value, label, tone = "neutral", progress, className, ...props })
|
|
|
2504
2769
|
value: progress,
|
|
2505
2770
|
tone: tone === "alerta" ? "warm" : "accent",
|
|
2506
2771
|
label: `${label}: ${progress}%`,
|
|
2507
|
-
className: "mt-sm"
|
|
2772
|
+
className: "mt-step-sm"
|
|
2508
2773
|
}
|
|
2509
2774
|
) : null
|
|
2510
2775
|
] });
|
|
@@ -2516,6 +2781,7 @@ function TalkCard({
|
|
|
2516
2781
|
dateTime,
|
|
2517
2782
|
location,
|
|
2518
2783
|
status,
|
|
2784
|
+
description,
|
|
2519
2785
|
className,
|
|
2520
2786
|
...props
|
|
2521
2787
|
}) {
|
|
@@ -2523,18 +2789,49 @@ function TalkCard({
|
|
|
2523
2789
|
date ? /* @__PURE__ */ jsx("time", { dateTime, children: date }, "fecha") : null,
|
|
2524
2790
|
location ? /* @__PURE__ */ jsx("span", { children: location }, "lugar") : null
|
|
2525
2791
|
].filter(Boolean);
|
|
2526
|
-
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
|
|
2527
|
-
/* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-start justify-between", children: [
|
|
2792
|
+
return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
|
|
2793
|
+
/* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-start justify-between", children: [
|
|
2528
2794
|
/* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: event }),
|
|
2529
2795
|
status ? /* @__PURE__ */ jsx(Badge, { variant: "neutral", children: status }) : null
|
|
2530
2796
|
] }),
|
|
2531
2797
|
/* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className: "group-hover:text-accent transition-standard", children: title }),
|
|
2532
|
-
|
|
2798
|
+
description ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-2", children: description }) : null,
|
|
2799
|
+
pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-step-xs mt-auto flex items-center pt-step-sm", children: pie.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
|
|
2533
2800
|
i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
|
|
2534
2801
|
m
|
|
2535
2802
|
] }, i)) }) : null
|
|
2536
2803
|
] }) });
|
|
2537
2804
|
}
|
|
2805
|
+
function ThemeToggle({
|
|
2806
|
+
label = "Cambiar de tema",
|
|
2807
|
+
onThemeChange,
|
|
2808
|
+
variant = "secondary",
|
|
2809
|
+
size: size2 = "icon",
|
|
2810
|
+
className,
|
|
2811
|
+
...props
|
|
2812
|
+
}) {
|
|
2813
|
+
return /* @__PURE__ */ jsxs(
|
|
2814
|
+
Button,
|
|
2815
|
+
{
|
|
2816
|
+
type: "button",
|
|
2817
|
+
variant,
|
|
2818
|
+
size: size2,
|
|
2819
|
+
"aria-label": label,
|
|
2820
|
+
className: cn("[&_svg]:size-[19px]", className),
|
|
2821
|
+
onClick: () => onThemeChange?.(alternarTema()),
|
|
2822
|
+
...props,
|
|
2823
|
+
children: [
|
|
2824
|
+
/* @__PURE__ */ jsx(Sol, { className: "light:hidden" }),
|
|
2825
|
+
/* @__PURE__ */ jsx(Luna, { className: "hidden light:block" })
|
|
2826
|
+
]
|
|
2827
|
+
}
|
|
2828
|
+
);
|
|
2829
|
+
}
|
|
2830
|
+
function useTema() {
|
|
2831
|
+
return useSyncExternalStore(suscribirse2, temaActual, servidor);
|
|
2832
|
+
}
|
|
2833
|
+
var suscribirse2 = (avisar) => escucharTema(() => avisar());
|
|
2834
|
+
var servidor = () => "dark";
|
|
2538
2835
|
function TableOfContents({
|
|
2539
2836
|
items,
|
|
2540
2837
|
title = "En esta p\xE1gina",
|
|
@@ -2543,17 +2840,21 @@ function TableOfContents({
|
|
|
2543
2840
|
className,
|
|
2544
2841
|
...props
|
|
2545
2842
|
}) {
|
|
2546
|
-
return /* @__PURE__ */ jsxs("nav", { "aria-label": typeof title === "string" ? title : "En esta p\xE1gina", className: cn("gap-sm flex flex-col", className), ...props, children: [
|
|
2843
|
+
return /* @__PURE__ */ jsxs("nav", { "aria-label": typeof title === "string" ? title : "En esta p\xE1gina", className: cn("gap-step-sm flex flex-col", className), ...props, children: [
|
|
2547
2844
|
/* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", children: title }),
|
|
2548
|
-
/* @__PURE__ */ jsx("ul", { className: "border-hairline gap-xs flex flex-col border-l", children: items.map((item2) => {
|
|
2845
|
+
/* @__PURE__ */ jsx("ul", { className: "border-hairline gap-step-xs flex flex-col border-l", children: items.map((item2) => {
|
|
2549
2846
|
const activo = item2.href === activeHref;
|
|
2550
2847
|
const clases = cn(
|
|
2551
|
-
"px-sm -ml-px block border-l",
|
|
2848
|
+
"px-step-sm -ml-px block border-l",
|
|
2552
2849
|
"font-sans text-label transition-standard",
|
|
2553
2850
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
2554
2851
|
"cursor-pointer",
|
|
2555
|
-
item2.nested && "pl-lg",
|
|
2556
|
-
|
|
2852
|
+
item2.nested && "pl-step-lg",
|
|
2853
|
+
"border-transparent text-text-secondary hover:text-text-primary",
|
|
2854
|
+
// El hover del activo se declara con las dos variantes juntas para
|
|
2855
|
+
// que gane al `hover:` de arriba por especificidad y no por el orden
|
|
2856
|
+
// en que Tailwind decida emitir las reglas.
|
|
2857
|
+
"aria-[current]:border-accent aria-[current]:text-accent aria-[current]:hover:text-accent"
|
|
2557
2858
|
);
|
|
2558
2859
|
return /* @__PURE__ */ jsx("li", { children: linkAsChild ? /* @__PURE__ */ jsx(Slot, { className: clases, "aria-current": activo ? "location" : void 0, children: linkAsChild({ href: item2.href, children: item2.label }) }) : /* @__PURE__ */ jsx("a", { href: item2.href, className: clases, "aria-current": activo ? "location" : void 0, children: item2.label }) }, item2.href);
|
|
2559
2860
|
}) })
|
|
@@ -2621,4 +2922,4 @@ var Correo = (props) => /* @__PURE__ */ jsxs(Funcional, { ...props, children: [
|
|
|
2621
2922
|
/* @__PURE__ */ jsx("path", { d: "m3.5 7.5 7.4 5.2a2 2 0 0 0 2.2 0l7.4-5.2" })
|
|
2622
2923
|
] });
|
|
2623
2924
|
|
|
2624
|
-
export { Alert, ArticleCard, AudioPlayer, AuthorCard, Avatar, AvatarFallback, AvatarImage, Badge, Blockquote, Breadcrumb, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryBadge, Checkbox, Code, CodeBlock, CourseCard, DateField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, Footer, FooterLink, HOVER_TARJETA, Hero, Input,
|
|
2925
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, ArticleCard, AudioPlayer, AuthorCard, Avatar, AvatarFallback, AvatarImage, Badge, Blockquote, Breadcrumb, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryBadge, Checkbox, Code, CodeBlock, CourseCard, DateField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, Footer, FooterLink, HOVER_TARJETA, Hero, Input, LinkRow, MetricBadge, Nav, NavItem, NewsletterForm, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup2 as RadioGroup, RadioGroupItem, SUPERFICIE_TARJETA, ScrollingProgressBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SidebarItem, SidebarNav, Skeleton, Stat, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableOfContents, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TalkCard, Textarea, ThemeToggle, Toast, ToastAction, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alert as alertVariants, avatar as avatarVariants, badge as badgeVariants, button as buttonVariants, categoria as categoryBadgeVariants, social_exports as social, toast2 as toast, useTema };
|