دکمه — Button
کپی کد کنش اصلی یا ثانویهٔ صفحه است و عنصر بومی کپی کد را رندر میکند. برای ارسال فرم، شروع یک عملیات ناهمگام و تأیید یک گام استفاده شود. ساختار DOM، رفتار کلیک، کپی کد در حالت در حال انجام و قرارداد کیبورد ثابتاند؛ تمها فقط رنگها، زمانها و منحنیها را از توکنهای معنایی میگیرند.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Button } from '@tokapps/tuk';نمونهٔ زنده
کد قابل کپی
پایه و واریانتها
import { Button } from '@tokapps/tuk';export function IdeaActions() { return ( <> <Button>ثبت ایده</Button> <Button variant="secondary">انصراف</Button> <Button variant="ghost">بعداً</Button> </> );}کنش ناهمگام با آیکون
وقتی کپی کد داده شود، دکمه تا پایان Promise در حالت در حال انجام میماند و حلقهٔ پردازش سراسری روشن است. لازم نیست خودتان کپی کد را صدا بزنید.
import { Button } from '@tokapps/tuk';import { Icon } from '@tokapps/icons';// saveIdea را خودتان پیادهسازی کنید؛ خطا را throw کنید تا دکمه به حالت عادی برگردد.declare function saveIdea(): Promise<void>;export function SubmitIdea() { return ( <Button variant="primary" size="lg" icon={<Icon name="check" size="sm" aria-hidden />} action={() => saveIdea()} > ارسال ایده </Button> );}آیکون با انیمیشن
انیمیشن آیکون از خود کپی کد میآید: کپی کد (کپی کد · کپی کد · کپی کد · کپی کد · کپی کد) و کپی کد. با کپی کد حرکت با hover یا فوکوس خود دکمه اجرا میشود؛ کپی کد (پیشفرض کپی کد) پیوسته است و برای جلب توجه تنها یکبار در هر نما به کار میرود. در کپی کد هیچ آیکونی حرکت نمیکند.
import { Button } from '@tokapps/tuk';import { Icon } from '@tokapps/icons';export function IconMotionButtons() { return ( <> <Button icon={<Icon name="notification" size="sm" animate="wiggle" trigger="hover" />}>اعلانها</Button> <Button variant="secondary" icon={<Icon name="download" size="sm" animate="bounce" trigger="hover" />}>دانلود</Button> <Button variant="ghost" icon={<Icon name="sparkles" size="sm" animate="pulse" trigger="hover" />}>پیشنهاد</Button> <Button variant="secondary" icon={<Icon name="check" size="sm" animate="draw" trigger="hover" />}>تأیید</Button> <Button variant="ghost" icon={<Icon name="settings" size="sm" animate="spin" trigger="hover" />}>تنظیمات</Button> </> );}برای دکمهٔ خطر، همان حرکت با کپی کد:
import { Button } from '@tokapps/tuk';import { Icon } from '@tokapps/icons';export function DangerIconButton() { return ( <Button tone="danger" variant="secondary" icon={<Icon name="delete" size="sm" animate="wiggle" trigger="hover" />}> حذف ایده </Button> );}حالت در حال انجام، غیرفعال و بیصدا
import { Button } from '@tokapps/tuk';type Props = { busy: boolean; canContinue: boolean; onContinue: () => void;};export function AuthStep({ busy, canContinue, onContinue }: Props) { return ( <Button variant="primary" loading={busy} disabled={!canContinue} sound={false} onClick={onContinue} > ادامه </Button> );}همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد · کپی کد · کپی کد | کپی کد | نقش بصری. کپی کد پسزمینهٔ کپی کد دارد، کپی کد پسزمینهٔ سطح و کپی کد بیپسزمینه است. |
| کپی کد | کپی کد · کپی کد · کپی کد | کپی کد | ارتفاع از کپی کد. کپی کد متن بزرگتر (کپی کد) دارد. |
| کپی کد | کپی کد · کپی کد | کپی کد | لحن کنش. کپی کد با کپی کد تهرنگ کپی کد و متن کپی کد میگیرد؛ با کپی کد/کپی کد فقط متن کپی کد. جفت رنگ همیشه از توکنهاست؛ قانون: کپی کد. |
| کپی کد | کپی کد | — | آیکون پیش از برچسب، معمولاً کپی کد با کپی کد. انیمیشن آیکون با کپی کد داده میشود (بخش «آیکون با انیمیشن»). وقتی کپی کد فعال است جای آن را چرخنده میگیرد. |
| کپی کد | کپی کد | — (معادل کپی کد) | آیکون چرخان، کپی کد و کلیک نادیده گرفته میشود. |
| کپی کد | کپی کد | — | عملیات ناهمگام. تا پایان Promise دکمه کپی کد است. اگر کپی کد با کپی کد کار را لغو کند، اجرا نمیشود. |
| کپی کد | رویداد کپی کد · کپی کد | کپی کد | رویداد صوتی هنگام کلیک. کپی کد یعنی این نمونه بیصداست. فقط وقتی پخش میشود که مقصد (کپی کد یا مقصد سراسری) ثبت باشد. |
| کپی کد | کپی کد | — | مقصد اختصاصی همین نمونه؛ معمولاً کپی کد از کپی کد. |
| کپی کد | کپی کد · کپی کد | کپی کد | کپی کد یعنی در چاپ پنهان میشود. |
| کپی کد | کپی کد · کپی کد · کپی کد | کپی کد | پیشفرض در کد کپی کد است تا دکمه بیقصد فرم را نفرستد. |
| کپی کد | کپی کد | — | وقتی دکمه در حال انجام است اجرا نمیشود. با کپی کد کردن، کپی کد و کپی کد هم اجرا نمیشوند. |
| کپی کد | کپی کد | — | ویژگی بومی کپی کد؛ با کپی کد کدر و بیپاسخ میشود. |
| کپی کد | کپی کد | — | کلاس روی ریشه، برای چیدمان. رنگ را با کلاس عوض نکنید. |
| کپی کد | کپی کد | — | برچسب دکمه. |
بهعلاوه همهٔ ویژگیهای کپی کد (مانند کپی کد، کپی کد، کپی کد، کپی کد) از کپی کد پذیرفته میشوند.
ساختار و اسلاتها
button[data-tds="button"][data-variant][data-size][data-print] ├─ آیکون یا چرخنده (وقتی busy است، فقط چرخنده) └─ children (برچسب)- عنصر ریشه همان کپی کد بومی است؛ بدون لایهٔ میانی.
- کپی کد، کپی کد، کپی کد و کپی کد بنیان ثابتاند و از کپی کد میآیند.
- هیچ کپی کد یا کپی کد ندارد؛ ساختار یکسطحی است.
- آیکون و برچسب قابلتغییرند؛ ترتیب آنها ثابت است (آیکون پیش از برچسب).
همهٔ حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| پیشفرض | واریانت و اندازه | رنگ پسزمینهٔ همان واریانت |
| hover | کپی کد | کپی کد: کپی کد؛ کپی کد: کپی کد؛ کپی کد: پسزمینهٔ کپی کد و متن پررنگتر |
| active (فشردن) | کپی کد | مقیاس کپی کد؛ کپی کد رنگ کپی کد |
| focus-visible | کپی کد | حلقهٔ فوکوس با کپی کد و ضخامت کپی کد |
| disabled | صفت بومی کپی کد (کپی کد) | کدری کپی کد، بدون پاسخ به نشانگر |
| loading | پراپ کپی کد، یا کپی کد در حال اجرا؛ کپی کد | نشانگر کپی کد، آیکون چرخان، کلیک نادیده. دکمه کدر نمیشود |
| کپی کد | در کپی کد پنهان | |
| pressed / selected | در کد تعریف نشده | برای دکمهٔ دوحالته، کپی کد را مصرفکننده بدهد؛ استایل مخصوص در CSS نیست |
تغییرات مجاز برای توسعهدهنده
- واریانت: کپی کد (حداکثر یکی در هر نما)، کپی کد، کپی کد.
- اندازه: کپی کد، کپی کد، کپی کد.
- آیکون: پراپ کپی کد با کپی کد و نام معنایی.
- وضعیت اجرا: کپی کد دستی یا کپی کد ناهمگام.
- صدا: کپی کد برای تغییر رویداد یا کپی کد برای بیصدا کردن، و کپی کد برای مقصد اختصاصی.
- چاپ: کپی کد اگر دکمه باید روی کاغذ بماند.
- نقاط توسعه: کپی کد روی ریشه، کپی کد، همهٔ ویژگیهای کپی کد، و handlerهای کپی کد و کپی کد.
- توکن در سطح کامپوننت: متغیرهای کپی کد (شعاع، فاصلهها، padding، مقیاس فشردن، زمان و منحنی گذار، کدری غیرفعال) در کپی کد تعریف شدهاند. تغییر آنها باید از مسیر توکن انجام شود، نه با بازنویسی قاعدهها.
- متن داخلی: کپی کد متن ثابت ندارد؛ هر برچسبی از کپی کد میآید.
تغییرات ممنوع (بنیان ثابت)
- ساختار DOM: عنصر کپی کد بومی و ترتیب آیکون و برچسب. عنصر میانی اضافه نمیشود.
- صفتهای کپی کد، کپی کد، کپی کد و کپی کد و مقدارهای آنها.
- رنگ خام یا گرادیان در کد رابط. رنگ فقط از توکن معنایی میآید.
- رفتار حالت در حال انجام: کلیک نادیده گرفته میشود، کپی کد و کپی کد خودکار تنظیم میشوند و کپی کد تا پایان Promise دکمه را در حالت انجام نگه میدارد.
- حرکت در کپی کد: چرخش حذف میشود و فقط نشانهٔ کپی کد میماند.
- ناوبری: برای رفتن به صفحهٔ دیگر از دکمه استفاده نمیشود (از لینک استفاده کنید).
- هدف لمسی: کپی کد حداقل ۴۴px را الزامی میداند. اندازهٔ کپی کد از کپی کد میآید و اگر این توکن کمتر از ۴۴px باشد، در موبایل کپی کد یا کپی کد انتخاب شود.
RTL، کیبورد و صفحهخوان
- RTL: کپی کد و کپی کد منطقیاند؛ آیکون در جهت خوانش پیش از متن مینشیند (در RTL سمت راست). آیکونهای جهتدار با کپی کد برمیگردند.
- کیبورد: کپی کد ورود و خروج فوکوس؛ کپی کد و کپی کد فعالسازی. این رفتار از عنصر بومی کپی کد میآید.
- فوکوس: حلقهٔ فوکوس مرئی با کپی کد در همهٔ تمها؛ کنتراست حداقل ۳:۱.
- صفحهخوان: نام دکمه از کپی کد خوانده میشود. در حالت کپی کد، کپی کد اعلام میشود و کپی کد سراسری وضعیت را اعلام میکند.
- دکمهٔ فقطآیکون: کپی کد پراپ کپی کد را اجباری نمیکند؛ برای دکمهٔ فقطآیکون از IconButton استفاده کنید که کپی کد را اجباری دارد.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: پیشفرض کپی کد است و opt-in است؛ هنگام کلیک پخش میشود و hover بیصداست. مقصد صدا یا کپی کد است، یا مقصد سراسری که اپ ثبت کرده. بدون هیچکدام بیصداست. کپی کد برای احراز هویت، پرداخت و سرمایهگذاری توصیه میشود. معادل بصری صدا حالت کپی کد و آیکون وضعیت است.
- حرکت: فشردن با کپی کد (کپی کد)، تغییر رنگ با کپی کد (کپی کد)، و چرخش کپی کد با کپی کد. نامها معناییاند و از کپی کد نگاشت میشوند.
- کاهش حرکت: در کپی کد و کپی کد چرخش ثابت میشود و فقط نشانهٔ کپی کد میماند. زمان گذار را توکن تعیین میکند.
- چاپ: پیشفرض کپی کد است، چون کنش تعاملی روی کاغذ معنا ندارد. اگر دکمه باید دیده شود، کپی کد بدهید.
توکنها
- معنایی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- کامپوننتی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- کنترل و تایپوگرافی: کپی کد، کپی کد، کپی کد، کپی کد.
- مسیر: مقدارها در کپی کد؛ فهرست مصرفی در کپی کد.
قرارداد ARCH
- آیکون فقط با کپی کد و نام معنایی داده میشود؛ مسیر فایل تصویری در کد مصرفکننده نمیآید.
- تم فقط حرکت و توکن را عوض میکند؛ ساختار DOM، ARIA و رفتار کیبورد ثابت میمانند.
- این کامپوننت gesture ندارد؛ معادل کیبوردی همان کپی کد و کپی کد بومی است.
نکات
- برای دکمهٔ فقطآیکون از IconButton استفاده کنید.
- برای یک کنش اصلی با گزینههای جانبی از SplitButton استفاده کنید.
- کنش مخرب را پیش از اجرا با AlertDialog تأیید کنید.
- ناوبری بین صفحهها با لینک انجام میشود: با کپی کد (یا کپی کد برای کپی کد فریمورک) همان ظاهر دکمه روی کپی کد رندر میشود.
دکمه با ظاهر پیوند (href / as)
<Button href="/docs" variant="secondary">مستندات</Button><Button href="https://tokapps.com" target="_blank">سایت توکاپس</Button> {/* rel="noopener noreferrer" خودکار */}<Button as={Link} href="/profile">پروفایل</Button> {/* Link از next/link */}با کپی کد عنصر کپی کد رندر میشود (نقش link، نه button)؛ کپی کد نمیگیرد. کپی کد روی پیوند کپی کد، کپی کد و جلوگیری از ناوبری را میدهد. کنش (ثبت، حذف) همچنان دکمهٔ بومی است.