@sp-days-framework/docusaurus-plugin-slidev 1.1.0-beta2 → 1.1.0

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 (56) hide show
  1. package/docs/advanced-configuration.mdx +103 -24
  2. package/docs/changelog.mdx +41 -9
  3. package/docs/install.mdx +28 -19
  4. package/docs/slide-directory.mdx +184 -0
  5. package/docs/slidev-link.mdx +40 -0
  6. package/lib/plugin/builder.d.ts +9 -3
  7. package/lib/plugin/builder.d.ts.map +1 -1
  8. package/lib/plugin/builder.js +130 -39
  9. package/lib/plugin/builder.js.map +1 -1
  10. package/lib/plugin/index.d.ts.map +1 -1
  11. package/lib/plugin/index.js +108 -26
  12. package/lib/plugin/index.js.map +1 -1
  13. package/lib/plugin/scanner.d.ts +9 -2
  14. package/lib/plugin/scanner.d.ts.map +1 -1
  15. package/lib/plugin/scanner.js +180 -29
  16. package/lib/plugin/scanner.js.map +1 -1
  17. package/lib/theme/SlidevCard/index.d.ts.map +1 -1
  18. package/lib/theme/SlidevCard/index.js +1 -2
  19. package/lib/theme/SlidevCard/index.js.map +1 -1
  20. package/lib/theme/SlidevCard/styles.module.css +6 -2
  21. package/lib/theme/SlidevCategoryCard/index.d.ts +11 -0
  22. package/lib/theme/SlidevCategoryCard/index.d.ts.map +1 -0
  23. package/lib/theme/SlidevCategoryCard/index.js +31 -0
  24. package/lib/theme/SlidevCategoryCard/index.js.map +1 -0
  25. package/lib/theme/SlidevCategoryCard/styles.module.css +158 -0
  26. package/lib/theme/SlidevLink/index.d.ts +32 -0
  27. package/lib/theme/SlidevLink/index.d.ts.map +1 -0
  28. package/lib/theme/SlidevLink/index.js +139 -0
  29. package/lib/theme/SlidevLink/index.js.map +1 -0
  30. package/lib/theme/SlidevLink/styles.module.css +228 -0
  31. package/lib/theme/SlidevListItem/index.d.ts +18 -0
  32. package/lib/theme/SlidevListItem/index.d.ts.map +1 -0
  33. package/lib/theme/SlidevListItem/index.js +44 -0
  34. package/lib/theme/SlidevListItem/index.js.map +1 -0
  35. package/lib/theme/SlidevListItem/styles.module.css +128 -0
  36. package/lib/theme/SlidevOverview/index.d.ts +1 -0
  37. package/lib/theme/SlidevOverview/index.d.ts.map +1 -1
  38. package/lib/theme/SlidevOverview/index.js +156 -71
  39. package/lib/theme/SlidevOverview/index.js.map +1 -1
  40. package/lib/theme/SlidevOverview/styles.module.css +176 -147
  41. package/lib/types/index.d.ts +85 -6
  42. package/lib/types/index.d.ts.map +1 -1
  43. package/lib/utils/fileSystem.d.ts +53 -0
  44. package/lib/utils/fileSystem.d.ts.map +1 -1
  45. package/lib/utils/fileSystem.js +151 -0
  46. package/lib/utils/fileSystem.js.map +1 -1
  47. package/lib/utils/icons.d.ts +34 -0
  48. package/lib/utils/icons.d.ts.map +1 -1
  49. package/lib/utils/icons.js +60 -0
  50. package/lib/utils/icons.js.map +1 -1
  51. package/lib/utils/logger.d.ts +11 -2
  52. package/lib/utils/logger.d.ts.map +1 -1
  53. package/lib/utils/logger.js +64 -8
  54. package/lib/utils/logger.js.map +1 -1
  55. package/package.json +2 -1
  56. package/publish-package-docs.js +11 -3
@@ -10,14 +10,28 @@ exports.scanPresentations = scanPresentations;
10
10
  const fs_1 = __importDefault(require("fs"));
11
11
  const path_1 = __importDefault(require("path"));
12
12
  const gray_matter_1 = __importDefault(require("gray-matter"));
13
+ const js_yaml_1 = __importDefault(require("js-yaml"));
13
14
  const logger_1 = require("../utils/logger");
15
+ const fileSystem_1 = require("../utils/fileSystem");
16
+ /**
17
+ * Derives the URL path from the path option
18
+ * e.g., './slidev' -> 'slidev', './presentations' -> 'presentations'
19
+ */
20
+ function getUrlPathFromPath(pathOption) {
21
+ // Remove leading ./ or / and trailing /
22
+ const normalized = pathOption.replace(/^\.?\//, "").replace(/\/$/, "");
23
+ // Get the last segment (folder name)
24
+ const segments = normalized.split("/");
25
+ return segments[segments.length - 1] || "slidev";
26
+ }
14
27
  /**
15
28
  * Recursively scans a directory for Slidev markdown files
16
29
  * @param dir Directory to scan
17
30
  * @param baseDir Base directory for relative path calculation
18
- * @returns Array of file paths relative to baseDir
31
+ * @param currentCategory Current category path (for nested directories)
32
+ * @returns Array of scanned files with category info
19
33
  */
20
- function scanDirectory(dir, baseDir) {
34
+ function scanDirectory(dir, baseDir, currentCategory = "") {
21
35
  const files = [];
22
36
  if (!fs_1.default.existsSync(dir)) {
23
37
  return files;
@@ -30,33 +44,145 @@ function scanDirectory(dir, baseDir) {
30
44
  if (entry.name === "node_modules" || entry.name.startsWith(".")) {
31
45
  continue;
32
46
  }
33
- // Recursively scan subdirectories
34
- files.push(...scanDirectory(fullPath, baseDir));
47
+ // Recursively scan subdirectories with updated category path
48
+ const newCategory = currentCategory
49
+ ? `${currentCategory}/${entry.name}`
50
+ : entry.name;
51
+ files.push(...scanDirectory(fullPath, baseDir, newCategory));
35
52
  }
36
- else if (entry.isFile() && entry.name.endsWith(".md")) {
37
- // Add markdown files
53
+ else if (entry.isFile() &&
54
+ entry.name.endsWith(".md") &&
55
+ !entry.name.startsWith("_")) {
56
+ // Add markdown files (skip _category_.md and similar)
38
57
  const relativePath = path_1.default.relative(baseDir, fullPath);
39
- files.push(relativePath);
58
+ files.push({ relativePath, category: currentCategory });
40
59
  }
41
60
  }
42
61
  return files;
43
62
  }
63
+ /**
64
+ * Scans for category directories and extracts their metadata
65
+ * @param sourceDir Base source directory
66
+ * @param baseUrl Site base URL
67
+ * @param urlPath URL path derived from path option
68
+ * @param routeBasePath Base route path for category URLs
69
+ * @returns Map of category paths to their metadata
70
+ */
71
+ function scanCategories(sourceDir, baseUrl, urlPath, routeBasePath) {
72
+ const categories = new Map();
73
+ function scanDir(dir, categoryPath = "") {
74
+ if (!fs_1.default.existsSync(dir))
75
+ return;
76
+ const entries = fs_1.default.readdirSync(dir, { withFileTypes: true });
77
+ for (const entry of entries) {
78
+ if (!entry.isDirectory())
79
+ continue;
80
+ if (entry.name === "node_modules" || entry.name.startsWith("."))
81
+ continue;
82
+ const fullPath = path_1.default.join(dir, entry.name);
83
+ const newCategoryPath = categoryPath
84
+ ? `${categoryPath}/${entry.name}`
85
+ : entry.name;
86
+ // Check if this directory contains any .md files (directly or in subdirs)
87
+ const hasMarkdownFiles = checkForMarkdownFiles(fullPath);
88
+ if (hasMarkdownFiles) {
89
+ // Try to read _category_.yml or _category_.json
90
+ const categoryData = readCategoryFile(fullPath);
91
+ // Build category URL
92
+ const normalizedBaseUrl = baseUrl.endsWith("/")
93
+ ? baseUrl.slice(0, -1)
94
+ : baseUrl;
95
+ const normalizedRouteBasePath = routeBasePath.startsWith("/")
96
+ ? routeBasePath
97
+ : `/${routeBasePath}`;
98
+ const categoryUrl = `${normalizedBaseUrl}${normalizedRouteBasePath}/${newCategoryPath}`;
99
+ categories.set(newCategoryPath, {
100
+ path: newCategoryPath,
101
+ label: categoryData.label || formatDirectoryName(entry.name),
102
+ description: categoryData.description,
103
+ position: categoryData.position ?? 99,
104
+ count: 0, // Will be updated after scanning presentations
105
+ url: categoryUrl,
106
+ });
107
+ }
108
+ // Continue scanning subdirectories
109
+ scanDir(fullPath, newCategoryPath);
110
+ }
111
+ }
112
+ scanDir(sourceDir);
113
+ return categories;
114
+ }
115
+ /**
116
+ * Check if a directory contains any markdown files (recursively)
117
+ */
118
+ function checkForMarkdownFiles(dir) {
119
+ const entries = fs_1.default.readdirSync(dir, { withFileTypes: true });
120
+ for (const entry of entries) {
121
+ if (entry.isFile() &&
122
+ entry.name.endsWith(".md") &&
123
+ !entry.name.startsWith("_")) {
124
+ return true;
125
+ }
126
+ if (entry.isDirectory() &&
127
+ !entry.name.startsWith(".") &&
128
+ entry.name !== "node_modules") {
129
+ if (checkForMarkdownFiles(path_1.default.join(dir, entry.name))) {
130
+ return true;
131
+ }
132
+ }
133
+ }
134
+ return false;
135
+ }
136
+ /**
137
+ * Read _category_.yml or _category_.json from a directory
138
+ */
139
+ function readCategoryFile(dirPath) {
140
+ const ymlPath = path_1.default.join(dirPath, "_category_.yml");
141
+ const yamlPath = path_1.default.join(dirPath, "_category_.yaml");
142
+ const jsonPath = path_1.default.join(dirPath, "_category_.json");
143
+ try {
144
+ if (fs_1.default.existsSync(ymlPath)) {
145
+ const content = fs_1.default.readFileSync(ymlPath, "utf-8");
146
+ return js_yaml_1.default.load(content) || {};
147
+ }
148
+ if (fs_1.default.existsSync(yamlPath)) {
149
+ const content = fs_1.default.readFileSync(yamlPath, "utf-8");
150
+ return js_yaml_1.default.load(content) || {};
151
+ }
152
+ if (fs_1.default.existsSync(jsonPath)) {
153
+ const content = fs_1.default.readFileSync(jsonPath, "utf-8");
154
+ return JSON.parse(content);
155
+ }
156
+ }
157
+ catch (error) {
158
+ (0, logger_1.logWarn)(`Failed to read category file in ${(0, logger_1.formatPath)(dirPath)}: ${error}`);
159
+ }
160
+ return {};
161
+ }
162
+ /**
163
+ * Format a directory name into a readable label
164
+ * 'my-category' -> 'My Category'
165
+ * 'module_01' -> 'Module 01'
166
+ */
167
+ function formatDirectoryName(name) {
168
+ return name
169
+ .replace(/[-_]/g, " ")
170
+ .replace(/\b\w/g, (char) => char.toUpperCase());
171
+ }
44
172
  /**
45
173
  * Generates a presentation ID from a file path
174
+ * For files in directories, includes the directory path
46
175
  * Examples:
47
176
  * 'presentation.md' -> 'presentation'
48
- * 'module-01/slides.md' -> 'module-01-slides'
49
- * 'workshop/intro.md' -> 'workshop-intro'
177
+ * 'advanced/topic-a.md' -> 'advanced/topic-a'
178
+ * 'workshops/intro/slides.md' -> 'workshops/intro/slides'
50
179
  */
51
180
  function generatePresentationId(filePath) {
52
- // Remove .md extension
181
+ // Remove .md extension and normalize separators
53
182
  const withoutExt = filePath.replace(/\.md$/, "");
54
- // Replace path separators and spaces with hyphens
55
- const id = withoutExt
56
- .replace(/[/\\]/g, "-")
57
- .replace(/\s+/g, "-")
58
- .toLowerCase();
59
- return id;
183
+ // Replace backslashes with forward slashes for consistency
184
+ const normalized = withoutExt.replace(/\\/g, "/");
185
+ return normalized;
60
186
  }
61
187
  /**
62
188
  * Extracts frontmatter metadata from a Slidev markdown file
@@ -76,44 +202,69 @@ function extractMetadata(filePath) {
76
202
  * Scans for Slidev presentations and extracts metadata
77
203
  */
78
204
  async function scanPresentations(options, context) {
79
- const sourceDir = path_1.default.resolve(context.siteDir, options.sourceDir);
80
- // Scan for markdown files
81
- const markdownFiles = scanDirectory(sourceDir, sourceDir);
82
- if (markdownFiles.length === 0) {
205
+ const sourceDir = path_1.default.resolve(context.siteDir, options.path);
206
+ const urlPath = getUrlPathFromPath(options.path);
207
+ // Scan for categories first
208
+ const categoriesMap = scanCategories(sourceDir, context.baseUrl, urlPath, options.routeBasePath);
209
+ // Scan for markdown files with category info
210
+ const scannedFiles = scanDirectory(sourceDir, sourceDir);
211
+ if (scannedFiles.length === 0) {
83
212
  (0, logger_1.logWarn)(`No Slidev presentations found in ${(0, logger_1.formatPath)(sourceDir)}`);
84
- return [];
213
+ return { presentations: [], categories: [] };
214
+ }
215
+ (0, logger_1.logInfo)(`Found ${(0, logger_1.formatNumber)(scannedFiles.length)} Slidev file(s) in: ${(0, logger_1.formatPath)(sourceDir)}`);
216
+ // Count presentations per category
217
+ const categoryCounts = new Map();
218
+ for (const file of scannedFiles) {
219
+ if (file.category) {
220
+ const count = categoryCounts.get(file.category) || 0;
221
+ categoryCounts.set(file.category, count + 1);
222
+ }
223
+ }
224
+ // Update category counts
225
+ for (const [categoryPath, count] of categoryCounts) {
226
+ const category = categoriesMap.get(categoryPath);
227
+ if (category) {
228
+ category.count = count;
229
+ }
85
230
  }
86
- (0, logger_1.logInfo)(`Found ${(0, logger_1.formatNumber)(markdownFiles.length)} Slidev file(s) in: ${(0, logger_1.formatPath)(sourceDir)}`);
87
231
  // Extract metadata for each file
88
- const presentations = markdownFiles.map((relativePath) => {
232
+ const presentations = scannedFiles.map(({ relativePath, category }) => {
89
233
  const sourceAbsolutePath = path_1.default.join(sourceDir, relativePath);
90
234
  const id = generatePresentationId(relativePath);
91
235
  const frontmatter = extractMetadata(sourceAbsolutePath);
92
236
  // Generate title from frontmatter or filename
93
237
  const title = frontmatter.title || path_1.default.basename(relativePath, ".md");
94
- // Generate URL path
238
+ // Generate URL path - preserves directory structure
95
239
  const baseUrl = context.baseUrl.endsWith("/")
96
240
  ? context.baseUrl.slice(0, -1)
97
241
  : context.baseUrl;
98
- const url = `${baseUrl}/${options.outputDir}/${id}/`;
99
- // Generate output path
100
- const outputPath = path_1.default.join(context.siteDir, "static", options.outputDir, id);
242
+ const url = `${baseUrl}/${urlPath}/${id}/`;
243
+ // Generate output path in cache directory (hidden from user's workspace)
244
+ // Presentations are built here, then copied to final output in postBuild
245
+ const outputPath = path_1.default.join((0, fileSystem_1.getSlidevBuildOutputDir)(context.siteDir, options.id), id);
101
246
  // Generate preview URL - points to the presentation with slide number parameter
102
247
  // Slidev supports ?clicks=0 to show first slide without any build steps
103
- const previewUrl = `${baseUrl}/${options.outputDir}/${id}/?clicks=0`;
248
+ const previewUrl = `${baseUrl}/${urlPath}/${id}/?clicks=0`;
104
249
  return {
105
250
  id,
106
251
  title,
107
252
  description: frontmatter.description,
108
253
  theme: frontmatter.theme,
109
254
  author: frontmatter.author,
255
+ position: frontmatter.position,
110
256
  sourcePath: relativePath,
111
257
  sourceAbsolutePath,
112
258
  url,
113
259
  outputPath,
114
260
  previewUrl,
261
+ category,
115
262
  };
116
263
  });
117
- return presentations;
264
+ // Convert categories map to array and sort by position
265
+ const categories = Array.from(categoriesMap.values())
266
+ .filter((cat) => cat.count > 0) // Only include categories with presentations
267
+ .sort((a, b) => a.position - b.position);
268
+ return { presentations, categories };
118
269
  }
119
270
  //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/plugin/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/plugin/scanner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/SlidevCard/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,UAAU,eAAe;IACvB,YAAY,EAAE,oBAAoB,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA0ExF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/SlidevCard/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,UAAU,eAAe;IACvB,YAAY,EAAE,oBAAoB,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAwExF"}
@@ -61,8 +61,7 @@ function SlidevCard({ presentation, isDev }) {
61
61
  presentation.description && (react_1.default.createElement("p", { className: styles_module_css_1.default.description }, presentation.description)),
62
62
  presentation.author && (react_1.default.createElement("div", { className: styles_module_css_1.default.metadata },
63
63
  react_1.default.createElement("div", { className: styles_module_css_1.default.metadataItem },
64
- react_1.default.createElement("svg", { className: styles_module_css_1.default.icon, viewBox: "0 0 16 16", fill: "currentColor" },
65
- react_1.default.createElement("path", { d: "M8 8a3 3 0 100-6 3 3 0 000 6zm0 1a6 6 0 00-6 6h12a6 6 0 00-6-6z" })),
64
+ react_1.default.createElement(icons_1.AuthorIcon, { className: styles_module_css_1.default.icon }),
66
65
  react_1.default.createElement("span", null, presentation.author)))))));
67
66
  // In dev mode, render as a link to the placeholder page
68
67
  if (isDev) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevCard/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,6BA0EC;AApFD,+CAAwC;AAExC,6CAAqD;AACrD,4EAAyC;AAOzC,SAAwB,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAmB;IACzE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAClB;QACE,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO,IAC3B,CAAC,KAAK,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CACnC;YACG,SAAS,IAAI,CACZ,uCAAK,SAAS,EAAE,2BAAM,CAAC,cAAc;gBACnC,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO,GAAQ,CAClC,CACP;YACD,0CACE,GAAG,EAAE,YAAY,CAAC,UAAU,EAC5B,SAAS,EAAE,GAAG,2BAAM,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,2BAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAAM,CAAC,mBAAmB,EAAE,EAC5G,KAAK,EAAE,cAAc,YAAY,CAAC,KAAK,EAAE,EACzC,OAAO,EAAC,MAAM,EACd,MAAM,EAAE,gBAAgB,GACxB,CACD,CACJ,CAAC,CAAC,CAAC,CACF,8BAAC,wBAAgB,IAAC,SAAS,EAAE,2BAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAI,CAC5E,CACG;QAEN,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO;YAC5B,uCAAK,SAAS,EAAE,2BAAM,CAAC,MAAM;gBAC3B,sCAAI,SAAS,EAAE,2BAAM,CAAC,KAAK,IAAG,YAAY,CAAC,KAAK,CAAM;gBACrD,KAAK,IAAI,wCAAM,SAAS,EAAE,GAAG,2BAAM,CAAC,KAAK,IAAI,2BAAM,CAAC,gBAAgB,EAAE,qBAAuB,CAC1F;YAEL,YAAY,CAAC,WAAW,IAAI,CAC3B,qCAAG,SAAS,EAAE,2BAAM,CAAC,WAAW,IAAG,YAAY,CAAC,WAAW,CAAK,CACjE;YAEA,YAAY,CAAC,MAAM,IAAI,CACtB,uCAAK,SAAS,EAAE,2BAAM,CAAC,QAAQ;gBAC7B,uCAAK,SAAS,EAAE,2BAAM,CAAC,YAAY;oBACjC,uCAAK,SAAS,EAAE,2BAAM,CAAC,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc;wBAClE,wCAAM,CAAC,EAAC,iEAAiE,GAAE,CACvE;oBACN,4CAAO,YAAY,CAAC,MAAM,CAAQ,CAC9B,CACF,CACP,CACG,CACL,CACJ,CAAC;IAEF,wDAAwD;IACxD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,qCAAG,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,2BAAM,CAAC,IAAI,IAC9C,WAAW,CACV,CACL,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,OAAO,CACL,qCACE,IAAI,EAAE,YAAY,CAAC,GAAG,EACtB,SAAS,EAAE,2BAAM,CAAC,IAAI,EACtB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,IAExB,WAAW,CACV,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevCard/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,6BAwEC;AAlFD,+CAAwC;AAExC,6CAAiE;AACjE,4EAAyC;AAOzC,SAAwB,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAmB;IACzE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAClB;QACE,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO,IAC3B,CAAC,KAAK,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CACnC;YACG,SAAS,IAAI,CACZ,uCAAK,SAAS,EAAE,2BAAM,CAAC,cAAc;gBACnC,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO,GAAQ,CAClC,CACP;YACD,0CACE,GAAG,EAAE,YAAY,CAAC,UAAU,EAC5B,SAAS,EAAE,GAAG,2BAAM,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,2BAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAAM,CAAC,mBAAmB,EAAE,EAC5G,KAAK,EAAE,cAAc,YAAY,CAAC,KAAK,EAAE,EACzC,OAAO,EAAC,MAAM,EACd,MAAM,EAAE,gBAAgB,GACxB,CACD,CACJ,CAAC,CAAC,CAAC,CACF,8BAAC,wBAAgB,IAAC,SAAS,EAAE,2BAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAI,CAC5E,CACG;QAEN,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO;YAC5B,uCAAK,SAAS,EAAE,2BAAM,CAAC,MAAM;gBAC3B,sCAAI,SAAS,EAAE,2BAAM,CAAC,KAAK,IAAG,YAAY,CAAC,KAAK,CAAM;gBACrD,KAAK,IAAI,wCAAM,SAAS,EAAE,GAAG,2BAAM,CAAC,KAAK,IAAI,2BAAM,CAAC,gBAAgB,EAAE,qBAAuB,CAC1F;YAEL,YAAY,CAAC,WAAW,IAAI,CAC3B,qCAAG,SAAS,EAAE,2BAAM,CAAC,WAAW,IAAG,YAAY,CAAC,WAAW,CAAK,CACjE;YAEA,YAAY,CAAC,MAAM,IAAI,CACtB,uCAAK,SAAS,EAAE,2BAAM,CAAC,QAAQ;gBAC7B,uCAAK,SAAS,EAAE,2BAAM,CAAC,YAAY;oBACjC,8BAAC,kBAAU,IAAC,SAAS,EAAE,2BAAM,CAAC,IAAI,GAAI;oBACtC,4CAAO,YAAY,CAAC,MAAM,CAAQ,CAC9B,CACF,CACP,CACG,CACL,CACJ,CAAC;IAEF,wDAAwD;IACxD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,qCAAG,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,2BAAM,CAAC,IAAI,IAC9C,WAAW,CACV,CACL,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,OAAO,CACL,qCACE,IAAI,EAAE,YAAY,CAAC,GAAG,EACtB,SAAS,EAAE,2BAAM,CAAC,IAAI,EACtB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,IAExB,WAAW,CACV,CACL,CAAC;AACJ,CAAC"}
@@ -9,7 +9,9 @@
9
9
  background: var(--ifm-card-background-color);
10
10
  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
11
11
  border: 1px solid var(--ifm-color-emphasis-200);
12
- width: 530px;
12
+ width: 100%;
13
+ max-width: 560px;
14
+ min-width: 400px;
13
15
  height: 150px;
14
16
  flex-shrink: 0;
15
17
  }
@@ -28,7 +30,7 @@
28
30
  display: flex;
29
31
  align-items: center;
30
32
  justify-content: center;
31
- background: var(--ifm-color-emphasis-100);
33
+ background: var(--ifm-color-emphasis-200);
32
34
  border-radius: 6px;
33
35
  align-self: center;
34
36
  overflow: hidden;
@@ -178,6 +180,8 @@
178
180
  padding: 1rem;
179
181
  flex-direction: column;
180
182
  width: 100%;
183
+ max-width: 100%;
184
+ min-width: 0;
181
185
  height: auto;
182
186
  }
183
187
 
@@ -0,0 +1,11 @@
1
+ /**
2
+ * SlidevCategoryCard Component
3
+ * Displays a category/folder card for directory groupings
4
+ */
5
+ import type { CategoryMetadata } from '../../types';
6
+ interface SlidevCategoryCardProps {
7
+ category: CategoryMetadata;
8
+ }
9
+ export default function SlidevCategoryCard({ category }: SlidevCategoryCardProps): JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/SlidevCategoryCard/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,UAAU,uBAAuB;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAyB7F"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * SlidevCategoryCard Component
4
+ * Displays a category/folder card for directory groupings
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.default = SlidevCategoryCard;
11
+ const react_1 = __importDefault(require("react"));
12
+ const Link_1 = __importDefault(require("@docusaurus/Link"));
13
+ const icons_1 = require("../../utils/icons");
14
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
15
+ function SlidevCategoryCard({ category }) {
16
+ return (react_1.default.createElement(Link_1.default, { to: category.url, className: styles_module_css_1.default.card },
17
+ react_1.default.createElement("div", { className: styles_module_css_1.default.bannerWrapper },
18
+ react_1.default.createElement("span", { className: styles_module_css_1.default.banner }, "Folder")),
19
+ react_1.default.createElement("div", { className: styles_module_css_1.default.iconContainer },
20
+ react_1.default.createElement(icons_1.FolderIcon, { className: styles_module_css_1.default.folderIcon, width: 92, height: 92 })),
21
+ react_1.default.createElement("div", { className: styles_module_css_1.default.content },
22
+ react_1.default.createElement("div", { className: styles_module_css_1.default.header },
23
+ react_1.default.createElement("h3", { className: styles_module_css_1.default.title }, category.label)),
24
+ category.description && (react_1.default.createElement("p", { className: styles_module_css_1.default.description }, category.description)),
25
+ react_1.default.createElement("div", { className: styles_module_css_1.default.metadata },
26
+ react_1.default.createElement("span", { className: styles_module_css_1.default.badge },
27
+ category.count,
28
+ " presentation",
29
+ category.count !== 1 ? 's' : '')))));
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevCategoryCard/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAYH,qCAyBC;AAnCD,kDAA0B;AAC1B,4DAAoC;AAEpC,6CAA+C;AAC/C,4EAAyC;AAMzC,SAAwB,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IAC5E,OAAO,CACH,8BAAC,cAAI,IAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,2BAAM,CAAC,IAAI;QAC1C,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;YAChC,wCAAM,SAAS,EAAE,2BAAM,CAAC,MAAM,aAAe,CAC3C;QACN,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;YAChC,8BAAC,kBAAU,IAAC,SAAS,EAAE,2BAAM,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CACjE;QAEN,uCAAK,SAAS,EAAE,2BAAM,CAAC,OAAO;YAC1B,uCAAK,SAAS,EAAE,2BAAM,CAAC,MAAM;gBACzB,sCAAI,SAAS,EAAE,2BAAM,CAAC,KAAK,IAAG,QAAQ,CAAC,KAAK,CAAM,CAChD;YAEL,QAAQ,CAAC,WAAW,IAAI,CACrB,qCAAG,SAAS,EAAE,2BAAM,CAAC,WAAW,IAAG,QAAQ,CAAC,WAAW,CAAK,CAC/D;YAED,uCAAK,SAAS,EAAE,2BAAM,CAAC,QAAQ;gBAC3B,wCAAM,SAAS,EAAE,2BAAM,CAAC,KAAK;oBAAG,QAAQ,CAAC,KAAK;;oBAAe,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAQ,CAClG,CACJ,CACH,CACV,CAAC;AACN,CAAC"}
@@ -0,0 +1,158 @@
1
+ .card {
2
+ position: relative;
3
+ overflow: hidden;
4
+ display: flex;
5
+ flex-direction: row;
6
+ gap: 1rem;
7
+ padding: 1rem;
8
+ border-radius: 8px;
9
+ transition: all 0.3s ease;
10
+ text-decoration: none !important;
11
+ background: var(--ifm-card-background-color);
12
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
13
+ border: 1px solid var(--ifm-color-primary-darkest);
14
+ width: 100%;
15
+ max-width: 560px;
16
+ min-width: 400px;
17
+ height: 150px;
18
+ flex-shrink: 0;
19
+ }
20
+
21
+ /* Diagonal banner in top-left corner */
22
+ .bannerWrapper {
23
+ position: absolute;
24
+ top: 0;
25
+ left: 0;
26
+ width: 100px;
27
+ height: 100px;
28
+ overflow: hidden;
29
+ pointer-events: none;
30
+ z-index: 1;
31
+ }
32
+
33
+ .banner {
34
+ position: absolute;
35
+ top: 15px;
36
+ left: -25px;
37
+ width: 116px;
38
+ padding: 2px 0;
39
+ background: var(--ifm-color-primary-light);
40
+ color: var(--ifm-color-primary-contrast-background);
41
+ font-size: 0.7rem;
42
+ font-weight: 700;
43
+ text-align: center;
44
+ text-transform: uppercase;
45
+ letter-spacing: 0.5px;
46
+ transform: rotate(-37deg);
47
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
48
+ }
49
+
50
+ .card:hover {
51
+ transform: translateY(-4px);
52
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
53
+ text-decoration: none;
54
+ border-color: var(--ifm-color-primary);
55
+ }
56
+
57
+ .iconContainer {
58
+ flex-shrink: 0;
59
+ height: 115px;
60
+ width: 204px;
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ /* background: var(--ifm-color-emphasis-100); */
65
+ border-radius: 6px;
66
+ align-self: center;
67
+ }
68
+
69
+ .folderIcon {
70
+ color: var(--ifm-color-primary);
71
+ /* opacity: 0.8; */
72
+ }
73
+
74
+ .content {
75
+ flex-grow: 1;
76
+ min-width: 0;
77
+ display: flex;
78
+ flex-direction: column;
79
+ overflow: hidden;
80
+ }
81
+
82
+ .header {
83
+ display: flex;
84
+ align-items: flex-start;
85
+ justify-content: space-between;
86
+ margin-bottom: 0.5rem;
87
+ gap: 0.5rem;
88
+ }
89
+
90
+ .title {
91
+ margin: 0;
92
+ font-size: 1.1rem;
93
+ font-weight: 600;
94
+ color: var(--ifm-color-primary);
95
+ flex-grow: 1;
96
+ /* Truncate to single line */
97
+ overflow: hidden;
98
+ text-overflow: ellipsis;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .badge {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ padding: 0.2rem 0.6rem;
106
+ border-radius: 12px;
107
+ font-size: 0.7rem;
108
+ font-weight: 500;
109
+ background: var(--ifm-color-primary-light);
110
+ color: var(--ifm-color-primary-contrast-background);
111
+ white-space: nowrap;
112
+ flex-shrink: 0;
113
+ }
114
+
115
+ .metadata {
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 0.75rem;
119
+ font-size: 0.85rem;
120
+ color: var(--ifm-color-emphasis-600);
121
+ margin-top: auto;
122
+ min-height: 1.5rem;
123
+ }
124
+
125
+ .description {
126
+ margin-bottom: 0.5rem;
127
+ color: var(--ifm-color-emphasis-700);
128
+ font-size: 0.9rem;
129
+ line-height: 1.5;
130
+ /* Truncate to max 2 lines */
131
+ display: -webkit-box;
132
+ -webkit-box-orient: vertical;
133
+ -webkit-line-clamp: 2;
134
+ line-clamp: 2;
135
+ overflow: hidden;
136
+ text-overflow: ellipsis;
137
+ }
138
+
139
+ @media (max-width: 768px) {
140
+ .card {
141
+ padding: 1rem;
142
+ flex-direction: column;
143
+ width: 100%;
144
+ max-width: 100%;
145
+ min-width: 0;
146
+ height: auto;
147
+ }
148
+
149
+ .iconContainer {
150
+ width: 100%;
151
+ height: 80px;
152
+ align-self: stretch;
153
+ }
154
+
155
+ .title {
156
+ font-size: 1rem;
157
+ }
158
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * SlidevLink Component
3
+ * Embeddable slide preview component for use in MDX documentation
4
+ *
5
+ * Usage:
6
+ * ```mdx
7
+ * import SlidevLink from '@theme/SlidevLink';
8
+ *
9
+ * <SlidevLink link="/slides/module-01-introduction" />
10
+ * ```
11
+ */
12
+ export interface SlidevLinkProps {
13
+ /**
14
+ * URL path to the presentation (relative or absolute)
15
+ * Must match the generated presentation URL
16
+ * Example: "/slides/module-01-introduction"
17
+ * For multi-instance: "/workshop-slides/intro"
18
+ */
19
+ link: string;
20
+ /**
21
+ * Card width
22
+ * @default '550px'
23
+ */
24
+ width?: string;
25
+ /**
26
+ * Plugin ID for multi-instance setups
27
+ * @default 'default'
28
+ */
29
+ pluginId?: string;
30
+ }
31
+ export default function SlidevLink({ link, width, pluginId }: SlidevLinkProps): JSX.Element;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/SlidevLink/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAmED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,IAAI,EACJ,KAAe,EACf,QAAQ,EACX,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6E/B"}