کاستومایز
تیکِ فنریSpring Check
یه چکباکس که با تیکخوردن پر میشه، تیک میزنه و متنش رو خط میکشه.
وابستگیها
نوع تعامل
با هر کلیک، خانه از وسط پر میشه، کمی ورم میکنه و تیک میاد؛ همزمان متن کمرنگ میشه و یه خط از روش رد میشه. Space و Enter هم همین کارو میکنن، ولی بیانیمیشن.
پراپها
گزینههایی که میتونی به کامپوننت بدی؛ ستارهدارها اجباریاند.
labelReactNodeپیشفرض: "انجام شد"متنِ کنارِ خانه؛ هر گرهای میتونه باشه، نه فقط رشته.
checkedbooleanمقدارِ controlled. اگه uncontrolled میخوای، این رو نده.
defaultCheckedbooleanپیشفرض: falseوضعیتِ اولیه توی حالتِ uncontrolled.
onChange(checked: boolean) => voidبا هر تغییر، وضعیتِ تازه رو برمیگردونه.
disabledbooleanپیشفرض: falseکمرنگ و غیرقابلکلیکش میکنه.
colorstringپیشفرض: #ffffff (تیره) · #18181b (روشن)رنگِ جوهر: قابِ خانه، متن و خطِ روی متن همه از همینان. پیشفرضش با تم عوض میشه.
نصب
۱. این آدرس رو یکبار توی components.json بذار تا shadcn مخزن فارسیفای رو بشناسه.
{
"registries": {
"@farsify": "https://farsify.ir/r/{name}.json"
}
}۲. بعد با دستورِ زیر کامپوننت رو نصب کن.
npx shadcn@latest add @farsify/spring-checkپیشنیاز: Tailwind CSS v4 و صفحهٔ راستبهچپ dir="rtl".
نمونه
"use client";
import { useState } from "react";
import { SpringCheck } from "@/components/farsify/spring-check";
export function TodoItem() {
const [done, setDone] = useState(false);
return (
<SpringCheck
label="ساخت بیلد"
checked={done}
onChange={setDone}
/>
);
}
// بدون کنترل — مقدار اولیهی تیکخورده
<SpringCheck label="هماهنگی جلسه" defaultChecked />
// رنگ برند، خانهی بزرگتر و خط از وسط
<SpringCheck
label="بهروزرسانی تغییرات"
color="var(--color-brand)"
fillColor="var(--color-brand)"
checkColor="#ffffff"
boxSize={34}
strike="center"
/>نکتهها
- برای فهرست کارها `bounce` رو حدود ۰.۱ و `strikeLag` رو صفر بذار؛ حرکت کمتر بهتره.
- اگه رنگ برند میدی، حواست به کنتراست `fillColor` و `checkColor` باشه؛ وگرنه تیک دیده نمیشه.
- با `strike="none"` متن فقط کمرنگ میشه؛ برای برچسبهای بلند همین بهتره.
مجوز
کد بعد از نصب مالِ خودته؛ هر تغییری خواستی بده و توی پروژهی خودت نگهش دار. برای پروژههای شخصی و تجاری آزاده، حتی اگه کدت بسته باشه. فقط اسم و لینک فارسیفای رو یه جا توی پروژه نگه دار.