جادهٔ مه
جادهٔ مهکوهستان
فیوردِ آبی
فیوردِ آبیدریا
کمپِ برفی
کمپِ برفیسفر
آبشار
آبشارجنگل
آخرینِ نور
آخرینِ نورغروب
قایقِ دریاچه
قایقِ دریاچهسکوت

شبکه‌ی رنگینChroma Grid

گالریِ خاکستری که زیرِ نورافکنِ دنبال‌کننده رنگ می‌گیرد: فقط داخلِ شعاعِ نور، عکس‌ها فامِ واقعی و لبه‌شان فامِ اختصاصی نشان می‌دهد.

محمدجواد

ساخته شده توسط محمدجواد

سازنده فارسی‌فای، بچه دولوپر

وابستگی‌ها

بدون وابستگی

نوع تعامل

نورافکن با لَختیِ قابلِ تنظیم دنبالِ نشانگر می‌آد و با خروج، توی «محوِ خروج» ثانیه‌ای خاموش می‌شه. توی حالتِ «خودِ کارت» به‌جای نورِ سراسری، هاورِ هر کارت فقط خودش رو رنگ می‌کنه. مختصاتِ نور فیزیکی‌ان و توی RTL هیچ آینه‌ای لازم نیست؛ متن‌ها خودبه‌خود راست‌به‌چپ می‌نشینن.

پراپ‌ها

گزینه‌هایی که می‌تونی به کامپوننت بدی؛ ستاره‌دارها اجباری‌اند.

items
ChromaItem[]

کارت‌ها؛ هرکدام `image` (اجباری)، `title`، `subtitle`، `accent` (فامِ درخششِ لبه) و `url` اختیاری دارد. بدونِ آن‌ها شش کارتِ نمونه می‌آد.

columns
numberپیش‌فرض: 3

ستون‌های شبکه؛ با `minCardWidth` جمع می‌شه و در عرضِ کم خودش کم می‌شه.

minCardWidth
numberپیش‌فرض: 180

کمینه‌ی عرضِ هر کارت، پیکسل.

gap
numberپیش‌فرض: 12

فاصله‌ی بینِ کارت‌ها.

radius
numberپیش‌فرض: 260

شعاعِ نورافکنِ سراسری.

softness
numberپیش‌فرض: 0.6

نرمیِ لبه‌ی نور؛ صفر قرصِ تیز، یک محویِ کامل از مرکز.

نصب

۱. این آدرس رو یک‌بار توی components.json بذار تا shadcn مخزن فارسی‌فای رو بشناسه.

components.jsonjson
{
  "registries": {
    "@farsify": "https://farsify.ir/r/{name}.json"
  }
}

۲. بعد با دستورِ زیر کامپوننت رو نصب کن.

npx shadcn@latest add @farsify/chroma-grid

پیش‌نیاز: Tailwind CSS v4 و صفحهٔ راست‌به‌چپ dir="rtl".

نمونه

chroma-grid.tsxtsx
"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ِ دائمی نداره: فال‌آفِ نور یه گرادیانتِ ۱۳ توقفِ پیش‌ساخته‌ست که فقط با دو متغیرِ مختصات جابه‌جا می‌شه.

مجوز

کد بعد از نصب مالِ خودته؛ هر تغییری خواستی بده و توی پروژه‌ی خودت نگهش دار. برای پروژه‌های شخصی و تجاری آزاده، حتی اگه کدت بسته باشه. فقط اسم و لینک فارسی‌فای رو یه جا توی پروژه نگه دار.