Tipografi
Tailwind v4 paketi, Tailwind’in varsayılan font-sans sınıfını (ui-sans-serif, system-ui, sans-serif, ...) kullanır. CSS font-family özelliği kalıtım yoluyla geçtiği için, seçicinin yazı tipini bir fontFamily stiline sahip bir kapsayıcı ile sarmalayarak geçersiz kılabilirsiniz. Kapsayıcının yazı tipi, tüm seçici öğelerine kademeli olarak uygulanır.
Yazı Tipi Ailesi
Yazı tiplerini değiştirmek için seçiciyi sarın ve sarmalayıcı üzerinde fontFamily ayarlayın:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
const fonts = { system: "inherit", serif: "'Georgia', 'Times New Roman', serif", mono: "'JetBrains Mono', 'Fira Code', monospace",};
type FontName = keyof typeof fonts;
function CompoundCustomFont() { const [value, setValue] = useState<Date | null>(null); const [font, setFont] = useState<FontName>("system");
return ( <div> <div style={{ display: "flex", gap: 8, marginBottom: 16 }}> {(Object.keys(fonts) as FontName[]).map((name) => ( <button key={name} onClick={() => setFont(name)} style={{ padding: "4px 12px", borderRadius: 4, border: `1px solid ${font === name ? "#3b82f6" : "#d1d5db"}`, background: font === name ? "#eff6ff" : "#fff", color: font === name ? "#3b82f6" : "#374151", cursor: "pointer", fontSize: 13, fontFamily: fonts[name], textTransform: "capitalize", }} > {name} </button> ))} </div> <div style={{ fontFamily: fonts[font] }}> <DatePicker value={value} onChange={setValue} inline /> </div> </div> );}Web Yazı Tiplerini Kullanma (Noto Sans)
Çalışma zamanında bir web yazı tipi yükleyin ve bir sarmalayıcı aracılığıyla uygulayın. Bu örnek, Google Fonts’tan Noto Sans yazı tipini yükler:
import { useState, useEffect } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
function CompoundNotoSans() { const [value, setValue] = useState<Date | null>(null);
useEffect(() => { if (!document.getElementById("noto-sans-font")) { const link = document.createElement("link"); link.id = "noto-sans-font"; link.rel = "stylesheet"; link.href = "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;600;700&display=swap"; document.head.appendChild(link); } }, []);
return ( <div style={{ fontFamily: '"Noto Sans", sans-serif' }}> <DatePicker value={value} onChange={setValue} inline /> </div> );}Gerçek bir projede, yazı tipini çalışma zamanında enjekte etmek yerine HTML’inizin <head> bölümündeki bir <link> etiketi aracılığıyla veya CSS paketleyiciniz üzerinden yükleyin. Buradaki useEffect yaklaşımı yalnızca tanıtım amaçlıdır.
Web Yazı Tipi Galerisi
Tipografinin seçicinin görünümünü ne kadar çarpıcı bir şekilde değiştirdiğini görmek için farklı web yazı tiplerini karşılaştırın. Aşağıdaki tüm yazı tipleri çok dilli işlemeyi (Latin, CJK, Korece) destekler.
import { useState, useEffect } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
const WEB_FONTS = [ { name: "Noto Sans", family: '"Noto Sans", sans-serif' }, { name: "Noto Serif", family: '"Noto Serif", serif' }, { name: "IBM Plex Sans", family: '"IBM Plex Sans", sans-serif' }, { name: "Roboto Slab", family: '"Roboto Slab", serif' },];
const FONT_URL = "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Noto+Sans:wght@400;500;600;700&family=Noto+Serif:wght@400;500;600;700&family=Roboto+Slab:wght@400;500;600;700&display=swap";
function CompoundWebFonts() { const [value, setValue] = useState<Date | null>(null); const [active, setActive] = useState(0);
useEffect(() => { if (!document.getElementById("web-fonts-link")) { const link = document.createElement("link"); link.id = "web-fonts-link"; link.rel = "stylesheet"; link.href = FONT_URL; document.head.appendChild(link); } }, []);
return ( <div> <div style={{ display: "flex", gap: 6, marginBottom: 12, flexWrap: "wrap" }}> {WEB_FONTS.map((f, i) => ( <button key={f.name} onClick={() => setActive(i)} style={{ padding: "6px 14px", border: `1px solid ${active === i ? "#3b82f6" : "#d1d5db"}`, borderRadius: 6, background: active === i ? "#eff6ff" : "#fff", color: active === i ? "#3b82f6" : "#374151", cursor: "pointer", fontSize: 13, fontFamily: f.family, }} > {f.name} </button> ))} </div> <div style={{ fontFamily: WEB_FONTS[active].family }}> <DatePicker value={value} onChange={setValue} inline /> </div> </div> );}