markopress 0.0.2 → 0.0.4
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/dist/build/index.d.ts +0 -1
- package/dist/build/index.js +1 -1627
- package/dist/build/types.d.ts +0 -1
- package/dist/build/types.js +1 -5
- package/dist/build/vite-markdown-plugin.d.ts +0 -1
- package/dist/build/vite-markdown-plugin.js +1 -147
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +1 -74
- package/dist/config/app-root.d.ts +0 -1
- package/dist/config/app-root.js +1 -24
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +1 -6
- package/dist/config/loader.d.ts +0 -1
- package/dist/config/loader.js +1 -188
- package/dist/config/types.d.ts +0 -1
- package/dist/config/types.js +1 -5
- package/dist/config/validation.d.ts +0 -1
- package/dist/config/validation.js +1 -139
- package/dist/content/index.d.ts +0 -1
- package/dist/content/index.js +1 -6
- package/dist/content/registry.d.ts +0 -1
- package/dist/content/registry.js +1 -45
- package/dist/content/types.d.ts +0 -1
- package/dist/content/types.js +1 -5
- package/dist/dev/index.d.ts +0 -1
- package/dist/dev/index.js +1 -93
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -17
- package/dist/markdown/base-path-plugin.d.ts +16 -0
- package/dist/markdown/base-path-plugin.js +1 -0
- package/dist/markdown/code.d.ts +0 -1
- package/dist/markdown/code.js +1 -305
- package/dist/markdown/containers.d.ts +0 -1
- package/dist/markdown/containers.js +1 -143
- package/dist/markdown/includes.d.ts +0 -1
- package/dist/markdown/includes.js +1 -9
- package/dist/markdown/index.d.ts +0 -1
- package/dist/markdown/index.js +1 -8
- package/dist/markdown/loader.d.ts +0 -1
- package/dist/markdown/loader.js +1 -325
- package/dist/markdown/md-link-plugin.d.ts +14 -0
- package/dist/markdown/md-link-plugin.js +1 -0
- package/dist/markdown/preserve-tags.d.ts +0 -1
- package/dist/markdown/preserve-tags.js +1 -233
- package/dist/markdown/renderer.d.ts +0 -1
- package/dist/markdown/renderer.js +1 -146
- package/dist/markdown/tag-validator.d.ts +0 -1
- package/dist/markdown/tag-validator.js +1 -118
- package/dist/markdown/types.d.ts +2 -1
- package/dist/markdown/types.js +1 -5
- package/dist/plugin/compat.d.ts +0 -1
- package/dist/plugin/compat.js +1 -78
- package/dist/plugin/context.d.ts +0 -1
- package/dist/plugin/context.js +1 -103
- package/dist/plugin/index.d.ts +0 -1
- package/dist/plugin/index.js +1 -6
- package/dist/plugin/manager.d.ts +0 -1
- package/dist/plugin/manager.js +1 -385
- package/dist/plugin/types.d.ts +1 -1
- package/dist/plugin/types.js +1 -5
- package/dist/plugins/blog-index/index.d.ts +0 -1
- package/dist/plugins/blog-index/index.js +1 -158
- package/dist/plugins/sidenav/index.d.ts +0 -1
- package/dist/plugins/sidenav/index.js +1 -86
- package/dist/plugins/toc/index.d.ts +0 -1
- package/dist/plugins/toc/index.js +1 -79
- package/dist/preview/index.d.ts +0 -1
- package/dist/preview/index.js +1 -25
- package/dist/theme/default/design-systems/default.d.ts +0 -1
- package/dist/theme/default/design-systems/default.js +1 -289
- package/dist/theme/default/design-systems/docusaurus.d.ts +0 -1
- package/dist/theme/default/design-systems/docusaurus.js +1 -299
- package/dist/theme/default/design-systems/index.d.ts +0 -1
- package/dist/theme/default/design-systems/index.js +1 -54
- package/dist/theme/default/design-systems/rspress.d.ts +0 -1
- package/dist/theme/default/design-systems/rspress.js +1 -299
- package/dist/theme/default/design-systems/types.d.ts +0 -1
- package/dist/theme/default/design-systems/types.js +1 -6
- package/dist/theme/default/design-systems/vitepress.d.ts +0 -1
- package/dist/theme/default/design-systems/vitepress.js +1 -299
- package/dist/theme/default/index.d.ts +0 -1
- package/dist/theme/default/index.js +1 -44
- package/dist/theme/default/theme.d.ts +0 -1
- package/dist/theme/default/theme.js +1 -58
- package/dist/theme/index.d.ts +0 -1
- package/dist/theme/index.js +1 -6
- package/dist/theme/loader.d.ts +0 -1
- package/dist/theme/loader.js +1 -125
- package/dist/theme/types.d.ts +1 -1
- package/dist/theme/types.js +1 -5
- package/dist/vite/index.d.ts +0 -1
- package/dist/vite/index.js +1 -6
- package/dist/vite/markdownPlugin.d.ts +0 -1
- package/dist/vite/markdownPlugin.js +1 -111
- package/dist/vite/plugin.d.ts +0 -1
- package/dist/vite/plugin.js +1 -94
- package/package.json +3 -2
- package/src/theme/default/layouts/blog.marko +1 -1
- package/src/theme/default/layouts/default.marko +5 -5
- package/src/theme/default/layouts/docs.marko +6 -6
- package/src/theme/default/layouts/page.marko +1 -1
- package/templates/catch-all-handler.js.template +2 -17
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js.map +0 -1
- package/dist/build/manifest-generator.d.ts +0 -34
- package/dist/build/manifest-generator.d.ts.map +0 -1
- package/dist/build/manifest-generator.js +0 -86
- package/dist/build/manifest-generator.js.map +0 -1
- package/dist/build/security.test.d.ts +0 -6
- package/dist/build/security.test.d.ts.map +0 -1
- package/dist/build/security.test.js +0 -88
- package/dist/build/security.test.js.map +0 -1
- package/dist/build/types.d.ts.map +0 -1
- package/dist/build/types.js.map +0 -1
- package/dist/build/vite-config.test.d.ts +0 -2
- package/dist/build/vite-config.test.d.ts.map +0 -1
- package/dist/build/vite-config.test.js +0 -53
- package/dist/build/vite-config.test.js.map +0 -1
- package/dist/build/vite-markdown-plugin.d.ts.map +0 -1
- package/dist/build/vite-markdown-plugin.js.map +0 -1
- package/dist/build/vite-markdown-plugin.test.d.ts +0 -2
- package/dist/build/vite-markdown-plugin.test.d.ts.map +0 -1
- package/dist/build/vite-markdown-plugin.test.js +0 -41
- package/dist/build/vite-markdown-plugin.test.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/config/app-root.d.ts.map +0 -1
- package/dist/config/app-root.js.map +0 -1
- package/dist/config/app-root.test.d.ts +0 -2
- package/dist/config/app-root.test.d.ts.map +0 -1
- package/dist/config/app-root.test.js +0 -71
- package/dist/config/app-root.test.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/loader.d.ts.map +0 -1
- package/dist/config/loader.js.map +0 -1
- package/dist/config/loader.test.d.ts +0 -2
- package/dist/config/loader.test.d.ts.map +0 -1
- package/dist/config/loader.test.js +0 -24
- package/dist/config/loader.test.js.map +0 -1
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js.map +0 -1
- package/dist/config/validation.d.ts.map +0 -1
- package/dist/config/validation.js.map +0 -1
- package/dist/content/index.d.ts.map +0 -1
- package/dist/content/index.js.map +0 -1
- package/dist/content/registry.d.ts.map +0 -1
- package/dist/content/registry.js.map +0 -1
- package/dist/content/scanner.d.ts +0 -9
- package/dist/content/scanner.d.ts.map +0 -1
- package/dist/content/scanner.js +0 -115
- package/dist/content/scanner.js.map +0 -1
- package/dist/content/types.d.ts.map +0 -1
- package/dist/content/types.js.map +0 -1
- package/dist/dev/index.d.ts.map +0 -1
- package/dist/dev/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/markdown/code.d.ts.map +0 -1
- package/dist/markdown/code.js.map +0 -1
- package/dist/markdown/containers.d.ts.map +0 -1
- package/dist/markdown/containers.js.map +0 -1
- package/dist/markdown/includes.d.ts.map +0 -1
- package/dist/markdown/includes.js.map +0 -1
- package/dist/markdown/index.d.ts.map +0 -1
- package/dist/markdown/index.js.map +0 -1
- package/dist/markdown/loader.d.ts.map +0 -1
- package/dist/markdown/loader.js.map +0 -1
- package/dist/markdown/preserve-tags.d.ts.map +0 -1
- package/dist/markdown/preserve-tags.js.map +0 -1
- package/dist/markdown/renderer.d.ts.map +0 -1
- package/dist/markdown/renderer.js.map +0 -1
- package/dist/markdown/tag-validator.d.ts.map +0 -1
- package/dist/markdown/tag-validator.js.map +0 -1
- package/dist/markdown/types.d.ts.map +0 -1
- package/dist/markdown/types.js.map +0 -1
- package/dist/plugin/compat.d.ts.map +0 -1
- package/dist/plugin/compat.js.map +0 -1
- package/dist/plugin/context.d.ts.map +0 -1
- package/dist/plugin/context.js.map +0 -1
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js.map +0 -1
- package/dist/plugin/manager.d.ts.map +0 -1
- package/dist/plugin/manager.js.map +0 -1
- package/dist/plugin/types.d.ts.map +0 -1
- package/dist/plugin/types.js.map +0 -1
- package/dist/plugins/blog-index/index.d.ts.map +0 -1
- package/dist/plugins/blog-index/index.js.map +0 -1
- package/dist/plugins/sidenav/index.d.ts.map +0 -1
- package/dist/plugins/sidenav/index.js.map +0 -1
- package/dist/plugins/toc/index.d.ts.map +0 -1
- package/dist/plugins/toc/index.js.map +0 -1
- package/dist/preview/index.d.ts.map +0 -1
- package/dist/preview/index.js.map +0 -1
- package/dist/theme/default/build/generate-all.d.ts +0 -9
- package/dist/theme/default/build/generate-all.d.ts.map +0 -1
- package/dist/theme/default/build/generate-all.js +0 -85
- package/dist/theme/default/build/generate-all.js.map +0 -1
- package/dist/theme/default/build/generate-css.d.ts +0 -19
- package/dist/theme/default/build/generate-css.d.ts.map +0 -1
- package/dist/theme/default/build/generate-css.js +0 -199
- package/dist/theme/default/build/generate-css.js.map +0 -1
- package/dist/theme/default/build/index.d.ts +0 -5
- package/dist/theme/default/build/index.d.ts.map +0 -1
- package/dist/theme/default/build/index.js +0 -5
- package/dist/theme/default/build/index.js.map +0 -1
- package/dist/theme/default/design-systems/default.d.ts.map +0 -1
- package/dist/theme/default/design-systems/default.js.map +0 -1
- package/dist/theme/default/design-systems/docusaurus.d.ts.map +0 -1
- package/dist/theme/default/design-systems/docusaurus.js.map +0 -1
- package/dist/theme/default/design-systems/index.d.ts.map +0 -1
- package/dist/theme/default/design-systems/index.js.map +0 -1
- package/dist/theme/default/design-systems/rspress.d.ts.map +0 -1
- package/dist/theme/default/design-systems/rspress.js.map +0 -1
- package/dist/theme/default/design-systems/types.d.ts.map +0 -1
- package/dist/theme/default/design-systems/types.js.map +0 -1
- package/dist/theme/default/design-systems/vitepress.d.ts.map +0 -1
- package/dist/theme/default/design-systems/vitepress.js.map +0 -1
- package/dist/theme/default/index.d.ts.map +0 -1
- package/dist/theme/default/index.js.map +0 -1
- package/dist/theme/default/theme.d.ts.map +0 -1
- package/dist/theme/default/theme.js.map +0 -1
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/loader.d.ts.map +0 -1
- package/dist/theme/loader.js.map +0 -1
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js.map +0 -1
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/markdownPlugin.d.ts.map +0 -1
- package/dist/vite/markdownPlugin.js.map +0 -1
- package/dist/vite/plugin.d.ts.map +0 -1
- package/dist/vite/plugin.js.map +0 -1
- package/src/theme/default/build/generate-all.ts +0 -99
- package/src/theme/default/build/generate-css.ts +0 -234
- package/src/theme/default/build/index.ts +0 -5
- package/src/theme/default/components/doc-footer.marko +0 -180
- package/src/theme/default/components/footer.marko +0 -32
- package/src/theme/default/components/header.marko +0 -49
- package/src/theme/default/components/nav-bar.marko +0 -191
- package/src/theme/default/components/page-header.marko +0 -20
- package/src/theme/default/components/reading-progress.marko +0 -36
- package/src/theme/default/components/search.marko +0 -239
- package/src/theme/default/components/sidebar.marko +0 -211
- package/src/theme/default/components/site-footer.marko +0 -211
- package/src/theme/default/components/skip-link.marko +0 -49
- package/src/theme/default/components/theme/theme-aside-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-aside-top.marko +0 -1
- package/src/theme/default/components/theme/theme-body-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-body-top.marko +0 -1
- package/src/theme/default/components/theme/theme-doc-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-doc-footer-after.marko +0 -1
- package/src/theme/default/components/theme/theme-doc-footer-before.marko +0 -1
- package/src/theme/default/components/theme/theme-doc-top.marko +0 -1
- package/src/theme/default/components/theme/theme-head-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-head-top.marko +0 -1
- package/src/theme/default/components/theme/theme-home-features-after.marko +0 -1
- package/src/theme/default/components/theme/theme-home-hero-after.marko +0 -1
- package/src/theme/default/components/theme/theme-home-hero-before.marko +0 -1
- package/src/theme/default/components/theme/theme-navbar-center.marko +0 -5
- package/src/theme/default/components/theme/theme-navbar-end.marko +0 -30
- package/src/theme/default/components/theme/theme-navbar-start.marko +0 -1
- package/src/theme/default/components/theme/theme-page-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-page-top.marko +0 -1
- package/src/theme/default/components/theme/theme-sidebar-bottom.marko +0 -1
- package/src/theme/default/components/theme/theme-sidebar-top.marko +0 -1
- package/src/theme/default/components/theme/theme-toc-item.marko +0 -1
- package/src/theme/default/components/theme-toggle.marko +0 -122
- package/src/theme/default/components/toc.marko +0 -140
- package/src/theme/default/design-systems/default.ts +0 -331
- package/src/theme/default/design-systems/docusaurus.ts +0 -341
- package/src/theme/default/design-systems/index.ts +0 -67
- package/src/theme/default/design-systems/rspress.ts +0 -341
- package/src/theme/default/design-systems/types.ts +0 -296
- package/src/theme/default/design-systems/vitepress.ts +0 -341
- package/src/theme/default/index.ts +0 -107
- package/src/theme/default/theme.ts +0 -83
- package/templates/example-tags/README.md +0 -212
- package/templates/example-tags/alert-box.marko +0 -98
- package/templates/example-tags/button-primary.marko +0 -28
- package/templates/example-tags/button-secondary.marko +0 -28
- package/templates/example-tags/button.marko +0 -6
- package/templates/example-tags/card-body.marko +0 -8
- package/templates/example-tags/card-footer.marko +0 -7
- package/templates/example-tags/card-header.marko +0 -7
- package/templates/example-tags/card.marko +0 -20
- package/templates/example-tags/icon.marko +0 -149
|
@@ -1,158 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Blog Index Plugin for MarkoPress
|
|
3
|
-
*
|
|
4
|
-
* Generates a blog index page listing all blog posts
|
|
5
|
-
*/
|
|
6
|
-
// Store data for extendRoutes to access
|
|
7
|
-
let blogPostsData = null;
|
|
8
|
-
let blogConfigData = null;
|
|
9
|
-
/**
|
|
10
|
-
* Transform blog module files to blog post data
|
|
11
|
-
*/
|
|
12
|
-
function transformBlogPosts(module) {
|
|
13
|
-
return [...module.files]
|
|
14
|
-
.sort((a, b) => {
|
|
15
|
-
const dateA = new Date(a.processed.frontmatter.date || 0);
|
|
16
|
-
const dateB = new Date(b.processed.frontmatter.date || 0);
|
|
17
|
-
return dateB.getTime() - dateA.getTime();
|
|
18
|
-
})
|
|
19
|
-
.map(post => ({
|
|
20
|
-
title: post.processed.frontmatter.title,
|
|
21
|
-
description: post.processed.frontmatter.description,
|
|
22
|
-
date: post.processed.frontmatter.date,
|
|
23
|
-
author: post.processed.frontmatter.author,
|
|
24
|
-
excerpt: post.processed.excerpt,
|
|
25
|
-
link: post.urlPath,
|
|
26
|
-
}));
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Create blog index plugin
|
|
30
|
-
*/
|
|
31
|
-
export default function blogIndexPlugin(options = {}) {
|
|
32
|
-
const { postsPerPage = 10, showExcerpts = true, showDates = true, showAuthors = true, path = '/blog', } = options;
|
|
33
|
-
const config = { postsPerPage, showExcerpts, showDates, showAuthors };
|
|
34
|
-
return {
|
|
35
|
-
name: 'blog-index',
|
|
36
|
-
modules: ['blog'],
|
|
37
|
-
async enhanceModules(modules) {
|
|
38
|
-
const blogModule = modules.find(m => m.id === 'blog');
|
|
39
|
-
if (!blogModule) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
// Transform to blog post data
|
|
43
|
-
const blogPosts = transformBlogPosts(blogModule);
|
|
44
|
-
// Store for extendRoutes to use
|
|
45
|
-
blogPostsData = blogPosts;
|
|
46
|
-
blogConfigData = config;
|
|
47
|
-
// Add enhancement with sorted posts
|
|
48
|
-
blogModule.enhance('blogPosts', blogPosts);
|
|
49
|
-
blogModule.enhance('blogConfig', config);
|
|
50
|
-
blogModule.enhance('blogIndexPath', path);
|
|
51
|
-
},
|
|
52
|
-
async extendRoutes(routes) {
|
|
53
|
-
if (!blogPostsData || !blogConfigData)
|
|
54
|
-
return routes;
|
|
55
|
-
// Add blog index route
|
|
56
|
-
routes[path] = {
|
|
57
|
-
path,
|
|
58
|
-
component: generateBlogIndexComponent(),
|
|
59
|
-
meta: {
|
|
60
|
-
blogPosts: blogPostsData,
|
|
61
|
-
blogConfig: blogConfigData,
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
return routes;
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Generate blog index Marko component
|
|
70
|
-
*/
|
|
71
|
-
function generateBlogIndexComponent() {
|
|
72
|
-
return `<div class="blog-index">
|
|
73
|
-
<h1>Blog</h1>
|
|
74
|
-
<div class="blog-posts">
|
|
75
|
-
<for|post| of=$global.blogPosts>
|
|
76
|
-
<article class="blog-post-card">
|
|
77
|
-
<h2>
|
|
78
|
-
<a href=post.link>\${post.title}</a>
|
|
79
|
-
</h2>
|
|
80
|
-
<if=post.date>
|
|
81
|
-
<div class="post-date">
|
|
82
|
-
<small>\${new Date(post.date).toLocaleDateString()}</small>
|
|
83
|
-
</div>
|
|
84
|
-
</if>
|
|
85
|
-
<if=post.author>
|
|
86
|
-
<div class="post-author">
|
|
87
|
-
<small>by \${post.author}</small>
|
|
88
|
-
</div>
|
|
89
|
-
</if>
|
|
90
|
-
<if=post.excerpt>
|
|
91
|
-
<div class="post-excerpt">
|
|
92
|
-
<p>\${post.excerpt}</p>
|
|
93
|
-
</div>
|
|
94
|
-
</if>
|
|
95
|
-
<a href=post.link class="read-more">Read more →</a>
|
|
96
|
-
</article>
|
|
97
|
-
</for>
|
|
98
|
-
</div>
|
|
99
|
-
</div>
|
|
100
|
-
|
|
101
|
-
<style>
|
|
102
|
-
.blog-index {
|
|
103
|
-
max-width: var(--content-max-width, 960px);
|
|
104
|
-
margin: 0 auto;
|
|
105
|
-
padding: var(--content-padding, 2rem 1.5rem);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.blog-posts {
|
|
109
|
-
display: flex;
|
|
110
|
-
flex-direction: column;
|
|
111
|
-
gap: 2rem;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.blog-post-card {
|
|
115
|
-
border: 1px solid var(--border-default, #e5e7eb);
|
|
116
|
-
border-radius: var(--radius-lg, 0.5rem);
|
|
117
|
-
padding: 1.5rem;
|
|
118
|
-
background: var(--bg-default, #ffffff);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.blog-post-card h2 {
|
|
122
|
-
margin: 0 0 0.5rem 0;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.blog-post-card h2 a {
|
|
126
|
-
color: var(--text-1, #111827);
|
|
127
|
-
text-decoration: none;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.blog-post-card h2 a:hover {
|
|
131
|
-
color: var(--color-primary-2, #3b82f6);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
.post-date,
|
|
135
|
-
.post-author {
|
|
136
|
-
color: var(--text-3, #6b7280);
|
|
137
|
-
margin-bottom: 0.5rem;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.post-excerpt {
|
|
141
|
-
margin: 1rem 0;
|
|
142
|
-
color: var(--text-2, #4b5563);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.read-more {
|
|
146
|
-
display: inline-block;
|
|
147
|
-
color: var(--color-primary-2, #3b82f6);
|
|
148
|
-
text-decoration: none;
|
|
149
|
-
font-weight: 500;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.read-more:hover {
|
|
153
|
-
text-decoration: underline;
|
|
154
|
-
}
|
|
155
|
-
</style>
|
|
156
|
-
`;
|
|
157
|
-
}
|
|
158
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
let n=null,e=null;export default function t(t={}){const{postsPerPage:o=10,showExcerpts:a=!0,showDates:r=!0,showAuthors:s=!0,path:l="/blog"}=t,c={postsPerPage:o,showExcerpts:a,showDates:r,showAuthors:s};return{name:"blog-index",modules:["blog"],async enhanceModules(t){const o=t.find(n=>"blog"===n.id);if(!o)return;const a=[...o.files].sort((n,e)=>{const t=new Date(n.processed.frontmatter.date||0);return new Date(e.processed.frontmatter.date||0).getTime()-t.getTime()}).map(n=>({title:n.processed.frontmatter.title,description:n.processed.frontmatter.description,date:n.processed.frontmatter.date,author:n.processed.frontmatter.author,excerpt:n.processed.excerpt,link:n.urlPath}));n=a,e=c,o.enhance("blogPosts",a),o.enhance("blogConfig",c),o.enhance("blogIndexPath",l)},extendRoutes:async t=>n&&e?(t[l]={path:l,component:'<div class="blog-index">\n <h1>Blog</h1>\n <div class="blog-posts">\n <for|post| of=$global.blogPosts>\n <article class="blog-post-card">\n <h2>\n <a href=post.link>${post.title}</a>\n </h2>\n <if=post.date>\n <div class="post-date">\n <small>${new Date(post.date).toLocaleDateString()}</small>\n </div>\n </if>\n <if=post.author>\n <div class="post-author">\n <small>by ${post.author}</small>\n </div>\n </if>\n <if=post.excerpt>\n <div class="post-excerpt">\n <p>${post.excerpt}</p>\n </div>\n </if>\n <a href=post.link class="read-more">Read more →</a>\n </article>\n </for>\n </div>\n</div>\n\n<style>\n .blog-index {\n max-width: var(--content-max-width, 960px);\n margin: 0 auto;\n padding: var(--content-padding, 2rem 1.5rem);\n }\n\n .blog-posts {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n }\n\n .blog-post-card {\n border: 1px solid var(--border-default, #e5e7eb);\n border-radius: var(--radius-lg, 0.5rem);\n padding: 1.5rem;\n background: var(--bg-default, #ffffff);\n }\n\n .blog-post-card h2 {\n margin: 0 0 0.5rem 0;\n }\n\n .blog-post-card h2 a {\n color: var(--text-1, #111827);\n text-decoration: none;\n }\n\n .blog-post-card h2 a:hover {\n color: var(--color-primary-2, #3b82f6);\n }\n\n .post-date,\n .post-author {\n color: var(--text-3, #6b7280);\n margin-bottom: 0.5rem;\n }\n\n .post-excerpt {\n margin: 1rem 0;\n color: var(--text-2, #4b5563);\n }\n\n .read-more {\n display: inline-block;\n color: var(--color-primary-2, #3b82f6);\n text-decoration: none;\n font-weight: 500;\n }\n\n .read-more:hover {\n text-decoration: underline;\n }\n</style>\n',handler:"import { config } from '../_config.js';\n\nlet moduleEnhancements = {};\ntry {\n moduleEnhancements = (await import('/src/.generated/module-enhancements.js')).default;\n} catch {}\n\nexport async function GET(context, next) {\n const base = (config.site.base || '/').replace(/\\/$/, '');\n context.base = base || '/';\n\n // Standard context fields\n context.navbar = config.theme.options.navbar || [];\n context.lang = config.site.lang || 'en-US';\n context.siteHead = config.site.head || [];\n context.footer = config.theme.options.footer || null;\n context.title = 'Blog';\n context.description = 'Blog posts';\n\n // Blog posts from module enhancements (links already prefixed at build time)\n const blogModule = moduleEnhancements['blog'] || {};\n context.blogPosts = blogModule.blogPosts || [];\n}\n",meta:{blogPosts:n,blogConfig:e}},t):t}}
|
|
@@ -1,86 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Sidenav Plugin for MarkoPress
|
|
3
|
-
*
|
|
4
|
-
* Generates sidebar navigation from content structure
|
|
5
|
-
* Now supports dynamic module targeting
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Create sidenav plugin
|
|
9
|
-
* Supports dynamic module targeting via the `module` option
|
|
10
|
-
*/
|
|
11
|
-
export default function sidenavPlugin(options = {}) {
|
|
12
|
-
const { autoGenerate = true, items, module: targetModule = 'docs' } = options;
|
|
13
|
-
// Normalize module option to array
|
|
14
|
-
const targetModules = Array.isArray(targetModule) ? targetModule : [targetModule];
|
|
15
|
-
return {
|
|
16
|
-
name: 'sidenav',
|
|
17
|
-
modules: targetModules,
|
|
18
|
-
async enhanceModules(modules) {
|
|
19
|
-
for (const mod of modules) {
|
|
20
|
-
// Use manual items if provided, otherwise auto-generate
|
|
21
|
-
const sidebar = items || (autoGenerate ? buildSidebarFromFiles(mod.files, mod.id) : []);
|
|
22
|
-
mod.enhance('sidebar', sidebar);
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Build sidebar from content files
|
|
29
|
-
* Groups by directory structure and uses frontmatter for ordering
|
|
30
|
-
* Works with any module ID
|
|
31
|
-
*/
|
|
32
|
-
function buildSidebarFromFiles(files, moduleId) {
|
|
33
|
-
// Group files by directory
|
|
34
|
-
const groups = new Map();
|
|
35
|
-
for (const file of files) {
|
|
36
|
-
// Get the path after /{moduleId}/
|
|
37
|
-
const modulePath = file.urlPath.replace(new RegExp(`^/${moduleId}/`), '');
|
|
38
|
-
// Extract directory (first segment)
|
|
39
|
-
const dirParts = modulePath.split('/');
|
|
40
|
-
const dir = dirParts.length > 1 ? dirParts[0] : '';
|
|
41
|
-
if (dir) {
|
|
42
|
-
if (!groups.has(dir)) {
|
|
43
|
-
groups.set(dir, []);
|
|
44
|
-
}
|
|
45
|
-
groups.get(dir).push(file);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Build sidebar structure
|
|
49
|
-
const sidebar = [];
|
|
50
|
-
// First, add root-level files (no directory)
|
|
51
|
-
const rootFiles = files.filter(f => {
|
|
52
|
-
const modulePath = f.urlPath.replace(new RegExp(`^/${moduleId}/`), '');
|
|
53
|
-
return !modulePath.includes('/');
|
|
54
|
-
});
|
|
55
|
-
for (const file of rootFiles) {
|
|
56
|
-
sidebar.push({
|
|
57
|
-
text: file.processed.frontmatter.title || file.urlPath,
|
|
58
|
-
link: file.urlPath,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
// Then, add directory groups
|
|
62
|
-
for (const [dir, dirFiles] of groups.entries()) {
|
|
63
|
-
// Sort files within directory by frontmatter order (if specified)
|
|
64
|
-
const sortedFiles = dirFiles.sort((a, b) => {
|
|
65
|
-
const orderA = a.processed.frontmatter.order;
|
|
66
|
-
const orderB = b.processed.frontmatter.order;
|
|
67
|
-
if (orderA !== undefined && orderB !== undefined) {
|
|
68
|
-
return orderA - orderB;
|
|
69
|
-
}
|
|
70
|
-
return 0;
|
|
71
|
-
});
|
|
72
|
-
sidebar.push({
|
|
73
|
-
text: dir.charAt(0).toUpperCase() + dir.slice(1), // Capitalize
|
|
74
|
-
items: sortedFiles.map(file => ({
|
|
75
|
-
text: file.processed.frontmatter.title || file.urlPath,
|
|
76
|
-
link: file.urlPath,
|
|
77
|
-
})),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// Return as a single default section for compatibility with sidebar component
|
|
81
|
-
return [{
|
|
82
|
-
text: undefined, // No section title for default section
|
|
83
|
-
items: sidebar,
|
|
84
|
-
}];
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export default function t(t={}){const{autoGenerate:r=!0,items:o,module:s="docs"}=t;return{name:"sidenav",modules:Array.isArray(s)?s:[s],async enhanceModules(t){for(const s of t){const t=o||(r?e(s.files,s.id):[]);s.enhance("sidebar",t)}}}}function e(t,e){const r=new Map;for(const o of t){const t=o.urlPath.replace(RegExp(`^/${e}/`),"").split("/"),s=t.length>1?t[0]:"";s&&(r.has(s)||r.set(s,[]),r.get(s).push(o))}const o=[],s=t.filter(t=>!t.urlPath.replace(RegExp(`^/${e}/`),"").includes("/"));for(const t of s)o.push({text:t.processed.frontmatter.title||t.urlPath,link:t.urlPath});for(const[t,e]of r.entries()){const r=e.sort((t,e)=>{const r=t.processed.frontmatter.order,o=e.processed.frontmatter.order;return void 0!==r&&void 0!==o?r-o:0});o.push({text:t.charAt(0).toUpperCase()+t.slice(1),items:r.map(t=>({text:t.processed.frontmatter.title||t.urlPath,link:t.urlPath}))})}return[{text:void 0,items:o}]}
|
|
@@ -1,79 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* TOC Plugin for MarkoPress
|
|
3
|
-
*
|
|
4
|
-
* Generates table of contents from markdown headers
|
|
5
|
-
* Works with any content module dynamically
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Create TOC plugin
|
|
9
|
-
* Supports dynamic module targeting via the `module` option
|
|
10
|
-
* If no module is specified, works with all available modules
|
|
11
|
-
*/
|
|
12
|
-
export default function tocPlugin(options = {}) {
|
|
13
|
-
const { minDepth = 2, maxDepth = 3, module: targetModule } = options;
|
|
14
|
-
const pluginConfig = {
|
|
15
|
-
name: 'toc',
|
|
16
|
-
async enhanceModules(modules) {
|
|
17
|
-
modules.forEach((module) => {
|
|
18
|
-
// Check if this module has TOC extraction enabled via config
|
|
19
|
-
// TOC is only extracted if explicitly enabled (toc: true)
|
|
20
|
-
const extractToc = module.getEnhancement?.('extractToc');
|
|
21
|
-
if (extractToc !== true) {
|
|
22
|
-
return; // Skip TOC generation unless explicitly enabled
|
|
23
|
-
}
|
|
24
|
-
// Create a Map to store TOC for each file
|
|
25
|
-
const tocMap = new Map();
|
|
26
|
-
module.files.forEach((file) => {
|
|
27
|
-
const toc = buildTocFromHeaders(file.processed.headers, minDepth, maxDepth);
|
|
28
|
-
tocMap.set(file.urlPath, toc);
|
|
29
|
-
});
|
|
30
|
-
// Add the TOC map as an enhancement
|
|
31
|
-
module.enhance('toc', tocMap);
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
// If specific modules are requested, set them
|
|
36
|
-
// Otherwise, let it work with all modules by not setting the `modules` property
|
|
37
|
-
if (targetModule) {
|
|
38
|
-
pluginConfig.modules = Array.isArray(targetModule) ? targetModule : [targetModule];
|
|
39
|
-
}
|
|
40
|
-
return pluginConfig;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Build TOC from markdown headers
|
|
44
|
-
* Returns a hierarchical structure with nested children
|
|
45
|
-
* Handles nested tree structure by recursively filtering by depth
|
|
46
|
-
*/
|
|
47
|
-
function buildTocFromHeaders(headers, minDepth, maxDepth) {
|
|
48
|
-
if (!headers || headers.length === 0) {
|
|
49
|
-
return [];
|
|
50
|
-
}
|
|
51
|
-
const result = [];
|
|
52
|
-
for (const header of headers) {
|
|
53
|
-
// If this header is within the depth range, include it
|
|
54
|
-
if (header.level >= minDepth && header.level <= maxDepth) {
|
|
55
|
-
const item = {
|
|
56
|
-
slug: header.slug,
|
|
57
|
-
title: header.title,
|
|
58
|
-
level: header.level,
|
|
59
|
-
};
|
|
60
|
-
// Recursively process children
|
|
61
|
-
if (header.children && header.children.length > 0) {
|
|
62
|
-
const childItems = buildTocFromHeaders(header.children, minDepth, maxDepth);
|
|
63
|
-
if (childItems.length > 0) {
|
|
64
|
-
item.children = childItems;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
result.push(item);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
// Header is outside range, but its children might be within range
|
|
71
|
-
if (header.children && header.children.length > 0) {
|
|
72
|
-
const childItems = buildTocFromHeaders(header.children, minDepth, maxDepth);
|
|
73
|
-
result.push(...childItems);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export default function e(e={}){const{minDepth:t=2,maxDepth:l=3,module:c}=e,r={name:"toc",async enhanceModules(e){e.forEach(e=>{const c=e.getEnhancement?.("extractToc");if(!0!==c)return;const r=new Map;e.files.forEach(e=>{const c=n(e.processed.headers,t,l);r.set(e.urlPath,c)}),e.enhance("toc",r)})}};return c&&(r.modules=Array.isArray(c)?c:[c]),r}function n(e,t,l){if(!e||0===e.length)return[];const c=[];for(const r of e)if(r.level>=t&&r.level<=l){const e={slug:r.slug,title:r.title,level:r.level};if(r.children&&r.children.length>0){const c=n(r.children,t,l);c.length>0&&(e.children=c)}c.push(e)}else if(r.children&&r.children.length>0){const e=n(r.children,t,l);c.push(...e)}return c}
|
package/dist/preview/index.d.ts
CHANGED
package/dist/preview/index.js
CHANGED
|
@@ -1,25 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* MarkoPress Preview Server
|
|
3
|
-
* Serves the production build
|
|
4
|
-
*/
|
|
5
|
-
import { spawn } from 'node:child_process';
|
|
6
|
-
export async function preview(options = {}) {
|
|
7
|
-
const { port = 4173, host = 'localhost', root } = options;
|
|
8
|
-
console.log('🚀 Starting MarkoPress preview server...\n');
|
|
9
|
-
console.log(` Server: http://${host}:${port}`);
|
|
10
|
-
console.log(' Press Ctrl+C to stop\n');
|
|
11
|
-
// Use resolved root or fall back to process.cwd()
|
|
12
|
-
const cwd = root || process.cwd();
|
|
13
|
-
// Use @marko/run preview command
|
|
14
|
-
const previewProcess = spawn('npx', ['marko-run', 'preview', '--port', String(port)], {
|
|
15
|
-
stdio: 'inherit',
|
|
16
|
-
cwd,
|
|
17
|
-
});
|
|
18
|
-
previewProcess.on('error', (error) => {
|
|
19
|
-
console.error('Failed to start preview server:', error.message);
|
|
20
|
-
process.exit(1);
|
|
21
|
-
});
|
|
22
|
-
// Keep the process running
|
|
23
|
-
return new Promise(() => { });
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import{spawn as o}from"node:child_process";export async function preview(r={}){const{port:e=4173,host:s="localhost",root:t}=r;console.log("🚀 Starting MarkoPress preview server...\n"),console.log(` Server: http://${s}:${e}`),console.log(" Press Ctrl+C to stop\n");const n=t||process.cwd();return o("npx",["marko-run","preview","--port",e+""],{stdio:"inherit",cwd:n}).on("error",o=>{console.error("Failed to start preview server:",o.message),process.exit(1)}),new Promise(()=>{})}
|
|
@@ -1,289 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Default Design System Preset
|
|
3
|
-
* Plain, clean style matching the original MarkoPress theme
|
|
4
|
-
* Based on the existing styles.css
|
|
5
|
-
*/
|
|
6
|
-
export const defaultPreset = {
|
|
7
|
-
name: 'default',
|
|
8
|
-
version: '2.0.0',
|
|
9
|
-
description: 'MarkoPress default theme (VitePress-inspired with Indigo brand color)',
|
|
10
|
-
colors: {
|
|
11
|
-
// Primary brand color (Indigo)
|
|
12
|
-
primary: {
|
|
13
|
-
'1': '#3451b2', // Dark indigo for dark mode text / active states
|
|
14
|
-
'2': '#3a5ccc', // Primary indigo (brand color)
|
|
15
|
-
'3': '#5672cd', // Light indigo
|
|
16
|
-
soft: 'rgba(100, 108, 255, 0.14)',
|
|
17
|
-
},
|
|
18
|
-
// Success (Green)
|
|
19
|
-
success: {
|
|
20
|
-
'1': '#059669',
|
|
21
|
-
'2': '#10b981',
|
|
22
|
-
'3': '#34d399',
|
|
23
|
-
soft: 'rgba(16, 185, 129, 0.1)',
|
|
24
|
-
},
|
|
25
|
-
// Warning (Yellow/Orange)
|
|
26
|
-
warning: {
|
|
27
|
-
'1': '#d97706',
|
|
28
|
-
'2': '#f59e0b',
|
|
29
|
-
'3': '#fbbf24',
|
|
30
|
-
soft: 'rgba(245, 158, 11, 0.1)',
|
|
31
|
-
},
|
|
32
|
-
// Danger (Red)
|
|
33
|
-
danger: {
|
|
34
|
-
'1': '#dc2626',
|
|
35
|
-
'2': '#ef4444',
|
|
36
|
-
'3': '#f87171',
|
|
37
|
-
soft: 'rgba(239, 68, 68, 0.1)',
|
|
38
|
-
},
|
|
39
|
-
// Info (Cyan)
|
|
40
|
-
info: {
|
|
41
|
-
'1': '#0891b2',
|
|
42
|
-
'2': '#06b6d4',
|
|
43
|
-
'3': '#22d3ee',
|
|
44
|
-
soft: 'rgba(6, 182, 212, 0.1)',
|
|
45
|
-
},
|
|
46
|
-
// Gray scale (Light mode)
|
|
47
|
-
gray: {
|
|
48
|
-
'1': '#e5e7eb',
|
|
49
|
-
'2': '#f3f4f6',
|
|
50
|
-
'3': '#f9fafb',
|
|
51
|
-
soft: 'rgba(107, 114, 128, 0.1)',
|
|
52
|
-
},
|
|
53
|
-
// Background colors (Light mode)
|
|
54
|
-
bg: {
|
|
55
|
-
default: '#ffffff',
|
|
56
|
-
alt: '#f9fafb',
|
|
57
|
-
elevated: '#ffffff',
|
|
58
|
-
soft: '#f3f4f6',
|
|
59
|
-
},
|
|
60
|
-
// Text colors (Light mode)
|
|
61
|
-
text: {
|
|
62
|
-
'1': '#111827',
|
|
63
|
-
'2': '#4b5563',
|
|
64
|
-
'3': '#6b7280',
|
|
65
|
-
},
|
|
66
|
-
// Border colors (Light mode)
|
|
67
|
-
border: {
|
|
68
|
-
default: '#e5e7eb',
|
|
69
|
-
divider: '#e5e7eb',
|
|
70
|
-
gutter: '#e5e7eb',
|
|
71
|
-
},
|
|
72
|
-
// Divider
|
|
73
|
-
divider: '#e5e7eb',
|
|
74
|
-
// Soft backgrounds
|
|
75
|
-
soft: {
|
|
76
|
-
brand: 'rgba(59, 130, 246, 0.1)',
|
|
77
|
-
gray: 'rgba(107, 114, 128, 0.1)',
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
typography: {
|
|
81
|
-
fontFamily: {
|
|
82
|
-
sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
83
|
-
mono: "'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace",
|
|
84
|
-
},
|
|
85
|
-
fontSize: {
|
|
86
|
-
xs: '0.75rem',
|
|
87
|
-
sm: '0.875rem',
|
|
88
|
-
base: '1rem',
|
|
89
|
-
lg: '1.125rem',
|
|
90
|
-
xl: '1.25rem',
|
|
91
|
-
'2xl': '1.5rem',
|
|
92
|
-
'3xl': '1.875rem',
|
|
93
|
-
'4xl': '2.25rem',
|
|
94
|
-
},
|
|
95
|
-
fontWeight: {
|
|
96
|
-
normal: 400,
|
|
97
|
-
medium: 500,
|
|
98
|
-
semibold: 600,
|
|
99
|
-
bold: 700,
|
|
100
|
-
},
|
|
101
|
-
lineHeight: {
|
|
102
|
-
tight: 1.25,
|
|
103
|
-
normal: 1.5,
|
|
104
|
-
relaxed: 1.75,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
spacing: {
|
|
108
|
-
scale: {
|
|
109
|
-
xs: '0.25rem',
|
|
110
|
-
sm: '0.5rem',
|
|
111
|
-
md: '1rem',
|
|
112
|
-
lg: '1.5rem',
|
|
113
|
-
xl: '2rem',
|
|
114
|
-
'2xl': '3rem',
|
|
115
|
-
'3xl': '4rem',
|
|
116
|
-
'4xl': '6rem',
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
effects: {
|
|
120
|
-
shadows: {
|
|
121
|
-
'1': '0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06)',
|
|
122
|
-
'2': '0 3px 12px rgba(0, 0, 0, 0.07), 0 1px 4px rgba(0, 0, 0, 0.07)',
|
|
123
|
-
'3': '0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08)',
|
|
124
|
-
'4': '0 20px 50px rgba(0, 0, 0, 0.12), 0 4px 10px rgba(0, 0, 0, 0.08)',
|
|
125
|
-
'5': '0 25px 70px rgba(0, 0, 0, 0.15), 0 8px 16px rgba(0, 0, 0, 0.1)',
|
|
126
|
-
},
|
|
127
|
-
borderRadius: {
|
|
128
|
-
sm: '4px',
|
|
129
|
-
md: '8px',
|
|
130
|
-
lg: '12px',
|
|
131
|
-
full: '9999px',
|
|
132
|
-
},
|
|
133
|
-
transitions: {
|
|
134
|
-
base: '250ms ease-in-out',
|
|
135
|
-
fast: '150ms ease-in-out',
|
|
136
|
-
slow: '350ms ease-in-out',
|
|
137
|
-
},
|
|
138
|
-
},
|
|
139
|
-
layout: {
|
|
140
|
-
maxWidth: '1440px',
|
|
141
|
-
navbarHeight: '64px',
|
|
142
|
-
sidebarWidth: '280px',
|
|
143
|
-
tocWidth: '240px',
|
|
144
|
-
zIndex: {
|
|
145
|
-
footer: 10,
|
|
146
|
-
localNav: 20,
|
|
147
|
-
nav: 30,
|
|
148
|
-
layoutTop: 40,
|
|
149
|
-
backdrop: 50,
|
|
150
|
-
sidebar: 60,
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
components: {
|
|
154
|
-
navbar: {
|
|
155
|
-
height: '64px',
|
|
156
|
-
padding: '0 1.5rem',
|
|
157
|
-
background: '#ffffff',
|
|
158
|
-
border: '#e5e7eb',
|
|
159
|
-
borderWidth: '1px',
|
|
160
|
-
shadow: 'none',
|
|
161
|
-
logoHeight: '32px',
|
|
162
|
-
},
|
|
163
|
-
sidebar: {
|
|
164
|
-
width: '280px',
|
|
165
|
-
padding: '1.5rem',
|
|
166
|
-
background: '#f9fafb',
|
|
167
|
-
border: '#e5e7eb',
|
|
168
|
-
activeBorder: '2px solid #3451b2', // NEW: Active state indicator
|
|
169
|
-
activeBackground: 'rgba(100, 108, 255, 0.1)', // Updated to Indigo
|
|
170
|
-
},
|
|
171
|
-
content: {
|
|
172
|
-
maxWidth: '720px', // VitePress-proven optimal reading width
|
|
173
|
-
padding: '32px 24px',
|
|
174
|
-
fontSize: '16px',
|
|
175
|
-
lineHeight: 1.7, // Improved readability
|
|
176
|
-
},
|
|
177
|
-
code: {
|
|
178
|
-
fontSize: '0.875em',
|
|
179
|
-
lineHeight: 1.7, // Improved readability
|
|
180
|
-
background: '#f3f4f6',
|
|
181
|
-
color: '#3a5ccc', // Updated to Indigo
|
|
182
|
-
borderRadius: '4px',
|
|
183
|
-
padding: '0.25rem 0.5rem',
|
|
184
|
-
blockPadding: '20px 24px',
|
|
185
|
-
blockBorderRadius: '8px',
|
|
186
|
-
},
|
|
187
|
-
heading: {
|
|
188
|
-
h1FontSize: '2.25rem',
|
|
189
|
-
h2FontSize: '1.5rem',
|
|
190
|
-
h3FontSize: '1.25rem',
|
|
191
|
-
h4FontSize: '1.125rem',
|
|
192
|
-
h1FontWeight: 700,
|
|
193
|
-
h2FontWeight: 600,
|
|
194
|
-
h3FontWeight: 600,
|
|
195
|
-
h1LineHeight: 1.2,
|
|
196
|
-
h2LineHeight: 1.3,
|
|
197
|
-
h3LineHeight: 1.4,
|
|
198
|
-
marginTop: '1.5rem',
|
|
199
|
-
marginBottom: '1rem',
|
|
200
|
-
},
|
|
201
|
-
},
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* Dark mode override for default preset
|
|
205
|
-
*/
|
|
206
|
-
export const defaultDark = {
|
|
207
|
-
colors: {
|
|
208
|
-
// Primary brand color (Indigo - dark mode)
|
|
209
|
-
primary: {
|
|
210
|
-
'1': '#a8b1ff', // Light indigo for dark mode text
|
|
211
|
-
'2': '#3a5ccc', // Primary indigo
|
|
212
|
-
'3': '#3451b2', // Dark indigo
|
|
213
|
-
soft: 'rgba(100, 108, 255, 0.16)', // Increased opacity
|
|
214
|
-
},
|
|
215
|
-
success: {
|
|
216
|
-
'1': '#34d399',
|
|
217
|
-
'2': '#10b981',
|
|
218
|
-
'3': '#059669',
|
|
219
|
-
soft: 'rgba(52, 211, 153, 0.15)',
|
|
220
|
-
},
|
|
221
|
-
warning: {
|
|
222
|
-
'1': '#fbbf24',
|
|
223
|
-
'2': '#f59e0b',
|
|
224
|
-
'3': '#d97706',
|
|
225
|
-
soft: 'rgba(251, 191, 36, 0.15)',
|
|
226
|
-
},
|
|
227
|
-
danger: {
|
|
228
|
-
'1': '#f87171',
|
|
229
|
-
'2': '#ef4444',
|
|
230
|
-
'3': '#dc2626',
|
|
231
|
-
soft: 'rgba(248, 113, 113, 0.15)',
|
|
232
|
-
},
|
|
233
|
-
info: {
|
|
234
|
-
'1': '#22d3ee',
|
|
235
|
-
'2': '#06b6d4',
|
|
236
|
-
'3': '#0891b2',
|
|
237
|
-
soft: 'rgba(34, 211, 238, 0.15)',
|
|
238
|
-
},
|
|
239
|
-
// Gray scale (Dark mode)
|
|
240
|
-
gray: {
|
|
241
|
-
'1': '#374151',
|
|
242
|
-
'2': '#1f2937',
|
|
243
|
-
'3': '#111827',
|
|
244
|
-
soft: 'rgba(107, 114, 128, 0.15)',
|
|
245
|
-
},
|
|
246
|
-
// Background colors (Dark mode - VitePress-inspired)
|
|
247
|
-
bg: {
|
|
248
|
-
default: '#1b1b1f', // VitePress default dark
|
|
249
|
-
alt: '#1f2937',
|
|
250
|
-
elevated: '#2d2d30',
|
|
251
|
-
soft: '#252529',
|
|
252
|
-
},
|
|
253
|
-
// Text colors (Dark mode)
|
|
254
|
-
text: {
|
|
255
|
-
'1': '#f9fafb',
|
|
256
|
-
'2': '#d1d5db',
|
|
257
|
-
'3': '#9ca3af',
|
|
258
|
-
},
|
|
259
|
-
// Border colors (Dark mode)
|
|
260
|
-
border: {
|
|
261
|
-
default: '#374151',
|
|
262
|
-
divider: '#1f2937',
|
|
263
|
-
gutter: '#1f2937',
|
|
264
|
-
},
|
|
265
|
-
// Divider (Dark mode)
|
|
266
|
-
divider: '#1f2937',
|
|
267
|
-
// Soft backgrounds (Dark mode)
|
|
268
|
-
soft: {
|
|
269
|
-
brand: 'rgba(96, 165, 250, 0.15)',
|
|
270
|
-
gray: 'rgba(156, 162, 173, 0.15)',
|
|
271
|
-
},
|
|
272
|
-
},
|
|
273
|
-
components: {
|
|
274
|
-
navbar: {
|
|
275
|
-
background: '#1b1b1f',
|
|
276
|
-
border: '#2d2d30',
|
|
277
|
-
},
|
|
278
|
-
sidebar: {
|
|
279
|
-
background: '#1b1b1f',
|
|
280
|
-
activeBorder: '2px solid #a8b1ff',
|
|
281
|
-
activeBackground: 'rgba(100, 108, 255, 0.16)',
|
|
282
|
-
},
|
|
283
|
-
code: {
|
|
284
|
-
background: '#1f2937',
|
|
285
|
-
color: '#a8b1ff', // Light indigo for dark mode
|
|
286
|
-
},
|
|
287
|
-
},
|
|
288
|
-
};
|
|
289
|
-
//# sourceMappingURL=default.js.map
|
|
1
|
+
export const defaultPreset={name:"default",version:"2.0.0",description:"MarkoPress default theme (VitePress-inspired with Indigo brand color)",colors:{primary:{1:"#3451b2",2:"#3a5ccc",3:"#5672cd",soft:"rgba(100, 108, 255, 0.14)"},success:{1:"#059669",2:"#10b981",3:"#34d399",soft:"rgba(16, 185, 129, 0.1)"},warning:{1:"#d97706",2:"#f59e0b",3:"#fbbf24",soft:"rgba(245, 158, 11, 0.1)"},danger:{1:"#dc2626",2:"#ef4444",3:"#f87171",soft:"rgba(239, 68, 68, 0.1)"},info:{1:"#0891b2",2:"#06b6d4",3:"#22d3ee",soft:"rgba(6, 182, 212, 0.1)"},gray:{1:"#e5e7eb",2:"#f3f4f6",3:"#f9fafb",soft:"rgba(107, 114, 128, 0.1)"},bg:{default:"#ffffff",alt:"#f9fafb",elevated:"#ffffff",soft:"#f3f4f6"},text:{1:"#111827",2:"#4b5563",3:"#6b7280"},border:{default:"#e5e7eb",divider:"#e5e7eb",gutter:"#e5e7eb"},divider:"#e5e7eb",soft:{brand:"rgba(59, 130, 246, 0.1)",gray:"rgba(107, 114, 128, 0.1)"}},typography:{fontFamily:{sans:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",mono:"'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace"},fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{normal:400,medium:500,semibold:600,bold:700},lineHeight:{tight:1.25,normal:1.5,relaxed:1.75}},spacing:{scale:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem","4xl":"6rem"}},effects:{shadows:{1:"0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06)",2:"0 3px 12px rgba(0, 0, 0, 0.07), 0 1px 4px rgba(0, 0, 0, 0.07)",3:"0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08)",4:"0 20px 50px rgba(0, 0, 0, 0.12), 0 4px 10px rgba(0, 0, 0, 0.08)",5:"0 25px 70px rgba(0, 0, 0, 0.15), 0 8px 16px rgba(0, 0, 0, 0.1)"},borderRadius:{sm:"4px",md:"8px",lg:"12px",full:"9999px"},transitions:{base:"250ms ease-in-out",fast:"150ms ease-in-out",slow:"350ms ease-in-out"}},layout:{maxWidth:"1440px",navbarHeight:"64px",sidebarWidth:"280px",tocWidth:"240px",zIndex:{footer:10,localNav:20,nav:30,layoutTop:40,backdrop:50,sidebar:60}},components:{navbar:{height:"64px",padding:"0 1.5rem",background:"#ffffff",border:"#e5e7eb",borderWidth:"1px",shadow:"none",logoHeight:"32px"},sidebar:{width:"280px",padding:"1.5rem",background:"#f9fafb",border:"#e5e7eb",activeBorder:"2px solid #3451b2",activeBackground:"rgba(100, 108, 255, 0.1)"},content:{maxWidth:"720px",padding:"32px 24px",fontSize:"16px",lineHeight:1.7},code:{fontSize:"0.875em",lineHeight:1.7,background:"#f3f4f6",color:"#3a5ccc",borderRadius:"4px",padding:"0.25rem 0.5rem",blockPadding:"20px 24px",blockBorderRadius:"8px"},heading:{h1FontSize:"2.25rem",h2FontSize:"1.5rem",h3FontSize:"1.25rem",h4FontSize:"1.125rem",h1FontWeight:700,h2FontWeight:600,h3FontWeight:600,h1LineHeight:1.2,h2LineHeight:1.3,h3LineHeight:1.4,marginTop:"1.5rem",marginBottom:"1rem"}}};export const defaultDark={colors:{primary:{1:"#a8b1ff",2:"#3a5ccc",3:"#3451b2",soft:"rgba(100, 108, 255, 0.16)"},success:{1:"#34d399",2:"#10b981",3:"#059669",soft:"rgba(52, 211, 153, 0.15)"},warning:{1:"#fbbf24",2:"#f59e0b",3:"#d97706",soft:"rgba(251, 191, 36, 0.15)"},danger:{1:"#f87171",2:"#ef4444",3:"#dc2626",soft:"rgba(248, 113, 113, 0.15)"},info:{1:"#22d3ee",2:"#06b6d4",3:"#0891b2",soft:"rgba(34, 211, 238, 0.15)"},gray:{1:"#374151",2:"#1f2937",3:"#111827",soft:"rgba(107, 114, 128, 0.15)"},bg:{default:"#1b1b1f",alt:"#1f2937",elevated:"#2d2d30",soft:"#252529"},text:{1:"#f9fafb",2:"#d1d5db",3:"#9ca3af"},border:{default:"#374151",divider:"#1f2937",gutter:"#1f2937"},divider:"#1f2937",soft:{brand:"rgba(96, 165, 250, 0.15)",gray:"rgba(156, 162, 173, 0.15)"}},components:{navbar:{background:"#1b1b1f",border:"#2d2d30"},sidebar:{background:"#1b1b1f",activeBorder:"2px solid #a8b1ff",activeBackground:"rgba(100, 108, 255, 0.16)"},code:{background:"#1f2937",color:"#a8b1ff"}}};
|