











کاستومایز
شبکهی رنگینChroma Grid
گالریِ خاکستری که زیرِ نورافکنِ دنبالکننده رنگ میگیرد: فقط داخلِ شعاعِ نور، عکسها فامِ واقعی و لبهشان فامِ اختصاصی نشان میدهد.
وابستگیها
نوع تعامل
نورافکن با لَختیِ قابلِ تنظیم دنبالِ نشانگر میآد و با خروج، توی «محوِ خروج» ثانیهای خاموش میشه. توی حالتِ «خودِ کارت» بهجای نورِ سراسری، هاورِ هر کارت فقط خودش رو رنگ میکنه. مختصاتِ نور فیزیکیان و توی RTL هیچ آینهای لازم نیست؛ متنها خودبهخود راستبهچپ مینشینن.
پراپها
گزینههایی که میتونی به کامپوننت بدی؛ ستارهدارها اجباریاند.
itemsChromaItem[]کارتها؛ هرکدام `image` (اجباری)، `title`، `subtitle`، `accent` (فامِ درخششِ لبه) و `url` اختیاری دارد. بدونِ آنها شش کارتِ نمونه میآد.
columnsnumberپیشفرض: 3ستونهای شبکه؛ با `minCardWidth` جمع میشه و در عرضِ کم خودش کم میشه.
minCardWidthnumberپیشفرض: 180کمینهی عرضِ هر کارت، پیکسل.
gapnumberپیشفرض: 12فاصلهی بینِ کارتها.
radiusnumberپیشفرض: 260شعاعِ نورافکنِ سراسری.
softnessnumberپیشفرض: 0.6نرمیِ لبهی نور؛ صفر قرصِ تیز، یک محویِ کامل از مرکز.
نصب
۱. این آدرس رو یکبار توی components.json بذار تا shadcn مخزن فارسیفای رو بشناسه.
{
"registries": {
"@farsify": "https://farsify.ir/r/{name}.json"
}
}۲. بعد با دستورِ زیر کامپوننت رو نصب کن.
npx shadcn@latest add @farsify/chroma-gridپیشنیاز: Tailwind CSS v4 و صفحهٔ راستبهچپ dir="rtl".
نمونه
"use client";
import ChromaGrid from "@/components/farsify/chroma-grid";
const works = [
{ image: "/works/one.jpg", title: "جادهٔ مه", subtitle: "کوهستان", accent: "#7cc4ff" },
{ image: "/works/two.jpg", title: "آبشار", subtitle: "جنگل", accent: "#4cff9d" },
{ image: "/works/three.jpg", title: "فیوردِ آبی", subtitle: "دریا", accent: "#4ca8ff" },
];
export function GrayGallery() {
return <ChromaGrid items={works} columns={3} />;
}
// ردیفِ لمسی: هر کارت با هاورِ خودش رنگ میگیرد
<ChromaGrid items={works} reveal="card" />نکتهها
- فامِ `accent` هر کارت فقط زیرِ نور دیده میشه: لبهی کارت و شستِ رنگیِ زیرِ عکس با همون فام روشن میشه — برای دستهبندیِ بصریِ گالری عالیه (هر موضوع یه فام).
- `reveal="card"` برای ردیفهای لمسی بهتره: نورافکنِ سراسری روی صفحهی لمس معنا نداره و هاورِ هر کارت مستقل رنگ میگیره.
- `grayscale` رو نصف کن تا گالری «رنگشده با نور سرد» بمونه — حالتِ میانیِ جذابی میده که نه سیاهوسفیده نه رنگیِ کامل.
- با `fadeOut` بلند، خاموششدنِ نور کشدار و سینمایی میشه؛ با صفر فوری — برای گالریهای شلوغ فوری بهتره.
- هیچ وابستگی و حلقهی rAFِ دائمی نداره: فالآفِ نور یه گرادیانتِ ۱۳ توقفِ پیشساختهست که فقط با دو متغیرِ مختصات جابهجا میشه.
مجوز
کد بعد از نصب مالِ خودته؛ هر تغییری خواستی بده و توی پروژهی خودت نگهش دار. برای پروژههای شخصی و تجاری آزاده، حتی اگه کدت بسته باشه. فقط اسم و لینک فارسیفای رو یه جا توی پروژه نگه دار.