@intlayer/docs 8.10.0-canary.0 → 8.10.0-canary.1
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/docs/ar/dictionary/markdown.md +402 -82
- package/docs/de/dictionary/markdown.md +269 -98
- package/docs/en/dictionary/markdown.md +221 -25
- package/docs/en-GB/dictionary/markdown.md +351 -67
- package/docs/es/dictionary/markdown.md +286 -115
- package/docs/fr/dictionary/markdown.md +292 -121
- package/docs/hi/dictionary/markdown.md +366 -81
- package/docs/id/dictionary/markdown.md +368 -83
- package/docs/it/dictionary/markdown.md +288 -122
- package/docs/ko/dictionary/markdown.md +297 -126
- package/docs/pl/dictionary/markdown.md +276 -106
- package/docs/pt/dictionary/markdown.md +276 -106
- package/docs/ru/dictionary/markdown.md +70 -505
- package/docs/tr/dictionary/markdown.md +291 -122
- package/docs/uk/dictionary/markdown.md +377 -92
- package/docs/vi/dictionary/markdown.md +377 -92
- package/docs/zh/dictionary/markdown.md +284 -117
- package/package.json +7 -7
- package/docs/ja/dictionary/markdown.md +0 -666
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
3
|
updatedAt: 2026-05-19
|
|
4
4
|
title: Markdown
|
|
5
|
-
description:
|
|
5
|
+
description: Aprenda como declarar e usar conteúdo Markdown em seu site multilíngue com o Intlayer. Siga os passos nesta documentação online para integrar o Markdown de forma nativa ao seu projeto.
|
|
6
6
|
keywords:
|
|
7
7
|
- Markdown
|
|
8
8
|
- Internacionalização
|
|
@@ -19,22 +19,22 @@ slugs:
|
|
|
19
19
|
history:
|
|
20
20
|
- version: 8.10.0
|
|
21
21
|
date: 2026-05-19
|
|
22
|
-
changes: "
|
|
22
|
+
changes: "Adicionado suporte a arquivos `.content.md`"
|
|
23
23
|
- version: 8.5.0
|
|
24
24
|
date: 2026-03-24
|
|
25
|
-
changes: "
|
|
25
|
+
changes: "Adicionado o objeto plugin `intlayerMarkdown`; use `app.use(intlayerMarkdown)` em vez de `app.use(installIntlayerMarkdown)`"
|
|
26
26
|
- version: 8.5.0
|
|
27
27
|
date: 2026-03-24
|
|
28
|
-
changes: "
|
|
28
|
+
changes: "Movida a importação de `{{framework}}-intlayer` para `{{framework}}-intlayer/markdown`"
|
|
29
29
|
- version: 8.0.0
|
|
30
30
|
date: 2026-01-22
|
|
31
|
-
changes: "
|
|
31
|
+
changes: "Adicionada a utilidade MarkdownRenderer / useMarkdownRenderer / renderMarkdown e a opção forceInline"
|
|
32
32
|
- version: 8.0.0
|
|
33
33
|
date: 2026-01-18
|
|
34
|
-
changes: "Decoração automática
|
|
34
|
+
changes: "Decoração automática de conteúdo markdown, suporte a MDX e SSR"
|
|
35
35
|
- version: 5.5.10
|
|
36
36
|
date: 2025-06-29
|
|
37
|
-
changes: "
|
|
37
|
+
changes: "Histórico inicializado"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
40
|
# Markdown / Conteúdo de Texto Rico
|
|
@@ -43,27 +43,27 @@ O Intlayer suporta conteúdo de texto rico definido usando a sintaxe Markdown. I
|
|
|
43
43
|
|
|
44
44
|
## Declarando Conteúdo Markdown
|
|
45
45
|
|
|
46
|
-
Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente como uma string (se contiver sintaxe Markdown).
|
|
46
|
+
Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente como uma string (se ela contiver sintaxe Markdown).
|
|
47
47
|
|
|
48
48
|
<Tabs>
|
|
49
49
|
<Tab label=".content.md" value=".content.md">
|
|
50
|
-
A partir da versão `8.10.0`, você pode declarar conteúdo Markdown diretamente em arquivos `.content.md`. O Intlayer
|
|
50
|
+
A partir da versão `8.10.0`, você pode declarar conteúdo Markdown diretamente em arquivos `.content.md`. O Intlayer detectará e processará automaticamente o conteúdo Markdown.
|
|
51
51
|
|
|
52
|
-
```md fileName="markdown-file.
|
|
52
|
+
```md fileName="markdown-file.en.content.md"
|
|
53
53
|
---
|
|
54
|
-
key:
|
|
54
|
+
key: my-markdown-content
|
|
55
55
|
description: Meu conteúdo
|
|
56
|
-
locale:
|
|
56
|
+
locale: en
|
|
57
57
|
---
|
|
58
58
|
|
|
59
59
|
# Meu conteúdo
|
|
60
60
|
|
|
61
|
-
Aqui está um exemplo de conteúdo
|
|
61
|
+
Aqui está um exemplo de conteúdo markdown
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
O campo
|
|
64
|
+
O campo `locale` no front-matter é o campo que define a localização do conteúdo. É opcional. Se não for fornecido, o Intlayer usará o idioma padrão, que também é usado como idioma de fallback caso não haja tradução disponível para um idioma específico.
|
|
65
65
|
|
|
66
|
-
Exemplo de estrutura de
|
|
66
|
+
Exemplo de estrutura de diretórios:
|
|
67
67
|
|
|
68
68
|
```text
|
|
69
69
|
content/
|
|
@@ -75,11 +75,11 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
75
75
|
└── markdown-file.es.content.md
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Você pode adicionar no front-matter quaisquer propriedades definidas na [
|
|
78
|
+
Você pode adicionar no front-matter quaisquer propriedades definidas na [Definição de Dicionário](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md)
|
|
79
79
|
|
|
80
80
|
</Tab>
|
|
81
|
-
<Tab label="
|
|
82
|
-
Use a função `md` para declarar explicitamente conteúdo Markdown. Isso é útil se você quiser garantir que uma string seja tratada como Markdown mesmo que não contenha sintaxe óbvia.
|
|
81
|
+
<Tab label="Empacotamento Manual" value="manual-wrapping">
|
|
82
|
+
Use a função `md` para declarar explicitamente o conteúdo Markdown. Isso é útil se você quiser garantir que uma string seja tratada como Markdown, mesmo que não contenha sintaxe óbvia.
|
|
83
83
|
|
|
84
84
|
```typescript fileName="markdownDictionary.content.ts"
|
|
85
85
|
import { md, type Dictionary } from "intlayer";
|
|
@@ -96,12 +96,12 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
98
|
<Tab label="Detecção Automática" value="automatic-detection">
|
|
99
|
-
Se a string contiver indicadores comuns
|
|
99
|
+
Se a string contiver indicadores Markdown comuns (como cabeçalhos, listas, links, etc.), o Intlayer a transformará automaticamente.
|
|
100
100
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
102
|
export default {
|
|
103
103
|
key: "app",
|
|
104
|
-
contentAutoTransformation: true, // Ativar
|
|
104
|
+
contentAutoTransformation: true, // Ativar detecção automática de conteúdo Markdown - Pode ser definido globalmente em intlayer.config.ts
|
|
105
105
|
content: {
|
|
106
106
|
myMarkdownContent: "## Meu título \n\nLorem Ipsum",
|
|
107
107
|
},
|
|
@@ -109,6 +109,7 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
</Tab>
|
|
112
|
+
|
|
112
113
|
<Tab label="Arquivos Externos" value="external-files">
|
|
113
114
|
Importe arquivos `.md` diretamente usando a função `file`.
|
|
114
115
|
|
|
@@ -120,7 +121,6 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
120
121
|
content: {
|
|
121
122
|
content: t({
|
|
122
123
|
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
fr: md(file("./myMarkdown.fr.md")),
|
|
124
124
|
pt: md(file("./myMarkdown.pt.md")),
|
|
125
125
|
}),
|
|
126
126
|
},
|
|
@@ -132,38 +132,74 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|
|
135
|
-
##
|
|
135
|
+
## Renderizando Markdown
|
|
136
|
+
|
|
137
|
+
O Intlayer fornece duas maneiras independentes de renderizar Markdown:
|
|
138
|
+
|
|
139
|
+
1. **Através do `useIntlayer`**
|
|
140
|
+
— O Intlayer transforma automaticamente o nó `md` na saída nativa do framework (JSX, VNode, string HTML).
|
|
141
|
+
- O Frontmatter é analisado e exposto como `.metadata`. Você pode substituir a renderização em dois níveis — globalmente com `MarkdownProvider` (ou o equivalente do framework) e localmente por nó com `.use()`. Ambos podem ser combinados; `.use()` tem prioridade sobre `MarkdownProvider`, que por sua vez tem prioridade sobre o padrão.
|
|
136
142
|
|
|
137
|
-
|
|
143
|
+
2. **Utilitários auxiliares** — `<MarkdownRenderer />`, `useMarkdownRenderer()` e `renderMarkdown()` são ferramentas autônomas que aceitam **apenas strings Markdown brutas**. Elas são independentes do `useIntlayer` e não funcionam com os nós decorados que ele retorna.
|
|
138
144
|
|
|
139
|
-
|
|
145
|
+
A renderização do Markdown suporta **MDX** — use qualquer componente JSX/framework por nome diretamente no seu Markdown.
|
|
140
146
|
|
|
141
|
-
|
|
147
|
+
### 1. Renderização Automática (através de `useIntlayer`)
|
|
142
148
|
|
|
143
149
|
<Tabs group="framework">
|
|
144
150
|
<Tab label="React / Next.js" value="react">
|
|
145
|
-
|
|
151
|
+
Nós Markdown podem ser renderizados diretamente como JSX.
|
|
146
152
|
|
|
147
153
|
```tsx fileName="App.tsx"
|
|
148
154
|
import { useIntlayer } from "react-intlayer";
|
|
155
|
+
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
149
156
|
|
|
150
157
|
const AppContent = () => {
|
|
151
158
|
const { myMarkdownContent } = useIntlayer("app");
|
|
159
|
+
|
|
152
160
|
return <div>{myMarkdownContent}</div>;
|
|
153
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
|
+
);
|
|
154
173
|
```
|
|
155
174
|
|
|
175
|
+
> Se o `MarkdownProvider` não estiver presente, o Intlayer renderizará o markdown usando o parser padrão Markdown-para-JSX.
|
|
176
|
+
|
|
156
177
|
Você também pode fornecer substituições locais para nós específicos usando o método `.use()`:
|
|
157
178
|
|
|
158
179
|
```tsx
|
|
159
180
|
{myMarkdownContent.use({
|
|
160
|
-
h1: ({ children }) => <h1
|
|
181
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
161
182
|
})}
|
|
162
183
|
```
|
|
163
184
|
|
|
185
|
+
Você pode recuperar o Markdown como string:
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
{myMarkdownContent.value}
|
|
189
|
+
{String(myMarkdownContent)}
|
|
190
|
+
{myMarkdownContent.toString()}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
E você pode acessar os metadados do markdown assim:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
{myMarkdownContent.metadata}
|
|
197
|
+
{myMarkdownContent.metadata.title}
|
|
198
|
+
```
|
|
199
|
+
|
|
164
200
|
</Tab>
|
|
165
201
|
<Tab label="Vue" value="vue">
|
|
166
|
-
No Vue, o conteúdo Markdown pode ser renderizado usando
|
|
202
|
+
No Vue, o conteúdo Markdown pode ser renderizado usando a tag nativa `component` ou diretamente como um nó.
|
|
167
203
|
|
|
168
204
|
```vue fileName="App.vue"
|
|
169
205
|
<script setup>
|
|
@@ -176,48 +212,188 @@ Quando você acessa conteúdo via `useIntlayer`, os nós Markdown já estão pre
|
|
|
176
212
|
</template>
|
|
177
213
|
```
|
|
178
214
|
|
|
215
|
+
Configure globalmente via plugin `intlayerMarkdown` (suporta 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
|
+
> Se o plugin `intlayerMarkdown` não estiver instalado, o Intlayer renderizará usando o compilador padrão.
|
|
229
|
+
|
|
230
|
+
Você também pode fornecer substituições locais para nós específicos usando o 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
|
+
Você pode recuperar o Markdown como string:
|
|
239
|
+
|
|
240
|
+
```vue
|
|
241
|
+
{{ myMarkdownContent.value }}
|
|
242
|
+
{{ String(myMarkdownContent) }}
|
|
243
|
+
{{ myMarkdownContent.toString() }}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
E você pode acessar os metadados do markdown assim:
|
|
247
|
+
|
|
248
|
+
```vue
|
|
249
|
+
<component :is="myMarkdownContent.metadata" />
|
|
250
|
+
<component :is="myMarkdownContent.metadata.title" />
|
|
251
|
+
```
|
|
252
|
+
|
|
179
253
|
</Tab>
|
|
180
254
|
<Tab label="Svelte" value="svelte">
|
|
181
|
-
O Svelte renderiza Markdown como
|
|
255
|
+
O Svelte renderiza Markdown como string HTML por padrão. Use `{@html}` para renderizá-lo.
|
|
182
256
|
|
|
183
|
-
```svelte
|
|
257
|
+
```svelte fileName="App.svelte"
|
|
184
258
|
<script lang="ts">
|
|
185
259
|
import { useIntlayer } from "svelte-intlayer";
|
|
260
|
+
import { MarkdownProvider } from "svelte-intlayer/markdown";
|
|
261
|
+
import MyHeading from "./MyHeading.svelte";
|
|
262
|
+
|
|
186
263
|
const content = useIntlayer("app");
|
|
187
264
|
</script>
|
|
188
265
|
|
|
189
|
-
{
|
|
266
|
+
<MarkdownProvider components={{ h1: MyHeading }}>
|
|
267
|
+
{@html $content.myMarkdownContent}
|
|
268
|
+
</MarkdownProvider>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> Se o `MarkdownProvider` não estiver presente, o Intlayer renderizará o markdown usando o compilador padrão.
|
|
272
|
+
|
|
273
|
+
Você também pode fornecer substituições locais para nós específicos usando o método `.use()`:
|
|
274
|
+
|
|
275
|
+
```svelte
|
|
276
|
+
{@html $content.myMarkdownContent.use({ ... })}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Você pode recuperar o Markdown como string:
|
|
280
|
+
|
|
281
|
+
```svelte
|
|
282
|
+
{$content.myMarkdownContent.value}
|
|
283
|
+
{String($content.myMarkdownContent)}
|
|
284
|
+
{$content.myMarkdownContent.toString()}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
E você pode acessar os metadados do markdown assim:
|
|
288
|
+
|
|
289
|
+
```svelte
|
|
290
|
+
{$content.myMarkdownContent.metadata}
|
|
291
|
+
{$content.myMarkdownContent.metadata.title}
|
|
190
292
|
```
|
|
191
293
|
|
|
192
294
|
</Tab>
|
|
193
295
|
<Tab label="Preact" value="preact">
|
|
194
|
-
Preact suporta nós Markdown diretamente
|
|
296
|
+
O Preact suporta nós Markdown diretamente em JSX.
|
|
195
297
|
|
|
196
298
|
```tsx fileName="App.tsx"
|
|
197
299
|
import { useIntlayer } from "preact-intlayer";
|
|
300
|
+
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
198
301
|
|
|
199
302
|
const AppContent = () => {
|
|
200
303
|
const { myMarkdownContent } = useIntlayer("app");
|
|
201
304
|
return <div>{myMarkdownContent}</div>;
|
|
202
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
|
+
> Se o `MarkdownProvider` não estiver presente, o Intlayer renderizará o markdown usando o parser padrão Markdown-para-JSX.
|
|
320
|
+
|
|
321
|
+
Você também pode fornecer substituições locais para nós específicos usando o método `.use()`:
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
{myMarkdownContent.use({
|
|
325
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
326
|
+
})}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Você pode recuperar o Markdown como string:
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
{myMarkdownContent.value}
|
|
333
|
+
{String(myMarkdownContent)}
|
|
334
|
+
{myMarkdownContent.toString()}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
E você pode acessar os metadados do markdown assim:
|
|
338
|
+
|
|
339
|
+
```tsx
|
|
340
|
+
{myMarkdownContent.metadata}
|
|
341
|
+
{myMarkdownContent.metadata.title}
|
|
203
342
|
```
|
|
204
343
|
|
|
205
344
|
</Tab>
|
|
206
345
|
<Tab label="Solid" value="solid">
|
|
207
|
-
Solid suporta nós Markdown diretamente
|
|
346
|
+
O Solid suporta nós Markdown diretamente em JSX.
|
|
208
347
|
|
|
209
348
|
```tsx fileName="App.tsx"
|
|
210
349
|
import { useIntlayer } from "solid-intlayer";
|
|
350
|
+
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
211
351
|
|
|
212
352
|
const AppContent = () => {
|
|
213
353
|
const { myMarkdownContent } = useIntlayer("app");
|
|
214
354
|
return <div>{myMarkdownContent}</div>;
|
|
215
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
|
+
> Se o `MarkdownProvider` não estiver presente, o Intlayer renderizará o markdown usando o parser padrão Markdown-para-JSX.
|
|
370
|
+
|
|
371
|
+
Você também pode fornecer substituições locais para nós específicos usando o método `.use()`:
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
{myMarkdownContent.use({
|
|
375
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
376
|
+
})}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Você pode recuperar o Markdown como string:
|
|
380
|
+
|
|
381
|
+
```tsx
|
|
382
|
+
{myMarkdownContent.value}
|
|
383
|
+
{String(myMarkdownContent)}
|
|
384
|
+
{myMarkdownContent.toString()}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
E você pode acessar os metadados do markdown assim:
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
{myMarkdownContent.metadata}
|
|
391
|
+
{myMarkdownContent.metadata.title}
|
|
216
392
|
```
|
|
217
393
|
|
|
218
394
|
</Tab>
|
|
219
395
|
<Tab label="Angular" value="angular">
|
|
220
|
-
Angular
|
|
396
|
+
O Angular usa a diretiva `[innerHTML]` para renderizar conteúdo Markdown.
|
|
221
397
|
|
|
222
398
|
```typescript fileName="app.component.ts"
|
|
223
399
|
import { Component } from "@angular/core";
|
|
@@ -232,6 +408,8 @@ Quando você acessa conteúdo via `useIntlayer`, os nós Markdown já estão pre
|
|
|
232
408
|
}
|
|
233
409
|
```
|
|
234
410
|
|
|
411
|
+
> Se o provedor IntlayerMarkdown não estiver configurado, o Intlayer renderizará usando o compilador padrão.
|
|
412
|
+
|
|
235
413
|
Você também pode fornecer substituições locais para nós específicos usando o método `.use()`:
|
|
236
414
|
|
|
237
415
|
```typescript
|
|
@@ -240,16 +418,35 @@ Quando você acessa conteúdo via `useIntlayer`, os nós Markdown já estão pre
|
|
|
240
418
|
})
|
|
241
419
|
```
|
|
242
420
|
|
|
421
|
+
Você pode recuperar o Markdown como string:
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
content().myMarkdownContent.value
|
|
425
|
+
String(content().myMarkdownContent)
|
|
426
|
+
content().myMarkdownContent.toString()
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
E você pode acessar os metadados do markdown assim:
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
content().myMarkdownContent.metadata
|
|
433
|
+
content().myMarkdownContent.metadata.title
|
|
434
|
+
```
|
|
435
|
+
|
|
243
436
|
</Tab>
|
|
244
437
|
</Tabs>
|
|
245
438
|
|
|
246
|
-
### 2.
|
|
439
|
+
### 2. Utilitários auxiliares (Somente Strings Markdown)
|
|
247
440
|
|
|
248
|
-
|
|
441
|
+
Estes utilitários renderizam **apenas strings Markdown brutas** e são independentes do `useIntlayer`. Use-os quando precisar renderizar Markdown de fontes além de seus dicionários.
|
|
249
442
|
|
|
250
443
|
<Tabs group="framework">
|
|
251
444
|
<Tab label="React / Next.js" value="react">
|
|
252
445
|
|
|
446
|
+
#### Componente `<MarkdownRenderer />`
|
|
447
|
+
|
|
448
|
+
Renderiza uma string Markdown com opções específicas.
|
|
449
|
+
|
|
253
450
|
```tsx
|
|
254
451
|
import { MarkdownRenderer } from "react-intlayer/markdown";
|
|
255
452
|
|
|
@@ -260,7 +457,7 @@ Se precisar renderizar strings Markdown brutas ou tiver mais controlo sobre o pr
|
|
|
260
457
|
|
|
261
458
|
#### Hook `useMarkdownRenderer()`
|
|
262
459
|
|
|
263
|
-
|
|
460
|
+
Obtém uma função de renderização pré-configurada.
|
|
264
461
|
|
|
265
462
|
```tsx
|
|
266
463
|
import { useMarkdownRenderer } from "react-intlayer/markdown";
|
|
@@ -274,7 +471,7 @@ Se precisar renderizar strings Markdown brutas ou tiver mais controlo sobre o pr
|
|
|
274
471
|
```
|
|
275
472
|
|
|
276
473
|
#### Utilitário `renderMarkdown()`
|
|
277
|
-
Utilitário
|
|
474
|
+
Utilitário autônomo para renderização fora dos componentes.
|
|
278
475
|
|
|
279
476
|
```tsx
|
|
280
477
|
import { renderMarkdown } from "react-intlayer/markdown";
|
|
@@ -394,7 +591,7 @@ Se precisar renderizar strings Markdown brutas ou tiver mais controlo sobre o pr
|
|
|
394
591
|
</Tab>
|
|
395
592
|
<Tab label="Angular" value="angular">
|
|
396
593
|
#### Serviço `IntlayerMarkdownService`
|
|
397
|
-
|
|
594
|
+
Renderiza uma string Markdown usando o serviço.
|
|
398
595
|
|
|
399
596
|
```typescript
|
|
400
597
|
import { IntlayerMarkdownService } from "angular-intlayer/markdown";
|
|
@@ -415,7 +612,7 @@ Se precisar renderizar strings Markdown brutas ou tiver mais controlo sobre o pr
|
|
|
415
612
|
|
|
416
613
|
## Configuração Global com `MarkdownProvider`
|
|
417
614
|
|
|
418
|
-
|
|
615
|
+
O `MarkdownProvider` (ou o seu equivalente do framework) configura o pipeline de renderização Markdown para toda a sua aplicação. Aplica-se tanto para a renderização automática do `useIntlayer` quanto para os utilitários auxiliares. Opções definidas aqui são os padrões — o `.use()` substitui-os em nível de nó.
|
|
419
616
|
|
|
420
617
|
<Tabs group="framework">
|
|
421
618
|
<Tab label="React / Next.js" value="react">
|
|
@@ -426,8 +623,9 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
426
623
|
export const AppProvider = ({ children }) => (
|
|
427
624
|
<MarkdownProvider
|
|
428
625
|
components={{
|
|
429
|
-
h1: (
|
|
430
|
-
a: ({ href,
|
|
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} />,
|
|
431
629
|
}}
|
|
432
630
|
>
|
|
433
631
|
{children}
|
|
@@ -435,7 +633,9 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
435
633
|
);
|
|
436
634
|
```
|
|
437
635
|
|
|
438
|
-
|
|
636
|
+
> O MDX é suportado — qualquer nome de componente usado dentro do seu Markdown (ex: `<MyCustomJSXComponent />`) é resolvido com base no mapa de `components`.
|
|
637
|
+
|
|
638
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
439
639
|
|
|
440
640
|
```tsx fileName="AppProvider.tsx"
|
|
441
641
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -443,8 +643,8 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
443
643
|
export const AppProvider = ({ children }) => (
|
|
444
644
|
<MarkdownProvider
|
|
445
645
|
renderMarkdown={async (md) => {
|
|
446
|
-
const {
|
|
447
|
-
return
|
|
646
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
647
|
+
return renderMarkdown(md);
|
|
448
648
|
}}
|
|
449
649
|
>
|
|
450
650
|
{children}
|
|
@@ -452,7 +652,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
452
652
|
);
|
|
453
653
|
```
|
|
454
654
|
|
|
455
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
655
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
456
656
|
|
|
457
657
|
</Tab>
|
|
458
658
|
<Tab label="Vue" value="vue">
|
|
@@ -479,7 +679,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
479
679
|
app.mount("#app");
|
|
480
680
|
```
|
|
481
681
|
|
|
482
|
-
Você também pode usar
|
|
682
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
483
683
|
|
|
484
684
|
```typescript fileName="main.ts"
|
|
485
685
|
import { createApp } from "vue";
|
|
@@ -492,15 +692,15 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
492
692
|
app.use(intlayer);
|
|
493
693
|
app.use(intlayerMarkdown, {
|
|
494
694
|
renderMarkdown: async (md) => {
|
|
495
|
-
const {
|
|
496
|
-
return
|
|
695
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
696
|
+
return renderMarkdown(md);
|
|
497
697
|
},
|
|
498
698
|
});
|
|
499
699
|
|
|
500
700
|
app.mount("#app");
|
|
501
701
|
```
|
|
502
702
|
|
|
503
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
703
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
504
704
|
|
|
505
705
|
</Tab>
|
|
506
706
|
<Tab label="Svelte" value="svelte">
|
|
@@ -520,7 +720,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
520
720
|
</MarkdownProvider>
|
|
521
721
|
```
|
|
522
722
|
|
|
523
|
-
Você também pode usar
|
|
723
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
524
724
|
|
|
525
725
|
```svelte fileName="App.svelte"
|
|
526
726
|
<script lang="ts">
|
|
@@ -529,15 +729,15 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
529
729
|
|
|
530
730
|
<MarkdownProvider
|
|
531
731
|
renderMarkdown={async (md) => {
|
|
532
|
-
const {
|
|
533
|
-
return
|
|
732
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
733
|
+
return renderMarkdown(md);
|
|
534
734
|
}}
|
|
535
735
|
>
|
|
536
736
|
<slot />
|
|
537
737
|
</MarkdownProvider>
|
|
538
738
|
```
|
|
539
739
|
|
|
540
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
740
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
541
741
|
|
|
542
742
|
</Tab>
|
|
543
743
|
<Tab label="Preact" value="preact">
|
|
@@ -556,7 +756,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
556
756
|
);
|
|
557
757
|
```
|
|
558
758
|
|
|
559
|
-
Você também pode usar
|
|
759
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
560
760
|
|
|
561
761
|
```tsx fileName="AppProvider.tsx"
|
|
562
762
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -564,8 +764,8 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
564
764
|
export const AppProvider = ({ children }) => (
|
|
565
765
|
<MarkdownProvider
|
|
566
766
|
renderMarkdown={async (md) => {
|
|
567
|
-
const {
|
|
568
|
-
return
|
|
767
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
768
|
+
return renderMarkdown(md);
|
|
569
769
|
}}
|
|
570
770
|
>
|
|
571
771
|
{children}
|
|
@@ -573,7 +773,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
573
773
|
);
|
|
574
774
|
```
|
|
575
775
|
|
|
576
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
776
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
577
777
|
|
|
578
778
|
</Tab>
|
|
579
779
|
<Tab label="Solid" value="solid">
|
|
@@ -592,7 +792,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
592
792
|
);
|
|
593
793
|
```
|
|
594
794
|
|
|
595
|
-
Você também pode usar
|
|
795
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
596
796
|
|
|
597
797
|
```tsx fileName="AppProvider.tsx"
|
|
598
798
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -600,8 +800,8 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
600
800
|
export const AppProvider = (props) => (
|
|
601
801
|
<MarkdownProvider
|
|
602
802
|
renderMarkdown={async (md) => {
|
|
603
|
-
const {
|
|
604
|
-
return
|
|
803
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
804
|
+
return renderMarkdown(md);
|
|
605
805
|
}}
|
|
606
806
|
>
|
|
607
807
|
{props.children}
|
|
@@ -609,59 +809,29 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
609
809
|
);
|
|
610
810
|
```
|
|
611
811
|
|
|
612
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
812
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
613
813
|
|
|
614
814
|
</Tab>
|
|
615
815
|
<Tab label="Angular" value="angular">
|
|
616
816
|
|
|
617
|
-
```typescript fileName="app.
|
|
618
|
-
import {
|
|
619
|
-
|
|
620
|
-
export const appConfig: ApplicationConfig = {
|
|
621
|
-
providers: [
|
|
622
|
-
createIntlayerMarkdownProvider({
|
|
623
|
-
components: {
|
|
624
|
-
h1: { class: "text-2xl font-bold" },
|
|
625
|
-
},
|
|
626
|
-
}),
|
|
627
|
-
],
|
|
628
|
-
};
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
Você também pode usar o seu próprio renderizador de Markdown:
|
|
632
|
-
|
|
633
|
-
```typescript fileName="app.config.ts"
|
|
634
|
-
import { createIntlayerMarkdownProvider } from "angular-intlayer/markdown";
|
|
817
|
+
```typescript fileName="app.module.ts"
|
|
818
|
+
import { NgModule } from '@angular/core';
|
|
819
|
+
import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
|
|
635
820
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
821
|
+
@NgModule({
|
|
822
|
+
imports: [
|
|
823
|
+
IntlayerMarkdownModule.forRoot({
|
|
639
824
|
renderMarkdown: async (md) => {
|
|
640
|
-
const {
|
|
641
|
-
return
|
|
642
|
-
}
|
|
643
|
-
})
|
|
644
|
-
]
|
|
645
|
-
}
|
|
825
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
826
|
+
return renderMarkdown(md);
|
|
827
|
+
}
|
|
828
|
+
})
|
|
829
|
+
]
|
|
830
|
+
})
|
|
831
|
+
export class AppModule {}
|
|
646
832
|
```
|
|
647
833
|
|
|
648
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
834
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
649
835
|
|
|
650
836
|
</Tab>
|
|
651
837
|
</Tabs>
|
|
652
|
-
|
|
653
|
-
---
|
|
654
|
-
|
|
655
|
-
## Referência de Opções
|
|
656
|
-
|
|
657
|
-
Essas opções podem ser passadas para `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer` e `renderMarkdown`.
|
|
658
|
-
|
|
659
|
-
| Opção | Tipo | Padrão | Descrição |
|
|
660
|
-
| :-------------------- | :---------- | :------ | :--------------------------------------------------------------------------------------------------- |
|
|
661
|
-
| `forceBlock` | `boolean` | `false` | Força a saída a ser envolvida em um elemento de nível de bloco (ex: `<div>`). |
|
|
662
|
-
| `forceInline` | `boolean` | `false` | Força a saída a ser envolvida em um elemento inline (ex: `<span>`). |
|
|
663
|
-
| `tagfilter` | `boolean` | `true` | Ativa o Filtro de Tags do GitHub para melhorar a segurança ao remover tags HTML perigosas. |
|
|
664
|
-
| `preserveFrontmatter` | `boolean` | `false` | Se `true`, o frontmatter no início da string Markdown não será removido. |
|
|
665
|
-
| `components` | `Overrides` | `{}` | Um mapa de tags HTML para componentes personalizados (ex: `{ h1: MyHeading }`). |
|
|
666
|
-
| `wrapper` | `Component` | `null` | Um componente personalizado para envolver o Markdown renderizado. |
|
|
667
|
-
| `renderMarkdown` | `Function` | `null` | Uma função de renderização personalizada para substituir completamente o compilador Markdown padrão. |
|