کنترل بخشی
segmented-controlکامپوننتچند گزینهی کنار هم با یک قرص که زیر گزینهی فعال سر میخوره، برای چیزهایی مثل «هفتگی و ماهانه» یا «فهرست و شبکه».
فروش
۳۱٬۲۰۰٬۰۰۰ تومان
نصب
با CLI
اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگیهاش را مینویسه.
$ npx vibefarsi add segmented-controlنصب دستی
محتوای تب «کد» را در
components/ui/segmented-control.tsxبگذارید.$ npm i lucide-reactکپی کل فایلregistry json
استفاده
usage.tsx
1import { SegmentedControl } from "@/components/ui/segmented-control"23<SegmentedControl4 aria-label="بازه"5 defaultValue="week"6 options={[{ value: "day", label: "روزانه" }, { value: "week", label: "هفتگی" }, { value: "month", label: "ماهانه" }]}7 onChange={setRange}8/>پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| options | { value; label; disabled?; aria-label? }[] | - | بخشها. عرض همه برابر پهنترین برچسبه. |
| value / onChange | string | - | کنترلشده یا آزاد. پیشفرض گزینهی اوله. |
| fullWidth | boolean | false | کل عرض والد را میگیره و بخشها را مساوی تقسیم میکنه. |
| size | "sm" | "md" | "md" | ارتفاع ۲۸ یا ۳۲ پیکسل. |
نکتههای راستچین
- فرقش با Tabs اینه که محتوایی زیرش عوض نمیشه، فقط یک مقدار انتخاب میشه، مثل یک select کوچک با گزینههای کم.
- قرص از offsetLeft و offsetWidth خود دکمه اندازه گرفته میشه، پس در RTL هم درست زیر گزینه مینشینه و با تغییر اندازه دوباره اندازهگیری میشه.