mordoc 0.1.1
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/README.md +240 -0
- package/bin/cli.js +81 -0
- package/dist/build/Builder.d.ts +91 -0
- package/dist/build/Builder.d.ts.map +1 -0
- package/dist/build/Builder.js +391 -0
- package/dist/build/Builder.js.map +1 -0
- package/dist/build/ClientBundler.d.ts +36 -0
- package/dist/build/ClientBundler.d.ts.map +1 -0
- package/dist/build/ClientBundler.js +132 -0
- package/dist/build/ClientBundler.js.map +1 -0
- package/dist/build/HtmlGenerator.d.ts +46 -0
- package/dist/build/HtmlGenerator.d.ts.map +1 -0
- package/dist/build/HtmlGenerator.js +200 -0
- package/dist/build/HtmlGenerator.js.map +1 -0
- package/dist/build/SearchIndexer.d.ts +31 -0
- package/dist/build/SearchIndexer.d.ts.map +1 -0
- package/dist/build/SearchIndexer.js +116 -0
- package/dist/build/SearchIndexer.js.map +1 -0
- package/dist/cli/build.d.ts +20 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +111 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/create-app.d.ts +14 -0
- package/dist/cli/create-app.d.ts.map +1 -0
- package/dist/cli/create-app.js +216 -0
- package/dist/cli/create-app.js.map +1 -0
- package/dist/cli/dev.d.ts +20 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +169 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/client/App.d.ts +17 -0
- package/dist/client/App.d.ts.map +1 -0
- package/dist/client/App.js +94 -0
- package/dist/client/App.js.map +1 -0
- package/dist/client/contexts/ConfigContext.d.ts +22 -0
- package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
- package/dist/client/contexts/ConfigContext.js +27 -0
- package/dist/client/contexts/ConfigContext.js.map +1 -0
- package/dist/client/contexts/ContentContext.d.ts +31 -0
- package/dist/client/contexts/ContentContext.d.ts.map +1 -0
- package/dist/client/contexts/ContentContext.js +46 -0
- package/dist/client/contexts/ContentContext.js.map +1 -0
- package/dist/client/contexts/SearchContext.d.ts +38 -0
- package/dist/client/contexts/SearchContext.d.ts.map +1 -0
- package/dist/client/contexts/SearchContext.js +207 -0
- package/dist/client/contexts/SearchContext.js.map +1 -0
- package/dist/client/contexts/ThemeContext.d.ts +23 -0
- package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/client/contexts/ThemeContext.js +62 -0
- package/dist/client/contexts/ThemeContext.js.map +1 -0
- package/dist/client/hooks/useContent.d.ts +12 -0
- package/dist/client/hooks/useContent.d.ts.map +1 -0
- package/dist/client/hooks/useContent.js +74 -0
- package/dist/client/hooks/useContent.js.map +1 -0
- package/dist/client/hooks/useNavigation.d.ts +15 -0
- package/dist/client/hooks/useNavigation.d.ts.map +1 -0
- package/dist/client/hooks/useNavigation.js +101 -0
- package/dist/client/hooks/useNavigation.js.map +1 -0
- package/dist/client/hooks/useSearch.d.ts +22 -0
- package/dist/client/hooks/useSearch.d.ts.map +1 -0
- package/dist/client/hooks/useSearch.js +64 -0
- package/dist/client/hooks/useSearch.js.map +1 -0
- package/dist/client/main.d.ts +5 -0
- package/dist/client/main.d.ts.map +1 -0
- package/dist/client/main.js +66 -0
- package/dist/client/main.js.map +1 -0
- package/dist/components/Callout.d.ts +9 -0
- package/dist/components/Callout.d.ts.map +1 -0
- package/dist/components/Callout.js +24 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +15 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CardGrid.d.ts +8 -0
- package/dist/components/CardGrid.d.ts.map +1 -0
- package/dist/components/CardGrid.js +9 -0
- package/dist/components/CardGrid.js.map +1 -0
- package/dist/components/CodeBlock.d.ts +24 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +76 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/ContentPage.d.ts +9 -0
- package/dist/components/ContentPage.d.ts.map +1 -0
- package/dist/components/ContentPage.js +36 -0
- package/dist/components/ContentPage.js.map +1 -0
- package/dist/components/Header.d.ts +14 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +30 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Heading.d.ts +16 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +31 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Image.d.ts +8 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +24 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Layout.d.ts +14 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +32 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/MarkdocRenderer.d.ts +15 -0
- package/dist/components/MarkdocRenderer.d.ts.map +1 -0
- package/dist/components/MarkdocRenderer.js +73 -0
- package/dist/components/MarkdocRenderer.js.map +1 -0
- package/dist/components/MobileMenu.d.ts +14 -0
- package/dist/components/MobileMenu.d.ts.map +1 -0
- package/dist/components/MobileMenu.js +45 -0
- package/dist/components/MobileMenu.js.map +1 -0
- package/dist/components/PageNavigation.d.ts +9 -0
- package/dist/components/PageNavigation.d.ts.map +1 -0
- package/dist/components/PageNavigation.js +23 -0
- package/dist/components/PageNavigation.js.map +1 -0
- package/dist/components/SearchModal.d.ts +9 -0
- package/dist/components/SearchModal.d.ts.map +1 -0
- package/dist/components/SearchModal.js +74 -0
- package/dist/components/SearchModal.js.map +1 -0
- package/dist/components/SideNav.d.ts +9 -0
- package/dist/components/SideNav.d.ts.map +1 -0
- package/dist/components/SideNav.js +66 -0
- package/dist/components/SideNav.js.map +1 -0
- package/dist/components/TableOfContents.d.ts +10 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/TableOfContents.js +151 -0
- package/dist/components/TableOfContents.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +50 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +214 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/StyleCompiler.d.ts +17 -0
- package/dist/config/StyleCompiler.d.ts.map +1 -0
- package/dist/config/StyleCompiler.js +116 -0
- package/dist/config/StyleCompiler.js.map +1 -0
- package/dist/config/ThemeGenerator.d.ts +14 -0
- package/dist/config/ThemeGenerator.d.ts.map +1 -0
- package/dist/config/ThemeGenerator.js +129 -0
- package/dist/config/ThemeGenerator.js.map +1 -0
- package/dist/content/ContentLoader.d.ts +70 -0
- package/dist/content/ContentLoader.d.ts.map +1 -0
- package/dist/content/ContentLoader.js +146 -0
- package/dist/content/ContentLoader.js.map +1 -0
- package/dist/content/ContentProcessor.d.ts +84 -0
- package/dist/content/ContentProcessor.d.ts.map +1 -0
- package/dist/content/ContentProcessor.js +380 -0
- package/dist/content/ContentProcessor.js.map +1 -0
- package/dist/content/RouteManager.d.ts +69 -0
- package/dist/content/RouteManager.d.ts.map +1 -0
- package/dist/content/RouteManager.js +143 -0
- package/dist/content/RouteManager.js.map +1 -0
- package/dist/styles/components/callout.d.ts +11 -0
- package/dist/styles/components/callout.d.ts.map +1 -0
- package/dist/styles/components/callout.js +83 -0
- package/dist/styles/components/callout.js.map +1 -0
- package/dist/styles/components/card.d.ts +11 -0
- package/dist/styles/components/card.d.ts.map +1 -0
- package/dist/styles/components/card.js +179 -0
- package/dist/styles/components/card.js.map +1 -0
- package/dist/styles/components/codeblock.d.ts +11 -0
- package/dist/styles/components/codeblock.d.ts.map +1 -0
- package/dist/styles/components/codeblock.js +249 -0
- package/dist/styles/components/codeblock.js.map +1 -0
- package/dist/styles/components/content.d.ts +11 -0
- package/dist/styles/components/content.d.ts.map +1 -0
- package/dist/styles/components/content.js +198 -0
- package/dist/styles/components/content.js.map +1 -0
- package/dist/styles/components/fonts.d.ts +11 -0
- package/dist/styles/components/fonts.d.ts.map +1 -0
- package/dist/styles/components/fonts.js +34 -0
- package/dist/styles/components/fonts.js.map +1 -0
- package/dist/styles/components/header.d.ts +11 -0
- package/dist/styles/components/header.d.ts.map +1 -0
- package/dist/styles/components/header.js +293 -0
- package/dist/styles/components/header.js.map +1 -0
- package/dist/styles/components/heading.d.ts +11 -0
- package/dist/styles/components/heading.d.ts.map +1 -0
- package/dist/styles/components/heading.js +115 -0
- package/dist/styles/components/heading.js.map +1 -0
- package/dist/styles/components/layout.d.ts +11 -0
- package/dist/styles/components/layout.d.ts.map +1 -0
- package/dist/styles/components/layout.js +79 -0
- package/dist/styles/components/layout.js.map +1 -0
- package/dist/styles/components/mobilemenu.d.ts +11 -0
- package/dist/styles/components/mobilemenu.d.ts.map +1 -0
- package/dist/styles/components/mobilemenu.js +112 -0
- package/dist/styles/components/mobilemenu.js.map +1 -0
- package/dist/styles/components/reset.d.ts +11 -0
- package/dist/styles/components/reset.d.ts.map +1 -0
- package/dist/styles/components/reset.js +131 -0
- package/dist/styles/components/reset.js.map +1 -0
- package/dist/styles/components/searchmodal.d.ts +11 -0
- package/dist/styles/components/searchmodal.d.ts.map +1 -0
- package/dist/styles/components/searchmodal.js +333 -0
- package/dist/styles/components/searchmodal.js.map +1 -0
- package/dist/styles/components/sidenav.d.ts +11 -0
- package/dist/styles/components/sidenav.d.ts.map +1 -0
- package/dist/styles/components/sidenav.js +209 -0
- package/dist/styles/components/sidenav.js.map +1 -0
- package/dist/styles/components/toc.d.ts +11 -0
- package/dist/styles/components/toc.d.ts.map +1 -0
- package/dist/styles/components/toc.js +112 -0
- package/dist/styles/components/toc.js.map +1 -0
- package/dist/styles/components/typography.d.ts +11 -0
- package/dist/styles/components/typography.d.ts.map +1 -0
- package/dist/styles/components/typography.js +247 -0
- package/dist/styles/components/typography.js.map +1 -0
- package/dist/styles/components/utility.d.ts +11 -0
- package/dist/styles/components/utility.d.ts.map +1 -0
- package/dist/styles/components/utility.js +231 -0
- package/dist/styles/components/utility.js.map +1 -0
- package/dist/styles/types.d.ts +79 -0
- package/dist/styles/types.d.ts.map +1 -0
- package/dist/styles/types.js +7 -0
- package/dist/styles/types.js.map +1 -0
- package/dist/styles/utils.d.ts +21 -0
- package/dist/styles/utils.d.ts.map +1 -0
- package/dist/styles/utils.js +50 -0
- package/dist/styles/utils.js.map +1 -0
- package/dist/styles/variables/main.d.ts +15 -0
- package/dist/styles/variables/main.d.ts.map +1 -0
- package/dist/styles/variables/main.js +116 -0
- package/dist/styles/variables/main.js.map +1 -0
- package/dist/types/config.d.ts +43 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/content.d.ts +46 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +7 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/navigation.d.ts +45 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/navigation.js +7 -0
- package/dist/types/navigation.js.map +1 -0
- package/dist/utils/language-utils.d.ts +41 -0
- package/dist/utils/language-utils.d.ts.map +1 -0
- package/dist/utils/language-utils.js +79 -0
- package/dist/utils/language-utils.js.map +1 -0
- package/dist/utils/slugify.d.ts +20 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +44 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableOfContents = TableOfContents;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* TableOfContents - Displays page headings for quick navigation
|
|
7
|
+
*/
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
function TableOfContents({ toc }) {
|
|
10
|
+
const [activeId, setActiveId] = (0, react_1.useState)('');
|
|
11
|
+
const [isScrolling, setIsScrolling] = (0, react_1.useState)(false);
|
|
12
|
+
const scrollTimeoutRef = (0, react_1.useRef)(null);
|
|
13
|
+
// Handle initial page load with hash in URL
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
const hash = window.location.hash;
|
|
16
|
+
if (hash) {
|
|
17
|
+
const id = hash.slice(1);
|
|
18
|
+
const element = document.getElementById(id);
|
|
19
|
+
if (element) {
|
|
20
|
+
// Delay to ensure DOM is fully rendered
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
setIsScrolling(true);
|
|
23
|
+
setActiveId(id);
|
|
24
|
+
scrollToElement(element);
|
|
25
|
+
startScrollEndDetection();
|
|
26
|
+
}, 100);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
// Track which heading is currently visible using IntersectionObserver
|
|
31
|
+
(0, react_1.useEffect)(() => {
|
|
32
|
+
const observer = new IntersectionObserver((entries) => {
|
|
33
|
+
// Only update during manual scrolling, not programmatic scrolling
|
|
34
|
+
if (!isScrolling) {
|
|
35
|
+
entries.forEach((entry) => {
|
|
36
|
+
if (entry.isIntersecting) {
|
|
37
|
+
setActiveId(entry.target.id);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}, {
|
|
42
|
+
// Focus on viewport area below header and above bottom 80%
|
|
43
|
+
rootMargin: '-80px 0px -80% 0px',
|
|
44
|
+
});
|
|
45
|
+
const headings = document.querySelectorAll('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]');
|
|
46
|
+
headings.forEach((heading) => observer.observe(heading));
|
|
47
|
+
return () => {
|
|
48
|
+
headings.forEach((heading) => observer.unobserve(heading));
|
|
49
|
+
};
|
|
50
|
+
}, [toc, isScrolling]);
|
|
51
|
+
const scrollToElement = (element) => {
|
|
52
|
+
const scrollContainer = document.querySelector('.layout-main');
|
|
53
|
+
const offset = 100;
|
|
54
|
+
if (scrollContainer) {
|
|
55
|
+
const containerTop = scrollContainer.getBoundingClientRect().top;
|
|
56
|
+
const elementTop = element.getBoundingClientRect().top;
|
|
57
|
+
const scrollOffset = scrollContainer.scrollTop + (elementTop - containerTop) - offset;
|
|
58
|
+
scrollContainer.scrollTo({
|
|
59
|
+
top: scrollOffset,
|
|
60
|
+
behavior: 'smooth',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const elementPosition = element.getBoundingClientRect().top + window.pageYOffset;
|
|
65
|
+
const offsetPosition = elementPosition - offset;
|
|
66
|
+
window.scrollTo({
|
|
67
|
+
top: offsetPosition,
|
|
68
|
+
behavior: 'smooth',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Detects when smooth scrolling completes using debounced scroll events.
|
|
74
|
+
* Re-enables IntersectionObserver 150ms after the last scroll event.
|
|
75
|
+
* This approach works for any scroll distance, unlike fixed timeouts.
|
|
76
|
+
*/
|
|
77
|
+
const startScrollEndDetection = () => {
|
|
78
|
+
const scrollContainer = document.querySelector('.layout-main');
|
|
79
|
+
const handleScrollEnd = () => {
|
|
80
|
+
// Clear previous timeout on each scroll event (debouncing)
|
|
81
|
+
if (scrollTimeoutRef.current) {
|
|
82
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
83
|
+
}
|
|
84
|
+
// Wait 150ms after last scroll event to consider scrolling complete
|
|
85
|
+
scrollTimeoutRef.current = setTimeout(() => {
|
|
86
|
+
setIsScrolling(false);
|
|
87
|
+
// Clean up event listener
|
|
88
|
+
if (scrollContainer) {
|
|
89
|
+
scrollContainer.removeEventListener('scroll', handleScrollEnd);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
window.removeEventListener('scroll', handleScrollEnd);
|
|
93
|
+
}
|
|
94
|
+
}, 150);
|
|
95
|
+
};
|
|
96
|
+
if (scrollContainer) {
|
|
97
|
+
scrollContainer.addEventListener('scroll', handleScrollEnd);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
window.addEventListener('scroll', handleScrollEnd);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const handleClick = (id) => {
|
|
104
|
+
const element = document.getElementById(id);
|
|
105
|
+
if (!element)
|
|
106
|
+
return;
|
|
107
|
+
// Disable IntersectionObserver to prevent TOC from animating through sections
|
|
108
|
+
setIsScrolling(true);
|
|
109
|
+
// Set active immediately so TOC highlights the target section right away
|
|
110
|
+
setActiveId(id);
|
|
111
|
+
scrollToElement(element);
|
|
112
|
+
window.history.pushState(null, '', `#${id}`);
|
|
113
|
+
// Start listening for scroll completion
|
|
114
|
+
startScrollEndDetection();
|
|
115
|
+
};
|
|
116
|
+
// Handle browser back/forward navigation
|
|
117
|
+
(0, react_1.useEffect)(() => {
|
|
118
|
+
const handleHashChange = () => {
|
|
119
|
+
const hash = window.location.hash;
|
|
120
|
+
if (hash) {
|
|
121
|
+
const id = hash.slice(1);
|
|
122
|
+
handleClick(id);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
window.addEventListener('hashchange', handleHashChange);
|
|
126
|
+
return () => {
|
|
127
|
+
window.removeEventListener('hashchange', handleHashChange);
|
|
128
|
+
// Cleanup timeout on unmount to prevent memory leaks
|
|
129
|
+
if (scrollTimeoutRef.current) {
|
|
130
|
+
clearTimeout(scrollTimeoutRef.current);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
}, []);
|
|
134
|
+
const flattenToc = (entries) => {
|
|
135
|
+
const result = [];
|
|
136
|
+
const flatten = (items) => {
|
|
137
|
+
items.forEach((item) => {
|
|
138
|
+
result.push(item);
|
|
139
|
+
if (item.children && item.children.length > 0) {
|
|
140
|
+
flatten(item.children);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
flatten(entries);
|
|
145
|
+
return result;
|
|
146
|
+
};
|
|
147
|
+
const flatToc = flattenToc(toc);
|
|
148
|
+
return ((0, jsx_runtime_1.jsxs)("nav", { className: "toc", children: [(0, jsx_runtime_1.jsx)("p", { className: "toc-title", children: "On this page" }), (0, jsx_runtime_1.jsx)("ul", { className: "toc-list", children: flatToc.map((entry) => ((0, jsx_runtime_1.jsx)("li", { children: (0, jsx_runtime_1.jsx)("button", { className: `toc-link ${entry.id === activeId ? 'active' : ''}`, "data-level": entry.level, onClick: () => handleClick(entry.id), children: entry.text }) }, entry.id))) })] }));
|
|
149
|
+
}
|
|
150
|
+
exports.default = TableOfContents;
|
|
151
|
+
//# sourceMappingURL=TableOfContents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.js","sourceRoot":"","sources":["../../src/components/TableOfContents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigLoader - Loads and validates user configuration files
|
|
3
|
+
* Merges user config with sensible defaults
|
|
4
|
+
*/
|
|
5
|
+
import { SiteConfig } from '../types/config';
|
|
6
|
+
export declare class ConfigLoader {
|
|
7
|
+
private configDir;
|
|
8
|
+
constructor(projectRoot: string);
|
|
9
|
+
/**
|
|
10
|
+
* Load complete site configuration
|
|
11
|
+
*/
|
|
12
|
+
load(): Promise<SiteConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Load site metadata
|
|
15
|
+
*/
|
|
16
|
+
private loadMetadata;
|
|
17
|
+
/**
|
|
18
|
+
* Load language configuration
|
|
19
|
+
*/
|
|
20
|
+
private loadLanguages;
|
|
21
|
+
/**
|
|
22
|
+
* Load navigation configuration
|
|
23
|
+
*/
|
|
24
|
+
private loadNavigationConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Load main sidenav configuration
|
|
27
|
+
*/
|
|
28
|
+
private loadSideNav;
|
|
29
|
+
/**
|
|
30
|
+
* Load top navigation configuration
|
|
31
|
+
*/
|
|
32
|
+
private loadTopNav;
|
|
33
|
+
/**
|
|
34
|
+
* Load additional sidenav files (e.g., guides-sidenav.yaml, api-sidenav.yaml)
|
|
35
|
+
*/
|
|
36
|
+
private loadAdditionalSidenavs;
|
|
37
|
+
/**
|
|
38
|
+
* Load asset configuration
|
|
39
|
+
*/
|
|
40
|
+
private loadAssets;
|
|
41
|
+
/**
|
|
42
|
+
* Validate the complete configuration
|
|
43
|
+
*/
|
|
44
|
+
private validateConfig;
|
|
45
|
+
/**
|
|
46
|
+
* Validate navigation items recursively
|
|
47
|
+
*/
|
|
48
|
+
private validateNavigationItems;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ConfigLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,UAAU,EAOX,MAAM,iBAAiB,CAAC;AAEzB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAgClB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAWhC"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ConfigLoader - Loads and validates user configuration files
|
|
4
|
+
* Merges user config with sensible defaults
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ConfigLoader = void 0;
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
14
|
+
class ConfigLoader {
|
|
15
|
+
constructor(projectRoot) {
|
|
16
|
+
this.configDir = path_1.default.join(projectRoot, 'config');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Load complete site configuration
|
|
20
|
+
*/
|
|
21
|
+
async load() {
|
|
22
|
+
// Load individual config components
|
|
23
|
+
const metadata = this.loadMetadata();
|
|
24
|
+
const languages = this.loadLanguages();
|
|
25
|
+
const navigation = this.loadNavigationConfig();
|
|
26
|
+
const assets = this.loadAssets();
|
|
27
|
+
const config = {
|
|
28
|
+
metadata,
|
|
29
|
+
languages,
|
|
30
|
+
defaultLanguage: languages.find((lang) => lang.default)?.code || 'en',
|
|
31
|
+
navigation,
|
|
32
|
+
assets,
|
|
33
|
+
assetsPath: '/assets',
|
|
34
|
+
};
|
|
35
|
+
// Validate the complete configuration
|
|
36
|
+
this.validateConfig(config);
|
|
37
|
+
return config;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Load site metadata
|
|
41
|
+
*/
|
|
42
|
+
loadMetadata() {
|
|
43
|
+
const defaultMetadata = {
|
|
44
|
+
title: 'Documentation',
|
|
45
|
+
description: 'Product documentation',
|
|
46
|
+
keywords: [],
|
|
47
|
+
baseUrl: '',
|
|
48
|
+
};
|
|
49
|
+
const siteJsonPath = path_1.default.join(this.configDir, 'site.json');
|
|
50
|
+
if (!fs_1.default.existsSync(siteJsonPath)) {
|
|
51
|
+
return defaultMetadata;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const siteJsonContent = fs_1.default.readFileSync(siteJsonPath, 'utf8');
|
|
55
|
+
const userMetadata = JSON.parse(siteJsonContent);
|
|
56
|
+
// Merge user metadata with defaults
|
|
57
|
+
return { ...defaultMetadata, ...userMetadata };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new Error(`Failed to parse site.json: ${error.message}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load language configuration
|
|
65
|
+
*/
|
|
66
|
+
loadLanguages() {
|
|
67
|
+
// Default: English only
|
|
68
|
+
const defaultLanguages = [
|
|
69
|
+
{
|
|
70
|
+
code: 'en',
|
|
71
|
+
label: 'English',
|
|
72
|
+
default: true,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
// TODO: Load from languages.json if exists
|
|
76
|
+
return defaultLanguages;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Load navigation configuration
|
|
80
|
+
*/
|
|
81
|
+
loadNavigationConfig() {
|
|
82
|
+
const sidenav = this.loadSideNav('sidenav.yaml');
|
|
83
|
+
const topnav = this.loadTopNav();
|
|
84
|
+
const additionalSidenavs = this.loadAdditionalSidenavs();
|
|
85
|
+
return {
|
|
86
|
+
sidenav,
|
|
87
|
+
topnav,
|
|
88
|
+
additionalSidenavs,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load main sidenav configuration
|
|
93
|
+
*/
|
|
94
|
+
loadSideNav(filename) {
|
|
95
|
+
const sidenavPath = path_1.default.join(this.configDir, filename);
|
|
96
|
+
if (!fs_1.default.existsSync(sidenavPath)) {
|
|
97
|
+
// Return empty sidenav if file doesn't exist
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const content = fs_1.default.readFileSync(sidenavPath, 'utf8');
|
|
102
|
+
const parsed = js_yaml_1.default.load(content);
|
|
103
|
+
return parsed || [];
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw new Error(`Failed to parse ${filename}: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Load top navigation configuration
|
|
111
|
+
*/
|
|
112
|
+
loadTopNav() {
|
|
113
|
+
const topnavPath = path_1.default.join(this.configDir, 'topnav.yaml');
|
|
114
|
+
if (!fs_1.default.existsSync(topnavPath)) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const content = fs_1.default.readFileSync(topnavPath, 'utf8');
|
|
119
|
+
const parsed = js_yaml_1.default.load(content);
|
|
120
|
+
return parsed || [];
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
throw new Error(`Failed to parse topnav.yaml: ${error.message}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Load additional sidenav files (e.g., guides-sidenav.yaml, api-sidenav.yaml)
|
|
128
|
+
*/
|
|
129
|
+
loadAdditionalSidenavs() {
|
|
130
|
+
if (!fs_1.default.existsSync(this.configDir)) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
const files = fs_1.default.readdirSync(this.configDir);
|
|
134
|
+
const sidenavFiles = files.filter((file) => file.endsWith('-sidenav.yaml') ||
|
|
135
|
+
(file.endsWith('-sidenav.yml') && file !== 'sidenav.yaml' && file !== 'sidenav.yml'));
|
|
136
|
+
if (sidenavFiles.length === 0) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
const additionalSidenavs = {};
|
|
140
|
+
for (const file of sidenavFiles) {
|
|
141
|
+
// Extract name: "guides-sidenav.yaml" -> "guides"
|
|
142
|
+
const name = file.replace(/-sidenav\.ya?ml$/, '');
|
|
143
|
+
additionalSidenavs[name] = this.loadSideNav(file);
|
|
144
|
+
}
|
|
145
|
+
return additionalSidenavs;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Load asset configuration
|
|
149
|
+
*/
|
|
150
|
+
loadAssets() {
|
|
151
|
+
const assets = {};
|
|
152
|
+
// Check for logo in different formats (SVG preferred, then PNG, then JPG)
|
|
153
|
+
const logoFormats = ['svg', 'png', 'jpg', 'jpeg'];
|
|
154
|
+
for (const format of logoFormats) {
|
|
155
|
+
const logoPath = path_1.default.join(this.configDir, `logo.${format}`);
|
|
156
|
+
if (fs_1.default.existsSync(logoPath)) {
|
|
157
|
+
assets.logo = `logo.${format}`;
|
|
158
|
+
break; // Use the first format found
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Check for dark mode logo
|
|
162
|
+
for (const format of logoFormats) {
|
|
163
|
+
const logoDarkPath = path_1.default.join(this.configDir, `logo-dark.${format}`);
|
|
164
|
+
if (fs_1.default.existsSync(logoDarkPath)) {
|
|
165
|
+
assets.logoDark = `logo-dark.${format}`;
|
|
166
|
+
break; // Use the first format found
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Check for favicon
|
|
170
|
+
const faviconPath = path_1.default.join(this.configDir, 'favicon.ico');
|
|
171
|
+
if (fs_1.default.existsSync(faviconPath)) {
|
|
172
|
+
assets.favicon = 'favicon.ico';
|
|
173
|
+
}
|
|
174
|
+
return assets;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validate the complete configuration
|
|
178
|
+
*/
|
|
179
|
+
validateConfig(config) {
|
|
180
|
+
// Validate required fields
|
|
181
|
+
if (!config.metadata.title) {
|
|
182
|
+
throw new Error('Site title is required in metadata');
|
|
183
|
+
}
|
|
184
|
+
if (config.languages.length === 0) {
|
|
185
|
+
throw new Error('At least one language must be configured');
|
|
186
|
+
}
|
|
187
|
+
const defaultLang = config.languages.find((lang) => lang.default);
|
|
188
|
+
if (!defaultLang) {
|
|
189
|
+
throw new Error('A default language must be specified');
|
|
190
|
+
}
|
|
191
|
+
// Validate navigation structure
|
|
192
|
+
if (config.navigation.sidenav) {
|
|
193
|
+
this.validateNavigationItems(config.navigation.sidenav);
|
|
194
|
+
}
|
|
195
|
+
if (config.navigation.topnav) {
|
|
196
|
+
this.validateNavigationItems(config.navigation.topnav);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Validate navigation items recursively
|
|
201
|
+
*/
|
|
202
|
+
validateNavigationItems(items) {
|
|
203
|
+
for (const item of items) {
|
|
204
|
+
if (!item.label) {
|
|
205
|
+
throw new Error('Navigation item must have a label');
|
|
206
|
+
}
|
|
207
|
+
if (item.children && item.children.length > 0) {
|
|
208
|
+
this.validateNavigationItems(item.children);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
exports.ConfigLoader = ConfigLoader;
|
|
214
|
+
//# sourceMappingURL=ConfigLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StyleCompiler - Orchestrates style generation
|
|
3
|
+
* Loads user overrides and compiles all component styles into final CSS
|
|
4
|
+
*/
|
|
5
|
+
export declare class StyleCompiler {
|
|
6
|
+
private projectRoot;
|
|
7
|
+
constructor(projectRoot: string);
|
|
8
|
+
/**
|
|
9
|
+
* Load user style overrides from config/styles/ directory
|
|
10
|
+
*/
|
|
11
|
+
private loadUserOverrides;
|
|
12
|
+
/**
|
|
13
|
+
* Generate complete CSS stylesheet
|
|
14
|
+
*/
|
|
15
|
+
generateCSS(): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=StyleCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StyleCompiler.d.ts","sourceRoot":"","sources":["../../src/config/StyleCompiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;OAEG;IACH,WAAW,IAAI,MAAM;CA+CtB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* StyleCompiler - Orchestrates style generation
|
|
4
|
+
* Loads user overrides and compiles all component styles into final CSS
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.StyleCompiler = void 0;
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const main_1 = require("../styles/variables/main");
|
|
14
|
+
// Import all component generators
|
|
15
|
+
const reset_1 = require("../styles/components/reset");
|
|
16
|
+
const fonts_1 = require("../styles/components/fonts");
|
|
17
|
+
const layout_1 = require("../styles/components/layout");
|
|
18
|
+
const typography_1 = require("../styles/components/typography");
|
|
19
|
+
const header_1 = require("../styles/components/header");
|
|
20
|
+
const sidenav_1 = require("../styles/components/sidenav");
|
|
21
|
+
const mobilemenu_1 = require("../styles/components/mobilemenu");
|
|
22
|
+
const content_1 = require("../styles/components/content");
|
|
23
|
+
const heading_1 = require("../styles/components/heading");
|
|
24
|
+
const codeblock_1 = require("../styles/components/codeblock");
|
|
25
|
+
const card_1 = require("../styles/components/card");
|
|
26
|
+
const toc_1 = require("../styles/components/toc");
|
|
27
|
+
const searchmodal_1 = require("../styles/components/searchmodal");
|
|
28
|
+
const utility_1 = require("../styles/components/utility");
|
|
29
|
+
const callout_1 = require("../styles/components/callout");
|
|
30
|
+
class StyleCompiler {
|
|
31
|
+
constructor(projectRoot) {
|
|
32
|
+
this.projectRoot = projectRoot;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load user style overrides from config/styles/ directory
|
|
36
|
+
*/
|
|
37
|
+
loadUserOverrides() {
|
|
38
|
+
const stylesDir = path_1.default.join(this.projectRoot, 'config', 'styles');
|
|
39
|
+
if (!fs_1.default.existsSync(stylesDir)) {
|
|
40
|
+
return { components: {} };
|
|
41
|
+
}
|
|
42
|
+
const result = { components: {} };
|
|
43
|
+
try {
|
|
44
|
+
// Load main.json (global overrides)
|
|
45
|
+
const mainPath = path_1.default.join(stylesDir, 'main.json');
|
|
46
|
+
if (fs_1.default.existsSync(mainPath)) {
|
|
47
|
+
const mainContent = fs_1.default.readFileSync(mainPath, 'utf8');
|
|
48
|
+
result.global = JSON.parse(mainContent);
|
|
49
|
+
}
|
|
50
|
+
// Load component-specific JSON files
|
|
51
|
+
const files = fs_1.default.readdirSync(stylesDir);
|
|
52
|
+
files.forEach(file => {
|
|
53
|
+
if (file.endsWith('.json') && file !== 'main.json') {
|
|
54
|
+
const componentName = file.replace('.json', '');
|
|
55
|
+
const filePath = path_1.default.join(stylesDir, file);
|
|
56
|
+
const content = fs_1.default.readFileSync(filePath, 'utf8');
|
|
57
|
+
result.components[componentName] = JSON.parse(content);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.error('Error loading style overrides:', error);
|
|
63
|
+
// Return empty overrides if there's an error
|
|
64
|
+
return { components: {} };
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate complete CSS stylesheet
|
|
70
|
+
*/
|
|
71
|
+
generateCSS() {
|
|
72
|
+
// Load user overrides
|
|
73
|
+
const userOverrides = this.loadUserOverrides();
|
|
74
|
+
// Merge global variables with user overrides
|
|
75
|
+
const globalVars = (0, main_1.mergeGlobalOverrides)(userOverrides.global);
|
|
76
|
+
// Instantiate all component generators
|
|
77
|
+
const resetGen = new reset_1.ResetStyleGenerator(globalVars);
|
|
78
|
+
const fontGen = new fonts_1.FontStyleGenerator(globalVars);
|
|
79
|
+
const layoutGen = new layout_1.LayoutStyleGenerator(globalVars);
|
|
80
|
+
const typographyGen = new typography_1.TypographyStyleGenerator(globalVars);
|
|
81
|
+
const headerGen = new header_1.HeaderStyleGenerator(globalVars);
|
|
82
|
+
const sidenavGen = new sidenav_1.SideNavStyleGenerator(globalVars);
|
|
83
|
+
const mobilemenuGen = new mobilemenu_1.MobileMenuStyleGenerator(globalVars);
|
|
84
|
+
const contentGen = new content_1.ContentStyleGenerator(globalVars);
|
|
85
|
+
const headingGen = new heading_1.HeadingStyleGenerator(globalVars);
|
|
86
|
+
const codeblockGen = new codeblock_1.CodeBlockStyleGenerator(globalVars);
|
|
87
|
+
const cardGen = new card_1.CardStyleGenerator(globalVars);
|
|
88
|
+
const calloutGen = new callout_1.CalloutStyleGenerator(globalVars);
|
|
89
|
+
const tocGen = new toc_1.TOCStyleGenerator(globalVars);
|
|
90
|
+
const searchmodalGen = new searchmodal_1.SearchModalStyleGenerator(globalVars);
|
|
91
|
+
const utilityGen = new utility_1.UtilityStyleGenerator(globalVars);
|
|
92
|
+
// Generate CSS for each component in order
|
|
93
|
+
// Order matters: base styles first, then components, utilities last
|
|
94
|
+
const sections = [
|
|
95
|
+
resetGen.generate(),
|
|
96
|
+
fontGen.generate(),
|
|
97
|
+
layoutGen.generate(),
|
|
98
|
+
typographyGen.generate(userOverrides.components['typography']),
|
|
99
|
+
headerGen.generate(userOverrides.components['header']),
|
|
100
|
+
sidenavGen.generate(userOverrides.components['sidenav']),
|
|
101
|
+
mobilemenuGen.generate(),
|
|
102
|
+
contentGen.generate(),
|
|
103
|
+
headingGen.generate(userOverrides.components['heading']),
|
|
104
|
+
codeblockGen.generate(),
|
|
105
|
+
cardGen.generate(userOverrides.components['card']),
|
|
106
|
+
calloutGen.generate(),
|
|
107
|
+
tocGen.generate(userOverrides.components['toc']),
|
|
108
|
+
searchmodalGen.generate(),
|
|
109
|
+
utilityGen.generate(),
|
|
110
|
+
];
|
|
111
|
+
// Join all sections with double newlines
|
|
112
|
+
return sections.join('\n\n');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.StyleCompiler = StyleCompiler;
|
|
116
|
+
//# sourceMappingURL=StyleCompiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StyleCompiler.js","sourceRoot":"","sources":["../../src/config/StyleCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThemeGenerator - Generates CSS variables from GlobalVariables
|
|
3
|
+
* Converts global design tokens into CSS custom properties
|
|
4
|
+
*/
|
|
5
|
+
import { GlobalVariables } from '../styles/types';
|
|
6
|
+
export declare class ThemeGenerator {
|
|
7
|
+
private globalVars;
|
|
8
|
+
constructor(globalVars: GlobalVariables);
|
|
9
|
+
/**
|
|
10
|
+
* Generate CSS custom properties (variables) for colors, typography, and layout
|
|
11
|
+
*/
|
|
12
|
+
generateCSSVariables(): string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ThemeGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeGenerator.d.ts","sourceRoot":"","sources":["../../src/config/ThemeGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,cAAc;IACb,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,eAAe;IAE/C;;OAEG;IACH,oBAAoB,IAAI,MAAM;CA+H/B"}
|