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,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Image = Image;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
function Image({ src, alt, ...rest }) {
|
|
6
|
+
const handleClick = (e) => {
|
|
7
|
+
const modal = document.createElement('div');
|
|
8
|
+
modal.className = 'image-modal';
|
|
9
|
+
modal.onclick = () => modal.remove();
|
|
10
|
+
const closeBtn = document.createElement('button');
|
|
11
|
+
closeBtn.className = 'image-modal-close';
|
|
12
|
+
closeBtn.innerHTML = '×';
|
|
13
|
+
closeBtn.onclick = () => modal.remove();
|
|
14
|
+
const img = document.createElement('img');
|
|
15
|
+
img.src = src;
|
|
16
|
+
img.alt = alt || '';
|
|
17
|
+
img.onclick = (e) => e.stopPropagation();
|
|
18
|
+
modal.appendChild(closeBtn);
|
|
19
|
+
modal.appendChild(img);
|
|
20
|
+
document.body.appendChild(modal);
|
|
21
|
+
};
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)("img", { ...rest, src: src, alt: alt || '', loading: "lazy", onClick: handleClick }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=Image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.js","sourceRoot":"","sources":["../../src/components/Image.tsx"],"names":[],"mappings":";;AAQA,sBA8BC;;AA9BD,SAAgB,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAc;IACrD,MAAM,WAAW,GAAG,CAAC,CAAqC,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;QAChC,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAErC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACzC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAExC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;QACd,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QAEzC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5B,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CACL,mCACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout - Main layout wrapper for all pages
|
|
3
|
+
*/
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
interface LayoutProps {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
showSidebar?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Main layout component
|
|
11
|
+
*/
|
|
12
|
+
export declare function Layout({ children, showSidebar }: LayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default Layout;
|
|
14
|
+
//# sourceMappingURL=Layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/components/Layout.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAMnD,UAAU,WAAW;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAkB,EAAE,EAAE,WAAW,2CA6CnE;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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.Layout = Layout;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* Layout - Main layout wrapper for all pages
|
|
10
|
+
*/
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
const Header_1 = __importDefault(require("./Header"));
|
|
13
|
+
const SideNav_1 = __importDefault(require("./SideNav"));
|
|
14
|
+
const MobileMenu_1 = __importDefault(require("./MobileMenu"));
|
|
15
|
+
const ConfigContext_1 = require("../client/contexts/ConfigContext");
|
|
16
|
+
/**
|
|
17
|
+
* Main layout component
|
|
18
|
+
*/
|
|
19
|
+
function Layout({ children, showSidebar = true }) {
|
|
20
|
+
const { config } = (0, ConfigContext_1.useConfig)();
|
|
21
|
+
const [isMobileMenuOpen, setIsMobileMenuOpen] = (0, react_1.useState)(false);
|
|
22
|
+
const handleMobileMenuToggle = () => {
|
|
23
|
+
setIsMobileMenuOpen(!isMobileMenuOpen);
|
|
24
|
+
};
|
|
25
|
+
const handleMobileMenuClose = () => {
|
|
26
|
+
setIsMobileMenuOpen(false);
|
|
27
|
+
};
|
|
28
|
+
const hasSidenav = showSidebar && config.navigation.sidenav;
|
|
29
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "layout", children: [(0, jsx_runtime_1.jsx)(Header_1.default, { onMobileMenuToggle: hasSidenav ? handleMobileMenuToggle : undefined, showMobileMenu: !!hasSidenav }), (0, jsx_runtime_1.jsxs)("div", { className: "layout-container", children: [hasSidenav && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("aside", { className: "layout-sidebar", children: (0, jsx_runtime_1.jsx)(SideNav_1.default, {}) }), (0, jsx_runtime_1.jsx)(MobileMenu_1.default, { isOpen: isMobileMenuOpen, onClose: handleMobileMenuClose })] })), (0, jsx_runtime_1.jsx)("main", { className: "layout-main", children: (0, jsx_runtime_1.jsx)("div", { className: "layout-main-inner", children: children }) })] })] }));
|
|
30
|
+
}
|
|
31
|
+
exports.default = Layout;
|
|
32
|
+
//# sourceMappingURL=Layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/components/Layout.tsx"],"names":[],"mappings":";;;;;AAkBA,wBA6CC;;AA/DD;;GAEG;AAEH,iCAAmD;AACnD,sDAA8B;AAC9B,wDAAgC;AAChC,8DAAsC;AACtC,oEAA6D;AAO7D;;GAEG;AACH,SAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,EAAe;IAClE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,yBAAS,GAAE,CAAC;IAC/B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,mBAAmB,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;IAE5D,OAAO,CACL,iCAAK,SAAS,EAAC,QAAQ,aACrB,uBAAC,gBAAM,IACL,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EACnE,cAAc,EAAE,CAAC,CAAC,UAAU,GAC5B,EAEF,iCAAK,SAAS,EAAC,kBAAkB,aAC9B,UAAU,IAAI,CACb,6DAEE,kCAAO,SAAS,EAAC,gBAAgB,YAC/B,uBAAC,iBAAO,KAAG,GACL,EAGR,uBAAC,oBAAU,IACT,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,qBAAqB,GAC9B,IACD,CACJ,EAED,iCAAM,SAAS,EAAC,aAAa,YAC3B,gCAAK,SAAS,EAAC,mBAAmB,YAC/B,QAAQ,GACL,GACD,IACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MarkdocRenderer - Renders Markdoc content as React components
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { MarkdocRenderableNode } from '../types/content';
|
|
6
|
+
interface MarkdocRendererProps {
|
|
7
|
+
content: MarkdocRenderableNode;
|
|
8
|
+
components?: Record<string, React.ComponentType<any>>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders Markdoc renderable tree as React components
|
|
12
|
+
*/
|
|
13
|
+
export declare function MarkdocRenderer({ content, components }: MarkdocRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export default MarkdocRenderer;
|
|
15
|
+
//# sourceMappingURL=MarkdocRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdocRenderer.d.ts","sourceRoot":"","sources":["../../src/components/MarkdocRenderer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,UAAe,EAAE,EAAE,oBAAoB,2CAYjF;AAiED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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.MarkdocRenderer = MarkdocRenderer;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* MarkdocRenderer - Renders Markdoc content as React components
|
|
10
|
+
*/
|
|
11
|
+
const react_1 = __importDefault(require("react"));
|
|
12
|
+
const markdoc_1 = __importDefault(require("@markdoc/markdoc"));
|
|
13
|
+
const CodeBlock_1 = __importDefault(require("./CodeBlock"));
|
|
14
|
+
const Heading_1 = __importDefault(require("./Heading"));
|
|
15
|
+
const Image_1 = require("./Image");
|
|
16
|
+
const Card_1 = __importDefault(require("./Card"));
|
|
17
|
+
const CardGrid_1 = __importDefault(require("./CardGrid"));
|
|
18
|
+
const Callout_1 = __importDefault(require("./Callout"));
|
|
19
|
+
/**
|
|
20
|
+
* Renders Markdoc renderable tree as React components
|
|
21
|
+
*/
|
|
22
|
+
function MarkdocRenderer({ content, components = {} }) {
|
|
23
|
+
// Markdoc's React renderer
|
|
24
|
+
const rendered = markdoc_1.default.renderers.react(content, react_1.default, {
|
|
25
|
+
components: {
|
|
26
|
+
// Default HTML tag mappings
|
|
27
|
+
...getDefaultComponents(),
|
|
28
|
+
// Custom component overrides
|
|
29
|
+
...components,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: rendered });
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Default component mappings for HTML elements
|
|
36
|
+
*/
|
|
37
|
+
function getDefaultComponents() {
|
|
38
|
+
return {
|
|
39
|
+
// Headings with anchor links
|
|
40
|
+
h1: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 1, ...props }),
|
|
41
|
+
h2: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 2, ...props }),
|
|
42
|
+
h3: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 3, ...props }),
|
|
43
|
+
h4: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 4, ...props }),
|
|
44
|
+
h5: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 5, ...props }),
|
|
45
|
+
h6: (props) => (0, jsx_runtime_1.jsx)(Heading_1.default, { level: 6, ...props }),
|
|
46
|
+
//links
|
|
47
|
+
a: (props) => {
|
|
48
|
+
const { href, children, ...rest } = props;
|
|
49
|
+
const isExternal = href?.startsWith('http://') || href?.startsWith('https://');
|
|
50
|
+
return ((0, jsx_runtime_1.jsx)("a", { href: href, target: isExternal ? '_blank' : undefined, rel: isExternal ? 'noopener noreferrer' : undefined, ...rest, children: children }));
|
|
51
|
+
},
|
|
52
|
+
// Inline code (not highlighted)
|
|
53
|
+
code: (props) => (0, jsx_runtime_1.jsx)("code", { className: "inline-code", ...props }),
|
|
54
|
+
//tables
|
|
55
|
+
table: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "table-wrapper", children: (0, jsx_runtime_1.jsx)("table", { ...props }) })),
|
|
56
|
+
//blockquote
|
|
57
|
+
blockquote: (props) => (0, jsx_runtime_1.jsx)("blockquote", { className: "callout", ...props }),
|
|
58
|
+
// Custom components
|
|
59
|
+
// Maps 'Heading' string → Heading component
|
|
60
|
+
Heading: Heading_1.default,
|
|
61
|
+
// Code blocks with syntax highlighting
|
|
62
|
+
CodeBlock: CodeBlock_1.default,
|
|
63
|
+
// Images with click-to-expand
|
|
64
|
+
Image: Image_1.Image,
|
|
65
|
+
// Cards and card grid containers
|
|
66
|
+
Card: Card_1.default,
|
|
67
|
+
CardGrid: CardGrid_1.default,
|
|
68
|
+
// Callout boxes
|
|
69
|
+
Callout: Callout_1.default,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.default = MarkdocRenderer;
|
|
73
|
+
//# sourceMappingURL=MarkdocRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdocRenderer.js","sourceRoot":"","sources":["../../src/components/MarkdocRenderer.tsx"],"names":[],"mappings":";;;;;AAsBA,0CAYC;;AAlCD;;GAEG;AAEH,kDAA0B;AAC1B,+DAAuC;AAEvC,4DAAoC;AACpC,wDAAgC;AAChC,mCAAgC;AAChC,kDAA0B;AAC1B,0DAAkC;AAClC,wDAAgC;AAOhC;;GAEG;AACH,SAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,EAAwB;IAChF,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,iBAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,eAAK,EAAE;QACvD,UAAU,EAAE;YACV,4BAA4B;YAC5B,GAAG,oBAAoB,EAAE;YACzB,6BAA6B;YAC7B,GAAG,UAAU;SACd;KACF,CAAC,CAAC;IAEH,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL,6BAA6B;QAC7B,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QACpD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QACpD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QACpD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QACpD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QACpD,EAAE,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uBAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,KAAM,KAAK,GAAI;QAEpD,OAAO;QACP,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YAE/E,OAAO,CACL,8BACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,KAC/C,IAAI,YAEP,QAAQ,GACP,CACL,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,IAAI,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,iCAAM,SAAS,EAAC,aAAa,KAAK,KAAK,GAAI;QAEjE,QAAQ;QACR,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CACrB,gCAAK,SAAS,EAAC,eAAe,YAC5B,qCAAW,KAAK,GAAI,GAChB,CACP;QAED,YAAY;QACZ,UAAU,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,uCAAY,SAAS,EAAC,SAAS,KAAK,KAAK,GAAI;QAEzE,oBAAoB;QACpB,4CAA4C;QAC5C,OAAO,EAAE,iBAAO;QAEhB,uCAAuC;QACvC,SAAS,EAAE,mBAAS;QAEpB,8BAA8B;QAC9B,KAAK,EAAE,aAAK;QAEZ,iCAAiC;QACjC,IAAI,EAAE,cAAI;QACV,QAAQ,EAAE,kBAAQ;QAElB,gBAAgB;QAChB,OAAO,EAAE,iBAAO;KAEjB,CAAC;AACJ,CAAC;AAED,kBAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MobileMenu - Mobile drawer menu component
|
|
3
|
+
* Displays sidenav in a slide-out drawer on mobile devices
|
|
4
|
+
*/
|
|
5
|
+
interface MobileMenuProps {
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onClose: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Mobile menu drawer component
|
|
11
|
+
*/
|
|
12
|
+
export declare function MobileMenu({ isOpen, onClose }: MobileMenuProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export default MobileMenu;
|
|
14
|
+
//# sourceMappingURL=MobileMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileMenu.d.ts","sourceRoot":"","sources":["../../src/components/MobileMenu.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,kDAoE9D;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.MobileMenu = MobileMenu;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
/**
|
|
9
|
+
* MobileMenu - Mobile drawer menu component
|
|
10
|
+
* Displays sidenav in a slide-out drawer on mobile devices
|
|
11
|
+
*/
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const SideNav_1 = __importDefault(require("./SideNav"));
|
|
14
|
+
/**
|
|
15
|
+
* Mobile menu drawer component
|
|
16
|
+
*/
|
|
17
|
+
function MobileMenu({ isOpen, onClose }) {
|
|
18
|
+
// Prevent body scroll when menu is open
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (isOpen) {
|
|
21
|
+
document.body.style.overflow = 'hidden';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
document.body.style.overflow = '';
|
|
25
|
+
}
|
|
26
|
+
return () => {
|
|
27
|
+
document.body.style.overflow = '';
|
|
28
|
+
};
|
|
29
|
+
}, [isOpen]);
|
|
30
|
+
// Close on escape key
|
|
31
|
+
(0, react_1.useEffect)(() => {
|
|
32
|
+
const handleEscape = (e) => {
|
|
33
|
+
if (e.key === 'Escape' && isOpen) {
|
|
34
|
+
onClose();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
document.addEventListener('keydown', handleEscape);
|
|
38
|
+
return () => document.removeEventListener('keydown', handleEscape);
|
|
39
|
+
}, [isOpen, onClose]);
|
|
40
|
+
if (!isOpen)
|
|
41
|
+
return null;
|
|
42
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "mobile-menu-backdrop", onClick: onClose, "aria-hidden": "true" }), (0, jsx_runtime_1.jsxs)("aside", { className: "mobile-menu-drawer", role: "dialog", "aria-modal": "true", children: [(0, jsx_runtime_1.jsx)("div", { className: "mobile-menu-header", children: (0, jsx_runtime_1.jsx)("button", { className: "mobile-menu-close", onClick: onClose, "aria-label": "Close 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: "18", y1: "6", x2: "6", y2: "18" }), (0, jsx_runtime_1.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "mobile-menu-content", children: (0, jsx_runtime_1.jsx)(SideNav_1.default, {}) })] })] }));
|
|
43
|
+
}
|
|
44
|
+
exports.default = MobileMenu;
|
|
45
|
+
//# sourceMappingURL=MobileMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileMenu.js","sourceRoot":"","sources":["../../src/components/MobileMenu.tsx"],"names":[],"mappings":";;;;;AAgBA,gCAoEC;;AApFD;;;GAGG;AAEH,iCAAyC;AACzC,wDAAgC;AAOhC;;GAEG;AACH,SAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAmB;IAC7D,wCAAwC;IACxC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,sBAAsB;IACtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,CAAC,CAAgB,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,6DAEE,gCACE,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,OAAO,iBACJ,MAAM,GAClB,EAGF,mCAAO,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAC,QAAQ,gBAAY,MAAM,aACnE,gCAAK,SAAS,EAAC,oBAAoB,YACjC,mCACE,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,OAAO,gBACL,YAAY,YAEvB,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,aAEtB,iCAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,GAAQ,EAC3C,iCAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAQ,IACvC,GACC,GACL,EAEN,gCAAK,SAAS,EAAC,qBAAqB,YAClC,uBAAC,iBAAO,KAAG,GACP,IACA,IACP,CACJ,CAAC;AACJ,CAAC;AAED,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageNavigation - Previous/Next page links
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Page navigation component (prev/next links)
|
|
6
|
+
*/
|
|
7
|
+
export declare function PageNavigation(): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export default PageNavigation;
|
|
9
|
+
//# sourceMappingURL=PageNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNavigation.d.ts","sourceRoot":"","sources":["../../src/components/PageNavigation.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,cAAc,mDAqC7B;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PageNavigation = PageNavigation;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_router_dom_1 = require("react-router-dom");
|
|
6
|
+
const ContentContext_1 = require("../client/contexts/ContentContext");
|
|
7
|
+
/**
|
|
8
|
+
* Page navigation component (prev/next links)
|
|
9
|
+
*/
|
|
10
|
+
function PageNavigation() {
|
|
11
|
+
const { navigationContext } = (0, ContentContext_1.useContent)();
|
|
12
|
+
if (!navigationContext || !navigationContext.pageNavigation) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const { prev, next } = navigationContext.pageNavigation;
|
|
16
|
+
// Don't render if no prev or next
|
|
17
|
+
if (!prev && !next) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return ((0, jsx_runtime_1.jsx)("nav", { className: "page-navigation", "aria-label": "Page navigation", children: (0, jsx_runtime_1.jsxs)("div", { className: "page-nav-container", children: [prev ? ((0, jsx_runtime_1.jsxs)(react_router_dom_1.Link, { to: prev.path, className: "page-nav-link page-nav-prev", children: [(0, jsx_runtime_1.jsx)("span", { className: "page-nav-direction", children: "\u2190 Previous" }), (0, jsx_runtime_1.jsx)("span", { className: "page-nav-label", children: prev.label })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "page-nav-spacer" })), next ? ((0, jsx_runtime_1.jsxs)(react_router_dom_1.Link, { to: next.path, className: "page-nav-link page-nav-next", children: [(0, jsx_runtime_1.jsx)("span", { className: "page-nav-direction", children: "Next \u2192" }), (0, jsx_runtime_1.jsx)("span", { className: "page-nav-label", children: next.label })] })) : ((0, jsx_runtime_1.jsx)("div", { className: "page-nav-spacer" }))] }) }));
|
|
21
|
+
}
|
|
22
|
+
exports.default = PageNavigation;
|
|
23
|
+
//# sourceMappingURL=PageNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageNavigation.js","sourceRoot":"","sources":["../../src/components/PageNavigation.tsx"],"names":[],"mappings":";;AAWA,wCAqCC;;AA3CD,uDAAwC;AACxC,sEAA+D;AAE/D;;GAEG;AACH,SAAgB,cAAc;IAC5B,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,2BAAU,GAAE,CAAC;IAE3C,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,cAAc,CAAC;IAExD,kCAAkC;IAClC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,gCAAK,SAAS,EAAC,iBAAiB,gBAAY,iBAAiB,YAC3D,iCAAK,SAAS,EAAC,oBAAoB,aAChC,IAAI,CAAC,CAAC,CAAC,CACN,wBAAC,uBAAI,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,6BAA6B,aAC1D,iCAAM,SAAS,EAAC,oBAAoB,gCAAkB,EACtD,iCAAM,SAAS,EAAC,gBAAgB,YAAE,IAAI,CAAC,KAAK,GAAQ,IAC/C,CACR,CAAC,CAAC,CAAC,CACF,gCAAK,SAAS,EAAC,iBAAiB,GAAG,CACpC,EAEA,IAAI,CAAC,CAAC,CAAC,CACN,wBAAC,uBAAI,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,6BAA6B,aAC1D,iCAAM,SAAS,EAAC,oBAAoB,4BAAc,EAClD,iCAAM,SAAS,EAAC,gBAAgB,YAAE,IAAI,CAAC,KAAK,GAAQ,IAC/C,CACR,CAAC,CAAC,CAAC,CACF,gCAAK,SAAS,EAAC,iBAAiB,GAAG,CACpC,IACG,GACF,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchModal - Search modal with keyboard shortcuts
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Search modal component
|
|
6
|
+
*/
|
|
7
|
+
export declare function SearchModal(): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export default SearchModal;
|
|
9
|
+
//# sourceMappingURL=SearchModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchModal.d.ts","sourceRoot":"","sources":["../../src/components/SearchModal.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,WAAW,mDAiJ1B;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchModal = SearchModal;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* SearchModal - Search modal with keyboard shortcuts
|
|
7
|
+
*/
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const useSearch_1 = require("../client/hooks/useSearch");
|
|
10
|
+
const useNavigation_1 = require("../client/hooks/useNavigation");
|
|
11
|
+
/**
|
|
12
|
+
* Search modal component
|
|
13
|
+
*/
|
|
14
|
+
function SearchModal() {
|
|
15
|
+
const { isOpen, closeSearch, query, setQuery, results, isSearching, debouncedSearch, } = (0, useSearch_1.useSearch)();
|
|
16
|
+
const { navigateToPath } = (0, useNavigation_1.useNavigation)();
|
|
17
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
18
|
+
const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
|
|
19
|
+
// Focus input when modal opens
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
if (isOpen && inputRef.current) {
|
|
22
|
+
inputRef.current.focus();
|
|
23
|
+
setSelectedIndex(0);
|
|
24
|
+
}
|
|
25
|
+
}, [isOpen]);
|
|
26
|
+
// Reset selected index when results change
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
setSelectedIndex(0);
|
|
29
|
+
}, [results]);
|
|
30
|
+
// Handle input change with debounced search
|
|
31
|
+
const handleInputChange = (e) => {
|
|
32
|
+
const value = e.target.value;
|
|
33
|
+
setQuery(value);
|
|
34
|
+
debouncedSearch(value);
|
|
35
|
+
};
|
|
36
|
+
// Handle result click
|
|
37
|
+
const handleResultClick = (url) => {
|
|
38
|
+
closeSearch();
|
|
39
|
+
navigateToPath(url);
|
|
40
|
+
};
|
|
41
|
+
// Handle backdrop click
|
|
42
|
+
const handleBackdropClick = (e) => {
|
|
43
|
+
if (e.target === e.currentTarget) {
|
|
44
|
+
closeSearch();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
// Handle keyboard navigation
|
|
48
|
+
const handleKeyDown = (e) => {
|
|
49
|
+
if (results.length === 0)
|
|
50
|
+
return;
|
|
51
|
+
switch (e.key) {
|
|
52
|
+
case 'ArrowDown':
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
setSelectedIndex((prev) => (prev + 1) % results.length);
|
|
55
|
+
break;
|
|
56
|
+
case 'ArrowUp':
|
|
57
|
+
e.preventDefault();
|
|
58
|
+
setSelectedIndex((prev) => (prev - 1 + results.length) % results.length);
|
|
59
|
+
break;
|
|
60
|
+
case 'Enter':
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
if (results[selectedIndex]) {
|
|
63
|
+
handleResultClick(results[selectedIndex].url);
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
if (!isOpen) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "search-modal-backdrop", onClick: handleBackdropClick, children: (0, jsx_runtime_1.jsxs)("div", { className: "search-modal", onKeyDown: handleKeyDown, children: [(0, jsx_runtime_1.jsxs)("div", { className: "search-input-container", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "search-input-icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", 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)("input", { ref: inputRef, type: "text", className: "search-input", placeholder: "Search documentation...", value: query, onChange: handleInputChange, "aria-label": "Search" })] }), (0, jsx_runtime_1.jsx)("div", { className: "search-results", children: isSearching ? ((0, jsx_runtime_1.jsx)("div", { className: "search-loading", children: (0, jsx_runtime_1.jsx)("p", { children: "Searching..." }) })) : query.trim() === '' ? ((0, jsx_runtime_1.jsx)("div", { className: "search-empty", children: (0, jsx_runtime_1.jsx)("p", { className: "search-empty-text", children: "Start typing to search" }) })) : results.length === 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "search-no-results", children: [(0, jsx_runtime_1.jsxs)("p", { children: ["No results found for \"", query, "\""] }), (0, jsx_runtime_1.jsx)("p", { className: "search-help-text", children: "Try different keywords or check your spelling" })] })) : ((0, jsx_runtime_1.jsx)("ul", { className: "search-results-list", children: results.map((result, index) => ((0, jsx_runtime_1.jsx)("li", { className: "search-result-item", children: (0, jsx_runtime_1.jsxs)("button", { className: `search-result-link ${index === selectedIndex ? 'selected' : ''}`, onClick: () => handleResultClick(result.url), onMouseEnter: () => setSelectedIndex(index), children: [(0, jsx_runtime_1.jsx)("div", { className: "search-result-title", children: result.title }), (0, jsx_runtime_1.jsx)("div", { className: "search-result-excerpt", dangerouslySetInnerHTML: { __html: result.excerpt } }), (0, jsx_runtime_1.jsx)("div", { className: "search-result-url", children: result.url })] }) }, result.id))) })) })] }) }));
|
|
72
|
+
}
|
|
73
|
+
exports.default = SearchModal;
|
|
74
|
+
//# sourceMappingURL=SearchModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchModal.js","sourceRoot":"","sources":["../../src/components/SearchModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNav.d.ts","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,wBAAgB,OAAO,4CAqBtB;AAmID,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SideNav = SideNav;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/**
|
|
6
|
+
* SideNav - Sidebar navigation component
|
|
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
|
+
/**
|
|
12
|
+
* Sidebar navigation component
|
|
13
|
+
*/
|
|
14
|
+
function SideNav() {
|
|
15
|
+
const { config } = (0, ConfigContext_1.useConfig)();
|
|
16
|
+
const location = (0, react_router_dom_1.useLocation)();
|
|
17
|
+
// TODO: Determine which sidenav to show based on current page or topnav selection
|
|
18
|
+
const sidenavItems = config.navigation.sidenav || [];
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)("nav", { className: "sidenav", children: (0, jsx_runtime_1.jsx)("ul", { className: "sidenav-list", children: sidenavItems.map((item, index) => ((0, jsx_runtime_1.jsx)(SideNavItem, { item: item, currentPath: location.pathname, depth: 0 }, index))) }) }));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Individual sidebar navigation item (recursive for nested items)
|
|
23
|
+
*/
|
|
24
|
+
function SideNavItem({ item, currentPath, depth }) {
|
|
25
|
+
const [isExpanded, setIsExpanded] = (0, react_1.useState)(true);
|
|
26
|
+
const hasChildren = item.children && item.children.length > 0;
|
|
27
|
+
// Check if current path matches this item
|
|
28
|
+
const isActive = item.path === currentPath;
|
|
29
|
+
// Check if any child is active
|
|
30
|
+
const hasActiveChild = hasChildren && item.children.some(child => isPathActive(child, currentPath));
|
|
31
|
+
const handleToggle = () => {
|
|
32
|
+
if (hasChildren) {
|
|
33
|
+
setIsExpanded(!isExpanded);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
// Handle click for parent items with links
|
|
37
|
+
const handleLinkClick = (e) => {
|
|
38
|
+
if (hasChildren) {
|
|
39
|
+
// If this item is already active, toggle collapse/expand
|
|
40
|
+
if (isActive) {
|
|
41
|
+
setIsExpanded(!isExpanded);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// If navigating to a new page, ensure children stay expanded
|
|
45
|
+
setIsExpanded(true);
|
|
46
|
+
}
|
|
47
|
+
// Don't prevent default - let the Link navigate
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const ChevronIcon = () => ((0, jsx_runtime_1.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 8 8", xmlns: "http://www.w3.org/2000/svg", className: `sidenav-chevron ${isExpanded ? 'expanded' : 'collapsed'}`, "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M.606 2.334a.75.75 0 0 0-.022 1.06l2.875 3a.75.75 0 0 0 1.082 0L7.416 3.4a.75.75 0 0 0-1.082-1.038L4 4.79 1.667 2.357a.75.75 0 0 0-1.06-.022Z", fill: "currentColor" }) }));
|
|
51
|
+
return ((0, jsx_runtime_1.jsxs)("li", { className: `sidenav-item sidenav-item-depth-${depth}`, children: [item.path ? (item.external ? ((0, jsx_runtime_1.jsxs)("a", { href: item.path, className: `sidenav-link ${isActive ? 'active' : ''}`, target: "_blank", rel: "noopener noreferrer", onClick: handleLinkClick, children: [item.icon && (0, jsx_runtime_1.jsx)("span", { className: "sidenav-icon", children: item.icon }), (0, jsx_runtime_1.jsx)("span", { className: "sidenav-label", children: item.label }), hasChildren && (0, jsx_runtime_1.jsx)(ChevronIcon, {})] })) : ((0, jsx_runtime_1.jsxs)(react_router_dom_1.Link, { to: item.path, className: `sidenav-link ${isActive ? 'active' : ''}`, onClick: handleLinkClick, children: [item.icon && (0, jsx_runtime_1.jsx)("span", { className: "sidenav-icon", children: item.icon }), (0, jsx_runtime_1.jsx)("span", { className: "sidenav-label", children: item.label }), hasChildren && (0, jsx_runtime_1.jsx)(ChevronIcon, {})] }))) : ((0, jsx_runtime_1.jsxs)("button", { className: `sidenav-link sidenav-group-label ${hasActiveChild ? 'has-active-child' : ''}`, onClick: handleToggle, children: [item.icon && (0, jsx_runtime_1.jsx)("span", { className: "sidenav-icon", children: item.icon }), (0, jsx_runtime_1.jsx)("span", { className: "sidenav-label", children: item.label }), hasChildren && (0, jsx_runtime_1.jsx)(ChevronIcon, {})] })), hasChildren && ((0, jsx_runtime_1.jsx)("div", { className: `sidenav-sublist-wrapper ${isExpanded ? 'expanded' : 'collapsed'}`, children: (0, jsx_runtime_1.jsx)("ul", { className: "sidenav-sublist", children: item.children.map((child, index) => ((0, jsx_runtime_1.jsx)(SideNavItem, { item: child, currentPath: currentPath, depth: depth + 1 }, index))) }) }))] }));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a navigation item or any of its children match the current path
|
|
55
|
+
*/
|
|
56
|
+
function isPathActive(item, currentPath) {
|
|
57
|
+
if (item.path === currentPath) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (item.children && item.children.length > 0) {
|
|
61
|
+
return item.children.some(child => isPathActive(child, currentPath));
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
exports.default = SideNav;
|
|
66
|
+
//# sourceMappingURL=SideNav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNav.js","sourceRoot":"","sources":["../../src/components/SideNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableOfContents - Displays page headings for quick navigation
|
|
3
|
+
*/
|
|
4
|
+
import { TableOfContents as TocType } from '../types/content';
|
|
5
|
+
interface TableOfContentsProps {
|
|
6
|
+
toc: TocType;
|
|
7
|
+
}
|
|
8
|
+
export declare function TableOfContents({ toc }: TableOfContentsProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default TableOfContents;
|
|
10
|
+
//# sourceMappingURL=TableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../../src/components/TableOfContents.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,IAAI,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAExE,UAAU,oBAAoB;IAC5B,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,2CAmL5D;AAED,eAAe,eAAe,CAAC"}
|