@intlayer/docs 8.10.0-canary.0 → 8.10.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.
@@ -2,7 +2,7 @@
2
2
  createdAt: 2025-02-07
3
3
  updatedAt: 2026-05-19
4
4
  title: Markdown
5
- description: Aprenda a declarar y usar contenido Markdown en su sitio web multilingüe con Intlayer. Siga los pasos de esta documentación en línea para integrar Markdown de manera fluida en su proyecto.
5
+ description: Aprenda cómo declarar y usar contenido Markdown en su sitio web multilingüe con Intlayer. Siga los pasos de esta documentación en línea para integrar Markdown sin problemas en su proyecto.
6
6
  keywords:
7
7
  - Markdown
8
8
  - Internacionalización
@@ -19,49 +19,49 @@ slugs:
19
19
  history:
20
20
  - version: 8.10.0
21
21
  date: 2026-05-19
22
- changes: "Agregar soporte para archivos `.content.md`"
22
+ changes: "Se agregó soporte para archivos `.content.md`"
23
23
  - version: 8.5.0
24
24
  date: 2026-03-24
25
- changes: "Add `intlayerMarkdown` plugin object; use `app.use(intlayerMarkdown)` instead of `app.use(installIntlayerMarkdown)`"
25
+ changes: "Se agregó el objeto plugin `intlayerMarkdown`; use `app.use(intlayerMarkdown)` en lugar de `app.use(installIntlayerMarkdown)`"
26
26
  - version: 8.5.0
27
27
  date: 2026-03-24
28
- changes: "mover la importación de {{framework}}-intlayer a {{framework}}-intlayer/markdown"
28
+ changes: "Se movió la importación de `{{framework}}-intlayer` a `{{framework}}-intlayer/markdown`"
29
29
  - version: 8.0.0
30
30
  date: 2026-01-22
31
- changes: "Agregar MarkdownRenderer / useMarkdownRenderer / utilidad renderMarkdown y opción forceInline"
31
+ changes: "Se agregó la utilidad MarkdownRenderer / useMarkdownRenderer / renderMarkdown y la opción forceInline"
32
32
  - version: 8.0.0
33
33
  date: 2026-01-18
34
34
  changes: "Decoración automática de contenido markdown, soporte para MDX y SSR"
35
35
  - version: 5.5.10
36
36
  date: 2025-06-29
37
- changes: "Inicializar historial"
37
+ changes: "Historial inicializado"
38
38
  ---
39
39
 
40
40
  # Markdown / Contenido de Texto Enriquecido
41
41
 
42
- Intlayer admite contenido de texto enriquecido definido mediante la sintaxis Markdown. Esto le permite escribir y mantener fácilmente contenido con un formato enriquecido, como blogs, artículos y más.
42
+ Intlayer admite contenido de texto enriquecido definido mediante la sintaxis Markdown. Esto le permite escribir y mantener fácilmente contenido con formato enriquecido, como blogs, artículos y mucho más.
43
43
 
44
44
  ## Declarar Contenido Markdown
45
45
 
46
- Puede declarar contenido Markdown mediante la función `md` o simplemente como una cadena (si contiene sintaxis Markdown).
46
+ Puede declarar contenido Markdown usando la función `md` o simplemente como una cadena de texto (si contiene sintaxis Markdown).
47
47
 
48
48
  <Tabs>
49
49
  <Tab label=".content.md" value=".content.md">
50
50
  A partir de la versión `8.10.0`, puede declarar contenido Markdown directamente en archivos `.content.md`. Intlayer detectará y analizará automáticamente el contenido Markdown.
51
51
 
52
- ```md fileName="markdown-file.es.content.md"
52
+ ```md fileName="markdown-file.en.content.md"
53
53
  ---
54
54
  key: my-markdown-content
55
55
  description: Mi contenido
56
- locale: es
56
+ locale: en
57
57
  ---
58
58
 
59
59
  # Mi contenido
60
60
 
61
- Aquí un ejemplo de contenido Markdown
61
+ Aquí hay un ejemplo de contenido markdown
62
62
  ```
63
63
 
64
- El campo frontmatter `locale` es el campo que define la configuración regional del contenido. Es opcional. Si no se proporciona, Intlayer utilizará la configuración regional predeterminada, que también se utiliza como configuración regional de respaldo si no hay traducción disponible para una configuración regional específica.
64
+ El campo `locale` en el front-matter es el campo que define el idioma del contenido. Es opcional. Si no se proporciona, Intlayer utilizará el idioma por defecto, que también se usa como idioma de respaldo si no hay traducción disponible para un idioma específico.
65
65
 
66
66
  Ejemplo de estructura de archivos:
67
67
 
@@ -75,11 +75,11 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
75
75
  └── markdown-file.es.content.md
76
76
  ```
77
77
 
78
- Puede agregar en front-matter cualquier propiedad definida en la [definición del Diccionario](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md)
78
+ Puede agregar en el front-matter cualquier propiedad definida en la [Definición del Diccionario](https://github.com/aymericzip/intlayer/blob/main/docs/docs/es/dictionary/content_file.md)
79
79
 
80
80
  </Tab>
81
81
  <Tab label="Envoltura Manual" value="manual-wrapping">
82
- Utilice la función `md` para declarar explícitamente contenido Markdown. Esto es útil si desea asegurarse de que una cadena se trate como Markdown incluso si no contiene una sintaxis obvia.
82
+ Use la función `md` para declarar explícitamente contenido Markdown. Esto es útil si desea asegurarse de que una cadena se trate como Markdown incluso si no contiene sintaxis evidente.
83
83
 
84
84
  ```typescript fileName="markdownDictionary.content.ts"
85
85
  import { md, type Dictionary } from "intlayer";
@@ -87,7 +87,7 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
87
87
  const markdownDictionary = {
88
88
  key: "app",
89
89
  content: {
90
- myMarkdownContent: md("## My title \n\nLorem Ipsum"),
90
+ myMarkdownContent: md("## Mi título \n\nLorem Ipsum"),
91
91
  },
92
92
  } satisfies Dictionary;
93
93
 
@@ -95,33 +95,34 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
95
95
  ```
96
96
 
97
97
  </Tab>
98
- <Tab label="Detección Automática" value="automatic-detection">
99
- Si la cadena contiene indicadores comunes de Markdown (como encabezados, listas, enlaces, etc.), Intlayer la transformará automáticamente.
98
+ <Tab label="Archivos Externos" value="external-files">
99
+ Importe archivos `.md` directamente usando la función `file`.
100
100
 
101
101
  ```typescript fileName="markdownDictionary.content.ts"
102
+ import { md, file, t } from "intlayer";
103
+
102
104
  export default {
103
105
  key: "app",
104
- contentAutoTransformation: true, // Habilitar la detección automática de contenido Markdown - Se puede configurar globalmente en intlayer.config.ts
105
106
  content: {
106
- myMarkdownContent: "## My title \n\nLorem Ipsum",
107
+ content: t({
108
+ en: md(file("./myMarkdown.en.md")),
109
+ es: md(file("./myMarkdown.es.md")),
110
+ }),
107
111
  },
108
112
  };
109
113
  ```
110
114
 
111
115
  </Tab>
112
- <Tab label="Archivos Externos" value="external-files">
113
- Importe archivos `.md` directamente mediante la función `file`.
114
116
 
115
- ```typescript fileName="markdownDictionary.content.ts"
116
- import { md, file, t } from "intlayer";
117
+ <Tab label="Detección Automática" value="automatic-detection">
118
+ Si la cadena contiene indicadores comunes de Markdown (como encabezados, listas, enlaces, etc.), Intlayer la transformará automáticamente.
117
119
 
120
+ ```typescript fileName="markdownDictionary.content.ts"
118
121
  export default {
119
122
  key: "app",
123
+ contentAutoTransformation: true, // Habilitar detección automática de contenido Markdown - Se puede configurar globalmente en intlayer.config.ts
120
124
  content: {
121
- content: t({
122
- en: md(file("./myMarkdown.en.md")),
123
- fr: md(file("./myMarkdown.fr.md")),
124
- }),
125
+ myMarkdownContent: "## Mi título \n\nLorem Ipsum",
125
126
  },
126
127
  };
127
128
  ```
@@ -131,13 +132,19 @@ Puede declarar contenido Markdown mediante la función `md` o simplemente como u
131
132
 
132
133
  ---
133
134
 
134
- ## Renderizado de Markdown
135
+ ## Renderización de Markdown
136
+
137
+ Intlayer proporciona dos formas independientes de renderizar Markdown:
138
+
139
+ 1. **A través de `useIntlayer`**
140
+ — Intlayer transforma automáticamente el nodo `md` en la salida nativa del framework (JSX, VNode, cadena HTML).
141
+ - El Frontmatter se analiza y expone como `.metadata`. Puede anular la renderización en dos niveles — globalmente con `MarkdownProvider` (o el equivalente en el framework) y localmente por nodo con `.use()`. Ambos pueden combinarse; `.use()` tiene prioridad sobre `MarkdownProvider`, el cual tiene prioridad sobre el predeterminado.
135
142
 
136
- El renderizado puede ser gestionado automáticamente por el sistema de contenido de Intlayer o manualmente mediante herramientas especializadas.
143
+ 2. **Utilidades auxiliares** `<MarkdownRenderer />`, `useMarkdownRenderer()`, y `renderMarkdown()` son herramientas independientes que aceptan **únicamente cadenas Markdown puras**. Son independientes de `useIntlayer` y no funcionan con los nodos decorados que este retorna.
137
144
 
138
- ### 1. Renderizado Automático (usando `useIntlayer`)
145
+ La renderización de Markdown admite **MDX** — use cualquier componente JSX/framework por su nombre directamente dentro de su Markdown.
139
146
 
140
- Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya están preparados para el renderizado.
147
+ ### 1. Renderización Automática (a través de `useIntlayer`)
141
148
 
142
149
  <Tabs group="framework">
143
150
  <Tab label="React / Next.js" value="react">
@@ -145,24 +152,54 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
145
152
 
146
153
  ```tsx fileName="App.tsx"
147
154
  import { useIntlayer } from "react-intlayer";
155
+ import { MarkdownProvider } from "react-intlayer/markdown";
148
156
 
149
157
  const AppContent = () => {
150
158
  const { myMarkdownContent } = useIntlayer("app");
159
+
151
160
  return <div>{myMarkdownContent}</div>;
152
161
  };
162
+
163
+ const App = () => (
164
+ <MarkdownProvider
165
+ components={{
166
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
167
+ MyButton: (props) => <button {...props} />, // Componente MDX
168
+ }}
169
+ >
170
+ <AppContent />
171
+ </MarkdownProvider>
172
+ );
153
173
  ```
154
174
 
155
- También puede proporcionar sobrescrituras locales para nodos específicos mediante el método `.use()`:
175
+ > Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador por defecto de Markdown a JSX.
176
+
177
+ También puede proporcionar anulaciones locales para nodos específicos utilizando el método `.use()`:
156
178
 
157
179
  ```tsx
158
180
  {myMarkdownContent.use({
159
- h1: ({ children }) => <h1 className="text-3xl font-bold">{children}</h1>,
181
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
160
182
  })}
161
183
  ```
162
184
 
185
+ Puede recuperar el Markdown como cadena:
186
+
187
+ ```tsx
188
+ {myMarkdownContent.value}
189
+ {String(myMarkdownContent)}
190
+ {myMarkdownContent.toString()}
191
+ ```
192
+
193
+ Y puede acceder a los metadatos de su markdown así:
194
+
195
+ ```tsx
196
+ {myMarkdownContent.metadata}
197
+ {myMarkdownContent.metadata.title}
198
+ ```
199
+
163
200
  </Tab>
164
201
  <Tab label="Vue" value="vue">
165
- En Vue, el contenido Markdown se puede renderizar mediante el componente integrado `component` o directamente como un nodo.
202
+ En Vue, el contenido Markdown se puede renderizar usando la etiqueta incorporada `component` o directamente como un nodo.
166
203
 
167
204
  ```vue fileName="App.vue"
168
205
  <script setup>
@@ -175,43 +212,183 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
175
212
  </template>
176
213
  ```
177
214
 
215
+ Configure globalmente a través del plugin `intlayerMarkdown` (admite componentes MDX personalizados):
216
+
217
+ ```ts fileName="main.ts"
218
+ import { intlayerMarkdown } from "vue-intlayer/markdown";
219
+
220
+ app.use(intlayerMarkdown, {
221
+ components: {
222
+ h1: (props) => h('h1', { style: { color: 'green' } }, props.children),
223
+ MyButton: (props) => h('button', props), // Componente MDX
224
+ },
225
+ });
226
+ ```
227
+
228
+ > Si el plugin `intlayerMarkdown` no está instalado, Intlayer renderizará utilizando el compilador predeterminado.
229
+
230
+ También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
231
+
232
+ ```vue
233
+ <component :is="myMarkdownContent.use({
234
+ h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
235
+ })" />
236
+ ```
237
+
238
+ Puede recuperar el Markdown como cadena:
239
+
240
+ ```vue
241
+ {{ myMarkdownContent.value }}
242
+ {{ String(myMarkdownContent) }}
243
+ {{ myMarkdownContent.toString() }}
244
+ ```
245
+
246
+ Y puede acceder a los metadatos de su markdown así:
247
+
248
+ ```vue
249
+ <component :is="myMarkdownContent.metadata" />
250
+ <component :is="myMarkdownContent.metadata.title" />
251
+ ```
252
+
178
253
  </Tab>
179
254
  <Tab label="Svelte" value="svelte">
180
- Svelte renderiza Markdown como una cadena HTML por defecto. Utilice `{@html}` para renderizarlo.
255
+ Svelte renderiza el Markdown como una cadena HTML por defecto. Use `{@html}` para renderizarlo.
181
256
 
182
- ```svelte
257
+ ```svelte fileName="App.svelte"
183
258
  <script lang="ts">
184
259
  import { useIntlayer } from "svelte-intlayer";
260
+ import { MarkdownProvider } from "svelte-intlayer/markdown";
261
+ import MyHeading from "./MyHeading.svelte";
262
+
185
263
  const content = useIntlayer("app");
186
264
  </script>
187
265
 
188
- {@html $content.myMarkdownContent}
266
+ <MarkdownProvider components={{ h1: MyHeading }}>
267
+ {@html $content.myMarkdownContent}
268
+ </MarkdownProvider>
269
+ ```
270
+
271
+ > Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el compilador por defecto.
272
+
273
+ También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
274
+
275
+ ```svelte
276
+ {@html $content.myMarkdownContent.use({ ... })}
277
+ ```
278
+
279
+ Puede recuperar el Markdown como cadena:
280
+
281
+ ```svelte
282
+ {$content.myMarkdownContent.value}
283
+ {String($content.myMarkdownContent)}
284
+ {$content.myMarkdownContent.toString()}
285
+ ```
286
+
287
+ Y puede acceder a los metadatos de su markdown así:
288
+
289
+ ```svelte
290
+ {$content.myMarkdownContent.metadata}
291
+ {$content.myMarkdownContent.metadata.title}
189
292
  ```
190
293
 
191
294
  </Tab>
192
295
  <Tab label="Preact" value="preact">
193
- Preact admite nodos Markdown directamente en el JSX.
296
+ Preact soporta los nodos Markdown directamente en JSX.
194
297
 
195
298
  ```tsx fileName="App.tsx"
196
299
  import { useIntlayer } from "preact-intlayer";
300
+ import { MarkdownProvider } from "preact-intlayer/markdown";
197
301
 
198
302
  const AppContent = () => {
199
303
  const { myMarkdownContent } = useIntlayer("app");
200
304
  return <div>{myMarkdownContent}</div>;
201
305
  };
306
+
307
+ const App = () => (
308
+ <MarkdownProvider
309
+ components={{
310
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
311
+ MyButton: (props) => <button {...props} />, // Componente MDX
312
+ }}
313
+ >
314
+ <AppContent />
315
+ </MarkdownProvider>
316
+ );
317
+ ```
318
+
319
+ > Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador predeterminado de Markdown a JSX.
320
+
321
+ También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
322
+
323
+ ```tsx
324
+ {myMarkdownContent.use({
325
+ h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
326
+ })}
327
+ ```
328
+
329
+ Puede recuperar el Markdown como cadena:
330
+
331
+ ```tsx
332
+ {myMarkdownContent.value}
333
+ {String(myMarkdownContent)}
334
+ {myMarkdownContent.toString()}
335
+ ```
336
+
337
+ Y puede acceder a los metadatos de su markdown así:
338
+
339
+ ```tsx
340
+ {myMarkdownContent.metadata}
341
+ {myMarkdownContent.metadata.title}
202
342
  ```
203
343
 
204
344
  </Tab>
205
345
  <Tab label="Solid" value="solid">
206
- Solid admite nodos Markdown directamente en el JSX.
346
+ Solid soporta los nodos Markdown directamente en JSX.
207
347
 
208
348
  ```tsx fileName="App.tsx"
209
349
  import { useIntlayer } from "solid-intlayer";
350
+ import { MarkdownProvider } from "solid-intlayer/markdown";
210
351
 
211
352
  const AppContent = () => {
212
353
  const { myMarkdownContent } = useIntlayer("app");
213
354
  return <div>{myMarkdownContent}</div>;
214
355
  };
356
+
357
+ const App = () => (
358
+ <MarkdownProvider
359
+ components={{
360
+ h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
361
+ MyButton: (props) => <button {...props} />, // Componente MDX
362
+ }}
363
+ >
364
+ <AppContent />
365
+ </MarkdownProvider>
366
+ );
367
+ ```
368
+
369
+ > Si `MarkdownProvider` no está presente, Intlayer renderizará el markdown usando el analizador predeterminado de Markdown a JSX.
370
+
371
+ También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
372
+
373
+ ```tsx
374
+ {myMarkdownContent.use({
375
+ h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
376
+ })}
377
+ ```
378
+
379
+ Puede recuperar el Markdown como cadena:
380
+
381
+ ```tsx
382
+ {myMarkdownContent.value}
383
+ {String(myMarkdownContent)}
384
+ {myMarkdownContent.toString()}
385
+ ```
386
+
387
+ Y puede acceder a los metadatos de su markdown así:
388
+
389
+ ```tsx
390
+ {myMarkdownContent.metadata}
391
+ {myMarkdownContent.metadata.title}
215
392
  ```
216
393
 
217
394
  </Tab>
@@ -231,7 +408,9 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
231
408
  }
232
409
  ```
233
410
 
234
- También puede proporcionar sobrescrituras locales para nodos específicos mediante el método `.use()`:
411
+ > Si el proveedor IntlayerMarkdown no está configurado, Intlayer renderizará utilizando el compilador predeterminado.
412
+
413
+ También puede proporcionar anulaciones locales para nodos específicos usando el método `.use()`:
235
414
 
236
415
  ```typescript
237
416
  content().myMarkdownContent.use({
@@ -239,21 +418,40 @@ Cuando accede al contenido a través de `useIntlayer`, los nodos Markdown ya est
239
418
  })
240
419
  ```
241
420
 
421
+ Puede recuperar el Markdown como cadena:
422
+
423
+ ```typescript
424
+ content().myMarkdownContent.value
425
+ String(content().myMarkdownContent)
426
+ content().myMarkdownContent.toString()
427
+ ```
428
+
429
+ Y puede acceder a los metadatos de su markdown así:
430
+
431
+ ```typescript
432
+ content().myMarkdownContent.metadata
433
+ content().myMarkdownContent.metadata.title
434
+ ```
435
+
242
436
  </Tab>
243
437
  </Tabs>
244
438
 
245
- ### 2. Renderizado Manual y Herramientas Avanzadas
439
+ ### 2. Utilidades Auxiliares (Solo Cadenas Markdown)
246
440
 
247
- Si necesita renderizar cadenas de Markdown sin procesar o tener más control sobre el proceso de renderizado, utilice las siguientes herramientas.
441
+ Estas utilidades renderizan **únicamente cadenas Markdown puras** y son independientes de `useIntlayer`. Úselas cuando necesite renderizar Markdown de fuentes que no sean sus diccionarios.
248
442
 
249
443
  <Tabs group="framework">
250
444
  <Tab label="React / Next.js" value="react">
251
445
 
446
+ #### Componente `<MarkdownRenderer />`
447
+
448
+ Renderiza una cadena Markdown con opciones específicas.
449
+
252
450
  ```tsx
253
451
  import { MarkdownRenderer } from "react-intlayer/markdown";
254
452
 
255
453
  <MarkdownRenderer forceBlock={true} tagfilter={true}>
256
- {"# My Title"}
454
+ {"# Mi Título"}
257
455
  </MarkdownRenderer>
258
456
  ```
259
457
 
@@ -269,7 +467,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
269
467
  components: { h1: (props) => <h1 {...props} className="custom" /> }
270
468
  });
271
469
 
272
- return renderMarkdown("# My Title");
470
+ return renderMarkdown("# Mi Título");
273
471
  ```
274
472
 
275
473
  #### Utilidad `renderMarkdown()`
@@ -278,7 +476,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
278
476
  ```tsx
279
477
  import { renderMarkdown } from "react-intlayer/markdown";
280
478
 
281
- const jsx = renderMarkdown("# My Title", { forceBlock: true });
479
+ const jsx = renderMarkdown("# Mi Título", { forceBlock: true });
282
480
  ```
283
481
 
284
482
  </Tab>
@@ -292,7 +490,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
292
490
  </script>
293
491
 
294
492
  <template>
295
- <MarkdownRenderer :forceBlock="true" content="# My Title" />
493
+ <MarkdownRenderer :forceBlock="true" content="# Mi Título" />
296
494
  </template>
297
495
  ```
298
496
 
@@ -306,7 +504,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
306
504
  import { MarkdownRenderer } from "svelte-intlayer/markdown";
307
505
  </script>
308
506
 
309
- <MarkdownRenderer forceBlock={true} value="# My Title" />
507
+ <MarkdownRenderer forceBlock={true} value="# Mi Título" />
310
508
  ```
311
509
 
312
510
  #### Hook `useMarkdownRenderer()`
@@ -317,7 +515,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
317
515
  const render = useMarkdownRenderer();
318
516
  </script>
319
517
 
320
- {@html render("# My Title")}
518
+ {@html render("# Mi Título")}
321
519
  ```
322
520
 
323
521
  #### Utilidad `renderMarkdown()`
@@ -327,7 +525,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
327
525
  import { renderMarkdown } from "svelte-intlayer/markdown";
328
526
  </script>
329
527
 
330
- {@html renderMarkdown("# My Title")}
528
+ {@html renderMarkdown("# Mi Título")}
331
529
  ```
332
530
 
333
531
  </Tab>
@@ -338,7 +536,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
338
536
  import { MarkdownRenderer } from "preact-intlayer/markdown";
339
537
 
340
538
  <MarkdownRenderer forceBlock={true}>
341
- {"# My Title"}
539
+ {"# Mi Título"}
342
540
  </MarkdownRenderer>
343
541
  ```
344
542
 
@@ -349,7 +547,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
349
547
 
350
548
  const render = useMarkdownRenderer();
351
549
 
352
- return <div>{render("# My Title")}</div>;
550
+ return <div>{render("# Mi Título")}</div>;
353
551
  ```
354
552
 
355
553
  #### Utilidad `renderMarkdown()`
@@ -357,7 +555,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
357
555
  ```tsx
358
556
  import { renderMarkdown } from "preact-intlayer/markdown";
359
557
 
360
- return <div>{renderMarkdown("# My Title")}</div>;
558
+ return <div>{renderMarkdown("# Mi Título")}</div>;
361
559
  ```
362
560
 
363
561
  </Tab>
@@ -368,7 +566,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
368
566
  import { MarkdownRenderer } from "solid-intlayer/markdown";
369
567
 
370
568
  <MarkdownRenderer forceBlock={true}>
371
- {"# My Title"}
569
+ {"# Mi Título"}
372
570
  </MarkdownRenderer>
373
571
  ```
374
572
 
@@ -379,7 +577,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
379
577
 
380
578
  const render = useMarkdownRenderer();
381
579
 
382
- return <div>{render("# My Title")}</div>;
580
+ return <div>{render("# Mi Título")}</div>;
383
581
  ```
384
582
 
385
583
  #### Utilidad `renderMarkdown()`
@@ -387,13 +585,13 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
387
585
  ```tsx
388
586
  import { renderMarkdown } from "solid-intlayer/markdown";
389
587
 
390
- return <div>{renderMarkdown("# My Title")}</div>;
588
+ return <div>{renderMarkdown("# Mi Título")}</div>;
391
589
  ```
392
590
 
393
591
  </Tab>
394
592
  <Tab label="Angular" value="angular">
395
593
  #### Servicio `IntlayerMarkdownService`
396
- Renderiza una cadena Markdown mediante el servicio.
594
+ Renderiza una cadena Markdown usando el servicio.
397
595
 
398
596
  ```typescript
399
597
  import { IntlayerMarkdownService } from "angular-intlayer/markdown";
@@ -414,7 +612,7 @@ Si necesita renderizar cadenas de Markdown sin procesar o tener más control sob
414
612
 
415
613
  ## Configuración Global con `MarkdownProvider`
416
614
 
417
- Puede configurar el renderizado de Markdown de forma global para toda su aplicación. Esto evita pasar las mismas props a cada renderizador.
615
+ `MarkdownProvider` (o su equivalente en el framework) configura el proceso de renderización Markdown para toda su aplicación. Esto se aplica tanto a la renderización automática de `useIntlayer` como a las utilidades auxiliares. Las opciones configuradas aquí son las predeterminadas — `.use()` las anula a nivel de nodo.
418
616
 
419
617
  <Tabs group="framework">
420
618
  <Tab label="React / Next.js" value="react">
@@ -425,8 +623,9 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
425
623
  export const AppProvider = ({ children }) => (
426
624
  <MarkdownProvider
427
625
  components={{
428
- h1: ({ children }) => <h1 className="text-2xl font-bold">{children}</h1>,
429
- a: ({ href, children }) => <Link to={href}>{children}</Link>,
626
+ h1: (props) => <h1 style={{color: 'green'}} {...props} />,
627
+ a: ({ href, ...props }) => <a style={{color: 'red'}} {...props} />,
628
+ MyCustomJSXComponent: (props) => <span style={{color: 'red'}} {...props} />,
430
629
  }}
431
630
  >
432
631
  {children}
@@ -434,7 +633,9 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
434
633
  );
435
634
  ```
436
635
 
437
- También puede utilizar su propio motor de renderizado de markdown:
636
+ > MDX es compatible cualquier nombre de componente usado dentro de su Markdown (ej. `<MyCustomJSXComponent />`) se resuelve contra el mapeo de `components`.
637
+
638
+ También puede usar su propio renderizador de markdown:
438
639
 
439
640
  ```tsx fileName="AppProvider.tsx"
440
641
  import { MarkdownProvider } from "react-intlayer/markdown";
@@ -442,8 +643,9 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
442
643
  export const AppProvider = ({ children }) => (
443
644
  <MarkdownProvider
444
645
  renderMarkdown={async (md) => {
445
- const { compileMarkdown } = await import('react-intlayer/markdown');
446
- return compileMarkdown(md);
646
+ // Use dynamic import to reduce the bundle size of your application
647
+ const { renderMarkdown } = await import('react-intlayer/markdown');
648
+ return renderMarkdown(md);
447
649
  }}
448
650
  >
449
651
  {children}
@@ -451,7 +653,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
451
653
  );
452
654
  ```
453
655
 
454
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
656
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
455
657
 
456
658
  </Tab>
457
659
  <Tab label="Vue" value="vue">
@@ -478,7 +680,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
478
680
  app.mount("#app");
479
681
  ```
480
682
 
481
- También puede utilizar su propio motor de renderizado de markdown:
683
+ También puede usar su propio renderizador de markdown:
482
684
 
483
685
  ```typescript fileName="main.ts"
484
686
  import { createApp } from "vue";
@@ -491,15 +693,15 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
491
693
  app.use(intlayer);
492
694
  app.use(intlayerMarkdown, {
493
695
  renderMarkdown: async (md) => {
494
- const { compileMarkdown } = await import('vue-intlayer/markdown');
495
- return compileMarkdown(md);
696
+ const { renderMarkdown } = await import('vue-intlayer/markdown');
697
+ return renderMarkdown(md);
496
698
  },
497
699
  });
498
700
 
499
701
  app.mount("#app");
500
702
  ```
501
703
 
502
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
704
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
503
705
 
504
706
  </Tab>
505
707
  <Tab label="Svelte" value="svelte">
@@ -519,7 +721,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
519
721
  </MarkdownProvider>
520
722
  ```
521
723
 
522
- También puede utilizar su propio motor de renderizado de markdown:
724
+ También puede usar su propio renderizador de markdown:
523
725
 
524
726
  ```svelte fileName="App.svelte"
525
727
  <script lang="ts">
@@ -528,15 +730,15 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
528
730
 
529
731
  <MarkdownProvider
530
732
  renderMarkdown={async (md) => {
531
- const { compileMarkdown } = await import('svelte-intlayer/markdown');
532
- return compileMarkdown(md);
733
+ const { renderMarkdown } = await import('svelte-intlayer/markdown');
734
+ return renderMarkdown(md);
533
735
  }}
534
736
  >
535
737
  <slot />
536
738
  </MarkdownProvider>
537
739
  ```
538
740
 
539
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
741
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
540
742
 
541
743
  </Tab>
542
744
  <Tab label="Preact" value="preact">
@@ -555,7 +757,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
555
757
  );
556
758
  ```
557
759
 
558
- También puede utilizar su propio motor de renderizado de markdown:
760
+ También puede usar su propio renderizador de markdown:
559
761
 
560
762
  ```tsx fileName="AppProvider.tsx"
561
763
  import { MarkdownProvider } from "preact-intlayer/markdown";
@@ -563,8 +765,8 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
563
765
  export const AppProvider = ({ children }) => (
564
766
  <MarkdownProvider
565
767
  renderMarkdown={async (md) => {
566
- const { compileMarkdown } = await import('preact-intlayer/markdown');
567
- return compileMarkdown(md);
768
+ const { renderMarkdown } = await import('preact-intlayer/markdown');
769
+ return renderMarkdown(md);
568
770
  }}
569
771
  >
570
772
  {children}
@@ -572,7 +774,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
572
774
  );
573
775
  ```
574
776
 
575
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
777
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
576
778
 
577
779
  </Tab>
578
780
  <Tab label="Solid" value="solid">
@@ -591,7 +793,7 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
591
793
  );
592
794
  ```
593
795
 
594
- También puede utilizar su propio motor de renderizado de markdown:
796
+ También puede usar su propio renderizador de markdown:
595
797
 
596
798
  ```tsx fileName="AppProvider.tsx"
597
799
  import { MarkdownProvider } from "solid-intlayer/markdown";
@@ -599,8 +801,8 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
599
801
  export const AppProvider = (props) => (
600
802
  <MarkdownProvider
601
803
  renderMarkdown={async (md) => {
602
- const { compileMarkdown } = await import('solid-intlayer/markdown');
603
- return compileMarkdown(md);
804
+ const { renderMarkdown } = await import('solid-intlayer/markdown');
805
+ return renderMarkdown(md);
604
806
  }}
605
807
  >
606
808
  {props.children}
@@ -608,59 +810,29 @@ Puede configurar el renderizado de Markdown de forma global para toda su aplicac
608
810
  );
609
811
  ```
610
812
 
611
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
813
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
612
814
 
613
815
  </Tab>
614
816
  <Tab label="Angular" value="angular">
615
817
 
616
- ```typescript fileName="app.config.ts"
617
- import { createIntlayerMarkdownProvider } from "angular-intlayer/markdown";
618
-
619
- export const appConfig: ApplicationConfig = {
620
- providers: [
621
- createIntlayerMarkdownProvider({
622
- components: {
623
- h1: { class: "text-2xl font-bold" },
624
- },
625
- }),
626
- ],
627
- };
628
- ```
629
-
630
- También puede utilizar su propio motor de renderizado de markdown:
818
+ ```typescript fileName="app.module.ts"
819
+ import { NgModule } from '@angular/core';
820
+ import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
631
821
 
632
- ```typescript fileName="app.config.ts"
633
- import { createIntlayerMarkdownProvider } from "angular-intlayer/markdown";
634
-
635
- export const appConfig: ApplicationConfig = {
636
- providers: [
637
- createIntlayerMarkdownProvider({
822
+ @NgModule({
823
+ imports: [
824
+ IntlayerMarkdownModule.forRoot({
638
825
  renderMarkdown: async (md) => {
639
- const { compileMarkdown } = await import('angular-intlayer/markdown');
640
- return compileMarkdown(md);
641
- },
642
- }),
643
- ],
644
- };
826
+ const { renderMarkdown } = await import('angular-intlayer/markdown');
827
+ return renderMarkdown(md);
828
+ }
829
+ })
830
+ ]
831
+ })
832
+ export class AppModule {}
645
833
  ```
646
834
 
647
- > Importar dinámicamente su renderizador de Markdown es una buena manera de reducir el tamaño del paquete de su aplicación.
835
+ > Importar su renderizador de Markdown dinámicamente es una buena manera de reducir el tamaño del paquete de su aplicación.
648
836
 
649
837
  </Tab>
650
838
  </Tabs>
651
-
652
- ---
653
-
654
- ## Referencia de Opciones
655
-
656
- Estas opciones se pueden pasar a `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer` y `renderMarkdown`.
657
-
658
- | Opción | Tipo | Por Defecto | Descripción |
659
- | :-------------------- | :---------- | :---------- | :------------------------------------------------------------------------------------------------------------ |
660
- | `forceBlock` | `boolean` | `false` | Obliga a que la salida esté envuelta en un elemento de nivel de bloque (p. ej., `<div>`). |
661
- | `forceInline` | `boolean` | `false` | Obliga a que la salida esté envuelta en un elemento en línea (p. ej., `<span>`). |
662
- | `tagfilter` | `boolean` | `true` | Habilita el filtro de etiquetas de GitHub para mejorar la seguridad al eliminar etiquetas HTML peligrosas. |
663
- | `preserveFrontmatter` | `boolean` | `false` | Si es `true`, no se eliminará el frontmatter al principio de la cadena Markdown. |
664
- | `components` | `Overrides` | `{}` | Un mapa de etiquetas HTML a componentes personalizados (p. ej., `{ h1: MyHeading }`). |
665
- | `wrapper` | `Component` | `null` | Un componente personalizado para envolver el Markdown renderizado. |
666
- | `renderMarkdown` | `Function` | `null` | Una función de renderizado personalizada para reemplazar completamente el compilador de Markdown por defecto. |