
# Direktiva @source

`@source` je del vašega vhodnega CSS. Njene oblike `inline()` dodajajo ali odstranjujejo kandidate za razrede in delujejo povsod. Oblike poti določajo datoteke s predlogami, ki jih je treba pregledati za imena razredov; datoteke pregleduje samo [CLI](https://tailwindphp.inline0.dev/sl/docs/cli), vendar trenutno ne uveljavlja podanih poti (glejte [Kako se uporabljajo poti](#how-paths-are-used)).

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

Direktive `@source` se preberejo med prevajanjem in odstranijo iz izhoda — v ustvarjenem CSS se nikoli ne pojavijo. Poti morajo biti v narekovajih; sprejeti so enojni in dvojni narekovaji.

## Poti, vzorci glob in negacija

Oblika poti sprejema imenik, vzorec glob ali negirano pot, direktive pa se združujejo:

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

### Kako se uporabljajo poti

Prevajalnik zabeleži vsako direktivo poti na seznamu `sources` v polju, ki ga vrne `TailwindPHP\compile()`, kot `['base' => …, 'pattern' => …, 'negated' => …]` z vrednostjo `base`, prevzeto iz možnosti prevajanja `base`. Datotek nikoli ne bere sam.

- `tw::generate()`, `tw::compile()` in `TailwindCompiler` prevedejo samo vsebino, ki jo podate. Direktive poti tam nimajo učinka.
- [CLI](https://tailwindphp.inline0.dev/sl/docs/cli) bere `sources`, vendar v trenutni izdaji rekurzivno pregleda imenik vhodne datoteke za vsako nenegirano pot, ne glede na pot ali vzorec glob, negirane poti `not` pa v celoti preskoči, zato ničesar ne izključijo ([#8](https://github.com/inline0/tailwindphp/issues/8)). Podrobnosti in trenutno delujočo razporeditev najdete v razdelku [Kaj pregleduje CLI](https://tailwindphp.inline0.dev/sl/docs/cli#what-the-cli-scans).

## Kandidati v vrstici

`@source inline(...)` prisili vključitev razredov v izhod, tudi če se nikoli ne pojavijo v pregledanih datotekah — uporabno za imena razredov, sestavljena dinamično med izvajanjem:

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

Kandidati v vrstici podpirajo tudi različice:

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

### Razširjanje z zavitimi oklepaji

Vzorci v vrstici razširjajo skupine v zavitih oklepajih, zato lahko na kratko naštejete številne kandidate:

```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 */
```

## Prezrti kandidati v vrstici

`@source not inline(...)` deluje nasprotno od `inline()` — ustrezne kandidate odstrani iz izhoda, tudi če so bili najdeni v vaši vsebini. Tudi tukaj deluje razširjanje z zavitimi oklepaji:

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

## Pravila preverjanja

`@source` je stavek, ne blok. Prevajalnik zavrne:

- Direktivo z vsebino — `@source cannot have a body.`
- Ugnezdeno direktivo (na primer znotraj `@media`) — `@source cannot be nested.`
- Pot brez narekovajev — `@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;
```

Za gradnje na podlagi datotek glejte [CLI](https://tailwindphp.inline0.dev/sl/docs/cli), za razreševanje `@import` in navideznih modulov pa [Uvozi](https://tailwindphp.inline0.dev/sl/docs/usage/imports).
