@sp-days-framework/docusaurus-plugin-slidev 1.0.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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +286 -0
  3. package/lib/index.d.ts +7 -0
  4. package/lib/index.d.ts.map +1 -0
  5. package/lib/index.js +14 -0
  6. package/lib/index.js.map +1 -0
  7. package/lib/plugin/builder.d.ts +31 -0
  8. package/lib/plugin/builder.d.ts.map +1 -0
  9. package/lib/plugin/builder.js +421 -0
  10. package/lib/plugin/builder.js.map +1 -0
  11. package/lib/plugin/index.d.ts +18 -0
  12. package/lib/plugin/index.d.ts.map +1 -0
  13. package/lib/plugin/index.js +148 -0
  14. package/lib/plugin/index.js.map +1 -0
  15. package/lib/plugin/scanner.d.ts +12 -0
  16. package/lib/plugin/scanner.d.ts.map +1 -0
  17. package/lib/plugin/scanner.js +119 -0
  18. package/lib/plugin/scanner.js.map +1 -0
  19. package/lib/theme/SlidevCard/index.d.ts +12 -0
  20. package/lib/theme/SlidevCard/index.d.ts.map +1 -0
  21. package/lib/theme/SlidevCard/index.js +74 -0
  22. package/lib/theme/SlidevCard/index.js.map +1 -0
  23. package/lib/theme/SlidevCard/styles.module.css +206 -0
  24. package/lib/theme/SlidevOverview/index.d.ts +6 -0
  25. package/lib/theme/SlidevOverview/index.d.ts.map +1 -0
  26. package/lib/theme/SlidevOverview/index.js +165 -0
  27. package/lib/theme/SlidevOverview/index.js.map +1 -0
  28. package/lib/theme/SlidevOverview/styles.module.css +283 -0
  29. package/lib/theme/SlidevPresentation/index.d.ts +6 -0
  30. package/lib/theme/SlidevPresentation/index.d.ts.map +1 -0
  31. package/lib/theme/SlidevPresentation/index.js +75 -0
  32. package/lib/theme/SlidevPresentation/index.js.map +1 -0
  33. package/lib/theme/SlidevPresentation/styles.module.css +178 -0
  34. package/lib/types/index.d.ts +171 -0
  35. package/lib/types/index.d.ts.map +1 -0
  36. package/lib/types/index.js +6 -0
  37. package/lib/types/index.js.map +1 -0
  38. package/lib/utils/fileSystem.d.ts +19 -0
  39. package/lib/utils/fileSystem.d.ts.map +1 -0
  40. package/lib/utils/fileSystem.js +89 -0
  41. package/lib/utils/fileSystem.js.map +1 -0
  42. package/lib/utils/icons.d.ts +23 -0
  43. package/lib/utils/icons.d.ts.map +1 -0
  44. package/lib/utils/icons.js +37 -0
  45. package/lib/utils/icons.js.map +1 -0
  46. package/lib/utils/logger.d.ts +43 -0
  47. package/lib/utils/logger.d.ts.map +1 -0
  48. package/lib/utils/logger.js +92 -0
  49. package/lib/utils/logger.js.map +1 -0
  50. package/package.json +75 -0
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Type definitions for the Docusaurus Slidev Plugin
3
+ */
4
+ /**
5
+ * Plugin configuration options
6
+ */
7
+ export interface PluginOptions {
8
+ /**
9
+ * Directory to scan for Slidev markdown files
10
+ * @default './slidev'
11
+ */
12
+ sourceDir: string;
13
+ /**
14
+ * Output directory inside static/ for built presentations
15
+ * @default 'slides'
16
+ */
17
+ outputDir: string;
18
+ /**
19
+ * Global theme override for all presentations
20
+ * Example: '@slidev/theme-seriph'
21
+ * @default undefined
22
+ */
23
+ theme?: string;
24
+ /**
25
+ * Enable PDF download functionality in presentations
26
+ * Requires playwright-chromium to be installed
27
+ * @default false
28
+ */
29
+ download: boolean;
30
+ /**
31
+ * URL path for the auto-generated overview page
32
+ * @default '/slidev'
33
+ */
34
+ overviewPath: string;
35
+ /**
36
+ * Custom title for the overview page
37
+ * @default 'Slidev Presentations'
38
+ */
39
+ overviewTitle?: string;
40
+ /**
41
+ * Custom tagline/description for the overview page
42
+ * @default 'Interactive presentation overview'
43
+ */
44
+ overviewTagline?: string;
45
+ /**
46
+ * Plugin ID for multiple instances
47
+ * @default 'default'
48
+ */
49
+ id?: string;
50
+ /**
51
+ * Timeout in seconds for building each presentation
52
+ * If a build takes longer than this, it will be terminated
53
+ * @default 60
54
+ */
55
+ buildTimeout?: number;
56
+ /**
57
+ * Enable verbose logging for Slidev build output
58
+ * Useful for debugging build issues
59
+ * @default false
60
+ */
61
+ verbose?: boolean;
62
+ }
63
+ /**
64
+ * Metadata extracted from a Slidev presentation
65
+ */
66
+ export interface PresentationMetadata {
67
+ /**
68
+ * Unique identifier for the presentation
69
+ * Generated from file path: 'module-01/slides.md' -> 'module-01-slides'
70
+ */
71
+ id: string;
72
+ /**
73
+ * Title from frontmatter
74
+ * Falls back to filename if not specified
75
+ */
76
+ title: string;
77
+ /**
78
+ * Description from frontmatter
79
+ */
80
+ description?: string;
81
+ /**
82
+ * Theme specified in frontmatter
83
+ */
84
+ theme?: string;
85
+ /**
86
+ * Author from frontmatter
87
+ */
88
+ author?: string;
89
+ /**
90
+ * Relative path to the source markdown file
91
+ */
92
+ sourcePath: string;
93
+ /**
94
+ * Absolute path to the source markdown file
95
+ */
96
+ sourceAbsolutePath: string;
97
+ /**
98
+ * URL path where the presentation will be served
99
+ * Example: '/slides/module-01-slides/'
100
+ */
101
+ url: string;
102
+ /**
103
+ * Output directory for the built presentation
104
+ */
105
+ outputPath: string;
106
+ /**
107
+ * URL path to the preview HTML file
108
+ * Example: '/slides/module-01-slides/preview.html'
109
+ */
110
+ previewUrl?: string;
111
+ }
112
+ /**
113
+ * Slidev frontmatter configuration
114
+ * These are extracted from the YAML frontmatter in .md files
115
+ */
116
+ export interface SlidevFrontmatter {
117
+ theme?: string;
118
+ title?: string;
119
+ description?: string;
120
+ author?: string;
121
+ highlighter?: string;
122
+ transition?: string;
123
+ background?: string;
124
+ class?: string;
125
+ fonts?: {
126
+ sans?: string;
127
+ serif?: string;
128
+ mono?: string;
129
+ };
130
+ [key: string]: any;
131
+ }
132
+ /**
133
+ * Build result for a single presentation
134
+ */
135
+ export interface BuildResult {
136
+ /**
137
+ * Presentation ID
138
+ */
139
+ id: string;
140
+ /**
141
+ * Whether the build was successful
142
+ */
143
+ success: boolean;
144
+ /**
145
+ * Error message if build failed
146
+ */
147
+ error?: string;
148
+ /**
149
+ * Build duration in seconds
150
+ */
151
+ duration?: number;
152
+ }
153
+ /**
154
+ * Plugin content data
155
+ * This is made available globally via Docusaurus
156
+ */
157
+ export interface PluginContentData {
158
+ /**
159
+ * List of all discovered presentations
160
+ */
161
+ presentations: PresentationMetadata[];
162
+ /**
163
+ * Plugin configuration
164
+ */
165
+ config: PluginOptions;
166
+ /**
167
+ * Whether the site is running in development mode
168
+ */
169
+ isDev: boolean;
170
+ }
171
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,aAAa,EAAE,oBAAoB,EAAE,CAAC;IAEtC;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for the Docusaurus Slidev Plugin
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * File system utilities for Slidev Plugin
3
+ */
4
+ /**
5
+ * Cleans up the output directory before building presentations
6
+ * Removes all subdirectories and files but preserves .gitignore
7
+ */
8
+ export declare function cleanupOutputDirectory(outputPath: string): void;
9
+ /**
10
+ * Cleans up Slidev-generated files in the source directory
11
+ * Removes index.html and other build artifacts but preserves .md files
12
+ */
13
+ export declare function cleanupSourceDirectory(sourcePath: string): void;
14
+ /**
15
+ * Creates a .gitignore file in the output directory
16
+ * Content: ignore all files except .gitignore itself
17
+ */
18
+ export declare function createGitignore(outputPath: string): void;
19
+ //# sourceMappingURL=fileSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSystem.d.ts","sourceRoot":"","sources":["../../src/utils/fileSystem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAyB/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA4B/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAcxD"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * File system utilities for Slidev Plugin
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.cleanupOutputDirectory = cleanupOutputDirectory;
10
+ exports.cleanupSourceDirectory = cleanupSourceDirectory;
11
+ exports.createGitignore = createGitignore;
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const path_1 = __importDefault(require("path"));
14
+ const logger_1 = require("./logger");
15
+ /**
16
+ * Cleans up the output directory before building presentations
17
+ * Removes all subdirectories and files but preserves .gitignore
18
+ */
19
+ function cleanupOutputDirectory(outputPath) {
20
+ if (!fs_1.default.existsSync(outputPath)) {
21
+ return;
22
+ }
23
+ const entries = fs_1.default.readdirSync(outputPath, { withFileTypes: true });
24
+ for (const entry of entries) {
25
+ // Skip .gitignore file
26
+ if (entry.name === ".gitignore") {
27
+ continue;
28
+ }
29
+ const fullPath = path_1.default.join(outputPath, entry.name);
30
+ if (entry.isDirectory()) {
31
+ // Remove directory recursively
32
+ fs_1.default.rmSync(fullPath, { recursive: true, force: true });
33
+ }
34
+ else if (entry.isFile()) {
35
+ // Remove file
36
+ fs_1.default.rmSync(fullPath, { force: true });
37
+ }
38
+ }
39
+ (0, logger_1.logInfo)(`Cleaned output directory: ${(0, logger_1.formatPath)(outputPath)}`);
40
+ }
41
+ /**
42
+ * Cleans up Slidev-generated files in the source directory
43
+ * Removes index.html and other build artifacts but preserves .md files
44
+ */
45
+ function cleanupSourceDirectory(sourcePath) {
46
+ if (!fs_1.default.existsSync(sourcePath)) {
47
+ return;
48
+ }
49
+ const entries = fs_1.default.readdirSync(sourcePath, { withFileTypes: true });
50
+ const filesToRemove = ["index.html", ".slidev", "dist"];
51
+ for (const entry of entries) {
52
+ // Only remove specific Slidev-generated files/directories
53
+ if (!filesToRemove.includes(entry.name)) {
54
+ continue;
55
+ }
56
+ const fullPath = path_1.default.join(sourcePath, entry.name);
57
+ try {
58
+ if (entry.isDirectory()) {
59
+ fs_1.default.rmSync(fullPath, { recursive: true, force: true });
60
+ (0, logger_1.logInfo)(`Removed Slidev artifact directory: ${(0, logger_1.formatPath)(entry.name)}`);
61
+ }
62
+ else if (entry.isFile()) {
63
+ fs_1.default.rmSync(fullPath, { force: true });
64
+ (0, logger_1.logInfo)(`Removed Slidev artifact file: ${(0, logger_1.formatPath)(entry.name)}`);
65
+ }
66
+ }
67
+ catch (error) {
68
+ // Ignore errors - file might be in use or already deleted
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Creates a .gitignore file in the output directory
74
+ * Content: ignore all files except .gitignore itself
75
+ */
76
+ function createGitignore(outputPath) {
77
+ // Ensure output directory exists
78
+ if (!fs_1.default.existsSync(outputPath)) {
79
+ fs_1.default.mkdirSync(outputPath, { recursive: true });
80
+ }
81
+ const gitignorePath = path_1.default.join(outputPath, ".gitignore");
82
+ // Only create if it doesn't exist
83
+ if (!fs_1.default.existsSync(gitignorePath)) {
84
+ const content = "*\n!.gitignore\n";
85
+ fs_1.default.writeFileSync(gitignorePath, content, "utf-8");
86
+ (0, logger_1.logInfo)(`Created .gitignore in ${(0, logger_1.formatPath)(outputPath)}`);
87
+ }
88
+ }
89
+ //# sourceMappingURL=fileSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../src/utils/fileSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Icon components for Slidev Plugin
3
+ */
4
+ interface IconProps {
5
+ className?: string;
6
+ width?: number;
7
+ height?: number;
8
+ }
9
+ /**
10
+ * Presentation placeholder icon
11
+ * Used when no preview image is available
12
+ */
13
+ export declare function PresentationIcon({ className, width, height }: IconProps): JSX.Element;
14
+ /**
15
+ * Sort ascending icon (A-Z with down arrow)
16
+ */
17
+ export declare function SortAscIcon({ className, width, height }: IconProps): JSX.Element;
18
+ /**
19
+ * Sort descending icon (A-Z with up arrow)
20
+ */
21
+ export declare function SortDescIcon({ className, width, height }: IconProps): JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/utils/icons.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,UAAU,SAAS;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAU,EAAE,MAAW,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAS/F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAU,EAAE,MAAW,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAe1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,KAAU,EAAE,MAAW,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAe3F"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Icon components for Slidev Plugin
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PresentationIcon = PresentationIcon;
10
+ exports.SortAscIcon = SortAscIcon;
11
+ exports.SortDescIcon = SortDescIcon;
12
+ const react_1 = __importDefault(require("react"));
13
+ /**
14
+ * Presentation placeholder icon
15
+ * Used when no preview image is available
16
+ */
17
+ function PresentationIcon({ className, width = 24, height = 24 }) {
18
+ return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: width, height: height, className: className, viewBox: "0 0 24 24" },
19
+ react_1.default.createElement("g", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2" },
20
+ react_1.default.createElement("path", { d: "M3 4h18M4 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4m-8 12v4m-3 0h6" }),
21
+ react_1.default.createElement("path", { d: "m8 12l3-3l2 2l3-3" }))));
22
+ }
23
+ /**
24
+ * Sort ascending icon (A-Z with down arrow)
25
+ */
26
+ function SortAscIcon({ className, width = 24, height = 24 }) {
27
+ return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: width, height: height, viewBox: "0 0 1024 1024", className: className },
28
+ react_1.default.createElement("path", { fill: "currentColor", d: "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9c0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4c2.4-.8 4.3-2.4 5.5-4.6c1.1-2.2 1.3-4.7.6-7.1M663.3 325.5l32.8-116.9h6.3l32.1 116.9zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3M416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13" })));
29
+ }
30
+ /**
31
+ * Sort descending icon (A-Z with up arrow)
32
+ */
33
+ function SortDescIcon({ className, width = 24, height = 24 }) {
34
+ return (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: width, height: height, viewBox: "0 0 1024 1024", className: className },
35
+ react_1.default.createElement("path", { fill: "currentColor", d: "M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9c0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4c2.4-.8 4.3-2.4 5.5-4.6c1.1-2.2 1.3-4.7.6-7.1M663.3 325.5l32.8-116.9h6.3l32.1 116.9zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3M310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13z" })));
36
+ }
37
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/utils/icons.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAcH,4CASC;AAKD,kCAeC;AAKD,oCAeC;AA7DD,kDAA0B;AAQ1B;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAa;IAChF,OAAO,CACL,uCAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW;QAC7G,qCAAG,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG;YAC/F,wCAAM,CAAC,EAAC,gEAAgE,GAAG;YAC3E,wCAAM,CAAC,EAAC,mBAAmB,GAAG,CAC5B,CACA,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAa;IAC3E,OAAO,CACL,uCACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAC,eAAe,EACvB,SAAS,EAAE,SAAS;QAEpB,wCACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,wsBAAwsB,GAC1sB,CACE,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAa;IAC5E,OAAO,CACL,uCACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAC,eAAe,EACvB,SAAS,EAAE,SAAS;QAEpB,wCACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,gsBAAgsB,GAClsB,CACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Slidev Plugin Logger
3
+ * Wraps Docusaurus logger for consistent build-time logging
4
+ * This is for Node.js build-time only (plugins)
5
+ */
6
+ /**
7
+ * Log info message
8
+ * Format: [INFO] [Slidev Plugin] message
9
+ */
10
+ export declare function logInfo(message: string): void;
11
+ /**
12
+ * Log warning message
13
+ * Format: [WARNING] [Slidev Plugin] message
14
+ */
15
+ export declare function logWarn(message: string): void;
16
+ /**
17
+ * Log error message
18
+ * Format: [ERROR] [Slidev Plugin] message
19
+ */
20
+ export declare function logError(message: string, error?: any): void;
21
+ /**
22
+ * Log success message
23
+ * Format: [SUCCESS] [Slidev Plugin] message
24
+ */
25
+ export declare function logSuccess(message: string): void;
26
+ /**
27
+ * Format a file path for logging (with blue underline)
28
+ */
29
+ export declare function formatPath(filePath: string): string;
30
+ /**
31
+ * Format a number for logging (with cyan color)
32
+ */
33
+ export declare function formatNumber(num: number): string;
34
+ /**
35
+ * Format code/identifier for logging (with cyan color)
36
+ */
37
+ export declare function formatCode(code: string): string;
38
+ /**
39
+ * Filter Slidev build output to remove unwanted warnings
40
+ * Specifically filters the "outDir...will not be emptied" warning
41
+ */
42
+ export declare function filterSlidevOutput(output: string): string;
43
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAO3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAezD"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Slidev Plugin Logger
4
+ * Wraps Docusaurus logger for consistent build-time logging
5
+ * This is for Node.js build-time only (plugins)
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.logInfo = logInfo;
12
+ exports.logWarn = logWarn;
13
+ exports.logError = logError;
14
+ exports.logSuccess = logSuccess;
15
+ exports.formatPath = formatPath;
16
+ exports.formatNumber = formatNumber;
17
+ exports.formatCode = formatCode;
18
+ exports.filterSlidevOutput = filterSlidevOutput;
19
+ const logger_1 = __importDefault(require("@docusaurus/logger"));
20
+ const PLUGIN_PREFIX = 'Slidev Plugin';
21
+ /**
22
+ * Log info message
23
+ * Format: [INFO] [Slidev Plugin] message
24
+ */
25
+ function logInfo(message) {
26
+ logger_1.default.info `[${PLUGIN_PREFIX}] ${message}`;
27
+ }
28
+ /**
29
+ * Log warning message
30
+ * Format: [WARNING] [Slidev Plugin] message
31
+ */
32
+ function logWarn(message) {
33
+ logger_1.default.warn `[${PLUGIN_PREFIX}] ${message}`;
34
+ }
35
+ /**
36
+ * Log error message
37
+ * Format: [ERROR] [Slidev Plugin] message
38
+ */
39
+ function logError(message, error) {
40
+ if (error) {
41
+ logger_1.default.error `[${PLUGIN_PREFIX}] ${message}`;
42
+ console.error(error);
43
+ }
44
+ else {
45
+ logger_1.default.error `[${PLUGIN_PREFIX}] ${message}`;
46
+ }
47
+ }
48
+ /**
49
+ * Log success message
50
+ * Format: [SUCCESS] [Slidev Plugin] message
51
+ */
52
+ function logSuccess(message) {
53
+ logger_1.default.success `[${PLUGIN_PREFIX}] ${message}`;
54
+ }
55
+ /**
56
+ * Format a file path for logging (with blue underline)
57
+ */
58
+ function formatPath(filePath) {
59
+ return logger_1.default.path(filePath);
60
+ }
61
+ /**
62
+ * Format a number for logging (with cyan color)
63
+ */
64
+ function formatNumber(num) {
65
+ return logger_1.default.cyan(num.toString());
66
+ }
67
+ /**
68
+ * Format code/identifier for logging (with cyan color)
69
+ */
70
+ function formatCode(code) {
71
+ return logger_1.default.code(code);
72
+ }
73
+ /**
74
+ * Filter Slidev build output to remove unwanted warnings
75
+ * Specifically filters the "outDir...will not be emptied" warning
76
+ */
77
+ function filterSlidevOutput(output) {
78
+ const lines = output.split('\n');
79
+ const filtered = lines.filter(line => {
80
+ // Filter out the outDir warning
81
+ if (line.includes('outDir') && line.includes('will not be emptied')) {
82
+ return false;
83
+ }
84
+ // Filter out the empty override suggestion line
85
+ if (line.includes('Use --emptyOutDir to override')) {
86
+ return false;
87
+ }
88
+ return true;
89
+ });
90
+ return filtered.join('\n').trim();
91
+ }
92
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAUH,0BAEC;AAMD,0BAEC;AAMD,4BAOC;AAMD,gCAEC;AAKD,gCAEC;AAKD,oCAEC;AAKD,gCAEC;AAMD,gDAeC;AAjFD,gEAAwC;AAExC,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,gBAAM,CAAC,IAAI,CAAA,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,gBAAM,CAAC,IAAI,CAAA,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,OAAe,EAAE,KAAW;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,gBAAM,CAAC,KAAK,CAAA,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,gBAAM,CAAC,KAAK,CAAA,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,gBAAM,CAAC,OAAO,CAAA,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACzC,OAAO,gBAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,gBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnC,gCAAgC;QAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gDAAgD;QAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@sp-days-framework/docusaurus-plugin-slidev",
3
+ "version": "1.0.0",
4
+ "description": "A Docusaurus plugin to integrate Slidev presentations into your Docusaurus site.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/helse-sorost/sp-days-framework",
8
+ "directory": "docusaurus-plugin-slidev"
9
+ },
10
+ "keywords": [
11
+ "docusaurus",
12
+ "docusaurus-plugin",
13
+ "docusaurus-theme",
14
+ "tasks",
15
+ "interactive",
16
+ "training",
17
+ "progress"
18
+ ],
19
+ "author": "SP-Days Framework",
20
+ "license": "MIT",
21
+ "main": "lib/index.js",
22
+ "types": "lib/index.d.ts",
23
+ "files": [
24
+ "lib/**/*",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "exports": {
29
+ ".": {
30
+ "require": "./lib/index.js",
31
+ "import": "./lib/index.js",
32
+ "types": "./lib/index.d.ts"
33
+ },
34
+ "./lib/theme/*": "./lib/theme/*",
35
+ "./lib/plugin/*": "./lib/plugin/*"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "scripts": {
41
+ "build": "rm -rf lib && tsc && node ./copyUntypedFiles.js",
42
+ "watch": "npm-run-all -c -p copy:watch build:watch",
43
+ "build:watch": "tsc --watch",
44
+ "copy:watch": "node ./copyUntypedFiles.js --watch"
45
+ },
46
+ "dependencies": {
47
+ "@docusaurus/core": "^3.9.2",
48
+ "@docusaurus/preset-classic": "^3.9.2",
49
+ "@docusaurus/theme-common": "^3.9.2",
50
+ "@docusaurus/utils-validation": "^3.9.2",
51
+ "@slidev/cli": "^52.6.0",
52
+ "@slidev/types": "^52.6.0",
53
+ "gray-matter": "^4.0.3",
54
+ "unified": "^11.0.5"
55
+ },
56
+ "devDependencies": {
57
+ "@docusaurus/core": "^3.9.2",
58
+ "@docusaurus/types": "^3.0.0",
59
+ "@types/fs-extra": "^11.0.1",
60
+ "@types/node": "^24.9.1",
61
+ "@types/react": "^18.0.0 || ^19.0.0",
62
+ "@types/react-dom": "^18.0.0 || ^19.0.0",
63
+ "@types/webpack": "^5.28.5",
64
+ "chokidar": "^3.5.3",
65
+ "npm-run-all": "^4.1.5",
66
+ "typescript": "^5.0.0"
67
+ },
68
+ "peerDependencies": {
69
+ "react": "^18.0.0 || ^19.0.0",
70
+ "react-dom": "^18.0.0 || ^19.0.0"
71
+ },
72
+ "engines": {
73
+ "node": ">=18.0"
74
+ }
75
+ }