Sidebar
عرض شاملimport { Sidebar, SidebarCard, SidebarDot, SidebarFooter, SidebarGroup, SidebarHeader } from '@nili/ui';هذه صفحة العرض الشامل الخاصة بالمكتبة، معروضة حيّة. غيّر اللغة أو السمة من الأعلى وسَتتبعك.
اللوحة
ترويسة ومجموعات عناصر وتذييل. وتطوي نفسها: اترك collapsed دون تمرير فتحتفظ اللوحة بحالتها، ويطويها أي SidebarTrigger بداخلها. فشريط جانبي يحتاج إلى أن يكتب التطبيق useState قبل أن يُطوى هو ما تشحنه معظم التطبيقات غير قابل للطي.
import {
Sidebar, SidebarHeader, SidebarGroup, SidebarItem,
SidebarFooter, SidebarUser, SidebarTrigger, Icon,
} from "@nili/ui"
import { RiHome5Line, RiFolderLine } from "@remixicon/react"
export function Example() {
return (
<Sidebar label="Main">
<SidebarHeader
logo={<PlaceholderLogo company="apex-financial" size="sm" label="" />}
title="Apex Financial"
subtitle="Pro plan"
action={<SidebarTrigger />}
collapsedAction={<SidebarTrigger />}
/>
<SidebarGroup label="Main">
<SidebarItem icon={<Icon icon={RiHome5Line} />} href="#">Home</SidebarItem>
<SidebarItem icon={<Icon icon={RiFolderLine} />} href="#" active>
Projects
</SidebarItem>
</SidebarGroup>
<SidebarFooter>
<SidebarUser
avatar={<Avatar size="sm" name="Ada Lovelace" tone="blue" />}
name="Ada Lovelace"
email="ada@nili.design"
/>
</SidebarFooter>
</Sidebar>
)
}الشريط الضيّق
الموسّع والمطوي مكوّن واحد: فكل صف هو الصف نفسه بتسمية تلاشت إلى عرض صفر، فالصف المضاف إلى أحدهما مضاف إلى كليهما. وتبقى التسميات في DOM بدل إزالتها — فشريط من أيقونات بلا تسميات هو التخطيط الأحوج إلى أسمائه الوصفية.
import { Sidebar } from "@nili/ui"
export function Example() {
const [collapsed, setCollapsed] = useState(true)
return (
<Sidebar
collapsed={collapsed}
onCollapsedChange={setCollapsed}
label="Main"
>
…
</Sidebar>
)
}Sidebar
extends ComponentPropsWithoutRef<'nav'>
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| collapsed | boolean | false | The rail. One boolean rather than a second component: every row is the same row with its label faded out. |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| label | string | — | Accessible name, e.g. "Main". A page usually has more than one `<nav>`, and "navigation, navigation, navigation" is not a landmark list. |
SidebarFooter
SidebarGroup
extends ComponentPropsWithoutRef<'div'>
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| label | string | — | Figma's "MAIN" / "FAVS" caption. Becomes a rule on the rail. |
SidebarGroupLabel
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| collapsed | 'true' | 'false' | false |
SidebarHeader
extends Omit< ComponentPropsWithoutRef<'div'>, 'title' >
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| collapsed | 'true' | 'false' | false |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| logo | ReactNode | — | The workspace mark — a `PlaceholderLogo`, an `Avatar`, an `<img>`. |
| title | ReactNode | — | |
| subtitle | ReactNode | — | |
| action | ReactNode | — | Figma's workspace switcher, on the trailing edge. Hidden on the rail. |
SidebarItem
extends Omit< ComponentPropsWithoutRef<'a'>, 'color' >
محاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| active | boolean | false | The current page. Draws the primary marker in the gutter. |
| collapsed | 'true' | 'false' | false |
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| icon | ReactNode | — | |
| href | string | — | Makes it a link. Without it the row renders as a `<button>`. |
| shortcut | ReactNode | — | Figma's ⌘1 chip on a FAVS row. Replaces the trailing chevron. |
| trailing | ReactNode | — | Overrides the trailing chevron with anything else — a count, a badge. |
| disabled | boolean | false |
SidebarItemLabel
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| collapsed | 'true' | 'false' | false |
SidebarItemTrailing
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| collapsed | 'true' | 'false' | false |
SidebarUser
extends ComponentPropsWithoutRef<'button'>
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| disabled | boolean | — | |
| required | boolean | — | |
| readOnly | boolean | — | |
| value | string | — | |
| defaultValue | string | — | |
| name* | string | — | |
| aria-label | string | — | |
| avatar | ReactNode | — | |
| string | — | ||
| badge | ReactNode | — | The verified tick beside the name. |