
# Memulai

## Instalasi

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

shikiphp memerlukan PHP 8.2 atau lebih baru dengan `ext-json` dan `ext-mbstring` — keduanya
aktif di hampir setiap build PHP. Tidak ada yang lain: tanpa Node, tanpa binding
Oniguruma native, tanpa ekstensi tambahan.

## Blok pertama Anda

Facade statis `Shikiphp` adalah cara tercepat untuk memulai. Berikan kode Anda, id bahasa,
dan id tema:

```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` mengembalikan blok `<pre class="shiki …">` lengkap dengan gaya mandiri. Warna latar depan dan
latar belakang ditulis secara inline pada `<pre>`, sehingga blok ditampilkan
dengan benar tanpa stylesheet tambahan.

## Tema ganda (terang dan gelap)

Alih-alih satu `theme`, berikan peta `themes`. shikiphp menghasilkan variabel CSS
(seperti Shiki) agar satu blok yang dirender menyesuaikan dengan mode terang dan gelap:

```php
use Shikiphp\Shikiphp;

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

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

Secara default, warna tema `light` menjadi nilai inline bawaan dan `dark`
diekspor melalui variabel `--shiki-dark`. Aktifkan tema gelap dengan sedikit
CSS — cuplikan yang sama seperti yang didokumentasikan Shiki:

```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;
}
```

Anda dapat memilih tema yang menjadi nilai inline bawaan dengan opsi
[`defaultColor`](https://shikiphp.inline0.dev/id/docs/options#defaultcolor), atau mengatur `defaultColor: false`
agar hanya variabel yang dihasilkan.

## Id bahasa dan alias

Bahasa dirujuk berdasarkan id Shiki atau aliasnya — `php`, `ts`, `js`,
`rust`, `python`, `html`, dan seterusnya. Lihat [Bahasa](https://shikiphp.inline0.dev/id/docs/languages) untuk cara
mencantumkan semua yang disertakan, dan [Tema](https://shikiphp.inline0.dev/id/docs/themes) untuk id tema.

## Menggunakan kembali penyorot

Facade secara malas membuat dan menyimpan penyorot `Highlighter` bawaan, sehingga pemanggilan
berulang ke `Shikiphp::codeToHtml` menggunakan kembali cache tata bahasa dan tema yang sama. Jika Anda memerlukan
API yang lebih lengkap (keluaran HAST, tata bahasa kustom, kisi token), ambil instance-nya
secara langsung:

```php
use Shikiphp\Shikiphp;

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

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

Lihat [API](https://shikiphp.inline0.dev/id/docs/api) untuk API lengkapnya.
