Tipografia: prose

GCGiuseppe Crescitelli

Introduzione al plugin Typography

Il plugin Typography di TailwindCSS fornisce la classe prose, progettata per stilizzare automaticamente contenuti HTML generati da CMS, Markdown o editor WYSIWYG. L’obiettivo è offrire una tipografia leggibile, coerente e ben spaziata senza dover applicare classi utilitarie a ogni singolo elemento.

Installazione del plugin

Per utilizzare prose è necessario installare il plugin ufficiale typography.

npm install -D @tailwindcss/typography

Successivamente va registrato nel file tailwind.config.js.

module.exports = {
  plugins: [require("@tailwindcss/typography")],
};

Concetto di base della classe prose

La classe prose applica uno stile tipografico predefinito a tutti gli elementi discendenti come p, h1–h6, ul, ol, blockquote, pre, code, table e img. È pensata per contenitori di testo, non per layout generici.

<article class="prose">
  <h1>Titolo</h1>
  <p>Paragrafo con testo leggibile e spaziatura ottimizzata.</p>
</article>

Dimensioni tipografiche disponibili

Tailwind fornisce varianti di dimensione che modificano font-size, line-height e spaziature verticali.

prose-sm prose-base prose-lg prose-xl prose-2xl

Esempio:

<div class="prose prose-lg">
  <p>Testo più grande e arioso.</p>
</div>

Larghezza massima del contenuto

Di default prose imposta una max-width ottimizzata per la lettura. È possibile rimuoverla con max-w-none.

<div class="prose max-w-none">
  <p>Contenuto a larghezza completa.</p>
</div>

Supporto per la modalità scura

Per ambienti dark è disponibile la variante prose-invert, che inverte colori di testo, link e codice.

<article class="prose dark:prose-invert">
  <p>Testo leggibile in modalità scura.</p>
</article>

Palette cromatiche tipografiche

Sono disponibili varianti di colore che influenzano link, titoli e accenti tipografici.

prose-gray prose-slate prose-neutral prose-zinc prose-stone

Esempio:

<div class="prose prose-neutral">
  <a href="#">Link con colore coerente</a>
</div>

Personalizzazione dei singoli elementi

È possibile modificare lo stile di specifici elementi HTML usando modificatori dedicati.

prose-headings prose-p prose-a prose-strong prose-code prose-pre prose-blockquote prose-ul prose-ol prose-li prose-table prose-img

Esempio:

<article class="prose prose-headings:text-blue-600 prose-a:underline">
  <h2>Titolo personalizzato</h2>
  <a href="#">Link sottolineato</a>
</article>

Gestione del codice inline e dei blocchi pre

Il codice inline viene stilizzato automaticamente con font monospaziato. I blocchi pre includono padding, background e overflow orizzontale.

<pre><code>console.log('Hello World')</code></pre>

È possibile personalizzarli:

<div class="prose prose-pre:bg-gray-900 prose-pre:text-gray-100">
  <pre><code>npm run build</code></pre>
</div>

Tabelle e contenuti strutturati

Le tabelle ricevono uno stile coerente con bordi, spaziatura e allineamenti leggibili, ideali per documentazione tecnica.

<table>
  <thead>
    <tr>
      <th>Classe</th>
      <th>Descrizione</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>prose</td>
      <td>Stile base</td>
    </tr>
  </tbody>
</table>

Immagini e media

Le immagini vengono rese responsive con margin verticali automatici e border-radius opzionale tramite personalizzazione.

<img src="image.jpg" alt="Esempio immagine" />

Esclusione selettiva con not-prose

Per evitare che alcuni elementi ereditino gli stili tipografici si utilizza la classe not-prose.

<div class="prose">
  <p>Testo stilizzato</p>
  <div class="not-prose">
    <button class="px-4 py-2 bg-blue-600 text-white">Pulsante</button>
  </div>
</div>

Personalizzazione avanzata via configurazione

Il plugin può essere esteso tramite theme.typography nel file di configurazione.

module.exports = {
  theme: {
    extend: {
      typography: {
        DEFAULT: {
          css: {
            color: "#1f2937",
            a: {
              color: "#2563eb",
              "&:hover": {
                color: "#1d4ed8",
              },
            },
          },
        },
      },
    },
  },
};

Quando usare prose

La classe prose è ideale per articoli, blog post, documentazione tecnica e contenuti editoriali. Non è pensata per componenti UI complessi o layout interattivi, dove è preferibile usare classi utilitarie standard.

Riepilogo concettuale

prose fornisce una tipografia pronta all’uso, semanticamente corretta, facilmente personalizzabile e perfettamente integrata nel paradigma utility-first di TailwindCSS.