@xingwangzhe/stalux 1.2.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/LICENSE +21 -0
- package/README.md +192 -0
- package/package.json +108 -0
- package/scripts/cli.mjs +103 -0
- package/src/assets/BiCcCircle.svg +1 -0
- package/src/assets/astro.svg +1 -0
- package/src/assets/background/README.md +3 -0
- package/src/assets/background/pattern-1.min.svg +1 -0
- package/src/assets/background/pattern-10.min.svg +1 -0
- package/src/assets/background/pattern-11.min.svg +1 -0
- package/src/assets/background/pattern-12.min.svg +1 -0
- package/src/assets/background/pattern-13.min.svg +1 -0
- package/src/assets/background/pattern-14.min.svg +1 -0
- package/src/assets/background/pattern-15.min.svg +1 -0
- package/src/assets/background/pattern-16.min.svg +1 -0
- package/src/assets/background/pattern-17.min.svg +1 -0
- package/src/assets/background/pattern-18.min.svg +1 -0
- package/src/assets/background/pattern-19.min.svg +1 -0
- package/src/assets/background/pattern-2.min.svg +1 -0
- package/src/assets/background/pattern-20.min.svg +1 -0
- package/src/assets/background/pattern-21.min.svg +1 -0
- package/src/assets/background/pattern-22.min.svg +1 -0
- package/src/assets/background/pattern-23.min.svg +1 -0
- package/src/assets/background/pattern-24.min.svg +1 -0
- package/src/assets/background/pattern-25.min.svg +1 -0
- package/src/assets/background/pattern-26.min.svg +1 -0
- package/src/assets/background/pattern-27.min.svg +1 -0
- package/src/assets/background/pattern-28.min.svg +1 -0
- package/src/assets/background/pattern-29.min.svg +1 -0
- package/src/assets/background/pattern-3.min.svg +1 -0
- package/src/assets/background/pattern-30.min.svg +1 -0
- package/src/assets/background/pattern-31.min.svg +1 -0
- package/src/assets/background/pattern-32.min.svg +1 -0
- package/src/assets/background/pattern-33.min.svg +1 -0
- package/src/assets/background/pattern-34.min.svg +1 -0
- package/src/assets/background/pattern-35.min.svg +1 -0
- package/src/assets/background/pattern-36.min.svg +1 -0
- package/src/assets/background/pattern-37.min.svg +1 -0
- package/src/assets/background/pattern-38.min.svg +1 -0
- package/src/assets/background/pattern-39.min.svg +1 -0
- package/src/assets/background/pattern-4.min.svg +1 -0
- package/src/assets/background/pattern-40.min.svg +1 -0
- package/src/assets/background/pattern-41.min.svg +1 -0
- package/src/assets/background/pattern-42.min.svg +1 -0
- package/src/assets/background/pattern-5.min.svg +1 -0
- package/src/assets/background/pattern-6.min.svg +1 -0
- package/src/assets/background/pattern-7.min.svg +1 -0
- package/src/assets/background/pattern-8.min.svg +1 -0
- package/src/assets/background/pattern-9.min.svg +1 -0
- package/src/assets/background.svg +1 -0
- package/src/assets/cc-icon.svg +4 -0
- package/src/assets/fonts/GoogleSansCode-Italic.woff2 +0 -0
- package/src/assets/fonts/GoogleSansCode.woff2 +0 -0
- package/src/assets/fonts/LXGWWenKai-Regular.ttf +0 -0
- package/src/assets/fonts/LXGWWenKai-Regular.woff2 +0 -0
- package/src/components/stalux/analytics/clarity.astro +25 -0
- package/src/components/stalux/analytics/google.astro +31 -0
- package/src/components/stalux/analytics/umami.astro +16 -0
- package/src/components/stalux/archives/archivesList.astro +116 -0
- package/src/components/stalux/archives/toArchive.astro +14 -0
- package/src/components/stalux/categories/categoriesCard.astro +49 -0
- package/src/components/stalux/categories/categoriesList.astro +17 -0
- package/src/components/stalux/common/author.astro +35 -0
- package/src/components/stalux/common/date.astro +59 -0
- package/src/components/stalux/common/search.astro +14 -0
- package/src/components/stalux/common/textType.astro +16 -0
- package/src/components/stalux/common/verCount.astro +10 -0
- package/src/components/stalux/footer/FooterBadges.astro +150 -0
- package/src/components/stalux/footer/FooterBeian.astro +91 -0
- package/src/components/stalux/footer/FooterCopyright.astro +40 -0
- package/src/components/stalux/footer/FooterStats.astro +108 -0
- package/src/components/stalux/footer/FooterThemeInfo.astro +67 -0
- package/src/components/stalux/layout/footer.astro +87 -0
- package/src/components/stalux/layout/head.astro +194 -0
- package/src/components/stalux/layout/listPage.astro +26 -0
- package/src/components/stalux/layout/navs.astro +174 -0
- package/src/components/stalux/links/linkCard.astro +50 -0
- package/src/components/stalux/links/linkList.astro +20 -0
- package/src/components/stalux/links/socialMedia.astro +102 -0
- package/src/components/stalux/posts/PhotoSwipeStyle.astro +3 -0
- package/src/components/stalux/posts/PostTaxonomy.astro +65 -0
- package/src/components/stalux/posts/WalineComment.astro +609 -0
- package/src/components/stalux/posts/postAuthor.astro +23 -0
- package/src/components/stalux/posts/postCC.astro +52 -0
- package/src/components/stalux/posts/postCard.astro +83 -0
- package/src/components/stalux/posts/postContent.astro +174 -0
- package/src/components/stalux/posts/postLeft.astro +41 -0
- package/src/components/stalux/posts/postList.astro +25 -0
- package/src/components/stalux/posts/postNavigation.astro +137 -0
- package/src/components/stalux/posts/postRight.astro +33 -0
- package/src/components/stalux/posts/postToc.astro +88 -0
- package/src/components/stalux/posts/randomPost.astro +134 -0
- package/src/components/stalux/tags/tagHeader.astro +50 -0
- package/src/components/stalux/tags/tagsCloud.astro +100 -0
- package/src/components/stalux/words/wordCard.astro +62 -0
- package/src/components/stalux/words/wordList.astro +70 -0
- package/src/config.ts +58 -0
- package/src/i18n/en.json +193 -0
- package/src/i18n/zh-CN.json +193 -0
- package/src/index.ts +215 -0
- package/src/internal/components-plugin.ts +54 -0
- package/src/internal/dev-toolbar.ts +33 -0
- package/src/internal/override.ts +99 -0
- package/src/internal/pagefind.ts +40 -0
- package/src/layouts/PostLayout.astro +90 -0
- package/src/layouts/Stalux.astro +91 -0
- package/src/pages/404.astro +103 -0
- package/src/pages/about.astro +59 -0
- package/src/pages/about.md.ts +15 -0
- package/src/pages/api/post.abbrlink.json.ts +20 -0
- package/src/pages/archives.astro +23 -0
- package/src/pages/archives.md.ts +24 -0
- package/src/pages/atom.xml.ts +29 -0
- package/src/pages/categories/[category].astro +35 -0
- package/src/pages/categories/[category].md.ts +34 -0
- package/src/pages/categories/index.astro +23 -0
- package/src/pages/categories/index.md.ts +27 -0
- package/src/pages/index.astro +30 -0
- package/src/pages/index.md.ts +18 -0
- package/src/pages/links.astro +23 -0
- package/src/pages/links.md.ts +18 -0
- package/src/pages/llms-full.txt.ts +25 -0
- package/src/pages/llms.txt.ts +26 -0
- package/src/pages/posts/[post].astro +69 -0
- package/src/pages/posts/[post].md.ts +109 -0
- package/src/pages/rss.xml.ts +29 -0
- package/src/pages/tags/[tag].astro +37 -0
- package/src/pages/tags/[tag].md.ts +34 -0
- package/src/pages/tags/index.astro +23 -0
- package/src/pages/tags/index.md.ts +27 -0
- package/src/pages/words.astro +24 -0
- package/src/pages/words.md.ts +14 -0
- package/src/plugins/feature-flags.ts +68 -0
- package/src/plugins/satteri-temml.ts +81 -0
- package/src/schemas/collections.ts +140 -0
- package/src/schemas/config.ts +226 -0
- package/src/scripts/background.ts +59 -0
- package/src/styles/base/init.css +286 -0
- package/src/styles/base/math.css +411 -0
- package/src/styles/components/archives/archivesList.module.css +378 -0
- package/src/styles/components/archives/toArchive.module.css +3 -0
- package/src/styles/components/categories/categoriesCard.module.css +87 -0
- package/src/styles/components/categories/categoriesList.module.css +27 -0
- package/src/styles/components/common/author.module.css +73 -0
- package/src/styles/components/common/date.module.css +15 -0
- package/src/styles/components/common/textType.module.css +10 -0
- package/src/styles/components/footer/footer.module.css +44 -0
- package/src/styles/components/layout/navs.module.css +250 -0
- package/src/styles/components/links/linkCard.module.css +99 -0
- package/src/styles/components/links/linkList.module.css +67 -0
- package/src/styles/components/links/socialLinks.module.css +22 -0
- package/src/styles/components/markdown.css +528 -0
- package/src/styles/components/posts/postAuthor.module.css +32 -0
- package/src/styles/components/posts/postCC.module.css +138 -0
- package/src/styles/components/posts/postCard.module.css +156 -0
- package/src/styles/components/posts/postCategories.module.css +50 -0
- package/src/styles/components/posts/postContent.module.css +230 -0
- package/src/styles/components/posts/postLayout.module.css +142 -0
- package/src/styles/components/posts/postLeft.module.css +38 -0
- package/src/styles/components/posts/postList.module.css +24 -0
- package/src/styles/components/posts/postNavigation.module.css +187 -0
- package/src/styles/components/posts/postRight.module.css +60 -0
- package/src/styles/components/posts/postSidebar.module.css +57 -0
- package/src/styles/components/posts/postTags.module.css +51 -0
- package/src/styles/components/posts/postTaxonomy.module.css +87 -0
- package/src/styles/components/posts/postToc.module.css +74 -0
- package/src/styles/components/posts/randomPost.module.css +131 -0
- package/src/styles/components/tags/tagHeader.module.css +44 -0
- package/src/styles/components/tags/tagsCloud.module.css +124 -0
- package/src/styles/components/words/wordCard.module.css +130 -0
- package/src/styles/components/words/wordList.module.css +39 -0
- package/src/styles/pages/archives.module.css +18 -0
- package/src/styles/pages/categories.module.css +13 -0
- package/src/styles/pages/home.module.css +51 -0
- package/src/styles/pages/listPage.module.css +13 -0
- package/src/styles/pages/tags.module.css +12 -0
- package/src/styles/pages/words.module.css +13 -0
- package/src/styles/shared/animations.css +87 -0
- package/src/styles/shared/stagger.css +20 -0
- package/src/utils/ai-discovery.ts +547 -0
- package/src/utils/badge-generator.ts +68 -0
- package/src/utils/cc.ts +46 -0
- package/src/utils/collections-stats.ts +48 -0
- package/src/utils/config-utils.ts +107 -0
- package/src/utils/count-words.ts +20 -0
- package/src/utils/dayjs.ts +106 -0
- package/src/utils/feed.ts +70 -0
- package/src/utils/i18n.ts +64 -0
- package/src/utils/lucide-icons.ts +52 -0
- package/src/utils/semantic-time.ts +11 -0
- package/src/utils/taxonomy.ts +44 -0
- package/src/utils/toc-scrollspy.ts +95 -0
- package/src/utils/waline.ts +27 -0
- package/src/utils/word-count-utils.ts +83 -0
- package/template/astro.config.mjs +51 -0
- package/template/package.json +27 -0
- package/template/public/robots.txt +3 -0
- package/template/src/content.config.ts +11 -0
- package/template/stalux/about/index.md +14 -0
- package/template/stalux/config/ai-discovery.yml +2 -0
- package/template/stalux/config/author.yml +4 -0
- package/template/stalux/config/comment.yml +5 -0
- package/template/stalux/config/footer.yml +13 -0
- package/template/stalux/config/head.yml +7 -0
- package/template/stalux/config/links.yml +4 -0
- package/template/stalux/config/media-links.yml +8 -0
- package/template/stalux/config/navs.yml +23 -0
- package/template/stalux/config/promote.yml +2 -0
- package/template/stalux/config/site.yml +7 -0
- package/template/stalux/config/typetexts.yml +5 -0
- package/template/stalux/posts/hello-stalux.md +47 -0
- package/template/stalux/words/_template.md +12 -0
- package/template/stalux/words/einstein-imagination.md +8 -0
- package/template/tsconfig.json +9 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 站点字数统计工具
|
|
3
|
+
*
|
|
4
|
+
* Astro 7.1 启用 deferRender 后,post.rendered 不再在 content sync 阶段预计算。
|
|
5
|
+
* 因此改为直接从 post.body(原始 markdown)统计字数,不再依赖 Sätteri 的渲染结果。
|
|
6
|
+
*/
|
|
7
|
+
import { getCollection } from "astro:content";
|
|
8
|
+
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// 字数统计算法(基于 W3C Intl.Segmenter,body-based)
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
const bodySegmenter = new Intl.Segmenter("zh", { granularity: "word" });
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 从原始 markdown 正文估算字数。
|
|
17
|
+
* - 中文:`Intl.Segmenter` 逐字分割,每个汉字计 1
|
|
18
|
+
* - 英文:按词计 1
|
|
19
|
+
* - 纯数字序列:不计入(与旧正则行为一致)
|
|
20
|
+
* - 标点/空白不计
|
|
21
|
+
*/
|
|
22
|
+
function countWordsFromBody(body: string | undefined | null): number {
|
|
23
|
+
if (!body) return 0;
|
|
24
|
+
let count = 0;
|
|
25
|
+
for (const { segment, isWordLike } of bodySegmenter.segment(body)) {
|
|
26
|
+
// 排除纯数字序列(如年份、代码行号等),与旧正则行为保持一致
|
|
27
|
+
if (isWordLike && !/^\d+$/.test(segment)) count++;
|
|
28
|
+
}
|
|
29
|
+
return count;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// 模块级缓存(整个构建周期只计算一次)
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
let _cachedTotal: number | null = null;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 获取所有已发布文章的总字数(从 body 估算)。
|
|
40
|
+
* 结果会被缓存,同一构建周期内重复调用不会重新计算。
|
|
41
|
+
*/
|
|
42
|
+
export async function getTotalWordCount(): Promise<number> {
|
|
43
|
+
if (_cachedTotal !== null) return _cachedTotal;
|
|
44
|
+
try {
|
|
45
|
+
const posts = await getCollection("posts", ({ data }) => !data.draft);
|
|
46
|
+
_cachedTotal = posts.reduce((sum, post) => sum + countWordsFromBody(post.body), 0);
|
|
47
|
+
return _cachedTotal;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error("计算文章总字数时出错:", error);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let _cachedDescriptions: Map<string, { desc: string; wordCount: number }> | null = null;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 获取所有已发布文章的描述和字数缓存,供 RSS/Atom/LLMs feed 共享。
|
|
58
|
+
* - desc :直接从 frontmatter 读取(post.data.desc)
|
|
59
|
+
* - wordCount:从 post.body 估算
|
|
60
|
+
*/
|
|
61
|
+
export async function getPostDescriptions(): Promise<
|
|
62
|
+
Map<string, { desc: string; wordCount: number }>
|
|
63
|
+
> {
|
|
64
|
+
if (_cachedDescriptions !== null) return _cachedDescriptions;
|
|
65
|
+
const posts = await getCollection("posts", ({ data }) => !data.draft);
|
|
66
|
+
const results = posts.map((post) => ({
|
|
67
|
+
id: String(post.data.abbrlink ?? post.id),
|
|
68
|
+
desc: post.data.desc || "",
|
|
69
|
+
wordCount: countWordsFromBody(post.body),
|
|
70
|
+
}));
|
|
71
|
+
_cachedDescriptions = new Map(
|
|
72
|
+
results.map((r) => [r.id, { desc: r.desc, wordCount: r.wordCount }]),
|
|
73
|
+
);
|
|
74
|
+
return _cachedDescriptions;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function formatWordCount(count: number, lang?: string): string {
|
|
78
|
+
const isZh = lang?.startsWith("zh");
|
|
79
|
+
// 中文用"万"做万级单位;其他语言统一用"k"(千)。
|
|
80
|
+
if (isZh && count >= 10000) return `${(count / 10000).toFixed(1)}万`;
|
|
81
|
+
if (count >= 1000) return `${(count / 1000).toFixed(1)}k`;
|
|
82
|
+
return String(count);
|
|
83
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { defineConfig } from "astro/config";
|
|
2
|
+
import { satteri } from "@astrojs/markdown-satteri";
|
|
3
|
+
import sitemap from "@astrojs/sitemap";
|
|
4
|
+
import expressiveCode from "astro-expressive-code";
|
|
5
|
+
import stalux from "stalux";
|
|
6
|
+
import { mermaidMdast, mermaidHast } from "@xingwangzhe/satteri-mermaid";
|
|
7
|
+
import { photoswipe } from "@xingwangzhe/satteri-photoswipe";
|
|
8
|
+
|
|
9
|
+
// https://astro.build/config
|
|
10
|
+
export default defineConfig({
|
|
11
|
+
output: "static",
|
|
12
|
+
site: "https://example.com",
|
|
13
|
+
prefetch: {
|
|
14
|
+
prefetchAll: false,
|
|
15
|
+
defaultStrategy: "hover",
|
|
16
|
+
},
|
|
17
|
+
integrations: [
|
|
18
|
+
// Stalux 主题集成 — 自动注入所有页面、组件、路由
|
|
19
|
+
stalux({
|
|
20
|
+
contentDir: "stalux",
|
|
21
|
+
}),
|
|
22
|
+
sitemap(),
|
|
23
|
+
expressiveCode({
|
|
24
|
+
themes: ["dark-plus", "github-light"],
|
|
25
|
+
styleOverrides: {
|
|
26
|
+
borderRadius: "0.5rem",
|
|
27
|
+
codeFontFamily:
|
|
28
|
+
'"JetBrains Mono", "Fira Code", "Consolas", "Courier New", monospace',
|
|
29
|
+
},
|
|
30
|
+
useDarkModeMediaQuery: true,
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
markdown: {
|
|
34
|
+
processor: satteri({
|
|
35
|
+
features: {
|
|
36
|
+
math: true,
|
|
37
|
+
smartPunctuation: true,
|
|
38
|
+
gfm: true,
|
|
39
|
+
frontmatter: true,
|
|
40
|
+
},
|
|
41
|
+
mdastPlugins: [],
|
|
42
|
+
hastPlugins: [
|
|
43
|
+
photoswipe(),
|
|
44
|
+
mermaidHast({
|
|
45
|
+
responsive: true,
|
|
46
|
+
theme: "dark",
|
|
47
|
+
}),
|
|
48
|
+
],
|
|
49
|
+
}),
|
|
50
|
+
},
|
|
51
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-stalux-blog",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "astro dev",
|
|
7
|
+
"build": "astro build",
|
|
8
|
+
"preview": "astro preview",
|
|
9
|
+
"astro": "astro"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"astro": "^7.0.0",
|
|
13
|
+
"stalux": "^2.0.0",
|
|
14
|
+
"@astrojs/markdown-satteri": "^1.0.0",
|
|
15
|
+
"astro-expressive-code": "^0.44.0",
|
|
16
|
+
"@xingwangzhe/satteri-mermaid": "^0.7.0",
|
|
17
|
+
"@xingwangzhe/satteri-photoswipe": "^0.2.0",
|
|
18
|
+
"@astrojs/sitemap": "^4.0.0",
|
|
19
|
+
"pagefind": "^1.5.0",
|
|
20
|
+
"@pagefind/component-ui": "^1.5.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@astrojs/rss": "^4.0.0",
|
|
24
|
+
"@lucide/astro": "^1.0.0",
|
|
25
|
+
"typescript": "^7.0.0"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About Me
|
|
3
|
+
description: About this blog and the author
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Hello! Welcome to my blog.
|
|
7
|
+
|
|
8
|
+
This is my personal space where I share technology, life, and thoughts.
|
|
9
|
+
|
|
10
|
+
## About This Site
|
|
11
|
+
|
|
12
|
+
- Built with [Astro](https://astro.build) + [Stalux](https://stalux.needhelp.icu)
|
|
13
|
+
- Content licensed under CC-BY-NC-SA-4.0
|
|
14
|
+
- Source code hosted on GitHub
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id: navs
|
|
2
|
+
items:
|
|
3
|
+
- icon: home
|
|
4
|
+
link: /
|
|
5
|
+
title: Home
|
|
6
|
+
- icon: archive
|
|
7
|
+
link: /archives/
|
|
8
|
+
title: Archives
|
|
9
|
+
- icon: folder
|
|
10
|
+
link: /categories/
|
|
11
|
+
title: Categories
|
|
12
|
+
- icon: tag
|
|
13
|
+
link: /tags/
|
|
14
|
+
title: Tags
|
|
15
|
+
- icon: quote
|
|
16
|
+
link: /words/
|
|
17
|
+
title: Words
|
|
18
|
+
- icon: link
|
|
19
|
+
link: /links/
|
|
20
|
+
title: Links
|
|
21
|
+
- icon: user
|
|
22
|
+
link: /about/
|
|
23
|
+
title: About
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Hello Stalux!
|
|
3
|
+
abbrlink: hello-stalux
|
|
4
|
+
date: 2026-07-27 10:00:00
|
|
5
|
+
tags: [Stalux, Getting Started]
|
|
6
|
+
categories: [Blog]
|
|
7
|
+
desc: Welcome to Stalux! This is your first blog post.
|
|
8
|
+
cc: CC-BY-NC-SA-4.0
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Welcome to my blog! This is the first post created with the **Stalux** theme.
|
|
12
|
+
|
|
13
|
+
## About Stalux
|
|
14
|
+
|
|
15
|
+
Stalux is a modern, high-performance Astro blog theme featuring:
|
|
16
|
+
|
|
17
|
+
- 🌙 Dark mode with elegant glassmorphism design
|
|
18
|
+
- 🔍 Full-text search (Pagefind)
|
|
19
|
+
- 📡 RSS & Atom feeds
|
|
20
|
+
- 🤖 LLM discovery files (llms.txt)
|
|
21
|
+
- 💬 Comment system (Waline)
|
|
22
|
+
- 📊 Mermaid diagrams
|
|
23
|
+
- 📐 Math formula rendering
|
|
24
|
+
- 🖼️ PhotoSwipe lightbox
|
|
25
|
+
- 📱 Fully responsive
|
|
26
|
+
|
|
27
|
+
## Markdown Examples
|
|
28
|
+
|
|
29
|
+
**Bold**, *italic*, ~~strikethrough~~, `inline code`
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
// Code block
|
|
33
|
+
function hello() {
|
|
34
|
+
console.log("Hello, Stalux!");
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
> Blockquote example
|
|
39
|
+
|
|
40
|
+
- List item 1
|
|
41
|
+
- List item 2
|
|
42
|
+
- List item 3
|
|
43
|
+
|
|
44
|
+
1. Ordered list 1
|
|
45
|
+
2. Ordered list 2
|
|
46
|
+
|
|
47
|
+
For more features, check the [Stalux documentation](https://stalux.needhelp.icu).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
# source: "Source or Author"
|
|
3
|
+
# link: "https://source-link" # Optional; when present, source becomes clickable
|
|
4
|
+
# sourceDate: "1999" # Optional; source date
|
|
5
|
+
# date: "2026-07-27 20:45:00" # Optional; when recorded
|
|
6
|
+
# updated: "2026-07-27 21:00:00"
|
|
7
|
+
# draft: false # Optional; true hides the entry
|
|
8
|
+
# title: "Title" # Optional
|
|
9
|
+
# abbrlink: "custom-id" # Optional
|
|
10
|
+
# tags: [tag1, tag2] # Optional
|
|
11
|
+
---
|
|
12
|
+
Write the quote body here. Supports **Markdown**, `inline code`, and code blocks.
|