@shadow-shard-tools/docs-core 1.0.17 → 1.0.19
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 +85 -5
- package/dist/cjs/configs/clientConfig.js +78 -0
- package/dist/cjs/configs/codeLanguagesConfig.js +36 -0
- package/dist/cjs/configs/index.browser.js +16 -0
- package/dist/cjs/configs/index.js +20 -0
- package/dist/cjs/configs/sstDocsConfig.browser.js +27 -0
- package/dist/cjs/configs/sstDocsConfig.js +88 -0
- package/dist/cjs/configs/sstDocsConfigShared.js +232 -0
- package/dist/cjs/constants/alignmentClasses.js +17 -0
- package/dist/cjs/constants/index.js +7 -0
- package/dist/cjs/constants/spacingClasses.js +9 -0
- package/dist/cjs/data/buildTree.js +131 -0
- package/dist/cjs/data/fsDataProvider.browser.js +10 -0
- package/dist/cjs/data/fsDataProvider.js +23 -0
- package/dist/cjs/data/httpDataProvider.js +25 -0
- package/dist/cjs/data/index.browser.js +17 -0
- package/dist/cjs/data/index.js +22 -0
- package/dist/cjs/data/loadAllCategories.js +30 -0
- package/dist/cjs/data/loadAllItems.js +26 -0
- package/dist/cjs/data/loadVersionData.fs.js +29 -0
- package/dist/cjs/data/loadVersionData.js +78 -0
- package/dist/cjs/data/loadVersions.js +6 -0
- package/dist/cjs/index.browser.js +22 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/themes/index.js +15 -0
- package/dist/cjs/themes/presets/default.js +121 -0
- package/dist/cjs/themes/styleThemeSchema.js +36 -0
- package/dist/cjs/themes/themeRegistry.js +22 -0
- package/dist/cjs/types/AudioData.js +2 -0
- package/dist/cjs/types/BaseImage.js +2 -0
- package/dist/cjs/types/Category.js +2 -0
- package/dist/cjs/types/CategoryTitleData.js +2 -0
- package/dist/cjs/types/ChartData.js +2 -0
- package/dist/cjs/types/ClientVisibleSstDocsConfig.js +2 -0
- package/dist/cjs/types/CodeData.js +2 -0
- package/dist/cjs/types/Content.js +2 -0
- package/dist/cjs/types/DataDiagnostic.js +2 -0
- package/dist/cjs/types/DataProvider.js +2 -0
- package/dist/cjs/types/DividerData.js +2 -0
- package/dist/cjs/types/DocItem.js +2 -0
- package/dist/cjs/types/HeaderBranding.js +2 -0
- package/dist/cjs/types/HtmlGeneratorSettings.js +2 -0
- package/dist/cjs/types/ImageCarouselData.js +2 -0
- package/dist/cjs/types/ImageCompareData.js +2 -0
- package/dist/cjs/types/ImageData.js +2 -0
- package/dist/cjs/types/ImageGridData.js +2 -0
- package/dist/cjs/types/IndexJson.js +2 -0
- package/dist/cjs/types/ListData.js +2 -0
- package/dist/cjs/types/Logger.js +2 -0
- package/dist/cjs/types/MathData.js +2 -0
- package/dist/cjs/types/MessageBoxData.js +2 -0
- package/dist/cjs/types/RawCategory.js +2 -0
- package/dist/cjs/types/SstDocsConfig.js +2 -0
- package/dist/cjs/types/StyleTheme.js +2 -0
- package/dist/cjs/types/TableData.js +2 -0
- package/dist/cjs/types/TextData.js +2 -0
- package/dist/cjs/types/TitleData.js +2 -0
- package/dist/cjs/types/Version.js +2 -0
- package/dist/cjs/types/YoutubeData.js +2 -0
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/utilities/dom/copyToClipboard.js +40 -0
- package/dist/cjs/utilities/dom/downloadTextFile.js +23 -0
- package/dist/cjs/utilities/dom/getResponsiveWidth.js +11 -0
- package/dist/cjs/utilities/file/getFileExtension.js +9 -0
- package/dist/cjs/utilities/index.browser.js +53 -0
- package/dist/cjs/utilities/index.js +53 -0
- package/dist/cjs/utilities/path/pathExists.browser.js +6 -0
- package/dist/cjs/utilities/path/pathExists.js +16 -0
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveAgainstProjectRoot.js +13 -0
- package/dist/cjs/utilities/path/resolveDataPath.browser.js +6 -0
- package/dist/cjs/utilities/path/resolveDataPath.js +18 -0
- package/dist/cjs/utilities/string/extractYouTubeId.js +18 -0
- package/dist/cjs/utilities/string/normalizeBaseUrlPath.js +11 -0
- package/dist/cjs/utilities/string/normalizeSystemPath.js +14 -0
- package/dist/cjs/utilities/string/processListItems.js +10 -0
- package/dist/cjs/utilities/string/sanitizeFilename.js +13 -0
- package/dist/cjs/utilities/string/slugify.js +12 -0
- package/dist/cjs/utilities/string/withBasePath.js +73 -0
- package/dist/cjs/utilities/system/createTimeout.js +11 -0
- package/dist/cjs/utilities/system/formatTime.js +12 -0
- package/dist/cjs/utilities/system/logger.browser.js +39 -0
- package/dist/cjs/utilities/system/logger.js +60 -0
- package/dist/cjs/utilities/validation/isMobileDevice.js +8 -0
- package/dist/cjs/utilities/validation/isValidColor.js +182 -0
- package/dist/cjs/utilities/validation/isValidImageUrl.js +42 -0
- package/dist/cjs/utilities/validation/isValidYouTubeId.js +9 -0
- package/dist/cjs/utilities/validation/validateScale.js +8 -0
- package/dist/configs/clientConfig.d.ts.map +1 -1
- package/dist/configs/clientConfig.js +38 -24
- package/dist/configs/clientConfig.js.map +1 -1
- package/dist/configs/index.browser.d.ts +4 -0
- package/dist/configs/index.browser.d.ts.map +1 -0
- package/dist/configs/index.browser.js +4 -0
- package/dist/configs/index.browser.js.map +1 -0
- package/dist/configs/index.d.ts +1 -3
- package/dist/configs/index.d.ts.map +1 -1
- package/dist/configs/index.js +1 -3
- package/dist/configs/index.js.map +1 -1
- package/dist/configs/sstDocsConfig.browser.d.ts +8 -0
- package/dist/configs/sstDocsConfig.browser.d.ts.map +1 -0
- package/dist/configs/sstDocsConfig.browser.js +18 -0
- package/dist/configs/sstDocsConfig.browser.js.map +1 -0
- package/dist/configs/sstDocsConfig.d.ts +2 -2
- package/dist/configs/sstDocsConfig.d.ts.map +1 -1
- package/dist/configs/sstDocsConfig.js +18 -183
- package/dist/configs/sstDocsConfig.js.map +1 -1
- package/dist/configs/sstDocsConfigShared.d.ts +17 -0
- package/dist/configs/sstDocsConfigShared.d.ts.map +1 -0
- package/dist/configs/sstDocsConfigShared.js +226 -0
- package/dist/configs/sstDocsConfigShared.js.map +1 -0
- package/dist/data/buildTree.d.ts +6 -10
- package/dist/data/buildTree.d.ts.map +1 -1
- package/dist/data/buildTree.js +117 -162
- package/dist/data/buildTree.js.map +1 -1
- package/dist/data/fsDataProvider.browser.d.ts +6 -0
- package/dist/data/fsDataProvider.browser.d.ts.map +1 -0
- package/dist/data/fsDataProvider.browser.js +7 -0
- package/dist/data/fsDataProvider.browser.js.map +1 -0
- package/dist/data/fsDataProvider.d.ts +2 -1
- package/dist/data/fsDataProvider.d.ts.map +1 -1
- package/dist/data/fsDataProvider.js +15 -3
- package/dist/data/fsDataProvider.js.map +1 -1
- package/dist/data/httpDataProvider.d.ts +2 -1
- package/dist/data/httpDataProvider.d.ts.map +1 -1
- package/dist/data/httpDataProvider.js +17 -4
- package/dist/data/httpDataProvider.js.map +1 -1
- package/dist/data/index.browser.d.ts +7 -0
- package/dist/data/index.browser.d.ts.map +1 -0
- package/dist/data/index.browser.js +7 -0
- package/dist/data/index.browser.js.map +1 -0
- package/dist/data/index.d.ts +4 -3
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +4 -3
- package/dist/data/index.js.map +1 -1
- package/dist/data/loadAllCategories.d.ts +10 -1
- package/dist/data/loadAllCategories.d.ts.map +1 -1
- package/dist/data/loadAllCategories.js +15 -5
- package/dist/data/loadAllCategories.js.map +1 -1
- package/dist/data/loadAllItems.d.ts +10 -1
- package/dist/data/loadAllItems.d.ts.map +1 -1
- package/dist/data/loadAllItems.js +19 -7
- package/dist/data/loadAllItems.js.map +1 -1
- package/dist/data/loadVersionData.d.ts +22 -1
- package/dist/data/loadVersionData.d.ts.map +1 -1
- package/dist/data/loadVersionData.fs.d.ts +3 -0
- package/dist/data/loadVersionData.fs.d.ts.map +1 -0
- package/dist/data/loadVersionData.fs.js +24 -0
- package/dist/data/loadVersionData.fs.js.map +1 -0
- package/dist/data/loadVersionData.js +67 -7
- package/dist/data/loadVersionData.js.map +1 -1
- package/dist/index.browser.d.ts +7 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +7 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/themes/index.d.ts +2 -2
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/index.js +2 -2
- package/dist/themes/index.js.map +1 -1
- package/dist/themes/presets/default.d.ts +3 -0
- package/dist/themes/presets/default.d.ts.map +1 -0
- package/dist/themes/presets/default.js +119 -0
- package/dist/themes/presets/default.js.map +1 -0
- package/dist/themes/styleThemeSchema.d.ts +6 -0
- package/dist/themes/styleThemeSchema.d.ts.map +1 -0
- package/dist/themes/styleThemeSchema.js +32 -0
- package/dist/themes/styleThemeSchema.js.map +1 -0
- package/dist/themes/themeRegistry.d.ts +3 -4
- package/dist/themes/themeRegistry.d.ts.map +1 -1
- package/dist/themes/themeRegistry.js +11 -11
- package/dist/themes/themeRegistry.js.map +1 -1
- package/dist/types/Content.d.ts +35 -18
- package/dist/types/Content.d.ts.map +1 -1
- package/dist/types/DataDiagnostic.d.ts +8 -0
- package/dist/types/DataDiagnostic.d.ts.map +1 -0
- package/dist/types/DataDiagnostic.js +2 -0
- package/dist/types/DataDiagnostic.js.map +1 -0
- package/dist/types/HtmlGeneratorSettings.d.ts +3 -11
- package/dist/types/HtmlGeneratorSettings.d.ts.map +1 -1
- package/dist/types/StyleTheme.d.ts +115 -131
- package/dist/types/StyleTheme.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utilities/index.browser.d.ts +23 -0
- package/dist/utilities/index.browser.d.ts.map +1 -0
- package/dist/utilities/index.browser.js +29 -0
- package/dist/utilities/index.browser.js.map +1 -0
- package/dist/utilities/path/pathExists.browser.d.ts +2 -0
- package/dist/utilities/path/pathExists.browser.d.ts.map +1 -0
- package/dist/utilities/path/pathExists.browser.js +4 -0
- package/dist/utilities/path/pathExists.browser.js.map +1 -0
- package/dist/utilities/path/pathExists.js +1 -1
- package/dist/utilities/path/pathExists.js.map +1 -1
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts +2 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.d.ts.map +1 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.js +4 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.browser.js.map +1 -0
- package/dist/utilities/path/resolveAgainstProjectRoot.d.ts.map +1 -1
- package/dist/utilities/path/resolveAgainstProjectRoot.js.map +1 -1
- package/dist/utilities/path/resolveDataPath.browser.d.ts +2 -0
- package/dist/utilities/path/resolveDataPath.browser.d.ts.map +1 -0
- package/dist/utilities/path/resolveDataPath.browser.js +4 -0
- package/dist/utilities/path/resolveDataPath.browser.js.map +1 -0
- package/dist/utilities/path/resolveDataPath.d.ts.map +1 -1
- package/dist/utilities/path/resolveDataPath.js +1 -1
- package/dist/utilities/path/resolveDataPath.js.map +1 -1
- package/dist/utilities/string/normalizeSystemPath.d.ts.map +1 -1
- package/dist/utilities/string/normalizeSystemPath.js +9 -1
- package/dist/utilities/string/normalizeSystemPath.js.map +1 -1
- package/dist/utilities/string/withBasePath.d.ts.map +1 -1
- package/dist/utilities/string/withBasePath.js +66 -6
- package/dist/utilities/string/withBasePath.js.map +1 -1
- package/dist/utilities/system/logger.browser.d.ts +3 -0
- package/dist/utilities/system/logger.browser.d.ts.map +1 -0
- package/dist/utilities/system/logger.browser.js +36 -0
- package/dist/utilities/system/logger.browser.js.map +1 -0
- package/dist/utilities/system/logger.d.ts.map +1 -1
- package/dist/utilities/system/logger.js +26 -6
- package/dist/utilities/system/logger.js.map +1 -1
- package/package.json +313 -160
- package/dist/browser/serverOnly.d.ts +0 -15
- package/dist/browser/serverOnly.d.ts.map +0 -1
- package/dist/browser/serverOnly.js +0 -33
- package/dist/browser/serverOnly.js.map +0 -1
- package/dist/browser.d.ts +0 -38
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js +0 -45
- package/dist/browser.js.map +0 -1
- package/dist/configs/sstDocsConfig.shared.d.ts +0 -8
- package/dist/configs/sstDocsConfig.shared.d.ts.map +0 -1
- package/dist/configs/sstDocsConfig.shared.js +0 -86
- package/dist/configs/sstDocsConfig.shared.js.map +0 -1
- package/dist/configs/stylesConfig.d.ts +0 -3
- package/dist/configs/stylesConfig.d.ts.map +0 -1
- package/dist/configs/stylesConfig.js +0 -8
- package/dist/configs/stylesConfig.js.map +0 -1
- package/dist/styles/themes.css +0 -1
- package/dist/styles/themes.css.map +0 -1
- package/dist/themes/baseThemeClasses.d.ts +0 -106
- package/dist/themes/baseThemeClasses.d.ts.map +0 -1
- package/dist/themes/baseThemeClasses.js +0 -106
- package/dist/themes/baseThemeClasses.js.map +0 -1
- package/dist/themes/darkTheme.d.ts +0 -3
- package/dist/themes/darkTheme.d.ts.map +0 -1
- package/dist/themes/darkTheme.js +0 -42
- package/dist/themes/darkTheme.js.map +0 -1
- package/dist/themes/lightTheme.d.ts +0 -3
- package/dist/themes/lightTheme.d.ts.map +0 -1
- package/dist/themes/lightTheme.js +0 -42
- package/dist/themes/lightTheme.js.map +0 -1
- package/dist/types/StylesConfig.d.ts +0 -8
- package/dist/types/StylesConfig.d.ts.map +0 -1
- package/dist/types/StylesConfig.js +0 -2
- package/dist/types/StylesConfig.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildTree = buildTree;
|
|
4
|
+
const logger_js_1 = require("../utilities/system/logger.js");
|
|
5
|
+
function convertCategory(raw, rawMap, docLookup, usedDocIds, included, visiting, diagnostics, logger) {
|
|
6
|
+
if (visiting.has(raw.id)) {
|
|
7
|
+
const message = `Detected circular category reference at ${raw.id}.`;
|
|
8
|
+
diagnostics.push({
|
|
9
|
+
code: "circular-category",
|
|
10
|
+
level: "warn",
|
|
11
|
+
message,
|
|
12
|
+
context: { categoryId: raw.id },
|
|
13
|
+
});
|
|
14
|
+
logger.warn(message);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
visiting.add(raw.id);
|
|
18
|
+
let docs;
|
|
19
|
+
const docIds = Array.isArray(raw.docs) ? raw.docs : [];
|
|
20
|
+
if (docIds.length > 0) {
|
|
21
|
+
const validDocs = docIds
|
|
22
|
+
.map((rawId) => {
|
|
23
|
+
if (typeof rawId !== "string" || rawId.length === 0) {
|
|
24
|
+
const message = `Invalid doc id in category ${raw.id}.`;
|
|
25
|
+
diagnostics.push({
|
|
26
|
+
code: "invalid-doc-ref",
|
|
27
|
+
level: "warn",
|
|
28
|
+
message,
|
|
29
|
+
context: { categoryId: raw.id, docId: rawId },
|
|
30
|
+
});
|
|
31
|
+
logger.warn(message);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const doc = docLookup.get(rawId);
|
|
35
|
+
if (!doc) {
|
|
36
|
+
const message = `Doc id ${rawId} referenced in category ${raw.id} not found.`;
|
|
37
|
+
diagnostics.push({
|
|
38
|
+
code: "missing-doc-ref",
|
|
39
|
+
level: "warn",
|
|
40
|
+
message,
|
|
41
|
+
context: { categoryId: raw.id, docId: rawId },
|
|
42
|
+
});
|
|
43
|
+
logger.warn(message);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
usedDocIds.add(rawId);
|
|
47
|
+
return doc;
|
|
48
|
+
})
|
|
49
|
+
.filter((doc) => doc !== null);
|
|
50
|
+
if (validDocs.length > 0) {
|
|
51
|
+
docs = validDocs;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let children;
|
|
55
|
+
const childIds = Array.isArray(raw.children) ? raw.children : [];
|
|
56
|
+
if (childIds.length > 0) {
|
|
57
|
+
const validChildren = childIds
|
|
58
|
+
.map((rawChildId) => {
|
|
59
|
+
if (typeof rawChildId !== "string" || rawChildId.length === 0) {
|
|
60
|
+
const message = `Invalid child category id in ${raw.id}.`;
|
|
61
|
+
diagnostics.push({
|
|
62
|
+
code: "invalid-child-ref",
|
|
63
|
+
level: "warn",
|
|
64
|
+
message,
|
|
65
|
+
context: { categoryId: raw.id, childId: rawChildId },
|
|
66
|
+
});
|
|
67
|
+
logger.warn(message);
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const childRaw = rawMap[rawChildId];
|
|
71
|
+
if (!childRaw) {
|
|
72
|
+
const message = `Child category ${rawChildId} referenced in ${raw.id} not found.`;
|
|
73
|
+
diagnostics.push({
|
|
74
|
+
code: "missing-child-ref",
|
|
75
|
+
level: "warn",
|
|
76
|
+
message,
|
|
77
|
+
context: { categoryId: raw.id, childId: rawChildId },
|
|
78
|
+
});
|
|
79
|
+
logger.warn(message);
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return convertCategory(childRaw, rawMap, docLookup, usedDocIds, included, visiting, diagnostics, logger);
|
|
83
|
+
})
|
|
84
|
+
.filter((child) => child !== null);
|
|
85
|
+
if (validChildren.length > 0) {
|
|
86
|
+
children = validChildren;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
visiting.delete(raw.id);
|
|
90
|
+
included.add(raw.id);
|
|
91
|
+
return {
|
|
92
|
+
id: raw.id,
|
|
93
|
+
title: raw.title,
|
|
94
|
+
description: raw.description,
|
|
95
|
+
content: raw.content ?? [],
|
|
96
|
+
docs,
|
|
97
|
+
children,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function buildTree(rawMap, allDocs, options) {
|
|
101
|
+
const docLookup = new Map(allDocs.map((d) => [d.id, d]));
|
|
102
|
+
const usedDocIds = new Set();
|
|
103
|
+
const includedIds = new Set();
|
|
104
|
+
const diagnostics = [];
|
|
105
|
+
const logger = options?.logger ?? (0, logger_js_1.createLogger)("data:buildTree");
|
|
106
|
+
const childCategoryIds = new Set();
|
|
107
|
+
Object.values(rawMap).forEach((category) => {
|
|
108
|
+
if (Array.isArray(category?.children)) {
|
|
109
|
+
category.children.forEach((childId) => {
|
|
110
|
+
if (typeof childId === "string" && childId.length > 0) {
|
|
111
|
+
childCategoryIds.add(childId);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
let rootCandidates = Object.values(rawMap).filter((category) => category &&
|
|
117
|
+
typeof category.id === "string" &&
|
|
118
|
+
category.id.length > 0 &&
|
|
119
|
+
!childCategoryIds.has(category.id));
|
|
120
|
+
if (rootCandidates.length === 0) {
|
|
121
|
+
rootCandidates = Object.values(rawMap).filter((category) => category && typeof category.id === "string" && category.id.length > 0);
|
|
122
|
+
}
|
|
123
|
+
const tree = rootCandidates
|
|
124
|
+
.map((rootCategory) => {
|
|
125
|
+
if (includedIds.has(rootCategory.id))
|
|
126
|
+
return null;
|
|
127
|
+
return convertCategory(rootCategory, rawMap, docLookup, usedDocIds, includedIds, new Set(), diagnostics, logger);
|
|
128
|
+
})
|
|
129
|
+
.filter((category) => category !== null);
|
|
130
|
+
return { tree, usedDocIds, diagnostics };
|
|
131
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fsDataProvider = exports.FsDataProvider = void 0;
|
|
4
|
+
class FsDataProvider {
|
|
5
|
+
async readJson(_absPath) {
|
|
6
|
+
throw new Error("FsDataProvider is only available in Node.js environments where the file system can be read.");
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.FsDataProvider = FsDataProvider;
|
|
10
|
+
exports.fsDataProvider = FsDataProvider;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fsDataProvider = exports.FsDataProvider = void 0;
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
class FsDataProvider {
|
|
6
|
+
async readJson(absPath) {
|
|
7
|
+
let contents;
|
|
8
|
+
try {
|
|
9
|
+
contents = await (0, promises_1.readFile)(absPath, "utf8");
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
throw new Error(`Failed to read JSON from ${absPath}: ${error.message}`);
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(contents);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
throw new Error(`Failed to parse JSON from ${absPath}: ${error.message}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.FsDataProvider = FsDataProvider;
|
|
23
|
+
exports.fsDataProvider = FsDataProvider;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.httpDataProvider = exports.HttpDataProvider = void 0;
|
|
4
|
+
class HttpDataProvider {
|
|
5
|
+
async readJson(absUrl) {
|
|
6
|
+
let res;
|
|
7
|
+
try {
|
|
8
|
+
res = await fetch(absUrl);
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
throw new Error(`Failed to fetch ${absUrl}: ${error.message}`);
|
|
12
|
+
}
|
|
13
|
+
if (!res.ok) {
|
|
14
|
+
throw new Error(`Failed to fetch ${absUrl}: ${res.status} ${res.statusText}`);
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
return (await res.json());
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
throw new Error(`Failed to parse JSON from ${absUrl}: ${error.message}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.HttpDataProvider = HttpDataProvider;
|
|
25
|
+
exports.httpDataProvider = HttpDataProvider;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.httpDataProvider = exports.HttpDataProvider = exports.loadVersions = exports.loadVersionDataFromHttp = exports.loadVersionData = exports.loadAllItems = exports.loadAllCategories = exports.buildTree = void 0;
|
|
4
|
+
var buildTree_js_1 = require("./buildTree.js");
|
|
5
|
+
Object.defineProperty(exports, "buildTree", { enumerable: true, get: function () { return buildTree_js_1.buildTree; } });
|
|
6
|
+
var loadAllCategories_js_1 = require("./loadAllCategories.js");
|
|
7
|
+
Object.defineProperty(exports, "loadAllCategories", { enumerable: true, get: function () { return loadAllCategories_js_1.loadAllCategories; } });
|
|
8
|
+
var loadAllItems_js_1 = require("./loadAllItems.js");
|
|
9
|
+
Object.defineProperty(exports, "loadAllItems", { enumerable: true, get: function () { return loadAllItems_js_1.loadAllItems; } });
|
|
10
|
+
var loadVersionData_js_1 = require("./loadVersionData.js");
|
|
11
|
+
Object.defineProperty(exports, "loadVersionData", { enumerable: true, get: function () { return loadVersionData_js_1.loadVersionData; } });
|
|
12
|
+
Object.defineProperty(exports, "loadVersionDataFromHttp", { enumerable: true, get: function () { return loadVersionData_js_1.loadVersionDataFromHttp; } });
|
|
13
|
+
var loadVersions_js_1 = require("./loadVersions.js");
|
|
14
|
+
Object.defineProperty(exports, "loadVersions", { enumerable: true, get: function () { return loadVersions_js_1.loadVersions; } });
|
|
15
|
+
var httpDataProvider_js_1 = require("./httpDataProvider.js");
|
|
16
|
+
Object.defineProperty(exports, "HttpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.HttpDataProvider; } });
|
|
17
|
+
Object.defineProperty(exports, "httpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.httpDataProvider; } });
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.httpDataProvider = exports.HttpDataProvider = exports.fsDataProvider = exports.FsDataProvider = exports.loadVersions = exports.loadVersionDataFromFs = exports.loadVersionDataFromHttp = exports.loadVersionData = exports.loadAllItems = exports.loadAllCategories = exports.buildTree = void 0;
|
|
4
|
+
var buildTree_js_1 = require("./buildTree.js");
|
|
5
|
+
Object.defineProperty(exports, "buildTree", { enumerable: true, get: function () { return buildTree_js_1.buildTree; } });
|
|
6
|
+
var loadAllCategories_js_1 = require("./loadAllCategories.js");
|
|
7
|
+
Object.defineProperty(exports, "loadAllCategories", { enumerable: true, get: function () { return loadAllCategories_js_1.loadAllCategories; } });
|
|
8
|
+
var loadAllItems_js_1 = require("./loadAllItems.js");
|
|
9
|
+
Object.defineProperty(exports, "loadAllItems", { enumerable: true, get: function () { return loadAllItems_js_1.loadAllItems; } });
|
|
10
|
+
var loadVersionData_js_1 = require("./loadVersionData.js");
|
|
11
|
+
Object.defineProperty(exports, "loadVersionData", { enumerable: true, get: function () { return loadVersionData_js_1.loadVersionData; } });
|
|
12
|
+
Object.defineProperty(exports, "loadVersionDataFromHttp", { enumerable: true, get: function () { return loadVersionData_js_1.loadVersionDataFromHttp; } });
|
|
13
|
+
var loadVersionData_fs_js_1 = require("./loadVersionData.fs.js");
|
|
14
|
+
Object.defineProperty(exports, "loadVersionDataFromFs", { enumerable: true, get: function () { return loadVersionData_fs_js_1.loadVersionDataFromFs; } });
|
|
15
|
+
var loadVersions_js_1 = require("./loadVersions.js");
|
|
16
|
+
Object.defineProperty(exports, "loadVersions", { enumerable: true, get: function () { return loadVersions_js_1.loadVersions; } });
|
|
17
|
+
var fsDataProvider_js_1 = require("./fsDataProvider.js");
|
|
18
|
+
Object.defineProperty(exports, "FsDataProvider", { enumerable: true, get: function () { return fsDataProvider_js_1.FsDataProvider; } });
|
|
19
|
+
Object.defineProperty(exports, "fsDataProvider", { enumerable: true, get: function () { return fsDataProvider_js_1.fsDataProvider; } });
|
|
20
|
+
var httpDataProvider_js_1 = require("./httpDataProvider.js");
|
|
21
|
+
Object.defineProperty(exports, "HttpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.HttpDataProvider; } });
|
|
22
|
+
Object.defineProperty(exports, "httpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.httpDataProvider; } });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAllCategories = loadAllCategories;
|
|
4
|
+
const logger_js_1 = require("../utilities/system/logger.js");
|
|
5
|
+
async function loadAllCategories(provider, versionRootAbs, ids, options) {
|
|
6
|
+
const diagnostics = [];
|
|
7
|
+
const logger = options?.logger ?? (0, logger_js_1.createLogger)("data:loadAllCategories");
|
|
8
|
+
const results = await Promise.allSettled(ids.map(async (id) => {
|
|
9
|
+
const p = `${versionRootAbs}/categories/${id}.json`;
|
|
10
|
+
const data = await provider.readJson(p);
|
|
11
|
+
return { id, data };
|
|
12
|
+
}));
|
|
13
|
+
const categories = {};
|
|
14
|
+
results.forEach((res, i) => {
|
|
15
|
+
if (res.status === "fulfilled") {
|
|
16
|
+
categories[res.value.id] = res.value.data;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
const message = `Failed to load category ${ids[i]}: ${res.reason.message ?? res.reason}`;
|
|
20
|
+
diagnostics.push({
|
|
21
|
+
code: "category-read-failed",
|
|
22
|
+
level: "warn",
|
|
23
|
+
message,
|
|
24
|
+
context: { id: ids[i] },
|
|
25
|
+
});
|
|
26
|
+
logger.warn(message);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return { categories, diagnostics };
|
|
30
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAllItems = loadAllItems;
|
|
4
|
+
const logger_js_1 = require("../utilities/system/logger.js");
|
|
5
|
+
async function loadAllItems(provider, versionRootAbs, ids, options) {
|
|
6
|
+
const diagnostics = [];
|
|
7
|
+
const logger = options?.logger ?? (0, logger_js_1.createLogger)("data:loadAllItems");
|
|
8
|
+
const results = await Promise.allSettled(ids.map((id) => provider.readJson(`${versionRootAbs}/items/${id}.json`)));
|
|
9
|
+
const items = [];
|
|
10
|
+
results.forEach((res, i) => {
|
|
11
|
+
if (res.status === "fulfilled") {
|
|
12
|
+
items.push(res.value);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const message = `Failed to load item ${ids[i]}: ${res.reason.message ?? res.reason}`;
|
|
16
|
+
diagnostics.push({
|
|
17
|
+
code: "item-read-failed",
|
|
18
|
+
level: "warn",
|
|
19
|
+
message,
|
|
20
|
+
context: { id: ids[i] },
|
|
21
|
+
});
|
|
22
|
+
logger.warn(message);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return { items, diagnostics };
|
|
26
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
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.loadVersionDataFromFs = loadVersionDataFromFs;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const normalizeSystemPath_js_1 = require("../utilities/string/normalizeSystemPath.js");
|
|
9
|
+
const logger_js_1 = require("../utilities/system/logger.js");
|
|
10
|
+
const fsDataProvider_js_1 = require("./fsDataProvider.js");
|
|
11
|
+
const loadVersionData_js_1 = require("./loadVersionData.js");
|
|
12
|
+
async function loadVersionDataFromFs(baseDir, options) {
|
|
13
|
+
const logger = options?.logger ?? (0, logger_js_1.createLogger)("data:loadVersionDataFromFs");
|
|
14
|
+
const provider = new fsDataProvider_js_1.FsDataProvider();
|
|
15
|
+
const diagnostics = [];
|
|
16
|
+
const root = (0, normalizeSystemPath_js_1.normalizeSystemPath)(node_path_1.default.resolve(baseDir));
|
|
17
|
+
const { versions, selectedVersion, diagnostics: versionDiagnostics, } = await (0, loadVersionData_js_1.selectVersion)(provider, root, options?.version, logger);
|
|
18
|
+
const versionRoot = (0, normalizeSystemPath_js_1.normalizeSystemPath)(node_path_1.default.resolve(root, selectedVersion));
|
|
19
|
+
const { items, tree, standaloneDocs, diagnostics: loadDiagnostics } = await (0, loadVersionData_js_1.loadVersionData)(provider, versionRoot, { logger });
|
|
20
|
+
diagnostics.push(...versionDiagnostics, ...loadDiagnostics);
|
|
21
|
+
return {
|
|
22
|
+
version: selectedVersion,
|
|
23
|
+
versions,
|
|
24
|
+
items,
|
|
25
|
+
tree,
|
|
26
|
+
standaloneDocs,
|
|
27
|
+
diagnostics,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadVersionData = loadVersionData;
|
|
4
|
+
exports.loadVersionDataFromHttp = loadVersionDataFromHttp;
|
|
5
|
+
exports.selectVersion = selectVersion;
|
|
6
|
+
const logger_js_1 = require("../utilities/system/logger.js");
|
|
7
|
+
const httpDataProvider_js_1 = require("./httpDataProvider.js");
|
|
8
|
+
const buildTree_js_1 = require("./buildTree.js");
|
|
9
|
+
const loadAllCategories_js_1 = require("./loadAllCategories.js");
|
|
10
|
+
const loadAllItems_js_1 = require("./loadAllItems.js");
|
|
11
|
+
const loadVersions_js_1 = require("./loadVersions.js");
|
|
12
|
+
async function loadVersionData(provider, versionRootAbs, options) {
|
|
13
|
+
const logger = options?.logger;
|
|
14
|
+
const diagnostics = [];
|
|
15
|
+
const index = await provider.readJson(`${versionRootAbs}/index.json`);
|
|
16
|
+
const [categoriesResult, itemsResult] = await Promise.all([
|
|
17
|
+
(0, loadAllCategories_js_1.loadAllCategories)(provider, versionRootAbs, index.categories, { logger }),
|
|
18
|
+
(0, loadAllItems_js_1.loadAllItems)(provider, versionRootAbs, index.items, { logger }),
|
|
19
|
+
]);
|
|
20
|
+
const { tree, usedDocIds, diagnostics: treeDiagnostics } = (0, buildTree_js_1.buildTree)(categoriesResult.categories, itemsResult.items, { logger });
|
|
21
|
+
const standaloneDocs = itemsResult.items.filter((d) => !usedDocIds.has(d.id));
|
|
22
|
+
diagnostics.push(...categoriesResult.diagnostics, ...itemsResult.diagnostics, ...treeDiagnostics);
|
|
23
|
+
return { items: itemsResult.items, tree, standaloneDocs, diagnostics };
|
|
24
|
+
}
|
|
25
|
+
async function loadVersionDataFromHttp(baseUrl, options) {
|
|
26
|
+
const logger = options?.logger ?? (0, logger_js_1.createLogger)("data:loadVersionDataFromHttp");
|
|
27
|
+
const provider = new httpDataProvider_js_1.HttpDataProvider();
|
|
28
|
+
const root = trimTrailingSlash(baseUrl);
|
|
29
|
+
const { versions, selectedVersion, diagnostics: versionDiagnostics, } = await selectVersion(provider, root, options?.version, logger);
|
|
30
|
+
const versionRoot = joinUrl(root, selectedVersion);
|
|
31
|
+
const { items, tree, standaloneDocs, diagnostics } = await loadVersionData(provider, versionRoot, { logger });
|
|
32
|
+
return {
|
|
33
|
+
version: selectedVersion,
|
|
34
|
+
versions,
|
|
35
|
+
items,
|
|
36
|
+
tree,
|
|
37
|
+
standaloneDocs,
|
|
38
|
+
diagnostics: [...versionDiagnostics, ...diagnostics],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function selectVersion(provider, root, requested, logger) {
|
|
42
|
+
const versions = await (0, loadVersions_js_1.loadVersions)(provider, root);
|
|
43
|
+
const diagnostics = [];
|
|
44
|
+
const fallback = "current";
|
|
45
|
+
if (versions.length === 0) {
|
|
46
|
+
const message = `No versions found under ${root}. Falling back to "${fallback}".`;
|
|
47
|
+
diagnostics.push({
|
|
48
|
+
code: "no-versions-found",
|
|
49
|
+
level: "warn",
|
|
50
|
+
message,
|
|
51
|
+
context: { root },
|
|
52
|
+
});
|
|
53
|
+
logger.warn(message);
|
|
54
|
+
return { versions, selectedVersion: requested ?? fallback, diagnostics };
|
|
55
|
+
}
|
|
56
|
+
if (requested) {
|
|
57
|
+
const match = versions.find((v) => v.version === requested);
|
|
58
|
+
if (!match) {
|
|
59
|
+
const message = `Requested version "${requested}" not found. Using first available: "${versions[0].version}".`;
|
|
60
|
+
diagnostics.push({
|
|
61
|
+
code: "version-not-found",
|
|
62
|
+
level: "warn",
|
|
63
|
+
message,
|
|
64
|
+
context: { requested, available: versions.map((v) => v.version) },
|
|
65
|
+
});
|
|
66
|
+
logger.warn(message);
|
|
67
|
+
return { versions, selectedVersion: versions[0].version, diagnostics };
|
|
68
|
+
}
|
|
69
|
+
return { versions, selectedVersion: requested, diagnostics };
|
|
70
|
+
}
|
|
71
|
+
return { versions, selectedVersion: versions[0].version, diagnostics };
|
|
72
|
+
}
|
|
73
|
+
function trimTrailingSlash(value) {
|
|
74
|
+
return value.replace(/\/+$/, "");
|
|
75
|
+
}
|
|
76
|
+
function joinUrl(base, child) {
|
|
77
|
+
return `${trimTrailingSlash(base)}/${child.replace(/^\/+/, "")}`;
|
|
78
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./configs/index.browser.js"), exports);
|
|
18
|
+
__exportStar(require("./constants/index.js"), exports);
|
|
19
|
+
__exportStar(require("./themes/index.js"), exports);
|
|
20
|
+
__exportStar(require("./types/index.js"), exports);
|
|
21
|
+
__exportStar(require("./data/index.browser.js"), exports);
|
|
22
|
+
__exportStar(require("./utilities/index.browser.js"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./configs/index.js"), exports);
|
|
18
|
+
__exportStar(require("./constants/index.js"), exports);
|
|
19
|
+
__exportStar(require("./themes/index.js"), exports);
|
|
20
|
+
__exportStar(require("./types/index.js"), exports);
|
|
21
|
+
__exportStar(require("./data/index.js"), exports);
|
|
22
|
+
__exportStar(require("./utilities/index.js"), exports);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.styleThemeSchema = exports.parseStyleTheme = exports.isStyleTheme = exports.isThemePresetName = exports.getThemePreset = exports.DOCS_CORE_THEME_PRESETS = exports.DEFAULT_THEME_PRESET = exports.AVAILABLE_THEME_PRESET_NAMES = exports.defaultTheme = void 0;
|
|
4
|
+
var default_js_1 = require("./presets/default.js");
|
|
5
|
+
Object.defineProperty(exports, "defaultTheme", { enumerable: true, get: function () { return default_js_1.defaultTheme; } });
|
|
6
|
+
var themeRegistry_js_1 = require("./themeRegistry.js");
|
|
7
|
+
Object.defineProperty(exports, "AVAILABLE_THEME_PRESET_NAMES", { enumerable: true, get: function () { return themeRegistry_js_1.AVAILABLE_THEME_PRESET_NAMES; } });
|
|
8
|
+
Object.defineProperty(exports, "DEFAULT_THEME_PRESET", { enumerable: true, get: function () { return themeRegistry_js_1.DEFAULT_THEME_PRESET; } });
|
|
9
|
+
Object.defineProperty(exports, "DOCS_CORE_THEME_PRESETS", { enumerable: true, get: function () { return themeRegistry_js_1.DOCS_CORE_THEME_PRESETS; } });
|
|
10
|
+
Object.defineProperty(exports, "getThemePreset", { enumerable: true, get: function () { return themeRegistry_js_1.getThemePreset; } });
|
|
11
|
+
Object.defineProperty(exports, "isThemePresetName", { enumerable: true, get: function () { return themeRegistry_js_1.isThemePresetName; } });
|
|
12
|
+
var styleThemeSchema_js_1 = require("./styleThemeSchema.js");
|
|
13
|
+
Object.defineProperty(exports, "isStyleTheme", { enumerable: true, get: function () { return styleThemeSchema_js_1.isStyleTheme; } });
|
|
14
|
+
Object.defineProperty(exports, "parseStyleTheme", { enumerable: true, get: function () { return styleThemeSchema_js_1.parseStyleTheme; } });
|
|
15
|
+
Object.defineProperty(exports, "styleThemeSchema", { enumerable: true, get: function () { return styleThemeSchema_js_1.styleThemeSchema; } });
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultTheme = void 0;
|
|
4
|
+
exports.defaultTheme = {
|
|
5
|
+
header: {
|
|
6
|
+
mobileNavigationToggle: "text-stone-500 hover:text-stone-700 dark:text-gray-500 dark:hover:text-gray-700",
|
|
7
|
+
mobileMenuToggle: "text-stone-500 hover:text-stone-700 dark:text-gray-500 dark:hover:text-gray-700",
|
|
8
|
+
},
|
|
9
|
+
category: {
|
|
10
|
+
empty: "text-gray-500 text-center",
|
|
11
|
+
cardBody: "rounded-xl text-left transition-colors bg-stone-200 border border-stone-400 hover:bg-stone-300 dark:bg-indigo-900/50 dark:border-indigo-800 dark:hover:bg-indigo-700/70",
|
|
12
|
+
cardHeaderText: "text-lg font-semibold mb-1 text-stone-700 dark:text-gray-50",
|
|
13
|
+
cardDescriptionText: "text-sm line-clamp-3 text-gray-600 dark:text-indigo-400",
|
|
14
|
+
},
|
|
15
|
+
navigation: {
|
|
16
|
+
row: "leading-tight focus:outline-none text-gray-900 dark:text-gray-50",
|
|
17
|
+
rowActive: "font-semibold transition-colors border-l-2 text-stone-700 bg-stone-200 border-stone-500 dark:text-gray-50 dark:bg-indigo-900/60 dark:border-white",
|
|
18
|
+
rowFocused: "ring-2 ring-stone-500 dark:ring-indigo-600",
|
|
19
|
+
rowHover: "transition-colors hover:text-stone-500 dark:hover:text-indigo-500",
|
|
20
|
+
hideOrShowHintsText: "text-stone-600 hover:underline focus:outline-none dark:text-indigo-500",
|
|
21
|
+
},
|
|
22
|
+
searchModal: {
|
|
23
|
+
resultBackground: "bg-stone-100 dark:bg-zinc-900",
|
|
24
|
+
resultEmptyInputText: "text-sm text-center text-gray-400",
|
|
25
|
+
resultNoResultText: "text-sm text-center text-gray-400",
|
|
26
|
+
header: "bg-white dark:bg-zinc-900 text-gray-800 dark:text-gray-400",
|
|
27
|
+
footer: "bg-white dark:bg-zinc-900",
|
|
28
|
+
borders: "border-gray-800 dark:border-gray-500",
|
|
29
|
+
item: "border-b border-stone-300 hover:bg-stone-300/70 dark:border-indigo-400/30 dark:hover:bg-indigo-900/80",
|
|
30
|
+
selectedItem: "border-b border-stone-300 bg-stone-300 hover:bg-stone-300/70 dark:border-indigo-400/30 dark:bg-indigo-900/60 dark:hover:bg-indigo-900/80",
|
|
31
|
+
itemHeaderText: "font-bold text-stone-600 dark:text-indigo-400",
|
|
32
|
+
itemFoundSectionText: "text-xs mt-1 line-clamp-2 text-gray-700 dark:text-gray-300",
|
|
33
|
+
itemTags: "bg-stone-400 rounded-full text-[11px] text-gray-50 mt-0.5 italic truncate dark:bg-indigo-400/40 dark:text-gray-100",
|
|
34
|
+
},
|
|
35
|
+
sections: {
|
|
36
|
+
siteBackground: "bg-stone-400 dark:bg-slate-950",
|
|
37
|
+
siteBorders: "border-x border-stone-600 dark:border-gray-700",
|
|
38
|
+
headerBackground: "bg-stone-50 shadow-sm border-b border-stone-400 dark:bg-zinc-900 dark:border-gray-700",
|
|
39
|
+
headerMobileBackground: "bg-stone-50 border-b border-stone-400 shadow-md dark:bg-zinc-900 dark:border-gray-700",
|
|
40
|
+
sidebarBackground: "bg-stone-50 border-r border-stone-400 dark:bg-zinc-900 dark:border-gray-700",
|
|
41
|
+
documentHeaderBackground: "bg-stone-200 border-b border-stone-400 dark:bg-indigo-900/60 dark:border-gray-700",
|
|
42
|
+
contentBackground: "bg-gray-100 dark:bg-zinc-900",
|
|
43
|
+
},
|
|
44
|
+
input: "text-sm text-stone-700 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 dark:text-gray-400 dark:border-gray-600",
|
|
45
|
+
text: {
|
|
46
|
+
logoText: "text-xl font-semibold text-gray-900 dark:text-gray-50",
|
|
47
|
+
documentTitle: "text-2xl font-bold leading-tight text-stone-600 dark:text-gray-300",
|
|
48
|
+
breadcrumb: "text-sm text-stone-500 dark:text-gray-400",
|
|
49
|
+
titleLevel1: "text-3xl font-bold text-stone-600 mb-3 mt-8 first:mt-0 dark:text-indigo-400",
|
|
50
|
+
titleLevel2: "text-2xl font-semibold text-gray-800 mb-4 mt-8 first:mt-0 dark:text-gray-100",
|
|
51
|
+
titleLevel3: "text-xl font-medium text-gray-700 mb-3 mt-6 first:mt-0 dark:text-gray-200",
|
|
52
|
+
titleAnchor: "text-stone-400 hover:text-blue-500 dark:text-gray-400",
|
|
53
|
+
general: "text-base text-gray-700 mb-2 leading-relaxed dark:text-gray-300",
|
|
54
|
+
alternative: "text-sm text-center italic text-gray-400 mt-2",
|
|
55
|
+
list: "list-inside text-gray-700 mb-2 space-y-1 dark:text-gray-300",
|
|
56
|
+
math: "text-lg text-gray-800 dark:text-gray-200",
|
|
57
|
+
},
|
|
58
|
+
hints: {
|
|
59
|
+
text: "text-xs text-stone-500 dark:text-gray-400",
|
|
60
|
+
key: "text-xs text-stone-500 border border-stone-400 rounded dark:text-gray-400 dark:border-gray-600",
|
|
61
|
+
},
|
|
62
|
+
divider: {
|
|
63
|
+
border: "border-stone-400 dark:border-gray-500",
|
|
64
|
+
gradient: "from-transparent via-stone-400 to-transparent dark:via-gray-500",
|
|
65
|
+
text: "text-sm text-stone-400 dark:text-gray-500",
|
|
66
|
+
},
|
|
67
|
+
buttons: {
|
|
68
|
+
common: "font-bold rounded-md transition-colors text-stone-700 bg-stone-200 border border-stone-400 hover:bg-stone-300 dark:text-gray-100 dark:bg-indigo-900/50 dark:border-indigo-800 dark:hover:bg-indigo-700/70",
|
|
69
|
+
small: "text-xs font-semibold rounded-md transition-colors text-stone-700 bg-stone-200 border border-stone-400 hover:bg-stone-300 dark:text-gray-100 dark:bg-indigo-900 dark:border-indigo-600 dark:hover:bg-indigo-700/70",
|
|
70
|
+
tabSmall: "text-xs font-semibold rounded-md transition-colors text-stone-300 bg-stone-700 border border-stone-300 hover:bg-stone-500 dark:text-indigo-300 dark:bg-indigo-950 dark:border-indigo-600 dark:hover:bg-indigo-700/70",
|
|
71
|
+
tabSmallActive: "text-xs font-semibold rounded-md transition-colors text-stone-800 bg-lime-500 border border-lime-300 dark:text-gray-800 dark:bg-lime-500 dark:border-lime-300",
|
|
72
|
+
},
|
|
73
|
+
dropdown: {
|
|
74
|
+
container: "bg-white border border-stone-300 rounded-md shadow-lg dark:bg-slate-800 dark:border-indigo-600",
|
|
75
|
+
item: "text-left whitespace-nowrap transition-colors hover:bg-stone-200/50 dark:text-white dark:hover:bg-indigo-600/50",
|
|
76
|
+
itemActive: "border-l-2 text-stone-700 bg-stone-200 font-bold dark:bg-indigo-900/60",
|
|
77
|
+
},
|
|
78
|
+
messageBox: {
|
|
79
|
+
info: "bg-blue-100 text-blue-800 border-blue-300 dark:bg-blue-900/40 dark:text-blue-200 dark:border-blue-400/60",
|
|
80
|
+
warning: "bg-yellow-100 text-yellow-800 border-yellow-300 dark:bg-yellow-900/40 dark:text-yellow-200 dark:border-yellow-400/60",
|
|
81
|
+
error: "bg-red-100 text-red-800 border-red-300 dark:bg-red-900/40 dark:text-red-200 dark:border-red-400/60",
|
|
82
|
+
success: "bg-green-100 text-green-800 border-green-300 dark:bg-green-900/40 dark:text-green-200 dark:border-green-400/60",
|
|
83
|
+
neutral: "bg-stone-100 text-gray-700 border-gray-300 dark:bg-indigo-300/20 dark:text-gray-200 dark:border-gray-500",
|
|
84
|
+
quote: "bg-stone-300 border-l-4 border-stone-500 text-gray-700 italic dark:bg-indigo-900/50 dark:border-white dark:text-white",
|
|
85
|
+
},
|
|
86
|
+
table: {
|
|
87
|
+
cornerCell: "bg-stone-900/80 font-bold text-white text-lg dark:bg-indigo-900/50 dark:text-gray-200",
|
|
88
|
+
headers: "bg-stone-700/80 font-semibold text-white text-lg dark:bg-indigo-900/80 dark:text-gray-200",
|
|
89
|
+
rows: "bg-stone-50 text-gray-700 dark:bg-indigo-950/5 dark:text-gray-200",
|
|
90
|
+
border: "border-stone-400 dark:border-indigo-700",
|
|
91
|
+
empty: "text-gray-500 text-center",
|
|
92
|
+
},
|
|
93
|
+
code: {
|
|
94
|
+
header: "bg-stone-700/80 text-gray-200 border-b border-stone-300 dark:bg-indigo-900/80 dark:text-white dark:border-indigo-500",
|
|
95
|
+
language: "text-xs font-semibold text-stone-300 mt-1 text-right dark:text-indigo-300",
|
|
96
|
+
lines: "text-sm text-gray-500 border-r border-gray-300 dark:text-gray-500",
|
|
97
|
+
empty: "bg-gray-50 text-gray-500 text-center text-sm border",
|
|
98
|
+
},
|
|
99
|
+
audioPlayer: {
|
|
100
|
+
container: "bg-gray-300 dark:bg-indigo-900/50",
|
|
101
|
+
playButton: "bg-stone-700 hover:bg-stone-600 text-white transition-colors dark:bg-indigo-700 dark:hover:bg-indigo-600",
|
|
102
|
+
time: "text-gray-700 text-xs tabular-nums text-center dark:text-gray-400",
|
|
103
|
+
slider: "bg-transparent",
|
|
104
|
+
sliderThumb: "[&::-webkit-slider-thumb]:bg-stone-600 [&::-webkit-slider-thumb]:shadow-[0_0_0_3px_rgba(0,0,0,0.1)] [&::-moz-range-thumb]:bg-stone-600 [&::-moz-range-thumb]:border-none dark:[&::-webkit-slider-thumb]:bg-indigo-400 dark:[&::-webkit-slider-thumb]:shadow-[0_0_0_3px_rgba(37,99,235,0.35)] dark:[&::-moz-range-thumb]:bg-indigo-400",
|
|
105
|
+
sliderTrackColor: "rgba(99, 102, 241, 0.2)",
|
|
106
|
+
sliderFillColor: "rgba(129, 140, 248, 1)",
|
|
107
|
+
},
|
|
108
|
+
chart: {
|
|
109
|
+
legendLabelColor: "#334155",
|
|
110
|
+
tooltipBg: "#0f172a",
|
|
111
|
+
tooltipTitleColor: "#e2e8f0",
|
|
112
|
+
tooltipBodyColor: "#e5e7eb",
|
|
113
|
+
tooltipBorderColor: "#94a3b8",
|
|
114
|
+
axisTickColor: "#475569",
|
|
115
|
+
gridLineColor: "rgba(148, 163, 184, 0.3)",
|
|
116
|
+
},
|
|
117
|
+
graph: {
|
|
118
|
+
background: "#e5e7eb",
|
|
119
|
+
defaultCurve: "#2563eb",
|
|
120
|
+
},
|
|
121
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.styleThemeSchema = void 0;
|
|
4
|
+
exports.parseStyleTheme = parseStyleTheme;
|
|
5
|
+
exports.isStyleTheme = isStyleTheme;
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const default_js_1 = require("./presets/default.js");
|
|
8
|
+
function buildSchemaFromPreset(preset) {
|
|
9
|
+
const build = (value) => {
|
|
10
|
+
if (typeof value === "string") {
|
|
11
|
+
return zod_1.z.string();
|
|
12
|
+
}
|
|
13
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
14
|
+
const shape = {};
|
|
15
|
+
Object.entries(value).forEach(([key, child]) => {
|
|
16
|
+
shape[key] = build(child);
|
|
17
|
+
});
|
|
18
|
+
return zod_1.z.object(shape).strict();
|
|
19
|
+
}
|
|
20
|
+
throw new Error("Invalid style theme preset shape.");
|
|
21
|
+
};
|
|
22
|
+
return build(preset);
|
|
23
|
+
}
|
|
24
|
+
exports.styleThemeSchema = buildSchemaFromPreset(default_js_1.defaultTheme);
|
|
25
|
+
function parseStyleTheme(theme) {
|
|
26
|
+
const result = exports.styleThemeSchema.safeParse(theme);
|
|
27
|
+
if (!result.success) {
|
|
28
|
+
throw new Error(`Invalid style theme provided. ${result.error.issues
|
|
29
|
+
.map((issue) => `${issue.path.join(".") || "theme"}: ${issue.message}`)
|
|
30
|
+
.join("; ")}`);
|
|
31
|
+
}
|
|
32
|
+
return result.data;
|
|
33
|
+
}
|
|
34
|
+
function isStyleTheme(theme) {
|
|
35
|
+
return exports.styleThemeSchema.safeParse(theme).success;
|
|
36
|
+
}
|