Function
SidebarNodes
({
nodes,
currentPath,
toggle,
}: {
nodes: PageTree.Node[];
currentPath: string;
toggle?: () => void;
})
Source from the content-addressed store, hash-verified
| 110 | }; |
| 111 | |
| 112 | const SidebarNodes = ({ |
| 113 | nodes, |
| 114 | currentPath, |
| 115 | toggle, |
| 116 | }: { |
| 117 | nodes: PageTree.Node[]; |
| 118 | currentPath: string; |
| 119 | toggle?: () => void; |
| 120 | }) => ( |
| 121 | <> |
| 122 | {nodes.map((node) => { |
| 123 | switch (node.type) { |
| 124 | case 'separator': |
| 125 | return ( |
| 126 | <Text |
| 127 | component="div" |
| 128 | className={classes.separator} |
| 129 | key={nodeKey(node)} |
| 130 | > |
| 131 | {node.name} |
| 132 | </Text> |
| 133 | ); |
| 134 | case 'page': |
| 135 | return ( |
| 136 | <PageLink |
| 137 | key={node.$id ?? node.url} |
| 138 | node={node} |
| 139 | className={classes.page} |
| 140 | active={currentPath === node.url} |
| 141 | toggle={toggle} |
| 142 | /> |
| 143 | ); |
| 144 | case 'folder': |
| 145 | return ( |
| 146 | <Stack className={classes.folder} gap={3} key={nodeKey(node)}> |
| 147 | <Text component="div" className={classes.folderTitle}> |
| 148 | {node.name} |
| 149 | </Text> |
| 150 | <SidebarNodes |
| 151 | nodes={node.children} |
| 152 | currentPath={currentPath} |
| 153 | toggle={toggle} |
| 154 | /> |
| 155 | </Stack> |
| 156 | ); |
| 157 | default: |
| 158 | return null; |
| 159 | } |
| 160 | })} |
| 161 | </> |
| 162 | ); |
| 163 | |
| 164 | const RootSection = ({ |
| 165 | node, |
Callers
nothing calls this directly
Tested by
no test coverage detected