کارت (Card)
کامپوننت کارت برای گروهبندی محتوا
معرفی
کارت یک کانتینر انعطافپذیر برای نمایش محتوای مرتبط است.
چه زمانی استفاده کنیم:
- برای گروهبندی محتوای مرتبط در یک بخش مجزا
- برای نمایش آیتمها در grid layout
- به عنوان container عمومی برای فرمها، محتوا و اطلاعات
چه زمانی استفاده نکنیم:
- برای نمایش یک عدد یا متریک — از
MetricCardیاStatDisplayاستفاده کنید - برای نمایش اطلاعات حساب یا پروفایل — از
Accountاستفاده کنید - برای مقایسهٔ یک عدد با دورهٔ قبل — از
MetricCardباpreviousوTrendIndicatorاستفاده کنید
استفاده
عنوان کارت
توضیحات کارت
محتوای اصلی کارت در اینجا قرار میگیرد.
زمین بازی
با تغییر تنظیمات زیر، کارت را به صورت زنده مشاهده کنید.
عنوان کارت
توضیحات کوتاه درباره محتوای کارت
محتوای کارت در اینجا قرار میگیرد.
import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '@partodata/ui'
<Card variant="default" size="md">
<CardHeader>
<CardTitle>عنوان کارت</CardTitle>
<CardDescription>توضیحات کوتاه درباره محتوای کارت</CardDescription>
</CardHeader>
<CardContent>
<p>محتوای کارت در اینجا قرار میگیرد.</p>
</CardContent>
</Card>import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, Button } from '@partodata/ui'
;<Card>
<CardHeader>
<CardTitle>عنوان کارت</CardTitle>
<CardDescription>توضیحات کارت</CardDescription>
</CardHeader>
<CardContent>
<p>محتوای اصلی کارت</p>
</CardContent>
<CardFooter>
<Button>عملیات</Button>
</CardFooter>
</Card>حالتها و انواع
انواع ظاهری
پیشفرض
حاشیه + سایه کم
حاشیهدار
فقط حاشیه، بدون سایه
برجسته
سایه بیشتر، بدون حاشیه
تعاملی
ماوس را روی کارت ببرید
شیشهای
پسزمینه تار + شفاف
کارت تعاملی (قابل کلیک)
variant="interactive" یک کارت قابل کلیک است، پس باید با صفحهکلید هم قابل استفاده باشد. با asChild کارت روی
فرزند خودش رندر میشود؛ یک <button> یا <Link> واقعی بدهید تا tab stop، فعالسازی با Enter/Space و حلقهٔ focus
بهصورت بومی فراهم شود.
<Card variant="interactive" asChild>
<button type="button" onClick={openCampaign}>
<CardHeader>
<CardTitle>کمپین تخفیف فصلی</CardTitle>
<CardDescription>برای مشاهدهٔ جزئیات کلیک کنید</CardDescription>
</CardHeader>
</button>
</Card>اندازهها
متوسط
اندازه پیشفرض
بزرگ
فاصله داخلی بیشتر
size="sm" در 5.0 حذف شد
size="sm" همان فاصلهٔ داخلی md را میداد؛ size را ندهید. اگر زبانهای زیر کارت sm اندازهٔ sm گرفته بود (Tabs و
InputOTP اندازه را از data-size بالادست میخوانند)، به خود آن size="sm" بدهید.
ساده
کارت کمحجم بدون header — مناسب snippetهای کوتاه و رهنمودهای ثانویه.
محتوای ساده
با فرم
ترکیب CardHeader + CardContent + CardFooter برای فرمهای جمعوجور (ورود، تنظیمات، dialog محتوایی).
فرم ورود
اطلاعات خود را وارد کنید
کامپوننتها
| کامپوننت | توضیح |
|---|---|
Card | کانتینر اصلی با border، background و border-radius |
CardHeader | بخش بالایی — معمولاً شامل عنوان و توضیحات |
CardTitle | عنوان کارت (h3) |
CardDescription | توضیحات کوتاه زیر عنوان |
CardContent | محتوای اصلی کارت |
CardFooter | بخش پایین کارت — معمولاً برای دکمهها |
Props
Card
CardHeader
CardTitle
CardDescription
CardContent
CardFooter
راهنمای استفاده
بکنید
- ساختار سلسلهمراتبی را حفظ کنید:
CardHeader→CardContent→CardFooter- ازCardFooterبرای دکمههای اکشن استفاده کنید - از کارت برای گروهبندی اطلاعات مرتبط در یک بخش مجزا استفاده کنید
نکنید
- محتوای نامرتبط را در یک کارت قرار ندهید — هر کارت باید یک موضوع واحد داشته باشد - از کارت برای نمایش متریکهای عددی
استفاده نکنید — از
MetricCardاستفاده کنید - کارت را بدونCardHeaderرها نکنید — عنوان برای دسترسیپذیری لازم است
دسترسیپذیری
- کارت از تگهای معنادار HTML استفاده میکند
CardTitleبه عنوان heading عمل میکند و سلسلهمراتب صفحه را حفظ میکند- برای کارتهای تعاملی (قابل کلیک) از
variant="interactive"بههمراهasChildاستفاده کنید و یک<button>یا<Link>واقعی بهعنوان فرزند بدهید؛ tab stop، فعالسازی با Enter/Space و حلقهٔ focus از خود آن عنصر میآید - افزودن دستی
role="button"وtabIndexبه یک<div>کافی نیست — کارت را فقط قابل focus میکند ولی فعالسازی با Enter/Space را فراهم نمیکند (نقض WCAG 2.1.1) - رنگها و کنتراستها با استانداردهای WCAG AA سازگار هستند
کامپوننتهای مرتبط
- MetricCard — اگر نیاز به نمایش یک عدد KPI با sparkline و درصد تغییر دارید، از MetricCard استفاده کنید
- Account — اگر محتوای کارت یک حساب یا پروفایل است، از Account استفاده کنید