AppBarv1.0.0
نوار بالای صفحه: یک ردیفِ ثابت با سه ناحیه؛ ابتدا برای دکمهٔ برگشت/منو یا لوگو، عنوان، و انتها برای کنشها. برخلاف Toolbar که برای گروهی از دکمهٔ همردیف با ناوبری فلشی است، AppBar فقط چیدمانِ سرصفحه را میدهد؛ چیزی شبیه هدرِ اپهای موبایل.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
npx digdesign@latest add https://docs.digdesign.ir/r/app-bar.jsonpnpm dlx digdesign@latest add https://docs.digdesign.ir/r/app-bar.jsonyarn dlx digdesign@latest add https://docs.digdesign.ir/r/app-bar.jsonbunx --bun digdesign@latest add https://docs.digdesign.ir/r/app-bar.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
استفاده
import {
AppBar,
AppBarLeading,
AppBarTitle,
AppBarActions,
} from "@/components/ui/app-bar"
<AppBar sticky>
<AppBarLeading>…</AppBarLeading>
<AppBarTitle>عنوان صفحه</AppBarTitle>
<AppBarActions>…</AppBarActions>
</AppBar>این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
ترکیب اجزا
دسترسپذیری
- خودِ AppBar یک header معنایی است؛ اگر صفحه چند header تودرتو دارد (مثل یک AppBar داخل کارت)، role را دستی به banner یا group تغییر بدهید تا فقط یک landmark banner واقعی در صفحه بماند.
- AppBarTitle یک h1 است. برای صفحهای که سرتیترِ دیگری هم دارد (مثل محتوای زیرش)، سطح h را با as یا override هماهنگ کنید تا ساختار عنوانها یکی نپرد.
- دکمههای داخل Leading/Actions که فقط آیکون دارند حتماً aria-label بگیرند؛ خودِ AppBar چیزی برایشان اضافه نمیکند.
مرجع API
AppBar
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| variant | "bordered" | "elevated" | "transparent" | "bordered" | ظاهر لبهٔ پایین: bordered خط ظریف، elevated سایه، transparent هیچکدام. |
| sticky | boolean | false | به بالای ظرفِ اسکرولشونده (یا صفحه) بچسبد. |
AppBarTitle
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| centered | boolean | false | با absolute دقیقاً وسطِ کل نوار مینشیند، نه وسطِ فضای بینِ ابتدا/انتها. |
| subtitle | React.ReactNode | — | توضیحِ کوتاهِ زیرِ عنوان؛ هر دو جداگانه truncate میشوند. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک در دست کار است.
نمونهها
نوار بالای پنل مدیریت
در عرض کم موجودی و کنشهای فرعی پنهان میشوند و دکمهٔ «بیشتر» جایشان را میگیرد. این کار با container query انجام میشود، پس داخل پنل باریک هم درست کار میکند. عدد اعلان در aria-label دکمه هم هست.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
عنوان با زیرعنوان
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
عنوان دقیقاً وسطچین
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
فقط عنوان (بدون کنش)
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
بدون خط جداکننده (Transparent)
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| نوار بالای پنل مدیریت | داشبورد و پنل ادمین با مسیر صفحه، موجودی، اعلانها و حساب کاربر |
| عنوان با زیرعنوان | گفتگو، پروژه یا هر صفحهای که وضعیت یا توضیح کوتاهی زیر عنوان لازم دارد |
| عنوان دقیقاً وسطچین | صفحهای که هر دو طرف (برگشت + یک کنش) دارد و عنوان باید کاملاً وسطِ نوار بماند |
| فقط عنوان (بدون کنش) | صفحهای مثل تنظیمات که فقط راه برگشت لازم دارد، نه کنش دیگری |
| بدون خط جداکننده (Transparent) | روی یک پسزمینهٔ تصویری یا هدرِ رنگی که خودش مرز بصری دارد |