
# API

Ολόκληρη η στατική επιφάνεια βρίσκεται σε μία κλάση: `TailwindPHP\tw` (ψευδώνυμο της εσωτερικής κλάσης `Tailwind`). Κάθε μέθοδος καλείται στατικά, ενώ οι μέθοδοι επιθεώρησης (`properties`, `computedProperties`, `value`, `computedValue`) δέχονται όλες τις [μορφές εισόδου](#input-formats) που περιγράφονται στο τέλος αυτής της σελίδας.

Για επαναλαμβανόμενες εργασίες με την ίδια διαμόρφωση CSS, καλέστε μία φορά το [`tw::compile()`](#twcompile) και επαναχρησιμοποιήστε την επιστρεφόμενη [`TailwindCompiler`](#tailwindcompiler-instance-methods).

```php
use TailwindPHP\tw;

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

## tw::generate()

```php
public static function generate(string|array $input, string $css = '@import "tailwindcss";'): string
```

Αναλύει το περιεχόμενο, εξάγει υποψήφιες κλάσεις και επιστρέφει το παραγόμενο CSS. Το προεπιλεγμένο `$css` είναι `@import "tailwindcss";` και περιλαμβάνει θέμα, preflight και βοηθητικές κλάσεις. **Επιστρέφει** `string`.

```php
use TailwindPHP\tw;

// String input
$css = tw::generate('<div class="flex p-4">');

// String with custom CSS
$css = tw::generate('<div class="flex bg-brand">', '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

// Array input with options
$css = tw::generate([
    'content' => '<div class="flex p-4">',
    'css' => '@import "tailwindcss";',
    'minify' => true,
]);
```

Η μορφή πίνακα δέχεται τα εξής κλειδιά:

| Κλειδί | Τύπος | Σκοπός |
|---|---|---|
| `content` | `string` | Περιεχόμενο προς σάρωση για υποψήφιες κλάσεις (απαιτείται) |
| `css` | `string` | Είσοδος CSS με οδηγίες Tailwind (προεπιλογή `@import "tailwindcss";`) |
| `minify` | `bool` | Ελαχιστοποίηση της εξόδου (προεπιλογή `false`) |
| `importPaths` | `string \| array \| callable \| null` | Φόρτωση του CSS από το σύστημα αρχείων με πλήρη επίλυση `@import` — δείτε την [Εισαγωγή CSS](https://tailwindphp.inline0.dev/el/docs/usage/imports) |
| `cache` | `bool \| string` | Ενεργοποίηση προσωρινής αποθήκευσης αρχείων — δείτε την [Προσωρινή αποθήκευση](#caching) |
| `cacheTtl` | `int` | Διάρκεια ζωής της προσωρινής αποθήκευσης σε δευτερόλεπτα |

## tw::compile()

```php
public static function compile(string $css = '@import "tailwindcss";', array $options = []): TailwindCompiler
```

Δημιουργεί ένα επαναχρησιμοποιήσιμο `TailwindCompiler` συνδεδεμένο με το δοσμένο CSS. Η ανάλυση και η κατασκευή του συστήματος σχεδίασης γίνονται μία φορά, οπότε αυτή είναι η αποδοτική επιλογή όταν δημιουργείτε CSS για πολλές διαφορετικές συμβολοσειρές περιεχομένου. Χρησιμοποιήστε το `generate()` για να συσσωρεύσετε ένα φύλλο στυλ σε διαδοχικές κλήσεις ή το [`generateExact()`](#accumulating-vs-exact-generation) για ανεξάρτητη έξοδο ανά σελίδα. **Επιστρέφει** `TailwindCompiler`.

```php
use TailwindPHP\tw;

// Default Tailwind
$compiler = tw::compile();

// Custom CSS
$compiler = tw::compile('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

$css = $compiler->generate('<div class="flex p-4 bg-brand">');
```

Ο πίνακας `$options` δέχεται:

| Επιλογή | Τύπος | Σκοπός |
|---|---|---|
| `stateCacheFile` | `string` | Διαδρομή αρχείου PHP που διατηρεί την κατάσταση κατασκευής του μεταγλωττιστή μεταξύ αιτημάτων και διεργασιών — δείτε την [Προσωρινή αποθήκευση κατάστασης μεταγλωττιστή](https://tailwindphp.inline0.dev/el/docs/advanced/caching#compiler-state-cache) |
| `polyfills` | `int` | Ποιες εναλλακτικές τιμές θα εκπέμπονται, ως bitmask των `TailwindPHP\POLYFILL_AT_PROPERTY` (οι προεπιλογές του `@layer properties` για μεταβλητές `@property`) και `TailwindPHP\POLYFILL_COLOR_MIX` (στατικές εναλλακτικές χρωμάτων πριν από το `color-mix()`). Προεπιλογή `POLYFILL_ALL`· το `POLYFILL_NONE` απενεργοποιεί και τα δύο |
| `importSearchPaths` | `array<string>` | Κατάλογοι προς αναζήτηση κατά την επίλυση του `@import` από το σύστημα αρχείων |

```php
use TailwindPHP\tw;
use const TailwindPHP\POLYFILL_NONE;

// Cache construction state on disk, reused by later requests
$compiler = tw::compile('@import "tailwindcss";', [
    'stateCacheFile' => __DIR__ . '/cache/tailwind-state.php',
]);

// Plain output without fallbacks, e.g. for CSS modules
$compiler = tw::compile('@import "tailwindcss/utilities.css";', [
    'polyfills' => POLYFILL_NONE,
]);
$compiler->generate('<div class="bg-red-500/50">');
// .bg-red-500\/50 { background-color: color-mix(in oklab, var(--color-red-500) 50%, transparent); }
// (with the default, a `#fb2c3680` fallback comes first and color-mix() moves into @supports)
```

Δείτε τις [μεθόδους στιγμιότυπου TailwindCompiler](#tailwindcompiler-instance-methods) για την πλήρη επιφάνεια στιγμιότυπου.

## tw::properties()

```php
public static function properties(string|array $input, string $css = '@import "tailwindcss";'): array
```

Επιστρέφει τις **ακατέργαστες** ιδιότητες CSS μιας κλάσης, αφήνοντας τις μεταβλητές CSS ανεπίλυτες. **Επιστρέφει** `array<string, string>` (όνομα ιδιότητας → τιμή).

```php
use TailwindPHP\tw;

tw::properties('p-4');
// ['padding' => 'calc(var(--spacing) * 4)']

tw::properties(['flex', 'items-center', 'p-4']);
// ['display' => 'flex', 'align-items' => 'center', 'padding' => 'calc(var(--spacing) * 4)']
```

## tw::computedProperties()

```php
public static function computedProperties(string|array $input, string $css = '@import "tailwindcss";'): array
```

Όπως το [`properties()`](#twproperties), αλλά με κάθε μεταβλητή CSS επιλυμένη σε συγκεκριμένη τιμή. **Επιστρέφει** `array<string, string>`.

```php
use TailwindPHP\tw;

tw::computedProperties('p-4');
// ['padding' => '1rem']

tw::computedProperties('text-blue-500');
// ['color' => 'oklch(62.3% .214 259.815)']

tw::computedProperties(['flex', 'items-center', 'gap-4']);
// ['display' => 'flex', 'align-items' => 'center', 'gap' => '1rem']
```

## tw::value()

```php
public static function value(string|array $input, string $css = '@import "tailwindcss";'): ?string
```

Επιστρέφει την **ακατέργαστη** τιμή μιας μεμονωμένης βοηθητικής κλάσης. **Επιστρέφει** `?string` — `null` αν δεν βρεθεί η βοηθητική κλάση.

```php
use TailwindPHP\tw;

tw::value('p-4');           // 'calc(var(--spacing) * 4)'
tw::value('text-blue-500'); // 'var(--color-blue-500)'
```

## tw::computedValue()

```php
public static function computedValue(string|array $input, string $css = '@import "tailwindcss";'): ?string
```

Επιστρέφει την **επιλυμένη** τιμή μιας μεμονωμένης βοηθητικής κλάσης. **Επιστρέφει** `?string` — `null` αν δεν βρεθεί η βοηθητική κλάση.

```php
use TailwindPHP\tw;

tw::computedValue('p-4');           // '1rem'
tw::computedValue('text-blue-500'); // 'oklch(62.3% .214 259.815)'
tw::computedValue('gap-4');         // '1rem'
```

## tw::extractCandidates()

```php
public static function extractCandidates(string $html): array
```

Εξάγει ονόματα κλάσεων Tailwind από περιεχόμενο (διαβάζει τα γνωρίσματα `class` και `className`). **Επιστρέφει** `array<string>`.

```php
use TailwindPHP\tw;

tw::extractCandidates('<div class="flex p-4" className="bg-blue-500">');
// ['flex', 'p-4', 'bg-blue-500']
```

## tw::extractCandidatesFromStrings()

```php
public static function extractCandidatesFromStrings(string $source): array
```

Εξάγει υποψήφιες ονομασίες κλάσεων από κάθε συμβολοσειρά σε μονά ή διπλά εισαγωγικά στον πηγαίο κώδικα, για πρότυπα που δημιουργούν λίστες κλάσεων σε μεταβλητές αντί για γνωρίσματα `class`. Κάθε συμβολοσειρά χωρίζεται στα κενά και διατηρείται κάθε στοιχείο που μοιάζει με όνομα κλάσης. **Επιστρέφει** `array<string>`.

```php
use TailwindPHP\tw;

$classes = tw::extractCandidatesFromStrings('<?php $wrap = \'p-4 sm:flex\'; $title = "hello world"; ?>');
// ['p-4', 'sm:flex', 'hello', 'world']

$css = tw::compile()->css($classes);
```

Οι απλές λέξεις περνούν επίσης τον έλεγχο (`hello`, `world` παραπάνω)· δεν παράγουν τίποτα κατά τη μεταγλώττιση, εκτός αν είναι ονόματα βοηθητικών κλάσεων. Περάστε το αποτέλεσμα στο [`css()`](#tailwindcompiler-instance-methods), καθώς το `generate()` διαβάζει μόνο γνωρίσματα `class`.

## tw::cssMap()

```php
public static function cssMap(string $css = '@import "tailwindcss";'): array
```

Δημιουργεί έναν αντίστροφο χάρτη από δηλώσεις CSS σε βοηθητικές κλάσεις, χρήσιμο για τη μετατροπή υφιστάμενων CSS σε κλάσεις Tailwind. Τα κλειδιά είναι συμβολοσειρές `"property: value"` με επιλυμένες μεταβλητές (οι βοηθητικές κλάσεις πολλών ιδιοτήτων έχουν επίσης κλειδί `"prop: value; prop: value"`), ενώ οι τιμές είναι ονόματα κλάσεων. **Επιστρέφει** `array<string, string>`.

```php
use TailwindPHP\tw;

$map = tw::cssMap();
$map['display: flex'];       // 'flex'
$map['padding: 1rem'];       // 'p-4'
$map['text-align: center'];  // 'text-center'
$map['color: #fff'];         // 'text-white'
```

Ο χάρτης καλύπτει μια σταθερή λίστα κοινών βοηθητικών κλάσεων (display, position, flexbox, τυπογραφία, βήματα αποστάσεων και μεγέθους, περιγράμματα, μαύρο/λευκό/διαφανή χρώματα και παρόμοια), όχι κάθε βοηθητική κλάση ή χρώμα θέματος. Το όρισμα `$css` αλλάζει τις επιλυμένες τιμές αυτών των βοηθητικών κλάσεων, αλλά τα προσαρμοσμένα διακριτικά θέματος (όπως το `--color-brand`) δεν προσθέτουν εγγραφές.

## tw::minify()

```php
public static function minify(string $css): string
```

Ελαχιστοποιεί μια αυθαίρετη συμβολοσειρά CSS: αφαιρεί σχόλια, συμπτύσσει κενά, συντομεύει δεκαεξαδικά χρώματα (`#ffffff` → `#fff`), αφαιρεί μονάδες από μηδενικές τιμές (`0px` → `0`) και άλλα. **Επιστρέφει** `string`.

Για CSS που το TailwindPHP δημιουργεί μόνο του, προτιμήστε την επιλογή `minify` (`tw::generate(['minify' => true])`) ή την παράμετρο `$minify` στις [μεθόδους μεταγλωττιστή](#tailwindcompiler-instance-methods). Με αυτή τη διαδρομή η ελαχιστοποίηση γίνεται κατά τη σειριοποίηση, είναι ταχύτερη και διατηρεί τους επιλογείς απογόνων `:not()` που συμπτύσσει το πέρασμα βάσει συμβολοσειράς.

```php
use TailwindPHP\tw;

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

Δείτε την ενότητα [Προσωρινή αποθήκευση & ελαχιστοποίηση](https://tailwindphp.inline0.dev/el/docs/advanced/caching) για όλες τις βελτιστοποιήσεις.

## tw::clearCache()

```php
public static function clearCache(string|bool|null $cache = true): int
```

Διαγράφει αρχεία CSS από την προσωρινή αποθήκευση. Περάστε `true` (ή παραλείψτε το) για τον προεπιλεγμένο κατάλογο προσωρινής αποθήκευσης ή μια συμβολοσειρά διαδρομής για προσαρμοσμένο κατάλογο. **Επιστρέφει** `int` — τον αριθμό των αρχείων που διαγράφηκαν.

```php
use TailwindPHP\tw;

tw::clearCache();                  // default directory
tw::clearCache('/path/to/cache');  // custom directory
```

Διατίθεται επίσης μια αυτόνομη συνάρτηση `TailwindPHP\clearCache()`.

## tw::colors()

```php
public static function colors(string $css = '@import "tailwindcss";'): array
```

Επιστρέφει όλες τις τιμές χρωμάτων από το θέμα. **Επιστρέφει** `array<string, string>` (όνομα χρώματος → υπολογισμένη τιμή).

```php
use TailwindPHP\tw;

tw::colors();
// ['red-500' => 'oklch(63.7% .237 25.331)', 'blue-500' => 'oklch(62.3% .214 259.815)', ...]

// With a custom theme
tw::colors('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// [..., 'brand' => '#3b82f6']
```

## tw::breakpoints()

```php
public static function breakpoints(string $css = '@import "tailwindcss";'): array
```

Επιστρέφει όλες τις τιμές σημείων διακοπής από το θέμα. **Επιστρέφει** `array<string, string>` (όνομα σημείου διακοπής → τιμή).

```php
use TailwindPHP\tw;

tw::breakpoints();
// ['sm' => '40rem', 'md' => '48rem', 'lg' => '64rem', 'xl' => '80rem', '2xl' => '96rem']

tw::breakpoints('@import "tailwindcss"; @theme { --breakpoint-xs: 20rem; }');
// ['sm' => '40rem', ..., '2xl' => '96rem', 'xs' => '20rem']
```

## tw::spacing()

```php
public static function spacing(string $css = '@import "tailwindcss";'): array
```

Επιστρέφει τις προσαρμοσμένες τιμές αποστάσεων από το θέμα. **Επιστρέφει** `array<string, string>` (όνομα απόστασης → τιμή).

```php
use TailwindPHP\tw;

// TailwindCSS 4 uses a single --spacing base value rather than a --spacing-* namespace.
// This returns any custom --spacing-* values defined in the theme.
tw::spacing('@import "tailwindcss"; @theme { --spacing-huge: 10rem; }');
// ['huge' => '10rem']
```

## Μορφές εισόδου

Οι μέθοδοι επιθεώρησης (`generate`, `properties`, `computedProperties`, `value`, `computedValue`) δέχονται τρεις μορφές εισόδου:

| Μορφή | Παράδειγμα |
|---|---|
| Μόνο συμβολοσειρά | `tw::generate('<div class="flex">')` |
| Συμβολοσειρά + συμβολοσειρά CSS | `tw::generate('<div class="flex">', '@import "tailwindcss"; @theme { ... }')` |
| Πίνακας με `content` (+ προαιρετικό `css`) | `tw::generate(['content' => '<div class="flex">', 'css' => '@import "tailwindcss";'])` |

```php
use TailwindPHP\tw;

// Format 1: string only
tw::properties('p-4');

// Format 2: string + CSS
tw::properties('bg-brand', '@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

// Format 3: array
tw::properties(['content' => 'p-4', 'css' => '@import "tailwindcss";']);
```

## Μέθοδοι στιγμιότυπου TailwindCompiler

Το αντικείμενο που επιστρέφει το [`tw::compile()`](#twcompile) παρέχει τις ίδιες δυνατότητες επιθεώρησης με τη στατική κλάση, συνδεδεμένες με το CSS με το οποίο μεταγλωττίστηκε. Χρησιμοποιήστε το για να αποφύγετε την επανάλυση του θέματος σε κάθε κλήση.

```php
public function generate(string $content, bool $minify = false): string
public function css(array $candidates, bool $minify = false): string
public function generateExact(string $content, bool $minify = false): string
public function cssExact(array $candidates, bool $minify = false): string
public function extractCandidates(string $html): array
public function extractCandidatesFromStrings(string $source): array
public function properties(string|array $utilities): array
public function computedProperties(string|array $utilities): array
public function value(string $utility): ?string
public function computedValue(string $utility): ?string
public function minify(string $css): string
public function colors(): array
public function breakpoints(): array
public function spacing(): array
```

```php
use TailwindPHP\tw;

$compiler = tw::compile('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');

$css        = $compiler->generate('<div class="flex p-4 bg-brand">');
$candidates = $compiler->extractCandidates('<div class="flex p-4 bg-brand">');

$compiler->properties('bg-brand');          // ['background-color' => 'var(--color-brand)']
$compiler->computedProperties('bg-brand');   // ['background-color' => '#3b82f6']
$compiler->value('bg-brand');                // 'var(--color-brand)'
$compiler->computedValue('bg-brand');        // '#3b82f6'

$minified = $compiler->minify($css);

$compiler->colors();        // all color values
$compiler->breakpoints();   // all breakpoint values
$compiler->spacing();       // custom spacing values
```

### Συσσωρευτική και ακριβής δημιουργία

Τα `generate()` και `css()` **συσσωρεύουν**: κάθε κλήση προσθέτει τις υποψήφιες τιμές της στο σύνολο του μεταγλωττιστή, που διευρύνεται συνεχώς, και το επιστρεφόμενο φύλλο στυλ καλύπτει όλα όσα έχουν εμφανιστεί μέχρι τότε. Αυτό ταιριάζει σε ένα φύλλο στυλ που αναπτύσσεται σε πολλά πρότυπα.

Τα `generateExact()` και `cssExact()` μεταγλωττίζουν **ακριβώς** το δοσμένο περιεχόμενο ή τις υποψήφιες τιμές ανά κλήση, χωρίς μεταφορά δεδομένων μεταξύ κλήσεων, ενώ επαναχρησιμοποιούν το αναλυμένο σύστημα σχεδίασης του μεταγλωττιστή. Η έξοδος είναι ίδια με εκείνη που θα παρήγαγε μια ψυχρή `tw::generate()` του ίδιου περιεχομένου. Αυτός είναι ο ταχύτερος τρόπος για να δημιουργήσετε CSS ανά σελίδα με έναν μεταγλωττιστή που παραμένει ενεργός για μεγάλο διάστημα:

```php
use TailwindPHP\tw;

$compiler = tw::compile($themeCss);

foreach ($pages as $slug => $html) {
    $perPageCss[$slug] = $compiler->generateExact($html, true);
}
```

Και οι τέσσερις μέθοδοι δέχονται μια προαιρετική σημαία `$minify` που παράγει ελαχιστοποιημένο CSS κατά τη σειριοποίηση, με ταυτόσημα bytes με το `tw::generate(['minify' => true])` και μικρότερο κόστος από την εκ των υστέρων ελαχιστοποίηση της μορφοποιημένης εξόδου.

### Προηγμένοι επιθεωρητές

Για άμεση επιθεώρηση της μεταγλωττισμένης κατάστασης:

```php
public function getTheme(): Theme
public function getDesignSystem(): object
public function getCompiled(): array
```

```php
$compiler->getTheme();        // Theme object with resolved values
$compiler->getDesignSystem(); // Design system: utilities, variants, etc.
$compiler->getCompiled();     // Raw compiled state array
```

Αυτά επιστρέφουν εσωτερικές δομές· δείτε την [Αρχιτεκτονική](https://tailwindphp.inline0.dev/el/docs/advanced/architecture) για το περιεχόμενό τους.

### Συναρτήσεις χαμηλότερου επιπέδου

Η κλάση `tw` περιτυλίγει ένα σύνολο συναρτήσεων με χώρο ονομάτων στο `TailwindPHP`. Είναι χρήσιμες όταν χρειάζεστε το ακατέργαστο αποτέλεσμα μεταγλώττισης αντί για `TailwindCompiler`:

| Συνάρτηση | Σκοπός |
|---|---|
| `compile(string $css, array $options = []): array` | Αναλύει και μεταγλωττίζει το CSS. Επιστρέφει `build` (συσσωρευτικό) και closures `buildExact` που δέχονται υποψήφιες τιμές και προαιρετική σημαία `$minify`, καθώς και τα `sources`, `root`, `features` και `designSystem`. Δέχεται τις ίδιες επιλογές με το [`tw::compile()`](#twcompile) εκτός από το `stateCacheFile` |
| `StateCache\compileCssCached(string $css, string $cacheFile, array $options = []): array` | `compile()` με την επίμονη [προσωρινή αποθήκευση κατάστασης μεταγλωττιστή](https://tailwindphp.inline0.dev/el/docs/advanced/caching#compiler-state-cache) |
| `parseCssState()`, `finalizeCssState()`, `compileParsed()` | Τα δύο στάδια της ανάλυσης (σειριοποιήσιμη κατάσταση και έπειτα οι συναρτήσεις closure που αναδομούνται από αυτήν) και το τελικό βήμα συναρμολόγησης που χρησιμοποιεί το `compileCssCached()`. Τα `parseCss()` και `compileAst()` παραμένουν τα αντίστοιχα μονοβηματικά ισοδύναμα |

```php
use function TailwindPHP\compile;

$compiled = compile('@import "tailwindcss";');
$css = $compiled['build'](['flex', 'p-4'], true); // minified
```

## Προσωρινή αποθήκευση

Το `tw::generate()` μπορεί να αποθηκεύει προσωρινά τα μεταγλωττισμένα CSS στον δίσκο, ώστε οι ίδιες είσοδοι να παρακάμπτουν την επαναμεταγλώττιση.

| Επιλογή | Τύπος | Προεπιλογή | Σκοπός |
|---|---|---|---|
| `cache` | `bool \| string` | `false` | Το `true` ενεργοποιεί τον προεπιλεγμένο κατάλογο· μια συμβολοσειρά διαδρομής αποθηκεύει εκεί προσωρινά |
| `cacheTtl` | `int` | καμία | Διάρκεια ζωής της προσωρινής αποθήκευσης σε δευτερόλεπτα· οι ληγμένες εγγραφές μεταγλωττίζονται ξανά |

```php
use TailwindPHP\tw;

// Default directory: sys_get_temp_dir() . '/tailwindphp'
$css = tw::generate([
    'content' => '<div class="flex p-4">',
    'cache' => true,
]);

// Custom directory + TTL
$css = tw::generate([
    'content' => '<div class="flex p-4">',
    'cache' => '/path/to/cache',
    'cacheTtl' => 3600, // expire after 1 hour
]);
```

Το κλειδί της προσωρινής αποθήκευσης προκύπτει από το **περιεχόμενο**, τη **διαμόρφωση CSS** και την επιλογή **minify**, ώστε διαφορετικές είσοδοι να δημιουργούν διαφορετικά αρχεία προσωρινής αποθήκευσης. Διαγράψτε εγγραφές με το [`tw::clearCache()`](#twclearcache) ή με την αυτόνομη συνάρτηση `TailwindPHP\clearCache()`.

Για τον αναλυτικό οδηγό, δείτε την ενότητα [Προσωρινή αποθήκευση & ελαχιστοποίηση](https://tailwindphp.inline0.dev/el/docs/advanced/caching).
