Adicionando campo de markdown no Prismic
Para adicionar o campo de código no prismic basta acessar a aba de Custom Types e editar o módulo de posts. Adicionar no content a baixo do body um RichText com apenas o Preformatted selecionado, como a imagem:
Bibliotecas necessárias
Agora, antes de renderizar no blog o markdown precisaremos de duas bibliotecas, react-syntax-highlighter e react-markdown, porém o react-markdown deverá ser instalado com uma versão mais antiga:
yarn add react-syntax-highlighter react-markdown@6.0.3
yarn add @types/react-syntax-highlighter -D
Renderizando o código em markdown
Primeiro precisamos pegar o texto em markdown do prismic, basta adicionar ele na requisição.
...
markdown: RichText.asText(content.markdown) ?? null,
// Adicione como tipo string na interface
...
Agora as importações das bibliotecas, existem muitos temas de cores no react-syntax-highlighter, no meu eu escolhi o tema dracula.
import ReactMarkdown from 'react-markdown';
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'
import { dracula } from 'react-syntax-highlighter/dist/cjs/styles/prism'
Por fim, dentro do mapeamento do content basta adicionar o código a baixo
{post.data.content.map(content => {
return (
...
<ReactMarkdown
children={content.markdown}
components={{
code({ inline, className, children }) {
const match = /language-(\w+)/.exec(className || '')
return !inline && match ? (
<SyntaxHighlighter
children={String(children).replace(/\n$/, '')}
style={dracula}
language={match[1]}
PreTag="div"
/>
) : (
<code className={className}>
{children}
</code>
)
}
}}
/>
...
)
})}
Teste
Agora basta adicionar algum markdown no prismic e testar.