@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.
- package/docs/advanced-configuration.mdx +103 -24
- package/docs/changelog.mdx +41 -9
- package/docs/install.mdx +28 -19
- package/docs/slide-directory.mdx +184 -0
- package/docs/slidev-link.mdx +40 -0
- package/lib/plugin/builder.d.ts +9 -3
- package/lib/plugin/builder.d.ts.map +1 -1
- package/lib/plugin/builder.js +130 -39
- package/lib/plugin/builder.js.map +1 -1
- package/lib/plugin/index.d.ts.map +1 -1
- package/lib/plugin/index.js +108 -26
- package/lib/plugin/index.js.map +1 -1
- package/lib/plugin/scanner.d.ts +9 -2
- package/lib/plugin/scanner.d.ts.map +1 -1
- package/lib/plugin/scanner.js +180 -29
- package/lib/plugin/scanner.js.map +1 -1
- package/lib/theme/SlidevCard/index.d.ts.map +1 -1
- package/lib/theme/SlidevCard/index.js +1 -2
- package/lib/theme/SlidevCard/index.js.map +1 -1
- package/lib/theme/SlidevCard/styles.module.css +6 -2
- package/lib/theme/SlidevCategoryCard/index.d.ts +11 -0
- package/lib/theme/SlidevCategoryCard/index.d.ts.map +1 -0
- package/lib/theme/SlidevCategoryCard/index.js +31 -0
- package/lib/theme/SlidevCategoryCard/index.js.map +1 -0
- package/lib/theme/SlidevCategoryCard/styles.module.css +158 -0
- package/lib/theme/SlidevLink/index.d.ts +32 -0
- package/lib/theme/SlidevLink/index.d.ts.map +1 -0
- package/lib/theme/SlidevLink/index.js +139 -0
- package/lib/theme/SlidevLink/index.js.map +1 -0
- package/lib/theme/SlidevLink/styles.module.css +228 -0
- package/lib/theme/SlidevListItem/index.d.ts +18 -0
- package/lib/theme/SlidevListItem/index.d.ts.map +1 -0
- package/lib/theme/SlidevListItem/index.js +44 -0
- package/lib/theme/SlidevListItem/index.js.map +1 -0
- package/lib/theme/SlidevListItem/styles.module.css +128 -0
- package/lib/theme/SlidevOverview/index.d.ts +1 -0
- package/lib/theme/SlidevOverview/index.d.ts.map +1 -1
- package/lib/theme/SlidevOverview/index.js +156 -71
- package/lib/theme/SlidevOverview/index.js.map +1 -1
- package/lib/theme/SlidevOverview/styles.module.css +176 -147
- package/lib/types/index.d.ts +85 -6
- package/lib/types/index.d.ts.map +1 -1
- package/lib/utils/fileSystem.d.ts +53 -0
- package/lib/utils/fileSystem.d.ts.map +1 -1
- package/lib/utils/fileSystem.js +151 -0
- package/lib/utils/fileSystem.js.map +1 -1
- package/lib/utils/icons.d.ts +34 -0
- package/lib/utils/icons.d.ts.map +1 -1
- package/lib/utils/icons.js +60 -0
- package/lib/utils/icons.js.map +1 -1
- package/lib/utils/logger.d.ts +11 -2
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +64 -8
- package/lib/utils/logger.js.map +1 -1
- package/package.json +2 -1
- package/publish-package-docs.js +11 -3
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* SlidevOverview Component
|
|
4
4
|
* Main overview page that displays all Slidev presentations
|
|
5
|
+
* Supports directory grouping and category navigation
|
|
5
6
|
*/
|
|
6
7
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
8
|
if (k2 === undefined) k2 = k;
|
|
@@ -43,8 +44,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
43
44
|
exports.default = SlidevOverview;
|
|
44
45
|
const react_1 = __importStar(require("react"));
|
|
45
46
|
const Layout_1 = __importDefault(require("@theme/Layout"));
|
|
47
|
+
const Link_1 = __importDefault(require("@docusaurus/Link"));
|
|
46
48
|
const useGlobalData_1 = require("@docusaurus/useGlobalData");
|
|
49
|
+
const router_1 = require("@docusaurus/router");
|
|
47
50
|
const SlidevCard_1 = __importDefault(require("../SlidevCard"));
|
|
51
|
+
const SlidevCategoryCard_1 = __importDefault(require("../SlidevCategoryCard"));
|
|
52
|
+
const SlidevListItem_1 = __importDefault(require("../SlidevListItem"));
|
|
48
53
|
const icons_1 = require("../../utils/icons");
|
|
49
54
|
const styles_module_css_1 = __importDefault(require("./styles.module.css"));
|
|
50
55
|
const STORAGE_KEYS = {
|
|
@@ -52,7 +57,41 @@ const STORAGE_KEYS = {
|
|
|
52
57
|
sortOrder: 'slidev-plugin-sort-order',
|
|
53
58
|
};
|
|
54
59
|
function SlidevOverview() {
|
|
55
|
-
const { presentations, config, isDev } = (0, useGlobalData_1.usePluginData)('docusaurus-plugin-slidev');
|
|
60
|
+
const { presentations, categories, config, isDev } = (0, useGlobalData_1.usePluginData)('docusaurus-plugin-slidev');
|
|
61
|
+
const location = (0, router_1.useLocation)();
|
|
62
|
+
// Determine current category from URL
|
|
63
|
+
const currentCategory = (0, react_1.useMemo)(() => {
|
|
64
|
+
const basePath = config.routeBasePath.endsWith('/')
|
|
65
|
+
? config.routeBasePath.slice(0, -1)
|
|
66
|
+
: config.routeBasePath;
|
|
67
|
+
const currentPath = location.pathname.endsWith('/')
|
|
68
|
+
? location.pathname.slice(0, -1)
|
|
69
|
+
: location.pathname;
|
|
70
|
+
if (currentPath === basePath) {
|
|
71
|
+
return ''; // Root level
|
|
72
|
+
}
|
|
73
|
+
// Extract category path from URL
|
|
74
|
+
const categoryPath = currentPath.replace(basePath + '/', '');
|
|
75
|
+
return categoryPath;
|
|
76
|
+
}, [location.pathname, config.routeBasePath]);
|
|
77
|
+
// Check if we're in a category view
|
|
78
|
+
const isInCategory = currentCategory !== '';
|
|
79
|
+
// Get parent category path for back navigation
|
|
80
|
+
const parentCategoryPath = (0, react_1.useMemo)(() => {
|
|
81
|
+
if (!currentCategory)
|
|
82
|
+
return null;
|
|
83
|
+
const parts = currentCategory.split('/');
|
|
84
|
+
if (parts.length === 1) {
|
|
85
|
+
return ''; // Go to root
|
|
86
|
+
}
|
|
87
|
+
return parts.slice(0, -1).join('/');
|
|
88
|
+
}, [currentCategory]);
|
|
89
|
+
// Get current category metadata
|
|
90
|
+
const currentCategoryMeta = (0, react_1.useMemo)(() => {
|
|
91
|
+
if (!currentCategory)
|
|
92
|
+
return null;
|
|
93
|
+
return categories.find(cat => cat.path === currentCategory);
|
|
94
|
+
}, [currentCategory, categories]);
|
|
56
95
|
// Load preferences from sessionStorage
|
|
57
96
|
const [viewMode, setViewMode] = (0, react_1.useState)(() => {
|
|
58
97
|
if (typeof window !== 'undefined') {
|
|
@@ -77,89 +116,135 @@ function SlidevOverview() {
|
|
|
77
116
|
sessionStorage.setItem(STORAGE_KEYS.sortOrder, sortOrder);
|
|
78
117
|
}
|
|
79
118
|
}, [sortOrder]);
|
|
80
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Natural sort comparison for strings containing numbers
|
|
121
|
+
* Handles cases like: module-01, module-02, ..., module-10 correctly
|
|
122
|
+
*/
|
|
123
|
+
const naturalCompare = (a, b) => {
|
|
124
|
+
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
|
|
125
|
+
return collator.compare(a, b);
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Filter presentations for current view
|
|
129
|
+
*/
|
|
130
|
+
const filteredPresentations = (0, react_1.useMemo)(() => {
|
|
131
|
+
return presentations.filter(p => {
|
|
132
|
+
const pCategory = p.category || '';
|
|
133
|
+
return pCategory === currentCategory;
|
|
134
|
+
});
|
|
135
|
+
}, [presentations, currentCategory]);
|
|
136
|
+
/**
|
|
137
|
+
* Filter categories for current view (direct children only)
|
|
138
|
+
*/
|
|
139
|
+
const filteredCategories = (0, react_1.useMemo)(() => {
|
|
140
|
+
return categories.filter(cat => {
|
|
141
|
+
const catParts = cat.path.split('/');
|
|
142
|
+
const currentParts = currentCategory ? currentCategory.split('/') : [];
|
|
143
|
+
if (catParts.length !== currentParts.length + 1) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (currentCategory) {
|
|
147
|
+
return cat.path.startsWith(currentCategory + '/');
|
|
148
|
+
}
|
|
149
|
+
return catParts.length === 1;
|
|
150
|
+
});
|
|
151
|
+
}, [categories, currentCategory]);
|
|
152
|
+
/**
|
|
153
|
+
* Sort presentations using priority: position → sourcePath → title
|
|
154
|
+
*/
|
|
81
155
|
const sortedPresentations = (0, react_1.useMemo)(() => {
|
|
82
|
-
const sorted = [...
|
|
156
|
+
const sorted = [...filteredPresentations];
|
|
83
157
|
return sorted.sort((a, b) => {
|
|
84
|
-
const
|
|
85
|
-
|
|
158
|
+
const aPos = a.position ?? Infinity;
|
|
159
|
+
const bPos = b.position ?? Infinity;
|
|
160
|
+
if (aPos !== bPos) {
|
|
161
|
+
const comparison = aPos - bPos;
|
|
162
|
+
return sortOrder === 'asc' ? comparison : -comparison;
|
|
163
|
+
}
|
|
164
|
+
const pathComparison = naturalCompare(a.sourcePath, b.sourcePath);
|
|
165
|
+
if (pathComparison !== 0) {
|
|
166
|
+
return sortOrder === 'asc' ? pathComparison : -pathComparison;
|
|
167
|
+
}
|
|
168
|
+
const titleComparison = naturalCompare(a.title, b.title);
|
|
169
|
+
return sortOrder === 'asc' ? titleComparison : -titleComparison;
|
|
86
170
|
});
|
|
87
|
-
}, [
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
171
|
+
}, [filteredPresentations, sortOrder]);
|
|
172
|
+
/**
|
|
173
|
+
* Sort categories by position then label
|
|
174
|
+
*/
|
|
175
|
+
const sortedCategories = (0, react_1.useMemo)(() => {
|
|
176
|
+
const sorted = [...filteredCategories];
|
|
177
|
+
return sorted.sort((a, b) => {
|
|
178
|
+
const posComparison = a.position - b.position;
|
|
179
|
+
if (posComparison !== 0) {
|
|
180
|
+
return sortOrder === 'asc' ? posComparison : -posComparison;
|
|
181
|
+
}
|
|
182
|
+
const labelComparison = naturalCompare(a.label, b.label);
|
|
183
|
+
return sortOrder === 'asc' ? labelComparison : -labelComparison;
|
|
93
184
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
185
|
+
}, [filteredCategories, sortOrder]);
|
|
186
|
+
// Toggle handlers
|
|
187
|
+
const toggleSort = () => setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc');
|
|
188
|
+
const toggleView = () => setViewMode(viewMode === 'grid' ? 'list' : 'grid');
|
|
189
|
+
// Get title and tagline
|
|
190
|
+
const title = currentCategoryMeta?.label || config.pageTitle || 'Slidev Presentations';
|
|
191
|
+
const tagline = currentCategoryMeta?.description || config.pageTagline || 'Interactive presentation overview';
|
|
192
|
+
// Build back URL
|
|
193
|
+
const backUrl = (0, react_1.useMemo)(() => {
|
|
194
|
+
if (parentCategoryPath === null)
|
|
195
|
+
return null;
|
|
196
|
+
const basePath = config.routeBasePath.endsWith('/')
|
|
197
|
+
? config.routeBasePath.slice(0, -1)
|
|
198
|
+
: config.routeBasePath;
|
|
199
|
+
return parentCategoryPath ? `${basePath}/${parentCategoryPath}` : basePath;
|
|
200
|
+
}, [parentCategoryPath, config.routeBasePath]);
|
|
201
|
+
const hasContent = filteredPresentations.length > 0 || filteredCategories.length > 0;
|
|
107
202
|
return (react_1.default.createElement(Layout_1.default, { title: title, description: tagline },
|
|
108
203
|
react_1.default.createElement("div", { className: styles_module_css_1.default.container },
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
react_1.default.createElement("
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
react_1.default.createElement("
|
|
117
|
-
|
|
204
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.bannerWrapper },
|
|
205
|
+
isInCategory && backUrl !== null && (react_1.default.createElement(Link_1.default, { to: backUrl, className: styles_module_css_1.default.backButton, "aria-label": "Go back" },
|
|
206
|
+
react_1.default.createElement(icons_1.BackIcon, { width: 24, height: 24 }))),
|
|
207
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.banner },
|
|
208
|
+
react_1.default.createElement("h1", { className: styles_module_css_1.default.title },
|
|
209
|
+
isInCategory && react_1.default.createElement(icons_1.FolderIcon, { className: styles_module_css_1.default.titleIcon, width: 50, height: 50 }),
|
|
210
|
+
react_1.default.createElement("span", null, title)),
|
|
211
|
+
react_1.default.createElement("p", { className: styles_module_css_1.default.subtitle }, tagline)),
|
|
212
|
+
(hasContent || isInCategory) && (react_1.default.createElement("div", { className: styles_module_css_1.default.controls },
|
|
213
|
+
react_1.default.createElement("button", { className: styles_module_css_1.default.controlButton, onClick: toggleSort, title: sortOrder === 'asc' ? 'Sort Z-A' : 'Sort A-Z' }, sortOrder === 'asc' ? react_1.default.createElement(icons_1.SortAscIcon, { width: 20, height: 20 }) : react_1.default.createElement(icons_1.SortDescIcon, { width: 20, height: 20 })),
|
|
214
|
+
react_1.default.createElement("button", { className: styles_module_css_1.default.controlButton, onClick: toggleView, title: viewMode === 'grid' ? 'Switch to List' : 'Switch to Grid' }, viewMode === 'grid' ? react_1.default.createElement(icons_1.DetailsViewIcon, { width: 20, height: 20 }) : react_1.default.createElement(icons_1.GridViewIcon, { width: 20, height: 20 }))))),
|
|
118
215
|
isDev && (react_1.default.createElement("div", { className: styles_module_css_1.default.devModeWarning },
|
|
119
216
|
react_1.default.createElement("div", { className: styles_module_css_1.default.warningTitle },
|
|
120
|
-
react_1.default.createElement(
|
|
121
|
-
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" })),
|
|
217
|
+
react_1.default.createElement(icons_1.WarningIcon, { className: styles_module_css_1.default.warningIcon }),
|
|
122
218
|
"Development Mode"),
|
|
123
219
|
react_1.default.createElement("p", { className: styles_module_css_1.default.warningText },
|
|
124
220
|
"Slidev presentations are only available after building the site.",
|
|
125
221
|
react_1.default.createElement("br", null),
|
|
126
222
|
"Run ",
|
|
127
|
-
react_1.default.createElement("code",
|
|
223
|
+
react_1.default.createElement("code", null, "npm run build"),
|
|
128
224
|
" to generate presentations, then ",
|
|
129
|
-
react_1.default.createElement("code",
|
|
130
|
-
" to view them.",
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
react_1.default.createElement("
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
react_1.default.createElement("
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const order = sortOrderMap.get(presentation.id) ?? 0;
|
|
154
|
-
return (react_1.default.createElement("tr", { key: presentation.id, style: { order } },
|
|
155
|
-
react_1.default.createElement("td", null, isDev ? (react_1.default.createElement("span", { className: styles_module_css_1.default.detailsTitle }, presentation.title)) : (react_1.default.createElement("a", { href: presentation.url, className: styles_module_css_1.default.detailsLink, target: "_blank", rel: "noopener noreferrer" }, presentation.title))),
|
|
156
|
-
react_1.default.createElement("td", { className: styles_module_css_1.default.detailsDescription }, presentation.description || '—'),
|
|
157
|
-
react_1.default.createElement("td", null, presentation.author || '—')));
|
|
158
|
-
})))),
|
|
159
|
-
react_1.default.createElement("div", { className: `${styles_module_css_1.default.grid} ${viewMode === 'grid' ? styles_module_css_1.default.visible : styles_module_css_1.default.hidden}` }, presentations.map((presentation) => {
|
|
160
|
-
const order = sortOrderMap.get(presentation.id) ?? 0;
|
|
161
|
-
return (react_1.default.createElement("div", { key: presentation.id, style: { order } },
|
|
162
|
-
react_1.default.createElement(SlidevCard_1.default, { presentation: presentation, isDev: isDev })));
|
|
163
|
-
}))))))));
|
|
225
|
+
react_1.default.createElement("code", null, "npm run serve"),
|
|
226
|
+
" to view them."))),
|
|
227
|
+
react_1.default.createElement("div", { className: styles_module_css_1.default.contentContainer },
|
|
228
|
+
!hasContent && !isInCategory && (react_1.default.createElement("div", { className: styles_module_css_1.default.emptyState },
|
|
229
|
+
react_1.default.createElement(icons_1.EmptyPresentationIcon, { className: styles_module_css_1.default.emptyStateIcon }),
|
|
230
|
+
react_1.default.createElement("h2", { className: styles_module_css_1.default.emptyStateTitle }, "No Presentations Found"),
|
|
231
|
+
react_1.default.createElement("p", { className: styles_module_css_1.default.emptyStateText },
|
|
232
|
+
"Create a Slidev presentation in the ",
|
|
233
|
+
react_1.default.createElement("code", null, config.sourceDir),
|
|
234
|
+
" directory."),
|
|
235
|
+
react_1.default.createElement("code", { className: styles_module_css_1.default.emptyStateCode },
|
|
236
|
+
"echo \"# My First Slide\" > ",
|
|
237
|
+
config.sourceDir,
|
|
238
|
+
"/presentation.md"))),
|
|
239
|
+
!hasContent && isInCategory && (react_1.default.createElement("div", { className: styles_module_css_1.default.emptyState },
|
|
240
|
+
react_1.default.createElement(icons_1.FolderIcon, { className: styles_module_css_1.default.emptyStateIcon, width: 64, height: 64 }),
|
|
241
|
+
react_1.default.createElement("h2", { className: styles_module_css_1.default.emptyStateTitle }, "Empty Category"),
|
|
242
|
+
react_1.default.createElement("p", { className: styles_module_css_1.default.emptyStateText }, "This category doesn't contain any presentations yet."))),
|
|
243
|
+
hasContent && viewMode === 'grid' && (react_1.default.createElement("div", { className: styles_module_css_1.default.grid },
|
|
244
|
+
sortedCategories.map((category) => (react_1.default.createElement(SlidevCategoryCard_1.default, { key: `cat-${category.path}`, category: category }))),
|
|
245
|
+
sortedPresentations.map((presentation) => (react_1.default.createElement(SlidevCard_1.default, { key: presentation.id, presentation: presentation, isDev: isDev }))))),
|
|
246
|
+
hasContent && viewMode === 'list' && (react_1.default.createElement("div", { className: styles_module_css_1.default.list },
|
|
247
|
+
sortedCategories.map((category) => (react_1.default.createElement(SlidevListItem_1.default, { key: `cat-${category.path}`, type: "category", category: category }))),
|
|
248
|
+
sortedPresentations.map((presentation) => (react_1.default.createElement(SlidevListItem_1.default, { key: presentation.id, type: "presentation", presentation: presentation, isDev: isDev })))))))));
|
|
164
249
|
}
|
|
165
250
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevOverview/index.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/SlidevOverview/index.tsx"],"names":[],"mappings":"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"}
|