بلاک‌ها · بخش‌های صفحه

خلاصهٔ امتیاز و نظر

پیش‌نمایش تمام‌صفحه

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

۱. نصب کامپوننت‌ها

این بلاک از ۵ آیتم دیگ استفاده می‌کند: avatarcontrol-sizeiconspersianprogress

پکیج‌منیجر پیش‌فرض Node.jsنصب سریع با لینک سخت و دیسک مشترکYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
npx digdesign@latest add https://docs.digdesign.ir/r/avatar.json https://docs.digdesign.ir/r/control-size.json https://docs.digdesign.ir/r/icons.json https://docs.digdesign.ir/r/persian.json https://docs.digdesign.ir/r/progress.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/avatar.json https://docs.digdesign.ir/r/control-size.json https://docs.digdesign.ir/r/icons.json https://docs.digdesign.ir/r/persian.json https://docs.digdesign.ir/r/progress.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/avatar.json https://docs.digdesign.ir/r/control-size.json https://docs.digdesign.ir/r/icons.json https://docs.digdesign.ir/r/persian.json https://docs.digdesign.ir/r/progress.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/avatar.json https://docs.digdesign.ir/r/control-size.json https://docs.digdesign.ir/r/icons.json https://docs.digdesign.ir/r/persian.json https://docs.digdesign.ir/r/progress.json

۲. کد صفحه

کد را در app/<route>/page.tsx بگذارید و متن‌ها، داده و هندلرها را با محصول خودتان عوض کنید.

testimonials-rating.tsx
"use client"

import { StarIcon } from "@/components/icons"
import { Avatar } from "@/components/ui/avatar"
import { ControlSizeProvider } from "@/components/ui/control-size"
import { Progress } from "@/components/ui/progress"
import { toFaDigits } from "@/lib/persian"
import { stockImages } from "@/lib/stock-images"

const BARS = [
  { stars: 5, share: 82 },
  { stars: 4, share: 12 },
  { stars: 3, share: 4 },
  { stars: 2, share: 1 },
  { stars: 1, share: 1 },
]
const LOGOS = ["fintech/digipay", "fintech/asan-pardakht", "banks/blu", "banks/day"]

/**
 * خلاصهٔ رضایت: امتیازِ درشت با ستاره و توزیعِ امتیازها، کنارش یک نقل‌قولِ برجسته با
 * عکسِ گوینده، و زیرِ هر دو ردیفِ لوگوی مشتری‌ها. برای اعتمادسازی عددی در لندینگ.
 */
export default function TestimonialsRatingBlock() {
  return (
    <ControlSizeProvider size="xl" asChild>
      <section aria-labelledby="tr-title" className="mx-auto flex w-full max-w-6xl flex-col gap-12 px-4 py-24 sm:px-6">
        <h2 id="tr-title" className="text-3xl font-black">
          کاربرانِ ما چه می‌گویند
        </h2>
        <div className="grid grid-cols-1 gap-6 lg:grid-cols-[22rem_minmax(0,1fr)]">
          <div className="flex flex-col gap-6 rounded-xl bg-subtle p-6">
            <div className="flex items-end gap-3">
              <span className="text-6xl leading-none font-black tabular-nums">۴٫۸</span>
              <span className="flex flex-col gap-1 pb-1">
                <span className="flex gap-0.5" aria-label="۴٫۸ از ۵ ستاره">
                  {[0, 1, 2, 3, 4].map((star) => (
                    <StarIcon key={star} aria-hidden className="size-4 fill-[var(--dig-orange-400)] text-[var(--dig-orange-400)]" />
                  ))}
                </span>
                <span className="text-sm text-muted-foreground">از ۲٬۳۱۰ نظر</span>
              </span>
            </div>
            <ul className="flex flex-col gap-2.5">
              {BARS.map((bar) => (
                <li key={bar.stars} className="flex items-center gap-3 text-sm">
                  <span className="w-12 shrink-0 text-muted-foreground">{toFaDigits(bar.stars)} ستاره</span>
                  <Progress value={bar.share} aria-label={`${toFaDigits(bar.share)} درصد ${toFaDigits(bar.stars)} ستاره`} className="flex-1" />
                  <span className="w-10 shrink-0 text-end text-muted-foreground tabular-nums">٪{toFaDigits(bar.share)}</span>
                </li>
              ))}
            </ul>
          </div>
          <figure className="flex flex-col justify-between gap-8 rounded-xl border border-border bg-card p-6 sm:p-10">
            <blockquote className="text-2xl leading-relaxed font-bold text-balance">«سه سال با اکسل جنگیدیم. با آوند در یک هفته همهٔ شعبه‌ها روی یک داشبورد آمدند و حالا هر صبح می‌دانیم دیروز چه گذشت.»</blockquote>
            <figcaption className="flex items-center gap-4">
              <Avatar size="lg" alt="" src={stockImages.personWoman2.src} />
              <span className="flex flex-col">
                <span className="font-semibold">سارا محمدی</span>
                <span className="text-sm text-muted-foreground">مدیرِ عملیات، کافه رست</span>
              </span>
            </figcaption>
          </figure>
        </div>
        <div className="flex flex-wrap items-center justify-center gap-x-12 gap-y-6 border-t border-border pt-10">
          {LOGOS.map((logo) => (
            // eslint-disable-next-line @next/next/no-img-element -- لوگوی کوچکِ ثابت
            <img key={logo} src={`/logos/${logo}.svg`} alt="" className="h-8 w-auto grayscale" />
          ))}
        </div>
      </section>
    </ControlSizeProvider>
  )
}