QuickActions
عرض شاملimport { QuickActionItemLayout, QuickActions, QuickActionsLayout } from '@nili/ui';هذه صفحة العرض الشامل الخاصة بالمكتبة، معروضة حيّة. غيّر اللغة أو السمة من الأعلى وسَتتبعك.
تخطيط الشبكة
التخطيط الافتراضي. استخدم columns للتحكّم في الكثافة؛ وتبقى العناصر مقروءة على الشاشات الضيّقة.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
import { RiFileAddLine, RiUserAddLine, RiUploadCloud2Line } from "@remixicon/react"
export function Example() {
return (
<QuickActions label="Quick actions" columns={2}>
<QuickActionItem
icon={<Icon icon={RiFileAddLine} />}
tone="primary"
description="Create a draft invoice"
>
New invoice
</QuickActionItem>
<QuickActionItem
icon={<Icon icon={RiUserAddLine} />}
tone="feature"
description="Send an invite link"
>
Invite member
</QuickActionItem>
<QuickActionItem
icon={<Icon icon={RiUploadCloud2Line} />}
tone="success"
description="Attach a PDF or image"
>
Upload file
</QuickActionItem>
</QuickActions>
)
}مع عنوان وإجراء
عنوان اختياري فوق المجموعة، مع عنصر تحكّم في النهاية (مثل «عرض الكل»).
import { QuickActions, QuickActionItem, Icon, Button } from "@nili/ui"
export function Example() {
return (
<QuickActions
title="Get started"
action={<Button appearance="ghost" size="sm">See all</Button>}
columns={2}
>
<QuickActionItem icon={<Icon icon={RiFileAddLine} />} tone="primary">
New invoice
</QuickActionItem>
<QuickActionItem icon={<Icon icon={RiUserAddLine} />} tone="feature">
Invite member
</QuickActionItem>
</QuickActions>
)
}المظاهر
card (الافتراضي) وtile وghost وlist. اختر الوزن الذي يناسب السطح المحيط.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
export function Example() {
return (
<QuickActions columns={2}>
<QuickActionItem appearance="card" icon={<Icon icon={RiFileAddLine} />}>
Card
</QuickActionItem>
<QuickActionItem appearance="tile" icon={<Icon icon={RiUserAddLine} />}>
Tile
</QuickActionItem>
<QuickActionItem appearance="ghost" icon={<Icon icon={RiSettings3Line} />}>
Ghost
</QuickActionItem>
<QuickActionItem appearance="list" icon={<Icon icon={RiShareForwardLine} />}>
List
</QuickActionItem>
</QuickActions>
)
}درجات الأيقونة
لون شريحة الأيقونة. وneutral هو الافتراضي؛ استخدم الدرجات الدلالية للمعنى.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
export function Example() {
return (
<QuickActions columns={3}>
<QuickActionItem icon={<Icon icon={RiFileAddLine} />} tone="primary">
Primary
</QuickActionItem>
<QuickActionItem icon={<Icon icon={RiUserAddLine} />} tone="success">
Success
</QuickActionItem>
<QuickActionItem icon={<Icon icon={RiSettings3Line} />} tone="error">
Error
</QuickActionItem>
</QuickActions>
)
}البلاطات الرأسية
أيقونة فوق التسمية — نمط البلاطة المربّعة المستخدم في شاشات الهاتف الرئيسية والحالات الفارغة.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
export function Example() {
return (
<QuickActions columns={4}>
<QuickActionItem
layout="vertical"
appearance="tile"
icon={<Icon icon={RiFileAddLine} />}
tone="primary"
>
Invoice
</QuickActionItem>
<QuickActionItem
layout="vertical"
appearance="tile"
icon={<Icon icon={RiUserAddLine} />}
tone="feature"
>
Invite
</QuickActionItem>
</QuickActions>
)
}تخطيط الصف
تمرير أفقي بدل الالتفاف — يُبقي صفّ الاختصارات في سطر واحد على الشاشات الضيّقة.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
export function Example() {
return (
<QuickActions layout="row" label="Shortcuts">
<QuickActionItem icon={<Icon icon={RiFileAddLine} />} tone="primary">
New invoice
</QuickActionItem>
<QuickActionItem icon={<Icon icon={RiUserAddLine} />} tone="feature">
Invite
</QuickActionItem>
<QuickActionItem icon={<Icon icon={RiUploadCloud2Line} />} tone="success">
Upload
</QuickActionItem>
</QuickActions>
)
}قائمة مع اختصار
عناصر قائمة مسطّحة مع تلميحات لوحة المفاتيح — مفيدة داخل لوحات الأوامر أو القوائم.
import { QuickActions, QuickActionItem, Icon } from "@nili/ui"
export function Example() {
return (
<QuickActions columns={1}>
<QuickActionItem
appearance="list"
icon={<Icon icon={RiFileAddLine} />}
shortcut="⌘N"
>
New invoice
</QuickActionItem>
<QuickActionItem
appearance="list"
icon={<Icon icon={RiUserAddLine} />}
shortcut="⌘I"
active
>
Invite member
</QuickActionItem>
</QuickActions>
)
}التذييل
تذييل لوحة الأوامر: تلميحات لوحة المفاتيح في جهة، ورابط مركز المساعدة في الأخرى. ركّبه تحت قائمة من QuickActionItem — فهو ليس تصديرًا منفصلًا.
import { QuickActions, QuickActionItem, Icon, LinkButton } from "@nili/ui"
import {
RiFileAddLine,
RiUserAddLine,
RiArrowUpLine,
RiArrowDownLine,
RiCornerDownLeftLine,
} from "@remixicon/react"
export function Example() {
return (
<div className="overflow-hidden rounded-xl border border-soft-200 bg-white-0">
<QuickActions columns={1} className="p-1">
<QuickActionItem
appearance="list"
icon={<Icon icon={RiFileAddLine} />}
shortcut="⌘N"
>
New invoice
</QuickActionItem>
<QuickActionItem
appearance="list"
icon={<Icon icon={RiUserAddLine} />}
shortcut="⌘I"
>
Invite member
</QuickActionItem>
</QuickActions>
<div className="flex flex-wrap items-center justify-between gap-3 border-t border-soft-200 px-4 py-3 text-[12px] leading-4 text-sub-600">
<div className="flex flex-wrap items-center gap-4">
<span className="flex items-center gap-1">
<kbd className="flex size-5 items-center justify-center rounded-md border border-soft-200 bg-weak-50">
<Icon icon={RiArrowUpLine} />
</kbd>
<kbd className="flex size-5 items-center justify-center rounded-md border border-soft-200 bg-weak-50">
<Icon icon={RiArrowDownLine} />
</kbd>
to navigate
</span>
<span className="flex items-center gap-1">
<kbd className="flex size-5 items-center justify-center rounded-md border border-soft-200 bg-weak-50">
<Icon icon={RiCornerDownLeftLine} />
</kbd>
to select
</span>
</div>
<span>
Not what you're looking for?{" "}
<LinkButton color="primary" size="sm" underline href="#">
Help Center
</LinkButton>
</span>
</div>
</div>
)
}QuickActionDescription
داخليQuickActionIcon
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| tone | neutral | primary | information | success | warning | error | feature | away | verified | neutral | |
| size | sm | md | md |
QuickActionItem
extends Omit< ComponentPropsWithoutRef<'button'>, 'children' | 'title' >
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| appearance | card | tile | ghost | list | card | |
| layout | horizontal | vertical | horizontal | |
| size | sm | md | md | |
| active | boolean | false | Marks the shortcut as the one in effect: adds `aria-pressed`. |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| disabled | boolean | — | |
| required | boolean | — | |
| readOnly | boolean | — | |
| value | string | — | |
| defaultValue | string | — | |
| name | string | — | |
| aria-label | string | — | |
| tone | error | warning | success | feature | verified | away | primary | neutral | information | neutral | Colour of the icon chip. |
| icon | ReactNode | — | The glyph. Wrapped in a tinted chip unless `iconWrapper={false}`. |
| iconWrapper | boolean | true | Set `false` to drop the tinted chip and render the glyph bare. |
| sublabel | ReactNode | — | Figma `💬 Sublabel` — muted text on the *label's* line. |
| description | ReactNode | — | Second line under the label. |
| badge | ReactNode | — | Figma `🎖️ Badge` — beside the label. |
| shortcut | ReactNode | — | Keyboard hint at the trailing edge, e.g. `'⌘N'`. |
| endAdornment | ReactNode | — | Anything at the trailing edge — a Badge, a count, a chevron. |
| asChild | boolean | false | Render the child element instead of a `<button>` — for router links. |
QuickActionLabel
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| size | sm | md | md |
QuickActionShortcut
داخليQuickActions
extends Omit< ComponentPropsWithoutRef<'div'>, 'title' >
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| layout | grid | row | grid | |
| size | sm | md | md |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| columns | number | 2 | Columns, when `layout="grid"`. A number is applied at every width; pass a Tailwind class through `className` instead if you need it responsive. |
| label | string | — | Accessible name for the group, e.g. `'Quick actions'`. |
| title | ReactNode | — | Optional heading rendered above the group; also names it. |
| action | ReactNode | — | Trailing control beside the title — "See all", a menu. |