@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.
- package/docs/ar/dictionary/markdown.md +409 -88
- package/docs/de/dictionary/markdown.md +279 -107
- package/docs/en/dictionary/markdown.md +237 -37
- package/docs/en-GB/dictionary/markdown.md +361 -76
- package/docs/es/dictionary/markdown.md +295 -123
- package/docs/fr/dictionary/markdown.md +301 -129
- package/docs/hi/dictionary/markdown.md +376 -90
- package/docs/id/dictionary/markdown.md +377 -91
- package/docs/it/dictionary/markdown.md +296 -129
- package/docs/ko/dictionary/markdown.md +306 -134
- package/docs/pl/dictionary/markdown.md +287 -116
- package/docs/pt/dictionary/markdown.md +287 -116
- package/docs/ru/dictionary/markdown.md +78 -513
- package/docs/tr/dictionary/markdown.md +300 -130
- package/docs/uk/dictionary/markdown.md +386 -100
- package/docs/vi/dictionary/markdown.md +383 -97
- package/docs/zh/dictionary/markdown.md +293 -125
- 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";
|
|
@@ -95,34 +95,34 @@ Você pode declarar conteúdo Markdown usando a função `md` ou simplesmente co
|
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
|
-
<Tab label="
|
|
99
|
-
|
|
98
|
+
<Tab label="Arquivos Externos" value="external-files">
|
|
99
|
+
Importe arquivos `.md` diretamente usando a função `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, // Ativar a detecção automática de conteúdo Markdown - Pode ser definido globalmente em intlayer.config.ts
|
|
105
106
|
content: {
|
|
106
|
-
|
|
107
|
+
content: t({
|
|
108
|
+
en: md(file("./myMarkdown.en.md")),
|
|
109
|
+
pt: md(file("./myMarkdown.pt.md")),
|
|
110
|
+
}),
|
|
107
111
|
},
|
|
108
112
|
};
|
|
109
113
|
```
|
|
110
114
|
|
|
111
115
|
</Tab>
|
|
112
|
-
<Tab label="Arquivos Externos" value="external-files">
|
|
113
|
-
Importe arquivos `.md` diretamente usando a função `file`.
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
<Tab label="Detecção Automática" value="automatic-detection">
|
|
118
|
+
Se a string contiver indicadores Markdown comuns (como cabeçalhos, listas, links, etc.), o Intlayer a transformará automaticamente.
|
|
117
119
|
|
|
120
|
+
```typescript fileName="markdownDictionary.content.ts"
|
|
118
121
|
export default {
|
|
119
122
|
key: "app",
|
|
123
|
+
contentAutoTransformation: true, // Ativar detecção automática de conteúdo Markdown - Pode ser definido globalmente em intlayer.config.ts
|
|
120
124
|
content: {
|
|
121
|
-
|
|
122
|
-
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
fr: md(file("./myMarkdown.fr.md")),
|
|
124
|
-
pt: md(file("./myMarkdown.pt.md")),
|
|
125
|
-
}),
|
|
125
|
+
myMarkdownContent: "## Meu título \n\nLorem Ipsum",
|
|
126
126
|
},
|
|
127
127
|
};
|
|
128
128
|
```
|
|
@@ -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,9 @@ 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
|
-
|
|
447
|
-
|
|
646
|
+
// Use dynamic import to reduce the bundle size of your application
|
|
647
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
648
|
+
return renderMarkdown(md);
|
|
448
649
|
}}
|
|
449
650
|
>
|
|
450
651
|
{children}
|
|
@@ -452,7 +653,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
452
653
|
);
|
|
453
654
|
```
|
|
454
655
|
|
|
455
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
656
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
456
657
|
|
|
457
658
|
</Tab>
|
|
458
659
|
<Tab label="Vue" value="vue">
|
|
@@ -479,7 +680,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
479
680
|
app.mount("#app");
|
|
480
681
|
```
|
|
481
682
|
|
|
482
|
-
Você também pode usar
|
|
683
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
483
684
|
|
|
484
685
|
```typescript fileName="main.ts"
|
|
485
686
|
import { createApp } from "vue";
|
|
@@ -492,15 +693,15 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
492
693
|
app.use(intlayer);
|
|
493
694
|
app.use(intlayerMarkdown, {
|
|
494
695
|
renderMarkdown: async (md) => {
|
|
495
|
-
const {
|
|
496
|
-
return
|
|
696
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
697
|
+
return renderMarkdown(md);
|
|
497
698
|
},
|
|
498
699
|
});
|
|
499
700
|
|
|
500
701
|
app.mount("#app");
|
|
501
702
|
```
|
|
502
703
|
|
|
503
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
704
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
504
705
|
|
|
505
706
|
</Tab>
|
|
506
707
|
<Tab label="Svelte" value="svelte">
|
|
@@ -520,7 +721,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
520
721
|
</MarkdownProvider>
|
|
521
722
|
```
|
|
522
723
|
|
|
523
|
-
Você também pode usar
|
|
724
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
524
725
|
|
|
525
726
|
```svelte fileName="App.svelte"
|
|
526
727
|
<script lang="ts">
|
|
@@ -529,15 +730,15 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
529
730
|
|
|
530
731
|
<MarkdownProvider
|
|
531
732
|
renderMarkdown={async (md) => {
|
|
532
|
-
const {
|
|
533
|
-
return
|
|
733
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
734
|
+
return renderMarkdown(md);
|
|
534
735
|
}}
|
|
535
736
|
>
|
|
536
737
|
<slot />
|
|
537
738
|
</MarkdownProvider>
|
|
538
739
|
```
|
|
539
740
|
|
|
540
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
741
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
541
742
|
|
|
542
743
|
</Tab>
|
|
543
744
|
<Tab label="Preact" value="preact">
|
|
@@ -556,7 +757,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
556
757
|
);
|
|
557
758
|
```
|
|
558
759
|
|
|
559
|
-
Você também pode usar
|
|
760
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
560
761
|
|
|
561
762
|
```tsx fileName="AppProvider.tsx"
|
|
562
763
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -564,8 +765,8 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
564
765
|
export const AppProvider = ({ children }) => (
|
|
565
766
|
<MarkdownProvider
|
|
566
767
|
renderMarkdown={async (md) => {
|
|
567
|
-
const {
|
|
568
|
-
return
|
|
768
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
769
|
+
return renderMarkdown(md);
|
|
569
770
|
}}
|
|
570
771
|
>
|
|
571
772
|
{children}
|
|
@@ -573,7 +774,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
573
774
|
);
|
|
574
775
|
```
|
|
575
776
|
|
|
576
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
777
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
577
778
|
|
|
578
779
|
</Tab>
|
|
579
780
|
<Tab label="Solid" value="solid">
|
|
@@ -592,7 +793,7 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
592
793
|
);
|
|
593
794
|
```
|
|
594
795
|
|
|
595
|
-
Você também pode usar
|
|
796
|
+
Você também pode usar seu próprio renderizador de markdown:
|
|
596
797
|
|
|
597
798
|
```tsx fileName="AppProvider.tsx"
|
|
598
799
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -600,8 +801,8 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
600
801
|
export const AppProvider = (props) => (
|
|
601
802
|
<MarkdownProvider
|
|
602
803
|
renderMarkdown={async (md) => {
|
|
603
|
-
const {
|
|
604
|
-
return
|
|
804
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
805
|
+
return renderMarkdown(md);
|
|
605
806
|
}}
|
|
606
807
|
>
|
|
607
808
|
{props.children}
|
|
@@ -609,59 +810,29 @@ Você pode configurar a renderização de Markdown globalmente para toda a sua a
|
|
|
609
810
|
);
|
|
610
811
|
```
|
|
611
812
|
|
|
612
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
813
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
613
814
|
|
|
614
815
|
</Tab>
|
|
615
816
|
<Tab label="Angular" value="angular">
|
|
616
817
|
|
|
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:
|
|
818
|
+
```typescript fileName="app.module.ts"
|
|
819
|
+
import { NgModule } from '@angular/core';
|
|
820
|
+
import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
|
|
632
821
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
export const appConfig: ApplicationConfig = {
|
|
637
|
-
providers: [
|
|
638
|
-
createIntlayerMarkdownProvider({
|
|
822
|
+
@NgModule({
|
|
823
|
+
imports: [
|
|
824
|
+
IntlayerMarkdownModule.forRoot({
|
|
639
825
|
renderMarkdown: async (md) => {
|
|
640
|
-
const {
|
|
641
|
-
return
|
|
642
|
-
}
|
|
643
|
-
})
|
|
644
|
-
]
|
|
645
|
-
}
|
|
826
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
827
|
+
return renderMarkdown(md);
|
|
828
|
+
}
|
|
829
|
+
})
|
|
830
|
+
]
|
|
831
|
+
})
|
|
832
|
+
export class AppModule {}
|
|
646
833
|
```
|
|
647
834
|
|
|
648
|
-
> Importar dinamicamente o seu renderizador de Markdown é uma
|
|
835
|
+
> Importar dinamicamente o seu renderizador de Markdown é uma ótima maneira de reduzir o tamanho do pacote da sua aplicação.
|
|
649
836
|
|
|
650
837
|
</Tab>
|
|
651
838
|
</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. |
|