بلاک‌ها · پشتیبانی و محتوا

تماس بدونِ فرم: کارت‌های کانال (گفت‌وگو، تلفن، ایمیل، تلگرام) هر کدام با مقدار و یک اقدامِ مستقیم؛ سریع‌ترین راه برجسته.

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

این بلاک از ۴ آیتم دیگ استفاده می‌کند: buttoncontrol-sizeiconspersian

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

۲. کد صفحه

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

contact-simple.tsx
"use client"

import { ChatIcon, EnvelopeIcon, PhoneIcon, TelegramLogo } from "@/components/icons"
import { Button } from "@/components/ui/button"
import { ControlSizeProvider } from "@/components/ui/control-size"
import { toFaDigits } from "@/lib/persian"

const CHANNELS = [
  { icon: <ChatIcon />, title: "گفت‌وگوی آنلاین", text: "سریع‌ترین راه؛ معمولاً زیرِ ۱۰ دقیقه.", action: "شروعِ گفت‌وگو", primary: true },
  { icon: <PhoneIcon />, title: "تلفن", text: toFaDigits("021-91001234"), action: "تماس", ltr: true },
  { icon: <EnvelopeIcon />, title: "ایمیل", text: "hello@avand.example", action: "نوشتنِ ایمیل", ltr: true },
  { icon: <TelegramLogo />, title: "تلگرام", text: "@avand_support", action: "پیام در تلگرام", ltr: true },
]

/**
 * تماسِ ساده: بدونِ فرم، فقط کانال‌ها. هر کارت آیکون، عنوان، مقدار (شماره و ایمیل با
 * جهتِ چپ‌به‌راست) و یک اقدامِ مستقیم دارد؛ سریع‌ترین راه با دکمهٔ اصلی برجسته است.
 */
export default function ContactSimpleBlock() {
  return (
    <ControlSizeProvider size="xl" asChild>
      <main className="mx-auto flex w-full max-w-4xl flex-col gap-12 px-4 py-20 sm:px-6">
        <header className="mx-auto flex max-w-xl flex-col items-center gap-3 text-center">
          <h1 className="text-4xl font-black">چطور کمکت کنیم؟</h1>
          <p className="text-lg leading-8 text-muted-foreground">هر راهی که راحت‌تری؛ آدمِ واقعی جواب می‌دهد.</p>
        </header>
        <ul className="grid grid-cols-1 gap-4 sm:grid-cols-2">
          {CHANNELS.map((channel) => (
            <li key={channel.title} className="flex flex-col gap-5 rounded-xl border border-border bg-card p-6">
              <span aria-hidden className="flex size-12 items-center justify-center rounded-xl bg-subtle text-brand-secondary [&>svg]:size-6">
                {channel.icon}
              </span>
              <div className="flex flex-col gap-1">
                <span className="font-bold">{channel.title}</span>
                {channel.ltr ? (
                  <bdi dir="ltr" className="text-start text-muted-foreground">
                    {channel.text}
                  </bdi>
                ) : (
                  <span className="text-muted-foreground">{channel.text}</span>
                )}
              </div>
              <Button variant={channel.primary ? "default" : "outline"} className="mt-auto self-start">
                {channel.action}
              </Button>
            </li>
          ))}
        </ul>
      </main>
    </ControlSizeProvider>
  )
}