Item
بلوکِ عمومیِ ردیف/مدیا-آبجکت برای فهرستها، ردیفهای تنظیمات و مینیکارتها
معرفی
Item یک بلوکِ ترکیبیِ عمومی برای ساختنِ یک «ردیف» است: آیکون/مدیا در ابتدای خط، عنوان و توضیح در میانه، و اقدامها در انتهای خط. این کامپوننت، مکملِ نمایشیِ Field است (که برای کنترلهای فرم است) و جایگزینِ بازنویسیِ دستیِ چیدمانِ ردیف در هر جای محصول میشود.
-
چه زمانی استفاده کنیم
- فهرستِ تنظیمات، اعلانها، یا نتایج که هرکدام آیکون + متن + اقدام دارند.
- مینیکارتهای یکخطی/دوخطی که به یک کامپوننتِ دامنهایِ اختصاصی (مثل
PostCard) نیاز ندارند. - وقتی میخواهید چند ردیف با فاصله و تراز یکدست، بدون بازنویسیِ flex، داشته باشید.
-
چه زمانی استفاده نکنیم
- برای دادهٔ ردیفوستونیِ قابلِ مرتبسازی/فیلتر → از
DataTableاستفاده کنید. - برای محتوای دامنهایِ غنی (پستِ شبکهاجتماعی، پروفایلِ اینفلوئنسر) → از
PostCard/ProfileCardاستفاده کنید. - برای کنترلهای فرم با برچسب و خطا → از
Fieldاستفاده کنید.
- برای دادهٔ ردیفوستونیِ قابلِ مرتبسازی/فیلتر → از
استفاده
import {
Item,
ItemGroup,
ItemMedia,
ItemContent,
ItemTitle,
ItemDescription,
ItemActions,
} from '@partodata/ui'
import { Bell } from 'lucide-react'
import { Button } from '@partodata/ui'
;<ItemGroup>
<Item variant="outline">
<ItemMedia variant="icon">
<Bell className="size-4" />
</ItemMedia>
<ItemContent>
<ItemTitle>اعلانهای کمپین</ItemTitle>
<ItemDescription>وقتی نرخ تعامل از آستانه عبور کرد، خبرم کن.</ItemDescription>
</ItemContent>
<ItemActions>
<Button variant="outline" size="sm">
پیکربندی
</Button>
</ItemActions>
</Item>
</ItemGroup>Item یک ردیفِ flex است؛ چون از خواصِ منطقی (logical) استفاده میکند، مدیا در ابتدای خط و اقدامها در انتهای خط قرار میگیرند و در RTL و LTR هر دو درست میچرخند — بدونِ هیچ left/right فیزیکی.
حالتها و انواع
سه نوعِ ظاهری:
<Item variant="default">…</Item> {/* بدون کادر — فهرستهای چگال */}
<Item variant="outline">…</Item> {/* کادردار — هر ردیف یک واحد مجزا */}
<Item variant="muted">…</Item> {/* پسزمینه ملایم — تأکید سبک */}اندازهها: پیشفرض sm (ردیفِ فشرده)؛ md برای تراکمِ کارتمانندِ بازتر.
<Item size="md">…</Item>ItemMedia سه نوع دارد: default (بدونِ قاب)، icon (قابِ ۳۲px با پسزمینهٔ ملایم برای آیکون)، و image (قابِ ۴۰px با object-cover برای تصویرِ کوچک).
با asChild میتوانید کلِ ردیف را به یک لینک یا دکمه تبدیل کنید؛ در این حالت افوردنسِ hover (پسزمینهٔ surface-200) روشن میشود:
<Item asChild variant="outline">
<a href="/reports/weekly">…</a>
</Item>راهنمای استفاده
بکنید
ItemContentرا برای عنوان + توضیح بهکار ببرید تا در ستونِ کشسانِ میانه درست بچیند.- برای ردیفِ کلیکپذیر از
asChildروی یک<a>/<button>استفاده کنید تا معناشناسی و hover درست شود. - برای هدر/فوترِ تمامعرض داخلِ یک ردیف از
ItemHeader/ItemFooterاستفاده کنید (خودشان به خطِ جدا میشکنند).
نکنید
- از
Itemبرای جدولِ دادهایِ قابلِ مرتبسازی استفاده نکنید — این کارِDataTableاست. - داخلِ
Itemازleft/rightفیزیکی استفاده نکنید؛ چیدمان از قبل RTL-صحیح است. ItemDescriptionرا برای متنِ طولانی بهجایline-clampرها نکنید — بهصورت پیشفرض دو خط برش میخورد.
جدول ویژگیها
زیرکامپوننتها
دسترسیپذیری
ItemGroupنقشِlistوItemSeparatorنقشِseparatorباaria-orientation="horizontal"دارند.- برای ردیفِ کلیکپذیر،
asChildروی یک<a>/<button>بگذارید تا عنصر واقعاً قابلِ فوکوس و کیبوردپذیر باشد؛ حلقهٔ فوکوس با زبانِ فوکوسِ دیزاینسیستم (ring خنثی + offset) رندر میشود. - هر زیربخش یک
data-slotدارد تا استایلدهی و تست هدفمند باشد.