livemark 0.13.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,21 +26,19 @@ function isActive(articlePathname, currentPath) {
26
26
  return articlePathname === normalized;
27
27
  }
28
28
  function NavNode(props) {
29
- const { node, currentPath } = props;
29
+ const { node, currentPath, depth = 0 } = props;
30
30
  const Icon = resolveArticleIcon(node.icon);
31
31
  const active = isActive(node.path, currentPath);
32
+ const isSub = depth > 0;
33
+ const Item = isSub ? SidebarMenuSubItem : SidebarMenuItem;
34
+ const Button = isSub ? SidebarMenuSubButton : SidebarMenuButton;
35
+ const link = _jsx(Link, { to: "/$", params: splatFor(node.path) });
36
+ const label = _jsx("span", { children: node.label ?? node.title });
32
37
  if (node.children.length === 0) {
33
- return (_jsx(SidebarMenuItem, { children: _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(node.path) }), children: [
34
- _jsx(Icon, { className: "size-4" }), _jsx("span", { children: node.label ?? node.title })
35
- ] }) }));
38
+ return (_jsx(Item, { children: _jsxs(Button, { isActive: active, className: active ? "" : "opacity-75", render: link, children: [!isSub && _jsx(Icon, { className: "size-4" }), label] }) }));
36
39
  }
37
- return (_jsx(SidebarMenuItem, { children: _jsxs(Collapsible, { defaultOpen: true, className: "group/collapsible", children: [
38
- _jsxs(SidebarMenuButton, { isActive: active, className: active ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(node.path) }), children: [
39
- _jsx(Icon, { className: "size-4" }), _jsx("span", { children: node.label ?? node.title })
40
- ] }), _jsx(CollapsibleTrigger, { "aria-label": `Toggle ${node.label ?? node.title} submenu`, className: "absolute right-1 top-1.5 p-1 rounded-md hover:bg-sidebar-accent", children: _jsx(ChevronRight, { className: "size-3.5 transition-transform group-data-[open]/collapsible:rotate-90" }) }), _jsx(CollapsibleContent, { children: _jsx(SidebarMenuSub, { children: node.children.map(child => {
41
- const childIsActive = isActive(child.path, currentPath);
42
- return (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { isActive: childIsActive, className: childIsActive ? "" : "opacity-75", render: _jsx(Link, { to: "/$", params: splatFor(child.path) }), children: _jsx("span", { children: child.label ?? child.title }) }) }, child.path));
43
- }) }) })
40
+ return (_jsx(Item, { children: _jsxs(Collapsible, { defaultOpen: true, className: "group/collapsible", children: [
41
+ _jsxs(Button, { isActive: active, className: active ? "" : "opacity-75", render: link, children: [!isSub && _jsx(Icon, { className: "size-4" }), label] }), _jsx(CollapsibleTrigger, { "aria-label": `Toggle ${node.label ?? node.title} submenu`, className: "absolute right-1 top-1.5 p-1 rounded-md hover:bg-sidebar-accent", children: _jsx(ChevronRight, { className: "size-3.5 transition-transform group-data-[open]/collapsible:rotate-90" }) }), _jsx(CollapsibleContent, { children: _jsx(SidebarMenuSub, { children: node.children.map(child => (_jsx(NavNode, { node: child, currentPath: currentPath, depth: depth + 1 }, child.path))) }) })
44
42
  ] }) }));
45
43
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhckFydGljbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhckFydGljbGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQTtBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNkIsQ0FBQTtBQUNwQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSx3QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUcvRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFFekQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtJQUN0QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkUsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFFLE1BQU07UUFDbkMsQ0FB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SyxHQUFRO3dCQUNyQixFQUNwQixLQUFDLGtCQUFrQixrQkFDTCxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssVUFBVSxFQUN4RCxTQUFTLEVBQUMsaUVBQWlFLFlBRTNFLEtBQUMsWUFBWSxJQUFDLFNBQVMsRUFBQyx1RUFBdUUsR0FBRyxHQUMvRSxFQUNyQixLQUFDLGtCQUFrQixjQUNqQixLQUFDLGNBQWMsY0FDWixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDekIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUE7NEJBQ3ZELE9BQU8sQ0FDTCxLQUFDLGtCQUFrQixjQUNqQixLQUFDLG9CQUFvQixJQUNuQixRQUFRLEVBQUUsYUFBYSxFQUN2QixTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFDNUMsTUFBTSxFQUFFLEtBQUMsSUFBSSxJQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUksWUFFdEQseUJBQU8sS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFRLEdBQ3BCLElBUEEsS0FBSyxDQUFDLElBQUksQ0FRZCxDQUN0QixDQUFBO3dCQUNILENBQUMsQ0FBQyxHQUNhLEdBQ0U7Z0JBQ1QsR0FDRSxDQUNuQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmltcG9ydCB7IExpbmssIHVzZUxvY2F0aW9uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBhcnRpY2xlR3JvdXBzLFxuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkFydGljbGVHcm91cHMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHtcbiAgQ29sbGFwc2libGUsXG4gIENvbGxhcHNpYmxlQ29udGVudCxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvY29sbGFwc2libGUudHN4XCJcbmltcG9ydCB7XG4gIFNpZGViYXJHcm91cCxcbiAgU2lkZWJhckdyb3VwQ29udGVudCxcbiAgU2lkZWJhckdyb3VwTGFiZWwsXG4gIFNpZGViYXJNZW51LFxuICBTaWRlYmFyTWVudUJ1dHRvbixcbiAgU2lkZWJhck1lbnVJdGVtLFxuICBTaWRlYmFyTWVudVN1YixcbiAgU2lkZWJhck1lbnVTdWJCdXR0b24sXG4gIFNpZGViYXJNZW51U3ViSXRlbSxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcbmltcG9ydCB7IHJlc29sdmVBcnRpY2xlSWNvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2FydGljbGUtaWNvbi50c1wiXG5pbXBvcnQgdHlwZSB7IEFydGljbGVOb2RlIH0gZnJvbSBcIi4uL21vZGVscy9hcnRpY2xlLnRzXCJcblxuLyoqIEFydGljbGUtdHJlZSBib2R5IHNsb3QgZm9yIHRoZSBTaWRlYmFyIHNoZWxsICovXG5leHBvcnQgZnVuY3Rpb24gU2lkZWJhckFydGljbGVzKCkge1xuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcblxuICBjb25zdCBjb25maWdTZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9uc1xuICBjb25zdCBzZWN0aW9uID0gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgY29uc3QgZ3JvdXBzID0gY29uZmlnU2VjdGlvbnM/Lmxlbmd0aFxuICAgID8gKHNlY3Rpb25BcnRpY2xlR3JvdXBzLmdldChzZWN0aW9uPy5wcmVmaXggPz8gXCJfX2RlZmF1bHRfX1wiKSA/P1xuICAgICAgYXJ0aWNsZUdyb3VwcylcbiAgICA6IGFydGljbGVHcm91cHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Z3JvdXBzLm1hcCgoZ3JvdXAsIGluZGV4KSA9PiAoXG4gICAgICAgIDxTaWRlYmFyR3JvdXAga2V5PXtncm91cC5uYW1lID8/IGBfX3VubmFtZWQtJHtpbmRleH1gfT5cbiAgICAgICAgICB7Z3JvdXAubmFtZSAmJiAoXG4gICAgICAgICAgICA8U2lkZWJhckdyb3VwTGFiZWwgY2xhc3NOYW1lPVwidXBwZXJjYXNlIGZvbnQtbW9ubyB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdFwiPlxuICAgICAgICAgICAgICB7Z3JvdXAubmFtZX1cbiAgICAgICAgICAgIDwvU2lkZWJhckdyb3VwTGFiZWw+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U2lkZWJhckdyb3VwQ29udGVudD5cbiAgICAgICAgICAgIDxTaWRlYmFyTWVudT5cbiAgICAgICAgICAgICAge2dyb3VwLm5vZGVzLm1hcChub2RlID0+IChcbiAgICAgICAgICAgICAgICA8TmF2Tm9kZSBrZXk9e25vZGUucGF0aH0gbm9kZT17bm9kZX0gY3VycmVudFBhdGg9e3BhdGhuYW1lfSAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2lkZWJhck1lbnU+XG4gICAgICAgICAgPC9TaWRlYmFyR3JvdXBDb250ZW50PlxuICAgICAgICA8L1NpZGViYXJHcm91cD5cbiAgICAgICkpfVxuICAgIDwvPlxuICApXG59XG5cbmZ1bmN0aW9uIHNwbGF0Rm9yKHBhdGhuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgX3NwbGF0OiBwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIikgfVxufVxuXG5mdW5jdGlvbiBpc0FjdGl2ZShhcnRpY2xlUGF0aG5hbWU6IHN0cmluZywgY3VycmVudFBhdGg6IHN0cmluZykge1xuICBjb25zdCBub3JtYWxpemVkID0gYC8ke2N1cnJlbnRQYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICByZXR1cm4gYXJ0aWNsZVBhdGhuYW1lID09PSBub3JtYWxpemVkXG59XG5cbmZ1bmN0aW9uIE5hdk5vZGUocHJvcHM6IHsgbm9kZTogQXJ0aWNsZU5vZGU7IGN1cnJlbnRQYXRoOiBzdHJpbmcgfSkge1xuICBjb25zdCB7IG5vZGUsIGN1cnJlbnRQYXRoIH0gPSBwcm9wc1xuICBjb25zdCBJY29uID0gcmVzb2x2ZUFydGljbGVJY29uKG5vZGUuaWNvbilcbiAgY29uc3QgYWN0aXZlID0gaXNBY3RpdmUobm9kZS5wYXRoLCBjdXJyZW50UGF0aClcblxuICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNpZGViYXJNZW51SXRlbT5cbiAgICAgICAgPFNpZGViYXJNZW51QnV0dG9uXG4gICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICByZW5kZXI9ezxMaW5rIHRvPVwiLyRcIiBwYXJhbXM9e3NwbGF0Rm9yKG5vZGUucGF0aCl9IC8+fVxuICAgICAgICA+XG4gICAgICAgICAgPEljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz5cbiAgICAgICAgICA8c3Bhbj57bm9kZS5sYWJlbCA/PyBub2RlLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgPC9TaWRlYmFyTWVudUJ1dHRvbj5cbiAgICAgIDwvU2lkZWJhck1lbnVJdGVtPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNpZGViYXJNZW51SXRlbT5cbiAgICAgIDxDb2xsYXBzaWJsZSBkZWZhdWx0T3BlbiBjbGFzc05hbWU9XCJncm91cC9jb2xsYXBzaWJsZVwiPlxuICAgICAgICA8U2lkZWJhck1lbnVCdXR0b25cbiAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlfVxuICAgICAgICAgIGNsYXNzTmFtZT17YWN0aXZlID8gXCJcIiA6IFwib3BhY2l0eS03NVwifVxuICAgICAgICAgIHJlbmRlcj17PExpbmsgdG89XCIvJFwiIHBhcmFtcz17c3BsYXRGb3Iobm9kZS5wYXRoKX0gLz59XG4gICAgICAgID5cbiAgICAgICAgICA8SWNvbiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPlxuICAgICAgICAgIDxzcGFuPntub2RlLmxhYmVsID8/IG5vZGUudGl0bGV9PC9zcGFuPlxuICAgICAgICA8L1NpZGViYXJNZW51QnV0dG9uPlxuICAgICAgICA8Q29sbGFwc2libGVUcmlnZ2VyXG4gICAgICAgICAgYXJpYS1sYWJlbD17YFRvZ2dsZSAke25vZGUubGFiZWwgPz8gbm9kZS50aXRsZX0gc3VibWVudWB9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgcmlnaHQtMSB0b3AtMS41IHAtMSByb3VuZGVkLW1kIGhvdmVyOmJnLXNpZGViYXItYWNjZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwic2l6ZS0zLjUgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZ3JvdXAtZGF0YS1bb3Blbl0vY29sbGFwc2libGU6cm90YXRlLTkwXCIgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZVRyaWdnZXI+XG4gICAgICAgIDxDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPFNpZGViYXJNZW51U3ViPlxuICAgICAgICAgICAge25vZGUuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRJc0FjdGl2ZSA9IGlzQWN0aXZlKGNoaWxkLnBhdGgsIGN1cnJlbnRQYXRoKVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTaWRlYmFyTWVudVN1Ykl0ZW0ga2V5PXtjaGlsZC5wYXRofT5cbiAgICAgICAgICAgICAgICAgIDxTaWRlYmFyTWVudVN1YkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17Y2hpbGRJc0FjdGl2ZX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjaGlsZElzQWN0aXZlID8gXCJcIiA6IFwib3BhY2l0eS03NVwifVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9ezxMaW5rIHRvPVwiLyRcIiBwYXJhbXM9e3NwbGF0Rm9yKGNoaWxkLnBhdGgpfSAvPn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e2NoaWxkLmxhYmVsID8/IGNoaWxkLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvU2lkZWJhck1lbnVTdWJCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TaWRlYmFyTWVudVN1Ykl0ZW0+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2lkZWJhck1lbnVTdWI+XG4gICAgICAgIDwvQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICA8L1NpZGViYXJNZW51SXRlbT5cbiAgKVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhckFydGljbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhckFydGljbGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQTtBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNkIsQ0FBQTtBQUNwQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSx3QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUcvRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFFekQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtJQUN0QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkUsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFFLE1BQU07UUFDbkMsQ0FB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TUFBQyxNQUFNLElBQ0wsUUFBUSxFQUFFLE1BQU0sRUFDaEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQ3JDLE1BQU0sRUFBRSxJQUFJLGFBRVgsQ0FBQyxLQUFLLElBQUksS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLFFBQVEsR0FBRyxFQUNyQyxLQUFLLElBQ0MsRUFDVCxLQUFDLGtCQUFrQixrQkFDTCxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssVUFBVSxFQUN4RCxTQUFTLEVBQUMsaUVBQWlFLFlBRTNFLEtBQUMsWUFBWSxJQUFDLFNBQVMsRUFBQyx1RUFBdUUsR0FBRyxHQUMvRSxFQUNyQixLQUFDLGtCQUFrQixjQUNqQixLQUFDLGNBQWMsY0FDWixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQzFCLEtBQUMsT0FBTyxJQUVOLElBQUksRUFBRSxLQUFLLEVBQ1gsV0FBVyxFQUFFLFdBQVcsRUFDeEIsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLElBSFgsS0FBSyxDQUFDLElBQUksQ0FJZixDQUNILENBQUMsR0FDYSxHQUNFO2dCQUNULEdBQ1QsQ0FDUixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gXCJsaXZlbWFyazp2aXJ0dWFsXCJcbmltcG9ydCB7IExpbmssIHVzZUxvY2F0aW9uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBhcnRpY2xlR3JvdXBzLFxuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkFydGljbGVHcm91cHMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHtcbiAgQ29sbGFwc2libGUsXG4gIENvbGxhcHNpYmxlQ29udGVudCxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvY29sbGFwc2libGUudHN4XCJcbmltcG9ydCB7XG4gIFNpZGViYXJHcm91cCxcbiAgU2lkZWJhckdyb3VwQ29udGVudCxcbiAgU2lkZWJhckdyb3VwTGFiZWwsXG4gIFNpZGViYXJNZW51LFxuICBTaWRlYmFyTWVudUJ1dHRvbixcbiAgU2lkZWJhck1lbnVJdGVtLFxuICBTaWRlYmFyTWVudVN1YixcbiAgU2lkZWJhck1lbnVTdWJCdXR0b24sXG4gIFNpZGViYXJNZW51U3ViSXRlbSxcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL3NpZGViYXIudHN4XCJcbmltcG9ydCB7IHJlc29sdmVBcnRpY2xlSWNvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2FydGljbGUtaWNvbi50c1wiXG5pbXBvcnQgdHlwZSB7IEFydGljbGVOb2RlIH0gZnJvbSBcIi4uL21vZGVscy9hcnRpY2xlLnRzXCJcblxuLyoqIEFydGljbGUtdHJlZSBib2R5IHNsb3QgZm9yIHRoZSBTaWRlYmFyIHNoZWxsICovXG5leHBvcnQgZnVuY3Rpb24gU2lkZWJhckFydGljbGVzKCkge1xuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcblxuICBjb25zdCBjb25maWdTZWN0aW9ucyA9IGNvbmZpZy5zZWN0aW9uc1xuICBjb25zdCBzZWN0aW9uID0gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgY29uc3QgZ3JvdXBzID0gY29uZmlnU2VjdGlvbnM/Lmxlbmd0aFxuICAgID8gKHNlY3Rpb25BcnRpY2xlR3JvdXBzLmdldChzZWN0aW9uPy5wcmVmaXggPz8gXCJfX2RlZmF1bHRfX1wiKSA/P1xuICAgICAgYXJ0aWNsZUdyb3VwcylcbiAgICA6IGFydGljbGVHcm91cHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Z3JvdXBzLm1hcCgoZ3JvdXAsIGluZGV4KSA9PiAoXG4gICAgICAgIDxTaWRlYmFyR3JvdXAga2V5PXtncm91cC5uYW1lID8/IGBfX3VubmFtZWQtJHtpbmRleH1gfT5cbiAgICAgICAgICB7Z3JvdXAubmFtZSAmJiAoXG4gICAgICAgICAgICA8U2lkZWJhckdyb3VwTGFiZWwgY2xhc3NOYW1lPVwidXBwZXJjYXNlIGZvbnQtbW9ubyB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdFwiPlxuICAgICAgICAgICAgICB7Z3JvdXAubmFtZX1cbiAgICAgICAgICAgIDwvU2lkZWJhckdyb3VwTGFiZWw+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8U2lkZWJhckdyb3VwQ29udGVudD5cbiAgICAgICAgICAgIDxTaWRlYmFyTWVudT5cbiAgICAgICAgICAgICAge2dyb3VwLm5vZGVzLm1hcChub2RlID0+IChcbiAgICAgICAgICAgICAgICA8TmF2Tm9kZSBrZXk9e25vZGUucGF0aH0gbm9kZT17bm9kZX0gY3VycmVudFBhdGg9e3BhdGhuYW1lfSAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2lkZWJhck1lbnU+XG4gICAgICAgICAgPC9TaWRlYmFyR3JvdXBDb250ZW50PlxuICAgICAgICA8L1NpZGViYXJHcm91cD5cbiAgICAgICkpfVxuICAgIDwvPlxuICApXG59XG5cbmZ1bmN0aW9uIHNwbGF0Rm9yKHBhdGhuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgX3NwbGF0OiBwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIikgfVxufVxuXG5mdW5jdGlvbiBpc0FjdGl2ZShhcnRpY2xlUGF0aG5hbWU6IHN0cmluZywgY3VycmVudFBhdGg6IHN0cmluZykge1xuICBjb25zdCBub3JtYWxpemVkID0gYC8ke2N1cnJlbnRQYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICByZXR1cm4gYXJ0aWNsZVBhdGhuYW1lID09PSBub3JtYWxpemVkXG59XG5cbmZ1bmN0aW9uIE5hdk5vZGUocHJvcHM6IHtcbiAgbm9kZTogQXJ0aWNsZU5vZGVcbiAgY3VycmVudFBhdGg6IHN0cmluZ1xuICBkZXB0aD86IG51bWJlclxufSkge1xuICBjb25zdCB7IG5vZGUsIGN1cnJlbnRQYXRoLCBkZXB0aCA9IDAgfSA9IHByb3BzXG4gIGNvbnN0IEljb24gPSByZXNvbHZlQXJ0aWNsZUljb24obm9kZS5pY29uKVxuICBjb25zdCBhY3RpdmUgPSBpc0FjdGl2ZShub2RlLnBhdGgsIGN1cnJlbnRQYXRoKVxuICBjb25zdCBpc1N1YiA9IGRlcHRoID4gMFxuICBjb25zdCBJdGVtID0gaXNTdWIgPyBTaWRlYmFyTWVudVN1Ykl0ZW0gOiBTaWRlYmFyTWVudUl0ZW1cbiAgY29uc3QgQnV0dG9uID0gaXNTdWIgPyBTaWRlYmFyTWVudVN1YkJ1dHRvbiA6IFNpZGViYXJNZW51QnV0dG9uXG5cbiAgY29uc3QgbGluayA9IDxMaW5rIHRvPVwiLyRcIiBwYXJhbXM9e3NwbGF0Rm9yKG5vZGUucGF0aCl9IC8+XG4gIGNvbnN0IGxhYmVsID0gPHNwYW4+e25vZGUubGFiZWwgPz8gbm9kZS50aXRsZX08L3NwYW4+XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxJdGVtPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICByZW5kZXI9e2xpbmt9XG4gICAgICAgID5cbiAgICAgICAgICB7IWlzU3ViICYmIDxJY29uIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+fVxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0l0ZW0+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SXRlbT5cbiAgICAgIDxDb2xsYXBzaWJsZSBkZWZhdWx0T3BlbiBjbGFzc05hbWU9XCJncm91cC9jb2xsYXBzaWJsZVwiPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICByZW5kZXI9e2xpbmt9XG4gICAgICAgID5cbiAgICAgICAgICB7IWlzU3ViICYmIDxJY29uIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+fVxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxDb2xsYXBzaWJsZVRyaWdnZXJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtgVG9nZ2xlICR7bm9kZS5sYWJlbCA/PyBub2RlLnRpdGxlfSBzdWJtZW51YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSByaWdodC0xIHRvcC0xLjUgcC0xIHJvdW5kZWQtbWQgaG92ZXI6Ymctc2lkZWJhci1hY2NlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJzaXplLTMuNSB0cmFuc2l0aW9uLXRyYW5zZm9ybSBncm91cC1kYXRhLVtvcGVuXS9jb2xsYXBzaWJsZTpyb3RhdGUtOTBcIiAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlVHJpZ2dlcj5cbiAgICAgICAgPENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8U2lkZWJhck1lbnVTdWI+XG4gICAgICAgICAgICB7bm9kZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKFxuICAgICAgICAgICAgICA8TmF2Tm9kZVxuICAgICAgICAgICAgICAgIGtleT17Y2hpbGQucGF0aH1cbiAgICAgICAgICAgICAgICBub2RlPXtjaGlsZH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGF0aD17Y3VycmVudFBhdGh9XG4gICAgICAgICAgICAgICAgZGVwdGg9e2RlcHRoICsgMX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvU2lkZWJhck1lbnVTdWI+XG4gICAgICAgIDwvQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICA8L0l0ZW0+XG4gIClcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livemark",
3
- "version": "0.13.1",
3
+ "version": "0.14.0",
4
4
  "description": "Livemark description",
5
5
  "license": "MIT",
6
6
  "author": "Evgeny Karev",
@@ -67,37 +67,47 @@ function isActive(articlePathname: string, currentPath: string) {
67
67
  return articlePathname === normalized
68
68
  }
69
69
 
70
- function NavNode(props: { node: ArticleNode; currentPath: string }) {
71
- const { node, currentPath } = props
70
+ function NavNode(props: {
71
+ node: ArticleNode
72
+ currentPath: string
73
+ depth?: number
74
+ }) {
75
+ const { node, currentPath, depth = 0 } = props
72
76
  const Icon = resolveArticleIcon(node.icon)
73
77
  const active = isActive(node.path, currentPath)
78
+ const isSub = depth > 0
79
+ const Item = isSub ? SidebarMenuSubItem : SidebarMenuItem
80
+ const Button = isSub ? SidebarMenuSubButton : SidebarMenuButton
81
+
82
+ const link = <Link to="/$" params={splatFor(node.path)} />
83
+ const label = <span>{node.label ?? node.title}</span>
74
84
 
75
85
  if (node.children.length === 0) {
76
86
  return (
77
- <SidebarMenuItem>
78
- <SidebarMenuButton
87
+ <Item>
88
+ <Button
79
89
  isActive={active}
80
90
  className={active ? "" : "opacity-75"}
81
- render={<Link to="/$" params={splatFor(node.path)} />}
91
+ render={link}
82
92
  >
83
- <Icon className="size-4" />
84
- <span>{node.label ?? node.title}</span>
85
- </SidebarMenuButton>
86
- </SidebarMenuItem>
93
+ {!isSub && <Icon className="size-4" />}
94
+ {label}
95
+ </Button>
96
+ </Item>
87
97
  )
88
98
  }
89
99
 
90
100
  return (
91
- <SidebarMenuItem>
101
+ <Item>
92
102
  <Collapsible defaultOpen className="group/collapsible">
93
- <SidebarMenuButton
103
+ <Button
94
104
  isActive={active}
95
105
  className={active ? "" : "opacity-75"}
96
- render={<Link to="/$" params={splatFor(node.path)} />}
106
+ render={link}
97
107
  >
98
- <Icon className="size-4" />
99
- <span>{node.label ?? node.title}</span>
100
- </SidebarMenuButton>
108
+ {!isSub && <Icon className="size-4" />}
109
+ {label}
110
+ </Button>
101
111
  <CollapsibleTrigger
102
112
  aria-label={`Toggle ${node.label ?? node.title} submenu`}
103
113
  className="absolute right-1 top-1.5 p-1 rounded-md hover:bg-sidebar-accent"
@@ -106,23 +116,17 @@ function NavNode(props: { node: ArticleNode; currentPath: string }) {
106
116
  </CollapsibleTrigger>
107
117
  <CollapsibleContent>
108
118
  <SidebarMenuSub>
109
- {node.children.map(child => {
110
- const childIsActive = isActive(child.path, currentPath)
111
- return (
112
- <SidebarMenuSubItem key={child.path}>
113
- <SidebarMenuSubButton
114
- isActive={childIsActive}
115
- className={childIsActive ? "" : "opacity-75"}
116
- render={<Link to="/$" params={splatFor(child.path)} />}
117
- >
118
- <span>{child.label ?? child.title}</span>
119
- </SidebarMenuSubButton>
120
- </SidebarMenuSubItem>
121
- )
122
- })}
119
+ {node.children.map(child => (
120
+ <NavNode
121
+ key={child.path}
122
+ node={child}
123
+ currentPath={currentPath}
124
+ depth={depth + 1}
125
+ />
126
+ ))}
123
127
  </SidebarMenuSub>
124
128
  </CollapsibleContent>
125
129
  </Collapsible>
126
- </SidebarMenuItem>
130
+ </Item>
127
131
  )
128
132
  }