
# Direktíva @source

`@source` sa nachádza vo vstupnom CSS. Jej formy `inline()` pridávajú alebo odstraňujú kandidátov na triedy a fungujú všade. Cestné formy určujú súbory šablón na prehľadávanie kvôli názvom tried; súbory prehľadáva iba [CLI](https://tailwindphp.inline0.dev/sk/docs/cli) a zatiaľ nepoužíva zadané cesty (pozrite si [Ako sa používajú cesty](#how-paths-are-used)).

```css
@import "tailwindcss";
@source "./templates";
```

Direktívy `@source` sa čítajú počas kompilácie a z výstupu sa odstránia — vo vygenerovanom CSS sa nikdy neobjavia. Cesty musia byť v úvodzovkách; povolené sú jednoduché aj dvojité úvodzovky.

## Cesty, globy a negácia

Cestná forma prijíma adresár, glob alebo negovanú cestu a direktívy sa postupne kumulujú:

```css
@source "./templates";              /* a directory */
@source "./components/**/*.php";    /* a glob */
@source not "./templates/legacy";   /* an exclusion */
```

### Ako sa používajú cesty

Kompilátor zaznamenáva každú cestnú direktívu v zozname `sources` poľa, ktoré vracia `TailwindPHP\compile()`, ako `['base' => …, 'pattern' => …, 'negated' => …]`, pričom `base` preberá z možnosti kompilácie `base`. Nikdy sám nečíta súbory.

- `tw::generate()`, `tw::compile()` a `TailwindCompiler` kompilujú iba obsah, ktorý im odovzdáte. Cestné direktívy na ne nemajú vplyv.
- [CLI](https://tailwindphp.inline0.dev/sk/docs/cli) číta `sources`, no v aktuálnom vydaní rekurzívne prehľadáva adresár vstupného súboru kvôli každej nenegovanej ceste, bez ohľadu na zadanú cestu či glob, a cesty `not` úplne preskakuje, takže nič nevylúčia ([#8](https://github.com/inline0/tailwindphp/issues/8)). Podrobnosti a aktuálne použiteľné usporiadanie nájdete v časti [Čo sa prehľadáva pomocou CLI](https://tailwindphp.inline0.dev/sk/docs/cli#what-the-cli-scans).

## Vložené kandidáty

`@source inline(...)` vynúti zahrnutie tried do výstupu, aj keď sa v prehľadávaných súboroch nikdy nevyskytujú — užitočné pri názvoch tried zostavených dynamicky za behu:

```css
@source inline("flex p-4 m-2");
```

Vložené kandidáty podporujú aj varianty:

```css
@source inline("hover:bg-blue-500 focus:ring-2");
```

### Rozšírenie zložených zátvoriek

Vložené vzory rozbalia skupiny v zložených zátvorkách, takže môžete stručne vymenovať veľa kandidátov:

```css
@source inline("p-{1,2,4}");
/* Generates p-1, p-2, and p-4 */

@source inline("text-{red,blue}-500");
/* Generates text-red-500 and text-blue-500 */
```

## Ignorované vložené kandidáty

`@source not inline(...)` funguje opačne ako `inline()` — odstráni z výstupu zodpovedajúce kandidáty, aj keď sa našli vo vašom obsahu. Funguje tu aj rozšírenie zložených zátvoriek:

```css
@source not inline("legacy");
@source not inline("p-{1,2}");
```

## Pravidlá overovania

`@source` je príkaz, nie blok. Kompilátor odmietne:

- direktívu s telom — `@source cannot have a body.`
- vnorenú direktívu (napríklad vo vnútri `@media`) — `@source cannot be nested.`
- cestu bez úvodzoviek — `@source paths must be quoted.`

```css
/* Invalid — throws "`@source` cannot have a body." */
@source "./src" {
    .some-style { color: red; }
}

/* Invalid — throws "`@source` paths must be quoted." */
@source ./src;
```

Pre zostavenia zo súborov si pozrite [CLI](https://tailwindphp.inline0.dev/sk/docs/cli) a informácie o riešení `@import` a virtuálnych modulov nájdete v časti [Importy](https://tailwindphp.inline0.dev/sk/docs/usage/imports).
