
# Direktīva @source

`@source` atrodas jūsu ievadē CSS. Tās `inline()` formas pievieno vai noņem klašu kandidātus un darbojas visur. Ceļu formas norāda veidņu failus, kuros meklēt klašu nosaukumus; failus pārmeklē tikai [CLI](https://tailwindphp.inline0.dev/lv/docs/cli), un pašlaik tajā netiek lietoti norādītie ceļi (skatiet [Ceļu izmantošana](#how-paths-are-used)).

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

`@source` direktīvas tiek nolasītas kompilēšanas laikā un izņemtas no izvades — tās nekad neparādās ģenerētajā CSS. Ceļi jāliek pēdiņās; var izmantot gan vienpēdiņas, gan dubultpēdiņas.

## Ceļi, glob izteiksmes un noliegums

Ceļa formā var norādīt direktoriju, glob izteiksmi vai noliegtu ceļu, un direktīvas tiek uzkrātas:

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

### Ceļu izmantošana

Kompilators ieraksta katru ceļa direktīvu masīva `sources` sarakstā, ko atgriež `TailwindPHP\compile()`, kā `['base' => …, 'pattern' => …, 'negated' => …]`, kur `base` vērtība tiek ņemta no kompilēšanas opcijas `base`. Tas pats failus nelasa.

- `tw::generate()`, `tw::compile()` un `TailwindCompiler` kompilē tikai jūsu nodoto saturu. Ceļu direktīvas tur neietekmē rezultātu.
- [CLI](https://tailwindphp.inline0.dev/lv/docs/cli) nolasa `sources`, taču pašreizējā laidienā tas rekursīvi pārmeklē ievades faila direktoriju katram nenoliegtajam ceļam neatkarīgi no ceļa vai glob izteiksmes, bet pilnībā ignorē `not` ceļus, tāpēc tie neko neizslēdz ([#8](https://github.com/inline0/tailwindphp/issues/8)). Sadaļā [Ko pārmeklē CLI](https://tailwindphp.inline0.dev/lv/docs/cli#what-the-cli-scans) ir sīkāka informācija un pašlaik piemērots izkārtojums.

## Iekļaujamie kandidāti

`@source inline(...)` iekļauj klases izvadē pat tad, ja pārmeklētajos failos tās nekad neparādās — noder klašu nosaukumiem, kas tiek dinamiski veidoti izpildlaikā:

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

Iekļaujamie kandidāti atbalsta arī variantus:

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

### Figūriekavu izvēršana

Iekļaujamie raksti izvērš figūriekavu grupas, ļaujot īsi uzskaitīt daudzus kandidātus:

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

## Ignorētie iekļaujamie kandidāti

`@source not inline(...)` darbojas pretēji `inline()` — tā izvada svītro atbilstošos kandidātus pat tad, ja tie atrasti jūsu saturā. Arī šeit darbojas figūriekavu izvēršana:

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

## Validācijas noteikumi

`@source` ir priekšraksts, nevis bloks. Kompilators noraida:

- Direktīvu ar pamatdaļu — `@source cannot have a body.`
- Ligzdotu direktīvu (piemēram, `@media` iekšienē) — `@source cannot be nested.`
- Ceļu bez pēdiņām — `@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;
```

Failos balstītām būvēm skatiet [CLI](https://tailwindphp.inline0.dev/lv/docs/cli), bet [Importi](https://tailwindphp.inline0.dev/lv/docs/usage/imports) — lai atrisinātu `@import` un virtuālos moduļus.
