Estilize o Markdown renderizado com Tailwind Typography
Você pode usar o plugin de tipografia do Tailwind para estilizar o Markdown renderizado de fontes como as coleções de conteúdo do Astro.
Este guia irá te ensinar a criar um componente Astro reutilizável para estilizar seu conteúdo Markdown usando as classes utilitárias do Tailwind.
Pré-requisitos
Seção intitulada Pré-requisitosUm projeto Astro que:
- tenha a integração do Tailwind do Astro instalada.
- use as coleções de conteúdo do Astro.
Configurando @tailwindcss/typography
Seção intitulada Configurando @tailwindcss/typographyPara começar, instale o @tailwindcss/typography usando o seu gerenciador de pacotes preferido.
npm install -D @tailwindcss/typographypnpm add -D @tailwindcss/typographyyarn add --dev @tailwindcss/typographyEm seguida, adicione o pacote como um plugin no seu arquivo de configuração do Tailwind.
/** @type {import('tailwindcss').Config} */export default {  theme: {    // ...  },  plugins: [   require('@tailwindcss/typography'),    // ...  ],}- 
Crie um componente <Prose />para fornecer uma<div>com um<slot />que envolva seu Markdown renderizado. Adicione a classe de estiloprosejuntamente com quaisquer modificadores de elementos do Tailwind desejados no elemento pai.src/components/Prose.astro ------<divclass="prose dark:prose-invertprose-h1:font-bold prose-h1:text-xlprose-a:text-blue-600 prose-p:text-justify prose-img:rounded-xlprose-headings:underline"><slot /></div>O plugin @tailwindcss/typographyusa modificadores de elementos para estilizar componentes filhos de um contêiner com a classeprose.Esses modificadores seguem a seguinte sintaxe geral: prose-[element]:classe-a-ser-aplicadaPor exemplo, prose-h1:font-bolddá a todas as tags<h1>a classe Tailwindfont-bold.
- 
Consulte sua entrada de coleção na página em que deseja renderizar seu Markdown. Passe o componente <Content />deawait entry.render()para<Prose />como um componente filho para envolver seu conteúdo Markdown em estilos do Tailwind.src/pages/index.astro ---import Prose from '../components/Prose.astro';import Layout from '../layouts/Layout.astro';import { getEntry } from 'astro:content';const entry = await getEntry('collection', 'entry');const { Content } = await entry.render();---<Layout><Prose><Content /></Prose></Layout>