رفتن به محتوای اصلی

دکمه آیکونی

وضعیت

هدفِ normative. پذیرش واقعی در وضعیت پذیرش طراحی؛ کلاس .icon-btn فقط در پروتوتایپ‌ها تعریف شده است (prototype-only).

هدف

اکشنی که آیکونش خودگویاست: بستن، بیشتر (⋯)، تغییر نمای تقویم. دایره‌ای، دو اندازه، همیشه با aria-label. جایی که معنی آیکون قطعی نیست، دکمهٔ متنی.

ساختار

<button class="icon-btn" aria-label="بستن">
<svg viewBox="0 0 24 24" width="20" height="20" ></svg>
</button>

SVG درون‌خطی، width/height صریح، currentColor برای رنگ.

گونه‌ها و اندازه‌ها

اندازهدکمهآیکون
پیش‌فرض۴۰px20px
کوچک۳۰px16px

گونهٔ رنگی جدا ندارد — همیشه شفاف؛ حالت فعال/انتخاب‌شده با پس‌زمینهٔ ظرف اعلام می‌شود.

حالت‌ها

حالتظاهر
defaultشفاف روی سطح
hoverپس‌زمینهٔ --surface-2 + آیکون به رنگ اصلی
focus-visibleحلقهٔ ۲px برند
activeمقیاس ۰٫۹۶
disabledکم‌رنگ؛ کلیک بی‌اثر
loading / error / successندارد (نپذیرفتن) — نتیجهٔ عمل با توست اعلام می‌شود

رفتار

  • کلیک = اکشن آنی؛ بدون تأخیر و بدون تأیید.
  • در نوارهای شلوغ، اکشن‌های فرعی در منوی جمع می‌شوند (الگوی منوی پاپ‌آور).

کیبورد و دسترس‌پذیری

  • aria-label فارسی همیشه — محتوای متنی ندارد.
  • Enter/Space فعال می‌کند؛ ترتیب فوکوس = ترتیب بصری (در RTL از راست).
  • اندازهٔ کوچک ۳۰px فقط برای متادیتای فشرده؛ هدف لمسی با padding اطراف به ۴۴px گسترش می‌یابد.

رفتار واکنش‌گرا

در همهٔ کلاس‌ها یکسان؛ اکشن‌های ثانویهٔ هدر وب روی موبایل در منوی overflow جمع می‌شوند (رفتار CalendarHeader).

قواعد محتوا

  • ✅ فقط برای آیکون‌های خودگویا و همه‌جا-شناخته.
  • ❌ آیکون بدون aria-label؛ دو آیکون متفاوت با یک label.

توکن‌ها

--surface-2 (هاور) · --brand (آیکون هاور) · شعاع کامل · --ease ۱۵۰ms.

پیاده‌سازی پلتفرم‌ها

  • وب: کامپوننت اشتراکی ندارد؛ ad hoc با Tailwind + aria-label — مرجع: CalendarHeader.tsx و Fab.tsx.
  • اندروید: component/IconButton.kt.
  • .icon-btn فقط در ui-design/prototypes/assets/app.css (prototype-only).

نمونهٔ تعاملی

کتابخانهٔ زندهٔ دکمهٔ آیکونی