کاستومایز
چیپهای ژلهایJelly Radio
یه ردیف چیپ برای انتخاب؛ چیپی که میزنی ورم میکنه و بقیه با یه حرکتِ فنری کنار میرن.
وابستگیها
نوع تعامل
هر چیپی رو بزنی، خودش بزرگتر میشه و بقیه کمی جمع میشن و کنار میرن؛ هرچی دورتر، دیرتر. با کلیدهای جهت هم بین گزینهها جابهجا میشی و Home/End میرن به دو سر. انتخاب با کلیک و کیبورد یکجوره، پس هر دو حسِ یکسانی میدن.
پراپها
گزینههایی که میتونی به کامپوننت بدی؛ ستارهدارها اجباریاند.
itemsJellyRadioItem[]پیشفرض: ["خاموش", "کم", "متوسط", "زیاد", "بیشینه"]گزینهها؛ میتونی رشته بدی، یا شیءی با value و label و icon و disabled.
valuestringمقدارِ controlled. اگه uncontrolled میخوای، این رو نده و بهجاش defaultValue بده.
defaultValuestringگزینهی انتخابشده توی حالتِ uncontrolled؛ پیشفرض اولین گزینهست.
onChange(value: string, index: number) => voidبا هر انتخاب، مقدار و index گزینهی تازه رو برمیگردونه.
sizesm | md | lgپیشفرض: mdsm · md · lgاندازهی چیپها: sm ۲۸، md ۳۶ و lg ۴۴ پیکسل.
chipColorstringپیشفرض: #27272aرنگِ پسزمینهی چیپهای غیرفعال.
نصب
۱. این آدرس رو یکبار توی components.json بذار تا shadcn مخزن فارسیفای رو بشناسه.
{
"registries": {
"@farsify": "https://farsify.ir/r/{name}.json"
}
}۲. بعد با دستورِ زیر کامپوننت رو نصب کن.
npx shadcn@latest add @farsify/jelly-radioپیشنیاز: Tailwind CSS v4 و صفحهٔ راستبهچپ dir="rtl".
نمونه
"use client";
import { JellyRadio } from "@/components/farsify/jelly-radio";
export function VolumeLevel() {
return (
<JellyRadio
ariaLabel="سطح صدا"
items={["خاموش", "کم", "متوسط", "زیاد", "بیشینه"]}
defaultValue="متوسط"
onChange={(value) => console.log(value)}
/>
);
}
// با رنگهای برند و اندازهی بزرگ
<JellyRadio
size="lg"
chipColor="var(--color-brand)"
activeColor="#ffffff"
textColor="#ffffff"
activeTextColor="var(--brand)"
/>نکتهها
- برای انتخابهای پرتکرار `bounce` رو حدود ۰.۱۵ بذار؛ جهشِ کمتر، آرومتر.
- اگه متنِ چیپها بلنده، `size` رو بزرگ کن نه `gap` رو؛ فاصلهی زیاد گروه رو میپاشه.
- رنگها رو با متغیرِ CSS هم میتونی بدی، مثل `var(--color-brand)`.
مجوز
کد بعد از نصب مالِ خودته؛ هر تغییری خواستی بده و توی پروژهی خودت نگهش دار. برای پروژههای شخصی و تجاری آزاده، حتی اگه کدت بسته باشه. فقط اسم و لینک فارسیفای رو یه جا توی پروژه نگه دار.