import type {
SidebarDivider as ISidebarDivider,
SidebarItem as ISidebarItem,
SidebarSectionHeader as ISidebarSectionHeader,
NormalizedSidebarGroup,
SidebarData,
} from '@rspress/core';
import { useSidebarDynamic } from '@rspress/core/runtime';
import { SidebarDivider } from './SidebarDivider';
import { SidebarGroup } from './SidebarGroup';
import { SidebarItem } from './SidebarItem';
import { SidebarSectionHeader } from './SidebarSectionHeader';
import {
isSidebarDivider,
isSidebarGroup,
isSidebarSectionHeader,
} from './utils';
export function Sidebar() {
const [sidebarData, setSidebarData] = useSidebarDynamic();
return (
);
}
export function SidebarList({
sidebarData,
setSidebarData,
}: {
sidebarData: SidebarData;
setSidebarData: React.Dispatch>;
}) {
return (
<>
{sidebarData.map((item, index) => {
return (
);
})}
>
);
}
function SidebarListItem(props: {
item:
| NormalizedSidebarGroup
| ISidebarItem
| ISidebarDivider
| ISidebarSectionHeader;
index: number;
setSidebarData: React.Dispatch>;
}) {
const { item, index, setSidebarData } = props;
if (isSidebarDivider(item)) {
return (
);
}
if (isSidebarSectionHeader(item)) {
return (
);
}
if (isSidebarGroup(item)) {
return (
);
}
return ;
}