vowel 0.1.5 → 0.1.7
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/package.json +1 -1
- package/server.js +3 -2
- package/src/lib/components/DefaultStyles.svelte +60 -2
- package/src/lib/components/Markdown/validators.js +1 -1
- package/src/lib/components/Nav.svelte +7 -4
- package/src/lib/components/Page.svelte +1 -1
- package/src/lib/components/Sitemap.svelte +2 -2
- package/src/lib/utilities/createPageClass.js +1 -0
- package/src/lib/utilities/getPage.js +1 -0
- package/src/lib/utilities/getPagesByFolder.js +22 -20
- package/src/lib/utilities/processMarkdownFiles.js +11 -5
- package/src/routes/[...path]/+page.svelte +2 -2
- package/vite.config.js +2 -1
- package/content/.cache.json +0 -627
- package/content/.obsidian/app.json +0 -3
- package/content/.obsidian/appearance.json +0 -3
- package/content/.obsidian/core-plugins-migration.json +0 -30
- package/content/.obsidian/core-plugins.json +0 -20
- package/content/.obsidian/workspace.json +0 -168
- package/content/about.md +0 -3
- package/content/assets/open-props.css +0 -1630
- package/content/assets/styles-2.css +0 -128
- package/content/assets/styles-3.css +0 -275
- package/content/docs/file-structure.md +0 -31
- package/content/docs/folder-settings.md +0 -22
- package/content/docs/home.md +0 -8
- package/content/docs/images.md +0 -10
- package/content/docs/pages.md +0 -64
- package/content/docs/quickstart.md +0 -52
- package/content/docs/run-build-deploy.md +0 -20
- package/content/docs/settings.md +0 -4
- package/content/docs/styling.md +0 -10
- package/content/docs/taxonomies.md +0 -37
- package/content/home.md +0 -75
- package/content/roadmap.md +0 -84
- package/content/settings.md +0 -12
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/* General Reset */
|
|
2
|
-
* {
|
|
3
|
-
margin: 0;
|
|
4
|
-
padding: 0;
|
|
5
|
-
box-sizing: border-box;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
body {
|
|
9
|
-
font-family: Arial, sans-serif;
|
|
10
|
-
line-height: 1.6;
|
|
11
|
-
color: #333;
|
|
12
|
-
background-color: #f4f4f4;
|
|
13
|
-
padding: 20px;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.container {
|
|
17
|
-
max-width: 800px;
|
|
18
|
-
margin: auto;
|
|
19
|
-
background: white;
|
|
20
|
-
padding: 20px;
|
|
21
|
-
border-radius: 5px;
|
|
22
|
-
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
a {
|
|
26
|
-
color: #333;
|
|
27
|
-
text-decoration: none;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/* Header */
|
|
31
|
-
header {
|
|
32
|
-
margin-bottom: 20px;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
header h1 {
|
|
36
|
-
margin-bottom: 10px;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
header nav a.active {
|
|
40
|
-
font-weight: bold;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.breadcrumbs {
|
|
44
|
-
display: none;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Main Content */
|
|
48
|
-
main.home {
|
|
49
|
-
margin-bottom: 20px;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
main.home > header h2 {
|
|
53
|
-
display: none;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
main.home h2,
|
|
57
|
-
main.home h4 {
|
|
58
|
-
color: #333;
|
|
59
|
-
margin-bottom: 10px;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
main.home p,
|
|
63
|
-
main.home pre {
|
|
64
|
-
margin-bottom: 10px;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
main ul {
|
|
68
|
-
margin-inline-start: 1.2rem;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
main.home pre {
|
|
72
|
-
background-color: #eee;
|
|
73
|
-
padding: 10px;
|
|
74
|
-
border-radius: 5px;
|
|
75
|
-
overflow: auto;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
main.home code {
|
|
79
|
-
background-color: #f9f9f9;
|
|
80
|
-
color: #d63384;
|
|
81
|
-
padding: 2px 5px;
|
|
82
|
-
border-radius: 3px;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
main > article > :not(header) {
|
|
86
|
-
display: none;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* Sitemap Aside */
|
|
90
|
-
aside.sitemap {
|
|
91
|
-
margin: auto;
|
|
92
|
-
display: flex;
|
|
93
|
-
justify-content: center;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
aside.sitemap > ul > li:first-child {
|
|
97
|
-
display: none;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
aside.sitemap ul {
|
|
101
|
-
background: rgba(0, 0, 0, 0.03);
|
|
102
|
-
padding: 0.5rem;
|
|
103
|
-
border-radius: 0.5rem;
|
|
104
|
-
list-style: none;
|
|
105
|
-
margin-left: 1rem;
|
|
106
|
-
/* margin-bottom: 20px; */
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
aside.sitemap ul:not(:last-child) {
|
|
110
|
-
margin-bottom: 0.5rem;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
aside.sitemap ul:not(:has(li)) {
|
|
114
|
-
display: none;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
aside.sitemap a {
|
|
118
|
-
display: block;
|
|
119
|
-
padding: 5px 0;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/* Footer */
|
|
123
|
-
footer {
|
|
124
|
-
text-align: center;
|
|
125
|
-
margin-top: 20px;
|
|
126
|
-
font-size: 0.8em;
|
|
127
|
-
color: #666;
|
|
128
|
-
}
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
@import '/open-props.css';
|
|
2
|
-
|
|
3
|
-
/* CONTAINER */
|
|
4
|
-
html {
|
|
5
|
-
overflow-y: scroll;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.page {
|
|
9
|
-
display: grid;
|
|
10
|
-
grid-template-rows: auto 1fr auto;
|
|
11
|
-
grid-template-columns: 1fr minmax(auto, var(--size-content-3)) 1fr;
|
|
12
|
-
grid-template-areas:
|
|
13
|
-
'header header header'
|
|
14
|
-
'. main .'
|
|
15
|
-
'aside aside aside'
|
|
16
|
-
'footer footer footer';
|
|
17
|
-
min-height: 100vh;
|
|
18
|
-
padding-block: 3rem;
|
|
19
|
-
padding-inline: 3vw;
|
|
20
|
-
row-gap: var(--size-6);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.page.docs {
|
|
24
|
-
grid-template-areas:
|
|
25
|
-
'header header header'
|
|
26
|
-
'aside main main'
|
|
27
|
-
'footer footer footer';
|
|
28
|
-
column-gap: var(--size-8);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.page.docs aside.sitemap {
|
|
32
|
-
margin-top: 0;
|
|
33
|
-
padding-top: 0;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.page.docs main {
|
|
37
|
-
max-width: var(--size-content-3);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.page.docs aside.sitemap > ul > li:not(.docs) {
|
|
41
|
-
display: none;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@media only screen and (max-width: 600px) {
|
|
45
|
-
.page {
|
|
46
|
-
grid-template-areas:
|
|
47
|
-
'header header header'
|
|
48
|
-
'main main main'
|
|
49
|
-
'aside aside aside'
|
|
50
|
-
'footer footer footer';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* HEADER */
|
|
55
|
-
|
|
56
|
-
header {
|
|
57
|
-
grid-column-start: 1;
|
|
58
|
-
grid-column-end: 4;
|
|
59
|
-
display: grid;
|
|
60
|
-
grid-template-columns: subgrid;
|
|
61
|
-
row-gap: var(--size-6);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
h1 {
|
|
65
|
-
grid-column-start: 1;
|
|
66
|
-
grid-column-end: 3;
|
|
67
|
-
line-height: 1;
|
|
68
|
-
text-transform: uppercase;
|
|
69
|
-
font-stretch: 105%;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.slogan {
|
|
73
|
-
margin-top: auto;
|
|
74
|
-
margin-left: auto;
|
|
75
|
-
margin-bottom: 4px;
|
|
76
|
-
width: min-content;
|
|
77
|
-
line-height: 0.9;
|
|
78
|
-
font-size: var(--font-size-1);
|
|
79
|
-
text-transform: uppercase;
|
|
80
|
-
font-weight: 100;
|
|
81
|
-
font-stretch: 115%;
|
|
82
|
-
text-align: right;
|
|
83
|
-
grid-column-start: 3;
|
|
84
|
-
grid-column-end: 4;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
nav {
|
|
88
|
-
grid-column-start: 1;
|
|
89
|
-
grid-column-end: 4;
|
|
90
|
-
width: 100%;
|
|
91
|
-
display: flex;
|
|
92
|
-
gap: 1rem;
|
|
93
|
-
/* justify-content: space-between; */
|
|
94
|
-
padding-block: 0.5rem;
|
|
95
|
-
border-bottom: 1px solid var(--h1-color);
|
|
96
|
-
text-transform: uppercase;
|
|
97
|
-
font-weight: 300;
|
|
98
|
-
font-stretch: 105%;
|
|
99
|
-
font-size: var(--font-size-1);
|
|
100
|
-
opacity: 80%;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
nav a {
|
|
104
|
-
color: var(--h6-color);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
nav:not(:first-of-type) {
|
|
108
|
-
display: none;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.breadcrumbs {
|
|
112
|
-
font-size: var(--font-size-1);
|
|
113
|
-
width: 100%;
|
|
114
|
-
max-width: var(--size-content-3);
|
|
115
|
-
grid-column-start: 2;
|
|
116
|
-
grid-column-end: 3;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* MAIN */
|
|
120
|
-
|
|
121
|
-
main {
|
|
122
|
-
grid-area: main;
|
|
123
|
-
overflow-x: hidden;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* BREADCRUMBS */
|
|
127
|
-
|
|
128
|
-
.breadcrumbs {
|
|
129
|
-
text-transform: uppercase;
|
|
130
|
-
font-size: 0.8rem;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.breadcrumbs .separator:after {
|
|
134
|
-
margin-inline: 0.2rem;
|
|
135
|
-
content: '/';
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/* FRONTMATTER */
|
|
139
|
-
|
|
140
|
-
main > header > h2 {
|
|
141
|
-
margin-bottom: 5rem;
|
|
142
|
-
/* color: var(--gray-3); */
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
header a {
|
|
146
|
-
color: unset;
|
|
147
|
-
text-decoration: unset;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
time {
|
|
151
|
-
color: grey;
|
|
152
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
dl {
|
|
156
|
-
padding: 0;
|
|
157
|
-
gap: 1rem;
|
|
158
|
-
grid-template-columns: auto 1fr;
|
|
159
|
-
grid-column-gap: 1rem;
|
|
160
|
-
grid-row-gap: 0px;
|
|
161
|
-
font-family: Georgia;
|
|
162
|
-
display: none;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
dt {
|
|
166
|
-
display: none;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
dd {
|
|
170
|
-
margin: 0;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
dd {
|
|
174
|
-
display: none;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
dd.description {
|
|
178
|
-
display: block;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/* PAGES */
|
|
182
|
-
|
|
183
|
-
.home > header > h2 {
|
|
184
|
-
display: none;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
main > .content > :is(h2, h3, h4, pre, ul, ol, p, article) {
|
|
188
|
-
margin-bottom: var(--size-4);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
main > .content > :is(h2, h3, h4) {
|
|
192
|
-
margin-top: var(--size-6);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/* THUMBNAILS */
|
|
196
|
-
|
|
197
|
-
.thumbnail .content {
|
|
198
|
-
display: none;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.thumbnail :is(dl, dd) {
|
|
202
|
-
display: block;
|
|
203
|
-
font-family: var(--sans-serif);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
.thumbnail {
|
|
207
|
-
border: 2px solid white;
|
|
208
|
-
border-radius: var(--size-4);
|
|
209
|
-
padding: var(--size-4);
|
|
210
|
-
margin-block: var(--size-4);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.thumbnail a:hover {
|
|
214
|
-
text-decoration: none;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/* TYPOGRAPHY */
|
|
218
|
-
|
|
219
|
-
pre {
|
|
220
|
-
background: var(--surface-2);
|
|
221
|
-
padding: var(--size-2) var(--size-4);
|
|
222
|
-
display: block;
|
|
223
|
-
max-inline-size: 100%;
|
|
224
|
-
overflow-x: scroll;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/* IMAGES */
|
|
228
|
-
|
|
229
|
-
p img {
|
|
230
|
-
margin: 5rem auto;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/* FOOTER */
|
|
234
|
-
|
|
235
|
-
footer {
|
|
236
|
-
grid-area: footer;
|
|
237
|
-
margin: 5rem auto;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/* SITEMAP */
|
|
241
|
-
|
|
242
|
-
aside.sitemap {
|
|
243
|
-
display: flex;
|
|
244
|
-
border-top: 1px solid var(--h6-color);
|
|
245
|
-
margin-block: 2rem;
|
|
246
|
-
padding-block: 2rem;
|
|
247
|
-
grid-area: aside;
|
|
248
|
-
justify-content: center;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
aside.sitemap ul {
|
|
252
|
-
list-style: none;
|
|
253
|
-
opacity: 0.8;
|
|
254
|
-
padding: 0;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
aside.sitemap ul {
|
|
258
|
-
/* margin-block: 0; */
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
a article.link-preview {
|
|
262
|
-
/* display: none; */
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
article.link-preview:has(a) {
|
|
266
|
-
display: block;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
article.link-preview p {
|
|
270
|
-
color: var(--h5-color);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
a:hover:has(article) {
|
|
274
|
-
text-decoration: none;
|
|
275
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: File structure
|
|
3
|
-
breadcrumb: File structure
|
|
4
|
-
description: Organize your files.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Your website is made of folders and markdown files. Every folder should have a `home.md` file. Every folder can also have a `settings.md` file to apply folder-level settings, such as the `breadcrumb`.
|
|
8
|
-
|
|
9
|
-
Almost every file and folder represents a page on your website:
|
|
10
|
-
|
|
11
|
-
- `home.md` is your homepage, `/`
|
|
12
|
-
- `about.md` would be your about page, `/about`
|
|
13
|
-
- `blog/home.md` would be your blog homepage, `/blog`
|
|
14
|
-
- `blog/hello-world.md` would be a blog post, `/blog/hello-world`
|
|
15
|
-
|
|
16
|
-
(File names like `Hello World.md` also seem to work fine so far.))
|
|
17
|
-
|
|
18
|
-
Even if a folder doesn't have a `home.md` file, it will still generate a page, so long as it contains any markdown files. So, if you have a `blog` folder with posts inside it, Vowel will generate a `/blog` homepage even if you don't have a `/blog/home.md` file.
|
|
19
|
-
|
|
20
|
-
There are a few special files and folders:
|
|
21
|
-
|
|
22
|
-
- `assets/` contains some static files
|
|
23
|
-
- `assets/styles.css` contains your stylesheet, which will be automatically applied if present
|
|
24
|
-
- `assets/favicon.png` is your favicon
|
|
25
|
-
- `templates/` is a commonly-used directory in Obsidian projects, so it will be ignored
|
|
26
|
-
- A `settings.md` file will not generate a page. If you want a page called `settings`, you can create a `/settings/home.md` file.
|
|
27
|
-
- `.cache.json`
|
|
28
|
-
- `.output/`
|
|
29
|
-
- `vercel.json`
|
|
30
|
-
|
|
31
|
-
Any files prefixed with a period will be ignored, as will any files that are not markdown.
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Folder settings
|
|
3
|
-
description: Configure your project.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Every folder should have a `settings.md` file with one property:
|
|
7
|
-
|
|
8
|
-
- `breadcrumb`: A navigation label
|
|
9
|
-
|
|
10
|
-
At the root of the project, there should be a global settings file with the `breadcrumb` property and any of the following properties:
|
|
11
|
-
|
|
12
|
-
- All folder settings, plus
|
|
13
|
-
- `title`: Website title
|
|
14
|
-
- `robots`
|
|
15
|
-
- `google`: Allow Google Search indexing (`true`/`false`)
|
|
16
|
-
- `google_images`: Allow Google Image indexing (`true`/`false`)
|
|
17
|
-
- `ai`: Allow AI training (`true`/`false`)
|
|
18
|
-
- `domain`: Full root URL for the website domain (e.g. `https://example.com`)
|
|
19
|
-
- `author`: Website author credit for RSS and copyright
|
|
20
|
-
- `icon`: An emoji to use as the site favicon
|
|
21
|
-
- `slogan`: The website slogan
|
|
22
|
-
- `logo`: The website logo
|
package/content/docs/home.md
DELETED
package/content/docs/images.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Images
|
|
3
|
-
description: How to host images.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
You can put images in the `assets` folder, but this is discouraged, as it could result in a large bandwidth bill from your hosting provider.
|
|
7
|
-
|
|
8
|
-
We recommend hosting images elsewhere.
|
|
9
|
-
|
|
10
|
-
Images hosted on imgix will automatically be optimized, compressed, and formatted.
|
package/content/docs/pages.md
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Pages
|
|
3
|
-
description: Create content.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
The `body` element on each page has a class representing the current page. The homepage has classes `"page home"`, while a blog post might have `"page blog-hello-world"`.
|
|
7
|
-
|
|
8
|
-
Vowel attempts to construct a logical semantic HTML structure based on the files and folders in your website.
|
|
9
|
-
|
|
10
|
-
To do this, Vowel distinguishes between evergreen pages and ephemeral pages. A page with a `date` property is considered ephemeral, so it is excluded from the navigation and sitemap.
|
|
11
|
-
|
|
12
|
-
Vowel will automatically create a multi-level nav, with one level for each parent folder for the current page.
|
|
13
|
-
|
|
14
|
-
Vowel will create a full side navigation that displays all evergreen pages.
|
|
15
|
-
|
|
16
|
-
# Frontmatter
|
|
17
|
-
|
|
18
|
-
Reserved properties
|
|
19
|
-
|
|
20
|
-
- `title`: Page title
|
|
21
|
-
- `image`: Page image
|
|
22
|
-
- `description`: Page description
|
|
23
|
-
- `date`: Date published
|
|
24
|
-
- `breadcrumb`: Short identifier for the page
|
|
25
|
-
|
|
26
|
-
Vowel will attempt to impute the type of each frontmatter property. Imputed types include:
|
|
27
|
-
|
|
28
|
-
- Links (Will generate a link preview)
|
|
29
|
-
- Images (will display the image)
|
|
30
|
-
- Date (will render a pretty date in a `time` element)
|
|
31
|
-
|
|
32
|
-
You can also use lists and objects in frontmatter.
|
|
33
|
-
|
|
34
|
-
# Markdown
|
|
35
|
-
|
|
36
|
-
Along with all standard markdown, Vowel also allows the following special elements:
|
|
37
|
-
|
|
38
|
-
## Rich link previews
|
|
39
|
-
|
|
40
|
-
Paste a URL on its own line (e.g. `https://example.com`).
|
|
41
|
-
|
|
42
|
-
## Internal link previews
|
|
43
|
-
|
|
44
|
-
Paste a relative path to a page (e.g. `/about`).
|
|
45
|
-
|
|
46
|
-
The link will be rendered as an `article` element with a class representing the linked path (e.g. `page-blog-hello-world`).
|
|
47
|
-
|
|
48
|
-
## Page lists
|
|
49
|
-
|
|
50
|
-
A relative path to a folder with a `count` parameter (e.g. `/blog?count=2`). This will exclude the `home.md` file for the folder. In this example, it would return the `/blog/hello-world.md` file but not `/blog/home.md`.
|
|
51
|
-
|
|
52
|
-
The page list will order pages first by date in reverse chronology (newest to oldest) and then alphabetically (a to z).
|
|
53
|
-
|
|
54
|
-
The list will be rendered as `article` elements (see above) in a `section` element. The `section` element will have a class representing the folder path (e.g. `folder-blog`).
|
|
55
|
-
|
|
56
|
-
## Headings
|
|
57
|
-
|
|
58
|
-
If your document starts with an `h1` (`#`) and has no `title` property, the `h1` will be used as the meta title.
|
|
59
|
-
|
|
60
|
-
If your document includes `h1`s after the title, all headings will be demoted one level (`#` to `h2`, `##` to `h3`).
|
|
61
|
-
|
|
62
|
-
## Description
|
|
63
|
-
|
|
64
|
-
If your document doesn't include a `description`, a meta description will be extracted from the text.
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Quickstart
|
|
3
|
-
description: Get started with Vowel.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## With npx
|
|
7
|
-
|
|
8
|
-
npx is the easiest way to use vowel:
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
npx -p svelte@next -p vowel@latest npx vowel
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Vowel will attempt to generate a website based on the contents of your file.
|
|
15
|
-
|
|
16
|
-
## With npm
|
|
17
|
-
|
|
18
|
-
Create a directory. Then, open that directory and run these commands in your terminal:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm init --y && npm i vowel svelte@next
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Edit your `package.json` to add these `scripts`:
|
|
25
|
-
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"dev": "vowel",
|
|
29
|
-
"build": "vowel build"
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Now run `npm run dev`.
|
|
34
|
-
|
|
35
|
-
## Starter files
|
|
36
|
-
|
|
37
|
-
Create `home.md` and enter some basic information
|
|
38
|
-
|
|
39
|
-
```md
|
|
40
|
-
# Your website
|
|
41
|
-
|
|
42
|
-
Lorem ipsum...
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Create `settings.md` and enter some basic information in the frontmatter:
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
---
|
|
49
|
-
breadcrumb: Home
|
|
50
|
-
domain: https://example.com
|
|
51
|
-
---
|
|
52
|
-
```
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Run, Build, and Deploy
|
|
3
|
-
description: Get going.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
See the [quickstart](/docs/quickstart) for instructions on how to use npm.
|
|
7
|
-
|
|
8
|
-
# Building
|
|
9
|
-
|
|
10
|
-
Run `npm run build` (`vowel build`) to build your website.
|
|
11
|
-
|
|
12
|
-
Alternatively, with npx, run:
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
npx -p svelte@next -p vowel@latest npx vowel build
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
# Deploy
|
|
19
|
-
|
|
20
|
-
We recommend deploying on Vercel. Run `npx vercel` to deploy your project. Ignore all of the build settings (except project title), as your project will include a `vercel.json` file with build settings.
|
package/content/docs/settings.md
DELETED
package/content/docs/styling.md
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Styling
|
|
3
|
-
description: Add styles to your website.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Vowel include some default styles.
|
|
7
|
-
|
|
8
|
-
Create an `assets/styles.css` file for your styling. We recommend using a style framework like Pico or Open Props. You can simply download their stylesheet and either copy-paste it into your own or include it in `assets/` and `import` it into `assets/styles.css`.
|
|
9
|
-
|
|
10
|
-
Beware: This project is still in development, so the generated markup is likely to change quickly and without warning, which will break your CSS. You might want to pin your version.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Taxonomies
|
|
3
|
-
description: Create tags, categories, and authors.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
If the key for a frontmatter property matches a folder at the root of your project, Vowel will attempt to treat it as a taxonomy and link to the respective page.
|
|
7
|
-
|
|
8
|
-
For instance, in this folder structure:
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
.
|
|
12
|
-
├── home.md
|
|
13
|
-
├── design.md
|
|
14
|
-
├── recipes.md
|
|
15
|
-
└── category/
|
|
16
|
-
├── inspiration.md
|
|
17
|
-
└── lifestyle.md
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
You can write the following frontmatter in `design.md`:
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
---
|
|
24
|
-
title: Design
|
|
25
|
-
category: inspiration
|
|
26
|
-
---
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Vowel will render the property as a link to `/category/inspiration`.
|
|
30
|
-
|
|
31
|
-
Then, in `category/inspiration.md` (or anywhere) you can display all inspiration posts with a post list:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
/?property=category.inspiration
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
This allows you to create author pages, category pages.
|