
# Kom igång

## Installation

```bash
composer require shikiphp/shikiphp
```

shikiphp kräver PHP 8.2 eller senare med `ext-json` och `ext-mbstring` — båda
är aktiverade i nästan alla PHP-byggen. Inget annat behövs: ingen Node, ingen inbyggd
Oniguruma-bindning och inga ytterligare tillägg.

## Ditt första kodblock

Den statiska fasaden `Shikiphp` är den snabbaste vägen att komma igång. Ange koden, ett språk-id
och ett tema-id:

```php
use Shikiphp\Shikiphp;

$html = Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
    return "Hello, {$name}!";
}
PHP, [
    'lang'  => 'php',
    'theme' => 'github-dark',
]);

echo $html;
```

`codeToHtml` returnerar ett komplett `<pre class="shiki …">`-block med egen stil. Förgrunds- och bakgrundsfärgerna anges direkt på `<pre>`, så det renderas
korrekt utan någon extra stilmall.

## Två teman (ljust och mörkt)

I stället för ett enda `theme` skickar du in en `themes`-karta. shikiphp skapar variabler för CSS (som Shiki), så att ett och samma renderade block anpassar sig till ljust och mörkt läge:

```php
use Shikiphp\Shikiphp;

$code = 'const answer: number = 42';

echo Shikiphp::codeToHtml($code, [
    'lang'   => 'ts',
    'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
```

Som standard är färgerna från temat `light` inbäddade standardvärden, och `dark` exponeras genom `--shiki-dark`-variabler. Aktivera det mörka temat med lite
CSS — samma kodsnutt som Shiki beskriver:

```css
html.dark .shiki,
html.dark .shiki span {
  color: var(--shiki-dark) !important;
  background-color: var(--shiki-dark-bg) !important;
  /* and font styles */
  font-style: var(--shiki-dark-font-style) !important;
  font-weight: var(--shiki-dark-font-weight) !important;
  text-decoration: var(--shiki-dark-text-decoration) !important;
}
```

Du kan välja vilket tema som ska vara inbäddat standardvärde med alternativet
[`defaultColor`](https://shikiphp.inline0.dev/sv/docs/options#defaultcolor) eller ange `defaultColor: false`
för att endast skapa variabler.

## Språk-id:n och alias

Språk hänvisas till med sitt språk-id eller alias i Shiki — `php`, `ts`, `js`,
`rust`, `python`, `html` och så vidare. Se [Språk](https://shikiphp.inline0.dev/sv/docs/languages) för hur du
listar allt som ingår, och [Teman](https://shikiphp.inline0.dev/sv/docs/themes) för tema-id:n.

## Återanvända markeraren

Fasaden skapar och cachar en paketerad `Highlighter` vid behov, så upprepade anrop
till `Shikiphp::codeToHtml` återanvänder samma grammatik- och temacacher. Om du behöver de mer omfattande funktionerna i API (HAST-resultat, anpassade grammatiker, tokengridar) hämtar du instansen direkt:

```php
use Shikiphp\Shikiphp;

$code = 'fn main() {}';

$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);
```

Se [API](https://shikiphp.inline0.dev/sv/docs/api) för en fullständig översikt över funktionerna.
