Başsız bileşen sistemi · Yeni Kaynak

Bits UI Tasarım Sistemi.

Bits UI, yerel parçalar ve Svelte 5 durumuyla bir araya getirilebilen başsız Svelte bileşenleri sunar. Örnek; türetilmiş karma durumlu bir onay kutusunu, birbirinden bağımsız açılan akordeon bölümlerini ve portal tabanlı bir inceleme iletişim penceresini eksiksiz stil yapılandırmasıyla birleştirir.

OpenDesign Kılavuzu9 Bölüm28 Referans KaydıÖzgün Uygulama Kılavuzu
01

Bits UI Tasarım Sistemi Arayüz Önizlemesi

Tek bir denetimi işaretleyin, toplu seçimdeki karma durumu inceleyin, tamamlanmamış ilerlemeyi gözden geçirin; ardından yerel kontrol listesini tamamlayıp kaydedin.

Elle arayüz incelemesiÖrneğin Tamamını Aç
Bits UI 2.19.5 Checkbox, Accordion ve Dialog bileşenleri; Svelte 5.57.1 ile. Tüm görsel stiller özgündür. · Uygulama başvurusu
02

Bits UI Tasarım Sistemi Tasarım Referansı

Bits UI 2.19.5 ve Svelte 5.57.1. Bits UI başsızdır: tüm --app-* renk, tipografi ve boşluk değerleri bu örnekle birlikte sunulan açıkça belirtilmiş özgün yapılandırmadır; resmî Bits UI tasarım belirteçleri değildir. Yerel veri öznitelikleri ve bileşen özellikleri ayrıca belirtilmiştir.

Özgün anlamsal CSS yapılandırması

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--app-canvas#f4f3f8 Sayfa arka planı.
--app-surface#ffffff Panel ve iletişim kutusu yüzeyi.
--app-ink#2d2938 Ana metin.
--app-muted#746d80 Yardımcı metin.
--app-line#e3dfeb Ayırıcılar ve kenarlıklar.
--app-action#604c88 İşaretli denetimler ve ana eylemler.
--app-on-action#fffEylemlerin üzerindeki metin.
--app-focus#9a80ce Görünür klavye odağı.
--app-soft#eee8f7 İsteğe bağlı yumuşak yüzey rolü.

Özgün boşluklar ve geometri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--app-space-14pxAdlandırılmış en küçük boşluk birimi.
--app-space-28pxSıkı boşluk.
--app-space-312pxDenetim/etiket aralığı.
--app-space-416pxDar panel iç boşluğu.
--app-space-624pxMasaüstü panel iç boşluğu ve sütun aralığı.
--app-space-832pxMasaüstü sayfa iç boşluğu.
Checkbox geometry22×22px; 5px radius; 1px borderAçıkça tanımlanmış özgün denetim stilleri.
Focus ring3px solid #9a80ce; 3px offsetKlavye odağı görünür olan düğmelere uygulanır.
Dialog widthmin(440px, 100% − 28px)Açıkça tanımlanmış özgün duyarlı kaplama geometrisi.
Dialog maximum height100vh − 28px with overflow:autoYalnızca kaplama görünüm alanı kısıtlaması; sayfa yüksekliği geri bildirimi yoktur.
Type hierarchy34px title / 29px mobile; 16px accordion; 13px checks; 12px guidanceÖzgün sistem yazı tipi hiyerarşisi.

Yerel bileşen sözleşmeleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
Checkbox.Root checkedbooleanTamamlanmış veya tamamlanmamış durumu.
Checkbox.Root indeterminatebooleanBazı denetimler işaretlendiğinde toplu denetim karma durumu gösterir.
Checkbox data-statechecked / unchecked / indeterminateDoğrudan stil sayfası tarafından kullanılır.
Accordion.Root typemultipleBirden fazla inceleme bölümü açık kalabilir.
Accordion valuestring[]Genişletilmiş grup kimliklerinin Svelte'e bağlı listesi.
Dialog.Root openboolean, two-way boundİncelemenin görünürlüğünü kontrol eder.
Dialog.Title / DescriptionNative title and description relationshipsElle yinelenen ARIA kimlikleri oluşturmanız gerekmez.
Dialog.PortalOverlay and content rendered outside the normal panelPanelin belge akışını kullanarak kırpılmayı önler.
03

Bits UI Tasarım Sistemi: Eksiksiz Kılavuz

Bu sistemi gerçek bir arayüz için seçmeye, uygulamaya ve gözden geçirmeye yönelik pratik bir kılavuz.

DESIGN-bits-ui.md

Eksiksiz yönlendirme, uygulama için başlangıç noktası ve kaynak bağlantıları.

Kılavuzu İndir

Bits UI Tasarım Sistemi Svelte 5 Durumu Etrafında Yerel Parçaları Birleştirin

Svelte 5 Durumuyla Yerel Parçaları Bir Araya Getirin

Kontrol listesi, her bir yanıt, açık bölüm kimlikleri ve diyalog görünürlüğü için $state kullanır. $derived ile hesaplanan tamamlanma sayısı hem görünür ilerleme göstergesini hem de toplu onay kutusunu besler. Böylece tek bir Svelte modeli doğruluk kaynağı olurken Bits UI her bileşen için yerel etkileşimleri sağlar.

Bu OpenDesign kılavuzundan

Checkbox, Accordion ve Dialog kendi parçalarından oluşturulur. İnceleme diyaloğunun kontrol listesi yanıtlarını yönetmesi gerekmez; Accordion kapandığında bu yanıtları silmesi de gerekmez. Bu ayrım, çok bölümlü bir form için kullanışlı bir başlangıç noktasıdır: arayüzün hangi parçalarının görünür olduğu değişse de model korunur.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Svelte 5 Bileşen ve Stil Kaynaklarını Birlikte Kullanın

Svelte 5 Bileşen ve Stil Kaynaklarını Birlikte Kullanın

Örnek, Svelte 5 rune'larını kullanır: gruplar, açık bölümler, diyalog görünürlüğü ve kaydedilmiş durum için $state; tamamlanma sayısı için $derived. Bits UI 2.19.5 doğrudan içe aktarılır. Bu özgün görsel tasarım için Tailwind eklentisi, tema sağlayıcısı veya simge kitaplığı gerekmez.

App.svelte ve style.css dosyalarının tamamı standart bir Vite Svelte projesinde çalışır. Giriş noktası, eski new App oluşturucusu yerine Svelte'den mount kullanır. Örneği aktarırken bileşenin rune sözdizimini ve Bits UI 2.19.5 bağımlılığını birlikte tutun; burada gösterilen bağlamalar ve geri çağrılar eski bir Svelte bileşen API yapısı değildir.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Bireysel Onay Kutularından Gerçek Bir Karışık Durum Türetin

Gerçek Bir Karma Durumu Tek Tek Seçimlerden Türetin

Altı Boolean onay kutusu üç grupta yer alır. Toplu kontrol, yalnızca altısının da değeri true olduğunda işaretli; sayı bir ile beş arasındaysa belirsiz durumdadır. onCheckedChange geri çağrısı tüm onay kutularını günceller; böylece karışık durum, eşzamanını yitirebilecek ayrı bir bayrak olarak saklanmak yerine hesaplanan bir sonuç olur.

Bireysel kontroller, modeli güncelleyen ve kaydedilmiş geri bildirimleri geçersiz kılan küçük bir değişiklik işlevini çağırır. Yerel toplu onay kutusu, bir onay kutusu seçildikten sonra aria-checked=mixed değerini sunar. Stil sayfası data-state=checked ve data-state=indeterminate değerlerine göre yanıt verir; böylece davranış ve görünüm aynı yerel duruma bağlı kalır.

  1. İlk odak göstergesi onay kutusunu seçin ve toplu kontroldeki çizgiyi inceleyin.
  2. İnceleme kontrol listesini açın ve İncelemeyi tamamla seçeneğinin devre dışı olduğunu doğrulayın.
  3. Geri dönün, tüm onay kutularını işaretleyin ve tamamlanmış yerel anlık görüntüyü kaydedin.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Yanıtları Kaybetmeden Bölümlerin Birbirinden Bağımsız Olmasını Sağlayın

Yanıtları Kaybetmeden Bölümlerin Birbirinden Bağımsız Olmasını Sağlayın

Accordion.Root, type=multiple değerini ve açık grup kimliklerinden oluşan bağlı bir diziyi kullanır. Klavye akışı, açık bir bölümle başlar; Form düzeltmesi ve Sonuç geri bildirimi bölümleri birbirinden bağımsız olarak açılabilir. Bu değerler üst bileşenin durumunda tutulduğu için bir bölümü daraltmak onay kutularını temizlemez.

Her tetikleyici, tamamlanma sayısını yineleyerek içerik daraltıldığında da ilerlemenin görünür kalmasını sağlar. Yerel Header, Trigger ve Content parçaları beklenen ilişkiyi ve klavye davranışını korur. Artı işareti, tetikleyicinin data-state değerine göre döner ve genişletmeyi ayrı bir tıklama işleyicisiyle yönetmek yerine azaltılmış hareket tercihlerini gözetir.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Diyaloğun Tüm Yapısını Oluşturun ve Odağı Diyaloğa Bırakın

İletişim Kutusunun Tüm Yapısını Oluşturup Odağı Ona Bırakın

İncelemede Dialog.Root, Trigger, Portal, Overlay, Content, Title, Description ve Close kullanılır. Başlık ve açıklama gerçek yerel parçalardır; böylece Bits UI bunlar arasında erişilebilir ilişkiler kurabilir. Portal, katmanı kontrol listesi panelinin normal akışının dışına yerleştirir.

İçerik, duyarlı ve sınırlı bir genişliğe ve yalnızca katmana uygulanan bir maksimum yüksekliğe sahiptir; uzun incelemelerde kaydırma kullanılabilir. Escape tuşu, kontrol listesini temizlemeden diyaloğu kapatır. Katman açıldığında tetikleyiciyi kaldırmak yerine odağın geri döneceği hedef olarak kullanılabilir durumda tutun.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Uygulamanın Görsel Kurallarını Açık ve Yeniden Kullanılabilir Hale Getirin

Uygulamanın Görsel Kurallarını Açıkça Tanımlayıp Yeniden Kullanılabilir Kılın

CSS, yerel işaretli ve belirsiz durumları aynı eylem rolüne bağlar, ancak her biri için farklı glifler kullanır. Ayrı bir odak rolü klavye konumunu belirtir; bu nedenle bir kontrol, seçili olduğunu görünür biçimde korurken klavyedeki bir sonraki eylemin nerede gerçekleşeceğini de gösterebilir.

Adlandırılmış aralık ölçeğinde dört, sekiz, on iki, on altı, yirmi dört ve otuz iki piksellik değerler bulunur. Paneller masaüstünde yirmi dört, dar ekranlarda on altı piksellik değeri kullanır. Belirtim tablosu bu somut tercihleri özgün yapılandırma olarak belgeler; böylece okurlar, örnek stillerini paketin garanti ettiği özelliklerle karıştırmadan bunları yeniden oluşturabilir veya değiştirebilir.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Elle İşaretlenen Bir Maddeyi Otomatik Test Sonucundan Ayırın

Elle İşaretlemeyi Otomatik Test Sonucundan Ayırın

Kontrol listesi, okurun işaretlediği maddeleri kaydeder. Başka bir sayfayı incelemez, klavye testleri çalıştırmaz veya erişilebilirlik uyumluluğunu doğrulamaz. Altı kontrol gerçek erişilebilirlik davranışlarıyla ilgili olduğundan, hem giriş metninde hem de inceleme açıklamasında bu kapsamın açıkça belirtilmesi gerekir.

Altı maddenin tümü işaretlenene kadar Kaydet devre dışıdır. Kaydedilen mesaj, altı maddenin de okur tarafından işaretlendiğini ve sonucun yerel olduğunu belirtir. Eksik işleri incelemek için kısmi bir inceleme yine de açılabilir; ancak tamamlanmış inceleme mesajı oluşturamaz. Bu ayrım, örneğin durum geçişlerinin anlamlı kalmasını sağlar.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Kanıt Değiştiğinde Tamamlanma Mesajlarını Temizleyin

Kanıt Değiştiğinde Tamamlanma Mesajlarını Temizleyin

Herhangi bir bireysel veya toplu değişiklik, kaydedilmiş durumu temizler. Böylece bir kontrol kaldırıldıktan sonra tamamlanma onayı ekranda kalmaz. Tümünü temizle eylemi ayrıca başlangıçta açık olan bölümü yeniden açar ve inceleme diyaloğunu kapatır; böylece ilişkili tüm durumlar bilinen bir başlangıç noktasına döner.

Durum bölgesi katmanın dışında bulunur; bu nedenle kaydedilmiş mesaj, diyalog kapandıktan sonra da belgede kalır. Mesaj, yerel sayfa durumunu açıklar ve bir raporun gönderildiği izlenimini yaratmaz. Sayfa yenilendiğinde kontrol listesi sıfırlanır; bu, kendi başına çalışan bu örnek için uygundur.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Bileşen Parçalarını Görünür Etiketlere Bağlayın

Bileşen Parçalarını Görünür Etiketlere Bağlayın

Her onay kutusunun sabit bir kimliği ve bu kimlikle ilişkilendirilmiş görünür bir etiketi vardır. İşaretli veya belirsiz durumu yerel kontrolle temsil edilir; tik ve çizgi ise dekoratiftir. Kısmi seçimin sıradan, işaretlenmemiş bir öğe gibi duyurulmaması için hem Boolean işaretli değerini hem de türetilen belirsiz değeri toplu kontrole bağlı tutun.

Dialog.Title ve Dialog.Description, yerel bileşen yapısı aracılığıyla incelemenin adını ve açıklamasını sağlar. Portal, katmanı Accordion düzeninden ayırırken Dialog.Close açık bir kapatma eylemi sunar. Dışarıdaki durum bölgesi, katman kapandıktan sonra da kaydedilmiş sonucu tutar; böylece sonuç diyalog içeriğiyle birlikte kaybolmaz.

  • Görünür etiketi kontrolle ilişkilendirin.
  • Özel stilleri uyguladıktan sonra da belirgin bir focus-visible halkasını koruyun.
  • Bir diyaloğu yeniden biçimlendirirken başlık veya açıklama parçalarını kaldırmayın.

Destekleyici belirtimi okuyun

Bits UI Tasarım Sistemi Bileşen Örnekleri

Eksiksiz Svelte 5 kontrol listesi

$state/$derived modelleri, kontrollü onay kutuları ve Portal tabanlı inceleme diyaloğuyla yerel Bits UI bileşimi.

svelte
<script>
import {Accordion,Checkbox,Dialog} from 'bits-ui';
let groups=$state([{id:'keyboard',name:'Keyboard flow',description:'Move through the interface without a pointer.',checks:[{id:'focus',label:'Every action has a visible focus indicator.',done:false},{id:'order',label:'Focus follows the visual reading order.',done:false}]},{id:'forms',name:'Form correction',description:'Make a mistake and recover from it.',checks:[{id:'labels',label:'Each input has a persistent visible label.',done:false},{id:'errors',label:'Errors identify the field and explain the correction.',done:false}]},{id:'feedback',name:'Result feedback',description:'Confirm that the outcome is understandable.',checks:[{id:'status',label:'A status message describes the completed action.',done:false},{id:'color',label:'Meaning remains clear without color alone.',done:false}]}]);
let expanded=$state(['keyboard']),open=$state(false),saved=$state(false);
const complete=$derived(groups.reduce((sum,g)=>sum+g.checks.filter(c=>c.done).length,0));
function change(check,value){check.done=value;saved=false}
function all(value){groups.forEach(g=>g.checks.forEach(c=>c.done=value));saved=false}
function reset(){all(false);expanded=['keyboard'];open=false}
</script>
<main class="check-shell"><header><p class="eyebrow">INTERFACE REVIEW · MANUAL CHECKLIST</p><h1>Check the experience between the screens.</h1><p>Work through six practical checks, then review what you have marked. This is a personal checklist, not an automated accessibility test.</p></header><div class="check-layout"><section class="check-panel"><div class="bulk"><Checkbox.Root id="all-checks" checked={complete===6} indeterminate={complete>0&&complete<6} onCheckedChange={all} class="checkbox"><span aria-hidden="true">{complete===6?'✓':complete>0?'−':''}</span></Checkbox.Root><label for="all-checks">Mark all checks</label><span class="count">{complete}/6</span></div><Accordion.Root type="multiple" bind:value={expanded} class="accordion">{#each groups as group}<Accordion.Item value={group.id} class="accordion-item"><Accordion.Header class="accordion-heading"><Accordion.Trigger class="accordion-trigger"><span>{group.name}<small>{group.checks.filter(c=>c.done).length} of 2 checked</small></span><span class="plus" aria-hidden="true">+</span></Accordion.Trigger></Accordion.Header><Accordion.Content class="accordion-content"><p class="group-description">{group.description}</p>{#each group.checks as check}<div class="check-row"><Checkbox.Root id={check.id} checked={check.done} onCheckedChange={value=>change(check,value)} class="checkbox"><span aria-hidden="true">{check.done?'✓':''}</span></Checkbox.Root><label for={check.id}>{check.label}</label></div>{/each}</Accordion.Content></Accordion.Item>{/each}</Accordion.Root><Dialog.Root bind:open><Dialog.Trigger class="primary">Review checklist</Dialog.Trigger><Dialog.Portal><Dialog.Overlay class="overlay"/><Dialog.Content class="dialog"><Dialog.Title class="dialog-title">Your review snapshot</Dialog.Title><Dialog.Description class="dialog-description">{complete} of 6 checks are marked. Saving records your own review state; it does not certify the interface.</Dialog.Description><ul class="review-summary">{#each groups as group}<li><strong>{group.name}</strong><span>{group.checks.filter(c=>c.done).length} / 2</span></li>{/each}</ul>{#if complete<6}<p class="remaining">Return to the checklist to finish the remaining {6-complete} checks.</p>{/if}<div class="dialog-actions"><Dialog.Close class="secondary">Back to checks</Dialog.Close><button class="primary" disabled={complete<6} onclick={()=>{saved=true;open=false}}>Save completed review</button></div></Dialog.Content></Dialog.Portal></Dialog.Root><button class="reset" onclick={reset}>Clear all checks</button><p class="result" role="status">{saved?'Completed review saved locally. All six checks were marked by you.':'Progress stays in this preview until you reload.'}</p></section><aside class="check-notes"><div class="focus-art" aria-hidden="true"><span></span><i></i><b></b></div><p class="eyebrow">WHAT TO LOOK FOR</p><h2>Make the next action clear.</h2><p>A good check leaves evidence: where focus moved, what an error said, or how a result was announced.</p><dl><div><dt>Keyboard</dt><dd>Tab, Shift+Tab, Enter and Escape should support the relevant task.</dd></div><div><dt>Correction</dt><dd>Keep the user’s input and point to a specific next step.</dd></div><div><dt>Feedback</dt><dd>Describe the outcome in words as well as visual styling.</dd></div></dl></aside></div></main>

Kod referansı

  • Ana kontrol, işaretli ve belirsiz durumların ikisini de altı ayrı onay kutusundan türetir.
  • Kaydetme, diyaloğun açık olup olmamasına değil, tamamlanma durumuna bağlıdır.
  • Bu elle doldurulan çalışma sayfası bir erişilebilirlik denetimi çalıştırmaz.

Eksiksiz özgün görsel yapılandırma

Adlandırılmış anlamsal renkler, aralık ölçeği, yerel data-state seçicileri ve duyarlı katman stilleri.

css
:root{--app-canvas:#f4f3f8;--app-surface:#ffffff;--app-ink:#2d2938;--app-muted:#746d80;--app-line:#e3dfeb;--app-action:#604c88;--app-on-action:#fff;--app-focus:#9a80ce;--app-soft:#eee8f7;--app-radius:12px;--app-space-1:4px;--app-space-2:8px;--app-space-3:12px;--app-space-4:16px;--app-space-6:24px;--app-space-8:32px}html,body,#app{height:auto;min-height:0;margin:0}*{box-sizing:border-box}body{font-family:system-ui,sans-serif;background:var(--app-canvas);color:var(--app-ink)}button{font:inherit;cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible{outline:3px solid var(--app-focus);outline-offset:3px}.check-shell{max-width:1080px;margin:auto;padding:var(--app-space-8)}.eyebrow{font-size:10px;letter-spacing:.14em;font-weight:700;color:var(--app-muted)}h1{font-size:34px;line-height:1.15;max-width:710px;margin:12px 0}header>p:last-child{font-size:14px;line-height:1.7;max-width:640px;color:var(--app-muted)}.check-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:var(--app-space-6);margin-top:28px}.check-panel{background:var(--app-surface);border:1px solid var(--app-line);border-radius:16px;padding:var(--app-space-6);min-width:0}.bulk{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600;padding-bottom:24px}.count{margin-left:auto;color:var(--app-muted);font-size:12px}.checkbox{width:22px;height:22px;flex-shrink:0;border:1px solid #aaa1ba;background:white;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1}.checkbox[data-state=checked],.checkbox[data-state=indeterminate]{background:var(--app-action);border-color:var(--app-action);color:var(--app-on-action)}.accordion{margin-bottom:24px}.accordion-item{border-top:1px solid var(--app-line)}.accordion-item:last-child{border-bottom:1px solid var(--app-line)}.accordion-heading{margin:0;font-size:16px}.accordion-trigger{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;text-align:left;padding:20px 0;color:var(--app-ink);font-weight:600}.accordion-trigger small{display:block;font-weight:400;font-size:11px;color:var(--app-muted);margin-top:6px}.plus{font-size:23px;font-weight:400;transition:transform .15s}.accordion-trigger[data-state=open] .plus{transform:rotate(45deg)}.accordion-content{padding:0 0 20px}.group-description{font-size:12px;line-height:1.6;color:var(--app-muted);margin:0 0 16px}.check-row{display:flex;align-items:flex-start;gap:12px;margin-top:14px}.check-row label{font-size:13px;line-height:1.6;cursor:pointer}.primary,.secondary{border:1px solid transparent;border-radius:8px;padding:12px 16px;font-size:13px;font-weight:600}.primary{background:var(--app-action);color:var(--app-on-action)}.secondary{background:white;color:var(--app-ink);border-color:var(--app-line)}.reset{border:0;background:transparent;color:var(--app-muted);font-size:12px;padding:12px}.result{font-size:12px;line-height:1.6;color:var(--app-muted);margin:18px 0 0}.check-notes{min-width:0;padding:0 4px}.check-notes h2{font:400 29px/1.2 Georgia,serif}.check-notes>p:not(.eyebrow){font-size:13px;line-height:1.7;color:var(--app-muted)}.check-notes dl>div{padding:14px 0;border-top:1px solid var(--app-line)}.check-notes dt{font-size:13px;font-weight:600}.check-notes dd{font-size:12px;line-height:1.7;color:var(--app-muted);margin:5px 0 0}.focus-art{height:165px;background:#e6e0ef;border-radius:12px;position:relative;overflow:hidden;margin-bottom:24px}.focus-art span{position:absolute;width:140px;height:85px;left:35px;top:44px;background:white;border-radius:8px;transform:rotate(-9deg);box-shadow:0 0 0 6px #b3a3cd}.focus-art i{position:absolute;width:75px;height:13px;background:#b7adc6;left:60px;top:61px;transform:rotate(-9deg)}.focus-art b{position:absolute;width:72px;height:28px;background:#695587;left:87px;top:91px;border-radius:5px;transform:rotate(-9deg)}.overlay{position:fixed;inset:0;background:#21193180;z-index:20}.dialog{position:fixed;z-index:21;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100% - 28px));max-height:calc(100vh - 28px);overflow:auto;background:white;padding:24px;border-radius:14px;box-shadow:0 20px 80px #23193640}.dialog-title{font-size:23px;margin:0 0 12px}.dialog-description,.remaining{font-size:13px;line-height:1.7;color:var(--app-muted)}.review-summary{padding:0;list-style:none}.review-summary li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--app-line);font-size:13px}.dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}@media(max-width:740px){.check-layout{grid-template-columns:minmax(0,1fr)}.check-shell{padding:20px}h1{font-size:29px}}@media(max-width:360px){.check-shell{padding:14px}.check-panel,.dialog{padding:16px}.check-panel>.primary,.dialog-actions>*{width:100%}}@media(prefers-reduced-motion:reduce){.plus{transition:none}}

Kod referansı

  • Bunlar özgün --app-* değişkenleridir; resmî bir Bits paleti değildir.
  • Odak ve azaltılmış hareket stilleri dahildir.
  • Yalnızca katmanda, görüntü alanına göre belirlenen maksimum yükseklik kullanılır.
04

Bits UI Tasarım Sistemi Ajan Kurulumu

Uygulamaya Başlangıç Noktası

Svelte 5.57.1 ile Bits UI 2.19.5 sürümlerinde doğrulanmıştır. Özgün stil sayfasının tamamı gereklidir; Bits UI varsayılan renkler veya sayfa düzeni sağlamaz.

JavaScript
// npm create vite@latest bits-review -- --template svelte
// cd bits-review && npm install
// npm install [email protected] [email protected]
// Save the complete examples as src/App.svelte and src/style.css.
// src/main.js:
import {mount} from 'svelte';
import App from './App.svelte';
import './style.css';
mount(App, {target:document.querySelector('#app')});
// index.html: <div id="app"></div><script type="module" src="/src/main.js"></script>
// npm run dev

Projeniz İçin Bir İstem

Ajan İstemi
Sağlanan elle yürütülen arayüz incelemesini oluşturmak için Bits UI 2.19.5 ve Svelte 5 kullanın. Üç Accordion bölümündeki altı kontrolü koruyun, toplu işaretli/belirsiz durumunu bireysel yanıtlardan türetin ve bölümler daraltıldığında yanıtları saklayın. İnceleme için Dialog bileşenlerinin tüm parçalarını bir araya getirin; eksik incelemelerin açılmasına izin verirken altı maddenin tümü işaretlenene kadar Kaydet seçeneğini devre dışı bırakın. Her yanıt değişikliği kaydedilmiş geri bildirimi geçersiz kılsın; Tümünü temizle, başlangıçtaki bölüm genişletme durumunu geri yükleyip incelemeyi kapatsın. CSS dosyasının tamamını ekleyin ve sonuçları otomatik erişilebilirlik sertifikası olarak değil, okurun yerel olarak işaretlediği kontroller olarak tanımlayın.
05

Bits UI Tasarım Sistemi Kaynakları ve Kapsamı

Svelte 5.57.1 ile Bits UI 2.19.5. Özgün uygulama token'ları ve illüstrasyonlar. Bu, yerel durum kullanan elle doldurulan bir kontrol listesidir; otomatik erişilebilirlik denetimi veya sertifikası değildir.