کارت — Card
کارت محتوای مرتبط (ایده، کمپین، محصول) را در یک سطح گروه میکند و برای آیتمهای قابلورود در فهرست یا شبکه مناسب است. ساختار سهبخشی کپی کد، کپی کد و کپی کد ثابت است. برای کارتی که کل سطح آن قابلکلیک است، از کپی کد داخل کپی کد استفاده کنید؛ با این روش کل کارت یک لینک دارد، نه چند لینک تودرتو.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Card, CardBody, CardFooter, CardHeader, CardLink, CardMedia, CardTitle } from '@tokapps/tuk';نمونهٔ زنده
پلتفرم گفتوگوی هممحلهای
کد قابل کپی
پایه: سربرگ، بدنه و پانویس
import { Button, Card, CardBody, CardFooter, CardHeader, CardTitle } from '@tokapps/tuk';export function IdeaCard() { return ( <Card> <CardHeader> <CardTitle>پلتفرم گفتوگوی هممحلهای</CardTitle> </CardHeader> <CardBody>ایدهای برای اتصال همسایهها و کسبوکارهای محلی.</CardBody> <CardFooter> <Button size="sm" variant="secondary">جزئیات</Button> </CardFooter> </Card> );}پیشرفته: کارت لینکدار با کنش فوتر
import { Button, Card, CardBody, CardFooter, CardHeader, CardLink, CardTitle } from '@tokapps/tuk';export function LinkableIdeaCard() { return ( <Card as="article" interactive> <CardHeader> <CardTitle> <CardLink href="/ideas/1204">ایدهٔ شمارهٔ ۱۲۰۴</CardLink> </CardTitle> </CardHeader> <CardBody>کل کارت قابلکلیک است، اما فقط یک لینک در ترتیب Tab دارد.</CardBody> <CardFooter> <Button size="sm" variant="ghost">ذخیره</Button> </CardFooter> </Card> );}کاور: CardMedia با برچسب
کپی کد اگر اولین فرزند کارت باشد تا لبهها کشیده میشود. بدون کپی کد، کاور گرادیانی از توکنهای تم ساخته میشود. این تنها استثنای رسمی گرادیان پسزمینه است (پایینتر: «قرارداد کاور»).
import { Card, CardBody, CardHeader, CardLink, CardMedia, CardTitle } from '@tokapps/tuk';export function ArticleTeaser() { return ( <Card as="article" interactive> <CardMedia tone="series-5" label="معماری" /> <CardHeader> <CardTitle><CardLink href="/articles/monorepo">مونوریپو با pnpm و Turborepo</CardLink></CardTitle> </CardHeader> <CardBody>کاور گرادیانی از توکنهای تم ساخته میشود؛ بدون تصویر هم کارت هویت دارد.</CardBody> </Card> );}کاور: همهٔ فامها و تصویر واقعی
import { Card, CardMedia } from '@tokapps/tuk';const tones = ['accent', 'series-1', 'series-2', 'series-3', 'series-4', 'series-5', 'series-6', 'series-7'] as const;export function Tones() { return tones.map((tone) => ( <Card key={tone} padding="none"><CardMedia tone={tone} label={<bdi>{tone}</bdi>} /></Card> ));}// تصویر واقعی: alt خالی = تزئینی؛ alt پر = محتوایی<CardMedia src="/covers/x.webp" alt="" label="طراحی" />کاور: کاشی لوگو کنار عنوان
import { Card, CardBody, CardHeader, CardLink, CardMedia, CardTitle } from '@tokapps/tuk';export function ToolTeaser() { return ( <Card as="article"> <CardHeader> <CardMedia shape="tile" tone="series-7">T</CardMedia> <CardTitle><CardLink href="https://turbo.build">Turborepo</CardLink></CardTitle> </CardHeader> <CardBody>کاشی کوچک برای لوگو یا حرف اول، کنار عنوان.</CardBody> </Card> );}الگوهای آمادهای که روی این کاور ساخته شدهاند: ArticleCard، PodcastEpisodeCard، ToolCard.
وضعیت خاص: فهرست بدون پدینگ و چاپ پنهان
کارت حالت خطا یا غیرفعال ندارد. این نمونه ریشهٔ کپی کد، پدینگ کپی کد و کپی کد را نشان میدهد.
import { Card, CardBody, CardTitle } from '@tokapps/tuk';export function ProductList() { return ( <ul style={{ listStyle: 'none', margin: 0, padding: 0, display: 'grid', gap: 'var(--tds-space-3)' }}> <Card as="li" padding="none" print="hide"> <CardBody> <CardTitle as="h4">این فهرست در چاپ دیده نمیشود.</CardTitle> </CardBody> </Card> </ul> );}همهٔ پیکربندیها
کپی کد
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد | کپی کد | کپی کد سایه دارد، کپی کد خط دور دارد، کپی کد سطح فرورفته است. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | پدینگ از توکنهای کپی کد؛ کپی کد بدون پدینگ. |
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | عنصر HTML ریشه. برای فهرستها کپی کد یا کپی کد بهتر است. |
| کپی کد | کپی کد | کپی کد | hover و نشانگر کلیک را فعال میکند. کلیک کل کارت را فعال نمیکند؛ برای آن از کپی کد استفاده کنید. |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد کارت را در چاپ پنهان میکند. |
| کپی کد | کپی کد | — | کلاس روی ریشه. |
| سایر ویژگیها | کپی کد | — | روی ریشه اعمال میشوند. |
کپی کد، کپی کد و کپی کد
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — | کلاس روی کپی کد بخش. |
| سایر ویژگیها | کپی کد | — | روی کپی کد بخش اعمال میشوند. |
کپی کد
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد · کپی کد · کپی کد | کپی کد | سطح heading عنوان بر اساس ساختار صفحه. |
| کپی کد | کپی کد | — | کلاس روی عنوان. |
| سایر ویژگیها | کپی کد | — | روی عنوان اعمال میشوند. |
کپی کد
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد … کپی کد | کپی کد | کپی کد از تم پیروی میکند؛ کپی کد رنگهای دستهای پایدار برای دستهبندی محتوا (نام معنایی، نه نام رنگ). |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد نوار بالای کارت (نسبت کپی کد)؛ کپی کد کاشی مربعی کنار عنوان. |
| کپی کد | کپی کد | — | تصویر واقعی؛ کاور گرادیانی فقط پشت تصویرِ در حال بار است. |
| کپی کد | کپی کد | کپی کد | خالی = تزئینی و پنهان از صفحهخوان. |
| کپی کد | کپی کد | — | برچسب روی کاور، روی جفت AA کپی کد/کپی کد. |
| کپی کد | کپی کد | — | محتوای وسط (مثلاً حرف اول در کپی کد)؛ تزئینی. |
| سایر ویژگیها | کپی کد | — | روی کپی کد کاور. |
کپی کد
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد و سایر ویژگیهای لینک | کپی کد | — | روی کپی کد اعمال میشوند. متن لینک نام دسترسی کارت است. |
| کپی کد | کپی کد | — | کلاس روی لینک. |
ساختار و اسلاتها
Card (div | article | section | li) data-tds="card" data-variant data-padding [data-interactive] data-print├─ CardMedia (اختیاری، اول) data-part="media" data-tone data-shape [data-image]│ ├─ img (اختیاری)│ ├─ span data-part="media-content" (تزئینی)│ └─ span data-part="media-label"├─ CardHeader data-tds="card-part" data-part="header"│ └─ CardTitle (h3 پیشفرض) data-part="title"│ └─ CardLink (a) data-part="link" (لینک کشیده روی کل کارت)├─ CardBody data-part="body"└─ CardFooter data-part="footer" (z-index بالاتر از لینک)بخش ثابت: ترتیب سربرگ، بدنه و پانویس؛ عنوان بهصورت heading؛ کپی کد بهصورت لینک کشیده با کپی کد؛ کنشهای فوتر بالاتر از لینک. بخش قابلتغییر: محتوای هر بخش، کپی کد و توکنهای کپی کد.
همهٔ حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| raised | کپی کد | زمینهٔ کپی کد با سایهٔ کپی کد. |
| outlined | کپی کد | حاشیهٔ کپی کد. |
| flat | کپی کد | زمینهٔ کپی کد. |
| پیشفرض | بدون کپی کد | سطح ثابت، بدون hover. |
| hover (interactive) | کپی کد و کپی کد | زمینهٔ کپی کد؛ در کپی کد سایه به کپی کد میرود. |
| focus-visible (لینک داخلی) | کپی کد یا کپی کد روی کارت interactive | حلقهٔ فوکوس دور کل کارت با کپی کد. |
| پدینگ | کپی کد · کپی کد · کپی کد · کپی کد | فاصلهٔ داخلی متفاوت. |
| چاپ پنهان | کپی کد | کارت در چاپ پنهان. |
در کد حالت خطا، غیرفعال یا بارگذاری تعریف نشده است.
تغییرات مجاز برای توسعهدهنده
- variant: کپی کد، کپی کد، کپی کد.
- پدینگ: کپی کد، کپی کد، کپی کد، کپی کد.
- عنصر ریشه: کپی کد، کپی کد، کپی کد، کپی کد.
- عنوان: سطح heading با کپی کد از کپی کد تا کپی کد یا کپی کد.
- تعامل: کپی کد برای hover؛ کپی کد برای لینک کل سطح.
- چاپ: کپی کد یا کپی کد.
- نقاط توسعه: کپی کد روی هر بخش؛ توکنهای سطح کامپوننت کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد؛ ویژگیهای کپی کد و لینک؛ محتوای آزاد هر بخش.
- size: در کد پراپ کپی کد تعریف نشده است؛ اندازه از padding تعیین میشود.
تغییرات ممنوع (بنیان ثابت)
- کپی کد باید تنها لینک اصلی کارت باشد؛ لینک دوم داخل همان کارت برای کل سطح نساز.
- نام لینک باید همان متن عنوان باشد.
- کنشهای کپی کد باید بالاتر از لینک کشیده بمانند و جدا قابلکلیک باشند.
- ترتیب بخشها (سربرگ، بدنه، فوتر) و heading بودن عنوان ثابت است.
- هدف لمسی: کارت لینکدار باید ناحیهٔ کلیک کافی داشته باشد؛ حذف کپی کد یا کوچککردن آن ممنوع است.
- رنگ خام، گرادیان یا تنها رنگ برای نمایش حالت مجاز نیست؛ تمایز حالتها با سایه، مرز یا زیرخط است. تنها استثنا هنر کاور کپی کد است.
قرارداد کاور (استثنای گرادیان)
- گرادیان فقط در کپی کد ساخته میشود و کپی کد همین یک فایل را مجاز میداند. الگوها و محصول گرادیان نمیسازند و فقط کپی کد را انتخاب میکنند.
- همهٔ پارامترها (فام، زاویه، شدت نور، پایه) توکنهای کپی کد در کپی کد هستند. تم فقط همینها را تنظیم میکند.
- کاور تزئینی است و هرگز تنها حامل معنا یا وضعیت نیست. هر معنایی (دسته، شمارهٔ قسمت) با کپی کد متنی روی جفت AA میآید.
- کاور حرکت ندارد. در کنتراست بالا (کپی کد) و چاپ تخت میشود و مرز میگیرد. در RTL نور از لبهٔ آغاز میتابد.
RTL، کیبورد و صفحهخوان
- پدینگ و فاصلهها منطقیاند (کپی کد و کپی کد)؛ لینک کشیده با کپی کد روی کارت مینشیند.
- اعداد لاتین داخل عنوان فارسی را با کپی کد ایزوله کنید.
- کیبورد: کپی کد فقط به لینک اصلی و کنشهای فوتر میرسد؛ کپی کد لینک را فعال میکند.
- صفحهخوان: عنوان heading است و لینک نام آن را دارد؛ اگر کپی کد باشد، کارت در فهرست معنا دارد.
- بدنه و فوتر به ترتیب منبع خوانده میشوند.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: در کد پراپ کپی کد تعریف نشده و کامپوننت بیصداست. صدای ناوبری در سطح لینک یا مسیریاب است، نه در کارت. معادل بصری: حالت hover و فوکوس.
- حرکت: گذار سایه و زمینهٔ hover با نام معنایی کپی کد (کپی کد). در کپی کد یا سوییچ کاهش حرکت، زمان گذار ۱ms میشود.
- چاپ: پیشفرض کپی کد با حفظ رنگ؛ کپی کد؛ سایه حذف و مرز کپی کد حفظ میشود؛ با کپی کد پنهان میشود.
توکنها
- معنایی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- کاور: کپی کد (فامها کپی کد و کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد) و کپی کد.
- کامپوننتی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- تایپوگرافی: کپی کد، کپی کد، کپی کد، کپی کد.
- کنترل: کپی کد، کپی کد، کپی کد، کپی کد.
- فایل توکن: کپی کد؛ فهرست مصرفی در کپی کد.
قرارداد ARCH
- اگر کارت آیکونی داشته باشد (مثلاً در فوتر)، آن را با کامپوننت کپی کد و نام معنایی بسازید؛ مسیر asset مستند نمیشود.
- تم فقط حرکت و توکنها را تغییر میدهد؛ ساختار DOM و ARIA ثابت است.
- Gesture ندارد؛ کلیک کل سطح از طریق کپی کد و با ماوس یا لمس انجام میشود، و معادل کیبوردش کپی کد و کپی کد روی لینک است.