インポート
import { SideNav } from '@k8ordo/ui';使い方
ui はルーターを持たないので、どのリンクが今のページかは current で渡す。aria-current="page" が付き、傍線で示される。
<SideNav.Root label="Guide">
<SideNav.Group title="Getting started">
<SideNav.Link current href="/get-started">
Get started
</SideNav.Link>
<SideNav.Link href="/theming">Theming</SideNav.Link>
</SideNav.Group>
<SideNav.Group title="Components">
<SideNav.Link href="/button">Button</SideNav.Link>
</SideNav.Group>
</SideNav.Root>ルーターのリンクに差し替える
renderAnchor は要素そのものを差し替える。束には href・className・children・aria-current と、渡した属性(ドロワーを閉じる onClick など)がすべて入っている。このサイトのサイドナビもこれで組んでいる。
<SideNav.Link
current={matchPath(item.path, pathname) !== null}
href={href(item.path)}
onClick={closeDrawer}
renderAnchor={({ children, ...props }) => (
<Link {...props}>{children}</Link>
)}
>
{item.name}
</SideNav.Link>Props
SideNav.Root
label- Type:
string - Default: -
children?- Type:
ReactNode - Default: -
| Prop | Type | Default |
|---|---|---|
label | string | - |
children? | ReactNode | - |
型ベース(内部で固定する一部attrsは除外): HTMLAttributes<HTMLElement>
SideNav.Group
title- Type:
string - Default: -
children?- Type:
ReactNode - Default: -
| Prop | Type | Default |
|---|---|---|
title | string | - |
children? | ReactNode | - |
SideNav.Link
children- Type:
ReactNode - Default: -
href- Type:
T - Default: -
current?- Type:
boolean - Default:
false renderAnchor?- Type:
(props: RenderSideNavAnchorProps<T>) => ReactNode - Default:
defaultRenderAnchor
| Prop | Type | Default |
|---|---|---|
children | ReactNode | - |
href | T | - |
current? | boolean | false |
renderAnchor? | (props: RenderSideNavAnchorProps<T>) => ReactNode | defaultRenderAnchor |
型ベース(内部で固定する一部attrsは除外): AnchorHTMLAttributes<HTMLAnchorElement>