Ayarlar sayfaları
Bir ayarlar sayfası, kategorilerden oluşan bir SidebarNav ile bölümlerden oluşan bir kolondur. Her bölümün solunda bir başlık ve tek cümlelik açıklama, sağında kontroller durur; dar ekranlarda tek kolona iner.
<form onChange={() => setDirty(true)} onSubmit={save}>
<Stack gap={8}>
<Section title="Profil" description="Yorumlarda ve üye listesinde görünür.">
<Field label="Görünen ad"><Input name="name" defaultValue="Ada Lovelace" /></Field>
<Field label="Saat dilimi"><NativeSelect name="tz">…</NativeSelect></Field>
</Section>
<Separator />
<Section title="Bildirimler" description="E-posta en fazla saatte bir gönderilir.">
<Switch name="mentions" defaultChecked>Bahsetmeler ve yanıtlar</Switch>
</Section>
<Separator />
<Stack direction="row" justify="end" gap={2} align="center">
{dirty ? <Text size="sm" tone="muted">Kaydedilmemiş değişiklikler var</Text> : null}
<Button type="submit" variant="primary" disabled={!dirty} loading={saving}>Değişiklikleri kaydet</Button>
</Stack>
</Stack>
</form>Kaydetme modeli
Her sayfa için birini seç ve ona bağlı kal:
- Açık kaydetme (yukarıdaki örnek): metin alanları ve başkalarını etkileyen her şey için. Sonda tek bir Kaydet butonu olur, bir şey değişene kadar devre dışı kalır, yanında "Kaydedilmemiş değişiklikler var" yazar. Kaydı bir toast ile onayla.
- Anında uygulama: yalnızca switch'lerden oluşan sayfalar için (bildirim tercihleri, feature flag'ler). Her
Switchdeğiştiğinde kaydeder; hata olursa bir toast gösterir ve switch'i eski haline döndürür. Kaydet butonu olmaz.
İkisini asla aynı bölümde karıştırma: kullanıcı hangi değişikliklerin kaydedildiğini anlayamaz.
Yapı
- Veri modeline göre değil, kullanıcıların aradığı şeye göre grupla: Hesap, Çalışma alanı, Faturalandırma, Güvenlik.
SidebarNavmevcut kategoriyiactiveile işaretler; bu daaria-current="page"atar. Her kategori kendi route'udur.- Bölümler
Separatorile ayrılır, başlıklarHeading size="sm", açıklamalar soluk (muted) metin olur. - Etiketleri kısa tut; açıklamayı
Field'ındescription'ına ya da Switch'in etiketine koy.
Tehlikeli bölge
Yıkıcı hesap aksiyonları en sona, kendi kenarlıklı kartına konur ve onay açan bir danger butonla tetiklenir; bkz. Onaylar.