tasarım, kodda biter.
Arayüzü baştan çalışan bileşenler olarak kuruyoruz; bekleme, hata ve başarı durumları dahil. Kullanıcı bastığı her şeyin karşılığını görür.
- Tasarım doğrudan kodda
- Her bileşenin bütün durumları
- Ürününüzle büyüyen tasarım sistemi
src components CheckoutButton.tsx
- 1export function CheckoutButton({ onPay }: Props) {
- 2 const t = useTranslations("checkout");
- 3 const [status, setStatus] = useState<Status>("idle");
- 4
- 5 return (
- 6 <motion.button
- 7 whileTap={{ scale: 0.96 }}
- 8 transition={SPRING_PRESS}
- 9 className="h-12 gap-2 rounded-2xl px-6"
- 10 disabled={status === "processing"}
- 11 onClick={() => submitPayment(onPay, setStatus)}
- 12 >
- 13 {status === "processing" && <Spinner />}
- 14 {t(status === "success" ? "paid" : "pay")}
- 15 </motion.button>
- 16 );
- 17}
- 18// Spacing tokens: card 24, inset 16, button height 48.
- 19const SPRING_PRESS: Transition = {
- 20 type: "spring", stiffness: 420, damping: 26,
- 21};
TERMINALPROBLEMSOUTPUT
PASSCheckoutButton.test.tsx·6 passedidle, processing, success, keyboard
Önizlemeidleprocessingsuccess
- Ara toplam
- ₺4.990
- Kargo
- Ücretsiz
- Toplam
- ₺4.990
Boşluk ölçüleritokens.css
- space.card24
- space.inset16
- size.control48
dokunun, hissedin.
Aşağıdaki altı parça gerçekten çalışıyor: üzerine gelin, basın, sürükleyin. Kullanıcı bir ürünün özenle yapıldığını çoğu zaman bu küçük anlarda fark eder.
01Mıknatıs buton
İmleci yaklaştırınuseSpring(260, 18)
02Anahtar
TıklayınBildirimler açık
role="switch" · spring(600, 32)
03Beğeni
Kalbe basınkeyframes [1, 1.35, 0.9, 1]
04Sürükle, sırala
Satırları taşıyın- Tasarım incelemesi1
- Müşteri görüşmesi2
- Sürüm notları3
- Haftalık rapor4
Reorder.Group · ↑ ↓ keys
05Kaydırıcı
Sürükleyinrole="slider" · ← → keys
06Kopyala
TıklayınDavet kodunuz
navigator.clipboard
aynı buton, iki his.
İki sahnede de aynı sepete ekle butonu var. Solda hareket hiç ayarlanmamış, sağda ayarlanmış. Butonlara basın, değerleri değiştirin, farkı görün.
AyarsızBir karede beliriyor
transition: noneKare karems
Hareket eğrisiduration: 0
AyarlanmışYaklaşıp yerine oturuyor
transition: springKare karems
Hareket eğrisispring(320, 18)
bir kez karar verin, her yerde geçerli olsun.
Renk, köşe ve yoğunluk birer değişken. Birini değiştirdiğinizde bütün ürün aynı anda güncellenir. Soldan seçin, sağda izleyin.
Vurgu rengiMor
Köşeler
Yoğunluk
:root { --color-accent: #6165ed; --color-accent-hover: #5559d1; --color-accent-subtle: #6165ed1f; --color-on-accent: #ffffff; --radius-md: 12px; --space-inset: 16px; --control-height: 48px; --row-height: 42px;}
TASARIM
ürününüz de böyle hissettirsin.
Mevcut arayüzünüzü ya da yeni fikrinizi anlatın. Nereden başlayacağımızı birlikte belirleyelim.