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.
Files changed (243) hide show
  1. package/README.md +240 -0
  2. package/bin/cli.js +81 -0
  3. package/dist/build/Builder.d.ts +91 -0
  4. package/dist/build/Builder.d.ts.map +1 -0
  5. package/dist/build/Builder.js +391 -0
  6. package/dist/build/Builder.js.map +1 -0
  7. package/dist/build/ClientBundler.d.ts +36 -0
  8. package/dist/build/ClientBundler.d.ts.map +1 -0
  9. package/dist/build/ClientBundler.js +132 -0
  10. package/dist/build/ClientBundler.js.map +1 -0
  11. package/dist/build/HtmlGenerator.d.ts +46 -0
  12. package/dist/build/HtmlGenerator.d.ts.map +1 -0
  13. package/dist/build/HtmlGenerator.js +200 -0
  14. package/dist/build/HtmlGenerator.js.map +1 -0
  15. package/dist/build/SearchIndexer.d.ts +31 -0
  16. package/dist/build/SearchIndexer.d.ts.map +1 -0
  17. package/dist/build/SearchIndexer.js +116 -0
  18. package/dist/build/SearchIndexer.js.map +1 -0
  19. package/dist/cli/build.d.ts +20 -0
  20. package/dist/cli/build.d.ts.map +1 -0
  21. package/dist/cli/build.js +111 -0
  22. package/dist/cli/build.js.map +1 -0
  23. package/dist/cli/create-app.d.ts +14 -0
  24. package/dist/cli/create-app.d.ts.map +1 -0
  25. package/dist/cli/create-app.js +216 -0
  26. package/dist/cli/create-app.js.map +1 -0
  27. package/dist/cli/dev.d.ts +20 -0
  28. package/dist/cli/dev.d.ts.map +1 -0
  29. package/dist/cli/dev.js +169 -0
  30. package/dist/cli/dev.js.map +1 -0
  31. package/dist/client/App.d.ts +17 -0
  32. package/dist/client/App.d.ts.map +1 -0
  33. package/dist/client/App.js +94 -0
  34. package/dist/client/App.js.map +1 -0
  35. package/dist/client/contexts/ConfigContext.d.ts +22 -0
  36. package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
  37. package/dist/client/contexts/ConfigContext.js +27 -0
  38. package/dist/client/contexts/ConfigContext.js.map +1 -0
  39. package/dist/client/contexts/ContentContext.d.ts +31 -0
  40. package/dist/client/contexts/ContentContext.d.ts.map +1 -0
  41. package/dist/client/contexts/ContentContext.js +46 -0
  42. package/dist/client/contexts/ContentContext.js.map +1 -0
  43. package/dist/client/contexts/SearchContext.d.ts +38 -0
  44. package/dist/client/contexts/SearchContext.d.ts.map +1 -0
  45. package/dist/client/contexts/SearchContext.js +207 -0
  46. package/dist/client/contexts/SearchContext.js.map +1 -0
  47. package/dist/client/contexts/ThemeContext.d.ts +23 -0
  48. package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
  49. package/dist/client/contexts/ThemeContext.js +62 -0
  50. package/dist/client/contexts/ThemeContext.js.map +1 -0
  51. package/dist/client/hooks/useContent.d.ts +12 -0
  52. package/dist/client/hooks/useContent.d.ts.map +1 -0
  53. package/dist/client/hooks/useContent.js +74 -0
  54. package/dist/client/hooks/useContent.js.map +1 -0
  55. package/dist/client/hooks/useNavigation.d.ts +15 -0
  56. package/dist/client/hooks/useNavigation.d.ts.map +1 -0
  57. package/dist/client/hooks/useNavigation.js +101 -0
  58. package/dist/client/hooks/useNavigation.js.map +1 -0
  59. package/dist/client/hooks/useSearch.d.ts +22 -0
  60. package/dist/client/hooks/useSearch.d.ts.map +1 -0
  61. package/dist/client/hooks/useSearch.js +64 -0
  62. package/dist/client/hooks/useSearch.js.map +1 -0
  63. package/dist/client/main.d.ts +5 -0
  64. package/dist/client/main.d.ts.map +1 -0
  65. package/dist/client/main.js +66 -0
  66. package/dist/client/main.js.map +1 -0
  67. package/dist/components/Callout.d.ts +9 -0
  68. package/dist/components/Callout.d.ts.map +1 -0
  69. package/dist/components/Callout.js +24 -0
  70. package/dist/components/Callout.js.map +1 -0
  71. package/dist/components/Card.d.ts +10 -0
  72. package/dist/components/Card.d.ts.map +1 -0
  73. package/dist/components/Card.js +15 -0
  74. package/dist/components/Card.js.map +1 -0
  75. package/dist/components/CardGrid.d.ts +8 -0
  76. package/dist/components/CardGrid.d.ts.map +1 -0
  77. package/dist/components/CardGrid.js +9 -0
  78. package/dist/components/CardGrid.js.map +1 -0
  79. package/dist/components/CodeBlock.d.ts +24 -0
  80. package/dist/components/CodeBlock.d.ts.map +1 -0
  81. package/dist/components/CodeBlock.js +76 -0
  82. package/dist/components/CodeBlock.js.map +1 -0
  83. package/dist/components/ContentPage.d.ts +9 -0
  84. package/dist/components/ContentPage.d.ts.map +1 -0
  85. package/dist/components/ContentPage.js +36 -0
  86. package/dist/components/ContentPage.js.map +1 -0
  87. package/dist/components/Header.d.ts +14 -0
  88. package/dist/components/Header.d.ts.map +1 -0
  89. package/dist/components/Header.js +30 -0
  90. package/dist/components/Header.js.map +1 -0
  91. package/dist/components/Heading.d.ts +16 -0
  92. package/dist/components/Heading.d.ts.map +1 -0
  93. package/dist/components/Heading.js +31 -0
  94. package/dist/components/Heading.js.map +1 -0
  95. package/dist/components/Image.d.ts +8 -0
  96. package/dist/components/Image.d.ts.map +1 -0
  97. package/dist/components/Image.js +24 -0
  98. package/dist/components/Image.js.map +1 -0
  99. package/dist/components/Layout.d.ts +14 -0
  100. package/dist/components/Layout.d.ts.map +1 -0
  101. package/dist/components/Layout.js +32 -0
  102. package/dist/components/Layout.js.map +1 -0
  103. package/dist/components/MarkdocRenderer.d.ts +15 -0
  104. package/dist/components/MarkdocRenderer.d.ts.map +1 -0
  105. package/dist/components/MarkdocRenderer.js +73 -0
  106. package/dist/components/MarkdocRenderer.js.map +1 -0
  107. package/dist/components/MobileMenu.d.ts +14 -0
  108. package/dist/components/MobileMenu.d.ts.map +1 -0
  109. package/dist/components/MobileMenu.js +45 -0
  110. package/dist/components/MobileMenu.js.map +1 -0
  111. package/dist/components/PageNavigation.d.ts +9 -0
  112. package/dist/components/PageNavigation.d.ts.map +1 -0
  113. package/dist/components/PageNavigation.js +23 -0
  114. package/dist/components/PageNavigation.js.map +1 -0
  115. package/dist/components/SearchModal.d.ts +9 -0
  116. package/dist/components/SearchModal.d.ts.map +1 -0
  117. package/dist/components/SearchModal.js +74 -0
  118. package/dist/components/SearchModal.js.map +1 -0
  119. package/dist/components/SideNav.d.ts +9 -0
  120. package/dist/components/SideNav.d.ts.map +1 -0
  121. package/dist/components/SideNav.js +66 -0
  122. package/dist/components/SideNav.js.map +1 -0
  123. package/dist/components/TableOfContents.d.ts +10 -0
  124. package/dist/components/TableOfContents.d.ts.map +1 -0
  125. package/dist/components/TableOfContents.js +151 -0
  126. package/dist/components/TableOfContents.js.map +1 -0
  127. package/dist/config/ConfigLoader.d.ts +50 -0
  128. package/dist/config/ConfigLoader.d.ts.map +1 -0
  129. package/dist/config/ConfigLoader.js +214 -0
  130. package/dist/config/ConfigLoader.js.map +1 -0
  131. package/dist/config/StyleCompiler.d.ts +17 -0
  132. package/dist/config/StyleCompiler.d.ts.map +1 -0
  133. package/dist/config/StyleCompiler.js +116 -0
  134. package/dist/config/StyleCompiler.js.map +1 -0
  135. package/dist/config/ThemeGenerator.d.ts +14 -0
  136. package/dist/config/ThemeGenerator.d.ts.map +1 -0
  137. package/dist/config/ThemeGenerator.js +129 -0
  138. package/dist/config/ThemeGenerator.js.map +1 -0
  139. package/dist/content/ContentLoader.d.ts +70 -0
  140. package/dist/content/ContentLoader.d.ts.map +1 -0
  141. package/dist/content/ContentLoader.js +146 -0
  142. package/dist/content/ContentLoader.js.map +1 -0
  143. package/dist/content/ContentProcessor.d.ts +84 -0
  144. package/dist/content/ContentProcessor.d.ts.map +1 -0
  145. package/dist/content/ContentProcessor.js +380 -0
  146. package/dist/content/ContentProcessor.js.map +1 -0
  147. package/dist/content/RouteManager.d.ts +69 -0
  148. package/dist/content/RouteManager.d.ts.map +1 -0
  149. package/dist/content/RouteManager.js +143 -0
  150. package/dist/content/RouteManager.js.map +1 -0
  151. package/dist/styles/components/callout.d.ts +11 -0
  152. package/dist/styles/components/callout.d.ts.map +1 -0
  153. package/dist/styles/components/callout.js +83 -0
  154. package/dist/styles/components/callout.js.map +1 -0
  155. package/dist/styles/components/card.d.ts +11 -0
  156. package/dist/styles/components/card.d.ts.map +1 -0
  157. package/dist/styles/components/card.js +179 -0
  158. package/dist/styles/components/card.js.map +1 -0
  159. package/dist/styles/components/codeblock.d.ts +11 -0
  160. package/dist/styles/components/codeblock.d.ts.map +1 -0
  161. package/dist/styles/components/codeblock.js +249 -0
  162. package/dist/styles/components/codeblock.js.map +1 -0
  163. package/dist/styles/components/content.d.ts +11 -0
  164. package/dist/styles/components/content.d.ts.map +1 -0
  165. package/dist/styles/components/content.js +198 -0
  166. package/dist/styles/components/content.js.map +1 -0
  167. package/dist/styles/components/fonts.d.ts +11 -0
  168. package/dist/styles/components/fonts.d.ts.map +1 -0
  169. package/dist/styles/components/fonts.js +34 -0
  170. package/dist/styles/components/fonts.js.map +1 -0
  171. package/dist/styles/components/header.d.ts +11 -0
  172. package/dist/styles/components/header.d.ts.map +1 -0
  173. package/dist/styles/components/header.js +293 -0
  174. package/dist/styles/components/header.js.map +1 -0
  175. package/dist/styles/components/heading.d.ts +11 -0
  176. package/dist/styles/components/heading.d.ts.map +1 -0
  177. package/dist/styles/components/heading.js +115 -0
  178. package/dist/styles/components/heading.js.map +1 -0
  179. package/dist/styles/components/layout.d.ts +11 -0
  180. package/dist/styles/components/layout.d.ts.map +1 -0
  181. package/dist/styles/components/layout.js +79 -0
  182. package/dist/styles/components/layout.js.map +1 -0
  183. package/dist/styles/components/mobilemenu.d.ts +11 -0
  184. package/dist/styles/components/mobilemenu.d.ts.map +1 -0
  185. package/dist/styles/components/mobilemenu.js +112 -0
  186. package/dist/styles/components/mobilemenu.js.map +1 -0
  187. package/dist/styles/components/reset.d.ts +11 -0
  188. package/dist/styles/components/reset.d.ts.map +1 -0
  189. package/dist/styles/components/reset.js +131 -0
  190. package/dist/styles/components/reset.js.map +1 -0
  191. package/dist/styles/components/searchmodal.d.ts +11 -0
  192. package/dist/styles/components/searchmodal.d.ts.map +1 -0
  193. package/dist/styles/components/searchmodal.js +333 -0
  194. package/dist/styles/components/searchmodal.js.map +1 -0
  195. package/dist/styles/components/sidenav.d.ts +11 -0
  196. package/dist/styles/components/sidenav.d.ts.map +1 -0
  197. package/dist/styles/components/sidenav.js +209 -0
  198. package/dist/styles/components/sidenav.js.map +1 -0
  199. package/dist/styles/components/toc.d.ts +11 -0
  200. package/dist/styles/components/toc.d.ts.map +1 -0
  201. package/dist/styles/components/toc.js +112 -0
  202. package/dist/styles/components/toc.js.map +1 -0
  203. package/dist/styles/components/typography.d.ts +11 -0
  204. package/dist/styles/components/typography.d.ts.map +1 -0
  205. package/dist/styles/components/typography.js +247 -0
  206. package/dist/styles/components/typography.js.map +1 -0
  207. package/dist/styles/components/utility.d.ts +11 -0
  208. package/dist/styles/components/utility.d.ts.map +1 -0
  209. package/dist/styles/components/utility.js +231 -0
  210. package/dist/styles/components/utility.js.map +1 -0
  211. package/dist/styles/types.d.ts +79 -0
  212. package/dist/styles/types.d.ts.map +1 -0
  213. package/dist/styles/types.js +7 -0
  214. package/dist/styles/types.js.map +1 -0
  215. package/dist/styles/utils.d.ts +21 -0
  216. package/dist/styles/utils.d.ts.map +1 -0
  217. package/dist/styles/utils.js +50 -0
  218. package/dist/styles/utils.js.map +1 -0
  219. package/dist/styles/variables/main.d.ts +15 -0
  220. package/dist/styles/variables/main.d.ts.map +1 -0
  221. package/dist/styles/variables/main.js +116 -0
  222. package/dist/styles/variables/main.js.map +1 -0
  223. package/dist/types/config.d.ts +43 -0
  224. package/dist/types/config.d.ts.map +1 -0
  225. package/dist/types/config.js +7 -0
  226. package/dist/types/config.js.map +1 -0
  227. package/dist/types/content.d.ts +46 -0
  228. package/dist/types/content.d.ts.map +1 -0
  229. package/dist/types/content.js +7 -0
  230. package/dist/types/content.js.map +1 -0
  231. package/dist/types/navigation.d.ts +45 -0
  232. package/dist/types/navigation.d.ts.map +1 -0
  233. package/dist/types/navigation.js +7 -0
  234. package/dist/types/navigation.js.map +1 -0
  235. package/dist/utils/language-utils.d.ts +41 -0
  236. package/dist/utils/language-utils.d.ts.map +1 -0
  237. package/dist/utils/language-utils.js +79 -0
  238. package/dist/utils/language-utils.js.map +1 -0
  239. package/dist/utils/slugify.d.ts +20 -0
  240. package/dist/utils/slugify.d.ts.map +1 -0
  241. package/dist/utils/slugify.js +44 -0
  242. package/dist/utils/slugify.js.map +1 -0
  243. 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,9 @@
1
+ /**
2
+ * SideNav - Sidebar navigation component
3
+ */
4
+ /**
5
+ * Sidebar navigation component
6
+ */
7
+ export declare function SideNav(): import("react/jsx-runtime").JSX.Element;
8
+ export default SideNav;
9
+ //# sourceMappingURL=SideNav.d.ts.map
@@ -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"}