
# Guida introduttiva

## Installazione

```bash
composer require tailwindphp/tailwindphp
```

TailwindPHP richiede PHP 8.2 o versioni successive, con le estensioni `ctype` e `mbstring`, e Composer. La maggior parte delle build PHP e delle immagini ufficiali Docker include entrambe le estensioni; `composer.json` non le elenca ancora ([#11](https://github.com/inline0/tailwindphp/issues/11)), quindi una build che ne è priva installa il pacchetto ma poi fallisce in fase di esecuzione. Non servono dipendenze Node.js, passaggi di compilazione o npm nell'immagine Docker o nella CI. Vi basta `composer require` e chiamare API.

## Generate il vostro primo CSS

```php
<?php

require __DIR__ . '/vendor/autoload.php';

use TailwindPHP\tw;

$css = tw::generate('<div class="flex items-center p-4 bg-blue-500">Hello</div>');
```

`generate()` analizza il markup, estrae i nomi delle classi che trova e genera solo CSS necessario per quelle classi, senza altro. Se non passate un secondo argomento, usa una configurazione `@import "tailwindcss"` predefinita, che include il tema, [Preflight](https://tailwindphp.inline0.dev/it/docs/usage/imports) e il livello delle utility.

## Personalizzare con una stringa CSS

Passate una stringa CSS di input come secondo argomento per aggiungere variabili `@theme`, regole personalizzate o direttive. I nuovi valori del tema diventano automaticamente utility:

```php
use TailwindPHP\tw;

$css = tw::generate(
    '<div class="bg-brand p-4">Hello</div>',
    '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }'
);
// .bg-brand now resolves to var(--color-brand)
```

Consultate [Tema](https://tailwindphp.inline0.dev/it/docs/usage/theme) per l'elenco completo degli spazi dei nomi del tema.

## Input array

Per qualcosa di più lungo di una singola riga, passate un array con le chiavi `content` e `css`. Qui potete definire componenti con `@apply`:

```php
use TailwindPHP\tw;

$css = tw::generate([
    'content' => '<div class="flex p-4 btn">Hello</div>',
    'css' => '
        @import "tailwindcss";

        @theme {
            --color-brand: #3b82f6;
            --font-heading: "Inter", sans-serif;
        }

        .btn {
            @apply px-4 py-2 rounded-lg bg-brand text-white;
        }
    ',
]);
```

Il formato array accetta anche `minify`, `importPaths`, `cache` e `cacheTtl`. Consultate [Utilizzo](https://tailwindphp.inline0.dev/it/docs/usage) per i formati di input e [Direttive](https://tailwindphp.inline0.dev/it/docs/usage/directives) per `@apply`, `@theme`, `@utility` e le altre.

## Scrivere su un file

`generate()` restituisce una stringa, quindi scrivere un foglio di stile richiede una sola riga:

```php
use TailwindPHP\tw;

file_put_contents('dist/styles.css', tw::generate([
    'content' => file_get_contents('templates/page.html'),
    'css' => '@import "tailwindcss";',
]));
```

Per compilazioni basate su file che analizzano una directory di template e per la modalità di osservazione, usate invece [CLI](https://tailwindphp.inline0.dev/it/docs/cli). Accetta le opzioni di compilazione `@tailwindcss/cli`, ma oggi analizza i contenuti in modo diverso da Tailwind; la pagina CLI elenca cosa viene analizzato.

## Minimizzare per la produzione

Passate `minify => true` per comprimere l'output durante la generazione, oppure chiamate `tw::minify()` su una stringa esistente:

```php
use TailwindPHP\tw;

// Minify during generation
$css = tw::generate([
    'content' => '<div class="flex p-4">Hello</div>',
    'minify' => true,
]);

// Or minify separately
$css = tw::generate('<div class="flex p-4">Hello</div>');
$minified = tw::minify($css);
```

Il minificatore rimuove i commenti, riduce gli spazi, abbrevia i colori esadecimali (`#ffffff` in `#fff`) e rimuove le unità dai valori zero (`0px` in `0`). Consultate [Cache e minimizzazione](https://tailwindphp.inline0.dev/it/docs/advanced/caching) per le opzioni di memorizzazione nella cache.

## Passaggi successivi

- [Utilizzo](https://tailwindphp.inline0.dev/it/docs/usage): flusso di generazione, analisi dei contenuti e formati di input.
- [Utility per le classi](https://tailwindphp.inline0.dev/it/docs/class-utilities): `cn()`, `merge()`, `join()` e `variants()`.
- [Plugin](https://tailwindphp.inline0.dev/it/docs/plugins): tipografia, moduli e plugin personalizzati.
- [API](https://tailwindphp.inline0.dev/it/docs/api): l'intera superficie `tw` e istanze del compilatore riutilizzabili.
- [CLI](https://tailwindphp.inline0.dev/it/docs/cli): compilazioni basate su file e con osservazione, senza Node.js.
