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

کامپوننت‌ها

پالت فرمان

جستجوی سریع صفحه‌ها و عملیات با Ctrl+K، به سبک ابزارهای حرفه‌ای.

import { CommandPalette, type CommandItem } from "@kashi-ui/react";

نمونه

  • داشبورد
  • کاربران
  • گزارش‌ها
  • پروژهٔ جدید
  • دعوت همکارارسال لینک دعوت با ایمیل
  • تنظیمات

Ctrl+K یا ⌘K را بزنید.

const [open, setOpen] = useState(false);
const items: CommandItem[] = [
{ id: "home", label: "داشبورد", group: "صفحه‌ها", icon: <HomeIcon />, shortcut: "G D", href: "/" },
{ id: "users", label: "کاربران", group: "صفحه‌ها", keywords: ["users"], href: "/users" },
{ id: "new", label: "پروژهٔ جدید", group: "عملیات", shortcut: "N", onSelect: createProject },
];

<Button onClick={() => setOpen(true)}>جستجوی دستور <Kbd keys={["Ctrl", "K"]} /></Button>
<CommandPalette open={open} onOpenChange={setOpen} items={items} />

پالت را یک بار در ریشهٔ برنامه بگذارید. با shortcut (پیش‌فرض روشن) میان‌بر Ctrl+K (و ⌘+K در مک) در کل صفحه فعال است.

نامنوعپیش‌فرضتوضیح
open / onOpenChangeboolean / (open) => void—کنترل باز و بسته بودن
items{ id, label, group?, icon?, shortcut?, description?, keywords?, href?, onSelect? }[]—فرمان‌ها؛ با href به آن آدرس می‌رود
shortcutbooleantrueمیان‌بر سراسری Ctrl/⌘+K
placeholderstring«جستجوی صفحه یا فرمان…»
emptyMessageReactNode«نتیجه‌ای پیدا نشد.»
labels{ title?, navigate?, select?, close?, results? }—متن‌های راهنما و صفحه‌خوان

دسترس‌پذیری

روی <dialog> بومی ساخته شده، پس فوکوس داخل پنجره می‌ماند و پشت آن غیرفعال است. فیلد جستجو role="combobox" است و فهرست listbox؛ با ↑/↓ حرکت، Enter اجرا و Esc بسته می‌شود و فوکوس به دکمه‌ای که پالت را باز کرد برمی‌گردد.