@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,283 @@
1
+ .container {
2
+ max-width: 1500px;
3
+ margin: 0 auto;
4
+ padding: 2rem;
5
+ position: relative;
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: center;
9
+ }
10
+
11
+ .headerWrapper {
12
+ margin-bottom: 3rem;
13
+ width: 100%;
14
+ }
15
+
16
+ .header {
17
+ text-align: center;
18
+ }
19
+
20
+ .title {
21
+ font-size: 2.5rem;
22
+ font-weight: 700;
23
+ color: var(--ifm-heading-color);
24
+ margin-bottom: 1rem;
25
+ }
26
+
27
+ .subtitle {
28
+ font-size: 1.15rem;
29
+ color: var(--ifm-color-emphasis-700);
30
+ max-width: 600px;
31
+ margin: 0 auto;
32
+ }
33
+
34
+ .devModeWarning {
35
+ padding: 1.5rem;
36
+ margin-bottom: 2rem;
37
+ border-radius: 8px;
38
+ background: var(--ifm-color-warning-contrast-background);
39
+ border-left: 4px solid var(--ifm-color-warning);
40
+ }
41
+
42
+ .warningTitle {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: 0.5rem;
46
+ margin-bottom: 0.5rem;
47
+ font-weight: 600;
48
+ color: var(--ifm-color-warning-darkest);
49
+ }
50
+
51
+ .warningIcon {
52
+ width: 24px;
53
+ height: 24px;
54
+ }
55
+
56
+ .warningText {
57
+ margin: 0;
58
+ color: var(--ifm-color-warning-contrast-foreground);
59
+ line-height: 1.6;
60
+ }
61
+
62
+ .warningText em {
63
+ display: block;
64
+ margin-top: 0.5rem;
65
+ font-size: 0.9rem;
66
+ }
67
+
68
+ /* .warningCode {
69
+ display: inline-block;
70
+ padding: 0.2rem 0.5rem;
71
+ margin: 0 0.25rem;
72
+ background: var(--ifm-code-background);
73
+ border-radius: 4px;
74
+ font-family: var(--ifm-font-family-monospace);
75
+ font-size: 0.9rem;
76
+ color: var(--ifm-color-warning-contrast-background);
77
+ } */
78
+
79
+ /* Controls (Sort and View Toggle) - Fixed to top-right of viewport */
80
+ .controls {
81
+ position: fixed;
82
+ top: calc(var(--ifm-navbar-height) + 1rem);
83
+ right: 2rem;
84
+ display: flex;
85
+ gap: 0.5rem;
86
+ align-items: center;
87
+ z-index: 100;
88
+ background: var(--ifm-background-color);
89
+ padding: 0.5rem;
90
+ border-radius: 8px;
91
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
92
+ }
93
+
94
+ .controlButton {
95
+ padding: 0.5rem;
96
+ border: 1px solid var(--ifm-color-emphasis-300);
97
+ border-radius: 6px;
98
+ background: var(--ifm-background-color);
99
+ color: var(--ifm-color-emphasis-700);
100
+ cursor: pointer;
101
+ transition: all 0.2s ease;
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: center;
105
+ }
106
+
107
+ .controlButton:hover {
108
+ border-color: var(--ifm-color-primary);
109
+ color: var(--ifm-color-primary-contrast-background);
110
+ background: var(--ifm-color-primary-lightest);
111
+ }
112
+
113
+ /* Content Container - Fixed min-height to prevent jumping */
114
+ .contentContainer {
115
+ width: 100%;
116
+ max-width: 1500px;
117
+ position: relative;
118
+ }
119
+
120
+ /* Visibility toggle classes */
121
+
122
+ .grid.hidden {
123
+ /* Keep in DOM but hidden - preserves iframe state */
124
+ display: none;
125
+ }
126
+
127
+ /* Grid View */
128
+ .grid {
129
+ display: flex;
130
+ flex-wrap: wrap;
131
+ justify-content: center;
132
+ gap: 1.5rem;
133
+ margin-bottom: 2rem;
134
+ }
135
+
136
+ /* Details View (Table) */
137
+ .detailsTable {
138
+ margin-bottom: 2rem;
139
+ overflow-x: auto;
140
+ width: 100%;
141
+ }
142
+
143
+ .detailsTable.hidden {
144
+ /* Keep in DOM but hidden */
145
+ display: none;
146
+ }
147
+
148
+ .detailsTable table {
149
+ display: table;
150
+ border-collapse: collapse;
151
+ background: var(--ifm-background-surface-color);
152
+ border-radius: 8px;
153
+ overflow: hidden;
154
+ }
155
+
156
+ .detailsTable thead {
157
+ background: var(--ifm-color-emphasis-100);
158
+ }
159
+
160
+ .detailsTable th {
161
+ padding: 1rem;
162
+ text-align: left;
163
+ font-weight: 600;
164
+ color: var(--ifm-color-emphasis-800);
165
+ font-size: 0.9rem;
166
+ border-bottom: 2px solid var(--ifm-color-emphasis-200);
167
+ }
168
+
169
+ .detailsTable td {
170
+ padding: 1rem;
171
+ border-bottom: 1px solid var(--ifm-color-emphasis-200);
172
+ font-size: 0.9rem;
173
+ }
174
+
175
+ .detailsTable tbody tr:last-child td {
176
+ border-bottom: none;
177
+ }
178
+
179
+ .detailsTable tbody tr:hover {
180
+ background: var(--ifm-color-emphasis-50);
181
+ }
182
+
183
+ .detailsTitle {
184
+ font-weight: 600;
185
+ color: var(--ifm-color-emphasis-900);
186
+ }
187
+
188
+ .detailsLink {
189
+ font-weight: 600;
190
+ color: var(--ifm-color-primary);
191
+ text-decoration: none;
192
+ }
193
+
194
+ .detailsLink:hover {
195
+ text-decoration: underline;
196
+ }
197
+
198
+ .detailsDescription {
199
+ color: var(--ifm-color-emphasis-700);
200
+ }
201
+
202
+ /* Empty State */
203
+ .emptyState {
204
+ text-align: center;
205
+ padding: 4rem 2rem;
206
+ color: var(--ifm-color-emphasis-600);
207
+ }
208
+
209
+ .emptyStateIcon {
210
+ width: 64px;
211
+ height: 64px;
212
+ margin: 0 auto 1rem;
213
+ opacity: 0.5;
214
+ }
215
+
216
+ .emptyStateTitle {
217
+ font-size: 1.5rem;
218
+ font-weight: 600;
219
+ margin-bottom: 0.5rem;
220
+ color: var(--ifm-color-emphasis-700);
221
+ }
222
+
223
+ .emptyStateText {
224
+ font-size: 1rem;
225
+ margin-bottom: 1.5rem;
226
+ }
227
+
228
+ .emptyStateCode {
229
+ display: inline-block;
230
+ padding: 0.75rem 1.5rem;
231
+ background: var(--ifm-code-background);
232
+ border-radius: 6px;
233
+ font-family: var(--ifm-font-family-monospace);
234
+ font-size: 0.9rem;
235
+ color: var(--ifm-color-emphasis-900);
236
+ }
237
+
238
+ @media (max-width: 768px) {
239
+ .container {
240
+ padding: 1rem;
241
+ }
242
+
243
+ .title {
244
+ font-size: 2rem;
245
+ }
246
+
247
+ .subtitle {
248
+ font-size: 1rem;
249
+ }
250
+
251
+ .headerWrapper {
252
+ flex-direction: column;
253
+ gap: 1rem;
254
+ }
255
+
256
+ .header {
257
+ margin-bottom: 0;
258
+ }
259
+
260
+ .controls {
261
+ top: calc(var(--ifm-navbar-height) + 0.5rem);
262
+ right: 1rem;
263
+ padding: 0.25rem;
264
+ }
265
+
266
+ .contentContainer {
267
+ min-width: 100%;
268
+ }
269
+
270
+ .grid {
271
+ flex-direction: column;
272
+ align-items: center;
273
+ }
274
+
275
+ .detailsTable {
276
+ font-size: 0.85rem;
277
+ }
278
+
279
+ .detailsTable th,
280
+ .detailsTable td {
281
+ padding: 0.75rem 0.5rem;
282
+ }
283
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * SlidevPresentation Component
3
+ * Displays individual presentation page (placeholder in dev mode, iframe in production)
4
+ */
5
+ export default function SlidevPresentation(): JSX.Element;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/SlidevPresentation/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,OAAO,UAAU,kBAAkB,IAAI,GAAG,CAAC,OAAO,CA4GxD"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * SlidevPresentation Component
4
+ * Displays individual presentation page (placeholder in dev mode, iframe in production)
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 = SlidevPresentation;
11
+ const react_1 = __importDefault(require("react"));
12
+ const Layout_1 = __importDefault(require("@theme/Layout"));
13
+ const useGlobalData_1 = require("@docusaurus/useGlobalData");
14
+ const router_1 = require("@docusaurus/router");
15
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
16
+ function SlidevPresentation() {
17
+ const { presentations, config, isDev } = (0, useGlobalData_1.usePluginData)('docusaurus-plugin-slidev');
18
+ const location = (0, router_1.useLocation)();
19
+ // Find presentation by matching the current URL path
20
+ // The URL will be something like '/slides/creating-your-first-slidev/'
21
+ // We need to find the presentation whose URL matches this path
22
+ const presentation = presentations.find(p => {
23
+ // Normalize both paths for comparison (remove trailing slashes)
24
+ const normalizedPresentationUrl = p.url.endsWith('/') ? p.url.slice(0, -1) : p.url;
25
+ const normalizedLocationPath = location.pathname.endsWith('/') ? location.pathname.slice(0, -1) : location.pathname;
26
+ return normalizedPresentationUrl === normalizedLocationPath;
27
+ });
28
+ if (!presentation) {
29
+ return (react_1.default.createElement(Layout_1.default, { title: "Presentation Not Found" },
30
+ react_1.default.createElement("div", { className: styles_module_css_1.default.container },
31
+ react_1.default.createElement("div", { className: styles_module_css_1.default.errorState },
32
+ react_1.default.createElement("svg", { className: styles_module_css_1.default.errorIcon, viewBox: "0 0 24 24", fill: "currentColor" },
33
+ react_1.default.createElement("path", { fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "2", d: "M3 4h1m4 0h13M4 4v10a2 2 0 0 0 2 2h10m3.42-.592c.359-.362.58-.859.58-1.408V4m-8 12v4m-3 0h6m-7-8l2-2m4 0l2-2M3 3l18 18" })),
34
+ react_1.default.createElement("h1", { className: styles_module_css_1.default.errorTitle }, "Presentation Not Found"),
35
+ react_1.default.createElement("p", { className: styles_module_css_1.default.errorText },
36
+ "The presentation at ",
37
+ react_1.default.createElement("code", null, location.pathname),
38
+ " could not be found.")))));
39
+ }
40
+ // Development mode: show placeholder
41
+ if (isDev) {
42
+ return (react_1.default.createElement(Layout_1.default, { title: presentation.title, description: presentation.description },
43
+ react_1.default.createElement("div", { className: styles_module_css_1.default.container },
44
+ react_1.default.createElement("div", { className: styles_module_css_1.default.placeholder },
45
+ react_1.default.createElement("div", { className: styles_module_css_1.default.placeholderIcon },
46
+ react_1.default.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" },
47
+ react_1.default.createElement("g", { fill: "none", stroke: "currentColor", "stroke-linecap": "round", "stroke-linejoin": "round", "stroke-width": "2" },
48
+ 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" }),
49
+ react_1.default.createElement("path", { d: "m8 12l3-3l2 2l3-3" })))),
50
+ react_1.default.createElement("h1", { className: styles_module_css_1.default.placeholderTitle }, presentation.title),
51
+ presentation.description && (react_1.default.createElement("p", { className: styles_module_css_1.default.placeholderDescription }, presentation.description)),
52
+ presentation.author && (react_1.default.createElement("div", { className: styles_module_css_1.default.placeholderMeta },
53
+ react_1.default.createElement("svg", { className: styles_module_css_1.default.metaIcon, viewBox: "0 0 16 16", fill: "currentColor" },
54
+ 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" })),
55
+ react_1.default.createElement("span", null,
56
+ "By ",
57
+ presentation.author))),
58
+ react_1.default.createElement("div", { className: styles_module_css_1.default.placeholderMessage },
59
+ react_1.default.createElement("div", { className: styles_module_css_1.default.messageIcon },
60
+ react_1.default.createElement("svg", { viewBox: "0 0 24 24" },
61
+ react_1.default.createElement("path", { fill: "currentColor", d: "M12 1.67c.955 0 1.845.467 2.39 1.247l.105.16l8.114 13.548a2.914 2.914 0 0 1-2.307 4.363l-.195.008H3.882a2.914 2.914 0 0 1-2.582-4.2l.099-.185l8.11-13.538A2.91 2.91 0 0 1 12 1.67M12.01 15l-.127.007a1 1 0 0 0 0 1.986L12 17l.127-.007a1 1 0 0 0 0-1.986zM12 8a1 1 0 0 0-.993.883L11 9v4l.007.117a1 1 0 0 0 1.986 0L13 13V9l-.007-.117A1 1 0 0 0 12 8" }))),
62
+ react_1.default.createElement("h2", { className: styles_module_css_1.default.messageTitle }, "Development Mode"),
63
+ react_1.default.createElement("p", { className: styles_module_css_1.default.messageText }, "This presentation is not available in development mode. To view it, build the site first:"),
64
+ react_1.default.createElement("div", { className: styles_module_css_1.default.commandBlock },
65
+ react_1.default.createElement("code", null, "npm run build")),
66
+ react_1.default.createElement("p", { className: styles_module_css_1.default.messageText }, "Then serve the built site:"),
67
+ react_1.default.createElement("div", { className: styles_module_css_1.default.commandBlock },
68
+ react_1.default.createElement("code", null, "npm run serve")))))));
69
+ }
70
+ // Production mode: show presentation in iframe
71
+ return (react_1.default.createElement(Layout_1.default, { title: presentation.title, description: presentation.description },
72
+ react_1.default.createElement("div", { className: styles_module_css_1.default.presentationContainer },
73
+ react_1.default.createElement("iframe", { src: presentation.url, className: styles_module_css_1.default.presentationIframe, title: presentation.title, allowFullScreen: true }))));
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevPresentation/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * SlidevPresentation styles
3
+ */
4
+
5
+ .container {
6
+ max-width: 1200px;
7
+ margin: 0 auto;
8
+ padding: 2rem;
9
+ }
10
+
11
+ /* Placeholder (Development Mode) */
12
+ .placeholder {
13
+ max-width: 800px;
14
+ margin: 4rem auto;
15
+ text-align: center;
16
+ }
17
+
18
+ .placeholderIcon {
19
+ width: 120px;
20
+ height: 120px;
21
+ margin: 0 auto 2rem;
22
+ color: var(--ifm-color-primary);
23
+ opacity: 0.8;
24
+ }
25
+
26
+ .placeholderIcon svg {
27
+ width: 100%;
28
+ height: 100%;
29
+ }
30
+
31
+ .placeholderTitle {
32
+ font-size: 2.5rem;
33
+ margin-bottom: 1rem;
34
+ color: var(--ifm-heading-color);
35
+ }
36
+
37
+ .placeholderDescription {
38
+ font-size: 1.25rem;
39
+ color: var(--ifm-color-emphasis-700);
40
+ margin-bottom: 2rem;
41
+ }
42
+
43
+ .placeholderMeta {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ gap: 0.5rem;
48
+ color: var(--ifm-color-emphasis-600);
49
+ margin-bottom: 3rem;
50
+ font-size: 1rem;
51
+ }
52
+
53
+ .metaIcon {
54
+ width: 20px;
55
+ height: 20px;
56
+ }
57
+
58
+ .placeholderMessage {
59
+ background-color: var(--ifm-color-warning-contrast-background);
60
+ border: 1px solid var(--ifm-color-warning);
61
+ border-radius: 8px;
62
+ padding: 2rem;
63
+ margin-top: 3rem;
64
+ }
65
+
66
+ .messageIcon {
67
+ width: 48px;
68
+ height: 48px;
69
+ margin: 0 auto 1rem;
70
+ color: var(--ifm-color-warning-dark);
71
+ }
72
+
73
+ .messageIcon svg {
74
+ width: 100%;
75
+ height: 100%;
76
+ }
77
+
78
+ .messageTitle {
79
+ font-size: 1.5rem;
80
+ margin-bottom: 1rem;
81
+ color: var(--ifm-heading-color);
82
+ }
83
+
84
+ .messageText {
85
+ font-size: 1rem;
86
+ color: var(--ifm-color-emphasis-700);
87
+ margin-bottom: 1rem;
88
+ }
89
+
90
+ .commandBlock {
91
+ background-color: var(--ifm-code-background);
92
+ border-radius: 4px;
93
+ padding: 0.75rem 1rem;
94
+ margin: 1rem auto;
95
+ max-width: 300px;
96
+ }
97
+
98
+ .commandBlock code {
99
+ font-size: 1rem;
100
+ font-weight: 600;
101
+ background-color: transparent;
102
+ border: none;
103
+ }
104
+
105
+ /* Error State */
106
+ .errorState {
107
+ max-width: 600px;
108
+ margin: 4rem auto;
109
+ text-align: center;
110
+ }
111
+
112
+ .errorIcon {
113
+ width: 80px;
114
+ height: 80px;
115
+ margin: 0 auto 2rem;
116
+ color: var(--ifm-color-danger);
117
+ }
118
+
119
+ .errorTitle {
120
+ font-size: 2rem;
121
+ margin-bottom: 1rem;
122
+ color: var(--ifm-heading-color);
123
+ }
124
+
125
+ .errorText {
126
+ font-size: 1.125rem;
127
+ color: var(--ifm-color-emphasis-700);
128
+ }
129
+
130
+ .errorText code {
131
+ background-color: var(--ifm-code-background);
132
+ padding: 0.2rem 0.4rem;
133
+ border-radius: 3px;
134
+ font-size: 0.9em;
135
+ }
136
+
137
+ /* Production Mode - Full Screen Iframe */
138
+ .presentationContainer {
139
+ position: fixed;
140
+ top: var(--ifm-navbar-height);
141
+ left: 0;
142
+ right: 0;
143
+ bottom: 0;
144
+ background-color: #000;
145
+ }
146
+
147
+ .presentationIframe {
148
+ width: 100%;
149
+ height: 100%;
150
+ border: none;
151
+ }
152
+
153
+ /* Responsive adjustments */
154
+ @media (max-width: 768px) {
155
+ .container {
156
+ padding: 1rem;
157
+ }
158
+
159
+ .placeholder {
160
+ margin: 2rem auto;
161
+ }
162
+
163
+ .placeholderTitle {
164
+ font-size: 2rem;
165
+ }
166
+
167
+ .placeholderDescription {
168
+ font-size: 1.125rem;
169
+ }
170
+
171
+ .placeholderMessage {
172
+ padding: 1.5rem;
173
+ }
174
+
175
+ .messageTitle {
176
+ font-size: 1.25rem;
177
+ }
178
+ }