چیدمان
الگوهای چیدمان صفحات در پرتو — PageContainer، PageHeaderRoot و PageSection
الگوی صفحه از سه لایهٔ اصلی تشکیل شده که با هم چیدمانهای یکنواخت میسازند: PageContainer (کانتینر عرض)، PageHeaderRoot (سربرگ ترکیبی) و PageSection (بخشهای صفحه). این خانواده رویکردی ساختاریافته برای فاصلهگذاری یکنواخت، عرض حداکثر و سازماندهی محتوا میدهد. مرجع کامل props و اجزا در صفحهٔ کامپوننت داربست صفحه (Page*) است.
PageHeaderRoot یا PageHeader تخت؟
سیستم طراحی دو سربرگ دارد: PageHeader تخت و prop-محور (برای یک عنوان یکخطی با اقدامات) و PageHeaderRoot
ترکیبی (برای ساختار آیکون/خلاصه/اقدامات/breadcrumb/تب). این صفحه الگوهای صفحهٔ کامل را با PageHeaderRoot نشان
میدهد؛ برای عنوان ساده به PageHeader بروید.
نمونه بصری
پوشش انتشار
خلاصهٔ کمپین
دادههای ۳۰ روز گذشته
بهترین محتوا
۵ پست برتر دوره
بازخورد مخاطبان
انواع چیدمان
تنظیمات
صفحات تنظیمات برای مدیریت پیکربندی پروفایل و ترجیحات استفاده میشوند. از چیدمان تکستونی با عرض پیشفرض استفاده میکنند تا محتوا متمرکز و خوانا بماند.
- از
PageHeaderRootباsize="default"استفاده کنید - از
PageContainerباsize="default"استفاده کنید - از
PageSectionبرای تقسیم تنظیمات به گروههای منطقی استفاده کنید
<PageHeaderRoot size="default">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>تنظیمات حساب</PageHeaderTitle>
<PageHeaderDescription>اطلاعات پروفایل و تنظیمات امنیتی</PageHeaderDescription>
</PageHeaderSummary>
</PageHeaderMeta>
</PageHeaderRoot>
<PageContainer size="default">
<PageSection>
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>اطلاعات پروفایل</PageSectionTitle>
</PageSectionSummary>
</PageSectionMeta>
<PageSectionContent>{/* فرم تنظیمات */}</PageSectionContent>
</PageSection>
</PageContainer>لیست
صفحات لیست مجموعهای از آیتمها مانند اینفلوئنسرها، کمپینها یا گزارشها را نمایش میدهند و از عرض بزرگتر برای جایدادن جداول داده استفاده میکنند.
- از
PageHeaderRootباsize="large"وPageContainerباsize="large"استفاده کنید - اقدام اصلی را در
PageHeaderAsideبگذارید
<PageHeaderRoot size="large">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>اینفلوئنسرها</PageHeaderTitle>
</PageHeaderSummary>
<PageHeaderAside>
<Button>اینفلوئنسر جدید</Button>
</PageHeaderAside>
</PageHeaderMeta>
</PageHeaderRoot>
<PageContainer size="large">
<PageSection>
<PageSectionContent>{/* جدول یا گرید اینفلوئنسرها */}</PageSectionContent>
</PageSection>
</PageContainer>اقدامات جدول و لیست:
- با فیلتر یا جستجو: اقدامات را با فیلترها در یک ردیف تراز کنید؛ از
PageHeaderAsideبرای اقدامات فرعی استفاده نکنید. - بدون فیلتر: اقدام اصلی را به
PageHeaderAsideیاPageSectionAsideاضافه کنید.
داشبورد (صفحهٔ کامل)
داشبورد سوشال لیسنینگ و صفحات تحلیل به حداکثر فضا نیاز دارند. از size="full" استفاده کنید.
<PageHeaderRoot size="full">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>داشبورد سوشال لیسنینگ</PageHeaderTitle>
</PageHeaderSummary>
<PageHeaderAside>
<PeriodSelector />
</PageHeaderAside>
</PageHeaderMeta>
</PageHeaderRoot>
<PageContainer size="full">
<PageSection>
<PageSectionContent>{/* نمودارها و متریکها */}</PageSectionContent>
</PageSection>
</PageContainer>صفحات جزئیات
صفحات جزئیات محتوای متراکم چندبخشی (مثل پروفایل اینفلوئنسر) را نشان میدهند. از orientation="horizontal" استفاده کنید تا بخش به یک گرید ۱fr/۲fr تقسیم شود: ستون اول (باریک) خلاصه/متا، ستون دوم (پهن) محتوای اصلی.
<PageBreadcrumbs>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/influencers">اینفلوئنسرها</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbPage>علی احمدی</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</PageBreadcrumbs>
<PageHeaderRoot size="large">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>پروفایل اینفلوئنسر</PageHeaderTitle>
</PageHeaderSummary>
</PageHeaderMeta>
</PageHeaderRoot>
<PageContainer size="large">
<PageSection orientation="horizontal">
{/* ستون باریک (1fr): خلاصه و پلتفرمها */}
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>خلاصهٔ پروفایل</PageSectionTitle>
<PageSectionDescription>اطلاعات کلی و پلتفرمها</PageSectionDescription>
</PageSectionSummary>
</PageSectionMeta>
{/* ستون پهن (2fr): محتوای اصلی — نمودارها و آمار */}
<PageSectionContent>{/* نمودارها و آمار */}</PageSectionContent>
</PageSection>
</PageContainer>کامپوننتها
PageContainer
کانتینر اصلی که عرض حداکثر و padding افقی یکنواخت را بر اساس variant اندازه میدهد و context @container است.
<PageContainer size="small" | "default" | "large" | "full">{/* محتوا */}</PageContainer>| size | عرض حداکثر | کاربرد |
|---|---|---|
small | ۷۶۸px | فرمهای باریک |
default | ۱۲۰۰px | صفحات تنظیمات و فرمها |
large | ۱۶۰۰px | لیستها، جداول، جزئیات |
full | بدون حد | داشبورد، ویرایشگرهای صفحهٔ کامل |
PageHeaderRoot
کامپوننت ترکیبی سربرگ. size را از طریق context به اجزای فرزند میدهد و هر جزء خودش را در PageContainer مناسب میپیچد — پس آن را داخل PageContainer تودرتو نکنید.
<PageHeaderRoot size="default">
<PageHeaderMeta>
<PageHeaderSummary>
<PageHeaderTitle>عنوان صفحه</PageHeaderTitle>
<PageHeaderDescription>توضیح صفحه</PageHeaderDescription>
</PageHeaderSummary>
<PageHeaderAside>
<Button>اقدام اصلی</Button>
</PageHeaderAside>
</PageHeaderMeta>
</PageHeaderRoot>برای breadcrumb و تبهای ناوبریِ تمامعرض، از PageBreadcrumbs و PageNav استفاده کنید که بالای سربرگ مینشینند، نه داخل آن.
PageSection
کامپوننت ترکیبی برای سازماندهی محتوای صفحه به بخشهای متمایز. عنوان/توضیح در PageSectionSummary (داخل PageSectionMeta) و بدنه در PageSectionContent میرود.
<PageSection orientation="vertical" | "horizontal">
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>عنوان بخش</PageSectionTitle>
<PageSectionDescription>توضیح بخش</PageSectionDescription>
</PageSectionSummary>
<PageSectionAside>
<Button variant="outline">اقدام بخش</Button>
</PageSectionAside>
</PageSectionMeta>
<PageSectionContent>{/* محتوای اصلی — فرم، جدول، گرید */}</PageSectionContent>
</PageSection>محتوای اصلی بخش کجا میرود؟
محتوای اصلی بخش در PageSectionContent میرود؛ بخشها اسلات جداگانهای برای محتوای «اصلی» ندارند، و
PageSectionAside یک خوشهٔ اقدامات است نه یک ستون. برای چیدمان دو ستونی از orientation="horizontal" استفاده
کنید (ستون اول PageSectionMeta، ستون دوم PageSectionContent).
بهترین روشها + دامهای رایج
- یکنواختی: همیشه از کامپوننتهای صفحه استفاده کنید — فاصلهگذاری دستی نگذارید.
- سلسلهمراتب: اندازهٔ
PageContainerوPageHeaderRootباید با هم مطابقت داشته باشند. - تودرتو نکنید:
PageHeaderRootرا داخلPageContainerقرار ندهید — خودش را میپیچد؛ اماPageSectionها داخل یکPageContainerمیروند. - محتوای اصلی در
PageSectionContent: بخشها اسلات محتوای «اصلی» جداگانه ندارند — همهٔ محتوا درPageSectionContentمیرود. - RTL: همهٔ کامپوننتها از CSS Logical Properties استفاده میکنند و خودکار RTL-صحیحاند.
- واکنشگرایی: چیدمانها container-query محورند و در عرضهای مختلف درست رفتار میکنند.
صفحات مرتبط
- داربست صفحه (Page*) — مرجع کامل props و اجزای این خانواده
- PageHeader — سربرگ تخت و prop-محور برای عنوانهای ساده
- صفحهٔ تحلیل — نمونهٔ کامل یک صفحهٔ تحلیل با این خانواده
- ترکیب داشبورد — الگوی چیدمان داشبورد