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 @@
|
|
|
1
|
+
{"version":3,"file":"useSearch.d.ts","sourceRoot":"","sources":["../../../src/client/hooks/useSearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,SAAS;6BAmCb,MAAM,UAAS,MAAM;;;;;;;;;;;;;EA2BhC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* useSearch hook - Re-export and extend search functionality
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useSearch = useSearch;
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const SearchContext_1 = require("../contexts/SearchContext");
|
|
9
|
+
/**
|
|
10
|
+
* Hook for search functionality with keyboard shortcuts
|
|
11
|
+
*/
|
|
12
|
+
function useSearch() {
|
|
13
|
+
const searchContext = (0, SearchContext_1.useSearch)();
|
|
14
|
+
const debounceTimerRef = (0, react_1.useRef)(null);
|
|
15
|
+
/**
|
|
16
|
+
* Setup keyboard shortcuts for search (client-side only)
|
|
17
|
+
*/
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
// Skip on server
|
|
20
|
+
if (typeof window === 'undefined')
|
|
21
|
+
return;
|
|
22
|
+
const handleKeyDown = (event) => {
|
|
23
|
+
// Cmd+K or Ctrl+K to open search
|
|
24
|
+
if ((event.metaKey || event.ctrlKey) && event.key === 'k') {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
searchContext.openSearch();
|
|
27
|
+
}
|
|
28
|
+
// Escape to close search
|
|
29
|
+
if (event.key === 'Escape' && searchContext.isOpen) {
|
|
30
|
+
searchContext.closeSearch();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
34
|
+
return () => {
|
|
35
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
36
|
+
};
|
|
37
|
+
}, [searchContext]);
|
|
38
|
+
/**
|
|
39
|
+
* Debounced search function
|
|
40
|
+
*/
|
|
41
|
+
const debouncedSearch = (0, react_1.useCallback)((query, delay = 500) => {
|
|
42
|
+
// Clear existing timeout
|
|
43
|
+
if (debounceTimerRef.current) {
|
|
44
|
+
clearTimeout(debounceTimerRef.current);
|
|
45
|
+
}
|
|
46
|
+
// Set new timeout
|
|
47
|
+
debounceTimerRef.current = setTimeout(() => {
|
|
48
|
+
searchContext.search(query);
|
|
49
|
+
}, delay);
|
|
50
|
+
}, [searchContext]);
|
|
51
|
+
// Cleanup on unmount
|
|
52
|
+
(0, react_1.useEffect)(() => {
|
|
53
|
+
return () => {
|
|
54
|
+
if (debounceTimerRef.current) {
|
|
55
|
+
clearTimeout(debounceTimerRef.current);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}, []);
|
|
59
|
+
return {
|
|
60
|
+
...searchContext,
|
|
61
|
+
debouncedSearch,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=useSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../../src/client/hooks/useSearch.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAQH,8BA8DC;AApED,iCAAuD;AACvD,6DAA0E;AAE1E;;GAEG;AACH,SAAgB,SAAS;IACvB,MAAM,aAAa,GAAG,IAAA,yBAAgB,GAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAE7D;;OAEG;IACH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,iBAAiB;QACjB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,iCAAiC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC1D,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,aAAa,CAAC,UAAU,EAAE,CAAC;YAC7B,CAAC;YAED,yBAAyB;YACzB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACnD,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB;;OAEG;IACH,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,KAAa,EAAE,QAAgB,GAAG,EAAE,EAAE;QACrC,yBAAyB;QACzB,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,kBAAkB;QAClB,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACzC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,qBAAqB;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,GAAG,aAAa;QAChB,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/client/main.tsx"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* Client entry point - Hydrates the React app
|
|
9
|
+
*/
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const client_1 = require("react-dom/client");
|
|
12
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
13
|
+
const App_1 = __importDefault(require("./App"));
|
|
14
|
+
/**
|
|
15
|
+
* Read initial data from server-injected script tags
|
|
16
|
+
*/
|
|
17
|
+
function getInitialData() {
|
|
18
|
+
let siteConfig = null;
|
|
19
|
+
let initialContent = null;
|
|
20
|
+
// Get site config
|
|
21
|
+
const configScript = document.getElementById('__SITE_CONFIG__');
|
|
22
|
+
if (configScript && configScript.textContent) {
|
|
23
|
+
try {
|
|
24
|
+
siteConfig = JSON.parse(configScript.textContent);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error('Failed to parse site config:', error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Get initial content data
|
|
31
|
+
const contentScript = document.getElementById('__CONTENT_DATA__');
|
|
32
|
+
if (contentScript && contentScript.textContent) {
|
|
33
|
+
try {
|
|
34
|
+
initialContent = JSON.parse(contentScript.textContent);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('Failed to parse content data:', error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { siteConfig, initialContent };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Initialize and hydrate the app
|
|
44
|
+
*/
|
|
45
|
+
function initializeApp() {
|
|
46
|
+
const { siteConfig, initialContent } = getInitialData();
|
|
47
|
+
if (!siteConfig) {
|
|
48
|
+
console.error('Site config not found - cannot initialize app');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const rootElement = document.getElementById('root');
|
|
52
|
+
if (!rootElement) {
|
|
53
|
+
console.error('Root element not found');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Hydrate the React app with BrowserRouter (client-side)
|
|
57
|
+
(0, client_1.hydrateRoot)(rootElement, (0, jsx_runtime_1.jsx)(react_1.default.StrictMode, { children: (0, jsx_runtime_1.jsx)(react_router_dom_1.BrowserRouter, { children: (0, jsx_runtime_1.jsx)(App_1.default, { siteConfig: siteConfig, initialContent: initialContent, isServerRender: false }) }) }));
|
|
58
|
+
}
|
|
59
|
+
// Initialize when DOM is ready
|
|
60
|
+
if (document.readyState === 'loading') {
|
|
61
|
+
document.addEventListener('DOMContentLoaded', initializeApp);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
initializeApp();
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/client/main.tsx"],"names":[],"mappings":";;;;;;AAAA;;GAEG;AAEH,kDAA0B;AAC1B,6CAA+C;AAC/C,uDAAiD;AACjD,gDAAwB;AAIxB;;GAEG;AACH,SAAS,cAAc;IAIrB,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI,cAAc,GAA4B,IAAI,CAAC;IAEnD,kBAAkB;IAClB,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAChE,IAAI,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAe,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAClE,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAqB,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAExD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,IAAA,oBAAW,EACT,WAAW,EACX,uBAAC,eAAK,CAAC,UAAU,cACf,uBAAC,gCAAa,cACZ,uBAAC,aAAG,IACF,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,KAAK,GACrB,GACY,GACC,CACpB,CAAC;AACJ,CAAC;AAED,+BAA+B;AAC/B,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;KAAM,CAAC;IACN,aAAa,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CalloutProps {
|
|
3
|
+
type: 'note' | 'warning' | 'danger';
|
|
4
|
+
title?: string;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare function Callout({ type, title, children }: CalloutProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default Callout;
|
|
9
|
+
//# sourceMappingURL=Callout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callout.d.ts","sourceRoot":"","sources":["../../src/components/Callout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAmF9D;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Callout = Callout;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
function Callout({ type, title, children }) {
|
|
6
|
+
const InfoIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "callout-icon", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "10" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 16v-4" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 8h.01" })] }));
|
|
7
|
+
const WarningIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "callout-icon", children: [(0, jsx_runtime_1.jsx)("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 9v4" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 17h.01" })] }));
|
|
8
|
+
const DangerIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "callout-icon", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "10" }), (0, jsx_runtime_1.jsx)("path", { d: "m15 9-6 6" }), (0, jsx_runtime_1.jsx)("path", { d: "m9 9 6 6" })] }));
|
|
9
|
+
const getIcon = () => {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case 'warning':
|
|
12
|
+
return (0, jsx_runtime_1.jsx)(WarningIcon, {});
|
|
13
|
+
case 'danger':
|
|
14
|
+
return (0, jsx_runtime_1.jsx)(DangerIcon, {});
|
|
15
|
+
case 'note':
|
|
16
|
+
default:
|
|
17
|
+
return (0, jsx_runtime_1.jsx)(InfoIcon, {});
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const calloutClass = `callout callout-${type}`;
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: calloutClass, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: '12px' }, children: [getIcon(), (0, jsx_runtime_1.jsxs)("div", { style: { flex: 1 }, children: [title && (0, jsx_runtime_1.jsx)("div", { className: "callout-title", children: title }), (0, jsx_runtime_1.jsx)("div", { className: "callout-body", children: children })] })] }) }));
|
|
22
|
+
}
|
|
23
|
+
exports.default = Callout;
|
|
24
|
+
//# sourceMappingURL=Callout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callout.js","sourceRoot":"","sources":["../../src/components/Callout.tsx"],"names":[],"mappings":";;AAQA,0BAmFC;;AAnFD,SAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAgB;IAC7D,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CACrB,iCACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,cAAc,aAExB,mCAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAU,EACxC,iCAAM,CAAC,EAAC,WAAW,GAAQ,EAC3B,iCAAM,CAAC,EAAC,WAAW,GAAQ,IACvB,CACP,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,iCACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,cAAc,aAExB,iCAAM,CAAC,EAAC,0EAA0E,GAAQ,EAC1F,iCAAM,CAAC,EAAC,SAAS,GAAQ,EACzB,iCAAM,CAAC,EAAC,YAAY,GAAQ,IACxB,CACP,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CACvB,iCACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,cAAc,aAExB,mCAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAU,EACxC,iCAAM,CAAC,EAAC,WAAW,GAAQ,EAC3B,iCAAM,CAAC,EAAC,UAAU,GAAQ,IACtB,CACP,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,uBAAC,WAAW,KAAG,CAAC;YACzB,KAAK,QAAQ;gBACX,OAAO,uBAAC,UAAU,KAAG,CAAC;YACxB,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,uBAAC,QAAQ,KAAG,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,mBAAmB,IAAI,EAAE,CAAC;IAE/C,OAAO,CACL,gCAAK,SAAS,EAAE,YAAY,YAC1B,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aACzC,OAAO,EAAE,EACV,iCAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,aACpB,KAAK,IAAI,gCAAK,SAAS,EAAC,eAAe,YAAE,KAAK,GAAO,EACtD,gCAAK,SAAS,EAAC,cAAc,YAAE,QAAQ,GAAO,IAC1C,IACF,GACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CardProps {
|
|
3
|
+
title: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Card({ title, href, icon, children }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default Card;
|
|
10
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,2CAkE9D;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Card = Card;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
function Card({ title, href, icon, children }) {
|
|
6
|
+
const ArrowIcon = () => ((0, jsx_runtime_1.jsxs)("svg", { className: "card-arrow", xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [(0, jsx_runtime_1.jsx)("path", { d: "M5 12h14" }), (0, jsx_runtime_1.jsx)("path", { d: "m12 5 7 7-7 7" })] }));
|
|
7
|
+
const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [icon && ((0, jsx_runtime_1.jsxs)("div", { className: "card-icon", children: [(0, jsx_runtime_1.jsx)("img", { src: icon, alt: "", className: "card-icon-img", loading: "lazy" }), (0, jsx_runtime_1.jsxs)("div", { className: "card-content", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "card-title", children: [(0, jsx_runtime_1.jsx)("span", { children: title }), href && (0, jsx_runtime_1.jsx)(ArrowIcon, {})] }), (0, jsx_runtime_1.jsx)("div", { className: "card-description", children: children })] })] })), !icon && ((0, jsx_runtime_1.jsxs)("div", { className: "card-content", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "card-title", children: [(0, jsx_runtime_1.jsx)("span", { children: title }), href && (0, jsx_runtime_1.jsx)(ArrowIcon, {})] }), (0, jsx_runtime_1.jsx)("div", { className: "card-description", children: children })] }))] }));
|
|
8
|
+
if (href) {
|
|
9
|
+
const isExternal = href.startsWith('http://') || href.startsWith('https://');
|
|
10
|
+
return ((0, jsx_runtime_1.jsx)("a", { href: href, className: "card card-link", target: isExternal ? '_blank' : undefined, rel: isExternal ? 'noopener noreferrer' : undefined, children: content }));
|
|
11
|
+
}
|
|
12
|
+
return (0, jsx_runtime_1.jsx)("div", { className: "card", children: content });
|
|
13
|
+
}
|
|
14
|
+
exports.default = Card;
|
|
15
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":";;AASA,oBAkEC;;AAlED,SAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAa;IAC7D,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CACtB,iCACE,SAAS,EAAC,YAAY,EACtB,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,iCAAM,CAAC,EAAC,UAAU,GAAG,EACrB,iCAAM,CAAC,EAAC,eAAe,GAAG,IACtB,CACP,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,6DACG,IAAI,IAAI,CACP,iCAAK,SAAS,EAAC,WAAW,aACxB,gCACE,GAAG,EAAE,IAAI,EACT,GAAG,EAAC,EAAE,EACN,SAAS,EAAC,eAAe,EACzB,OAAO,EAAC,MAAM,GACd,EACF,iCAAK,SAAS,EAAC,cAAc,aAC3B,gCAAI,SAAS,EAAC,YAAY,aACxB,2CAAO,KAAK,GAAQ,EACnB,IAAI,IAAI,uBAAC,SAAS,KAAG,IACnB,EACL,gCAAK,SAAS,EAAC,kBAAkB,YAAE,QAAQ,GAAO,IAC9C,IACF,CACP,EACA,CAAC,IAAI,IAAI,CACR,iCAAK,SAAS,EAAC,cAAc,aAC3B,gCAAI,SAAS,EAAC,YAAY,aACxB,2CAAO,KAAK,GAAQ,EACnB,IAAI,IAAI,uBAAC,SAAS,KAAG,IACnB,EACL,gCAAK,SAAS,EAAC,kBAAkB,YAAE,QAAQ,GAAO,IAC9C,CACP,IACA,CACJ,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7E,OAAO,CACL,8BACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAC,gBAAgB,EAC1B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,YAElD,OAAO,GACN,CACL,CAAC;IACJ,CAAC;IAED,OAAO,gCAAK,SAAS,EAAC,MAAM,YAAE,OAAO,GAAO,CAAC;AAC/C,CAAC;AAED,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface CardGridProps {
|
|
3
|
+
cols?: number;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare function CardGrid({ cols, children }: CardGridProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default CardGrid;
|
|
8
|
+
//# sourceMappingURL=CardGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardGrid.d.ts","sourceRoot":"","sources":["../../src/components/CardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAM7D;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CardGrid = CardGrid;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
function CardGrid({ cols = 2, children }) {
|
|
6
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "card-grid", "data-cols": cols, children: children }));
|
|
7
|
+
}
|
|
8
|
+
exports.default = CardGrid;
|
|
9
|
+
//# sourceMappingURL=CardGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardGrid.js","sourceRoot":"","sources":["../../src/components/CardGrid.tsx"],"names":[],"mappings":";;AAOA,4BAMC;;AAND,SAAgB,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAiB;IAC5D,OAAO,CACL,gCAAK,SAAS,EAAC,WAAW,eAAY,IAAI,YACvC,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeBlock - Syntax-highlighted code block component with copy button
|
|
3
|
+
* Uses Prism.js for synchronous highlighting (works in both SSR and client)
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import 'prismjs/components/prism-javascript';
|
|
7
|
+
import 'prismjs/components/prism-typescript';
|
|
8
|
+
import 'prismjs/components/prism-markup';
|
|
9
|
+
import 'prismjs/components/prism-css';
|
|
10
|
+
import 'prismjs/components/prism-json';
|
|
11
|
+
import 'prismjs/components/prism-yaml';
|
|
12
|
+
import 'prismjs/components/prism-bash';
|
|
13
|
+
import 'prismjs/components/prism-markdown';
|
|
14
|
+
interface CodeBlockProps {
|
|
15
|
+
language?: string;
|
|
16
|
+
content?: string;
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Syntax-highlighted code block component with language label and copy button
|
|
21
|
+
*/
|
|
22
|
+
export declare function CodeBlock({ language, content, children }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export default CodeBlock;
|
|
24
|
+
//# sourceMappingURL=CodeBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/components/CodeBlock.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,qCAAqC,CAAC;AAC7C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,iCAAiC,CAAC;AACzC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAE3C,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAkG7E;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CodeBlock = CodeBlock;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* CodeBlock - Syntax-highlighted code block component with copy button
|
|
10
|
+
* Uses Prism.js for synchronous highlighting (works in both SSR and client)
|
|
11
|
+
*/
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const prismjs_1 = __importDefault(require("prismjs"));
|
|
14
|
+
// Import language grammars
|
|
15
|
+
require("prismjs/components/prism-javascript");
|
|
16
|
+
require("prismjs/components/prism-typescript");
|
|
17
|
+
require("prismjs/components/prism-markup");
|
|
18
|
+
require("prismjs/components/prism-css");
|
|
19
|
+
require("prismjs/components/prism-json");
|
|
20
|
+
require("prismjs/components/prism-yaml");
|
|
21
|
+
require("prismjs/components/prism-bash");
|
|
22
|
+
require("prismjs/components/prism-markdown");
|
|
23
|
+
/**
|
|
24
|
+
* Syntax-highlighted code block component with language label and copy button
|
|
25
|
+
*/
|
|
26
|
+
function CodeBlock({ language = '', content, children }) {
|
|
27
|
+
const [copied, setCopied] = (0, react_1.useState)(false);
|
|
28
|
+
// Get code content
|
|
29
|
+
const code = (content || String(children || '')).trim();
|
|
30
|
+
if (!code) {
|
|
31
|
+
return (0, jsx_runtime_1.jsx)("pre", { children: (0, jsx_runtime_1.jsx)("code", { "data-pagefind-ignore": true }) });
|
|
32
|
+
}
|
|
33
|
+
// Check if language is specified
|
|
34
|
+
const hasLanguage = language && language.trim().length > 0;
|
|
35
|
+
// If no language, render plain code block without header
|
|
36
|
+
if (!hasLanguage) {
|
|
37
|
+
return ((0, jsx_runtime_1.jsx)("pre", { children: (0, jsx_runtime_1.jsx)("code", { "data-pagefind-ignore": true, children: code }) }));
|
|
38
|
+
}
|
|
39
|
+
// Normalize language name
|
|
40
|
+
const lang = language.toLowerCase();
|
|
41
|
+
const normalizedLang = lang === 'html' ? 'markup' :
|
|
42
|
+
lang === 'js' ? 'javascript' :
|
|
43
|
+
lang === 'ts' ? 'typescript' :
|
|
44
|
+
lang === 'sh' ? 'bash' : lang;
|
|
45
|
+
// Get display name for language
|
|
46
|
+
const displayLang = normalizedLang === 'markup' ? 'HTML' :
|
|
47
|
+
normalizedLang.charAt(0).toUpperCase() + normalizedLang.slice(1);
|
|
48
|
+
// Check if language is supported
|
|
49
|
+
const grammar = prismjs_1.default.languages[normalizedLang];
|
|
50
|
+
// Highlight code
|
|
51
|
+
const highlightedHtml = grammar
|
|
52
|
+
? prismjs_1.default.highlight(code, grammar, normalizedLang)
|
|
53
|
+
: code;
|
|
54
|
+
// Copy to clipboard handler
|
|
55
|
+
const handleCopy = async () => {
|
|
56
|
+
// Skip on server-side
|
|
57
|
+
if (typeof window === 'undefined' || typeof navigator === 'undefined') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await navigator.clipboard.writeText(code);
|
|
62
|
+
setCopied(true);
|
|
63
|
+
setTimeout(() => setCopied(false), 2000);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
console.error('Failed to copy code:', err);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "code-block-wrapper", children: [(0, jsx_runtime_1.jsxs)("div", { className: "code-block-header", children: [(0, jsx_runtime_1.jsx)("span", { className: "code-block-language", children: displayLang }), (0, jsx_runtime_1.jsx)("button", { className: "code-block-copy", onClick: handleCopy, "aria-label": "Copy code", type: "button", children: copied ? (
|
|
70
|
+
// Checkmark icon (when copied)
|
|
71
|
+
(0, jsx_runtime_1.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M20 6L9 17L4 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })) : (
|
|
72
|
+
// Copy icon (default state)
|
|
73
|
+
(0, jsx_runtime_1.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, jsx_runtime_1.jsx)("path", { d: "M12.7587 2H16.2413C17.0463 1.99999 17.7106 1.99998 18.2518 2.04419C18.8139 2.09012 19.3306 2.18868 19.816 2.43597C20.5686 2.81947 21.1805 3.43139 21.564 4.18404C21.8113 4.66937 21.9099 5.18608 21.9558 5.74817C22 6.28936 22 6.95372 22 7.75868V11.2413C22 12.0463 22 12.7106 21.9558 13.2518C21.9099 13.8139 21.8113 14.3306 21.564 14.816C21.1805 15.5686 20.5686 16.1805 19.816 16.564C19.3306 16.8113 18.8139 16.9099 18.2518 16.9558C17.8906 16.9853 17.4745 16.9951 16.9984 16.9984C16.9951 17.4745 16.9853 17.8906 16.9558 18.2518C16.9099 18.8139 16.8113 19.3306 16.564 19.816C16.1805 20.5686 15.5686 21.1805 14.816 21.564C14.3306 21.8113 13.8139 21.9099 13.2518 21.9558C12.7106 22 12.0463 22 11.2413 22H7.75868C6.95372 22 6.28936 22 5.74818 21.9558C5.18608 21.9099 4.66937 21.8113 4.18404 21.564C3.43139 21.1805 2.81947 20.5686 2.43597 19.816C2.18868 19.3306 2.09012 18.8139 2.04419 18.2518C1.99998 17.7106 1.99999 17.0463 2 16.2413V12.7587C1.99999 11.9537 1.99998 11.2894 2.04419 10.7482C2.09012 10.1861 2.18868 9.66937 2.43597 9.18404C2.81947 8.43139 3.43139 7.81947 4.18404 7.43598C4.66937 7.18868 5.18608 7.09012 5.74817 7.04419C6.10939 7.01468 6.52548 7.00487 7.00162 7.00162C7.00487 6.52548 7.01468 6.10939 7.04419 5.74817C7.09012 5.18608 7.18868 4.66937 7.43598 4.18404C7.81947 3.43139 8.43139 2.81947 9.18404 2.43597C9.66937 2.18868 10.1861 2.09012 10.7482 2.04419C11.2894 1.99998 11.9537 1.99999 12.7587 2ZM9.00176 7L11.2413 7C12.0463 6.99999 12.7106 6.99998 13.2518 7.04419C13.8139 7.09012 14.3306 7.18868 14.816 7.43598C15.5686 7.81947 16.1805 8.43139 16.564 9.18404C16.8113 9.66937 16.9099 10.1861 16.9558 10.7482C17 11.2894 17 11.9537 17 12.7587V14.9982C17.4455 14.9951 17.7954 14.9864 18.089 14.9624C18.5274 14.9266 18.7516 14.8617 18.908 14.782C19.2843 14.5903 19.5903 14.2843 19.782 13.908C19.8617 13.7516 19.9266 13.5274 19.9624 13.089C19.9992 12.6389 20 12.0566 20 11.2V7.8C20 6.94342 19.9992 6.36113 19.9624 5.91104C19.9266 5.47262 19.8617 5.24842 19.782 5.09202C19.5903 4.7157 19.2843 4.40973 18.908 4.21799C18.7516 4.1383 18.5274 4.07337 18.089 4.03755C17.6389 4.00078 17.0566 4 16.2 4H12.8C11.9434 4 11.3611 4.00078 10.911 4.03755C10.4726 4.07337 10.2484 4.1383 10.092 4.21799C9.7157 4.40973 9.40973 4.7157 9.21799 5.09202C9.1383 5.24842 9.07337 5.47262 9.03755 5.91104C9.01357 6.20463 9.00489 6.55447 9.00176 7ZM5.91104 9.03755C5.47262 9.07337 5.24842 9.1383 5.09202 9.21799C4.7157 9.40973 4.40973 9.7157 4.21799 10.092C4.1383 10.2484 4.07337 10.4726 4.03755 10.911C4.00078 11.3611 4 11.9434 4 12.8V16.2C4 17.0566 4.00078 17.6389 4.03755 18.089C4.07337 18.5274 4.1383 18.7516 4.21799 18.908C4.40973 19.2843 4.7157 19.5903 5.09202 19.782C5.24842 19.8617 5.47262 19.9266 5.91104 19.9624C6.36113 19.9992 6.94342 20 7.8 20H11.2C12.0566 20 12.6389 19.9992 13.089 19.9624C13.5274 19.9266 13.7516 19.8617 13.908 19.782C14.2843 19.5903 14.5903 19.2843 14.782 18.908C14.8617 18.7516 14.9266 18.5274 14.9624 18.089C14.9992 17.6389 15 17.0566 15 16.2V12.8C15 11.9434 14.9992 11.3611 14.9624 10.911C14.9266 10.4726 14.8617 10.2484 14.782 10.092C14.5903 9.7157 14.2843 9.40973 13.908 9.21799C13.7516 9.1383 13.5274 9.07337 13.089 9.03755C12.6389 9.00078 12.0566 9 11.2 9H7.8C6.94342 9 6.36113 9.00078 5.91104 9.03755Z", fill: "currentColor" }) })) })] }), (0, jsx_runtime_1.jsx)("pre", { className: `language-${normalizedLang}`, children: (0, jsx_runtime_1.jsx)("code", { className: `language-${normalizedLang}`, "data-pagefind-ignore": true, dangerouslySetInnerHTML: { __html: highlightedHtml } }) })] }));
|
|
74
|
+
}
|
|
75
|
+
exports.default = CodeBlock;
|
|
76
|
+
//# sourceMappingURL=CodeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../src/components/CodeBlock.tsx"],"names":[],"mappings":";;;;;AA2BA,8BAkGC;;AA7HD;;;GAGG;AAEH,iCAAwC;AACxC,sDAA4B;AAE5B,2BAA2B;AAC3B,+CAA6C;AAC7C,+CAA6C;AAC7C,2CAAyC;AACzC,wCAAsC;AACtC,yCAAuC;AACvC,yCAAuC;AACvC,yCAAuC;AACvC,6CAA2C;AAQ3C;;GAEG;AACH,SAAgB,SAAS,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAkB;IAC5E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5C,mBAAmB;IACnB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAExD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,0CAAK,gEAAkC,GAAM,CAAC;IACvD,CAAC;IAED,iCAAiC;IACjC,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3D,yDAAyD;IACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CACL,0CACE,yEAA4B,IAAI,GAAQ,GACpC,CACP,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC9B,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAErD,gCAAgC;IAChC,MAAM,WAAW,GAAG,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErF,iCAAiC;IACjC,MAAM,OAAO,GAAG,iBAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEhD,iBAAiB;IACjB,MAAM,eAAe,GAAG,OAAO;QAC7B,CAAC,CAAC,iBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC;IAET,4BAA4B;IAC5B,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,sBAAsB;QACtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACtE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,iCAAK,SAAS,EAAC,oBAAoB,aACjC,iCAAK,SAAS,EAAC,mBAAmB,aAChC,iCAAM,SAAS,EAAC,qBAAqB,YAAE,WAAW,GAAQ,EAC1D,mCACE,SAAS,EAAC,iBAAiB,EAC3B,OAAO,EAAE,UAAU,gBACR,WAAW,EACtB,IAAI,EAAC,QAAQ,YAEZ,MAAM,CAAC,CAAC,CAAC;wBACR,+BAA+B;wBAC/B,gCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,iCACE,CAAC,EAAC,iBAAiB,EACnB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,GACE,CACP,CAAC,CAAC,CAAC;wBACF,4BAA4B;wBAC5B,gCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,YAC5F,iCACE,CAAC,EAAC,upGAAupG,EACzpG,IAAI,EAAC,cAAc,GACnB,GACE,CACP,GACM,IACL,EACN,gCAAK,SAAS,EAAE,YAAY,cAAc,EAAE,YAC1C,iCACE,SAAS,EAAE,YAAY,cAAc,EAAE,gCAEvC,uBAAuB,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GACpD,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentPage - Main content page component
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Content page component - displays documentation page
|
|
6
|
+
*/
|
|
7
|
+
export declare function ContentPage(): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default ContentPage;
|
|
9
|
+
//# sourceMappingURL=ContentPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/components/ContentPage.tsx"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAgB,WAAW,4CAyH1B;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ContentPage = ContentPage;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const ContentContext_1 = require("../client/contexts/ContentContext");
|
|
9
|
+
const MarkdocRenderer_1 = __importDefault(require("./MarkdocRenderer"));
|
|
10
|
+
const TableOfContents_1 = __importDefault(require("./TableOfContents"));
|
|
11
|
+
const PageNavigation_1 = __importDefault(require("./PageNavigation"));
|
|
12
|
+
const ConfigContext_1 = require("../client/contexts/ConfigContext");
|
|
13
|
+
/**
|
|
14
|
+
* Content page component - displays documentation page
|
|
15
|
+
*/
|
|
16
|
+
function ContentPage() {
|
|
17
|
+
const { currentContent, isLoading, error } = (0, ContentContext_1.useContent)();
|
|
18
|
+
const { config } = (0, ConfigContext_1.useConfig)();
|
|
19
|
+
// Loading state
|
|
20
|
+
if (isLoading) {
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "content-page", children: (0, jsx_runtime_1.jsx)("div", { className: "content-loading", children: (0, jsx_runtime_1.jsx)("p", { children: "Loading..." }) }) }));
|
|
22
|
+
}
|
|
23
|
+
// Error state
|
|
24
|
+
if (error) {
|
|
25
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "content-page", children: (0, jsx_runtime_1.jsxs)("div", { className: "content-error", children: [(0, jsx_runtime_1.jsx)("h1", { children: "Error" }), (0, jsx_runtime_1.jsx)("p", { children: error.message })] }) }));
|
|
26
|
+
}
|
|
27
|
+
// No content state
|
|
28
|
+
if (!currentContent) {
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "content-page", children: (0, jsx_runtime_1.jsxs)("div", { className: "content-empty", children: [(0, jsx_runtime_1.jsx)("h1", { children: "Page Not Found" }), (0, jsx_runtime_1.jsx)("p", { children: "The page you're looking for doesn't exist." })] }) }));
|
|
30
|
+
}
|
|
31
|
+
const { metadata, renderable } = currentContent;
|
|
32
|
+
const { frontmatter, toc, wordCount, readingTime } = metadata;
|
|
33
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "content-page", children: (0, jsx_runtime_1.jsxs)("div", { className: "content-wrapper", children: [(0, jsx_runtime_1.jsxs)("article", { className: "content-article", children: [(0, jsx_runtime_1.jsxs)("div", { "data-pagefind-body": true, children: [(0, jsx_runtime_1.jsxs)("header", { className: "content-header", children: [(0, jsx_runtime_1.jsx)("h1", { className: "content-title", "data-pagefind-weight": "10", children: frontmatter.title }), frontmatter.description && ((0, jsx_runtime_1.jsx)("p", { className: "content-description", children: frontmatter.description })), (0, jsx_runtime_1.jsxs)("div", { className: "content-meta", "data-pagefind-ignore": true, children: [readingTime > 0 && ((0, jsx_runtime_1.jsxs)("span", { className: "content-meta-item", children: [readingTime, " min read"] })), frontmatter.author && ((0, jsx_runtime_1.jsxs)("span", { className: "content-meta-item", children: ["By ", frontmatter.author] })), frontmatter.date && ((0, jsx_runtime_1.jsx)("span", { className: "content-meta-item", children: new Date(frontmatter.date).toLocaleDateString() }))] }), frontmatter.tags && frontmatter.tags.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "content-tags", children: frontmatter.tags.map((tag, index) => ((0, jsx_runtime_1.jsx)("span", { className: "content-tag", children: tag }, index))) }))] }), (0, jsx_runtime_1.jsx)("div", { className: "content-body", children: (0, jsx_runtime_1.jsx)(MarkdocRenderer_1.default, { content: renderable }) })] }), (0, jsx_runtime_1.jsxs)("footer", { className: "content-footer", children: [(0, jsx_runtime_1.jsx)(PageNavigation_1.default, {}), (0, jsx_runtime_1.jsxs)("div", { className: "content-footer-info", children: [(0, jsx_runtime_1.jsxs)("p", { className: "content-footer-text", children: ["\u00A9 ", new Date().getFullYear(), " ", config.metadata.title] }), (0, jsx_runtime_1.jsxs)("p", { className: "content-footer-powered", children: ["Powered by ", (0, jsx_runtime_1.jsx)("a", { href: "https://github.com/yourusername/mordoc", target: "_blank", rel: "noopener noreferrer", children: "Mordoc" })] })] })] })] }), toc && toc.length > 0 && ((0, jsx_runtime_1.jsx)("aside", { className: "content-toc", children: (0, jsx_runtime_1.jsx)(TableOfContents_1.default, { toc: toc }) }))] }) }));
|
|
34
|
+
}
|
|
35
|
+
exports.default = ContentPage;
|
|
36
|
+
//# sourceMappingURL=ContentPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/components/ContentPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Header - Site header with logo and navigation
|
|
3
|
+
*/
|
|
4
|
+
interface HeaderProps {
|
|
5
|
+
onMobileMenuToggle?: () => void;
|
|
6
|
+
showMobileMenu?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Site header component
|
|
10
|
+
* Two-row layout: top row with logo/search/actions, optional bottom row with navigation
|
|
11
|
+
*/
|
|
12
|
+
export declare function Header({ onMobileMenuToggle, showMobileMenu }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default Header;
|
|
14
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,WAAW;IACnB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,kBAAkB,EAAE,cAAsB,EAAE,EAAE,WAAW,2CAqLjF;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Header = Header;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* Header - Site header with logo and navigation
|
|
7
|
+
*/
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
10
|
+
const ConfigContext_1 = require("../client/contexts/ConfigContext");
|
|
11
|
+
const useSearch_1 = require("../client/hooks/useSearch");
|
|
12
|
+
const ThemeContext_1 = require("../client/contexts/ThemeContext");
|
|
13
|
+
/**
|
|
14
|
+
* Site header component
|
|
15
|
+
* Two-row layout: top row with logo/search/actions, optional bottom row with navigation
|
|
16
|
+
*/
|
|
17
|
+
function Header({ onMobileMenuToggle, showMobileMenu = false }) {
|
|
18
|
+
const { config } = (0, ConfigContext_1.useConfig)();
|
|
19
|
+
const { openSearch } = (0, useSearch_1.useSearch)();
|
|
20
|
+
const { theme, toggleTheme } = (0, ThemeContext_1.useTheme)();
|
|
21
|
+
// Track if component has hydrated to avoid SSR mismatch
|
|
22
|
+
const [isHydrated, setIsHydrated] = (0, react_1.useState)(false);
|
|
23
|
+
(0, react_1.useEffect)(() => {
|
|
24
|
+
setIsHydrated(true);
|
|
25
|
+
}, []);
|
|
26
|
+
const hasTopNav = config.navigation.topnav && config.navigation.topnav.length > 0;
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)("header", { className: `site-header ${hasTopNav ? 'has-nav' : 'no-nav'}`, children: [(0, jsx_runtime_1.jsx)("div", { className: "header-top", children: (0, jsx_runtime_1.jsxs)("div", { className: "header-container", children: [showMobileMenu && onMobileMenuToggle && ((0, jsx_runtime_1.jsx)("button", { className: "mobile-menu-button", onClick: onMobileMenuToggle, "aria-label": "Open navigation menu", children: (0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("line", { x1: "4", x2: "20", y1: "12", y2: "12" }), (0, jsx_runtime_1.jsx)("line", { x1: "4", x2: "20", y1: "6", y2: "6" }), (0, jsx_runtime_1.jsx)("line", { x1: "4", x2: "20", y1: "18", y2: "18" })] }) })), (0, jsx_runtime_1.jsx)("div", { className: "header-brand", children: (0, jsx_runtime_1.jsx)(react_router_dom_1.Link, { to: "/", className: "header-logo-link", children: config.assets.logo ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("img", { src: `/assets/${config.assets.logo}`, alt: config.metadata.title, className: "header-logo header-logo-light" }), (0, jsx_runtime_1.jsx)("img", { src: `/assets/${config.assets.logoDark || config.assets.logo}`, alt: config.metadata.title, className: "header-logo header-logo-dark" })] })) : ((0, jsx_runtime_1.jsx)("span", { className: "header-title", children: config.metadata.title })) }) }), (0, jsx_runtime_1.jsx)("div", { className: "header-search", children: (0, jsx_runtime_1.jsxs)("button", { className: "header-search-button", onClick: openSearch, "aria-label": "Open search", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "search-icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "11", cy: "11", r: "8" }), (0, jsx_runtime_1.jsx)("path", { d: "m21 21-4.3-4.3" })] }), (0, jsx_runtime_1.jsx)("span", { className: "search-text", children: "Search..." }), (0, jsx_runtime_1.jsx)("span", { className: "search-shortcut", children: "Ctrl K" })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "header-actions", children: (0, jsx_runtime_1.jsx)("button", { className: "theme-toggle", onClick: toggleTheme, "aria-label": `Switch to ${theme === 'light' ? 'dark' : 'light'} mode`, title: `Switch to ${theme === 'light' ? 'dark' : 'light'} mode`, children: theme === 'light' ? ((0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "theme-icon", children: (0, jsx_runtime_1.jsx)("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" }) })) : ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "theme-icon", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "4" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 2v2" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 20v2" }), (0, jsx_runtime_1.jsx)("path", { d: "m4.93 4.93 1.41 1.41" }), (0, jsx_runtime_1.jsx)("path", { d: "m17.66 17.66 1.41 1.41" }), (0, jsx_runtime_1.jsx)("path", { d: "M2 12h2" }), (0, jsx_runtime_1.jsx)("path", { d: "M20 12h2" }), (0, jsx_runtime_1.jsx)("path", { d: "m6.34 17.66-1.41 1.41" }), (0, jsx_runtime_1.jsx)("path", { d: "m19.07 4.93-1.41 1.41" })] })) }) })] }) }), hasTopNav && ((0, jsx_runtime_1.jsx)("div", { className: "header-bottom", children: (0, jsx_runtime_1.jsx)("div", { className: "header-container", children: (0, jsx_runtime_1.jsx)("nav", { className: "header-nav", children: (0, jsx_runtime_1.jsx)("ul", { className: "header-nav-list", children: config.navigation.topnav.map((item, index) => ((0, jsx_runtime_1.jsx)("li", { className: "header-nav-item", children: item.path ? (item.external ? ((0, jsx_runtime_1.jsx)("a", { href: item.path, className: "header-nav-link", target: "_blank", rel: "noopener noreferrer", children: item.label })) : ((0, jsx_runtime_1.jsx)(react_router_dom_1.Link, { to: item.path, className: "header-nav-link", children: item.label }))) : ((0, jsx_runtime_1.jsx)("span", { className: "header-nav-label", children: item.label })) }, index))) }) }) }) }))] }));
|
|
28
|
+
}
|
|
29
|
+
exports.default = Header;
|
|
30
|
+
//# sourceMappingURL=Header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heading - Heading component with anchor link copy functionality
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
interface HeadingProps {
|
|
6
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
7
|
+
id?: string;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Heading component with copy link icon
|
|
13
|
+
*/
|
|
14
|
+
export declare function Heading({ level, id, children, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default Heading;
|
|
16
|
+
//# sourceMappingURL=Heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/components/Heading.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,UAAU,YAAY;IACpB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CA+CtE;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Heading = Heading;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* Heading - Heading component with anchor link copy functionality
|
|
7
|
+
*/
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
/**
|
|
10
|
+
* Heading component with copy link icon
|
|
11
|
+
*/
|
|
12
|
+
function Heading({ level, id, children, ...props }) {
|
|
13
|
+
const [showCopied, setShowCopied] = (0, react_1.useState)(false);
|
|
14
|
+
const Tag = `h${level}`;
|
|
15
|
+
const handleCopyLink = async (e) => {
|
|
16
|
+
if (!id)
|
|
17
|
+
return;
|
|
18
|
+
const url = `${window.location.origin}${window.location.pathname}#${id}`;
|
|
19
|
+
try {
|
|
20
|
+
await navigator.clipboard.writeText(url);
|
|
21
|
+
setShowCopied(true);
|
|
22
|
+
setTimeout(() => setShowCopied(false), 2000);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
console.error('Failed to copy link:', err);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(Tag, { id: id, className: "heading-with-anchor", ...props, children: [children, id && ((0, jsx_runtime_1.jsxs)("a", { href: `#${id}`, className: "heading-anchor-link", onClick: handleCopyLink, "aria-label": "Link to this heading", title: "Copy link to heading", children: [(0, jsx_runtime_1.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { d: "M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z", fill: "currentColor" }) }), showCopied && (0, jsx_runtime_1.jsx)("span", { className: "heading-copied-tooltip", children: "Copied!" })] }))] }));
|
|
29
|
+
}
|
|
30
|
+
exports.default = Heading;
|
|
31
|
+
//# sourceMappingURL=Heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../src/components/Heading.tsx"],"names":[],"mappings":";;AAgBA,0BA+CC;;AA/DD;;GAEG;AAEH,iCAAwC;AASxC;;GAEG;AACH,SAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAgB;IACrE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,KAAK,EAA6C,CAAC;IAEnE,MAAM,cAAc,GAAG,KAAK,EAAE,CAAsC,EAAE,EAAE;QACtE,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzC,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,wBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAC,qBAAqB,KAAK,KAAK,aACnD,QAAQ,EACR,EAAE,IAAI,CACL,+BACE,IAAI,EAAE,IAAI,EAAE,EAAE,EACd,SAAS,EAAC,qBAAqB,EAC/B,OAAO,EAAE,cAAc,gBACZ,sBAAsB,EACjC,KAAK,EAAC,sBAAsB,aAE5B,gCACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,iBACtB,MAAM,YAElB,iCACE,CAAC,EAAC,iWAAiW,EACnW,IAAI,EAAC,cAAc,GACnB,GACE,EACL,UAAU,IAAI,iCAAM,SAAS,EAAC,wBAAwB,wBAAe,IACpE,CACL,IACG,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../src/components/Image.tsx"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CA8BtD"}
|