create-riebeckite 0.0.17 → 0.0.18

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 (76) hide show
  1. package/README.md +7 -7
  2. package/README_ja.md +2 -2
  3. package/dist/src/arguments.d.ts +3 -5
  4. package/dist/src/index.js +3161 -37
  5. package/dist/src/interactive.d.ts +8 -9
  6. package/dist/src/scaffold/content-pages.d.ts +16 -0
  7. package/dist/src/scaffold/deployment.d.ts +7 -0
  8. package/dist/src/scaffold/index.d.ts +7 -0
  9. package/dist/src/scaffold/index.js +3134 -0
  10. package/dist/src/scaffold/next-steps.d.ts +7 -0
  11. package/dist/src/scaffold/options.d.ts +43 -0
  12. package/dist/src/scaffold/presets.d.ts +102 -0
  13. package/dist/src/scaffold/template-loader.d.ts +4 -0
  14. package/dist/src/scaffold/templates.d.ts +53 -0
  15. package/dist/src/scaffold/version.d.ts +1 -0
  16. package/dist/src/scaffold/wrangler-defaults.d.ts +46 -0
  17. package/package.json +16 -5
  18. package/templates/scaffold/base/app/client.ts +14 -0
  19. package/templates/scaffold/base/app/config.ts +18 -0
  20. package/templates/scaffold/base/app/constants/paths.ts +10 -0
  21. package/templates/scaffold/base/app/content.ts +12 -0
  22. package/templates/scaffold/base/app/global.d.ts +15 -0
  23. package/templates/scaffold/base/app/server.ts +13 -0
  24. package/templates/scaffold/base/public/favicon.ico +0 -0
  25. package/templates/scaffold/base/public/riebeckite-logo.png +0 -0
  26. package/templates/scaffold/base/tsconfig.json +30 -0
  27. package/templates/scaffold/base/vite.config.ts +34 -0
  28. package/templates/scaffold/biome.json +6 -0
  29. package/templates/scaffold/deployment/github-actions/content-checkout.yml +6 -0
  30. package/templates/scaffold/deployment/github-actions/deploy.yml +54 -0
  31. package/templates/scaffold/deployment/github-actions/notify-site.yml +31 -0
  32. package/templates/scaffold/presets/empty/app/routes/_renderer.tsx +21 -0
  33. package/templates/scaffold/presets/empty/app/routes/index.tsx +11 -0
  34. package/templates/scaffold/presets/empty/app/style.css +17 -0
  35. package/templates/scaffold/presets/minimal/app/components/article.tsx +66 -0
  36. package/templates/scaffold/presets/minimal/app/routes/[slug{.+}].tsx +48 -0
  37. package/templates/scaffold/presets/minimal/app/routes/_renderer.tsx +59 -0
  38. package/templates/scaffold/presets/minimal/app/routes/index.tsx +29 -0
  39. package/templates/scaffold/presets/minimal/app/style.css +84 -0
  40. package/templates/scaffold/presets/minimal/content/index.en.md +12 -0
  41. package/templates/scaffold/presets/showcase/app/components/article.tsx +66 -0
  42. package/templates/scaffold/presets/showcase/app/components/site-header.tsx +113 -0
  43. package/templates/scaffold/presets/showcase/app/routes/[slug{.+}].tsx +52 -0
  44. package/templates/scaffold/presets/showcase/app/routes/_renderer.tsx +69 -0
  45. package/templates/scaffold/presets/showcase/app/routes/index.tsx +39 -0
  46. package/templates/scaffold/presets/showcase/app/style.css +227 -0
  47. package/templates/scaffold/presets/showcase/content/attachments/project-brief.pdf +5 -0
  48. package/templates/scaffold/presets/showcase/content/demo/planning.md +16 -0
  49. package/templates/scaffold/presets/showcase/content/demo/writing.md +15 -0
  50. package/templates/scaffold/presets/showcase/content/drawings/Architecture.excalidraw +1 -0
  51. package/templates/scaffold/presets/showcase/content/drawings/site.canvas +1 -0
  52. package/templates/scaffold/presets/showcase/content/guide.en.md +46 -0
  53. package/templates/scaffold/presets/showcase/content/images/demo.svg +1 -0
  54. package/templates/scaffold/presets/showcase/content/index.de.md +17 -0
  55. package/templates/scaffold/presets/showcase/content/index.en.md +17 -0
  56. package/templates/scaffold/presets/showcase/content/index.es.md +17 -0
  57. package/templates/scaffold/presets/showcase/content/index.fr.md +17 -0
  58. package/templates/scaffold/presets/showcase/content/index.ja.md +17 -0
  59. package/templates/scaffold/presets/showcase/content/index.ko.md +17 -0
  60. package/templates/scaffold/presets/showcase/content/index.zh-CN.md +17 -0
  61. package/templates/scaffold/presets/starter/app/components/article.tsx +66 -0
  62. package/templates/scaffold/presets/starter/app/components/site-header.tsx +113 -0
  63. package/templates/scaffold/presets/starter/app/routes/[slug{.+}].tsx +52 -0
  64. package/templates/scaffold/presets/starter/app/routes/_renderer.tsx +69 -0
  65. package/templates/scaffold/presets/starter/app/routes/index.tsx +37 -0
  66. package/templates/scaffold/presets/starter/app/style.css +227 -0
  67. package/templates/scaffold/presets/starter/content/guide.en.md +60 -0
  68. package/templates/scaffold/presets/starter/content/index.de.md +19 -0
  69. package/templates/scaffold/presets/starter/content/index.en.md +19 -0
  70. package/templates/scaffold/presets/starter/content/index.es.md +19 -0
  71. package/templates/scaffold/presets/starter/content/index.fr.md +19 -0
  72. package/templates/scaffold/presets/starter/content/index.ja.md +19 -0
  73. package/templates/scaffold/presets/starter/content/index.ko.md +19 -0
  74. package/templates/scaffold/presets/starter/content/index.zh-CN.md +19 -0
  75. package/templates/scaffold/presets/starter/content/notes/planning.md +16 -0
  76. package/templates/scaffold/presets/starter/content/notes/writing.md +15 -0
@@ -0,0 +1,69 @@
1
+ import type { PluginHeadTag } from "@riebeckite/core";
2
+ import { jsxRenderer } from "hono/jsx-renderer";
3
+ import { Link, Script } from "honox/server";
4
+ import { ColorModeScript } from "@riebeckite/plugin-color-mode";
5
+ import { SearchBar } from "@riebeckite/plugin-search";
6
+ import { resolveSiteNavigation } from "@riebeckite/plugin-navigation";
7
+ import { SiteFooter, SiteHeader } from "../components/site-header";
8
+ import { content } from "../content";
9
+ import { config } from "../config";
10
+
11
+ function themeAttributes() {
12
+ const { theme } = config;
13
+
14
+ return {
15
+ ...theme.attributes,
16
+ "data-theme": theme.colorMode === "system" ? undefined : theme.colorMode,
17
+ "data-theme-name": theme.name,
18
+ "data-typography": theme.typography,
19
+ "data-article-layout": theme.articleLayout,
20
+ };
21
+ }
22
+
23
+ // Riebeckite plugin client entries need the HonoX client bundle even without
24
+ // an island component.
25
+ export const __importing_islands = true;
26
+
27
+ export default jsxRenderer(async ({ children }, c) => {
28
+ const headTags: readonly PluginHeadTag[] = c.get("headTags") ?? [];
29
+ const navigation = resolveSiteNavigation(config, await content.getManifest(), c.get("htmlLanguage")) ?? { primary: [], secondary: [] };
30
+
31
+ return (
32
+ <html
33
+ lang={c.get("htmlLanguage") ?? config.site.locale}
34
+ {...themeAttributes()}
35
+ >
36
+ <head>
37
+ <meta charset="utf-8" />
38
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
39
+ <title>{config.site.title}</title>
40
+ <link rel="icon" href="/favicon.ico" />
41
+ <ColorModeScript />
42
+ <Link href="/app/style.css" rel="stylesheet" />
43
+ {headTags.map(renderHeadTag)}
44
+ <Script src="/app/client.ts" async />
45
+ </head>
46
+ <body class="riebeckite-page rb-site">
47
+ <SiteHeader path={c.req.path} items={navigation.primary} />
48
+ <SearchBar />
49
+ {children}
50
+ <SiteFooter path={c.req.path} items={navigation.secondary} />
51
+ </body>
52
+ </html>
53
+ );
54
+ });
55
+
56
+ function renderHeadTag(tag: PluginHeadTag, index: number) {
57
+ const key = `${tag.tag}-${index}`;
58
+ if (tag.tag === "meta") return <meta {...tag.attrs} key={key} />;
59
+ if (tag.tag === "link") return <link {...tag.attrs} key={key} />;
60
+ return (
61
+ <script
62
+ {...tag.attrs}
63
+ key={key}
64
+ dangerouslySetInnerHTML={
65
+ tag.children ? { __html: tag.children } : undefined
66
+ }
67
+ />
68
+ );
69
+ }
@@ -0,0 +1,37 @@
1
+ import { getEntryLanguage } from "@riebeckite/core";
2
+ import { createRoute } from "honox/factory";
3
+ import { RecentPosts, getRecentPosts } from "@riebeckite/plugin-recent-posts";
4
+ import { extractTableOfContents, TableOfContents } from "@riebeckite/plugin-toc";
5
+ import { SiteArticle } from "../components/article";
6
+ import { config } from "../config";
7
+ import { content } from "../content";
8
+
9
+ export default createRoute(async (c) => {
10
+ const manifest = await content.getManifest();
11
+ const indexEntry = manifest.bySlug.get("index");
12
+ if (indexEntry && indexEntry.permalink !== "/") {
13
+ return c.redirect(indexEntry.permalink, 308);
14
+ }
15
+
16
+ const post = await content.getProcessedContent("index");
17
+ if (indexEntry?.publishing?.routable === false) {
18
+ return c.notFound();
19
+ }
20
+
21
+ const recentPosts = await getRecentPosts({ posts: manifest.discoverableEntries, config, getProcessedContent: (slug) => content.getProcessedContent(slug), resolveTitle: (slug, title) => typeof title === "string" && title.trim() ? title : slug.split("/").at(-1) ?? slug });
22
+ const tableOfContents = extractTableOfContents(post.html ?? "");
23
+
24
+ if (indexEntry) {
25
+ c.set("htmlLanguage", getEntryLanguage(indexEntry));
26
+ c.set("headTags", indexEntry.headTags ?? []);
27
+ }
28
+
29
+ return c.render(
30
+ <SiteArticle
31
+ post={post}
32
+ bodySlots={indexEntry?.bodySlots}
33
+ asideContent={<TableOfContents className="table-of-contents--desktop" items={tableOfContents} />}
34
+ afterContent={<><RecentPosts posts={recentPosts} /></>}
35
+ />,
36
+ );
37
+ });
@@ -0,0 +1,227 @@
1
+ @import "./.riebeckite/plugin-styles.css";
2
+ @import "./.riebeckite/theme-styles.css";
3
+
4
+ *,
5
+ *::before,
6
+ *::after {
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ body {
11
+ margin: 0;
12
+ font-family: system-ui, sans-serif;
13
+ }
14
+
15
+ .riebeckite-page {
16
+ display: flex;
17
+ min-height: 100vh;
18
+ width: 100%;
19
+ flex-direction: column;
20
+ align-items: center;
21
+ padding-block: var(--rb-space-8, 4rem);
22
+ }
23
+
24
+ .site-header {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: var(--rb-space-3, 1.5rem);
28
+ padding-block: var(--rb-space-3, 1.5rem);
29
+ border-bottom: 1px solid var(--rb-color-border);
30
+ }
31
+
32
+ .site-header,
33
+ .rb-site-footer {
34
+ width: min(100% - 2rem, var(--rb-layout-article-max, 48rem));
35
+ }
36
+
37
+ .site-header__home {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ margin-right: auto;
42
+ color: var(--rb-color-ink);
43
+ font-weight: 700;
44
+ text-decoration: none;
45
+ }
46
+
47
+ .rb-nav {
48
+ color: var(--rb-color-ink);
49
+ }
50
+
51
+ .rb-nav__list {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: var(--rb-space-3, 1.5rem);
55
+ margin: 0;
56
+ padding: 0;
57
+ list-style: none;
58
+ }
59
+
60
+ .rb-nav__item {
61
+ position: relative;
62
+ }
63
+
64
+ .rb-nav__link {
65
+ color: inherit;
66
+ text-decoration: none;
67
+ }
68
+
69
+ .rb-nav__link:hover,
70
+ .rb-nav__link:focus-visible,
71
+ .rb-nav__link--active {
72
+ color: var(--rb-color-accent);
73
+ }
74
+
75
+ .rb-nav__link:focus-visible,
76
+ .rb-nav__toggle:focus-visible {
77
+ outline: 2px solid var(--rb-color-accent);
78
+ outline-offset: 2px;
79
+ }
80
+
81
+ .rb-nav__children {
82
+ display: none;
83
+ position: absolute;
84
+ top: 100%;
85
+ left: 0;
86
+ min-width: max-content;
87
+ padding: var(--rb-space-2, 1rem);
88
+ background: var(--rb-color-surface);
89
+ border: 1px solid var(--rb-color-border);
90
+ }
91
+
92
+ .rb-nav__item:hover > .rb-nav__children,
93
+ .rb-nav__item:focus-within > .rb-nav__children {
94
+ display: flex;
95
+ flex-direction: column;
96
+ align-items: stretch;
97
+ }
98
+
99
+ .rb-nav__mobile {
100
+ display: none;
101
+ }
102
+
103
+ .rb-site-footer {
104
+ margin-top: 1rem;
105
+ padding-block: var(--rb-space-4, 2rem);
106
+ border-top: 1px solid var(--rb-color-border);
107
+ }
108
+
109
+ @media (max-width: 48rem) {
110
+ .riebeckite-page {
111
+ padding-block: var(--rb-space-3, 1.5rem);
112
+ }
113
+
114
+ .rb-site-header {
115
+ flex-wrap: wrap;
116
+ }
117
+
118
+ .rb-site-header > .rb-nav {
119
+ display: none;
120
+ }
121
+
122
+ .rb-nav__mobile {
123
+ position: relative;
124
+ display: block;
125
+ }
126
+
127
+ .rb-nav__mobile > .rb-nav {
128
+ position: absolute;
129
+ z-index: 10;
130
+ top: calc(100% + var(--rb-space-2, 1rem));
131
+ right: 0;
132
+ min-width: 12rem;
133
+ padding: var(--rb-space-3, 1.5rem);
134
+ background: var(--rb-color-surface);
135
+ border: 1px solid var(--rb-color-border);
136
+ box-shadow: 0 4px 12px
137
+ color-mix(in oklab, var(--rb-color-ink) 14%, transparent);
138
+ }
139
+
140
+ .rb-nav__mobile .rb-nav__list,
141
+ .rb-nav__mobile .rb-nav__children {
142
+ display: flex;
143
+ flex-direction: column;
144
+ align-items: flex-start;
145
+ gap: var(--rb-space-2, 1rem);
146
+ }
147
+
148
+ .rb-nav__mobile .rb-nav__list {
149
+ padding: 0;
150
+ }
151
+
152
+ .rb-nav__mobile .rb-nav__children {
153
+ position: static;
154
+ margin-top: var(--rb-space-2, 1rem);
155
+ padding: 0;
156
+ background: transparent;
157
+ border: 0;
158
+ }
159
+ }
160
+
161
+ .site-header__logo {
162
+ width: 1.75rem;
163
+ height: 1.75rem;
164
+ object-fit: contain;
165
+ }
166
+
167
+ .site-article {
168
+ display: block;
169
+ width: min(100% - 2rem, var(--rb-layout-article-max, 48rem));
170
+ padding-block: 2rem;
171
+ margin: 0 auto;
172
+ }
173
+
174
+ .rb-article-layout {
175
+ display: grid;
176
+ grid-template-columns: minmax(0, var(--rb-layout-article-max, 48rem));
177
+ justify-content: center;
178
+ gap: var(--rb-layout-gap, 2rem);
179
+ }
180
+
181
+ .rb-article-body {
182
+ min-width: 0;
183
+ padding-inline: var(--rb-space-2, 1rem);
184
+ }
185
+
186
+ .site-article__aside {
187
+ display: none;
188
+ }
189
+
190
+ .site-article__footer {
191
+ min-width: 0;
192
+ }
193
+
194
+ @media (min-width: 88rem) {
195
+ :is(:root, .rb-theme-root)[data-article-layout="article"] .rb-article-layout {
196
+ grid-template-columns: minmax(0, var(--rb-layout-article-max, 48rem));
197
+ position: relative;
198
+ }
199
+
200
+ :is(:root, .rb-theme-root)[data-article-layout="article"] .rb-article-body {
201
+ grid-column: 1;
202
+ grid-row: 1;
203
+ }
204
+
205
+ :is(:root, .rb-theme-root)[data-article-layout="article"] .site-article__footer {
206
+ grid-column: 1;
207
+ }
208
+
209
+ :is(:root, .rb-theme-root)[data-article-layout="article"] .site-article__aside {
210
+ display: block;
211
+ grid-column: 1;
212
+ grid-row: 1;
213
+ position: sticky;
214
+ top: 4rem;
215
+ align-self: start;
216
+ width: var(--rb-layout-sidebar, 14rem);
217
+ max-height: calc(100dvh - 8rem);
218
+ margin-inline-start: calc(
219
+ -1 * var(--rb-layout-sidebar, 14rem) -
220
+ var(--rb-layout-gap, 2rem)
221
+ );
222
+ overflow: auto;
223
+ padding-inline-end: 1rem;
224
+ border-inline-end: 1px solid
225
+ color-mix(in oklab, currentColor 18%, transparent);
226
+ }
227
+ }
@@ -0,0 +1,60 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # Getting started
6
+
7
+ This site was generated from a Riebeckite scaffold preset.
8
+ Everything below lives in this repository, ready to edit.
9
+
10
+ ## Run the site
11
+
12
+ ```sh
13
+ npm install
14
+ npm exec riebeckite dev
15
+ ```
16
+
17
+
18
+ Open the URL printed in the terminal. The page reloads every time
19
+ you save a Markdown file.
20
+
21
+ ## Add a page
22
+
23
+ Create `content/hello.md`:
24
+
25
+ ```md
26
+ ---
27
+ publish: true
28
+ ---
29
+
30
+ # Hello
31
+
32
+ This is my second page.
33
+ ```
34
+
35
+
36
+ The dev server serves it at `/hello`.
37
+
38
+ ## Link the pages
39
+
40
+ Write `[[hello]]` anywhere and it becomes a link to that page.
41
+
42
+ ## Translate a page
43
+
44
+ Copy a file next to the original with the language suffix, for
45
+ example `hello.ja.md`. The language switcher picks it up.
46
+
47
+ ## Build
48
+
49
+ ```sh
50
+ npm exec riebeckite build
51
+ ```
52
+
53
+
54
+ The static site is written to `dist/`.
55
+
56
+ ## Extend
57
+
58
+ Plugins and themes are registered in `riebeckite.config.ts`.
59
+ Install a package, import its factory, and add it to the `plugins`
60
+ array, or point `theme` at a new theme factory.
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ Willkommen auf deiner Riebeckite-Seite.
8
+
9
+ Diese Seite stammt aus `content/index.md`. Öffne die Datei, ändere sie und speichere — der Browser aktualisiert sich beim Schreiben.
10
+
11
+ ## Diese Seite bearbeiten
12
+ Inhalte liegen als einfaches Markdown in `content/`. Füge eine Datei hinzu, setze `publish: true` ins Frontmatter, und sie erscheint in der gebauten Seite.
13
+
14
+ Verbinde Seiten mit einem WikiLink, zum Beispiel `[[guide]]`.
15
+
16
+ ## Weiter erkunden
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ Welcome to your Riebeckite site.
8
+
9
+ This page is `content/index.md`. Open that file, change it, and save — the browser updates while you write.
10
+
11
+ ## Edit this site
12
+ Content lives in `content/` as plain Markdown. Add a file, give it `publish: true` in the frontmatter, and it appears in the built site.
13
+
14
+ Link pages with a WikiLink, for example `[[guide]]`.
15
+
16
+ ## Explore
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ Bienvenido a tu sitio Riebeckite.
8
+
9
+ Esta página viene de `content/index.md`. Abre ese archivo, edítalo y guarda: el navegador se actualiza mientras escribes.
10
+
11
+ ## Editar este sitio
12
+ El contenido vive en `content/` como Markdown simple. Añade un archivo, pon `publish: true` en el frontmatter y aparecerá en el sitio compilado.
13
+
14
+ Enlaza páginas con un WikiLink, por ejemplo `[[guide]]`.
15
+
16
+ ## Explorar
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ Bienvenue sur votre site Riebeckite.
8
+
9
+ Cette page provient de `content/index.md`. Ouvrez ce fichier, modifiez-le et enregistrez — le navigateur se met à jour pendant que vous écrivez.
10
+
11
+ ## Éditer ce site
12
+ Le contenu vit dans `content/` en Markdown simple. Ajoutez un fichier, donnez-lui `publish: true` dans le frontmatter, et il apparaîtra dans le site construit.
13
+
14
+ Reliez les pages avec un WikiLink, par exemple `[[guide]]`.
15
+
16
+ ## Explorer
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ あなたの Riebeckite サイトへようこそ。
8
+
9
+ このページは `content/index.md` です。ファイルを開いて書き換えると、書いている途中でもブラウザの表示が更新されます。
10
+
11
+ ## サイトの編集
12
+ コンテンツは `content/` にプレーンな Markdown として置きます。ファイルを追加してフロントマターに `publish: true` を書けば、ビルドされたサイトに反映されます。
13
+
14
+ ページ同士は WikiLink でリンクできます(例:`[[guide]]`)。
15
+
16
+ ## さらに深く
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ Riebeckite 사이트에 오신 것을 환영합니다.
8
+
9
+ 이 페이지는 `content/index.md`에서 만들어집니다. 그 파일을 열어 수정하고 저장하면 글을 쓰는 동안 브라우저가 갱신됩니다.
10
+
11
+ ## 사이트 편집
12
+ 콘텐츠는 `content/`에 일반 Markdown으로 저장됩니다. 파일을 추가하고 프론트매터에 `publish: true`를 쓰면 빌드된 사이트에 나타납니다.
13
+
14
+ WikiLink로 페이지를 연결하세요. 예: `[[guide]]`.
15
+
16
+ ## 더 살펴보기
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,19 @@
1
+ ---
2
+ publish: true
3
+ ---
4
+
5
+ # {{title}}
6
+
7
+ 欢迎来到你的 Riebeckite 站点。
8
+
9
+ 这个页面来自 `content/index.md`。打开这个文件修改并保存,浏览器会随你的输入更新。
10
+
11
+ ## 编辑本站点
12
+ 内容以纯 Markdown 存于 `content/`。新建文件并在 frontmatter 中写入 `publish: true`,它就会出现在构建后的站点中。
13
+
14
+ 用 WikiLink 连接页面,例如 `[[guide]]`。
15
+
16
+ ## 继续探索
17
+
18
+ - [Getting started](/guide)
19
+ - [[examples]]
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: Planning a Markdown site
3
+ description: A related note used by the generated discovery examples.
4
+ date: 2026-09-30
5
+ tags: [riebeckite, project]
6
+ status: active
7
+ aliases: [/start-here/]
8
+ series: publish-a-site
9
+ series_title: Publish a site
10
+ series_order: 1
11
+ publish: true
12
+ ---
13
+
14
+ # Planning a Markdown site
15
+
16
+ Start with [[writing]] to see backlinks, related posts, tags, and the series navigation working together.
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: Writing the first note
3
+ description: A second connected note for search and related-content examples.
4
+ date: 2026-10-01
5
+ tags: [riebeckite, project]
6
+ status: active
7
+ series: publish-a-site
8
+ series_title: Publish a site
9
+ series_order: 2
10
+ publish: true
11
+ ---
12
+
13
+ # Writing the first note
14
+
15
+ This note links back to [[planning]]. Search for **Markdown site** or browse the generated tags.