Skip to content

Tasarım Sistemi (Polaris-flat)

Achidemy Polaris-flat tasarım sistemi — semantic color token'lar, tipografi, spacing, elevation ve component stilleri.

Bu sayfa Achidemy projesinin Polaris-flat tasarım sistemini açıklar. Tasarım sistemi Shopify Polaris felsefesinden esinlenmiş, monokromatik mavi paletli, kurumsal/modern bir görsel dil kullanır.


Tasarım sistemi bir eğitim platformunun otoriter, verimli ve açıklayıcı kişiliğini yansıtır. Arayüz “üretken sakinlik” hissi uyandırır — araçlar ihtiyaç duyulana kadar görünmez kalır, içerik her zaman odak noktasıdır.

Görsel stil: Corporate / Modern (Shopify Polaris etkili)


Renk stratejisi monokromatik mavi spektrumu kullanır. Tüm renkler semantic token’lar olarak tanımlanmıştır ve Tailwind CSS class’ları ile kullanılır.

TokenHexTailwind ClassKullanım
surface#f8fbffbg-surfaceSayfa arka planı
surface-container-lowest#ffffffbg-surface-container-lowestKartlar, input’lar
surface-container-low#f2f8ffbg-surface-container-lowAlt bölümler, header’lar
surface-container#e6f0ffbg-surface-containerOrta yoğunluklu alanlar
surface-container-high#dbeafebg-surface-container-highVurgulu alanlar, badge’ler
on-surface#0f172atext-on-surfaceAna metin rengi
on-surface-variant#334155text-on-surface-variantİkincil metin
inverse-surface#283044bg-inverse-surfaceKoyu arka plan (önizleme vb.)
inverse-on-surface#eef0fftext-inverse-on-surfaceKoyu arka plan üzeri metin
TokenHexTailwind ClassKullanım
primary#2b7fffbg-primary, text-primaryAna aksiyon rengi, butonlar
on-primary#fffffftext-on-primaryPrimary arka plan üzeri metin
primary-container#155dfcbg-primary-containerHover, vurgulu durumlar
secondary-container#dbeafebg-secondary-containerAçık mavi dolgu, badge’ler
on-secondary-container#0f172atext-on-secondary-containerSecondary container üzeri metin
TokenHexTailwind ClassKullanım
outline#8ec5ffborder-outlineGüçlü border
outline-variant#bedbffborder-outline-variantHafif border (kartlar, input’lar)
TokenHexTailwind ClassKullanım
error#ba1a1atext-error, bg-errorHata durumları
error-container#ffdad6bg-error-containerHata arka planı
on-error#fffffftext-on-errorError üzeri metin

Tüm metinler Inter font ailesi kullanır.

StilFont SizeWeightLine HeightKullanım
H132px7001.2Sayfa başlıkları
H224px6001.3Bölüm başlıkları
H320px6001.4Kart başlıkları
body-lg16px4001.6Ana içerik metni
body-md14px4001.5Genel metin
label-sm12px6001.0Etiketler, mikro-kopya

8px tabanlı lineer ölçek kullanılır:

TokenDeğerKullanım
xs4pxMikro ayarlamalar
sm8pxİç boşluklar
md16pxStandart padding
lg24pxBölüm aralıkları
xl32pxBüyük aralıklar
xxl64pxSayfa bölümleri
container-max1280pxMaksimum içerik genişliği
gutter20pxGrid gutter

Derinlik, tonal katmanlar ve ambient gölgeler ile iletilir:

  • Gölge yerine border: Kartlarda shadow-none ve border-outline-variant tercih edilir
  • Floating elementler: Dropdown/modal için shadow-lg (15-20px blur, %8 opacity)
  • Surface değişimi: Derinlik genellikle yüzey renk değişimiyle iletilir
// Kart örneği - gölge yerine border
<Card className="shadow-none border-outline-variant">
<CardContent>...</CardContent>
</Card>

TokenDeğerKullanım
sm0.25rem (4px)Küçük elementler
DEFAULT0.5rem (8px)Butonlar, input’lar
md0.75rem (12px)Kartlar
lg1rem (16px)Büyük kartlar, modal’lar
xl1.5rem (24px)Hero bölümleri
full9999pxPill şekli (badge, chip)

// Primary (varsayılan)
<Button>Kaydet</Button>
// Secondary
<Button variant="secondary">İptal</Button>
// Ghost (border ile)
<Button variant="ghost" className="border border-outline-variant">
Filtre
</Button>
// Destructive
<Button variant="destructive">Sil</Button>
<Card className="shadow-none border-outline-variant">
<CardHeader className="bg-surface-container-low border-b border-outline-variant">
<div className="flex items-center gap-3">
<div className="w-8 h-8 rounded-lg bg-secondary-container text-primary flex items-center justify-center">
<Icon size={16} aria-hidden="true" />
</div>
<h2 className="font-semibold text-on-surface">Başlık</h2>
</div>
</CardHeader>
<CardContent className="p-5">
<p className="text-on-surface-variant">İçerik</p>
</CardContent>
</Card>
// Default
<Badge>Yeni</Badge>
// Outline (semantic colors ile)
<Badge variant="outline" className="text-primary bg-secondary-container border-transparent">
Aktif
</Badge>
// Error
<Badge variant="outline" className="text-error bg-error-container border-transparent">
Hata
</Badge>
<Input
className="rounded-lg border-outline-variant focus:border-primary focus:ring-2 focus:ring-primary/20 h-11"
placeholder="Placeholder"
/>
<Switch
checked={isActive}
onCheckedChange={setIsActive}
aria-label="Toggle"
/>
// Aktif: mavi arka plan, beyaz thumb
// Pasif: beyaz arka plan, mavi thumb

  • aria-hidden: Dekoratif ikonlara aria-hidden="true" eklenir
  • aria-label: Interaktif ikonlara aria-label eklenir
  • Focus states: focus:ring-primary/20 ile görünür focus
  • Renk kontrastı: on-surface / surface-container-lowest kombinasyonu WCAG AA uyumlu
// İkon erişilebilirlik örneği
<FileText size={16} aria-hidden="true" /> // Dekoratif
<Button aria-label="Sil"><Trash2 size={16} /></Button> // İnteraktif

Tüm token’lar app/app.css dosyasında @theme inline bloğu içinde tanımlanır:

@theme inline {
--color-surface-container-lowest: #ffffff;
--color-surface-container-low: #f2f8ff;
--color-surface-container-high: #dbeafe;
--color-on-surface: #0f172a;
--color-on-surface-variant: #334155;
--color-primary: #2b7fff;
--color-on-primary: #ffffff;
--color-secondary-container: #dbeafe;
--color-outline-variant: #bedbff;
--color-error: #ba1a1a;
--color-error-container: #ffdad6;
/* ... diğer token'lar */
}

  • app/app.css — Global CSS ve token tanımları
  • registry/components/ui/* — Polaris-flat UI componentleri
  • .cursor/rules/design-system.mdc — Tasarım sistemi kuralları
  • Component Library — Tüm componentlerin listesi