vowel 0.2.3 → 0.2.5

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 (73) hide show
  1. package/404.md +3 -0
  2. package/README.md +171 -25
  3. package/bin.js +209 -1
  4. package/config.js +20 -0
  5. package/docs-source/.votive.db +0 -0
  6. package/docs-source/blog/url-ui.md +1 -5
  7. package/docs-source/blog.md +5 -0
  8. package/docs-source/docs/items.md +1 -1
  9. package/docs-source/home.md +1 -1
  10. package/docs-source/output/about.html +1 -0
  11. package/docs-source/output/blog/url-ui.html +8 -0
  12. package/docs-source/output/blog.html +1 -0
  13. package/docs-source/output/default.css +1 -0
  14. package/docs-source/output/docs/deploy.html +34 -0
  15. package/docs-source/output/docs/file-structure.html +24 -0
  16. package/docs-source/output/docs/folder-settings.html +20 -0
  17. package/docs-source/output/docs/images.html +2 -0
  18. package/docs-source/output/docs/items.html +6 -0
  19. package/docs-source/output/docs/pages.html +101 -0
  20. package/docs-source/output/docs/styling.html +18 -0
  21. package/docs-source/output/docs/taxonomies.html +20 -0
  22. package/docs-source/output/docs.html +28 -0
  23. package/docs-source/output/features/cards.html +1 -0
  24. package/docs-source/output/features/editing.html +1 -0
  25. package/docs-source/output/features/emoji.html +1 -0
  26. package/docs-source/output/features/frontmatter.html +1 -0
  27. package/docs-source/output/features/lists.html +1 -0
  28. package/docs-source/output/features/navigation.html +1 -0
  29. package/docs-source/output/features/rich-previews.html +1 -0
  30. package/docs-source/output/features/robots.html +1 -0
  31. package/docs-source/output/features/rss.html +1 -0
  32. package/docs-source/output/features/sitemap.html +1 -0
  33. package/docs-source/output/features/speed.html +1 -0
  34. package/docs-source/output/features/static.html +1 -0
  35. package/docs-source/output/features/taxonomies.html +1 -0
  36. package/docs-source/output/features.html +1 -0
  37. package/docs-source/output/feed.xml +1 -0
  38. package/docs-source/output/index.html +21 -0
  39. package/docs-source/output/reset.css +1 -0
  40. package/docs-source/output/roadmap.html +87 -0
  41. package/docs-source/output/robots.txt +14 -0
  42. package/docs-source/output/sitemap.xml +16 -0
  43. package/docs-source/output/typography.css +1 -0
  44. package/docs-source/settings.md +1 -0
  45. package/getMetadata.js +1 -1
  46. package/index.js +5 -660
  47. package/package.json +17 -2
  48. package/plugins/fonts/index.js +26 -0
  49. package/plugins/icons/index.js +26 -0
  50. package/plugins/images/index.js +45 -0
  51. package/plugins/markdown/index.js +1097 -0
  52. package/plugins/robots/index.js +23 -0
  53. package/plugins/styles/index.js +69 -0
  54. package/plugins/vectors/index.js +38 -0
  55. package/plugins/xml/index.js +196 -0
  56. package/stylesheets/DefaultStyles.css +329 -263
  57. package/stylesheets/ResetStyles.css +119 -123
  58. package/stylesheets/TypographyStyles.css +259 -242
  59. package/docs-source/assets/styles.css +0 -51
  60. package/docs-source/blog/home.md +0 -5
  61. /package/docs-source/{$features → features}/cards.md +0 -0
  62. /package/docs-source/{$features → features}/editing.md +0 -0
  63. /package/docs-source/{$features → features}/emoji.md +0 -0
  64. /package/docs-source/{$features → features}/frontmatter.md +0 -0
  65. /package/docs-source/{$features → features}/lists.md +0 -0
  66. /package/docs-source/{$features → features}/navigation.md +0 -0
  67. /package/docs-source/{$features → features}/rich-previews.md +0 -0
  68. /package/docs-source/{$features → features}/robots.md +0 -0
  69. /package/docs-source/{$features → features}/rss.md +0 -0
  70. /package/docs-source/{$features → features}/sitemap.md +0 -0
  71. /package/docs-source/{$features → features}/speed.md +0 -0
  72. /package/docs-source/{$features → features}/static.md +0 -0
  73. /package/docs-source/{$features → features}/taxonomies.md +0 -0
@@ -3,331 +3,397 @@
3
3
  Barebones, Basic.css, Pico, Typeplate, Simple.css, and more
4
4
  */
5
5
 
6
- :root {
7
- --text-color: hsl(0, 0%, 13%);
8
- --accent-color: hsl(215, 100%, 35%);
9
- --accent-color-hover: hsl(215, 76%, 49%);
10
- --border-color: hsl(0, 0%, 73%);
11
- --main-background: hsl(0, 0%, 100%);
12
- --code-background: hsl(0, 0%, 95%);
13
- /* --soft-background: hsl(0, 0%, 95%); */
14
- --soft-background: #00000005;
15
- }
6
+ @layer reset, typography, default;
7
+
16
8
 
17
- @media (prefers-color-scheme: dark) {
9
+ @layer default {
18
10
  :root {
19
- --text-color: hsl(0, 0%, 80%);
20
- --accent-color: hsl(194, 76%, 49%);
21
- --accent-color-hover: hsl(194, 86%, 57%);
22
- --border-color: hsl(0, 0%, 27%);
23
- --main-background: hsl(0, 0%, 12%);
24
- --code-background: hsl(0, 0%, 5%);
25
- /* --soft-background: hsl(0, 0%, 14%); */
26
- --soft-background: #ffffff07;
11
+ --text-color: hsl(0, 0%, 13%);
12
+ --accent-color: hsl(215, 100%, 35%);
13
+ --accent-color-hover: hsl(215, 76%, 49%);
14
+ --border-color: hsl(0, 0%, 73%);
15
+ --main-background: hsl(0, 0%, 100%);
16
+ --code-background: hsl(0, 0%, 95%);
17
+ --soft-background: hsl(0, 0%, 95%);
18
+ /* --soft-background: #00000005; */
27
19
  }
28
- }
29
-
30
- /* Layout */
31
20
 
32
- .page {
33
- font-family: var(--font-sans);
34
- max-width: 60ch;
35
- margin: auto;
36
- display: flex;
37
- flex-direction: column;
38
- padding: 1rem;
39
- }
40
-
41
- main,
42
- article.thumbnail {
43
- margin-bottom: auto;
44
- padding-bottom: 4rem;
45
- display: flex;
46
- flex-direction: row;
47
- flex-wrap: wrap;
48
- align-items: baseline;
49
- column-gap: 0.5rem;
50
- }
51
-
52
- :is(main, article.thumbnail)>* {
53
- flex-basis: 100%;
54
- }
55
-
56
- :is(main, article.thumbnail) :is(time, dl:not(.link)) {
57
- flex-basis: 0;
58
- display: inline !important;
59
- font-size: 0.9em;
60
- opacity: 0.8;
61
- }
21
+ @media (prefers-color-scheme: dark) {
22
+ :root {
23
+ --text-color: hsl(0, 0%, 80%);
24
+ --accent-color: hsl(194, 76%, 49%);
25
+ --accent-color-hover: hsl(194, 86%, 57%);
26
+ --border-color: hsl(0, 0%, 27%);
27
+ --main-background: hsl(0, 0%, 12%);
28
+ --code-background: hsl(0, 0%, 5%);
29
+ --soft-background: hsl(0, 0%, 14%);
30
+ /* --soft-background: #ffffff07; */
31
+ }
32
+ }
62
33
 
63
- dt {
64
- display: none;
65
- }
34
+ /* Layout */
35
+
36
+ body {
37
+ overflow-y: scroll;
38
+ font-family: var(--font-sans);
39
+ max-width: min(100ch, 100vi - 10vw);
40
+ margin-inline: auto;
41
+ margin-bottom: 5em;
42
+ display: flex;
43
+ flex-direction: column;
44
+ align-items: center;
45
+ gap: 4rem 1rem;
46
+
47
+ main {
48
+ width: 95vw;
49
+ max-width: 80ch;
50
+ }
51
+ }
66
52
 
67
- dd {
68
- display: inline;
69
- }
53
+ main,
54
+ article {
55
+ margin-bottom: auto;
56
+ padding-bottom: 4rem;
57
+ display: grid;
58
+ gap: 1rem;
59
+ flex-wrap: wrap;
60
+ align-items: baseline;
61
+ column-gap: 0.5rem;
62
+ }
70
63
 
71
- .page>main> :first-child {
72
- margin-top: 2.5rem;
73
- }
64
+ @media (width >=700px) {
74
65
 
75
- /* Colors */
66
+ body:not(.home) main {
67
+ grid-template-columns: 3fr 1fr;
68
+ }
69
+ }
76
70
 
77
- body {
78
- color: var(--text-color);
79
- background: var(--main-background);
80
- }
71
+ main>*:not(nav[aria-label=Contents]) {
72
+ grid-column: 1;
73
+ }
81
74
 
82
- a {
83
- color: var(--accent-color);
84
- }
75
+ :is(main, article)>* {
76
+ flex-basis: 100%;
77
+ }
85
78
 
86
- a:hover {
87
- color: var(--accent-color-hover);
88
- }
79
+ :is(main, article) :is(time, dl:not(.link)) {
80
+ /* flex-basis: 0; */
81
+ /* display: inline !important; */
82
+ font-size: 0.9em;
83
+ opacity: 0.8;
84
+ }
89
85
 
90
- code,
91
- pre {
92
- background: var(--code-background);
93
- }
86
+ /* Colors */
94
87
 
95
- blockquote {
96
- border-left: 5px solid var(--border-color);
97
- }
88
+ html {
89
+ color: var(--text-color);
90
+ background: var(--main-background);
91
+ }
98
92
 
99
- article {
100
- border: 1px solid var(--border-color);
101
- background: var(--soft-background);
102
- padding: 1.8rem 2rem 1.5rem;
103
- border-radius: 0.5rem;
104
- display: flex;
105
- flex-direction: column;
106
- }
93
+ a:where(:not([rel=home])) {
94
+ color: var(--accent-color);
107
95
 
108
- th,
109
- td {
110
- border-bottom: 1px solid var(--border-color-softer);
111
- }
96
+ &:hover {
97
+ color: var(--accent-color-hover);
98
+ }
99
+ }
112
100
 
113
- hr {
114
- border-top: 1px solid var(--text-color);
115
- }
101
+ code,
102
+ pre {
103
+ background: var(--code-background);
104
+ }
116
105
 
117
- /* Frontmatter */
106
+ blockquote {
107
+ border-left: 5px solid var(--border-color);
108
+ }
118
109
 
119
- main>img {
120
- margin-bottom: 2.5rem;
121
- }
110
+ article {
111
+ border: 1px solid var(--border-color);
112
+ background: var(--soft-background);
113
+ padding: 2rem 2rem 2rem;
114
+ border-radius: calc(1rem + 5px);
115
+ display: flex;
116
+ flex-direction: column;
117
+ }
122
118
 
123
- dt {
124
- font-size: 1.1em;
125
- }
119
+ th,
120
+ td {
121
+ border-bottom: 1px solid var(--border-color-softer);
122
+ }
126
123
 
127
- dl.link dt {
128
- display: none;
129
- }
124
+ hr {
125
+ border-top: 1px solid var(--text-color);
126
+ }
130
127
 
131
- dl.link {
132
- order: calc(Infinity);
133
- margin-top: 2.5rem;
134
- margin-bottom: 0;
135
- }
128
+ /* Frontmatter */
136
129
 
137
- dl.tags,
138
- time {
139
- font-size: 1.1em;
140
- }
130
+ main>img {
131
+ margin-bottom: 2.5rem;
132
+ }
141
133
 
142
- dl.tags dt {
143
- display: none;
144
- }
134
+ nav[aria-label=Contents]:has(>ol:empty),
135
+ nav[aria-label=Contents]:has(>ol>li:only-of-type>a) {
136
+ display: none;
137
+ }
145
138
 
146
- dl.tags :is(dd, ul, li) {
147
- padding-inline: 0;
148
- display: inline;
149
- }
150
139
 
151
- dl.tags li {
152
- margin-inline: 0.2em;
153
- }
140
+ @media (width >=700px) {
141
+ nav[aria-label=Contents] {
142
+ grid-column: 2;
143
+ grid-row-start: 3;
144
+ height: 0px;
145
+ overflow: visible;
146
+ }
147
+ }
154
148
 
155
- dl.tags li:before {
156
- content: '#';
157
- }
158
149
 
159
- dl.contents ul {
160
- list-style: none;
161
- padding: 0;
162
- }
163
150
 
164
- dl.contents .depth-2 {
165
- font-weight: 500;
166
- }
151
+ nav[aria-label=Contents] {
152
+ min-width: max-content;
153
+ flex-basis: 30%;
154
+ max-width: 100%;
167
155
 
168
- dl.contents .depth-3 {
169
- font-size: 0.95em;
170
- padding-left: 0.5em;
171
- }
156
+ &:before {
157
+ content: "Contents";
158
+ font-weight: 600;
159
+ margin-bottom: 0.5em;
160
+ display: block;
161
+ width: max-content;
162
+ }
172
163
 
173
- /* Header */
164
+ & ol {
165
+ list-style: none;
166
+ width: max-content;
167
+ margin: 0;
168
+ padding: 0;
174
169
 
175
- header {
176
- margin-top: 4rem;
177
- }
170
+ & ol {
171
+ margin-left: 1em;
172
+ }
173
+ }
174
+ }
178
175
 
179
- nav.primary {
180
- border: 1px solid var(--border-color);
181
- padding: 6px 10px;
182
- margin-inline: -3px;
183
- border-radius: 5px;
184
- display: flex;
185
- column-gap: 2rem;
186
- row-gap: 0.5rem;
187
- flex-wrap: wrap;
188
- justify-content: flex-start;
189
- background: var(--soft-background);
190
- }
176
+ /* Header */
177
+
178
+ header {
179
+ margin-top: 4rem;
180
+ display: flex;
181
+ flex-direction: row;
182
+ flex-wrap: wrap;
183
+ align-items: center;
184
+ column-gap: 1em;
185
+
186
+ p.tagline {
187
+ margin-left: auto;
188
+ align-self: flex-end;
189
+ margin-bottom: 0.5em;
190
+ font-size: 1.5em;
191
+ }
192
+
193
+ nav {
194
+ border: 1px solid var(--border-color);
195
+ padding: 0px 6px;
196
+ width: 100%;
197
+
198
+ &:first-of-type {
199
+ padding-top: 7px;
200
+ }
201
+
202
+ &:last-of-type {
203
+ padding-bottom: 7px;
204
+ }
205
+
206
+ margin-inline: -3px;
207
+ border-radius: 5px;
208
+ display: flex;
209
+ column-gap: 2rem;
210
+ flex-wrap: wrap;
211
+ justify-content: flex-start;
212
+ background: var(--soft-background);
213
+ }
214
+
215
+ nav:has(+ nav) {
216
+ border-bottom: none;
217
+ border-bottom-left-radius: 0;
218
+ border-bottom-right-radius: 0;
219
+
220
+ &:after {
221
+ display: block;
222
+ content: '';
223
+ border-bottom: 1px solid var(--border-color);
224
+ flex-basis: 100%;
225
+ margin-block: 0.7rem;
226
+ }
227
+ }
228
+
229
+ nav+nav {
230
+ border-top-left-radius: 0;
231
+ border-top-right-radius: 0;
232
+ border-top: none;
233
+ margin-top: 0;
234
+ }
235
+ }
191
236
 
192
- nav.primary:has(+ nav.primary) {
193
- border-bottom: none;
194
- border-bottom-left-radius: 0;
195
- border-bottom-right-radius: 0;
196
- }
237
+ nav[aria-label=Breadcrumbs]>a:only-child {
238
+ display: none;
239
+ }
197
240
 
198
- nav.primary:has(+ nav.primary):after {
199
- display: block;
200
- content: '';
201
- border-bottom: 1px solid var(--border-color);
202
- flex-basis: 100%;
203
- margin-top: 0.7rem;
204
- }
241
+ nav[aria-label=Breadcrumbs] {
242
+ text-transform: uppercase;
243
+ color: var(--border-color);
205
244
 
206
- nav.primary+nav.primary {
207
- border-top-left-radius: 0;
208
- border-top-right-radius: 0;
209
- border-top: none;
210
- margin-top: 0;
211
- }
245
+ a {
246
+ color: unset;
247
+ }
248
+ }
212
249
 
213
- header .breadcrumbs>a:only-child {
214
- display: none;
215
- }
250
+ /* Sidebar */
251
+
252
+ aside nav {
253
+ margin-inline: auto;
254
+
255
+ &>ul {
256
+ display: flex;
257
+ flex-direction: row;
258
+ gap: 2em;
259
+ justify-content: center;
260
+ }
261
+
262
+ ul {
263
+ list-style: none;
264
+ padding-left: 0;
265
+ }
266
+
267
+ li {
268
+ margin: 0;
269
+ line-height: 1.7em;
270
+ }
271
+
272
+ &>ul>li {
273
+ &>a {
274
+ font-weight: 500;
275
+ }
276
+
277
+ &>ul {
278
+ font-size: 0.9em;
279
+ line-height: 1.2em;
280
+
281
+ ul {
282
+ padding-left: 1em;
283
+ }
284
+ }
285
+ }
286
+ }
216
287
 
217
- header .breadcrumbs {
218
- margin-block: 4rem 1rem;
219
- }
288
+ /* Footer */
220
289
 
221
- /* Sidebar */
290
+ footer {
291
+ text-align: center;
292
+ }
222
293
 
223
- .secondary {
224
- margin-inline: auto;
225
- }
294
+ /* Main */
226
295
 
227
- /* Footer */
296
+ p:where([itemprop=description]) {
297
+ font-size: 1.3em;
298
+ }
228
299
 
229
- footer {
230
- text-align: center;
231
- margin-block: 6rem 8rem;
232
- }
300
+ article a {
301
+ display: flex;
302
+ flex-direction: column;
303
+ row-gap: 1em;
233
304
 
234
- /* Pages */
305
+ &>* {
306
+ margin: 0;
307
+ }
308
+ }
235
309
 
236
- .page.home>main>h1 {
237
- display: none;
238
- }
310
+ article img {
311
+ order: -1;
312
+ }
239
313
 
240
- .page.home>.content>p:first-child {
241
- font-size: 1.2em;
242
- }
314
+ article a,
315
+ article a:hover {
316
+ color: unset;
317
+ }
243
318
 
244
- section[class*='$'] {
245
- display: grid;
246
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
247
- grid-auto-rows: auto;
248
- grid-gap: 2rem;
319
+ article h1 {
320
+ grid-area: title;
321
+ font-size: 1.6rem;
322
+ }
249
323
 
250
- & article {
251
- margin: 0;
324
+ article p {
325
+ font-size: 1.6rem;
252
326
  }
253
- }
254
327
 
255
- article.item {
256
- display: grid;
257
- flex-direction: column;
258
- grid-template-areas:
259
- 'title icon'
260
- 'description description';
261
- align-content: start;
262
- }
328
+ article dl.icon {
329
+ grid-area: icon;
330
+ font-size: 1.5em;
331
+ }
263
332
 
264
- article.item h1 {
265
- grid-area: title;
266
- font-size: 1.6rem;
267
- }
333
+ article dl.icon dd {
334
+ text-align: right;
335
+ }
268
336
 
269
- article.item dl.icon {
270
- grid-area: icon;
271
- font-size: 1.5em;
272
- }
337
+ article .description {
338
+ grid-area: description;
339
+ }
273
340
 
274
- article.item dl.icon dd {
275
- text-align: right;
276
- }
341
+ article dt {
342
+ display: none;
343
+ }
277
344
 
278
- article.item .description {
279
- grid-area: description;
280
- }
345
+ article dl.icon {
346
+ order: -1;
347
+ }
281
348
 
282
- article.item dt {
283
- display: none;
284
- }
349
+ aside.alert.note {
350
+ --icon: 'ℹ️';
351
+ --rgb: 71, 139, 230;
352
+ }
285
353
 
286
- article.item dl.icon {
287
- order: -1;
288
- }
354
+ aside.alert.tip {
355
+ --icon: '💡';
356
+ --rgb: 87, 171, 90;
357
+ }
289
358
 
290
- aside.alert.note {
291
- --icon: 'ℹ️';
292
- --rgb: 71, 139, 230;
293
- }
359
+ aside.alert.important {
360
+ --icon: '💬';
361
+ --rgb: 152, 110, 226;
362
+ }
294
363
 
295
- aside.alert.tip {
296
- --icon: '💡';
297
- --rgb: 87, 171, 90;
298
- }
364
+ aside.alert.warning {
365
+ --icon: '⚠️';
366
+ --rgb: 198, 144, 38;
367
+ }
299
368
 
300
- aside.alert.important {
301
- --icon: '💬';
302
- --rgb: 152, 110, 226;
303
- }
369
+ aside.alert.caution {
370
+ --icon: '⛔️';
371
+ --rgb: 229, 83, 75;
372
+ }
304
373
 
305
- aside.alert.warning {
306
- --icon: '⚠️';
307
- --rgb: 198, 144, 38;
308
- }
374
+ aside.alert {
375
+ border-left: 3px solid rgb(var(--rgb));
376
+ padding: 1.5rem 2rem;
377
+ background: rgba(var(--rgb), 0.04);
378
+ }
309
379
 
310
- aside.alert.caution {
311
- --icon: '⛔️';
312
- --rgb: 229, 83, 75;
313
- }
380
+ aside.alert h2 {
381
+ color: rgb(var(--rgb));
382
+ }
314
383
 
315
- aside.alert {
316
- border-left: 3px solid rgb(var(--rgb));
317
- padding: 1.5rem 2rem;
318
- background: rgba(var(--rgb), 0.04);
319
- }
384
+ aside.alert h2:before {
385
+ font-size: 0.8em;
386
+ margin-right: 0.7rem;
387
+ opacity: 0.9;
388
+ }
320
389
 
321
- aside.alert h2 {
322
- color: rgb(var(--rgb));
390
+ aside.alert h2:before {
391
+ content: var(--icon);
392
+ }
323
393
  }
324
394
 
325
- aside.alert h2:before {
326
- font-size: 0.8em;
327
- margin-right: 0.7rem;
328
- opacity: 0.9;
329
- }
395
+ /* Elements */
330
396
 
331
- aside.alert h2:before {
332
- content: var(--icon);
397
+ img {
398
+ border-radius: 5px;
333
399
  }