TaavUI Lab
Business Components

TaavModuleCard

کارت navigation تخصصی ERP برای ورود به ماژول، بخش تنظیمات، مرحله راه‌اندازی یا فرآیند سازمانی — presentation-only و جایگزین TaavCard عمومی نیست.

import { TaavModuleCard } from "@repo/ui/taav/business";

راهنمای استفاده

این کارت برای ورود به یک ماژول، بخش تنظیمات، مرحله راه‌اندازی یا فرآیند سازمانی استفاده می‌شود. منطق route، permission، تکمیل‌بودن، فعال‌بودن یا قفل‌بودن باید از اپ اصلی (DastRanj / VahedYek) پاس داده شود — این کامپوننت نباید خودش داده fetch کند یا business logic داشته باشد.

استفاده پایه

تم تیره — کارت‌های راه‌اندازی

نمونه نزدیک به اسکرین‌شات ERP تیره — پنج کارت دو ستونه با هدر الگویی.

تم روشن — کارت‌های راه‌اندازی

وضعیت‌ها

status variants

غیرفعال / قفل / بارگذاری

locked · disabled · loading

قفل‌شده

ابتدا مرحله قبلی را تکمیل کنید

غیرفعال

دسترسی به این بخش برای شما فعال نیست

گرید کارت ماژول

این بخش زیرمجموعه TaavModuleCard است و route جدا فقط برای backward compatibility نگه داشته می‌شود.

import { TaavModuleCard, TaavModuleCardGrid, TaavModuleCardGridItem } from "@repo/ui/taav/business";

<TaavModuleCardGrid columns={2} gap="md">
  <TaavModuleCardGridItem span={2}>
    <TaavModuleCard
      title="نوع مالکیت و اطلاعات پایه"
      description="ورود این اطلاعات در تنظیمات قرارداد ضروری است"
      href="#"
      width="full"
    />
  </TaavModuleCardGridItem>

  <TaavModuleCardGridItem>
    <TaavModuleCard
      title="نماینده قانونی"
      description="مدیریت و تنظیم قراردادها، فرم‌های رسمی و الحاقیه‌ها"
      status="incomplete"
      href="#"
    />
  </TaavModuleCardGridItem>

  <TaavModuleCardGridItem>
    <TaavModuleCard
      title="شرکای اصلی"
      description="مدیریت شرکای اصلی و اطلاعات مرتبط با کسب‌وکار"
      status="incomplete"
      href="#"
    />
  </TaavModuleCardGridItem>
</TaavModuleCardGrid>
mixed full-width + half-width

Props — Grid

Propنوعپیش‌فرضتوضیح
columns1 | 2 | 3 | 42تعداد ستون دسکتاپ — پیش‌فرض دو ستونه مانند ERP
gap'sm' | 'md' | 'lg' | 'xl'mdفاصله بین کارت‌ها
density'compact' | 'comfortable' | 'spacious'comfortableتراکم فاصله‌گذاری
responsivebooleantrueدر موبایل تک‌ستونه شود
children*ReactNodeکارت‌ها — ترجیحاً داخل TaavModuleCardGridItem

Props — Grid Item

Propنوعپیش‌فرضتوضیح
span1 | 2 | 3 | 41پوشش چند ستون — برای کارت full-width
responsivebooleantruespan واکنش‌گرا در breakpointهای کوچک

تفاوت با سایر کارت‌ها

راهنمای استفاده در DastRanj / VahedYek

  • TaavCard = سطح primitive عمومی — برای هر محتوای کارت‌مانند
  • TaavModuleCard = کارت navigation بیزینسی ERP — هدر الگویی، فلش ورود، توضیح مرکزی
  • TaavStatsCard = کارت metric/آمار — مقدار عددی و روند
  • TaavOptionCard = کارت انتخابی فرم — radio/checkbox/selectable option

Props

Propنوعپیش‌فرضتوضیح
title*ReactNodeعنوان ماژول یا بخش تنظیمات (RTL، راست‌چین در هدر)
descriptionReactNodeتوضیح کوتاه زیر هدر — می‌تواند شامل وضعیت مثل «(تکمیل نشده)» باشد
eyebrowReactNodeمتن کمکی بالای توضیح
status'default' | 'active' | 'complete' | 'incomplete' | 'locked' | 'disabled' | 'warning' | 'error'defaultوضعیت بصری — از اپ پاس داده می‌شود
statusLabelReactNodeبرچسب وضعیت جداگانه (اختیاری)
icon / arrowIconReactNodeآیکون سفارشی بدنه یا فلش هدر
hrefstringلینک navigation — بدون وابستگی به Next.js Link
onClick() => voidhandler کلیک — در صورت نبود href، دکمه رندر می‌شود
disabled / loading / selectedbooleanحالت‌های تعاملی
variant'default' | 'setup' | 'imageHeader' | 'compact' | 'flat'setupالگوی بصری کارت
tone'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info'neutralتن رنگ هدر/مرز
themeMode'auto' | 'light' | 'dark'autoتم اجباری کارت یا همگام با shell
size'sm' | 'md' | 'lg'mdاندازه تایپوگرافی و padding
width'auto' | 'full'autoعرض کارت داخل گرید
headerPattern'geometric' | 'subtle' | 'none'geometricالگوی CSS هدر — بدون asset تصویری
align'start' | 'center' | 'end'startتراز متن بدنه — پیش‌فرض راست‌چین RTL
direction'enter' | 'back'enterجهت فلش هدر (RTL)
ariaLabelstringبرچسب دسترس‌پذیری در صورت ناکافی بودن title/description

Design specs

Header height52px (md) — token: --taav-module-card-header-height
Header patternCSS geometric gradient — بدون asset تصویری
Titleراست‌چین در هدر RTL؛ فلش چپ
Body alignstart (پیش‌فرض RTL راست‌چین) — center برای حالت‌های خاص
Border / radius--taav-module-card-border / --taav-module-card-radius
Themesauto (shell) یا themeMode اجباری light/dark

Accessibility

راهنمای استفاده در DastRanj / VahedYek

  • کارت‌های clickable با <a> یا <button> رندر می‌شوند — keyboard accessible
  • focus-visible با --taav-focus-ring
  • disabled/locked با aria-disabled و بدون تعامل
  • وضعیت فقط با رنگ منتقل نشود — از description یا statusLabel استفاده کنید
  • در صورت نیاز ariaLabel بدهید

Do / Don't

انجام دهید

  • از TaavModuleCard برای ورود ماژول/تنظیمات/فرآیند استفاده کنید
  • status، disabled، href و onClick را از اپ پاس دهید
  • برای layout از TaavModuleCardGrid استفاده کنید
  • تم را با themeMode یا tokenهای shell کنترل کنید

انجام ندهید

  • TaavCard خام را برای navigation ماژول ERP جایگزین نکنید
  • route detection یا permission داخل کامپوننت ننویسید
  • asset تصویری برای هدر پیش‌فرض اضافه نکنید
  • clone محلی این الگو در apps نسازید

راهنمای DastRanj و VahedYek

راهنمای استفاده در DastRanj / VahedYek

  • لیست کارت‌ها را از state/route اپ بسازید — نه داخل TaavUI
  • متن «(تکمیل نشده)» را در description یا statusLabel از منطق تکمیل اپ بگذارید
  • کارت قفل‌شده: status="locked" یا disabled — handler ندهید
  • برای صفحات setup تیره DastRanj: themeMode="dark" یا shell تیره با themeMode="auto"