TaavUI Lab
Form Selection

TaavChoiceChipGroup

تنها کامپوننت انتخاب چیپی TaavUI برای فرم‌های کسب‌وکار. عنوان و توضیحات اختیاری، سایز و tone قابل تنظیم، بدون border کلی.

import { TaavChoiceChipGroup } from "@repo/ui/taav/forms";

فقط از props رسمی TaavUI استفاده کنید. unsafeClassName و escape hatchهای مشابه فقط برای موارد نادر هستند و نباید در مثال‌های عادی دیده شوند.

توضیح الگو

تک‌انتخابی (single): پس‌زمینه فیروزه‌ای + بدون تیک
چندانتخابی (multiple): پس‌زمینه فیروزه‌ای + تیک سمت راست متن در RTL

label و description اختیاری هستند و داخل خود کامپوننت رندر می‌شوند.
برای tag/removable از TaavChip و برای وضعیت از TaavStatusBadge استفاده کنید.

Screenshot-like RTL demo

نمای مرجع برای فرم‌های RTL

Persian company typepill / label + chips
نوع شخصیت حقوقی

این چیپ برای انتخاب گزینه‌ها در فرم است و در حالت انتخاب‌شده، border حذف می‌شود و background فیروزه‌ای می‌گیرد.

<TaavChoiceChipGroup
  label="نوع شخصیت حقوقی"
  description="نوع ساختار حقوقی کسب‌وکار را انتخاب کنید."
  options={options}
  value={value}
  onValueChange={setValue}
  size="lg"
  tone="brand"
/>

Single selection

radiogroup / بدون تیک
نوع شرکت

در تک‌انتخابی فقط پس‌زمینه فیروزه‌ای دیده می‌شود؛ بدون تیک.

مقدار انتخاب‌شده: private-joint-stock

Multiple selection

group / با تیک
سیاست‌های کاری

در چندانتخابی، هر گزینه انتخاب‌شده تیک خودش را سمت راست متن نشان می‌دهد.

انتخاب‌های فعال: remote, full-time

States

single / multiple / invalid
تک‌انتخابی

بدون تیک — فقط پس‌زمینه انتخاب‌شده

چندانتخابی

با تیک داخل هر چیپ انتخاب‌شده

حالت نامعتبر

Sizes

sm / md / lg
سایز sm
سایز md
سایز lg

Tones

neutral / brand / semantic
Tone: neutral
Tone: brand
Tone: success
Tone: warning
Tone: danger
Tone: info

Light / Dark preview

نوع شخصیت حقوقی

این چیپ برای انتخاب گزینه‌ها در فرم است و در حالت انتخاب‌شده، border حذف می‌شود و background فیروزه‌ای می‌گیرد.

نوع شخصیت حقوقی

این چیپ برای انتخاب گزینه‌ها در فرم است و در حالت انتخاب‌شده، border حذف می‌شود و background فیروزه‌ای می‌گیرد.

Props

Propنوعپیش‌فرضتوضیح
options*TaavChoiceChipOption[]لیست label/value/disabled/icon
labelReactNodeعنوان اختیاری بالای گروه
description / hintReactNodeتوضیح اختیاری زیر عنوان
requiredbooleanfalseنشان الزامی کنار عنوان
value / defaultValuestring | string[]حالت controlled یا uncontrolled
onValueChange(value: string | string[]) => voidبازگشت مقدار جدید گروه
selectionMode'single' | 'multiple'singlesingle بدون تیک، multiple با تیک
size'sm' | 'md' | 'lg'mdسایز چیپ‌ها و تایپوگرافی label/description
tone'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info'brandرنگ حالت انتخاب‌شده
wrapbooleantrueشکستن به خط بعد
gap'sm' | 'md' | 'lg'mdفاصله بین chipها
align'start' | 'center' | 'end'startتراز ردیف چیپ‌ها
invalid / disabledbooleanحالت خطا یا غیرفعال
ariaLabelstringوقتی label مرئی ندارید — مثلاً داخل TaavFieldBlock

Design specs

ShellNo outer borderفقط چیپ‌ها border دارند
Gap mdvar(--taav-choice-chip-group-gap-md)
Single selectFill only — no check iconselectionMode="single"
Multiple selectFill + check on right (RTL)selectionMode="multiple"

Accessibility notes

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

  • در حالت single از role="radiogroup" و role="radio" استفاده می‌شود.
  • در حالت multiple هر چیپ با role="checkbox" اعلام می‌شود.
  • اگر label مرئی دارید، ariaLabel لازم نیست؛ در غیر این صورت ariaLabel بدهید.
  • description با aria-describedby به گروه متصل می‌شود.

Do / Don’t

انجام دهید

  • برای انتخاب‌های محدود کسب‌وکار فقط از TaavChoiceChipGroup استفاده کنید.
  • برای عنوان و توضیح از props داخلی label و description استفاده کنید.
  • داخل TaavFieldBlock می‌توانید label را به FieldBlock بسپارید و روی گروه ariaLabel بگذارید.

انجام ندهید

  • چیپ انتخابی جداگانه نسازید — فقط TaavChoiceChipGroup export شده است.
  • Dropdown را برای انتخاب‌های محدود و قابل مشاهده ترجیح ندهید.
  • border کلی دور گروه اضافه نکنید.