
# Erste Schritte

## Installation

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

TailwindPHP benötigt PHP 8.2 oder neuer mit den Erweiterungen `ctype` und `mbstring` sowie Composer. Beide Erweiterungen sind in den meisten PHP-Builds und offiziellen Docker-Images enthalten; `composer.json` führt sie noch nicht auf ([#11](https://github.com/inline0/tailwindphp/issues/11)). Ein Build ohne diese Erweiterungen installiert daher das Paket, das dann zur Laufzeit fehlschlägt. Es gibt keine Abhängigkeit von Node.js, keinen Build-Schritt und kein npm in deinem Docker-Image oder deiner CI. Führe einfach `composer require` aus und rufe API auf.

## Erstelle dein erstes 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()` durchsucht das Markup, extrahiert darin gefundene Klassennamen und gibt nur das CSS aus, das diese Klassen benötigen – nicht mehr. Ohne zweites Argument verwendet es ein Standard-`@import "tailwindcss"`, das das Theme, [Preflight](https://tailwindphp.inline0.dev/de/docs/usage/imports) und die Utilities-Ebene einbindet.

## Über eine CSS-Zeichenfolge anpassen

Übergib als zweites Argument eine Eingabe-CSS-Zeichenfolge, um `@theme`-Variablen, benutzerdefinierte Regeln oder Direktiven hinzuzufügen. Neue Theme-Werte werden automatisch zu Utilities:

```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)
```

Unter [Theme](https://tailwindphp.inline0.dev/de/docs/usage/theme) findest du alle Theme-Namensräume.

## Array-Eingabe

Für alles, was über eine einzelne Zeile hinausgeht, übergib ein Array mit den Schlüsseln `content` und `css`. Hier definierst du Komponenten mit `@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;
        }
    ',
]);
```

Die Array-Form akzeptiert auch `minify`, `importPaths`, `cache` und `cacheTtl`. Unter [Verwendung](https://tailwindphp.inline0.dev/de/docs/usage) findest du Eingabeformate, unter [Direktiven](https://tailwindphp.inline0.dev/de/docs/usage/directives) `@apply`, `@theme`, `@utility` und mehr.

## In eine Datei schreiben

`generate()` gibt eine Zeichenfolge zurück; ein Stylesheet zu schreiben ist daher ein Einzeiler:

```php
use TailwindPHP\tw;

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

Für dateibasierte Builds, die ein Vorlagenverzeichnis durchsuchen, und für den Überwachungsmodus verwende stattdessen [CLI](https://tailwindphp.inline0.dev/de/docs/cli). Es bietet dieselben Build-Optionen wie `@tailwindcss/cli`, aber die Inhaltssuche unterscheidet sich derzeit von Tailwind. Auf der Seite CLI steht, was durchsucht wird.

## Für die Produktion minimieren

Übergib `minify => true`, um die Ausgabe während der Generierung zu komprimieren, oder rufe `tw::minify()` für eine vorhandene Zeichenfolge auf:

```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);
```

Der Minifizierer entfernt Kommentare, fasst Leerzeichen zusammen, verkürzt Hex-Farben (`#ffffff` zu `#fff`) und entfernt Einheiten von Nullwerten (`0px` zu `0`). Unter [Caching und Minifizierung](https://tailwindphp.inline0.dev/de/docs/advanced/caching) findest du die Cache-Optionen.

## Nächste Schritte

- [Verwendung](https://tailwindphp.inline0.dev/de/docs/usage) – der generate-Ablauf, die Inhaltssuche und die Eingabeformate.
- [Klassen-Utilities](https://tailwindphp.inline0.dev/de/docs/class-utilities) – `cn()`, `merge()`, `join()` und `variants()`.
- [Plugins](https://tailwindphp.inline0.dev/de/docs/plugins) – Typografie, Formulare und benutzerdefinierte Plugins.
- [API](https://tailwindphp.inline0.dev/de/docs/api) – die vollständige `tw`-Oberfläche und wiederverwendbare Compiler-Instanzen.
- [CLI](https://tailwindphp.inline0.dev/de/docs/cli) – dateibasierte Builds und Überwachungsmodus ohne Node.js.
