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