@shadow-shard-tools/docs-core 1.0.16 → 1.0.18

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 (160) hide show
  1. package/README.md +28 -5
  2. package/dist/cjs/configs/clientConfig.js +162 -0
  3. package/dist/cjs/configs/codeLanguagesConfig.js +36 -0
  4. package/dist/cjs/configs/index.js +20 -0
  5. package/dist/cjs/configs/sstDocsConfig.browser.js +27 -0
  6. package/dist/cjs/configs/sstDocsConfig.js +88 -0
  7. package/dist/cjs/configs/sstDocsConfigShared.js +174 -0
  8. package/dist/cjs/constants/alignmentClasses.js +17 -0
  9. package/dist/cjs/constants/index.js +7 -0
  10. package/dist/cjs/constants/spacingClasses.js +9 -0
  11. package/dist/cjs/data/buildTree.js +93 -0
  12. package/dist/cjs/data/fsDataProvider.js +23 -0
  13. package/dist/cjs/data/httpDataProvider.js +25 -0
  14. package/dist/cjs/data/index.js +19 -0
  15. package/dist/cjs/data/loadAllCategories.js +20 -0
  16. package/dist/cjs/data/loadAllItems.js +14 -0
  17. package/dist/cjs/data/loadVersionData.js +16 -0
  18. package/dist/cjs/data/loadVersions.js +6 -0
  19. package/dist/cjs/index.js +22 -0
  20. package/dist/cjs/themes/index.js +11 -0
  21. package/dist/cjs/themes/presets/default.js +121 -0
  22. package/dist/cjs/themes/themeRegistry.js +22 -0
  23. package/dist/cjs/types/AudioData.js +2 -0
  24. package/dist/cjs/types/BaseImage.js +2 -0
  25. package/dist/cjs/types/Category.js +2 -0
  26. package/dist/cjs/types/CategoryTitleData.js +2 -0
  27. package/dist/cjs/types/ChartData.js +2 -0
  28. package/dist/cjs/types/ClientVisibleSstDocsConfig.js +2 -0
  29. package/dist/cjs/types/CodeData.js +2 -0
  30. package/dist/cjs/types/Content.js +2 -0
  31. package/dist/cjs/types/DataProvider.js +2 -0
  32. package/dist/cjs/types/DividerData.js +2 -0
  33. package/dist/cjs/types/DocItem.js +2 -0
  34. package/dist/cjs/types/HeaderBranding.js +2 -0
  35. package/dist/cjs/types/HtmlGeneratorSettings.js +2 -0
  36. package/dist/cjs/types/ImageCarouselData.js +2 -0
  37. package/dist/cjs/types/ImageCompareData.js +2 -0
  38. package/dist/cjs/types/ImageData.js +2 -0
  39. package/dist/cjs/types/ImageGridData.js +2 -0
  40. package/dist/cjs/types/IndexJson.js +2 -0
  41. package/dist/cjs/types/ListData.js +2 -0
  42. package/dist/cjs/types/Logger.js +2 -0
  43. package/dist/cjs/types/MathData.js +2 -0
  44. package/dist/cjs/types/MessageBoxData.js +2 -0
  45. package/dist/cjs/types/RawCategory.js +2 -0
  46. package/dist/cjs/types/SstDocsConfig.js +2 -0
  47. package/dist/cjs/types/StyleTheme.js +2 -0
  48. package/dist/cjs/types/TableData.js +2 -0
  49. package/dist/cjs/types/TextData.js +2 -0
  50. package/dist/cjs/types/TitleData.js +2 -0
  51. package/dist/cjs/types/Version.js +2 -0
  52. package/dist/cjs/types/YoutubeData.js +2 -0
  53. package/dist/cjs/types/index.js +2 -0
  54. package/dist/cjs/utilities/dom/copyToClipboard.js +40 -0
  55. package/dist/cjs/utilities/dom/downloadTextFile.js +23 -0
  56. package/dist/cjs/utilities/dom/getResponsiveWidth.js +11 -0
  57. package/dist/cjs/utilities/file/getFileExtension.js +9 -0
  58. package/dist/cjs/utilities/index.js +53 -0
  59. package/dist/cjs/utilities/path/pathExists.js +16 -0
  60. package/dist/cjs/utilities/path/resolveAgainstProjectRoot.js +13 -0
  61. package/dist/cjs/utilities/path/resolveDataPath.js +18 -0
  62. package/dist/cjs/utilities/string/extractYouTubeId.js +18 -0
  63. package/dist/cjs/utilities/string/normalizeBaseUrlPath.js +11 -0
  64. package/dist/cjs/utilities/string/normalizeSystemPath.js +14 -0
  65. package/dist/cjs/utilities/string/processListItems.js +10 -0
  66. package/dist/cjs/utilities/string/sanitizeFilename.js +13 -0
  67. package/dist/cjs/utilities/string/slugify.js +12 -0
  68. package/dist/cjs/utilities/string/withBasePath.js +45 -0
  69. package/dist/cjs/utilities/system/createTimeout.js +11 -0
  70. package/dist/cjs/utilities/system/formatTime.js +12 -0
  71. package/dist/cjs/utilities/system/logger.js +40 -0
  72. package/dist/cjs/utilities/validation/isMobileDevice.js +8 -0
  73. package/dist/cjs/utilities/validation/isValidColor.js +182 -0
  74. package/dist/cjs/utilities/validation/isValidImageUrl.js +42 -0
  75. package/dist/cjs/utilities/validation/isValidYouTubeId.js +9 -0
  76. package/dist/cjs/utilities/validation/validateScale.js +8 -0
  77. package/dist/configs/clientConfig.d.ts.map +1 -1
  78. package/dist/configs/clientConfig.js +116 -10
  79. package/dist/configs/clientConfig.js.map +1 -1
  80. package/dist/configs/index.d.ts +0 -1
  81. package/dist/configs/index.d.ts.map +1 -1
  82. package/dist/configs/index.js +0 -1
  83. package/dist/configs/index.js.map +1 -1
  84. package/dist/configs/sstDocsConfig.browser.d.ts +8 -0
  85. package/dist/configs/sstDocsConfig.browser.d.ts.map +1 -0
  86. package/dist/configs/sstDocsConfig.browser.js +18 -0
  87. package/dist/configs/sstDocsConfig.browser.js.map +1 -0
  88. package/dist/configs/sstDocsConfig.d.ts +2 -6
  89. package/dist/configs/sstDocsConfig.d.ts.map +1 -1
  90. package/dist/configs/sstDocsConfig.js +2 -240
  91. package/dist/configs/sstDocsConfig.js.map +1 -1
  92. package/dist/configs/sstDocsConfigShared.d.ts +9 -0
  93. package/dist/configs/sstDocsConfigShared.d.ts.map +1 -0
  94. package/dist/configs/sstDocsConfigShared.js +165 -0
  95. package/dist/configs/sstDocsConfigShared.js.map +1 -0
  96. package/dist/constants/{aligmentClasses.d.ts → alignmentClasses.d.ts} +1 -1
  97. package/dist/constants/alignmentClasses.d.ts.map +1 -0
  98. package/dist/constants/{aligmentClasses.js → alignmentClasses.js} +1 -1
  99. package/dist/constants/alignmentClasses.js.map +1 -0
  100. package/dist/constants/index.d.ts +1 -1
  101. package/dist/constants/index.d.ts.map +1 -1
  102. package/dist/constants/index.js +1 -1
  103. package/dist/constants/index.js.map +1 -1
  104. package/dist/data/fsDataProvider.d.ts +2 -1
  105. package/dist/data/fsDataProvider.d.ts.map +1 -1
  106. package/dist/data/fsDataProvider.js +15 -3
  107. package/dist/data/fsDataProvider.js.map +1 -1
  108. package/dist/data/httpDataProvider.d.ts +2 -1
  109. package/dist/data/httpDataProvider.d.ts.map +1 -1
  110. package/dist/data/httpDataProvider.js +17 -4
  111. package/dist/data/httpDataProvider.js.map +1 -1
  112. package/dist/data/index.d.ts +2 -2
  113. package/dist/data/index.d.ts.map +1 -1
  114. package/dist/data/index.js +2 -2
  115. package/dist/data/index.js.map +1 -1
  116. package/dist/themes/index.d.ts +1 -2
  117. package/dist/themes/index.d.ts.map +1 -1
  118. package/dist/themes/index.js +1 -2
  119. package/dist/themes/index.js.map +1 -1
  120. package/dist/themes/presets/default.d.ts +3 -0
  121. package/dist/themes/presets/default.d.ts.map +1 -0
  122. package/dist/themes/presets/default.js +119 -0
  123. package/dist/themes/presets/default.js.map +1 -0
  124. package/dist/themes/themeRegistry.d.ts +3 -4
  125. package/dist/themes/themeRegistry.d.ts.map +1 -1
  126. package/dist/themes/themeRegistry.js +11 -11
  127. package/dist/themes/themeRegistry.js.map +1 -1
  128. package/dist/types/Content.d.ts +35 -18
  129. package/dist/types/Content.d.ts.map +1 -1
  130. package/dist/types/HtmlGeneratorSettings.d.ts +3 -11
  131. package/dist/types/HtmlGeneratorSettings.d.ts.map +1 -1
  132. package/dist/types/StyleTheme.d.ts +115 -16
  133. package/dist/types/StyleTheme.d.ts.map +1 -1
  134. package/dist/types/index.d.ts +1 -2
  135. package/dist/types/index.d.ts.map +1 -1
  136. package/dist/utilities/string/normalizeSystemPath.d.ts.map +1 -1
  137. package/dist/utilities/string/normalizeSystemPath.js +9 -1
  138. package/dist/utilities/string/normalizeSystemPath.js.map +1 -1
  139. package/dist/utilities/string/withBasePath.d.ts.map +1 -1
  140. package/dist/utilities/string/withBasePath.js +35 -6
  141. package/dist/utilities/string/withBasePath.js.map +1 -1
  142. package/package.json +141 -137
  143. package/dist/configs/styles/320/241onfig.d.ts +0 -3
  144. package/dist/configs/styles/320/241onfig.d.ts.map +0 -1
  145. package/dist/configs/styles/320/241onfig.js +0 -8
  146. package/dist/configs/styles/320/241onfig.js.map +0 -1
  147. package/dist/constants/aligmentClasses.d.ts.map +0 -1
  148. package/dist/constants/aligmentClasses.js.map +0 -1
  149. package/dist/themes/darkTheme.d.ts +0 -3
  150. package/dist/themes/darkTheme.d.ts.map +0 -1
  151. package/dist/themes/darkTheme.js +0 -119
  152. package/dist/themes/darkTheme.js.map +0 -1
  153. package/dist/themes/lightTheme.d.ts +0 -3
  154. package/dist/themes/lightTheme.d.ts.map +0 -1
  155. package/dist/themes/lightTheme.js +0 -119
  156. package/dist/themes/lightTheme.js.map +0 -1
  157. package/dist/types/StylesConfig.d.ts +0 -8
  158. package/dist/types/StylesConfig.d.ts.map +0 -1
  159. package/dist/types/StylesConfig.js +0 -2
  160. package/dist/types/StylesConfig.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTree = buildTree;
4
+ function convertCategory(raw, rawMap, docLookup, usedDocIds, included, visiting) {
5
+ if (visiting.has(raw.id)) {
6
+ console.warn(`Detected circular category reference at ${raw.id}.`);
7
+ return null;
8
+ }
9
+ visiting.add(raw.id);
10
+ let docs;
11
+ const docIds = Array.isArray(raw.docs) ? raw.docs : [];
12
+ if (docIds.length > 0) {
13
+ const validDocs = docIds
14
+ .map((rawId) => {
15
+ if (typeof rawId !== "string" || rawId.length === 0) {
16
+ console.warn(`Invalid doc id in category ${raw.id}:`, rawId);
17
+ return null;
18
+ }
19
+ const doc = docLookup.get(rawId);
20
+ if (!doc) {
21
+ console.warn(`Doc id ${rawId} referenced in category ${raw.id} not found.`);
22
+ return null;
23
+ }
24
+ usedDocIds.add(rawId);
25
+ return doc;
26
+ })
27
+ .filter((doc) => doc !== null);
28
+ if (validDocs.length > 0) {
29
+ docs = validDocs;
30
+ }
31
+ }
32
+ let children;
33
+ const childIds = Array.isArray(raw.children) ? raw.children : [];
34
+ if (childIds.length > 0) {
35
+ const validChildren = childIds
36
+ .map((rawChildId) => {
37
+ if (typeof rawChildId !== "string" || rawChildId.length === 0) {
38
+ console.warn(`Invalid child category id in ${raw.id}:`, rawChildId);
39
+ return null;
40
+ }
41
+ const childRaw = rawMap[rawChildId];
42
+ if (!childRaw) {
43
+ console.warn(`Child category ${rawChildId} referenced in ${raw.id} not found.`);
44
+ return null;
45
+ }
46
+ return convertCategory(childRaw, rawMap, docLookup, usedDocIds, included, visiting);
47
+ })
48
+ .filter((child) => child !== null);
49
+ if (validChildren.length > 0) {
50
+ children = validChildren;
51
+ }
52
+ }
53
+ visiting.delete(raw.id);
54
+ included.add(raw.id);
55
+ return {
56
+ id: raw.id,
57
+ title: raw.title,
58
+ description: raw.description,
59
+ content: raw.content ?? [],
60
+ docs,
61
+ children,
62
+ };
63
+ }
64
+ function buildTree(rawMap, allDocs) {
65
+ const docLookup = new Map(allDocs.map((d) => [d.id, d]));
66
+ const usedDocIds = new Set();
67
+ const includedIds = new Set();
68
+ const childCategoryIds = new Set();
69
+ Object.values(rawMap).forEach((category) => {
70
+ if (Array.isArray(category?.children)) {
71
+ category.children.forEach((childId) => {
72
+ if (typeof childId === "string" && childId.length > 0) {
73
+ childCategoryIds.add(childId);
74
+ }
75
+ });
76
+ }
77
+ });
78
+ let rootCandidates = Object.values(rawMap).filter((category) => category &&
79
+ typeof category.id === "string" &&
80
+ category.id.length > 0 &&
81
+ !childCategoryIds.has(category.id));
82
+ if (rootCandidates.length === 0) {
83
+ rootCandidates = Object.values(rawMap).filter((category) => category && typeof category.id === "string" && category.id.length > 0);
84
+ }
85
+ const tree = rootCandidates
86
+ .map((rootCategory) => {
87
+ if (includedIds.has(rootCategory.id))
88
+ return null;
89
+ return convertCategory(rootCategory, rawMap, docLookup, usedDocIds, includedIds, new Set());
90
+ })
91
+ .filter((category) => category !== null);
92
+ return { tree, usedDocIds };
93
+ }
@@ -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,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.httpDataProvider = exports.HttpDataProvider = exports.fsDataProvider = exports.FsDataProvider = exports.loadVersions = 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
+ var loadVersions_js_1 = require("./loadVersions.js");
13
+ Object.defineProperty(exports, "loadVersions", { enumerable: true, get: function () { return loadVersions_js_1.loadVersions; } });
14
+ var fsDataProvider_js_1 = require("./fsDataProvider.js");
15
+ Object.defineProperty(exports, "FsDataProvider", { enumerable: true, get: function () { return fsDataProvider_js_1.FsDataProvider; } });
16
+ Object.defineProperty(exports, "fsDataProvider", { enumerable: true, get: function () { return fsDataProvider_js_1.fsDataProvider; } });
17
+ var httpDataProvider_js_1 = require("./httpDataProvider.js");
18
+ Object.defineProperty(exports, "HttpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.HttpDataProvider; } });
19
+ Object.defineProperty(exports, "httpDataProvider", { enumerable: true, get: function () { return httpDataProvider_js_1.httpDataProvider; } });
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAllCategories = loadAllCategories;
4
+ async function loadAllCategories(provider, versionRootAbs, ids) {
5
+ const results = await Promise.allSettled(ids.map(async (id) => {
6
+ const p = `${versionRootAbs}/categories/${id}.json`;
7
+ const data = await provider.readJson(p);
8
+ return { id, data };
9
+ }));
10
+ const map = {};
11
+ results.forEach((res, i) => {
12
+ if (res.status === "fulfilled") {
13
+ map[res.value.id] = res.value.data;
14
+ }
15
+ else {
16
+ console.warn(`Failed to load category ${ids[i]}:`, res.reason);
17
+ }
18
+ });
19
+ return map;
20
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadAllItems = loadAllItems;
4
+ async function loadAllItems(provider, versionRootAbs, ids) {
5
+ const results = await Promise.allSettled(ids.map((id) => provider.readJson(`${versionRootAbs}/items/${id}.json`)));
6
+ const list = [];
7
+ results.forEach((res, i) => {
8
+ if (res.status === "fulfilled")
9
+ list.push(res.value);
10
+ else
11
+ console.warn(`Failed to load item ${ids[i]}:`, res.reason);
12
+ });
13
+ return list;
14
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadVersionData = loadVersionData;
4
+ const buildTree_js_1 = require("./buildTree.js");
5
+ const loadAllCategories_js_1 = require("./loadAllCategories.js");
6
+ const loadAllItems_js_1 = require("./loadAllItems.js");
7
+ async function loadVersionData(provider, versionRootAbs) {
8
+ const index = await provider.readJson(`${versionRootAbs}/index.json`);
9
+ const [rawCats, items] = await Promise.all([
10
+ (0, loadAllCategories_js_1.loadAllCategories)(provider, versionRootAbs, index.categories),
11
+ (0, loadAllItems_js_1.loadAllItems)(provider, versionRootAbs, index.items),
12
+ ]);
13
+ const { tree, usedDocIds } = (0, buildTree_js_1.buildTree)(rawCats, items);
14
+ const standaloneDocs = items.filter((d) => !usedDocIds.has(d.id));
15
+ return { items, tree, standaloneDocs };
16
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadVersions = loadVersions;
4
+ async function loadVersions(provider, dataRootAbs) {
5
+ return provider.readJson(`${dataRootAbs}/versions.json`);
6
+ }
@@ -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,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ 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; } });
@@ -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,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AVAILABLE_THEME_PRESET_NAMES = exports.DEFAULT_THEME_PRESET = exports.DOCS_CORE_THEME_PRESETS = void 0;
4
+ exports.getThemePreset = getThemePreset;
5
+ exports.isThemePresetName = isThemePresetName;
6
+ const default_js_1 = require("./presets/default.js");
7
+ exports.DOCS_CORE_THEME_PRESETS = {
8
+ default: default_js_1.defaultTheme,
9
+ };
10
+ exports.DEFAULT_THEME_PRESET = "default";
11
+ exports.AVAILABLE_THEME_PRESET_NAMES = Object.freeze(Object.keys(exports.DOCS_CORE_THEME_PRESETS));
12
+ function getThemePreset(name = exports.DEFAULT_THEME_PRESET) {
13
+ const preset = exports.DOCS_CORE_THEME_PRESETS[name];
14
+ if (!preset) {
15
+ const options = exports.AVAILABLE_THEME_PRESET_NAMES.join(", ");
16
+ throw new Error(`Unknown theme preset "${String(name)}". Supported presets: ${options}`);
17
+ }
18
+ return preset;
19
+ }
20
+ function isThemePresetName(value) {
21
+ return typeof value === "string" && exports.AVAILABLE_THEME_PRESET_NAMES.includes(value);
22
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyToClipboard = void 0;
4
+ const copyToClipboard = async (text) => {
5
+ const hasNavigatorClipboard = typeof navigator !== "undefined" &&
6
+ !!navigator.clipboard &&
7
+ typeof navigator.clipboard.writeText === "function";
8
+ if (hasNavigatorClipboard) {
9
+ try {
10
+ await navigator.clipboard.writeText(text);
11
+ return true;
12
+ }
13
+ catch {
14
+ // Intentionally fall through to the DOM-based fallback.
15
+ }
16
+ }
17
+ if (typeof document === "undefined" ||
18
+ typeof document.createElement !== "function" ||
19
+ typeof document.body === "undefined") {
20
+ return false;
21
+ }
22
+ const textarea = document.createElement("textarea");
23
+ textarea.value = text;
24
+ textarea.setAttribute("readonly", "true");
25
+ textarea.style.position = "absolute";
26
+ textarea.style.left = "-9999px";
27
+ document.body.appendChild(textarea);
28
+ textarea.select();
29
+ try {
30
+ const success = typeof document.execCommand === "function"
31
+ ? document.execCommand("copy")
32
+ : false;
33
+ return success;
34
+ }
35
+ finally {
36
+ document.body.removeChild(textarea);
37
+ }
38
+ };
39
+ exports.copyToClipboard = copyToClipboard;
40
+ exports.default = exports.copyToClipboard;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadTextFile = void 0;
4
+ const sanitizeFilename_js_1 = require("../string/sanitizeFilename.js");
5
+ const downloadTextFile = (content, filename, mimeType = "text/plain") => {
6
+ try {
7
+ const blob = new Blob([content], { type: mimeType });
8
+ const url = URL.createObjectURL(blob);
9
+ const link = document.createElement("a");
10
+ link.href = url;
11
+ link.download = (0, sanitizeFilename_js_1.sanitizeFilename)(filename);
12
+ link.style.display = "none";
13
+ document.body.appendChild(link);
14
+ link.click();
15
+ document.body.removeChild(link);
16
+ setTimeout(() => URL.revokeObjectURL(url), 100);
17
+ }
18
+ catch (error) {
19
+ console.error("Failed to download file:", error);
20
+ }
21
+ };
22
+ exports.downloadTextFile = downloadTextFile;
23
+ exports.default = exports.downloadTextFile;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResponsiveWidth = void 0;
4
+ const getResponsiveWidth = (scale, isMobile) => {
5
+ if (isMobile || scale === 1) {
6
+ return "100%";
7
+ }
8
+ return `${scale * 100}%`;
9
+ };
10
+ exports.getResponsiveWidth = getResponsiveWidth;
11
+ exports.default = exports.getResponsiveWidth;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFileExtension = void 0;
4
+ const getFileExtension = (filename) => {
5
+ const lastDot = filename.lastIndexOf(".");
6
+ return lastDot !== -1 ? filename.slice(lastDot + 1).toLowerCase() : "";
7
+ };
8
+ exports.getFileExtension = getFileExtension;
9
+ exports.default = exports.getFileExtension;