میانبر صفحهکلید (KeyboardShortcut)
رندر هوشمند و وابسته به پلتفرم کلیدهای میانبر — ⌘ در مک، Ctrl در ویندوز
معرفی
KeyboardShortcut یک رندرکنندهٔ کلید وابسته به پلتفرم است. یک آرایهٔ keys میگیرد و بر اساس سیستمعامل بازدیدکننده، Meta←⌘/Ctrl، Alt←⌥/Alt، Shift←⇧، Enter←↵، فلشها و … را resolve میکند و سپس آنها را قالببندی میکند (⌘K، Ctrl Enter). برگرفته از KeyboardShortcut واقعی Studio، جایی که داخل کنترلهای پرترافیک (دکمهٔ Run در ویرایشگر SQL، منوی دستور) مینشیند.
چه زمانی استفاده کنیم:
- برای نمایش یک میانبر که باید با پلتفرم کاربر تطبیق پیدا کند (⌘ در مک، Ctrl در دیگر سیستمها)
- برای ترکیب چند کلید (
Meta + K،Shift + S) بهصورت یک برچسب قالببندیشده - کنار اقدامات (دکمهٔ اجرا، آیتم منو، فیلد جستجو) برای آموزش میانبر
چه زمانی استفاده نکنیم:
- برای ثبت واقعی میانبر (شنیدن کلیدها) — از
useHotkeys/HotkeyProviderاستفاده کنید؛ این کامپوننت فقط نمایشی است
یک نمایش برای میانبر
KeyboardShortcut تنها نمایش میانبر در سیستم طراحی است:
- میانبر واقعی ←
keys={['Meta', 'K']}؛ هر کلید برای سیستمعامل کاربر حل میشود (⌘ در مقابل Ctrl). - یک کلید ثابت ←
<KeyboardShortcut>Esc</KeyboardShortcut>؛ همانطور که نوشته شده کشیده میشود. - درون منو ←
keysرا بهDropdownMenuShortcut،CommandShortcutیاContextMenuShortcutبدهید؛ آنهاKeyboardShortcut variant="inline"را رندر میکنند.
عنصر رندرشده <kbd> است.
استفاده
import { KeyboardShortcut } from '@partodata/ui'
export default function SearchHint() {
return (
<div className="flex items-center gap-2">
<span className="text-sm">باز کردن جستجو:</span>
<KeyboardShortcut keys={['Meta', 'K']} />
</div>
)
}روی مک، Meta به ⌘ و روی سایر سیستمها به Ctrl تبدیل میشود. تشخیص پلتفرم پس از mount اجرا میشود (تا SSR و اولین رندر کلاینت هماهنگ بمانند و mismatch رخ ندهد) و بهصورت پیشفرض برچسبهای غیرمک را نشان میدهد.
حالتها و انواع
واریانت pill (پیشفرض)
یک چیپ خطدار.
<KeyboardShortcut keys={['Meta', 'Enter']} />واریانت inline
یک راهنمای درونخطی کمرنگتر برای متنهای جریاندار.
<KeyboardShortcut variant="inline" keys={['Shift', 'S']} />کلیدهای خاص
Meta، Alt، Shift، Enter، Esc، Tab و فلشها (ArrowUp/ArrowDown/ArrowLeft/ArrowRight) به نماد یا برچسب مناسب resolve میشوند. کلیدهای تککاراکتری پشت هم فشرده میشوند (⌘K) و کلیدهای چندکاراکتری با فاصله جدا میشوند (Ctrl Enter).
<KeyboardShortcut keys={['Meta', 'ArrowUp']} />
<KeyboardShortcut keys={['Esc']} />راهنمای استفاده
بکنید
- برای میانبرهای واقعی از
KeyboardShortcutاستفاده کنید تا ⌘/Ctrl per-platform درست نمایش داده شود - نام کلیدهای modifier را استاندارد بدهید (Meta,Alt,Shift) تا نماد درست resolve شود - برای متنهای درونخطی ازvariant="inline"استفاده کنید تا میانبر شلوغ دیده نشود
نکنید
- برای میانبر مک، دستی
⌘را هاردکد نکنید؛keys={['Meta', ...]}بدهید تا در ویندوز هم درست شود - این کامپوننت کلیدها را نمیشنود؛ برای ثبت واقعی میانبر ازuseHotkeysاستفاده کنید
جدول ویژگیها
KeyboardShortcut
دسترسیپذیری
- تشخیص پلتفرم پس از mount اجرا میشود تا SSR و اولین رندر کلاینت یکسان بمانند و hydration mismatch رخ ندهد
- این کامپوننت صرفاً نمایشی است؛ برای عملکرد واقعی میانبر، رویداد کیبورد را جدا با
useHotkeysثبت کنید و مطمئن شوید همان اقدام از راه دیگری (دکمه/منو) هم در دسترس است - برچسب کلید بهاندازهٔ کافی خوانا انتخاب شده (
Escبهجای ⎋ وTabبهجای ⇥) تا برای همه قابلفهم باشد - عنصر ریشه همیشه
dir="ltr"میگیرد. نمادهای ⌘ ⇧ ⌥ ↵ و پیکانها از نظر یونیکد «خنثی» (bidi class ON) هستند و در یک صفحهٔ RTL بدون این جداسازی، ترتیب نمایش برعکس میشود («⌘K» بهشکل «K⌘» و «Ctrl ↵» بهشکل «↵ Ctrl» رسم میشد). باdir="ltr"محتوای میانبر پاراگراف bidi مستقل خودش را میسازد و همیشه چپبهراست خوانده میشود
کامپوننتهای مرتبط
- use-hotkeys — برای ثبت واقعی میانبرها (شنیدن کلیدها)، از هوک useHotkeys استفاده کنید
- HotkeyProvider — برای مدیریت متمرکز میانبرها در سطح برنامه، از HotkeyProvider استفاده کنید
- CommandPalette — پالت دستور معمولاً میانبرها را با KeyboardShortcut کنار هر آیتم نشان میدهد