تمها: روشن، تیره، سیستم و ۶ پالت
حالت (روشن/تیره)، پالت رنگی و تراکم سه محور مستقلاند؛ هر ترکیب پشتیبانی میشود. از نوار بالای همین صفحه امتحان کنید.
<html data-theme="light | dark | system"
data-palette="lajvard | firuzeh | zomorrod | pesteh | zaferan | narenji | anar | sadaf | banafsh | morakkab"
data-density="compact | comfortable | touch">تم محدود به یک ناحیه
روشن · فیروزه
کارت داخل ناحیه روشن
تیره · زعفران
کارت داخل ناحیه تیره
تیره · پسته
هر ناحیه تم خودش را دارد
<div ui="grid" style="--bana-grid-min:14rem">
<section data-theme="light" data-palette="firuzeh" ui="card"><header><h4>روشن · فیروزه</h4></header><p>کارت داخل ناحیه روشن</p><footer><button ui="primary">اقدام</button></footer></section>
<section data-theme="dark" data-palette="zaferan" ui="card"><header><h4>تیره · زعفران</h4></header><p>کارت داخل ناحیه تیره</p><footer><button ui="primary">اقدام</button></footer></section>
<section data-theme="dark" data-palette="pesteh" ui="card"><header><h4>تیره · پسته</h4></header><p>هر ناحیه تم خودش را دارد</p><footer><button ui="primary">اقدام</button></footer></section>
</div>
برای ناحیهای با تم مستقل، data-theme و data-palette را با هم روی همان عنصر بگذارید. data-palette بهتنهایی فقط روی <html> اثر میگذارد.
تغییر با JavaScript
Bana.theme.setMode("dark"); // light | dark | system
Bana.theme.setPalette("firuzeh");
Bana.theme.setDensity("compact");
Bana.theme.get(); // { mode, palette, density, resolved }
document.addEventListener("bana:theme-change", (e) => console.log(e.detail));تغییر تم از View Transitions استفاده میکند (در صورت پشتیبانی مرورگر و نبود prefers-reduced-motion) و ترجیح کاربر در localStorage ذخیره میشود. فایل bana-init.js همان ترجیح را پیش از اولین رندر اعمال میکند.
ساخت پالت اختصاصی خودتان
هر پالت فقط یک مجموعه از ۱۱ متغیر --bana-brand-* است. کافی است آنها را برای یک نام جدید تعریف کنید:
[data-palette="mint"] {
--bana-brand-50: oklch(0.975 0.015 170);
--bana-brand-100: oklch(0.945 0.03 170);
--bana-brand-200: oklch(0.895 0.06 170);
--bana-brand-300: oklch(0.815 0.1 170);
--bana-brand-400: oklch(0.715 0.13 170);
--bana-brand-500: oklch(0.615 0.14 170);
--bana-brand-600: oklch(0.52 0.13 170); /* accent در حالت روشن */
--bana-brand-700: oklch(0.43 0.11 170);
--bana-brand-800: oklch(0.33 0.09 170);
--bana-brand-900: oklch(0.24 0.06 170);
--bana-brand-950: oklch(0.17 0.04 170);
}کنتراست را خودتان بسنجید
پلههای ۶۰۰ و ۷۰۰ باید روی سطح روشن، و ۳۰۰ و ۴۰۰ روی سطح تیره، حداقل ۴٫۵:۱ بدهند. برای پالتهای داخلی این کار با
npm test خودکار انجام میشود؛ برای پالت شما باید ابزار سنجش کنتراست اجرا کنید.