@eduardoalvarez/arrecife 0.5.0 → 0.6.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +706 -470
  3. package/dist/brand/index.cjs +112 -95
  4. package/dist/brand/index.d.cts +40 -39
  5. package/dist/brand/index.d.ts +40 -39
  6. package/dist/brand/index.js +5 -4
  7. package/dist/catalog-D13txprv.d.cts +78 -0
  8. package/dist/catalog-D13txprv.d.ts +78 -0
  9. package/dist/chart/index.cjs +100 -83
  10. package/dist/chart/index.d.cts +66 -66
  11. package/dist/chart/index.d.ts +66 -66
  12. package/dist/chart/index.js +14 -12
  13. package/dist/chunk-25YNFCIF.js +141 -0
  14. package/dist/{chunk-YZ2SDOVZ.js → chunk-6O3KWB6P.js} +30 -30
  15. package/dist/chunk-CKRSQPTX.js +36 -0
  16. package/dist/{chunk-ZEOQKRQ7.js → chunk-DKCN7BAL.js} +1 -1
  17. package/dist/chunk-GCRII2KQ.js +86 -0
  18. package/dist/chunk-JMOOFZ3B.js +42 -0
  19. package/dist/chunk-O4TAH7YJ.js +276 -0
  20. package/dist/chunk-ODBFN44D.js +45 -0
  21. package/dist/{chunk-VPT32GPG.js → chunk-PMN7NR3G.js} +2 -2
  22. package/dist/chunk-XKYHTOUJ.js +27 -0
  23. package/dist/form/index.cjs +109 -92
  24. package/dist/form/index.d.cts +43 -42
  25. package/dist/form/index.d.ts +43 -42
  26. package/dist/form/index.js +25 -23
  27. package/dist/index.cjs +1068 -929
  28. package/dist/index.d.cts +770 -773
  29. package/dist/index.d.ts +770 -773
  30. package/dist/index.js +629 -675
  31. package/dist/{label-DuTvJGxD.d.ts → label-MgHFKnFy.d.cts} +3 -3
  32. package/dist/{label-DuTvJGxD.d.cts → label-MgHFKnFy.d.ts} +3 -3
  33. package/dist/og/index.cjs +130 -130
  34. package/dist/og/index.d.cts +93 -89
  35. package/dist/og/index.d.ts +93 -89
  36. package/dist/og/index.js +106 -106
  37. package/dist/shiki/index.cjs +28 -30
  38. package/dist/shiki/index.d.cts +4 -4
  39. package/dist/shiki/index.d.ts +4 -4
  40. package/dist/shiki/index.js +12 -12
  41. package/dist/theme/index.cjs +97 -0
  42. package/dist/theme/index.d.cts +144 -0
  43. package/dist/theme/index.d.ts +144 -0
  44. package/dist/theme/index.js +2 -0
  45. package/dist/tokens/index.cjs +133 -86
  46. package/dist/tokens/index.d.cts +246 -161
  47. package/dist/tokens/index.d.ts +246 -161
  48. package/dist/tokens/index.js +2 -2
  49. package/dist/tokens/theme.css +133 -98
  50. package/dist/variants/index.cjs +192 -0
  51. package/dist/variants/index.d.cts +192 -0
  52. package/dist/variants/index.d.ts +192 -0
  53. package/dist/variants/index.js +3 -0
  54. package/llms.txt +810 -744
  55. package/package.json +20 -11
  56. package/dist/catalogo-Du5ID-Hi.d.cts +0 -77
  57. package/dist/catalogo-Du5ID-Hi.d.ts +0 -77
  58. package/dist/chunk-E3OMP2DL.js +0 -36
  59. package/dist/chunk-KPZNNMV5.js +0 -83
  60. package/dist/chunk-NHS7ETKJ.js +0 -27
  61. package/dist/chunk-TSPJOM6K.js +0 -229
  62. package/dist/chunk-UOWIDFCB.js +0 -81
  63. package/dist/tema/index.cjs +0 -94
  64. package/dist/tema/index.d.cts +0 -110
  65. package/dist/tema/index.d.ts +0 -110
  66. package/dist/tema/index.js +0 -2
@@ -4,10 +4,10 @@ import * as LabelPrimitive from '@radix-ui/react-label';
4
4
 
5
5
  type LabelProps = ComponentPropsWithoutRef<typeof LabelPrimitive.Root>;
6
6
  /**
7
- * La escala `label`: 13px, que es el mínimo absoluto en pantalla del sistema.
7
+ * The `label` scale: 13px, which is the system's absolute minimum on screen.
8
8
  *
9
- * Se atenúa junto al control cuando este está deshabilitado, para que la
10
- * pareja etiqueta-control se lea siempre como una sola unidad.
9
+ * It dims together with the control when that control is disabled, so the
10
+ * label-control pair always reads as a single unit.
11
11
  */
12
12
  declare function Label({ className, ...props }: LabelProps): react.JSX.Element;
13
13
 
@@ -4,10 +4,10 @@ import * as LabelPrimitive from '@radix-ui/react-label';
4
4
 
5
5
  type LabelProps = ComponentPropsWithoutRef<typeof LabelPrimitive.Root>;
6
6
  /**
7
- * La escala `label`: 13px, que es el mínimo absoluto en pantalla del sistema.
7
+ * The `label` scale: 13px, which is the system's absolute minimum on screen.
8
8
  *
9
- * Se atenúa junto al control cuando este está deshabilitado, para que la
10
- * pareja etiqueta-control se lea siempre como una sola unidad.
9
+ * It dims together with the control when that control is disabled, so the
10
+ * label-control pair always reads as a single unit.
11
11
  */
12
12
  declare function Label({ className, ...props }: LabelProps): react.JSX.Element;
13
13
 
package/dist/og/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- // src/brand/catalogo.ts
4
- var caras = {
3
+ // src/brand/catalog.ts
4
+ var faces = {
5
5
  annoyed: "face-annoyed.png",
6
6
  confused: "face-confused.png",
7
7
  hearts: "face-hearts.png",
@@ -16,95 +16,95 @@ var poses = {
16
16
  peek: "pose-peek.png",
17
17
  surf: "pose-surf.png"
18
18
  };
19
- var aletas = {
20
- /** Dos azules. Para fondos claros. */
19
+ var fins = {
20
+ /** Two blues. For light backgrounds. */
21
21
  color: "fin.png",
22
- /** Silueta a una tinta. Para fondos oscuros. */
23
- espuma: "fin-foam.png"
22
+ /** Single-ink silhouette. For dark backgrounds. */
23
+ foam: "fin-foam.png"
24
24
  };
25
- var RUTA_ASSETS = "/brand";
25
+ var ASSETS_PATH = "/brand";
26
26
 
27
27
  // src/tokens/tokens.ts
28
28
  var dark = {
29
29
  background: "#091319",
30
- // corriente · menús, tabs activos
30
+ // current · menus, active tabs
31
31
  border: "#22414F",
32
- // hairline en hover de tarjeta
32
+ // hairline on card hover
33
33
  textPrimary: "#EDF4F3",
34
- // espuma 16.84:1
34
+ // foam 16.84:1
35
35
  textSecondary: "#A7BCC4",
36
- // plancton 5.57:1 nunca bajo 13px
36
+ // plankton 5.57:1 never under 13px
37
37
  accent: "#35D6C0",
38
- // tinta sobre bioluz
38
+ // ink over biolume
39
39
  warm: "#F2A65A"};
40
40
  var light = {
41
41
  background: "#F6F2EA",
42
42
  surfaceRaised: "#EFE9DE",
43
- // hairline en hover de tarjeta
43
+ // hairline on card hover
44
44
  textPrimary: "#0B1524",
45
45
  // 16.40:1
46
46
  textSecondary: "#3D4B58",
47
47
  warm: "#A65B27"};
48
48
  var fonts = {
49
- /** SOLO titulares y números grandes. Nunca cuerpo. */
49
+ /** Headlines and large numbers ONLY. Never body copy. */
50
50
  display: '"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif',
51
- /** Cuerpo e interfaz. */
51
+ /** Body and interface. */
52
52
  sans: '"Geist", ui-sans-serif, system-ui, sans-serif',
53
- /** Código, rutas, etiquetas, metadatos, firma CLI. */
53
+ /** Code, paths, labels, metadata, the CLI signature. */
54
54
  mono: '"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace'
55
55
  };
56
56
  var typeScale = {
57
57
  h1: { tracking: "-0.03em" },
58
58
  eyebrow: { tracking: "0.12em"}
59
59
  };
60
- var profundo = "#0D2129";
60
+ var deep = "#0D2129";
61
61
  var gradient = {
62
62
  dark: {
63
- /** El de la plantilla OG de artículo. 145°, del documento. */
64
- og: `linear-gradient(145deg, ${dark.background} 55%, ${profundo} 100%)`
63
+ /** The one used by the article OG template. 145°, from the document. */
64
+ og: `linear-gradient(145deg, ${dark.background} 55%, ${deep} 100%)`
65
65
  },
66
66
  light: {
67
67
  og: `linear-gradient(145deg, ${light.background} 55%, ${light.surfaceRaised} 100%)`
68
68
  }
69
69
  };
70
70
  var tagline = {
71
- /** Header, una línea. */
72
- corto: "Ayudo a equipos a escalar con criterio"};
71
+ /** Header, one line. */
72
+ short: "Ayudo a equipos a escalar con criterio"};
73
73
  var naming = {
74
74
  wordmark: "Eduardo \xC1lvarez",
75
- /** El dominio, para la firma CLI del footer: `$ cd ~/eduardoalvarez.dev/2026`. */
75
+ /** The domain, for the footer CLI signature: `$ cd ~/eduardoalvarez.dev/2026`. */
76
76
  domain: "eduardoalvarez.dev"
77
77
  };
78
78
 
79
- // src/og/plantillas.ts
79
+ // src/og/templates.ts
80
80
  var OG = {
81
81
  width: 1200,
82
82
  height: 630,
83
- margen: 64,
84
- /** Alto máximo de la mascota. */
85
- mascota: 430,
86
- /** La aleta de la firma. */
87
- aletaFirma: 34,
83
+ margin: 64,
84
+ /** The mascot's maximum height. */
85
+ mascot: 430,
86
+ /** The signature's fin. */
87
+ signatureFin: 34,
88
88
  /**
89
- * Hueco que deja la columna cuando la pose va a la izquierda (curso).
89
+ * The gap the column leaves when the pose goes on the left (course).
90
90
  *
91
- * Son 560 y no 420 porque una pose completa a 430 de alto mide ~534 de ancho:
92
- * con el hueco justo, el tiburón se comía el titular. La reserva se mide por
93
- * el ancho real de la pose, no por el margen.
91
+ * It is 560 and not 420 because a full pose at 430 tall measures ~534 wide:
92
+ * with the exact gap, the shark ate into the headline. The reserve is measured
93
+ * by the pose's real width, not by the margin.
94
94
  */
95
- reservaMascota: 560
95
+ mascotReserve: 560
96
96
  };
97
97
  function el(type, props, children) {
98
98
  return { type, props: children === void 0 ? props : { ...props, children } };
99
99
  }
100
- function caja(style, children) {
100
+ function box(style, children) {
101
101
  return el("div", { style: { display: "flex", ...style } }, children);
102
102
  }
103
- function texto(style, contenido) {
104
- return el("div", { style: { display: "flex", ...style } }, contenido);
103
+ function text(style, content) {
104
+ return el("div", { style: { display: "flex", ...style } }, content);
105
105
  }
106
- function eyebrow(contenido, color) {
107
- return texto(
106
+ function eyebrow(content, color) {
107
+ return text(
108
108
  {
109
109
  fontFamily: fonts.mono,
110
110
  fontSize: 20,
@@ -112,11 +112,11 @@ function eyebrow(contenido, color) {
112
112
  textTransform: "uppercase",
113
113
  color
114
114
  },
115
- contenido
115
+ content
116
116
  );
117
117
  }
118
- function titular(contenido, color) {
119
- return texto(
118
+ function headline(content, color) {
119
+ return text(
120
120
  {
121
121
  fontFamily: fonts.display,
122
122
  fontSize: 58,
@@ -124,8 +124,8 @@ function titular(contenido, color) {
124
124
  lineHeight: 1.06,
125
125
  letterSpacing: typeScale.h1.tracking,
126
126
  color,
127
- // 70 % del LIENZO, no de la columna. Con la mascota en su propia columna
128
- // el 70 % relativo daba ~400px y el titular se truncaba a media palabra.
127
+ // 70 % of the CANVAS, not of the column. With the mascot in a column of
128
+ // its own, a relative 70 % gave ~400px and the headline truncated mid-word.
129
129
  maxWidth: OG.width * 0.7,
130
130
  display: "-webkit-box",
131
131
  WebkitBoxOrient: "vertical",
@@ -133,144 +133,144 @@ function titular(contenido, color) {
133
133
  overflow: "hidden",
134
134
  textOverflow: "ellipsis"
135
135
  },
136
- contenido
136
+ content
137
137
  );
138
138
  }
139
- function firma(contenido, color, modo, base) {
140
- return caja({ alignItems: "center", gap: 14 }, [
139
+ function signature(content, color, mode, base) {
140
+ return box({ alignItems: "center", gap: 14 }, [
141
141
  el("img", {
142
142
  alt: "",
143
- src: `${base}/${modo === "oscuro" ? aletas.espuma : aletas.color}`,
144
- height: OG.aletaFirma,
145
- style: { height: OG.aletaFirma }
143
+ src: `${base}/${mode === "dark" ? fins.foam : fins.color}`,
144
+ height: OG.signatureFin,
145
+ style: { height: OG.signatureFin }
146
146
  }),
147
- texto({ fontFamily: fonts.mono, fontSize: 21, color }, contenido)
147
+ text({ fontFamily: fonts.mono, fontSize: 21, color }, content)
148
148
  ]);
149
149
  }
150
- function tarjeta(opciones) {
151
- const columna = caja(
150
+ function card(options) {
151
+ const column = box(
152
152
  {
153
153
  position: "relative",
154
154
  flexDirection: "column",
155
155
  justifyContent: "space-between",
156
156
  width: "100%",
157
157
  height: "100%",
158
- padding: OG.margen,
159
- // Cuando la pose va a la izquierda hay que dejarle el hueco: es lo único
160
- // que cambia de la retícula, y solo lo hace la plantilla de curso.
161
- paddingLeft: opciones.mascotaIzquierda ? OG.reservaMascota : OG.margen
158
+ padding: OG.margin,
159
+ // When the pose goes on the left it needs the gap left for it: it is the
160
+ // only thing that changes in the grid, and only the course template does it.
161
+ paddingLeft: options.mascotaIzquierda ? OG.mascotReserve : OG.margin
162
162
  },
163
163
  [
164
- eyebrow(opciones.eyebrow.texto, opciones.eyebrow.color),
165
- caja({ flexDirection: "column", gap: 18 }, [
166
- titular(opciones.title, opciones.tinta),
167
- opciones.bajada ? texto(
164
+ eyebrow(options.eyebrow.text, options.eyebrow.color),
165
+ box({ flexDirection: "column", gap: 18 }, [
166
+ headline(options.title, options.tinta),
167
+ options.bajada ? text(
168
168
  {
169
169
  fontFamily: fonts.sans,
170
170
  fontSize: 26,
171
- color: opciones.tintaSecundaria,
171
+ color: options.tintaSecundaria,
172
172
  maxWidth: OG.width * 0.7
173
173
  },
174
- opciones.bajada
174
+ options.bajada
175
175
  ) : null
176
176
  ]),
177
- firma(opciones.firma, opciones.firmaColor, opciones.modo, opciones.base)
177
+ signature(options.signature, options.firmaColor, options.mode, options.base)
178
178
  ]
179
179
  );
180
- return caja(
180
+ return box(
181
181
  {
182
182
  position: "relative",
183
183
  width: OG.width,
184
184
  height: OG.height,
185
- backgroundImage: opciones.fondo,
186
- backgroundColor: opciones.modo === "oscuro" ? dark.background : light.background,
185
+ backgroundImage: options.background,
186
+ backgroundColor: options.mode === "dark" ? dark.background : light.background,
187
187
  fontFamily: fonts.sans,
188
188
  overflow: "hidden"
189
189
  },
190
190
  [
191
- opciones.mascota ? caja(
191
+ options.mascot ? box(
192
192
  {
193
193
  position: "absolute",
194
194
  bottom: 0,
195
- ...opciones.mascotaIzquierda ? { left: 0 } : { right: 0 },
195
+ ...options.mascotaIzquierda ? { left: 0 } : { right: 0 },
196
196
  alignItems: "flex-end"
197
197
  },
198
- opciones.mascota
198
+ options.mascot
199
199
  ) : null,
200
- columna
200
+ column
201
201
  ]
202
202
  );
203
203
  }
204
- function mascotaPose(pose, base, alto = OG.mascota) {
205
- return el("img", { alt: "", src: `${base}/${poses[pose]}`, height: alto, style: { height: alto } });
204
+ function mascotPose(pose, base, height = OG.mascot) {
205
+ return el("img", { alt: "", src: `${base}/${poses[pose]}`, height, style: { height } });
206
206
  }
207
- function plantillaArticulo(datos) {
208
- const base = datos.basePath ?? RUTA_ASSETS;
209
- const cara = datos.expresion ?? "hearts";
210
- const meta = [datos.category, datos.readingMinutes ? `${datos.readingMinutes} min` : void 0].filter(Boolean).join(" \xB7 ");
211
- return tarjeta({
212
- modo: "oscuro",
213
- fondo: gradient.dark.og,
214
- eyebrow: { texto: meta || "art\xEDculo", color: dark.warm },
215
- title: datos.title,
216
- firma: naming.domain,
207
+ function articleTemplate(data) {
208
+ const base = data.basePath ?? ASSETS_PATH;
209
+ const face = data.expression ?? "hearts";
210
+ const meta = [data.category, data.readingMinutes ? `${data.readingMinutes} min` : void 0].filter(Boolean).join(" \xB7 ");
211
+ return card({
212
+ mode: "dark",
213
+ background: gradient.dark.og,
214
+ eyebrow: { text: meta || "art\xEDculo", color: dark.warm },
215
+ title: data.title,
216
+ signature: naming.domain,
217
217
  firmaColor: dark.textSecondary,
218
218
  base,
219
219
  tinta: dark.textPrimary,
220
220
  tintaSecundaria: dark.textSecondary,
221
- mascota: el("img", {
221
+ mascot: el("img", {
222
222
  alt: "",
223
- src: `${base}/${caras[cara]}`,
223
+ src: `${base}/${faces[face]}`,
224
224
  height: 300,
225
- style: { height: 300, marginBottom: OG.margen, marginRight: OG.margen }
225
+ style: { height: 300, marginBottom: OG.margin, marginRight: OG.margin }
226
226
  })
227
227
  });
228
228
  }
229
- function plantillaCurso(datos) {
230
- const base = datos.basePath ?? RUTA_ASSETS;
231
- const meta = [datos.modules ? `${datos.modules} m\xF3dulos` : void 0, datos.duration].filter(Boolean).join(" \xB7 ");
232
- return tarjeta({
233
- modo: "claro",
234
- fondo: gradient.light.og,
235
- eyebrow: { texto: "nuevo curso", color: light.warm },
236
- title: datos.title,
229
+ function courseTemplate(data) {
230
+ const base = data.basePath ?? ASSETS_PATH;
231
+ const meta = [data.modules ? `${data.modules} m\xF3dulos` : void 0, data.duration].filter(Boolean).join(" \xB7 ");
232
+ return card({
233
+ mode: "light",
234
+ background: gradient.light.og,
235
+ eyebrow: { text: "nuevo curso", color: light.warm },
236
+ title: data.title,
237
237
  bajada: meta || void 0,
238
- firma: datos.url ?? `cursos.${naming.domain}`,
238
+ signature: data.url ?? `cursos.${naming.domain}`,
239
239
  firmaColor: light.warm,
240
240
  base,
241
241
  tinta: light.textPrimary,
242
242
  tintaSecundaria: light.textSecondary,
243
243
  mascotaIzquierda: true,
244
- mascota: mascotaPose(datos.pose ?? "desk", base)
244
+ mascot: mascotPose(data.pose ?? "desk", base)
245
245
  });
246
246
  }
247
- function plantillaCharla(datos) {
248
- const base = datos.basePath ?? RUTA_ASSETS;
249
- const cabeza = ["charla", datos.event, datos.year].filter(Boolean).join(" \xB7 ");
250
- const pie = [datos.location, datos.event ? void 0 : naming.domain].filter(Boolean).join(" \xB7 ");
251
- return tarjeta({
252
- modo: "oscuro",
253
- fondo: "none",
254
- eyebrow: { texto: cabeza, color: dark.accent },
255
- title: datos.title,
256
- bajada: datos.summary,
257
- firma: pie || naming.domain,
247
+ function talkTemplate(data) {
248
+ const base = data.basePath ?? ASSETS_PATH;
249
+ const head = ["charla", data.event, data.year].filter(Boolean).join(" \xB7 ");
250
+ const footer = [data.location, data.event ? void 0 : naming.domain].filter(Boolean).join(" \xB7 ");
251
+ return card({
252
+ mode: "dark",
253
+ background: "none",
254
+ eyebrow: { text: head, color: dark.accent },
255
+ title: data.title,
256
+ bajada: data.summary,
257
+ signature: footer || naming.domain,
258
258
  firmaColor: dark.textSecondary,
259
259
  base,
260
260
  tinta: dark.textPrimary,
261
261
  tintaSecundaria: dark.textSecondary,
262
- // Sangra: se sale por abajo y por la derecha, como la portada de slide.
263
- mascota: el("img", {
262
+ // It bleeds: it runs off the bottom and the right, like a slide cover.
263
+ mascot: el("img", {
264
264
  alt: "",
265
- src: `${base}/${poses[datos.pose ?? "surf"]}`,
265
+ src: `${base}/${poses[data.pose ?? "surf"]}`,
266
266
  height: 470,
267
267
  style: { height: 470, marginBottom: -46, marginRight: -36 }
268
268
  })
269
269
  });
270
270
  }
271
- function plantillaDefecto(datos = {}) {
272
- const base = datos.basePath ?? RUTA_ASSETS;
273
- return caja(
271
+ function defaultTemplate(data = {}) {
272
+ const base = data.basePath ?? ASSETS_PATH;
273
+ return box(
274
274
  {
275
275
  width: OG.width,
276
276
  height: OG.height,
@@ -279,11 +279,11 @@ function plantillaDefecto(datos = {}) {
279
279
  fontFamily: fonts.sans
280
280
  },
281
281
  [
282
- // Columna de la aleta: 290 de ancho, que es donde cae el divisor.
283
- caja(
282
+ // The fin's column: 290 wide, which is where the divider falls.
283
+ box(
284
284
  { width: 290, height: "100%", alignItems: "center", justifyContent: "center" },
285
- // El halo. Un círculo de bioluz al 12 % detrás de la aleta.
286
- caja(
285
+ // The halo. A circle of biolume at 12 % behind the fin.
286
+ box(
287
287
  {
288
288
  width: 260,
289
289
  height: 260,
@@ -292,21 +292,21 @@ function plantillaDefecto(datos = {}) {
292
292
  alignItems: "center",
293
293
  justifyContent: "center"
294
294
  },
295
- el("img", { alt: "", src: `${base}/${aletas.espuma}`, height: 200, style: { height: 200 } })
295
+ el("img", { alt: "", src: `${base}/${fins.foam}`, height: 200, style: { height: 200 } })
296
296
  )
297
297
  ),
298
- // El divisor, exactamente en x=290.
299
- caja({ width: 1, height: 340, backgroundColor: dark.border }),
300
- caja(
301
- { flexDirection: "column", gap: 20, paddingLeft: OG.margen, paddingRight: OG.margen, flex: 1 },
298
+ // The divider, exactly at x=290.
299
+ box({ width: 1, height: 340, backgroundColor: dark.border }),
300
+ box(
301
+ { flexDirection: "column", gap: 20, paddingLeft: OG.margin, paddingRight: OG.margin, flex: 1 },
302
302
  [
303
- texto(
303
+ text(
304
304
  { fontFamily: fonts.sans, fontSize: 72, fontWeight: 700, color: dark.textPrimary, lineHeight: 1.05 },
305
- datos.title ?? naming.wordmark
305
+ data.title ?? naming.wordmark
306
306
  ),
307
- texto(
307
+ text(
308
308
  { fontFamily: fonts.sans, fontSize: 28, fontWeight: 400, color: dark.textSecondary, lineHeight: 1.4 },
309
- datos.description ?? tagline.corto
309
+ data.description ?? tagline.short
310
310
  )
311
311
  ]
312
312
  )
@@ -315,8 +315,8 @@ function plantillaDefecto(datos = {}) {
315
315
  }
316
316
 
317
317
  exports.OG = OG;
318
- exports.plantillaArticulo = plantillaArticulo;
319
- exports.plantillaBase = tarjeta;
320
- exports.plantillaCharla = plantillaCharla;
321
- exports.plantillaCurso = plantillaCurso;
322
- exports.plantillaDefecto = plantillaDefecto;
318
+ exports.articleTemplate = articleTemplate;
319
+ exports.courseTemplate = courseTemplate;
320
+ exports.defaultTemplate = defaultTemplate;
321
+ exports.plantillaBase = card;
322
+ exports.talkTemplate = talkTemplate;