Layout — چیدمان و پرایمیتیوها
این صفحه کامپوننت جداگانه نیست؛ گروه Layout لایهٔ ۲ (Primitives) است. پرایمیتیوها ساختار معنایی و چیدمان را میدهند و هیچ هویت بصری ندارند: فاصلهها فقط از پلههای کپی کد میآیند، رنگها از توکنهای معنایی، و تنظیمات هر پرایمیتیو با صفتهای کپی کد نوشته میشوند. هیچ پرایمیتیوی کلاس کمکی دوم ندارد.
وضعیت: beta · لایه: ۲ (کپی کد) · کد: کپی کد
import { Box, Stack, Inline, Cluster, Grid, Container, Surface, Text, Heading, Separator, VisuallyHidden, FocusRing, Portal, Slot, GradientBorder, Icon } from '@tokapps/primitives';نمونهٔ زنده
این صفحه نمونهٔ زنده ندارد؛ زندهسازی برای مرحلهٔ بعد گذاشته شده است. نمونههای زیر فقط کد قابل کپی هستند.
کد قابل کپی
یک صفحهٔ ساده با همهٔ پرایمیتیوهای چیدمان اصلی:
import { Container, Stack, Inline, Grid, Surface, Heading, Text } from '@tokapps/primitives';export function ProjectOverview() { return ( <Container size="3xl"> <Stack gap={4}> <Heading level={1}>پروژهٔ Tokapps</Heading> <Text variant="lead">خلاصهٔ وضعیت پروژه در یک نگاه</Text> <Inline gap={2} justify="between"> <Text variant="small">بهروزرسانی: امروز</Text> <Text variant="small" tone="success">فعال</Text> </Inline> <Grid min={14} gap={3}> <Surface padding={4} elevation={1} radius="lg"> <Text>کارت اول</Text> </Surface> <Surface padding={4} elevation={1} radius="lg"> <Text>کارت دوم</Text> </Surface> </Grid> </Stack> </Container> );}همهٔ پیکربندیها
همهٔ پرایمیتیوها پراپ کپی کد (تگ جایگزین) و صفتهای HTML معمول را میپذیرند، مگر در جدول ذکر شده باشد. مقدار کپی کد و کپی کد فقط از مجموعهٔ کپی کد است: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد که هر کدام به کپی کد نگاشت میشود. مقدار خام پذیرفته نمیشود.
Box
ظرف پایه؛ فقط عنصر معنایی درست را انتخاب میکند و هیچ استایلی ندارد.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | تگ HTML یا کامپوننت جایگزین. |
import { Box } from '@tokapps/primitives';<Box as="section" aria-labelledby="pricing"> <h2 id="pricing">قیمتها</h2></Box>Stack
چیدمان عمودی با فاصلهٔ یکنواخت.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | فاصله بین فرزندها. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | — | همترازی افقی فرزندها (کپی کد). |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Stack, Text } from '@tokapps/primitives';<Stack gap={2} align="start"> <Text>خط اول</Text> <Text>خط دوم</Text></Stack>Inline
چیدمان افقی؛ جهت را از کپی کد صفحه میگیرد، پس در RTL خودکار معکوس میشود.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | فاصله بین فرزندها. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | — | همترازی عمودی (کپی کد). |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | — | توزیع افقی (کپی کد). |
| کپی کد | کپی کد | کپی کد | کپی کد یعنی خطشکنی غیرفعال. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Inline, Text } from '@tokapps/primitives';<Inline gap={2} justify="between" wrap={false}> <Text variant="small">نام</Text> <Text variant="small">وضعیت</Text></Inline>Cluster
گروه فشرده از برچسبها یا تگها که به خط بعدی میشکند. همیشه خطشکن است و همترازی عمودی مرکز دارد.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | فاصله بین آیتمها. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Cluster } from '@tokapps/primitives';<Cluster gap={1}> <span>طراحی</span> <span>توکن</span> <span>دسترسپذیری</span></Cluster>Grid
شبکهٔ واکنشگرا بدون breakpoint. هر ستون حداقل کپی کد rem عرض دارد و ستونها خودکار تعداد میشوند.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | فاصله بین سلولها. |
| کپی کد | کپی کد (rem) | کپی کد rem (از CSS) | کمینه عرض هر ستون. اگر داده نشود، مقدار پیشفرض CSS به کار میرود. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Grid, Surface, Text } from '@tokapps/primitives';<Grid min={12} gap={4}> <Surface padding={3}><Text>الف</Text></Surface> <Surface padding={3}><Text>ب</Text></Surface> <Surface padding={3}><Text>ج</Text></Surface></Grid>Container
عرض خواندنی و وسطچین با فاصلهٔ افقی ثابت.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | کپی کد ≈ ۳۶rem، کپی کد ≈ ۴۸rem، کپی کد ≈ ۶۴rem، کپی کد ≈ ۷۲rem، کپی کد بدون محدودیت. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Container, Text } from '@tokapps/primitives';<Container size="5xl"> <Text>متن با عرض خواندنی</Text></Container>Surface
سطح با ماده و برجستگی. ماده کپی کد در «کاهش شفافیت» و «کنتراست بالا» خودکار مات میشود.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | سطح عادی، فرورفته، تأکیدی (زمینهٔ کمرنگ) یا شیشهای با blur. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | — | سایهٔ برجستگی. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | — (از CSS: کپی کد) | شعاع گوشه. |
| کپی کد | کپی کد | — | فاصلهٔ داخلی (کپی کد). |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { Surface, Text } from '@tokapps/primitives';<Surface material="accent" elevation={2} radius="md" padding={4}> <Text>یادداشت مهم</Text></Surface>Text
متن بدنه با نقش معنایی و اندازهٔ ظاهری.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | کپی کد قلم مونو و جهت کپی کد دارد؛ کپی کد از حداقل اندازهٔ فارسی پیروی میکند. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | — | رنگ معنایی. کپی کد هیچ استایل اضافهای ندارد. |
| کپی کد | کپی کد | کپی کد | ارقام همعرض (کپی کد). |
| کپی کد | کپی کد | کپی کد | تگ جایگزین، مثلاً کپی کد. |
import { Text } from '@tokapps/primitives';<Text variant="small" tone="danger" numeric> ۳ مورد باقیمانده</Text>Heading
سطح معنایی (کپی کد) از اندازهٔ ظاهری (کپی کد) جداست.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | تگ کپی کد تا کپی کد. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | اندازهٔ ظاهری؛ با کپی کد عنوان بزرگ صفحه. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین، وقتی سطح معنایی جدا از تگ باشد. |
import { Heading } from '@tokapps/primitives';<Heading level={2} size="h1">عنوان بخش با ظاهر بزرگ</Heading>Divider و Separator
جداکنندهٔ افقی یا عمودی. کپی کد همان کپی کد است (نام مستعار).
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد | کپی کد | جهت خط. |
| کپی کد | کپی کد | — | کلاس اضافه برای چیدمان. |
import { Separator } from '@tokapps/primitives';<Separator orientation="horizontal" />VisuallyHidden
متنی که برای صفحهخوان قابل خواندن است و روی صفحه دیده نمیشود.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { VisuallyHidden } from '@tokapps/primitives';<button type="button"> <span aria-hidden="true">×</span> <VisuallyHidden>بستن</VisuallyHidden></button>FocusRing
حلقهٔ فوکوس روی ظرف، وقتی فرزندش فوکوس دارد.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { FocusRing } from '@tokapps/primitives';<FocusRing> <input type="text" aria-label="جستجو" /></FocusRing>Portal
رندر بیرون از درخت DOM والد، برای overlay و tooltip. فقط در مرورگر رندر میشود؛ در اولین رندر و SSR چیزی نمیگذارد.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — | محتوای منتقلشده. |
| کپی کد | کپی کد | کپی کد | مقصد رندر. |
import { Portal, Surface, Text } from '@tokapps/primitives';<Portal> <Surface elevation="float" padding={3}> <Text>این روی همه چیز نمایش داده میشود</Text> </Surface></Portal>Slot
الگوی کپی کد: خودش رندر نمیکند و ویژگیها و رویدادهایش را روی تنها فرزند ادغام میکند تا مصرفکننده تگ نهایی (مثلاً کپی کد یا لینک روتر) را تعیین کند. رویدادها زنجیره میشوند (اول فرزند، بعد Slot)؛ کپی کد و کپی کد ادغام میشوند. اگر فرزند عنصر معتبر نباشد، چیزی رندر نمیشود.
import { Slot } from '@tokapps/primitives';<Slot className="tds-link" data-track="hero"> <a href="/pricing">قیمتها</a></Slot>GradientBorder
تنها راه مجاز گرادیان در TDS: حاشیهٔ کنترلشده روی عناصر با اهمیت بالا. حداکثر یکی در هر نما، و هرگز تنها نشانهٔ وضعیت نیست؛ همیشه با آیکون و برچسب همراه است.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | کپی کد یعنی کپی کد، یا کپی کد اگر کپی کد درست باشد. |
| کپی کد | کپی کد | — | چرخش حاشیه. با کپی کد و کلید کاهش حرکت متوقف میشود. |
| کپی کد | کپی کد · کپی کد | کپی کد | شدت حاشیه. |
| کپی کد | کپی کد | کپی کد | تگ جایگزین. |
import { GradientBorder, Text } from '@tokapps/primitives';<GradientBorder variant="funding" intensity="subtle"> <Text>کمپین سرمایهگذاری فعال است</Text></GradientBorder>Icon (بازصادرشده از کپی کد)
تنها راه نمایش آیکون در TDS. فقط نام معنایی مینویسید؛ منبع بصری را registry و تم تعیین میکنند.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — | نام معنایی ثبتشده در registry. |
| کپی کد | کپی کد | — | آیکون اختصاصی ساختهشده با کپی کد؛ جایگزین کپی کد. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | کپی کد همقد متن است؛ کپی کد هیچ قاعدهٔ اندازهای ندارد. |
| کپی کد | کپی کد | — | نام دسترسی؛ با آن کپی کد و بدون آن تزئینی (کپی کد). |
| کپی کد | کپی کد | کپی کد | در RTL آینه میشود (پیکان، بازگشت، ارسال). |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | — | انیمیشن آیکون. |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد یعنی با hover یا فوکوس والد فعال شود. |
همراه کپی کد دو صادرات دیگر هم هست: کپی کد (جابهجایی نرم بین دو آیکون یک کنترل، مثل پخش و مکث) و کپی کد برای آیکون SVG اختصاصی با شبکهٔ ۲۴×۲۴.
import { Icon } from '@tokapps/primitives';<Icon name="back" mirror label="بازگشت" /><Icon name="status.loading" animate="spin" size="sm" />ساختار و اسلاتها
| پرایمیتیو | ریشهٔ DOM | صفت شناسه | نشانههای تنظیم |
|---|---|---|---|
| کپی کد | کپی کد (یا کپی کد) | کپی کد | — |
| کپی کد | کپی کد | کپی کد | کپی کد |
| کپی کد | کپی کد | کپی کد | کپی کد، کپی کد، کپی کد |
| کپی کد | کپی کد | کپی کد | — |
| کپی کد | کپی کد | کپی کد | کپی کد |
| کپی کد | کپی کد | کپی کد | کپی کد |
| کپی کد | کپی کد | کپی کد | کپی کد، کپی کد، کپی کد، کپی کد |
| کپی کد | کپی کد | کپی کد | کپی کد، کپی کد، کپی کد |
| کپی کد | کپی کد–کپی کد | کپی کد | کپی کد |
| کپی کد / کپی کد | کپی کد با کپی کد | کپی کد | کپی کد |
| کپی کد | کپی کد | کپی کد | — |
| کپی کد | کپی کد | کپی کد | — |
| کپی کد | فرزندان در کپی کد | — | — |
| کپی کد | فرزند واحد (ادغامشده) | — | — |
| کپی کد | کپی کد (یا کپی کد) | کپی کد | کپی کد، کپی کد، کپی کد |
| کپی کد | کپی کد | کپی کد | کپی کد، کپی کد، کپی کد، کپی کد |
بنیان ثابت: ساختار ریشه، صفت کپی کد، نگاشت فاصلهها به کپی کد، و قرارداد کپی کد هر پرایمیتیو. قابل تغییر: مقدار توکنها در تم و خود کپی کد که فقط از طریق پراپها ست میشوند.
همهٔ حالتها
| صفت | مقادیر | کجا |
|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد، کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد (فقط وقتی کپی کد) | کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد (برای کپی کد خالی میماند) | کپی کد؛ کپی کد با کپی کد · کپی کد · کپی کد · کپی کد · کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | خالی (وقتی کپی کد داده شود) | کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد (کپی کد)؛ گرادیانها (کپی کد) | کپی کد، کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | حضور صفت (وقتی کپی کد درست باشد) | کپی کد |
| کپی کد | کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد · کپی کد | کپی کد |
| کپی کد | حضور صفت | کپی کد |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد |
| کپی کد | کپی کد · کپی کد | کپی کد (وقتی کپی کد باشد) |
پرایمیتیوها حالت hover، pressed، خطا، غیرفعال یا بارگذاری ندارند. تنها حالت تعاملی کپی کد است که با فوکوس (کپی کد) حلقه نشان میدهد.
تغییرات مجاز برای توسعهدهنده
- Stack و Inline: کپی کد از کپی کد، کپی کد از کپی کد · کپی کد · کپی کد · کپی کد، و در کپی کد کپی کد از کپی کد · کپی کد · کپی کد · کپی کد.
- Grid: کپی کد و کپی کد (rem).
- Container: کپی کد از کپی کد · کپی کد · کپی کد · کپی کد · کپی کد.
- Surface: کپی کد از کپی کد · کپی کد · کپی کد · کپی کد؛ کپی کد؛ کپی کد؛ کپی کد.
- Text: کپی کد از کپی کد · کپی کد · کپی کد · کپی کد · کپی کد؛ کپی کد از کپی کد · کپی کد · کپی کد · کپی کد · کپی کد؛ کپی کد.
- Heading: کپی کد از ۱ تا ۴؛ کپی کد از کپی کد · کپی کد تا کپی کد؛ کپی کد برای جدا کردن تگ از سطح.
- Divider: کپی کد از کپی کد · کپی کد.
- GradientBorder: کپی کد از فهرست هشتتایی (گرادیانهای تعریفشده در توکنها)؛ کپی کد؛ کپی کد.
- Icon: کپی کد (نام معنایی)؛ کپی کد برای آیکون اختصاصی؛ کپی کد؛ کپی کد؛ کپی کد؛ کپی کد؛ کپی کد.
- نقاط توسعه عمومی: کپی کد (تگ جایگزین)، کپی کد، کپی کد (فقط برای متغیرهای CSS)، و هر صفت HTML معمول.
- Slot: هر تگ یا کامپوننتی که فرزند واحد باشد و handler و className را بپذیرد.
تغییرات ممنوع (بنیان ثابت)
- مقدار خام در فاصله: کپی کد و کپی کد فقط از کپی کد هستند؛ عدد خام یا کپی کد پذیرفته نمیشود.
- رنگ خام یا گرادیان در CSS پرایمیتیو: فقط توکن. تنها استثنا حاشیهٔ کپی کد است.
- گرادیان خارج از کپی کد: ممنوع است. حداکثر یک کپی کد شاخص در هر نما.
- تنها نشانهٔ وضعیت: کپی کد نباید تنها نشانهٔ یک وضعیت باشد.
- تغییر ساختار DOM: کپی کد و تگ ریشه از پرایمیتیو ثابتاند؛ مصرفکننده تنها کپی کد را عوض میکند.
- کلاس کمکی دوم: هیچ پرایمیتیوی به کلاس کمکی متکی نیست؛ همه با کپی کد کار میکنند.
- Surface با ماده شیشهای در کنتراست بالا: توضیح کد میگوید شیشه در کنتراست بالا مات میشود، اما قاعدهٔ صریح آن در کپی کد دیده نمیشود. تا تعریف شدن این قاعده، شیشه را در کنتراست بالا بدون بررسی به کار نبرید.
- Icon با مسیر فایل: هرگز کپی کد از کپی کد یا مسیر فایل آیکون؛ فقط کپی کد معنایی.
RTL، کیبورد و صفحهخوان
- RTL: کپی کد و کپی کد عمودی یا خطشکناند و جهت را از کپی کد صفحه میگیرند. کپی کد با کپی کد صفحه در RTL معکوس میشود. کپی کد و کپی کد با فاصلهٔ افقی منطقی (کپی کد) کار میکنند. کپی کد با کپی کد در RTL آینه میشود.
- کیبورد: کپی کد وقتی فرزندش فوکوس دارد حلقهٔ فوکوس نشان میدهد. کپی کد رویدادهای کیبورد فرزند را حفظ میکند.
- صفحهخوان: کپی کد سطح معنایی کپی کد تا کپی کد میدهد و ساختار سرفصلها را برای صفحهخوان نگه میدارد. کپی کد متن کمکی را فقط برای صفحهخوان میگذارد. کپی کد همزمان کپی کد و کپی کد دارد. کپی کد بدون کپی کد از صفحهخوان پنهان است.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: هیچ پرایمیتیو چیدمان رویداد صوتی ندارد.
- حرکت: فقط کپی کد با کپی کد میچرخد. با کپی کد و کپی کد روی کپی کد متوقف میشود. انیمیشن کپی کد (از طریق کپی کد) در پکیج پرایمیتیو تعریف نشده و در پکیج آیکون است.
- چاپ: پرایمیتیوها استایل چاپ ویژه ندارند؛ پنهانسازی در چاپ بر عهدهٔ کامپوننتهای بالاتر است.
توکنها
- فاصله: کپی کد (از طریق کپی کد)، و متغیرهای داخلی کپی کد، کپی کد، کپی کد.
- معنایی مصرفی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد تا کپی کد و کپی کد، کپی کد تا کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد و عرض و افست آن.
- شیشه: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد و کپی کد.
- گرادیان: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، همراه کپی کد، کپی کد، کپی کد و کپی کد.
- مقدار: کپی کد فقط این متغیرها را مصرف میکند؛ مقدار واقعی در کپی کد.
قرارداد ARCH
- آیکون فقط با کپی کد و نام معنایی نمایش داده میشود؛ کپی کد در این پکیج از کپی کد بازصادر میشود.
- هیچ پرایمیتیوی مسیر asset یا فایل آیکون ندارد.
- تم فقط حرکت و توکنها را تغییر میدهد؛ DOM و کپی کد پرایمیتیوها ثابتاند.
- پرایمیتیوها gesture ندارند. معادل کیبوردی ندارند؛ وقتی جایی لازم شود، کامپوننت بالاتر آن را تعریف میکند.
نکات
- برای ساخت سطح و کارت آماده از Card استفاده کنید. برای جداسازی فهرستها از کپی کد همین صفحه استفاده کنید.
- برای نمایش برچسبها و تگها که میشکنند از کپی کد، و برای فهرستهای ردیفی با دکمهها از کپی کد استفاده کنید.
- کپی کد را فقط روی یک عنصر مهم در هر نما بگذارید و همیشه همراه آیکون یا برچسب باشد؛ قاعدهٔ کامل رنگ در کپی کد آمده است.
- کپی کد با ماده کپی کد به blur و پشتیبانی مرورگر وابسته است؛ در مرورگرهای بدون کپی کد به کپی کد برمیگردد.