پرتوپرتو

چیدمان

الگوهای چیدمان صفحات در پرتو — 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 محورند و در عرض‌های مختلف درست رفتار می‌کنند.

صفحات مرتبط