livemark 0.18.0 → 0.19.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.
- package/build/actions/config/define.d.ts +8 -0
- package/build/components/SidebarArticles.js +3 -2
- package/build/components/SiteTitle.d.ts +3 -1
- package/build/components/SiteTitle.js +12 -4
- package/build/content/article.d.ts +6 -0
- package/build/helpers/section.d.ts +43 -0
- package/build/helpers/section.js +35 -1
- package/build/helpers/section.unit.js +57 -2
- package/build/models/config.d.ts +24 -0
- package/build/models/section.d.ts +16 -0
- package/build/models/section.js +3 -1
- package/package.json +1 -1
- package/source/components/SidebarArticles.tsx +2 -1
- package/source/components/SiteTitle.tsx +12 -4
- package/source/helpers/section.ts +33 -0
- package/source/helpers/section.unit.ts +69 -0
- package/source/models/section.ts +2 -0
|
@@ -24,18 +24,24 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
24
24
|
icon?: string | undefined;
|
|
25
25
|
title: string;
|
|
26
26
|
position: "header" | "sidebar";
|
|
27
|
+
siteTitle?: string | undefined;
|
|
28
|
+
siteDescription?: string | undefined;
|
|
27
29
|
type: "article";
|
|
28
30
|
prefix: string;
|
|
29
31
|
} | {
|
|
30
32
|
icon?: string | undefined;
|
|
31
33
|
title: string;
|
|
32
34
|
position: "header" | "sidebar";
|
|
35
|
+
siteTitle?: string | undefined;
|
|
36
|
+
siteDescription?: string | undefined;
|
|
33
37
|
type: "blog";
|
|
34
38
|
prefix: string;
|
|
35
39
|
} | {
|
|
36
40
|
icon?: string | undefined;
|
|
37
41
|
title: string;
|
|
38
42
|
position: "header" | "sidebar";
|
|
43
|
+
siteTitle?: string | undefined;
|
|
44
|
+
siteDescription?: string | undefined;
|
|
39
45
|
type: "changelog";
|
|
40
46
|
prefix: string;
|
|
41
47
|
source: string;
|
|
@@ -44,6 +50,8 @@ export declare function defineConfig(input: UserConfig): {
|
|
|
44
50
|
icon?: string | undefined;
|
|
45
51
|
title: string;
|
|
46
52
|
position: "header" | "sidebar";
|
|
53
|
+
siteTitle?: string | undefined;
|
|
54
|
+
siteDescription?: string | undefined;
|
|
47
55
|
type: "custom";
|
|
48
56
|
url: string;
|
|
49
57
|
})[] | undefined;
|
|
@@ -22,7 +22,8 @@ function splatFor(pathname) {
|
|
|
22
22
|
return { _splat: pathname.replace(/^\/|\/$/g, "") };
|
|
23
23
|
}
|
|
24
24
|
function isActive(articlePathname, currentPath) {
|
|
25
|
-
const
|
|
25
|
+
const trimmed = currentPath.replace(/^\/|\/$/g, "");
|
|
26
|
+
const normalized = trimmed ? `/${trimmed}/` : "/";
|
|
26
27
|
return articlePathname === normalized;
|
|
27
28
|
}
|
|
28
29
|
function NavNode(props) {
|
|
@@ -41,4 +42,4 @@ function NavNode(props) {
|
|
|
41
42
|
_jsxs(Button, { isActive: active, className: active ? "" : "opacity-75", render: link, children: [!isSub && Icon && _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))) }) })
|
|
42
43
|
] }) }));
|
|
43
44
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhckFydGljbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2lkZWJhckFydGljbGVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGNBQWMsRUFDZCxtQkFBbUIsR0FDcEIsTUFBTSx1QkFBdUIsQ0FBQTtBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNkIsQ0FBQTtBQUNwQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSx3QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUcvRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFFekQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQTtJQUN0QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkUsTUFBTSxJQUFJLEdBQUcsY0FBYyxFQUFFLE1BQU07UUFDakMsQ0FB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QUUsSUFBSSxhQUVYLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFDLElBQUksSUFBQyxTQUFTLEVBQUMsUUFBUSxHQUFHLEVBQzdDLEtBQUssSUFDQyxFQUNULEtBQUMsa0JBQWtCLGtCQUNMLFVBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQ3hELFNBQVMsRUFBQyxpRUFBaUUsWUFFM0UsS0FBQyxZQUFZLElBQUMsU0FBUyxFQUFDLHVFQUF1RSxHQUFHLEdBQy9FLEVBQ3JCLEtBQUMsa0JBQWtCLGNBQ2pCLEtBQUMsY0FBYyxjQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUIsS0FBQyxPQUFPLElBRU4sSUFBSSxFQUFFLEtBQUssRUFDWCxXQUFXLEVBQUUsV0FBVyxFQUN4QixLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsSUFIWCxLQUFLLENBQUMsSUFBSSxDQUlmLENBQ0gsQ0FBQyxHQUNhLEdBQ0U7Z0JBQ1QsR0FDVCxDQUNSLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuaW1wb3J0IHsgTGluaywgdXNlTG9jYXRpb24gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyBDaGV2cm9uUmlnaHQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcbmltcG9ydCB7XG4gIGFydGljbGVUcmVlLFxuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkFydGljbGVUcmVlcyxcbn0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVDb250ZW50LFxuICBDb2xsYXBzaWJsZVRyaWdnZXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9jb2xsYXBzaWJsZS50c3hcIlxuaW1wb3J0IHtcbiAgU2lkZWJhckdyb3VwLFxuICBTaWRlYmFyR3JvdXBDb250ZW50LFxuICBTaWRlYmFyR3JvdXBMYWJlbCxcbiAgU2lkZWJhck1lbnUsXG4gIFNpZGViYXJNZW51QnV0dG9uLFxuICBTaWRlYmFyTWVudUl0ZW0sXG4gIFNpZGViYXJNZW51U3ViLFxuICBTaWRlYmFyTWVudVN1YkJ1dHRvbixcbiAgU2lkZWJhck1lbnVTdWJJdGVtLFxufSBmcm9tIFwiLi4vZWxlbWVudHMvc2lkZWJhci50c3hcIlxuaW1wb3J0IHsgcmVzb2x2ZUFydGljbGVJY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvYXJ0aWNsZS1pY29uLnRzXCJcbmltcG9ydCB0eXBlIHsgQXJ0aWNsZU5vZGUgfSBmcm9tIFwiLi4vbW9kZWxzL2FydGljbGUudHNcIlxuXG4vKiogQXJ0aWNsZS10cmVlIGJvZHkgc2xvdCBmb3IgdGhlIFNpZGViYXIgc2hlbGwgKi9cbmV4cG9ydCBmdW5jdGlvbiBTaWRlYmFyQXJ0aWNsZXMoKSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlTG9jYXRpb24oeyBzZWxlY3Q6IGwgPT4gbC5wYXRobmFtZSB9KVxuXG4gIGNvbnN0IGNvbmZpZ1NlY3Rpb25zID0gY29uZmlnLnNlY3Rpb25zXG4gIGNvbnN0IHNlY3Rpb24gPSBjdXJyZW50U2VjdGlvbihgLyR7cGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpfS9gKVxuICBjb25zdCB0cmVlID0gY29uZmlnU2VjdGlvbnM/Lmxlbmd0aFxuICAgID8gKHNlY3Rpb25BcnRpY2xlVHJlZXMuZ2V0KHNlY3Rpb24/LnByZWZpeCA/PyBcIl9fZGVmYXVsdF9fXCIpID8/IGFydGljbGVUcmVlKVxuICAgIDogYXJ0aWNsZVRyZWVcblxuICByZXR1cm4gKFxuICAgIDxTaWRlYmFyR3JvdXA+XG4gICAgICA8U2lkZWJhckdyb3VwTGFiZWwgY2xhc3NOYW1lPVwidXBwZXJjYXNlIGZvbnQtbW9ubyB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdFwiPlxuICAgICAgICBBcnRpY2xlc1xuICAgICAgPC9TaWRlYmFyR3JvdXBMYWJlbD5cbiAgICAgIDxTaWRlYmFyR3JvdXBDb250ZW50PlxuICAgICAgICA8U2lkZWJhck1lbnU+XG4gICAgICAgICAge3RyZWUubWFwKG5vZGUgPT4gKFxuICAgICAgICAgICAgPE5hdk5vZGUga2V5PXtub2RlLnBhdGh9IG5vZGU9e25vZGV9IGN1cnJlbnRQYXRoPXtwYXRobmFtZX0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TaWRlYmFyTWVudT5cbiAgICAgIDwvU2lkZWJhckdyb3VwQ29udGVudD5cbiAgICA8L1NpZGViYXJHcm91cD5cbiAgKVxufVxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZnVuY3Rpb24gaXNBY3RpdmUoYXJ0aWNsZVBhdGhuYW1lOiBzdHJpbmcsIGN1cnJlbnRQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGN1cnJlbnRQYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKVxuICBjb25zdCBub3JtYWxpemVkID0gdHJpbW1lZCA/IGAvJHt0cmltbWVkfS9gIDogXCIvXCJcbiAgcmV0dXJuIGFydGljbGVQYXRobmFtZSA9PT0gbm9ybWFsaXplZFxufVxuXG5mdW5jdGlvbiBOYXZOb2RlKHByb3BzOiB7XG4gIG5vZGU6IEFydGljbGVOb2RlXG4gIGN1cnJlbnRQYXRoOiBzdHJpbmdcbiAgZGVwdGg/OiBudW1iZXJcbn0pIHtcbiAgY29uc3QgeyBub2RlLCBjdXJyZW50UGF0aCwgZGVwdGggPSAwIH0gPSBwcm9wc1xuICBjb25zdCBJY29uID0gcmVzb2x2ZUFydGljbGVJY29uKG5vZGUuaWNvbilcbiAgY29uc3QgYWN0aXZlID0gaXNBY3RpdmUobm9kZS5wYXRoLCBjdXJyZW50UGF0aClcbiAgY29uc3QgaXNTdWIgPSBkZXB0aCA+IDBcbiAgY29uc3QgSXRlbSA9IGlzU3ViID8gU2lkZWJhck1lbnVTdWJJdGVtIDogU2lkZWJhck1lbnVJdGVtXG4gIGNvbnN0IEJ1dHRvbiA9IGlzU3ViID8gU2lkZWJhck1lbnVTdWJCdXR0b24gOiBTaWRlYmFyTWVudUJ1dHRvblxuXG4gIGNvbnN0IGxpbmsgPSA8TGluayB0bz1cIi8kXCIgcGFyYW1zPXtzcGxhdEZvcihub2RlLnBhdGgpfSAvPlxuICBjb25zdCBsYWJlbCA9IDxzcGFuPntub2RlLmxhYmVsID8/IG5vZGUudGl0bGV9PC9zcGFuPlxuXG4gIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8SXRlbT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGlzQWN0aXZlPXthY3RpdmV9XG4gICAgICAgICAgY2xhc3NOYW1lPXthY3RpdmUgPyBcIlwiIDogXCJvcGFjaXR5LTc1XCJ9XG4gICAgICAgICAgcmVuZGVyPXtsaW5rfVxuICAgICAgICA+XG4gICAgICAgICAgeyFpc1N1YiAmJiBJY29uICYmIDxJY29uIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+fVxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0l0ZW0+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SXRlbT5cbiAgICAgIDxDb2xsYXBzaWJsZSBkZWZhdWx0T3BlbiBjbGFzc05hbWU9XCJncm91cC9jb2xsYXBzaWJsZVwiPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2FjdGl2ZSA/IFwiXCIgOiBcIm9wYWNpdHktNzVcIn1cbiAgICAgICAgICByZW5kZXI9e2xpbmt9XG4gICAgICAgID5cbiAgICAgICAgICB7IWlzU3ViICYmIEljb24gJiYgPEljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz59XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPENvbGxhcHNpYmxlVHJpZ2dlclxuICAgICAgICAgIGFyaWEtbGFiZWw9e2BUb2dnbGUgJHtub2RlLmxhYmVsID8/IG5vZGUudGl0bGV9IHN1Ym1lbnVgfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHJpZ2h0LTEgdG9wLTEuNSBwLTEgcm91bmRlZC1tZCBob3ZlcjpiZy1zaWRlYmFyLWFjY2VudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInNpemUtMy41IHRyYW5zaXRpb24tdHJhbnNmb3JtIGdyb3VwLWRhdGEtW29wZW5dL2NvbGxhcHNpYmxlOnJvdGF0ZS05MFwiIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGVUcmlnZ2VyPlxuICAgICAgICA8Q29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDxTaWRlYmFyTWVudVN1Yj5cbiAgICAgICAgICAgIHtub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoXG4gICAgICAgICAgICAgIDxOYXZOb2RlXG4gICAgICAgICAgICAgICAga2V5PXtjaGlsZC5wYXRofVxuICAgICAgICAgICAgICAgIG5vZGU9e2NoaWxkfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoPXtjdXJyZW50UGF0aH1cbiAgICAgICAgICAgICAgICBkZXB0aD17ZGVwdGggKyAxfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9TaWRlYmFyTWVudVN1Yj5cbiAgICAgICAgPC9Db2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgIDwvSXRlbT5cbiAgKVxufVxuIl19
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
/** Renders the site logo, title, and description in the sidebar header
|
|
1
|
+
/** Renders the site logo, title, and description in the sidebar header.
|
|
2
|
+
* When the current pathname falls inside a section that defines its own
|
|
3
|
+
* `siteTitle` / `siteDescription`, those override the global config. */
|
|
2
4
|
export declare function SiteTitle(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { config } from "livemark:virtual";
|
|
3
|
+
import { useLocation } from "@tanstack/react-router";
|
|
3
4
|
import { prefixUrl } from "../helpers/prefix-url.js";
|
|
5
|
+
import { activeSiteSection } from "../helpers/section.js";
|
|
4
6
|
import defaultLogo from "../assets/logo.svg";
|
|
5
|
-
/** Renders the site logo, title, and description in the sidebar header
|
|
7
|
+
/** Renders the site logo, title, and description in the sidebar header.
|
|
8
|
+
* When the current pathname falls inside a section that defines its own
|
|
9
|
+
* `siteTitle` / `siteDescription`, those override the global config. */
|
|
6
10
|
export function SiteTitle() {
|
|
11
|
+
const pathname = useLocation({ select: l => l.pathname });
|
|
12
|
+
const section = activeSiteSection(pathname, config.sections ?? []);
|
|
13
|
+
const title = section?.siteTitle ?? config.title;
|
|
14
|
+
const description = section?.siteDescription ?? config.description;
|
|
7
15
|
const logo = prefixUrl(config.logo ?? defaultLogo, config.base);
|
|
8
16
|
return (_jsxs("div", { className: "flex items-end gap-2.5 text-sm", children: [
|
|
9
|
-
_jsx("img", { src: logo, alt:
|
|
10
|
-
_jsx("span", { className: "font-semibold", children:
|
|
17
|
+
_jsx("img", { src: logo, alt: title, className: "size-6.5 mb-1.25" }), _jsxs("div", { className: "flex flex-col gap-0.5 leading-none", children: [
|
|
18
|
+
_jsx("span", { className: "font-semibold", children: title }), _jsx("span", { className: "text-xs opacity-80", children: description })
|
|
11
19
|
] })
|
|
12
20
|
] }));
|
|
13
21
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2l0ZVRpdGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvU2l0ZVRpdGxlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDekQsT0FBTyxXQUFXLE1BQU0sb0JBQW9CLENBQUE7QUFFNUM7O3lFQUV5RTtBQUN6RSxNQUFNLFVBQVUsU0FBUztJQUN2QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNsRSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUE7SUFDaEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxFQUFFLGVBQWUsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFBO0lBQ2xFLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0QsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLGdDQUFnQztZQUM3QyxjQUFLLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsa0JBQWtCLEdBQUcsRUFDM0QsZUFBSyxTQUFTLEVBQUMsb0NBQW9DO29CQUNqRCxlQUFNLFNBQVMsRUFBQyxlQUFlLFlBQUUsS0FBSyxHQUFRLEVBQzlDLGVBQU0sU0FBUyxFQUFDLG9CQUFvQixZQUFFLFdBQVcsR0FBUTtvQkFDckQ7WUFDRixDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcImxpdmVtYXJrOnZpcnR1YWxcIlxuaW1wb3J0IHsgdXNlTG9jYXRpb24gfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyBwcmVmaXhVcmwgfSBmcm9tIFwiLi4vaGVscGVycy9wcmVmaXgtdXJsLnRzXCJcbmltcG9ydCB7IGFjdGl2ZVNpdGVTZWN0aW9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQgZGVmYXVsdExvZ28gZnJvbSBcIi4uL2Fzc2V0cy9sb2dvLnN2Z1wiXG5cbi8qKiBSZW5kZXJzIHRoZSBzaXRlIGxvZ28sIHRpdGxlLCBhbmQgZGVzY3JpcHRpb24gaW4gdGhlIHNpZGViYXIgaGVhZGVyLlxuICogIFdoZW4gdGhlIGN1cnJlbnQgcGF0aG5hbWUgZmFsbHMgaW5zaWRlIGEgc2VjdGlvbiB0aGF0IGRlZmluZXMgaXRzIG93blxuICogIGBzaXRlVGl0bGVgIC8gYHNpdGVEZXNjcmlwdGlvbmAsIHRob3NlIG92ZXJyaWRlIHRoZSBnbG9iYWwgY29uZmlnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNpdGVUaXRsZSgpIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IHNlY3Rpb24gPSBhY3RpdmVTaXRlU2VjdGlvbihwYXRobmFtZSwgY29uZmlnLnNlY3Rpb25zID8/IFtdKVxuICBjb25zdCB0aXRsZSA9IHNlY3Rpb24/LnNpdGVUaXRsZSA/PyBjb25maWcudGl0bGVcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWN0aW9uPy5zaXRlRGVzY3JpcHRpb24gPz8gY29uZmlnLmRlc2NyaXB0aW9uXG4gIGNvbnN0IGxvZ28gPSBwcmVmaXhVcmwoY29uZmlnLmxvZ28gPz8gZGVmYXVsdExvZ28sIGNvbmZpZy5iYXNlKVxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgZ2FwLTIuNSB0ZXh0LXNtXCI+XG4gICAgICA8aW1nIHNyYz17bG9nb30gYWx0PXt0aXRsZX0gY2xhc3NOYW1lPVwic2l6ZS02LjUgbWItMS4yNVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTAuNSBsZWFkaW5nLW5vbmVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1zZW1pYm9sZFwiPnt0aXRsZX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgb3BhY2l0eS04MFwiPntkZXNjcmlwdGlvbn08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -24,18 +24,24 @@ export declare function currentSection(path: string): {
|
|
|
24
24
|
icon?: string | undefined;
|
|
25
25
|
title: string;
|
|
26
26
|
position: "header" | "sidebar";
|
|
27
|
+
siteTitle?: string | undefined;
|
|
28
|
+
siteDescription?: string | undefined;
|
|
27
29
|
type: "article";
|
|
28
30
|
prefix: string;
|
|
29
31
|
} | {
|
|
30
32
|
icon?: string | undefined;
|
|
31
33
|
title: string;
|
|
32
34
|
position: "header" | "sidebar";
|
|
35
|
+
siteTitle?: string | undefined;
|
|
36
|
+
siteDescription?: string | undefined;
|
|
33
37
|
type: "blog";
|
|
34
38
|
prefix: string;
|
|
35
39
|
} | {
|
|
36
40
|
icon?: string | undefined;
|
|
37
41
|
title: string;
|
|
38
42
|
position: "header" | "sidebar";
|
|
43
|
+
siteTitle?: string | undefined;
|
|
44
|
+
siteDescription?: string | undefined;
|
|
39
45
|
type: "changelog";
|
|
40
46
|
prefix: string;
|
|
41
47
|
source: string;
|
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
import type { Section } from "../models/section.ts";
|
|
2
|
+
/** Return the section whose prefix or internal-URL best matches the
|
|
3
|
+
* given pathname. Routed sections (article/blog/changelog) match by
|
|
4
|
+
* `prefix`. Custom sections with internal URLs (`/`-leading, not
|
|
5
|
+
* `//`) match by their URL — with the same exact-`/` guard as
|
|
6
|
+
* `customSectionActive` so a custom URL of `/` only activates on
|
|
7
|
+
* the home page itself. Custom sections with absolute URLs never
|
|
8
|
+
* match. Longest match wins. */
|
|
9
|
+
export declare function activeSiteSection(pathname: string, sections: Section[]): {
|
|
10
|
+
icon?: string | undefined;
|
|
11
|
+
title: string;
|
|
12
|
+
position: "header" | "sidebar";
|
|
13
|
+
siteTitle?: string | undefined;
|
|
14
|
+
siteDescription?: string | undefined;
|
|
15
|
+
type: "article";
|
|
16
|
+
prefix: string;
|
|
17
|
+
} | {
|
|
18
|
+
icon?: string | undefined;
|
|
19
|
+
title: string;
|
|
20
|
+
position: "header" | "sidebar";
|
|
21
|
+
siteTitle?: string | undefined;
|
|
22
|
+
siteDescription?: string | undefined;
|
|
23
|
+
type: "blog";
|
|
24
|
+
prefix: string;
|
|
25
|
+
} | {
|
|
26
|
+
icon?: string | undefined;
|
|
27
|
+
title: string;
|
|
28
|
+
position: "header" | "sidebar";
|
|
29
|
+
siteTitle?: string | undefined;
|
|
30
|
+
siteDescription?: string | undefined;
|
|
31
|
+
type: "changelog";
|
|
32
|
+
prefix: string;
|
|
33
|
+
source: string;
|
|
34
|
+
version?: boolean | undefined;
|
|
35
|
+
} | {
|
|
36
|
+
icon?: string | undefined;
|
|
37
|
+
title: string;
|
|
38
|
+
position: "header" | "sidebar";
|
|
39
|
+
siteTitle?: string | undefined;
|
|
40
|
+
siteDescription?: string | undefined;
|
|
41
|
+
type: "custom";
|
|
42
|
+
url: string;
|
|
43
|
+
} | undefined;
|
|
1
44
|
/** Whether a custom section's URL should highlight as active for the
|
|
2
45
|
* current pathname. Only `/`-leading internal paths participate;
|
|
3
46
|
* protocol-absolute (`https://…`, `//cdn…`) URLs never highlight.
|
package/build/helpers/section.js
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
/** Return the section whose prefix or internal-URL best matches the
|
|
2
|
+
* given pathname. Routed sections (article/blog/changelog) match by
|
|
3
|
+
* `prefix`. Custom sections with internal URLs (`/`-leading, not
|
|
4
|
+
* `//`) match by their URL — with the same exact-`/` guard as
|
|
5
|
+
* `customSectionActive` so a custom URL of `/` only activates on
|
|
6
|
+
* the home page itself. Custom sections with absolute URLs never
|
|
7
|
+
* match. Longest match wins. */
|
|
8
|
+
export function activeSiteSection(pathname, sections) {
|
|
9
|
+
const current = `/${pathname.replace(/^\/|\/$/g, "")}/`;
|
|
10
|
+
let best;
|
|
11
|
+
let bestLen = 0;
|
|
12
|
+
for (const s of sections) {
|
|
13
|
+
const prefix = sectionMatchPrefix(s);
|
|
14
|
+
if (!prefix)
|
|
15
|
+
continue;
|
|
16
|
+
if (s.type === "custom" && prefix === "/" && current !== "/")
|
|
17
|
+
continue;
|
|
18
|
+
if (!current.startsWith(prefix))
|
|
19
|
+
continue;
|
|
20
|
+
if (prefix.length > bestLen) {
|
|
21
|
+
best = s;
|
|
22
|
+
bestLen = prefix.length;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return best;
|
|
26
|
+
}
|
|
27
|
+
function sectionMatchPrefix(s) {
|
|
28
|
+
if (s.type !== "custom")
|
|
29
|
+
return s.prefix;
|
|
30
|
+
if (!s.url.startsWith("/") || s.url.startsWith("//"))
|
|
31
|
+
return undefined;
|
|
32
|
+
const stripped = s.url.split(/[?#]/)[0] ?? "";
|
|
33
|
+
return `/${stripped.replace(/^\/|\/$/g, "")}/`;
|
|
34
|
+
}
|
|
1
35
|
/** Whether a custom section's URL should highlight as active for the
|
|
2
36
|
* current pathname. Only `/`-leading internal paths participate;
|
|
3
37
|
* protocol-absolute (`https://…`, `//cdn…`) URLs never highlight.
|
|
@@ -43,4 +77,4 @@ export function partitionBySection(articles, sections) {
|
|
|
43
77
|
}
|
|
44
78
|
return buckets;
|
|
45
79
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9oZWxwZXJzL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7OztpQ0FNaUM7QUFDakMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQWdCLEVBQUUsUUFBbUI7SUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFBO0lBQ3ZELElBQUksSUFBeUIsQ0FBQTtJQUM3QixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxNQUFNO1lBQUUsU0FBUTtRQUNyQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxLQUFLLEdBQUc7WUFBRSxTQUFRO1FBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUFFLFNBQVE7UUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQzVCLElBQUksR0FBRyxDQUFDLENBQUE7WUFDUixPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsQ0FBVTtJQUNwQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFDdEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzdDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFBO0FBQ2hELENBQUM7QUFFRDs7Ozs7eUNBS3lDO0FBQ3pDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7SUFDL0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUM5RCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUE7SUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFBO0lBQ3ZELElBQUksTUFBTSxLQUFLLEdBQUc7UUFBRSxPQUFPLE9BQU8sS0FBSyxHQUFHLENBQUE7SUFDMUMsT0FBTyxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDekQsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQVUsWUFBWSxDQUMxQixXQUFtQixFQUNuQixRQUFhO0lBRWIsSUFBSSxJQUFtQixDQUFBO0lBQ3ZCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUNmLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFDRSxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUMvQixDQUFDO1lBQ0QsSUFBSSxHQUFHLE9BQU8sQ0FBQTtZQUNkLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQTtRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFFBQWEsRUFDYixRQUE4QjtJQUU5QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFBO0lBQ3RDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDcEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLENBQUE7UUFDNUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuXG4vKiogUmV0dXJuIHRoZSBzZWN0aW9uIHdob3NlIHByZWZpeCBvciBpbnRlcm5hbC1VUkwgYmVzdCBtYXRjaGVzIHRoZVxuICogIGdpdmVuIHBhdGhuYW1lLiBSb3V0ZWQgc2VjdGlvbnMgKGFydGljbGUvYmxvZy9jaGFuZ2Vsb2cpIG1hdGNoIGJ5XG4gKiAgYHByZWZpeGAuIEN1c3RvbSBzZWN0aW9ucyB3aXRoIGludGVybmFsIFVSTHMgKGAvYC1sZWFkaW5nLCBub3RcbiAqICBgLy9gKSBtYXRjaCBieSB0aGVpciBVUkwg4oCUIHdpdGggdGhlIHNhbWUgZXhhY3QtYC9gIGd1YXJkIGFzXG4gKiAgYGN1c3RvbVNlY3Rpb25BY3RpdmVgIHNvIGEgY3VzdG9tIFVSTCBvZiBgL2Agb25seSBhY3RpdmF0ZXMgb25cbiAqICB0aGUgaG9tZSBwYWdlIGl0c2VsZi4gQ3VzdG9tIHNlY3Rpb25zIHdpdGggYWJzb2x1dGUgVVJMcyBuZXZlclxuICogIG1hdGNoLiBMb25nZXN0IG1hdGNoIHdpbnMuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZlU2l0ZVNlY3Rpb24ocGF0aG5hbWU6IHN0cmluZywgc2VjdGlvbnM6IFNlY3Rpb25bXSkge1xuICBjb25zdCBjdXJyZW50ID0gYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBsZXQgYmVzdDogU2VjdGlvbiB8IHVuZGVmaW5lZFxuICBsZXQgYmVzdExlbiA9IDBcbiAgZm9yIChjb25zdCBzIG9mIHNlY3Rpb25zKSB7XG4gICAgY29uc3QgcHJlZml4ID0gc2VjdGlvbk1hdGNoUHJlZml4KHMpXG4gICAgaWYgKCFwcmVmaXgpIGNvbnRpbnVlXG4gICAgaWYgKHMudHlwZSA9PT0gXCJjdXN0b21cIiAmJiBwcmVmaXggPT09IFwiL1wiICYmIGN1cnJlbnQgIT09IFwiL1wiKSBjb250aW51ZVxuICAgIGlmICghY3VycmVudC5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlXG4gICAgaWYgKHByZWZpeC5sZW5ndGggPiBiZXN0TGVuKSB7XG4gICAgICBiZXN0ID0gc1xuICAgICAgYmVzdExlbiA9IHByZWZpeC5sZW5ndGhcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Rcbn1cblxuZnVuY3Rpb24gc2VjdGlvbk1hdGNoUHJlZml4KHM6IFNlY3Rpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAocy50eXBlICE9PSBcImN1c3RvbVwiKSByZXR1cm4gcy5wcmVmaXhcbiAgaWYgKCFzLnVybC5zdGFydHNXaXRoKFwiL1wiKSB8fCBzLnVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3Qgc3RyaXBwZWQgPSBzLnVybC5zcGxpdCgvWz8jXS8pWzBdID8/IFwiXCJcbiAgcmV0dXJuIGAvJHtzdHJpcHBlZC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2Bcbn1cblxuLyoqIFdoZXRoZXIgYSBjdXN0b20gc2VjdGlvbidzIFVSTCBzaG91bGQgaGlnaGxpZ2h0IGFzIGFjdGl2ZSBmb3IgdGhlXG4gKiAgY3VycmVudCBwYXRobmFtZS4gT25seSBgL2AtbGVhZGluZyBpbnRlcm5hbCBwYXRocyBwYXJ0aWNpcGF0ZTtcbiAqICBwcm90b2NvbC1hYnNvbHV0ZSAoYGh0dHBzOi8v4oCmYCwgYC8vY2Ru4oCmYCkgVVJMcyBuZXZlciBoaWdobGlnaHQuXG4gKiAgTWF0Y2ggc2VtYW50aWNzIG1pcnJvciByb3V0ZWQgc2VjdGlvbnMg4oCUIGV4YWN0IHBhdGggb3IgYW55XG4gKiAgZGVzY2VuZGFudC4gQSBVUkwgb2YgYC9gIG9ubHkgaGlnaGxpZ2h0cyB0aGUgaG9tZSBwYWdlIGl0c2VsZlxuICogIChvdGhlcndpc2UgaXQgd291bGQgYWx3YXlzIG1hdGNoKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21TZWN0aW9uQWN0aXZlKHVybDogc3RyaW5nLCBwYXRobmFtZTogc3RyaW5nKSB7XG4gIGlmICghdXJsLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHVybC5zdGFydHNXaXRoKFwiLy9cIikpIHJldHVybiBmYWxzZVxuICBjb25zdCBzdHJpcHBlZCA9IHVybC5zcGxpdCgvWz8jXS8pWzBdID8/IFwiXCJcbiAgY29uc3QgdGFyZ2V0ID0gYC8ke3N0cmlwcGVkLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBjb25zdCBjdXJyZW50ID0gYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYFxuICBpZiAodGFyZ2V0ID09PSBcIi9cIikgcmV0dXJuIGN1cnJlbnQgPT09IFwiL1wiXG4gIHJldHVybiBjdXJyZW50ID09PSB0YXJnZXQgfHwgY3VycmVudC5zdGFydHNXaXRoKHRhcmdldClcbn1cblxuLyoqIEZpbmQgdGhlIHNlY3Rpb24gd2hvc2UgcHJlZml4IGlzIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgYXJ0aWNsZSBwYXRoICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hTZWN0aW9uPFMgZXh0ZW5kcyB7IHByZWZpeDogc3RyaW5nIH0+KFxuICBhcnRpY2xlUGF0aDogc3RyaW5nLFxuICBzZWN0aW9uczogU1tdLFxuKTogUyB8IHVuZGVmaW5lZCB7XG4gIGxldCBiZXN0OiBTIHwgdW5kZWZpbmVkXG4gIGxldCBiZXN0TGVuID0gMFxuICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBhcnRpY2xlUGF0aC5zdGFydHNXaXRoKHNlY3Rpb24ucHJlZml4KSAmJlxuICAgICAgc2VjdGlvbi5wcmVmaXgubGVuZ3RoID4gYmVzdExlblxuICAgICkge1xuICAgICAgYmVzdCA9IHNlY3Rpb25cbiAgICAgIGJlc3RMZW4gPSBzZWN0aW9uLnByZWZpeC5sZW5ndGhcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Rcbn1cblxuLyoqIFNwbGl0IGFydGljbGVzIGludG8gcGVyLXNlY3Rpb24gYnVja2V0cy4gVW5tYXRjaGVkIGFydGljbGVzIGdvIHRvIFwiX19kZWZhdWx0X19cIiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpdGlvbkJ5U2VjdGlvbjxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmcgfT4oXG4gIGFydGljbGVzOiBUW10sXG4gIHNlY3Rpb25zOiB7IHByZWZpeDogc3RyaW5nIH1bXSxcbik6IE1hcDxzdHJpbmcsIFRbXT4ge1xuICBjb25zdCBidWNrZXRzID0gbmV3IE1hcDxzdHJpbmcsIFRbXT4oKVxuICBmb3IgKGNvbnN0IGFydGljbGUgb2YgYXJ0aWNsZXMpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gbWF0Y2hTZWN0aW9uKGFydGljbGUucGF0aCwgc2VjdGlvbnMpXG4gICAgY29uc3Qga2V5ID0gc2VjdGlvbj8ucHJlZml4ID8/IFwiX19kZWZhdWx0X19cIlxuICAgIGNvbnN0IGJ1Y2tldCA9IGJ1Y2tldHMuZ2V0KGtleSlcbiAgICBpZiAoYnVja2V0KSB7XG4gICAgICBidWNrZXQucHVzaChhcnRpY2xlKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWNrZXRzLnNldChrZXksIFthcnRpY2xlXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJ1Y2tldHNcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
-
import { customSectionActive, matchSection, partitionBySection, } from "./section.js";
|
|
2
|
+
import { activeSiteSection, customSectionActive, matchSection, partitionBySection, } from "./section.js";
|
|
3
3
|
describe("matchSection", () => {
|
|
4
4
|
const sections = [
|
|
5
5
|
{ title: "Docs", prefix: "/" },
|
|
@@ -89,4 +89,59 @@ describe("customSectionActive", () => {
|
|
|
89
89
|
expect(customSectionActive("/about#top", "/about/team/")).toBe(true);
|
|
90
90
|
});
|
|
91
91
|
});
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvc2VjdGlvbi51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGtCQUFrQixHQUNuQixNQUFNLGNBQWMsQ0FBQTtBQUVyQixRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixNQUFNLFFBQVEsR0FBRztRQUNmLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ2pDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFO0tBQzVDLENBQUE7SUFFRCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzVFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEdBQUcsRUFBRTtRQUNsRSxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FB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QUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1FBQzVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RFLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQge1xuICBjdXN0b21TZWN0aW9uQWN0aXZlLFxuICBtYXRjaFNlY3Rpb24sXG4gIHBhcnRpdGlvbkJ5U2VjdGlvbixcbn0gZnJvbSBcIi4vc2VjdGlvbi50c1wiXG5cbmRlc2NyaWJlKFwibWF0Y2hTZWN0aW9uXCIsICgpID0+IHtcbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAgeyB0aXRsZTogXCJEb2NzXCIsIHByZWZpeDogXCIvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9LFxuICAgIHsgdGl0bGU6IFwiQVBJIEF1dGhcIiwgcHJlZml4OiBcIi9hcGkvYXV0aC9cIiB9LFxuICBdXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggdGhlIG1vc3Qgc3BlY2lmaWMgcHJlZml4XCIsICgpID0+IHtcbiAgICBleHBlY3QobWF0Y2hTZWN0aW9uKFwiL2FwaS9hdXRoL2xvZ2luL1wiLCBzZWN0aW9ucyk/LnRpdGxlKS50b0JlKFwiQVBJIEF1dGhcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIGxlc3Mgc3BlY2lmaWMgcHJlZml4IHdoZW4gbm8gZGVlcGVyIG1hdGNoXCIsICgpID0+IHtcbiAgICBleHBlY3QobWF0Y2hTZWN0aW9uKFwiL2FwaS91c2Vycy9cIiwgc2VjdGlvbnMpPy50aXRsZSkudG9CZShcIkFQSVwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHJvb3Qgc2VjdGlvbiBhcyBmYWxsYmFja1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIsIHNlY3Rpb25zKT8udGl0bGUpLnRvQmUoXCJEb2NzXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCB3aGVuIG5vIHNlY3Rpb24gbWF0Y2hlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgbmFycm93ID0gW3sgdGl0bGU6IFwiQVBJXCIsIHByZWZpeDogXCIvYXBpL1wiIH1dXG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIsIG5hcnJvdykpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIGEgc2luZ2xlIHJvb3Qgc2VjdGlvbiBmb3IgYWxsIGFydGljbGVzXCIsICgpID0+IHtcbiAgICBjb25zdCByb290ID0gW3sgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH1dXG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hbnl0aGluZy9kZWVwL3BhdGgvXCIsIHJvb3QpPy50aXRsZSkudG9CZShcIkRvY3NcIilcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwicGFydGl0aW9uQnlTZWN0aW9uXCIsICgpID0+IHtcbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAgeyB0aXRsZTogXCJEb2NzXCIsIHByZWZpeDogXCIvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9LFxuICBdXG5cbiAgY29uc3QgYXJ0aWNsZXMgPSBbXG4gICAgeyBwYXRoOiBcIi9nZXR0aW5nLXN0YXJ0ZWQvXCIgfSxcbiAgICB7IHBhdGg6IFwiL2d1aWRlL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9hcGkvdXNlcnMvXCIgfSxcbiAgICB7IHBhdGg6IFwiL2FwaS9hdXRoL1wiIH0sXG4gIF1cblxuICBpdChcInNob3VsZCBzcGxpdCBhcnRpY2xlcyBpbnRvIHNlY3Rpb24gYnVja2V0c1wiLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gcGFydGl0aW9uQnlTZWN0aW9uKGFydGljbGVzLCBzZWN0aW9ucylcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgXCIvZ2V0dGluZy1zdGFydGVkL1wiLFxuICAgICAgXCIvZ3VpZGUvXCIsXG4gICAgXSlcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9hcGkvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2FwaS91c2Vycy9cIixcbiAgICAgIFwiL2FwaS9hdXRoL1wiLFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcHV0IHVubWF0Y2hlZCBhcnRpY2xlcyBpbiBfX2RlZmF1bHRfXyBidWNrZXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5hcnJvdyA9IFt7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9XVxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRpdGlvbkJ5U2VjdGlvbihhcnRpY2xlcywgbmFycm93KVxuICAgIGV4cGVjdChyZXN1bHQuZ2V0KFwiX19kZWZhdWx0X19cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgXCIvZ2V0dGluZy1zdGFydGVkL1wiLFxuICAgICAgXCIvZ3VpZGUvXCIsXG4gICAgXSlcbiAgICBleHBlY3QocmVzdWx0LmdldChcIi9hcGkvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2FwaS91c2Vycy9cIixcbiAgICAgIFwiL2FwaS9hdXRoL1wiLFxuICAgIF0pXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImN1c3RvbVNlY3Rpb25BY3RpdmVcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBub3QgbWF0Y2ggYW4gYWJzb2x1dGUgaHR0cCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiaHR0cHM6Ly94LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiaHR0cDovL3guY29tL3lcIiwgXCIveS9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgcHJvdG9jb2wtcmVsYXRpdmUgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi8vY2RuLnguY29tL3lcIiwgXCIveS9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgaGFzaCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiI3NlY3Rpb25cIiwgXCIvc2VjdGlvbi9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggdGhlIGV4YWN0IHBhdGhcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0XCIsIFwiL2Fib3V0L1wiKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0L1wiLCBcIi9hYm91dC9cIikpLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIGRlc2NlbmRhbnQgcGF0aFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXRcIiwgXCIvYWJvdXQvdGVhbS9cIikpLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBub3QgbWF0Y2ggYSBzaWJsaW5nIHBhdGggd2l0aCBzaGFyZWQgcHJlZml4XCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dFwiLCBcIi9hYm91dHVzL1wiKSkudG9CZShmYWxzZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBleGFjdCByb290IG9ubHlcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL1wiLCBcIi9cIikpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9cIiwgXCIvYWJvdXQvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGlnbm9yZSBxdWVyeSBhbmQgaGFzaCBvbiB0aGUgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dD94PTFcIiwgXCIvYWJvdXQvXCIpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXQjdG9wXCIsIFwiL2Fib3V0L3RlYW0vXCIpKS50b0JlKHRydWUpXG4gIH0pXG59KVxuIl19
|
|
92
|
+
describe("activeSiteSection", () => {
|
|
93
|
+
const docs = {
|
|
94
|
+
type: "article",
|
|
95
|
+
title: "Docs",
|
|
96
|
+
prefix: "/",
|
|
97
|
+
position: "header",
|
|
98
|
+
};
|
|
99
|
+
const blog = {
|
|
100
|
+
type: "blog",
|
|
101
|
+
title: "Blog",
|
|
102
|
+
prefix: "/blog/",
|
|
103
|
+
position: "header",
|
|
104
|
+
};
|
|
105
|
+
const apiCustom = {
|
|
106
|
+
type: "custom",
|
|
107
|
+
title: "API",
|
|
108
|
+
url: "/api/v2",
|
|
109
|
+
position: "header",
|
|
110
|
+
};
|
|
111
|
+
const githubCustom = {
|
|
112
|
+
type: "custom",
|
|
113
|
+
title: "GitHub",
|
|
114
|
+
url: "https://github.com/example/repo",
|
|
115
|
+
position: "header",
|
|
116
|
+
};
|
|
117
|
+
const homeCustom = {
|
|
118
|
+
type: "custom",
|
|
119
|
+
title: "Home",
|
|
120
|
+
url: "/",
|
|
121
|
+
position: "header",
|
|
122
|
+
};
|
|
123
|
+
it("should return the routed section matching by prefix", () => {
|
|
124
|
+
expect(activeSiteSection("/blog/post/", [docs, blog])?.title).toBe("Blog");
|
|
125
|
+
});
|
|
126
|
+
it("should return the custom section matching by internal url", () => {
|
|
127
|
+
expect(activeSiteSection("/api/v2/users/", [docs, apiCustom])?.title).toBe("API");
|
|
128
|
+
});
|
|
129
|
+
it("should pick the longest match among overlapping prefixes", () => {
|
|
130
|
+
expect(activeSiteSection("/blog/post/", [docs, blog])?.title).toBe("Blog");
|
|
131
|
+
expect(activeSiteSection("/api/v2/foo/", [docs, apiCustom])?.title).toBe("API");
|
|
132
|
+
});
|
|
133
|
+
it("should ignore custom sections with absolute URLs", () => {
|
|
134
|
+
expect(activeSiteSection("/anything/", [githubCustom])).toBeUndefined();
|
|
135
|
+
});
|
|
136
|
+
it("should match custom URL `/` only on the home page", () => {
|
|
137
|
+
expect(activeSiteSection("/", [homeCustom])?.title).toBe("Home");
|
|
138
|
+
expect(activeSiteSection("/about/", [homeCustom])).toBeUndefined();
|
|
139
|
+
});
|
|
140
|
+
it("should let routed `/` match descendants while custom `/` does not", () => {
|
|
141
|
+
expect(activeSiteSection("/about/", [docs, homeCustom])?.title).toBe("Docs");
|
|
142
|
+
});
|
|
143
|
+
it("should return undefined when no section matches", () => {
|
|
144
|
+
expect(activeSiteSection("/anything/", [blog, apiCustom])).toBeUndefined();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2hlbHBlcnMvc2VjdGlvbi51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXJELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixrQkFBa0IsR0FDbkIsTUFBTSxjQUFjLENBQUE7QUFFckIsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7SUFDNUIsTUFBTSxRQUFRLEdBQUc7UUFDZixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUNqQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtLQUM1QyxDQUFBO0lBRUQsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM1RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7UUFDbEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUks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SUFBSSxDQUN0RSxLQUFLLENBQ04sQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3pFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtRQUMzRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNwRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7UUFDM0UsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDNUUsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB0eXBlIHsgU2VjdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBhY3RpdmVTaXRlU2VjdGlvbixcbiAgY3VzdG9tU2VjdGlvbkFjdGl2ZSxcbiAgbWF0Y2hTZWN0aW9uLFxuICBwYXJ0aXRpb25CeVNlY3Rpb24sXG59IGZyb20gXCIuL3NlY3Rpb24udHNcIlxuXG5kZXNjcmliZShcIm1hdGNoU2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHsgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH0sXG4gICAgeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfSxcbiAgICB7IHRpdGxlOiBcIkFQSSBBdXRoXCIsIHByZWZpeDogXCIvYXBpL2F1dGgvXCIgfSxcbiAgXVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHRoZSBtb3N0IHNwZWNpZmljIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hcGkvYXV0aC9sb2dpbi9cIiwgc2VjdGlvbnMpPy50aXRsZSkudG9CZShcIkFQSSBBdXRoXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggYSBsZXNzIHNwZWNpZmljIHByZWZpeCB3aGVuIG5vIGRlZXBlciBtYXRjaFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KG1hdGNoU2VjdGlvbihcIi9hcGkvdXNlcnMvXCIsIHNlY3Rpb25zKT8udGl0bGUpLnRvQmUoXCJBUElcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCByb290IHNlY3Rpb24gYXMgZmFsbGJhY2tcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvZ2V0dGluZy1zdGFydGVkL1wiLCBzZWN0aW9ucyk/LnRpdGxlKS50b0JlKFwiRG9jc1wiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiBubyBzZWN0aW9uIG1hdGNoZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5hcnJvdyA9IFt7IHRpdGxlOiBcIkFQSVwiLCBwcmVmaXg6IFwiL2FwaS9cIiB9XVxuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvZ2V0dGluZy1zdGFydGVkL1wiLCBuYXJyb3cpKS50b0JlVW5kZWZpbmVkKClcbiAgfSlcblxuICBpdChcInNob3VsZCBtYXRjaCBhIHNpbmdsZSByb290IHNlY3Rpb24gZm9yIGFsbCBhcnRpY2xlc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IFt7IHRpdGxlOiBcIkRvY3NcIiwgcHJlZml4OiBcIi9cIiB9XVxuICAgIGV4cGVjdChtYXRjaFNlY3Rpb24oXCIvYW55dGhpbmcvZGVlcC9wYXRoL1wiLCByb290KT8udGl0bGUpLnRvQmUoXCJEb2NzXCIpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcInBhcnRpdGlvbkJ5U2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHsgdGl0bGU6IFwiRG9jc1wiLCBwcmVmaXg6IFwiL1wiIH0sXG4gICAgeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfSxcbiAgXVxuXG4gIGNvbnN0IGFydGljbGVzID0gW1xuICAgIHsgcGF0aDogXCIvZ2V0dGluZy1zdGFydGVkL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9ndWlkZS9cIiB9LFxuICAgIHsgcGF0aDogXCIvYXBpL3VzZXJzL1wiIH0sXG4gICAgeyBwYXRoOiBcIi9hcGkvYXV0aC9cIiB9LFxuICBdXG5cbiAgaXQoXCJzaG91bGQgc3BsaXQgYXJ0aWNsZXMgaW50byBzZWN0aW9uIGJ1Y2tldHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRpdGlvbkJ5U2VjdGlvbihhcnRpY2xlcywgc2VjdGlvbnMpXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2dldHRpbmctc3RhcnRlZC9cIixcbiAgICAgIFwiL2d1aWRlL1wiLFxuICAgIF0pXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvYXBpL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICBcIi9hcGkvdXNlcnMvXCIsXG4gICAgICBcIi9hcGkvYXV0aC9cIixcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHB1dCB1bm1hdGNoZWQgYXJ0aWNsZXMgaW4gX19kZWZhdWx0X18gYnVja2V0XCIsICgpID0+IHtcbiAgICBjb25zdCBuYXJyb3cgPSBbeyB0aXRsZTogXCJBUElcIiwgcHJlZml4OiBcIi9hcGkvXCIgfV1cbiAgICBjb25zdCByZXN1bHQgPSBwYXJ0aXRpb25CeVNlY3Rpb24oYXJ0aWNsZXMsIG5hcnJvdylcbiAgICBleHBlY3QocmVzdWx0LmdldChcIl9fZGVmYXVsdF9fXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgIFwiL2dldHRpbmctc3RhcnRlZC9cIixcbiAgICAgIFwiL2d1aWRlL1wiLFxuICAgIF0pXG4gICAgZXhwZWN0KHJlc3VsdC5nZXQoXCIvYXBpL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICBcIi9hcGkvdXNlcnMvXCIsXG4gICAgICBcIi9hcGkvYXV0aC9cIixcbiAgICBdKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJjdXN0b21TZWN0aW9uQWN0aXZlXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGFuIGFic29sdXRlIGh0dHAgdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcImh0dHBzOi8veC5jb20veVwiLCBcIi95L1wiKSkudG9CZShmYWxzZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcImh0dHA6Ly94LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG5vdCBtYXRjaCBhIHByb3RvY29sLXJlbGF0aXZlIHVybFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvL2Nkbi54LmNvbS95XCIsIFwiL3kvXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG5vdCBtYXRjaCBhIGhhc2ggdXJsXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIiNzZWN0aW9uXCIsIFwiL3NlY3Rpb24vXCIpKS50b0JlKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIG1hdGNoIHRoZSBleGFjdCBwYXRoXCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dFwiLCBcIi9hYm91dC9cIikpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9hYm91dC9cIiwgXCIvYWJvdXQvXCIpKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggYSBkZXNjZW5kYW50IHBhdGhcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0XCIsIFwiL2Fib3V0L3RlYW0vXCIpKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbm90IG1hdGNoIGEgc2libGluZyBwYXRoIHdpdGggc2hhcmVkIHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXRcIiwgXCIvYWJvdXR1cy9cIikpLnRvQmUoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggZXhhY3Qgcm9vdCBvbmx5XCIsICgpID0+IHtcbiAgICBleHBlY3QoY3VzdG9tU2VjdGlvbkFjdGl2ZShcIi9cIiwgXCIvXCIpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvXCIsIFwiL2Fib3V0L1wiKSkudG9CZShmYWxzZSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpZ25vcmUgcXVlcnkgYW5kIGhhc2ggb24gdGhlIHVybFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGN1c3RvbVNlY3Rpb25BY3RpdmUoXCIvYWJvdXQ/eD0xXCIsIFwiL2Fib3V0L1wiKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChjdXN0b21TZWN0aW9uQWN0aXZlKFwiL2Fib3V0I3RvcFwiLCBcIi9hYm91dC90ZWFtL1wiKSkudG9CZSh0cnVlKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJhY3RpdmVTaXRlU2VjdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IGRvY3M6IFNlY3Rpb24gPSB7XG4gICAgdHlwZTogXCJhcnRpY2xlXCIsXG4gICAgdGl0bGU6IFwiRG9jc1wiLFxuICAgIHByZWZpeDogXCIvXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cbiAgY29uc3QgYmxvZzogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImJsb2dcIixcbiAgICB0aXRsZTogXCJCbG9nXCIsXG4gICAgcHJlZml4OiBcIi9ibG9nL1wiLFxuICAgIHBvc2l0aW9uOiBcImhlYWRlclwiLFxuICB9XG4gIGNvbnN0IGFwaUN1c3RvbTogU2VjdGlvbiA9IHtcbiAgICB0eXBlOiBcImN1c3RvbVwiLFxuICAgIHRpdGxlOiBcIkFQSVwiLFxuICAgIHVybDogXCIvYXBpL3YyXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cbiAgY29uc3QgZ2l0aHViQ3VzdG9tOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgdGl0bGU6IFwiR2l0SHViXCIsXG4gICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9leGFtcGxlL3JlcG9cIixcbiAgICBwb3NpdGlvbjogXCJoZWFkZXJcIixcbiAgfVxuICBjb25zdCBob21lQ3VzdG9tOiBTZWN0aW9uID0ge1xuICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgdGl0bGU6IFwiSG9tZVwiLFxuICAgIHVybDogXCIvXCIsXG4gICAgcG9zaXRpb246IFwiaGVhZGVyXCIsXG4gIH1cblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIHJvdXRlZCBzZWN0aW9uIG1hdGNoaW5nIGJ5IHByZWZpeFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2Jsb2cvcG9zdC9cIiwgW2RvY3MsIGJsb2ddKT8udGl0bGUpLnRvQmUoXCJCbG9nXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcmV0dXJuIHRoZSBjdXN0b20gc2VjdGlvbiBtYXRjaGluZyBieSBpbnRlcm5hbCB1cmxcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hcGkvdjIvdXNlcnMvXCIsIFtkb2NzLCBhcGlDdXN0b21dKT8udGl0bGUpLnRvQmUoXG4gICAgICBcIkFQSVwiLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCBwaWNrIHRoZSBsb25nZXN0IG1hdGNoIGFtb25nIG92ZXJsYXBwaW5nIHByZWZpeGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYmxvZy9wb3N0L1wiLCBbZG9jcywgYmxvZ10pPy50aXRsZSkudG9CZShcIkJsb2dcIilcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYXBpL3YyL2Zvby9cIiwgW2RvY3MsIGFwaUN1c3RvbV0pPy50aXRsZSkudG9CZShcbiAgICAgIFwiQVBJXCIsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGlnbm9yZSBjdXN0b20gc2VjdGlvbnMgd2l0aCBhYnNvbHV0ZSBVUkxzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYW55dGhpbmcvXCIsIFtnaXRodWJDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbWF0Y2ggY3VzdG9tIFVSTCBgL2Agb25seSBvbiB0aGUgaG9tZSBwYWdlXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvXCIsIFtob21lQ3VzdG9tXSk/LnRpdGxlKS50b0JlKFwiSG9tZVwiKVxuICAgIGV4cGVjdChhY3RpdmVTaXRlU2VjdGlvbihcIi9hYm91dC9cIiwgW2hvbWVDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgbGV0IHJvdXRlZCBgL2AgbWF0Y2ggZGVzY2VuZGFudHMgd2hpbGUgY3VzdG9tIGAvYCBkb2VzIG5vdFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFjdGl2ZVNpdGVTZWN0aW9uKFwiL2Fib3V0L1wiLCBbZG9jcywgaG9tZUN1c3RvbV0pPy50aXRsZSkudG9CZShcIkRvY3NcIilcbiAgfSlcblxuICBpdChcInNob3VsZCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gbm8gc2VjdGlvbiBtYXRjaGVzXCIsICgpID0+IHtcbiAgICBleHBlY3QoYWN0aXZlU2l0ZVNlY3Rpb24oXCIvYW55dGhpbmcvXCIsIFtibG9nLCBhcGlDdXN0b21dKSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG59KVxuIl19
|
package/build/models/config.d.ts
CHANGED
|
@@ -120,6 +120,8 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
120
120
|
header: "header";
|
|
121
121
|
sidebar: "sidebar";
|
|
122
122
|
}>>;
|
|
123
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
124
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
123
125
|
type: z.ZodLiteral<"article">;
|
|
124
126
|
prefix: z.ZodString;
|
|
125
127
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -129,6 +131,8 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
129
131
|
header: "header";
|
|
130
132
|
sidebar: "sidebar";
|
|
131
133
|
}>>;
|
|
134
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
135
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
132
136
|
type: z.ZodLiteral<"blog">;
|
|
133
137
|
prefix: z.ZodString;
|
|
134
138
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -138,6 +142,8 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
138
142
|
header: "header";
|
|
139
143
|
sidebar: "sidebar";
|
|
140
144
|
}>>;
|
|
145
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
146
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
141
147
|
type: z.ZodLiteral<"changelog">;
|
|
142
148
|
prefix: z.ZodString;
|
|
143
149
|
source: z.ZodString;
|
|
@@ -149,6 +155,8 @@ export declare const UserConfig: z.ZodObject<{
|
|
|
149
155
|
header: "header";
|
|
150
156
|
sidebar: "sidebar";
|
|
151
157
|
}>>;
|
|
158
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
159
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
152
160
|
type: z.ZodLiteral<"custom">;
|
|
153
161
|
url: z.ZodString;
|
|
154
162
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -203,6 +211,8 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
203
211
|
header: "header";
|
|
204
212
|
sidebar: "sidebar";
|
|
205
213
|
}>>;
|
|
214
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
215
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
206
216
|
type: z.ZodLiteral<"article">;
|
|
207
217
|
prefix: z.ZodString;
|
|
208
218
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -212,6 +222,8 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
212
222
|
header: "header";
|
|
213
223
|
sidebar: "sidebar";
|
|
214
224
|
}>>;
|
|
225
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
226
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
215
227
|
type: z.ZodLiteral<"blog">;
|
|
216
228
|
prefix: z.ZodString;
|
|
217
229
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -221,6 +233,8 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
221
233
|
header: "header";
|
|
222
234
|
sidebar: "sidebar";
|
|
223
235
|
}>>;
|
|
236
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
237
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
224
238
|
type: z.ZodLiteral<"changelog">;
|
|
225
239
|
prefix: z.ZodString;
|
|
226
240
|
source: z.ZodString;
|
|
@@ -232,6 +246,8 @@ export declare const WebsiteConfig: z.ZodObject<{
|
|
|
232
246
|
header: "header";
|
|
233
247
|
sidebar: "sidebar";
|
|
234
248
|
}>>;
|
|
249
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
250
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
235
251
|
type: z.ZodLiteral<"custom">;
|
|
236
252
|
url: z.ZodString;
|
|
237
253
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -352,6 +368,8 @@ export declare const Config: z.ZodObject<{
|
|
|
352
368
|
header: "header";
|
|
353
369
|
sidebar: "sidebar";
|
|
354
370
|
}>>;
|
|
371
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
372
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
355
373
|
type: z.ZodLiteral<"article">;
|
|
356
374
|
prefix: z.ZodString;
|
|
357
375
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -361,6 +379,8 @@ export declare const Config: z.ZodObject<{
|
|
|
361
379
|
header: "header";
|
|
362
380
|
sidebar: "sidebar";
|
|
363
381
|
}>>;
|
|
382
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
383
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
364
384
|
type: z.ZodLiteral<"blog">;
|
|
365
385
|
prefix: z.ZodString;
|
|
366
386
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -370,6 +390,8 @@ export declare const Config: z.ZodObject<{
|
|
|
370
390
|
header: "header";
|
|
371
391
|
sidebar: "sidebar";
|
|
372
392
|
}>>;
|
|
393
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
394
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
373
395
|
type: z.ZodLiteral<"changelog">;
|
|
374
396
|
prefix: z.ZodString;
|
|
375
397
|
source: z.ZodString;
|
|
@@ -381,6 +403,8 @@ export declare const Config: z.ZodObject<{
|
|
|
381
403
|
header: "header";
|
|
382
404
|
sidebar: "sidebar";
|
|
383
405
|
}>>;
|
|
406
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
407
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
384
408
|
type: z.ZodLiteral<"custom">;
|
|
385
409
|
url: z.ZodString;
|
|
386
410
|
}, z.core.$strip>], "type">>>>;
|
|
@@ -8,6 +8,8 @@ export declare const ArticleSection: z.ZodObject<{
|
|
|
8
8
|
header: "header";
|
|
9
9
|
sidebar: "sidebar";
|
|
10
10
|
}>>;
|
|
11
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
12
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
11
13
|
type: z.ZodLiteral<"article">;
|
|
12
14
|
prefix: z.ZodString;
|
|
13
15
|
}, z.core.$strip>;
|
|
@@ -20,6 +22,8 @@ export declare const BlogSection: z.ZodObject<{
|
|
|
20
22
|
header: "header";
|
|
21
23
|
sidebar: "sidebar";
|
|
22
24
|
}>>;
|
|
25
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
26
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
23
27
|
type: z.ZodLiteral<"blog">;
|
|
24
28
|
prefix: z.ZodString;
|
|
25
29
|
}, z.core.$strip>;
|
|
@@ -32,6 +36,8 @@ export declare const ChangelogSection: z.ZodObject<{
|
|
|
32
36
|
header: "header";
|
|
33
37
|
sidebar: "sidebar";
|
|
34
38
|
}>>;
|
|
39
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
40
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
35
41
|
type: z.ZodLiteral<"changelog">;
|
|
36
42
|
prefix: z.ZodString;
|
|
37
43
|
source: z.ZodString;
|
|
@@ -48,6 +54,8 @@ export declare const CustomSection: z.ZodObject<{
|
|
|
48
54
|
header: "header";
|
|
49
55
|
sidebar: "sidebar";
|
|
50
56
|
}>>;
|
|
57
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
58
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
51
59
|
type: z.ZodLiteral<"custom">;
|
|
52
60
|
url: z.ZodString;
|
|
53
61
|
}, z.core.$strip>;
|
|
@@ -64,6 +72,8 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
64
72
|
header: "header";
|
|
65
73
|
sidebar: "sidebar";
|
|
66
74
|
}>>;
|
|
75
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
76
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
67
77
|
type: z.ZodLiteral<"article">;
|
|
68
78
|
prefix: z.ZodString;
|
|
69
79
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -73,6 +83,8 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
73
83
|
header: "header";
|
|
74
84
|
sidebar: "sidebar";
|
|
75
85
|
}>>;
|
|
86
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
87
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
76
88
|
type: z.ZodLiteral<"blog">;
|
|
77
89
|
prefix: z.ZodString;
|
|
78
90
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -82,6 +94,8 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
82
94
|
header: "header";
|
|
83
95
|
sidebar: "sidebar";
|
|
84
96
|
}>>;
|
|
97
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
98
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
85
99
|
type: z.ZodLiteral<"changelog">;
|
|
86
100
|
prefix: z.ZodString;
|
|
87
101
|
source: z.ZodString;
|
|
@@ -93,6 +107,8 @@ export declare const Section: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodD
|
|
|
93
107
|
header: "header";
|
|
94
108
|
sidebar: "sidebar";
|
|
95
109
|
}>>;
|
|
110
|
+
siteTitle: z.ZodOptional<z.ZodString>;
|
|
111
|
+
siteDescription: z.ZodOptional<z.ZodString>;
|
|
96
112
|
type: z.ZodLiteral<"custom">;
|
|
97
113
|
url: z.ZodString;
|
|
98
114
|
}, z.core.$strip>], "type">>;
|
package/build/models/section.js
CHANGED
|
@@ -3,6 +3,8 @@ const BaseSection = z.object({
|
|
|
3
3
|
icon: z.string().optional(),
|
|
4
4
|
title: z.string(),
|
|
5
5
|
position: z.enum(["header", "sidebar"]).default("header"),
|
|
6
|
+
siteTitle: z.string().optional(),
|
|
7
|
+
siteDescription: z.string().optional(),
|
|
6
8
|
});
|
|
7
9
|
export const ArticleSection = BaseSection.extend({
|
|
8
10
|
type: z.literal("article"),
|
|
@@ -34,4 +36,4 @@ export const Section = z.preprocess(input => {
|
|
|
34
36
|
ChangelogSection,
|
|
35
37
|
CustomSection,
|
|
36
38
|
]));
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9tb2RlbHMvc2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBRXZCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pELFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLGVBQWUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3ZDLENBQUMsQ0FBQTtBQUlGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQy9DLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUMxQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtDQUNuQixDQUFDLENBQUE7QUFJRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdkIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDbkIsQ0FBQyxDQUFBO0FBSUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDaEMsQ0FBQyxDQUFBO0FBTUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0NBQ2hCLENBQUMsQ0FBQTtBQVFGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsVUFBVSxDQUNqQyxLQUFLLENBQUMsRUFBRTtJQUNOLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLEtBQWdDLENBQUE7SUFDL0MsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQ25FLENBQUMsRUFDRCxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO0lBQzNCLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGFBQWE7Q0FDZCxDQUFDLENBQ0gsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuY29uc3QgQmFzZVNlY3Rpb24gPSB6Lm9iamVjdCh7XG4gIGljb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCksXG4gIHBvc2l0aW9uOiB6LmVudW0oW1wiaGVhZGVyXCIsIFwic2lkZWJhclwiXSkuZGVmYXVsdChcImhlYWRlclwiKSxcbiAgc2l0ZVRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNpdGVEZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIERlZmF1bHQgc2VjdGlvbjogcmVuZGVycyBhcnRpY2xlcy4gKi9cbmV4cG9ydCB0eXBlIEFydGljbGVTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQXJ0aWNsZVNlY3Rpb24+XG5leHBvcnQgY29uc3QgQXJ0aWNsZVNlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhcnRpY2xlXCIpLFxuICBwcmVmaXg6IHouc3RyaW5nKCksXG59KVxuXG4vKiogQmxvZyBzZWN0aW9uOiBkYXRlLXNvcnRlZCBwb3N0cyB3aXRoIHRhZ3MgYW5kIGluZGV4LiAqL1xuZXhwb3J0IHR5cGUgQmxvZ1NlY3Rpb24gPSB6LmluZmVyPHR5cGVvZiBCbG9nU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBCbG9nU2VjdGlvbiA9IEJhc2VTZWN0aW9uLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImJsb2dcIiksXG4gIHByZWZpeDogei5zdHJpbmcoKSxcbn0pXG5cbi8qKiBDaGFuZ2Vsb2cgc2VjdGlvbjogc2luZ2xlIGZpbGUgb3IgR2l0SHViIHJlbGVhc2VzLCBzcGxpdCBwZXIgdmVyc2lvbi4gKi9cbmV4cG9ydCB0eXBlIENoYW5nZWxvZ1NlY3Rpb24gPSB6LmluZmVyPHR5cGVvZiBDaGFuZ2Vsb2dTZWN0aW9uPlxuZXhwb3J0IGNvbnN0IENoYW5nZWxvZ1NlY3Rpb24gPSBCYXNlU2VjdGlvbi5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJjaGFuZ2Vsb2dcIiksXG4gIHByZWZpeDogei5zdHJpbmcoKSxcbiAgc291cmNlOiB6LnN0cmluZygpLFxuICB2ZXJzaW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSlcblxuLyoqIEN1c3RvbSBzZWN0aW9uOiByZW5kZXJzIGFzIGEgbGluayB0byBhbiBhcmJpdHJhcnkgVVJMIOKAlCBhYnNvbHV0ZVxuICogIChgaHR0cHM6Ly/igKZgKSBvciBpbnRlcm5hbCAoYC9jaGFuZ2Vsb2dgKS4gSW50ZXJuYWwgVVJMcyBwYXJ0aWNpcGF0ZVxuICogIGluIGFjdGl2ZS1zdGF0ZSBoaWdobGlnaHRpbmcgbGlrZSByb3V0ZWQgc2VjdGlvbnMuICovXG5leHBvcnQgdHlwZSBDdXN0b21TZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgQ3VzdG9tU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBDdXN0b21TZWN0aW9uID0gQmFzZVNlY3Rpb24uZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwiY3VzdG9tXCIpLFxuICB1cmw6IHouc3RyaW5nKCksXG59KVxuXG4vKipcbiAqIEEgc2l0ZSBzZWN0aW9uLiBEaXNjcmltaW5hdGVkIG9uIGB0eXBlYC5cbiAqIFdoZW4gYHR5cGVgIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIFwiYXJ0aWNsZVwiIHNvIHBsYWluXG4gKiBgeyB0aXRsZSwgcHJlZml4IH1gIGVudHJpZXMga2VlcCB3b3JraW5nLlxuICovXG5leHBvcnQgdHlwZSBTZWN0aW9uID0gei5pbmZlcjx0eXBlb2YgU2VjdGlvbj5cbmV4cG9ydCBjb25zdCBTZWN0aW9uID0gei5wcmVwcm9jZXNzKFxuICBpbnB1dCA9PiB7XG4gICAgaWYgKGlucHV0ID09PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgcmV0dXJuIGlucHV0XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZCA9IGlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgcmV0dXJuIFwidHlwZVwiIGluIHJlY29yZCA/IHJlY29yZCA6IHsgLi4ucmVjb3JkLCB0eXBlOiBcImFydGljbGVcIiB9XG4gIH0sXG4gIHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gICAgQXJ0aWNsZVNlY3Rpb24sXG4gICAgQmxvZ1NlY3Rpb24sXG4gICAgQ2hhbmdlbG9nU2VjdGlvbixcbiAgICBDdXN0b21TZWN0aW9uLFxuICBdKSxcbilcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -56,7 +56,8 @@ function splatFor(pathname: string) {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
function isActive(articlePathname: string, currentPath: string) {
|
|
59
|
-
const
|
|
59
|
+
const trimmed = currentPath.replace(/^\/|\/$/g, "")
|
|
60
|
+
const normalized = trimmed ? `/${trimmed}/` : "/"
|
|
60
61
|
return articlePathname === normalized
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import { config } from "livemark:virtual"
|
|
2
|
+
import { useLocation } from "@tanstack/react-router"
|
|
2
3
|
import { prefixUrl } from "../helpers/prefix-url.ts"
|
|
4
|
+
import { activeSiteSection } from "../helpers/section.ts"
|
|
3
5
|
import defaultLogo from "../assets/logo.svg"
|
|
4
6
|
|
|
5
|
-
/** Renders the site logo, title, and description in the sidebar header
|
|
7
|
+
/** Renders the site logo, title, and description in the sidebar header.
|
|
8
|
+
* When the current pathname falls inside a section that defines its own
|
|
9
|
+
* `siteTitle` / `siteDescription`, those override the global config. */
|
|
6
10
|
export function SiteTitle() {
|
|
11
|
+
const pathname = useLocation({ select: l => l.pathname })
|
|
12
|
+
const section = activeSiteSection(pathname, config.sections ?? [])
|
|
13
|
+
const title = section?.siteTitle ?? config.title
|
|
14
|
+
const description = section?.siteDescription ?? config.description
|
|
7
15
|
const logo = prefixUrl(config.logo ?? defaultLogo, config.base)
|
|
8
16
|
return (
|
|
9
17
|
<div className="flex items-end gap-2.5 text-sm">
|
|
10
|
-
<img src={logo} alt={
|
|
18
|
+
<img src={logo} alt={title} className="size-6.5 mb-1.25" />
|
|
11
19
|
<div className="flex flex-col gap-0.5 leading-none">
|
|
12
|
-
<span className="font-semibold">{
|
|
13
|
-
<span className="text-xs opacity-80">{
|
|
20
|
+
<span className="font-semibold">{title}</span>
|
|
21
|
+
<span className="text-xs opacity-80">{description}</span>
|
|
14
22
|
</div>
|
|
15
23
|
</div>
|
|
16
24
|
)
|
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
import type { Section } from "../models/section.ts"
|
|
2
|
+
|
|
3
|
+
/** Return the section whose prefix or internal-URL best matches the
|
|
4
|
+
* given pathname. Routed sections (article/blog/changelog) match by
|
|
5
|
+
* `prefix`. Custom sections with internal URLs (`/`-leading, not
|
|
6
|
+
* `//`) match by their URL — with the same exact-`/` guard as
|
|
7
|
+
* `customSectionActive` so a custom URL of `/` only activates on
|
|
8
|
+
* the home page itself. Custom sections with absolute URLs never
|
|
9
|
+
* match. Longest match wins. */
|
|
10
|
+
export function activeSiteSection(pathname: string, sections: Section[]) {
|
|
11
|
+
const current = `/${pathname.replace(/^\/|\/$/g, "")}/`
|
|
12
|
+
let best: Section | undefined
|
|
13
|
+
let bestLen = 0
|
|
14
|
+
for (const s of sections) {
|
|
15
|
+
const prefix = sectionMatchPrefix(s)
|
|
16
|
+
if (!prefix) continue
|
|
17
|
+
if (s.type === "custom" && prefix === "/" && current !== "/") continue
|
|
18
|
+
if (!current.startsWith(prefix)) continue
|
|
19
|
+
if (prefix.length > bestLen) {
|
|
20
|
+
best = s
|
|
21
|
+
bestLen = prefix.length
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return best
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function sectionMatchPrefix(s: Section): string | undefined {
|
|
28
|
+
if (s.type !== "custom") return s.prefix
|
|
29
|
+
if (!s.url.startsWith("/") || s.url.startsWith("//")) return undefined
|
|
30
|
+
const stripped = s.url.split(/[?#]/)[0] ?? ""
|
|
31
|
+
return `/${stripped.replace(/^\/|\/$/g, "")}/`
|
|
32
|
+
}
|
|
33
|
+
|
|
1
34
|
/** Whether a custom section's URL should highlight as active for the
|
|
2
35
|
* current pathname. Only `/`-leading internal paths participate;
|
|
3
36
|
* protocol-absolute (`https://…`, `//cdn…`) URLs never highlight.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vite-plus/test"
|
|
2
|
+
import type { Section } from "../models/section.ts"
|
|
2
3
|
import {
|
|
4
|
+
activeSiteSection,
|
|
3
5
|
customSectionActive,
|
|
4
6
|
matchSection,
|
|
5
7
|
partitionBySection,
|
|
@@ -111,3 +113,70 @@ describe("customSectionActive", () => {
|
|
|
111
113
|
expect(customSectionActive("/about#top", "/about/team/")).toBe(true)
|
|
112
114
|
})
|
|
113
115
|
})
|
|
116
|
+
|
|
117
|
+
describe("activeSiteSection", () => {
|
|
118
|
+
const docs: Section = {
|
|
119
|
+
type: "article",
|
|
120
|
+
title: "Docs",
|
|
121
|
+
prefix: "/",
|
|
122
|
+
position: "header",
|
|
123
|
+
}
|
|
124
|
+
const blog: Section = {
|
|
125
|
+
type: "blog",
|
|
126
|
+
title: "Blog",
|
|
127
|
+
prefix: "/blog/",
|
|
128
|
+
position: "header",
|
|
129
|
+
}
|
|
130
|
+
const apiCustom: Section = {
|
|
131
|
+
type: "custom",
|
|
132
|
+
title: "API",
|
|
133
|
+
url: "/api/v2",
|
|
134
|
+
position: "header",
|
|
135
|
+
}
|
|
136
|
+
const githubCustom: Section = {
|
|
137
|
+
type: "custom",
|
|
138
|
+
title: "GitHub",
|
|
139
|
+
url: "https://github.com/example/repo",
|
|
140
|
+
position: "header",
|
|
141
|
+
}
|
|
142
|
+
const homeCustom: Section = {
|
|
143
|
+
type: "custom",
|
|
144
|
+
title: "Home",
|
|
145
|
+
url: "/",
|
|
146
|
+
position: "header",
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
it("should return the routed section matching by prefix", () => {
|
|
150
|
+
expect(activeSiteSection("/blog/post/", [docs, blog])?.title).toBe("Blog")
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
it("should return the custom section matching by internal url", () => {
|
|
154
|
+
expect(activeSiteSection("/api/v2/users/", [docs, apiCustom])?.title).toBe(
|
|
155
|
+
"API",
|
|
156
|
+
)
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
it("should pick the longest match among overlapping prefixes", () => {
|
|
160
|
+
expect(activeSiteSection("/blog/post/", [docs, blog])?.title).toBe("Blog")
|
|
161
|
+
expect(activeSiteSection("/api/v2/foo/", [docs, apiCustom])?.title).toBe(
|
|
162
|
+
"API",
|
|
163
|
+
)
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
it("should ignore custom sections with absolute URLs", () => {
|
|
167
|
+
expect(activeSiteSection("/anything/", [githubCustom])).toBeUndefined()
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
it("should match custom URL `/` only on the home page", () => {
|
|
171
|
+
expect(activeSiteSection("/", [homeCustom])?.title).toBe("Home")
|
|
172
|
+
expect(activeSiteSection("/about/", [homeCustom])).toBeUndefined()
|
|
173
|
+
})
|
|
174
|
+
|
|
175
|
+
it("should let routed `/` match descendants while custom `/` does not", () => {
|
|
176
|
+
expect(activeSiteSection("/about/", [docs, homeCustom])?.title).toBe("Docs")
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
it("should return undefined when no section matches", () => {
|
|
180
|
+
expect(activeSiteSection("/anything/", [blog, apiCustom])).toBeUndefined()
|
|
181
|
+
})
|
|
182
|
+
})
|
package/source/models/section.ts
CHANGED
|
@@ -4,6 +4,8 @@ const BaseSection = z.object({
|
|
|
4
4
|
icon: z.string().optional(),
|
|
5
5
|
title: z.string(),
|
|
6
6
|
position: z.enum(["header", "sidebar"]).default("header"),
|
|
7
|
+
siteTitle: z.string().optional(),
|
|
8
|
+
siteDescription: z.string().optional(),
|
|
7
9
|
})
|
|
8
10
|
|
|
9
11
|
/** Default section: renders articles. */
|