mordoc 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +240 -0
- package/bin/cli.js +81 -0
- package/dist/build/Builder.d.ts +91 -0
- package/dist/build/Builder.d.ts.map +1 -0
- package/dist/build/Builder.js +391 -0
- package/dist/build/Builder.js.map +1 -0
- package/dist/build/ClientBundler.d.ts +36 -0
- package/dist/build/ClientBundler.d.ts.map +1 -0
- package/dist/build/ClientBundler.js +132 -0
- package/dist/build/ClientBundler.js.map +1 -0
- package/dist/build/HtmlGenerator.d.ts +46 -0
- package/dist/build/HtmlGenerator.d.ts.map +1 -0
- package/dist/build/HtmlGenerator.js +200 -0
- package/dist/build/HtmlGenerator.js.map +1 -0
- package/dist/build/SearchIndexer.d.ts +31 -0
- package/dist/build/SearchIndexer.d.ts.map +1 -0
- package/dist/build/SearchIndexer.js +116 -0
- package/dist/build/SearchIndexer.js.map +1 -0
- package/dist/cli/build.d.ts +20 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +111 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/create-app.d.ts +14 -0
- package/dist/cli/create-app.d.ts.map +1 -0
- package/dist/cli/create-app.js +216 -0
- package/dist/cli/create-app.js.map +1 -0
- package/dist/cli/dev.d.ts +20 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +169 -0
- package/dist/cli/dev.js.map +1 -0
- package/dist/client/App.d.ts +17 -0
- package/dist/client/App.d.ts.map +1 -0
- package/dist/client/App.js +94 -0
- package/dist/client/App.js.map +1 -0
- package/dist/client/contexts/ConfigContext.d.ts +22 -0
- package/dist/client/contexts/ConfigContext.d.ts.map +1 -0
- package/dist/client/contexts/ConfigContext.js +27 -0
- package/dist/client/contexts/ConfigContext.js.map +1 -0
- package/dist/client/contexts/ContentContext.d.ts +31 -0
- package/dist/client/contexts/ContentContext.d.ts.map +1 -0
- package/dist/client/contexts/ContentContext.js +46 -0
- package/dist/client/contexts/ContentContext.js.map +1 -0
- package/dist/client/contexts/SearchContext.d.ts +38 -0
- package/dist/client/contexts/SearchContext.d.ts.map +1 -0
- package/dist/client/contexts/SearchContext.js +207 -0
- package/dist/client/contexts/SearchContext.js.map +1 -0
- package/dist/client/contexts/ThemeContext.d.ts +23 -0
- package/dist/client/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/client/contexts/ThemeContext.js +62 -0
- package/dist/client/contexts/ThemeContext.js.map +1 -0
- package/dist/client/hooks/useContent.d.ts +12 -0
- package/dist/client/hooks/useContent.d.ts.map +1 -0
- package/dist/client/hooks/useContent.js +74 -0
- package/dist/client/hooks/useContent.js.map +1 -0
- package/dist/client/hooks/useNavigation.d.ts +15 -0
- package/dist/client/hooks/useNavigation.d.ts.map +1 -0
- package/dist/client/hooks/useNavigation.js +101 -0
- package/dist/client/hooks/useNavigation.js.map +1 -0
- package/dist/client/hooks/useSearch.d.ts +22 -0
- package/dist/client/hooks/useSearch.d.ts.map +1 -0
- package/dist/client/hooks/useSearch.js +64 -0
- package/dist/client/hooks/useSearch.js.map +1 -0
- package/dist/client/main.d.ts +5 -0
- package/dist/client/main.d.ts.map +1 -0
- package/dist/client/main.js +66 -0
- package/dist/client/main.js.map +1 -0
- package/dist/components/Callout.d.ts +9 -0
- package/dist/components/Callout.d.ts.map +1 -0
- package/dist/components/Callout.js +24 -0
- package/dist/components/Callout.js.map +1 -0
- package/dist/components/Card.d.ts +10 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +15 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CardGrid.d.ts +8 -0
- package/dist/components/CardGrid.d.ts.map +1 -0
- package/dist/components/CardGrid.js +9 -0
- package/dist/components/CardGrid.js.map +1 -0
- package/dist/components/CodeBlock.d.ts +24 -0
- package/dist/components/CodeBlock.d.ts.map +1 -0
- package/dist/components/CodeBlock.js +76 -0
- package/dist/components/CodeBlock.js.map +1 -0
- package/dist/components/ContentPage.d.ts +9 -0
- package/dist/components/ContentPage.d.ts.map +1 -0
- package/dist/components/ContentPage.js +36 -0
- package/dist/components/ContentPage.js.map +1 -0
- package/dist/components/Header.d.ts +14 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +30 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Heading.d.ts +16 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +31 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Image.d.ts +8 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +24 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Layout.d.ts +14 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +32 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/MarkdocRenderer.d.ts +15 -0
- package/dist/components/MarkdocRenderer.d.ts.map +1 -0
- package/dist/components/MarkdocRenderer.js +73 -0
- package/dist/components/MarkdocRenderer.js.map +1 -0
- package/dist/components/MobileMenu.d.ts +14 -0
- package/dist/components/MobileMenu.d.ts.map +1 -0
- package/dist/components/MobileMenu.js +45 -0
- package/dist/components/MobileMenu.js.map +1 -0
- package/dist/components/PageNavigation.d.ts +9 -0
- package/dist/components/PageNavigation.d.ts.map +1 -0
- package/dist/components/PageNavigation.js +23 -0
- package/dist/components/PageNavigation.js.map +1 -0
- package/dist/components/SearchModal.d.ts +9 -0
- package/dist/components/SearchModal.d.ts.map +1 -0
- package/dist/components/SearchModal.js +74 -0
- package/dist/components/SearchModal.js.map +1 -0
- package/dist/components/SideNav.d.ts +9 -0
- package/dist/components/SideNav.d.ts.map +1 -0
- package/dist/components/SideNav.js +66 -0
- package/dist/components/SideNav.js.map +1 -0
- package/dist/components/TableOfContents.d.ts +10 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/TableOfContents.js +151 -0
- package/dist/components/TableOfContents.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +50 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +214 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/StyleCompiler.d.ts +17 -0
- package/dist/config/StyleCompiler.d.ts.map +1 -0
- package/dist/config/StyleCompiler.js +116 -0
- package/dist/config/StyleCompiler.js.map +1 -0
- package/dist/config/ThemeGenerator.d.ts +14 -0
- package/dist/config/ThemeGenerator.d.ts.map +1 -0
- package/dist/config/ThemeGenerator.js +129 -0
- package/dist/config/ThemeGenerator.js.map +1 -0
- package/dist/content/ContentLoader.d.ts +70 -0
- package/dist/content/ContentLoader.d.ts.map +1 -0
- package/dist/content/ContentLoader.js +146 -0
- package/dist/content/ContentLoader.js.map +1 -0
- package/dist/content/ContentProcessor.d.ts +84 -0
- package/dist/content/ContentProcessor.d.ts.map +1 -0
- package/dist/content/ContentProcessor.js +380 -0
- package/dist/content/ContentProcessor.js.map +1 -0
- package/dist/content/RouteManager.d.ts +69 -0
- package/dist/content/RouteManager.d.ts.map +1 -0
- package/dist/content/RouteManager.js +143 -0
- package/dist/content/RouteManager.js.map +1 -0
- package/dist/styles/components/callout.d.ts +11 -0
- package/dist/styles/components/callout.d.ts.map +1 -0
- package/dist/styles/components/callout.js +83 -0
- package/dist/styles/components/callout.js.map +1 -0
- package/dist/styles/components/card.d.ts +11 -0
- package/dist/styles/components/card.d.ts.map +1 -0
- package/dist/styles/components/card.js +179 -0
- package/dist/styles/components/card.js.map +1 -0
- package/dist/styles/components/codeblock.d.ts +11 -0
- package/dist/styles/components/codeblock.d.ts.map +1 -0
- package/dist/styles/components/codeblock.js +249 -0
- package/dist/styles/components/codeblock.js.map +1 -0
- package/dist/styles/components/content.d.ts +11 -0
- package/dist/styles/components/content.d.ts.map +1 -0
- package/dist/styles/components/content.js +198 -0
- package/dist/styles/components/content.js.map +1 -0
- package/dist/styles/components/fonts.d.ts +11 -0
- package/dist/styles/components/fonts.d.ts.map +1 -0
- package/dist/styles/components/fonts.js +34 -0
- package/dist/styles/components/fonts.js.map +1 -0
- package/dist/styles/components/header.d.ts +11 -0
- package/dist/styles/components/header.d.ts.map +1 -0
- package/dist/styles/components/header.js +293 -0
- package/dist/styles/components/header.js.map +1 -0
- package/dist/styles/components/heading.d.ts +11 -0
- package/dist/styles/components/heading.d.ts.map +1 -0
- package/dist/styles/components/heading.js +115 -0
- package/dist/styles/components/heading.js.map +1 -0
- package/dist/styles/components/layout.d.ts +11 -0
- package/dist/styles/components/layout.d.ts.map +1 -0
- package/dist/styles/components/layout.js +79 -0
- package/dist/styles/components/layout.js.map +1 -0
- package/dist/styles/components/mobilemenu.d.ts +11 -0
- package/dist/styles/components/mobilemenu.d.ts.map +1 -0
- package/dist/styles/components/mobilemenu.js +112 -0
- package/dist/styles/components/mobilemenu.js.map +1 -0
- package/dist/styles/components/reset.d.ts +11 -0
- package/dist/styles/components/reset.d.ts.map +1 -0
- package/dist/styles/components/reset.js +131 -0
- package/dist/styles/components/reset.js.map +1 -0
- package/dist/styles/components/searchmodal.d.ts +11 -0
- package/dist/styles/components/searchmodal.d.ts.map +1 -0
- package/dist/styles/components/searchmodal.js +333 -0
- package/dist/styles/components/searchmodal.js.map +1 -0
- package/dist/styles/components/sidenav.d.ts +11 -0
- package/dist/styles/components/sidenav.d.ts.map +1 -0
- package/dist/styles/components/sidenav.js +209 -0
- package/dist/styles/components/sidenav.js.map +1 -0
- package/dist/styles/components/toc.d.ts +11 -0
- package/dist/styles/components/toc.d.ts.map +1 -0
- package/dist/styles/components/toc.js +112 -0
- package/dist/styles/components/toc.js.map +1 -0
- package/dist/styles/components/typography.d.ts +11 -0
- package/dist/styles/components/typography.d.ts.map +1 -0
- package/dist/styles/components/typography.js +247 -0
- package/dist/styles/components/typography.js.map +1 -0
- package/dist/styles/components/utility.d.ts +11 -0
- package/dist/styles/components/utility.d.ts.map +1 -0
- package/dist/styles/components/utility.js +231 -0
- package/dist/styles/components/utility.js.map +1 -0
- package/dist/styles/types.d.ts +79 -0
- package/dist/styles/types.d.ts.map +1 -0
- package/dist/styles/types.js +7 -0
- package/dist/styles/types.js.map +1 -0
- package/dist/styles/utils.d.ts +21 -0
- package/dist/styles/utils.d.ts.map +1 -0
- package/dist/styles/utils.js +50 -0
- package/dist/styles/utils.js.map +1 -0
- package/dist/styles/variables/main.d.ts +15 -0
- package/dist/styles/variables/main.d.ts.map +1 -0
- package/dist/styles/variables/main.js +116 -0
- package/dist/styles/variables/main.js.map +1 -0
- package/dist/types/config.d.ts +43 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +7 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/content.d.ts +46 -0
- package/dist/types/content.d.ts.map +1 -0
- package/dist/types/content.js +7 -0
- package/dist/types/content.js.map +1 -0
- package/dist/types/navigation.d.ts +45 -0
- package/dist/types/navigation.d.ts.map +1 -0
- package/dist/types/navigation.js +7 -0
- package/dist/types/navigation.js.map +1 -0
- package/dist/utils/language-utils.d.ts +41 -0
- package/dist/utils/language-utils.d.ts.map +1 -0
- package/dist/utils/language-utils.js +79 -0
- package/dist/utils/language-utils.js.map +1 -0
- package/dist/utils/slugify.d.ts +20 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +44 -0
- package/dist/utils/slugify.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThemeGenerator - Generates CSS variables from GlobalVariables
|
|
4
|
+
* Converts global design tokens into CSS custom properties
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ThemeGenerator = void 0;
|
|
8
|
+
class ThemeGenerator {
|
|
9
|
+
constructor(globalVars) {
|
|
10
|
+
this.globalVars = globalVars;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Generate CSS custom properties (variables) for colors, typography, and layout
|
|
14
|
+
*/
|
|
15
|
+
generateCSSVariables() {
|
|
16
|
+
const vars = this.globalVars;
|
|
17
|
+
const cssVars = [];
|
|
18
|
+
// Light mode variables
|
|
19
|
+
cssVars.push(':root, [data-theme="light"] {');
|
|
20
|
+
cssVars.push(' /* Colors - Light Mode */');
|
|
21
|
+
cssVars.push(` --color-primary: ${vars.primaryColorLight};`);
|
|
22
|
+
cssVars.push(` --color-secondary: ${vars.secondaryColorLight};`);
|
|
23
|
+
cssVars.push(` --color-background: ${vars.backgroundColorLight};`);
|
|
24
|
+
cssVars.push(` --color-surface: ${vars.surfaceColorLight};`);
|
|
25
|
+
cssVars.push(` --color-text-primary: ${vars.textPrimaryLight};`);
|
|
26
|
+
cssVars.push(` --color-text-secondary: ${vars.textSecondaryLight};`);
|
|
27
|
+
cssVars.push(` --color-text-disabled: ${vars.textDisabledLight};`);
|
|
28
|
+
cssVars.push(` --color-border: ${vars.borderColorLight};`);
|
|
29
|
+
cssVars.push(` --color-link: ${vars.linkColorLight};`);
|
|
30
|
+
cssVars.push(` --color-success: ${vars.successColorLight};`);
|
|
31
|
+
cssVars.push(` --color-warning: ${vars.warningColorLight};`);
|
|
32
|
+
cssVars.push(` --color-error: ${vars.errorColorLight};`);
|
|
33
|
+
cssVars.push(` --color-info: ${vars.infoColorLight};`);
|
|
34
|
+
cssVars.push('');
|
|
35
|
+
cssVars.push(' /* Navigation - Light Mode */');
|
|
36
|
+
cssVars.push(` --nav-text-color: ${vars.navTextColorLight};`);
|
|
37
|
+
cssVars.push(` --nav-hover-color: ${vars.navHoverColorLight};`);
|
|
38
|
+
cssVars.push(` --nav-active-color: ${vars.navActiveColorLight};`);
|
|
39
|
+
cssVars.push('');
|
|
40
|
+
cssVars.push(' /* Typography */');
|
|
41
|
+
cssVars.push(` --font-family-base: ${vars.fontFamilyBase};`);
|
|
42
|
+
cssVars.push(` --font-family-heading: ${vars.fontFamilyHeading};`);
|
|
43
|
+
cssVars.push(` --font-family-mono: ${vars.fontFamilyMono};`);
|
|
44
|
+
cssVars.push(` --font-size-xs: ${vars.fontSizeXs};`);
|
|
45
|
+
cssVars.push(` --font-size-sm: ${vars.fontSizeSm};`);
|
|
46
|
+
cssVars.push(` --font-size-base: ${vars.fontSizeBase};`);
|
|
47
|
+
cssVars.push(` --font-size-lg: ${vars.fontSizeLg};`);
|
|
48
|
+
cssVars.push(` --font-size-xl: ${vars.fontSizeXl};`);
|
|
49
|
+
cssVars.push(` --font-size-2xl: ${vars.fontSize2xl};`);
|
|
50
|
+
cssVars.push(` --font-size-3xl: ${vars.fontSize3xl};`);
|
|
51
|
+
cssVars.push(` --font-size-4xl: ${vars.fontSize4xl};`);
|
|
52
|
+
cssVars.push(` --line-height-tight: ${vars.lineHeightTight};`);
|
|
53
|
+
cssVars.push(` --line-height-normal: ${vars.lineHeightNormal};`);
|
|
54
|
+
cssVars.push(` --line-height-relaxed: ${vars.lineHeightRelaxed};`);
|
|
55
|
+
cssVars.push(` --font-weight-normal: ${vars.fontWeightNormal};`);
|
|
56
|
+
cssVars.push(` --font-weight-medium: ${vars.fontWeightMedium};`);
|
|
57
|
+
cssVars.push(` --font-weight-semibold: ${vars.fontWeightSemibold};`);
|
|
58
|
+
cssVars.push(` --font-weight-bold: ${vars.fontWeightBold};`);
|
|
59
|
+
cssVars.push('');
|
|
60
|
+
cssVars.push(' /* Layout */');
|
|
61
|
+
cssVars.push(` --container-width-sm: ${vars.containerWidthSm};`);
|
|
62
|
+
cssVars.push(` --container-width-md: ${vars.containerWidthMd};`);
|
|
63
|
+
cssVars.push(` --container-width-lg: ${vars.containerWidthLg};`);
|
|
64
|
+
cssVars.push(` --container-width-xl: ${vars.containerWidthXl};`);
|
|
65
|
+
cssVars.push(` --spacing-xs: ${vars.spacingXs};`);
|
|
66
|
+
cssVars.push(` --spacing-sm: ${vars.spacingSm};`);
|
|
67
|
+
cssVars.push(` --spacing-md: ${vars.spacingMd};`);
|
|
68
|
+
cssVars.push(` --spacing-lg: ${vars.spacingLg};`);
|
|
69
|
+
cssVars.push(` --spacing-xl: ${vars.spacingXl};`);
|
|
70
|
+
cssVars.push(` --spacing-2xl: ${vars.spacing2xl};`);
|
|
71
|
+
cssVars.push(` --spacing-3xl: ${vars.spacing3xl};`);
|
|
72
|
+
cssVars.push(` --border-radius-sm: ${vars.borderRadiusSm};`);
|
|
73
|
+
cssVars.push(` --border-radius-md: ${vars.borderRadiusMd};`);
|
|
74
|
+
cssVars.push(` --border-radius-lg: ${vars.borderRadiusLg};`);
|
|
75
|
+
cssVars.push(` --border-radius-full: ${vars.borderRadiusFull};`);
|
|
76
|
+
cssVars.push(` --header-height: ${vars.headerHeight};`);
|
|
77
|
+
cssVars.push(` --sidebar-width: ${vars.sidebarWidth};`);
|
|
78
|
+
cssVars.push(` --sidebar-collapsed-width: ${vars.sidebarCollapsedWidth};`);
|
|
79
|
+
cssVars.push('}');
|
|
80
|
+
// Dark mode variables
|
|
81
|
+
cssVars.push('');
|
|
82
|
+
cssVars.push('[data-theme="dark"] {');
|
|
83
|
+
cssVars.push(' /* Colors - Dark Mode */');
|
|
84
|
+
cssVars.push(` --color-primary: ${vars.primaryColorDark};`);
|
|
85
|
+
cssVars.push(` --color-secondary: ${vars.secondaryColorDark};`);
|
|
86
|
+
cssVars.push(` --color-background: ${vars.backgroundColorDark};`);
|
|
87
|
+
cssVars.push(` --color-surface: ${vars.surfaceColorDark};`);
|
|
88
|
+
cssVars.push(` --color-text-primary: ${vars.textPrimaryDark};`);
|
|
89
|
+
cssVars.push(` --color-text-secondary: ${vars.textSecondaryDark};`);
|
|
90
|
+
cssVars.push(` --color-text-disabled: ${vars.textDisabledDark};`);
|
|
91
|
+
cssVars.push(` --color-border: ${vars.borderColorDark};`);
|
|
92
|
+
cssVars.push(` --color-link: ${vars.linkColorDark};`);
|
|
93
|
+
cssVars.push(` --color-success: ${vars.successColorDark};`);
|
|
94
|
+
cssVars.push(` --color-warning: ${vars.warningColorDark};`);
|
|
95
|
+
cssVars.push(` --color-error: ${vars.errorColorDark};`);
|
|
96
|
+
cssVars.push(` --color-info: ${vars.infoColorDark};`);
|
|
97
|
+
cssVars.push('');
|
|
98
|
+
cssVars.push(' /* Navigation - Dark Mode */');
|
|
99
|
+
cssVars.push(` --nav-text-color: ${vars.navTextColorDark};`);
|
|
100
|
+
cssVars.push(` --nav-hover-color: ${vars.navHoverColorDark};`);
|
|
101
|
+
cssVars.push(` --nav-active-color: ${vars.navActiveColorDark};`);
|
|
102
|
+
cssVars.push('}');
|
|
103
|
+
// System preference dark mode
|
|
104
|
+
cssVars.push('');
|
|
105
|
+
cssVars.push('@media (prefers-color-scheme: dark) {');
|
|
106
|
+
cssVars.push(' :root:not([data-theme="light"]) {');
|
|
107
|
+
cssVars.push(` --color-primary: ${vars.primaryColorDark};`);
|
|
108
|
+
cssVars.push(` --color-secondary: ${vars.secondaryColorDark};`);
|
|
109
|
+
cssVars.push(` --color-background: ${vars.backgroundColorDark};`);
|
|
110
|
+
cssVars.push(` --color-surface: ${vars.surfaceColorDark};`);
|
|
111
|
+
cssVars.push(` --color-text-primary: ${vars.textPrimaryDark};`);
|
|
112
|
+
cssVars.push(` --color-text-secondary: ${vars.textSecondaryDark};`);
|
|
113
|
+
cssVars.push(` --color-text-disabled: ${vars.textDisabledDark};`);
|
|
114
|
+
cssVars.push(` --color-border: ${vars.borderColorDark};`);
|
|
115
|
+
cssVars.push(` --color-link: ${vars.linkColorDark};`);
|
|
116
|
+
cssVars.push(` --color-success: ${vars.successColorDark};`);
|
|
117
|
+
cssVars.push(` --color-warning: ${vars.warningColorDark};`);
|
|
118
|
+
cssVars.push(` --color-error: ${vars.errorColorDark};`);
|
|
119
|
+
cssVars.push(` --color-info: ${vars.infoColorDark};`);
|
|
120
|
+
cssVars.push(` --nav-text-color: ${vars.navTextColorDark};`);
|
|
121
|
+
cssVars.push(` --nav-hover-color: ${vars.navHoverColorDark};`);
|
|
122
|
+
cssVars.push(` --nav-active-color: ${vars.navActiveColorDark};`);
|
|
123
|
+
cssVars.push(' }');
|
|
124
|
+
cssVars.push('}');
|
|
125
|
+
return cssVars.join('\n');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.ThemeGenerator = ThemeGenerator;
|
|
129
|
+
//# sourceMappingURL=ThemeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeGenerator.js","sourceRoot":"","sources":["../../src/config/ThemeGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentLoader - Discovers and loads markdown files from content directory
|
|
3
|
+
* Scans the content/ folder and reads raw markdown content
|
|
4
|
+
*/
|
|
5
|
+
import { RouteManager } from './RouteManager';
|
|
6
|
+
import { Route, RouteMap } from '../types/navigation';
|
|
7
|
+
export interface RawContentFile {
|
|
8
|
+
filePath: string;
|
|
9
|
+
absolutePath: string;
|
|
10
|
+
content: string;
|
|
11
|
+
route: Route;
|
|
12
|
+
}
|
|
13
|
+
export declare class ContentLoader {
|
|
14
|
+
private contentDir;
|
|
15
|
+
private routeManager;
|
|
16
|
+
constructor(contentDir: string, routeManager: RouteManager);
|
|
17
|
+
/**
|
|
18
|
+
* Discover all markdown files in the content directory
|
|
19
|
+
* @returns Array of relative file paths from content/
|
|
20
|
+
*/
|
|
21
|
+
discoverFiles(): Promise<string[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Load a single markdown file
|
|
24
|
+
* @param filePath - Relative path from content/ directory
|
|
25
|
+
* @returns Raw content file object
|
|
26
|
+
*/
|
|
27
|
+
loadFile(filePath: string): Promise<RawContentFile>;
|
|
28
|
+
/**
|
|
29
|
+
* Load all markdown files from content directory
|
|
30
|
+
* @returns Array of raw content files
|
|
31
|
+
*/
|
|
32
|
+
loadAll(): Promise<RawContentFile[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Load all files and create a route map
|
|
35
|
+
* @returns RouteMap with all discovered routes
|
|
36
|
+
*/
|
|
37
|
+
loadWithRoutes(): Promise<{
|
|
38
|
+
files: RawContentFile[];
|
|
39
|
+
routeMap: RouteMap;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Load files for a specific language
|
|
43
|
+
* @param language - Language code
|
|
44
|
+
* @returns Array of raw content files for that language
|
|
45
|
+
*/
|
|
46
|
+
loadByLanguage(language: string): Promise<RawContentFile[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Check if content exists for a specific language
|
|
49
|
+
* @param language - Language code
|
|
50
|
+
* @returns True if content exists for the language
|
|
51
|
+
*/
|
|
52
|
+
hasContentForLanguage(language: string): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Get statistics about discovered content
|
|
55
|
+
* @returns Content statistics
|
|
56
|
+
*/
|
|
57
|
+
getStats(): Promise<{
|
|
58
|
+
totalFiles: number;
|
|
59
|
+
byLanguage: Record<string, number>;
|
|
60
|
+
byExtension: Record<string, number>;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Find a file by slug and language
|
|
64
|
+
* @param slug - Content slug
|
|
65
|
+
* @param language - Language code
|
|
66
|
+
* @returns Raw content file or undefined
|
|
67
|
+
*/
|
|
68
|
+
findFile(slug: string, language: string): Promise<RawContentFile | undefined>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=ContentLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentLoader.d.ts","sourceRoot":"","sources":["../../src/content/ContentLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAe;gBAEvB,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY;IAK1D;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAexC;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsBzD;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB1C;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IAWhF;;;;OAIG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAKjE;;;;OAIG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IAsBF;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAOpF"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ContentLoader - Discovers and loads markdown files from content directory
|
|
4
|
+
* Scans the content/ folder and reads raw markdown content
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ContentLoader = void 0;
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
14
|
+
class ContentLoader {
|
|
15
|
+
constructor(contentDir, routeManager) {
|
|
16
|
+
this.contentDir = contentDir;
|
|
17
|
+
this.routeManager = routeManager;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Discover all markdown files in the content directory
|
|
21
|
+
* @returns Array of relative file paths from content/
|
|
22
|
+
*/
|
|
23
|
+
async discoverFiles() {
|
|
24
|
+
// Check if content directory exists
|
|
25
|
+
if (!fs_1.default.existsSync(this.contentDir)) {
|
|
26
|
+
throw new Error(`Content directory not found: ${this.contentDir}`);
|
|
27
|
+
}
|
|
28
|
+
// Find all .md and .mdx files recursively
|
|
29
|
+
const files = await (0, fast_glob_1.default)(['**/*.md'], {
|
|
30
|
+
cwd: this.contentDir,
|
|
31
|
+
});
|
|
32
|
+
// Sort files alphabetically for consistent ordering
|
|
33
|
+
return files.sort();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Load a single markdown file
|
|
37
|
+
* @param filePath - Relative path from content/ directory
|
|
38
|
+
* @returns Raw content file object
|
|
39
|
+
*/
|
|
40
|
+
async loadFile(filePath) {
|
|
41
|
+
const absolutePath = path_1.default.join(this.contentDir, filePath);
|
|
42
|
+
// Check if file exists
|
|
43
|
+
if (!fs_1.default.existsSync(absolutePath)) {
|
|
44
|
+
throw new Error(`File not found: ${absolutePath}`);
|
|
45
|
+
}
|
|
46
|
+
// Read file content
|
|
47
|
+
const content = fs_1.default.readFileSync(absolutePath, 'utf8');
|
|
48
|
+
// Create route for this file
|
|
49
|
+
const route = this.routeManager.createRoute(filePath);
|
|
50
|
+
return {
|
|
51
|
+
filePath,
|
|
52
|
+
absolutePath,
|
|
53
|
+
content,
|
|
54
|
+
route,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Load all markdown files from content directory
|
|
59
|
+
* @returns Array of raw content files
|
|
60
|
+
*/
|
|
61
|
+
async loadAll() {
|
|
62
|
+
const filePaths = await this.discoverFiles();
|
|
63
|
+
const files = [];
|
|
64
|
+
for (const filePath of filePaths) {
|
|
65
|
+
try {
|
|
66
|
+
const file = await this.loadFile(filePath);
|
|
67
|
+
files.push(file);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.warn(`Warning: Failed to load file ${filePath}:`, error.message);
|
|
71
|
+
// Continue loading other files
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return files;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Load all files and create a route map
|
|
78
|
+
* @returns RouteMap with all discovered routes
|
|
79
|
+
*/
|
|
80
|
+
async loadWithRoutes() {
|
|
81
|
+
const files = await this.loadAll();
|
|
82
|
+
const filePaths = files.map((f) => f.filePath);
|
|
83
|
+
const routeMap = this.routeManager.createRouteMap(filePaths);
|
|
84
|
+
return {
|
|
85
|
+
files,
|
|
86
|
+
routeMap,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Load files for a specific language
|
|
91
|
+
* @param language - Language code
|
|
92
|
+
* @returns Array of raw content files for that language
|
|
93
|
+
*/
|
|
94
|
+
async loadByLanguage(language) {
|
|
95
|
+
const allFiles = await this.loadAll();
|
|
96
|
+
return allFiles.filter((file) => file.route.language === language);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if content exists for a specific language
|
|
100
|
+
* @param language - Language code
|
|
101
|
+
* @returns True if content exists for the language
|
|
102
|
+
*/
|
|
103
|
+
async hasContentForLanguage(language) {
|
|
104
|
+
const filePaths = await this.discoverFiles();
|
|
105
|
+
// Check if any file starts with the language prefix
|
|
106
|
+
return filePaths.some((filePath) => {
|
|
107
|
+
const parts = filePath.split('/');
|
|
108
|
+
return parts.length > 0 && parts[0] === language;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get statistics about discovered content
|
|
113
|
+
* @returns Content statistics
|
|
114
|
+
*/
|
|
115
|
+
async getStats() {
|
|
116
|
+
const files = await this.loadAll();
|
|
117
|
+
const stats = {
|
|
118
|
+
totalFiles: files.length,
|
|
119
|
+
byLanguage: {},
|
|
120
|
+
byExtension: {},
|
|
121
|
+
};
|
|
122
|
+
for (const file of files) {
|
|
123
|
+
// Count by language
|
|
124
|
+
const lang = file.route.language;
|
|
125
|
+
stats.byLanguage[lang] = (stats.byLanguage[lang] || 0) + 1;
|
|
126
|
+
// Count by extension
|
|
127
|
+
const ext = path_1.default.extname(file.filePath);
|
|
128
|
+
stats.byExtension[ext] = (stats.byExtension[ext] || 0) + 1;
|
|
129
|
+
}
|
|
130
|
+
return stats;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Find a file by slug and language
|
|
134
|
+
* @param slug - Content slug
|
|
135
|
+
* @param language - Language code
|
|
136
|
+
* @returns Raw content file or undefined
|
|
137
|
+
*/
|
|
138
|
+
async findFile(slug, language) {
|
|
139
|
+
const files = await this.loadAll();
|
|
140
|
+
return files.find((file) => {
|
|
141
|
+
return file.route.slug === slug && file.route.language === language;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.ContentLoader = ContentLoader;
|
|
146
|
+
//# sourceMappingURL=ContentLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentLoader.js","sourceRoot":"","sources":["../../src/content/ContentLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContentProcessor - Processes raw markdown content with Markdoc
|
|
3
|
+
* Extracts frontmatter, generates TOC, calculates reading time
|
|
4
|
+
*/
|
|
5
|
+
import { ProcessedContent, ContentMetadata } from '../types/content';
|
|
6
|
+
import { RawContentFile } from './ContentLoader';
|
|
7
|
+
export declare class ContentProcessor {
|
|
8
|
+
private averageReadingSpeed;
|
|
9
|
+
constructor(averageReadingSpeed?: number);
|
|
10
|
+
/**
|
|
11
|
+
* Process a raw content file into structured content
|
|
12
|
+
* @param rawFile - Raw content file from ContentLoader
|
|
13
|
+
* @returns Processed content with metadata and renderable
|
|
14
|
+
*/
|
|
15
|
+
process(rawFile: RawContentFile): ProcessedContent;
|
|
16
|
+
/**
|
|
17
|
+
* Process multiple raw files
|
|
18
|
+
* @param rawFiles - Array of raw content files
|
|
19
|
+
* @returns Array of processed content
|
|
20
|
+
*/
|
|
21
|
+
processAll(rawFiles: RawContentFile[]): ProcessedContent[];
|
|
22
|
+
/**
|
|
23
|
+
* Extract frontmatter from Markdoc AST
|
|
24
|
+
*/
|
|
25
|
+
private extractFrontmatter;
|
|
26
|
+
/**
|
|
27
|
+
* Generate a readable title from filename
|
|
28
|
+
* @param filePath - File path (e.g., "en/getting-started.md")
|
|
29
|
+
* @returns Human-readable title
|
|
30
|
+
*/
|
|
31
|
+
private generateTitleFromFilename;
|
|
32
|
+
/**
|
|
33
|
+
* Convert a slug to human-readable title
|
|
34
|
+
* @param slug - Slugified string
|
|
35
|
+
* @returns Human-readable string
|
|
36
|
+
*/
|
|
37
|
+
private humanizeSlug;
|
|
38
|
+
/**
|
|
39
|
+
* Validate frontmatter required fields
|
|
40
|
+
*/
|
|
41
|
+
private validateFrontmatter;
|
|
42
|
+
/**
|
|
43
|
+
* Generate table of contents from headings in the AST
|
|
44
|
+
*/
|
|
45
|
+
private generateTableOfContents;
|
|
46
|
+
/**
|
|
47
|
+
* Build hierarchical TOC structure from flat list of headings
|
|
48
|
+
*/
|
|
49
|
+
private buildTocHierarchy;
|
|
50
|
+
/**
|
|
51
|
+
* Walk the AST and call visitor function for each node
|
|
52
|
+
*/
|
|
53
|
+
private walkAST;
|
|
54
|
+
/**
|
|
55
|
+
* Extract text content from a node
|
|
56
|
+
*/
|
|
57
|
+
private extractTextFromNode;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a URL-friendly ID from heading text
|
|
60
|
+
*/
|
|
61
|
+
private generateHeadingId;
|
|
62
|
+
/**
|
|
63
|
+
* Calculate word count from AST
|
|
64
|
+
*/
|
|
65
|
+
private calculateWordCount;
|
|
66
|
+
/**
|
|
67
|
+
* Calculate estimated reading time in minutes
|
|
68
|
+
*/
|
|
69
|
+
private calculateReadingTime;
|
|
70
|
+
/**
|
|
71
|
+
* Ensure every heading tag in the renderable tree has a stable id
|
|
72
|
+
*/
|
|
73
|
+
private addHeadingAnchors;
|
|
74
|
+
/**
|
|
75
|
+
* Extract plain text from the renderable Markdoc tree
|
|
76
|
+
*/
|
|
77
|
+
private extractTextFromRenderable;
|
|
78
|
+
/**
|
|
79
|
+
* Get content metadata without processing full content (lightweight)
|
|
80
|
+
* Useful for generating content index
|
|
81
|
+
*/
|
|
82
|
+
getMetadataOnly(rawFile: RawContentFile): ContentMetadata;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ContentProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentProcessor.d.ts","sourceRoot":"","sources":["../../src/content/ContentProcessor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,gBAAgB,EAChB,eAAe,EAKhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,mBAAmB,CAAS;gBAExB,mBAAmB,GAAE,MAAY;IAI7C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB;IA2FlD;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE;IAY1D;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgD1B;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAkBjC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAUf;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe;CAsB1D"}
|