Code Block
Yapay zeka yanıtları için geliştirilmiş kod blokları. Akışa ayak uyduran sözdizimi vurgulama, kopyalama, indirme ve satır kaydırma, satır numaraları ve vurgulanmış satırlar, kabul ve reddetme seçenekli fark görünümleri ve komutlar için bir terminal.
Bir yapay zeka yanıtındaki kod birkaç karakter birkaç karakter gelir, çoğu zaman birinin onaylaması gereken bir fark olarak. Code Block akarken vurgular, okuyucu yukarı kaydırmadıysa yeni satırları izler ve kod tamamlanana kadar kopyalama, indirme ve satır kaydırmayı yoldan çekilmiş tutar.
Vurgulama, GitHub'ın açık ve koyu temalarıyla Shiki kullanır ve dil başına isteğe bağlı olarak yüklenir. Metin geldikçe yalnızca yeni satırlar tokenlenir; bu yüzden uzun dosyalar hızlı kalır ve renk şeması değişince parlamasın diye iki tema birlikte render edilir. 16 satırdan uzun bloklar “Show all” arkasında katlanır.
Birleşik bir fark iletirseniz eski ve yeni satır numaralarını, bir değişiklik sayısını ve renkli satırları alırsınız; kopyalama farkı değil yeni sürümü verir. Bir gözden geçirme eklerseniz okuyucu, blok odaktayken ⌘↵ ve ⌘⌫ ile değişikliği kabul veya reddedebilir. CodeFence aynı bloğu Streamdown'a takar, CodeTerminal ise komutları çıktıları ve çıkış koduyla gösterir.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/code-block
Streamdown ile Markdown içinde
CodeFence'i bir renderer olarak kaydedin. title="app/page.tsx", {2,4-6} ve showLineNumbers gibi dil ve çit ayarlarını okur, çit hâlâ akarken vurgulamayı sürdürür.
Bir değişikliği gözden geçirme
Önerilen bir düzenlemeyi fark olarak gösterin ve okuyucunun, blok odaktayken ⌘↵ ve ⌘⌫ ile kabul veya reddetmesine izin verin.
Tek başına
Kodu ve dili doğrudan iletin; örneğin bir araç çağrısı dosya içeriği döndürdüğünde.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
CodeBlock | Blokun kendisi: başlık, eylemler, kod ve isteğe bağlı gözden geçirme çubuğu. |
CodeFence | Çitli kodu bir CodeBlock'a dönüştüren bir Streamdown renderer'ı. |
CodeTerminal | Akan çıktısı ve çıkış durumuyla bir komut. |
CopyButton, DownloadButton, WrapToggle | Başlık eylemleri, kendi başlıklarınız için dışa aktarılır. |
LanguageIcon | Başlıkta kullanılan dil işareti. |
| Prop | Tür | Varsayılan |
|---|---|---|
codeKaynak ya da diff ayarlıysa birleşik bir fark. | string | – |
languagetsx, py veya bash gibi Shiki dil id'si ya da takma adı. Bilinmeyen id'ler düz metin olarak render edilir. | string | – |
filenameBaşlıkta gösterilir ve indirmeler için kullanılır. | string | – |
streamingVurgulamayı artımlı tutar, yeni satırları izler ve eylemleri devre dışı bırakır. | boolean | false |
diffKodu birleşik fark olarak ele alır. | boolean | false |
lineNumbersSatır numaralarını gösterir. Farklar, false yapılmadıkça bunları gösterir. | boolean | – |
startLineİlk satırın numarası. | number | 1 |
highlightİşaretlenecek satır numaraları. | number[] | [] |
defaultWrapUzun satırlar sarılmış olarak başlar. | boolean | false |
collapseAfterBu satır sayısından uzunsa daraltır. 0 hiçbir zaman daraltmaz. | number | 16 |
actionsBaşlıkta yerleşik olanlardan önce ek kontroller. | ReactNode | – |
onApply“Applied” ile onaylanan bir Apply düğmesi gösterir. | () => unknown | – |
reviewBeklerken gözden geçirme çubuğunu, kabul veya red sonrasında bir rozet gösterir. | CodeBlockReview | – |
| Prop | Tür | Varsayılan |
|---|---|---|
statusGeçerli karar. | "pending" | "accepted" | "rejected" | – |
onAcceptAccept veya ⌘↵ ile çağrılır. | () => void | – |
onRejectReject veya ⌘⌫ ile çağrılır. | () => void | – |
CodeFence
Streamdown ile kaydedin: plugins={{ renderers: [{ language: codeFenceLanguages, component: CodeFence }] }}.
| Prop | Tür | Varsayılan |
|---|---|---|
codeÇit içeriği, Streamdown'dan. | string | – |
languageÇit dili, Streamdown'dan. | string | – |
metaDilden sonraki her şey: title="…", {1,3-5}, showLineNumbers, startLine=10. | string | – |
isIncompleteÇit hâlâ açıkken true. | boolean | – |
| Prop | Tür | Varsayılan |
|---|---|---|
commandÇalıştırılan komut. | string | – |
outputŞimdiye kadarki çıktı. Aktıkça ekleyin. | string | "" |
runningBir spinner gösterir ve yeni çıktıyı izler. | boolean | false |
exitCodeBittiğinde gösterilir. 0 dışındaki her şey başarısız olarak işaretlenir. | number | – |
titleBaşlık etiketi. | string | "Terminal" |
| Tuş | Action |
|---|---|
| Tab | Başlık eylemleri, kod alanı ve Show all arasında gezinir. |
| ⌘↵ | Odak blok içindeyken bekleyen bir gözden geçirmeyi kabul eder. |
| ⌘⌫ | Odak blok içindeyken bekleyen bir gözden geçirmeyi reddeder. |
| ←→ | Kod alanı odaktayken uzun satırları kaydırır. |
- Kod alanı, dosyanın adını taşıyan odaklanabilir bir bölgedir, örneğin “app/page.tsx code”; böylece klavye kullanıcıları kaydırabilir.
- Değişen satırlar renge bağımlı değildir. + ve − işaretleri yalnızca görseldir; ekran okuyucular bunun yerine her değişen satırdan önce “added” veya “removed” duyar.
- Copy “Copied” duyurur ve her simge düğmesinin bir etiketi ve tooltip'i vardır.
- Gözden geçirme kısayolları bir alana yazarken yok sayılır; böylece tuş vuruşlarını asla çalmaz.
Şunlarla geliştirildi
Code Block bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
9 dosya, components/blocks/code-block konumuna eklendi.