vowel 0.1.46 → 0.2.2
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/README.md +82 -20
- package/bin.js +2 -78
- package/docs-source/$features/cards.md +7 -0
- package/docs-source/$features/editing.md +7 -0
- package/docs-source/$features/emoji.md +7 -0
- package/docs-source/$features/frontmatter.md +7 -0
- package/docs-source/$features/lists.md +7 -0
- package/docs-source/$features/navigation.md +7 -0
- package/docs-source/$features/rich-previews.md +7 -0
- package/docs-source/$features/robots.md +7 -0
- package/docs-source/$features/rss.md +7 -0
- package/docs-source/$features/sitemap.md +7 -0
- package/docs-source/$features/speed.md +7 -0
- package/docs-source/$features/static.md +7 -0
- package/docs-source/$features/taxonomies.md +7 -0
- package/docs-source/.cache.json +9 -0
- package/docs-source/.obsidian/app.json +3 -0
- package/docs-source/.obsidian/appearance.json +3 -0
- package/docs-source/.obsidian/core-plugins-migration.json +30 -0
- package/docs-source/.obsidian/core-plugins.json +20 -0
- package/docs-source/.obsidian/workspace.json +168 -0
- package/docs-source/.stackblitzrc +3 -0
- package/docs-source/.vercel/README.txt +11 -0
- package/docs-source/.vercel/project.json +1 -0
- package/docs-source/about.md +3 -0
- package/docs-source/assets/styles.css +51 -0
- package/docs-source/blog/home.md +5 -0
- package/docs-source/blog/url-ui.md +21 -0
- package/docs-source/docs/.votive.db +0 -0
- package/docs-source/docs/deploy.md +67 -0
- package/docs-source/docs/file-structure.md +31 -0
- package/docs-source/docs/folder-settings.md +23 -0
- package/docs-source/docs/home.md +55 -0
- package/docs-source/docs/images.md +10 -0
- package/docs-source/docs/items.md +13 -0
- package/docs-source/docs/pages.md +141 -0
- package/docs-source/docs/settings.md +4 -0
- package/docs-source/docs/styling.md +34 -0
- package/docs-source/docs/taxonomies.md +37 -0
- package/docs-source/home.md +42 -0
- package/docs-source/roadmap.md +98 -0
- package/docs-source/settings.md +12 -0
- package/extractDate.js +83 -0
- package/getMetadata.js +41 -0
- package/index.js +669 -0
- package/jsconfig.json +9 -17
- package/package.json +61 -63
- package/regex.js +36 -0
- package/{src/lib/components → stylesheets}/DefaultStyles.css +5 -5
- package/utils.js +10 -0
- package/.cache.json +0 -1
- package/.prettierrc +0 -8
- package/.vscode/settings.json +0 -3
- package/CHANGELOG.md +0 -79
- package/server.js +0 -87
- package/src/app.d.ts +0 -12
- package/src/app.html +0 -13
- package/src/lib/components/Breadcrumbs.svelte +0 -19
- package/src/lib/components/ConditionalWrapper.svelte +0 -10
- package/src/lib/components/DefaultStyles.svelte +0 -11
- package/src/lib/components/FrontMatterTaxonomy.svelte +0 -48
- package/src/lib/components/Frontmatter.svelte +0 -56
- package/src/lib/components/FrontmatterProperty.svelte +0 -78
- package/src/lib/components/Markdown/Image.svelte +0 -50
- package/src/lib/components/Markdown/Link.svelte +0 -19
- package/src/lib/components/Markdown/LinkPreview.svelte +0 -45
- package/src/lib/components/Markdown/Text.svelte +0 -6
- package/src/lib/components/Markdown/index.svelte +0 -147
- package/src/lib/components/Markdown/validators.js +0 -29
- package/src/lib/components/Nav.svelte +0 -40
- package/src/lib/components/NoStyles.svelte +0 -5
- package/src/lib/components/Page.svelte +0 -90
- package/src/lib/components/ResetStyles.svelte +0 -7
- package/src/lib/components/Sitemap.svelte +0 -38
- package/src/lib/components/TypographyStyles.svelte +0 -10
- package/src/lib/components/index.js +0 -12
- package/src/lib/index.js +0 -1
- package/src/lib/utilities/buildURL.js +0 -18
- package/src/lib/utilities/checkFileExists.js +0 -16
- package/src/lib/utilities/createFolderClass.js +0 -4
- package/src/lib/utilities/createPageClass.js +0 -6
- package/src/lib/utilities/getFileLabel.js +0 -35
- package/src/lib/utilities/getFolder.js +0 -16
- package/src/lib/utilities/getFolderLabel.js +0 -12
- package/src/lib/utilities/getMetadata.js +0 -46
- package/src/lib/utilities/getPage.js +0 -25
- package/src/lib/utilities/getPagesByFolder.js +0 -95
- package/src/lib/utilities/index.js +0 -22
- package/src/lib/utilities/isActiveLink.js +0 -12
- package/src/lib/utilities/isObject.js +0 -8
- package/src/lib/utilities/loadCache.js +0 -28
- package/src/lib/utilities/mutateMarkdownAST.js +0 -68
- package/src/lib/utilities/mutateMarkdownFrontmatter.js +0 -113
- package/src/lib/utilities/parseDate.js +0 -43
- package/src/lib/utilities/processMarkdownFiles.js +0 -243
- package/src/lib/utilities/readMarkdownFile.js +0 -188
- package/src/lib/utilities/regexPatterns.js +0 -12
- package/src/lib/utilities/resolveHomeDirPath.js +0 -5
- package/src/lib/utilities/sendWebmention.js +0 -34
- package/src/lib/utilities/writeCache.js +0 -14
- package/src/routes/$vowel/published.json/+server.js +0 -54
- package/src/routes/+error.svelte +0 -110
- package/src/routes/[...path]/+layout.server.js +0 -78
- package/src/routes/[...path]/+page.server.js +0 -42
- package/src/routes/[...path]/+page.svelte +0 -186
- package/src/routes/feed.xml/+server.js +0 -120
- package/src/routes/robots.txt/+server.js +0 -54
- package/src/routes/sitemap.xml/+server.js +0 -68
- package/static/favicon.png +0 -0
- package/static/styles.css +0 -0
- package/svelte.config.js +0 -30
- package/vercel.json +0 -5
- package/vite.config.js +0 -84
- /package/{src/lib/components → stylesheets}/ResetStyles.css +0 -0
- /package/{src/lib/components → stylesheets}/TypographyStyles.css +0 -0
package/README.md
CHANGED
|
@@ -1,29 +1,91 @@
|
|
|
1
1
|
# Vowel
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[![npm downloads][npm-downloads-src]][npm-downloads-href]
|
|
3
|
+
*Markdown websites in milliseconds*
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
## Roadmap
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
### High priority
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
- [ ] robots.txt
|
|
10
|
+
- [ ] sitemap.xml
|
|
11
|
+
- [ ] 404.html
|
|
12
|
+
- [ ] TUI
|
|
13
|
+
- [ ] Create settings.md
|
|
14
|
+
- [ ] Site title
|
|
15
|
+
- [ ] Domain
|
|
16
|
+
- [ ] Webmentions
|
|
17
|
+
- [ ] Logo
|
|
18
|
+
- [ ] Wordmark
|
|
19
|
+
- [ ] Identity (rel=me)
|
|
20
|
+
- [ ] Filename breadcrumbs
|
|
21
|
+
- [ ] RSS
|
|
22
|
+
- [ ] Sitemap
|
|
23
|
+
- [ ] Create home.md
|
|
24
|
+
- [ ] Create folder settings files
|
|
25
|
+
- [ ] Title
|
|
26
|
+
- [ ] Breadcrumb
|
|
27
|
+
- [ ] Custom CSS
|
|
28
|
+
- [ ] Tags
|
|
29
|
+
- [ ] Customize index fallback
|
|
30
|
+
- [ ] Date format settings
|
|
31
|
+
- [ ] ::mark::
|
|
32
|
+
- [ ] Infer images
|
|
33
|
+
- [ ] Favicon
|
|
34
|
+
- [ ] Webmentions
|
|
35
|
+
- [ ] HTML boilerplate
|
|
36
|
+
- [ ] Page lists
|
|
37
|
+
- [ ] View transitions
|
|
38
|
+
- [ ] Logo
|
|
39
|
+
- [ ] Wordmark
|
|
40
|
+
- [ ] Sort nav items
|
|
41
|
+
- [ ] Canonical URL
|
|
42
|
+
- [ ] Handle external links
|
|
43
|
+
- [ ] Admonitions
|
|
44
|
+
- [ ] Use hgroup for site title, page title, etc
|
|
45
|
+
- [ ] Images as `<figure>`
|
|
46
|
+
- [ ] Hidden routes
|
|
47
|
+
- [ ] Frontmatter settings
|
|
48
|
+
- [ ] HTML
|
|
49
|
+
- [ ] RSS
|
|
50
|
+
- [ ] Sitemap
|
|
51
|
+
- [ ] Heading anchors
|
|
52
|
+
- [ ] Taxonomy pages and smart frontmatter
|
|
53
|
+
- [ ] CSS cache busting
|
|
54
|
+
- [ ] Slogan in homepage title
|
|
11
55
|
|
|
12
|
-
|
|
13
|
-
npx vowel
|
|
14
|
-
```
|
|
56
|
+
### Medium priority
|
|
15
57
|
|
|
16
|
-
|
|
58
|
+
- [ ] Tests
|
|
59
|
+
- [ ] Break code into multiple files
|
|
60
|
+
- [ ] Image optimization (unpic)
|
|
61
|
+
- [ ] [SVG by mask](https://pqina.nl/blog/set-svg-background-image-fill-color/) and [CSS icons](https://antfu.me/posts/icons-in-pure-css)
|
|
62
|
+
- [ ] WYSIWYG editor
|
|
63
|
+
- [ ] Better signals
|
|
64
|
+
- [ ] File-written callback
|
|
65
|
+
- [ ] Themes
|
|
66
|
+
- [ ] Deploy
|
|
67
|
+
- [ ] Cloudflare pages
|
|
68
|
+
- [ ] GitHub pages
|
|
69
|
+
- [ ] Post-publish work (ping webmentions)
|
|
70
|
+
- [ ] [Desktop app](https://blackboard.sh/electrobun/docs/)
|
|
71
|
+
- [ ] Mermaid
|
|
72
|
+
- [ ] Codeblock syntax highlighting
|
|
73
|
+
- [ ] Extraction utilities (regex in archive)
|
|
74
|
+
- [ ] Smarter frontmatter
|
|
75
|
+
- [ ] Object dl
|
|
76
|
+
- [ ] Array ul
|
|
77
|
+
- [ ] Image
|
|
78
|
+
- [ ] URL
|
|
79
|
+
- [ ] Date
|
|
80
|
+
- [ ] TOC
|
|
81
|
+
- [ ] Versioning/publishing script
|
|
82
|
+
- [ ] Verify all element types form Obsidian
|
|
17
83
|
|
|
18
|
-
|
|
84
|
+
### Low priority
|
|
19
85
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
[
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
[npm-version-src]: https://img.shields.io/npm/v/vowel/latest.svg
|
|
27
|
-
[npm-version-href]: https://npmjs.com/package/vowel
|
|
28
|
-
[npm-downloads-src]: https://img.shields.io/npm/dm/vowel.svg
|
|
29
|
-
[npm-downloads-href]: https://npmjs.com/package/vowel
|
|
86
|
+
- [ ] Footnotes
|
|
87
|
+
- [ ] Frontmatter taxonomies
|
|
88
|
+
- [ ] Recursive frontmatter
|
|
89
|
+
- [ ] Browser search
|
|
90
|
+
- [ ] Pagination
|
|
91
|
+
- [ ] ATProto
|
package/bin.js
CHANGED
|
@@ -1,81 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import url from 'node:url';
|
|
6
|
-
import pc from 'picocolors';
|
|
7
|
-
import mri from 'mri';
|
|
8
|
-
import filterConsole from 'filter-console';
|
|
9
|
-
import process from 'process';
|
|
10
|
-
import readline from 'readline';
|
|
11
|
-
import logUpdate from 'log-update';
|
|
3
|
+
import init from "./index.js"
|
|
12
4
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// Directory where the module is
|
|
16
|
-
const binURL = import.meta.url;
|
|
17
|
-
const binFilePath = url.fileURLToPath(binURL);
|
|
18
|
-
const binDirName = path.dirname(binFilePath);
|
|
19
|
-
|
|
20
|
-
// Directory where the command was called
|
|
21
|
-
const homeDir = process.cwd();
|
|
22
|
-
|
|
23
|
-
const spawnArgs = ['./server.js', '--directory', homeDir];
|
|
24
|
-
if (args._.includes('build')) spawnArgs.push('--build');
|
|
25
|
-
if (args._.includes('publish')) {
|
|
26
|
-
spawnArgs.push('--build')
|
|
27
|
-
spawnArgs.push('--publish')
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
if (!args.verbose) {
|
|
31
|
-
// filterConsole(['jsconfig', 'vite', 'Vite', 'tsconfig', `--host`]);
|
|
32
|
-
console.log(`\n\n`);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Args: File to run, home directory,
|
|
36
|
-
const child = spawn('node', spawnArgs, {
|
|
37
|
-
cwd: binDirName
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
let processedFiles = 0;
|
|
41
|
-
let foundFiles = 0;
|
|
42
|
-
const std = process.stdout;
|
|
43
|
-
|
|
44
|
-
child.stdout.on('data', (data) => {
|
|
45
|
-
const message = data.toString();
|
|
46
|
-
if (message.match('fileread')) {
|
|
47
|
-
processedFiles++;
|
|
48
|
-
logUpdate(pc.green(` Files read: ${processedFiles}/${foundFiles}`));
|
|
49
|
-
} else if (message.startsWith('filesfound')) {
|
|
50
|
-
const count = Number(message.split(':').at(-1).slice(0, -1));
|
|
51
|
-
foundFiles += count;
|
|
52
|
-
} else if (message.startsWith('loaded')) {
|
|
53
|
-
logUpdate(pc.green(` Files read: ${foundFiles}/${foundFiles}`));
|
|
54
|
-
console.log(`\n\n`);
|
|
55
|
-
processedFiles = 0;
|
|
56
|
-
foundFiles = 0;
|
|
57
|
-
} else if(true) { // Toggle to true to reveal all console output
|
|
58
|
-
console.log(message)
|
|
59
|
-
} else if (message.match('http://localhost:')) {
|
|
60
|
-
const url = message.match(/http:\/\/localhost:\S+/);
|
|
61
|
-
console.log(
|
|
62
|
-
pc.bgCyan(
|
|
63
|
-
pc.bold(`
|
|
64
|
-
|
|
65
|
-
Website: ${url}
|
|
66
|
-
`)
|
|
67
|
-
)
|
|
68
|
-
);
|
|
69
|
-
console.log(`\n`);
|
|
70
|
-
} else {
|
|
71
|
-
console.log(pc.blue(data));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
child.stderr.on('data', (data) => {
|
|
76
|
-
console.error(pc.red(data));
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
child.on('close', (code) => {
|
|
80
|
-
console.log(`child process exited with code ${code}`);
|
|
81
|
-
});
|
|
5
|
+
await init()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"https://www.nngroup.com/articles/url-as-ui/": {
|
|
3
|
+
"url": "https://www.nngroup.com/articles/url-as-ui/",
|
|
4
|
+
"canonical": "https://www.nngroup.com/articles/url-as-ui/",
|
|
5
|
+
"title": "URL as UI",
|
|
6
|
+
"image": "",
|
|
7
|
+
"description": "Users continue to type and guess URLs and domain names, so Web usability can be improved by better URLs. In the long term this machine-level addressing scheme must be hidden."
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file-explorer": true,
|
|
3
|
+
"global-search": true,
|
|
4
|
+
"switcher": true,
|
|
5
|
+
"graph": true,
|
|
6
|
+
"backlink": true,
|
|
7
|
+
"canvas": true,
|
|
8
|
+
"outgoing-link": true,
|
|
9
|
+
"tag-pane": true,
|
|
10
|
+
"properties": false,
|
|
11
|
+
"page-preview": true,
|
|
12
|
+
"daily-notes": true,
|
|
13
|
+
"templates": true,
|
|
14
|
+
"note-composer": true,
|
|
15
|
+
"command-palette": true,
|
|
16
|
+
"slash-command": false,
|
|
17
|
+
"editor-status": true,
|
|
18
|
+
"bookmarks": true,
|
|
19
|
+
"markdown-importer": false,
|
|
20
|
+
"zk-prefixer": false,
|
|
21
|
+
"random-note": false,
|
|
22
|
+
"outline": true,
|
|
23
|
+
"word-count": true,
|
|
24
|
+
"slides": false,
|
|
25
|
+
"audio-recorder": false,
|
|
26
|
+
"workspaces": false,
|
|
27
|
+
"file-recovery": true,
|
|
28
|
+
"publish": false,
|
|
29
|
+
"sync": false
|
|
30
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[
|
|
2
|
+
"file-explorer",
|
|
3
|
+
"global-search",
|
|
4
|
+
"switcher",
|
|
5
|
+
"graph",
|
|
6
|
+
"backlink",
|
|
7
|
+
"canvas",
|
|
8
|
+
"outgoing-link",
|
|
9
|
+
"tag-pane",
|
|
10
|
+
"page-preview",
|
|
11
|
+
"daily-notes",
|
|
12
|
+
"templates",
|
|
13
|
+
"note-composer",
|
|
14
|
+
"command-palette",
|
|
15
|
+
"editor-status",
|
|
16
|
+
"bookmarks",
|
|
17
|
+
"outline",
|
|
18
|
+
"word-count",
|
|
19
|
+
"file-recovery"
|
|
20
|
+
]
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"main": {
|
|
3
|
+
"id": "966664a33c0f9428",
|
|
4
|
+
"type": "split",
|
|
5
|
+
"children": [
|
|
6
|
+
{
|
|
7
|
+
"id": "6f272e6d83175a0e",
|
|
8
|
+
"type": "tabs",
|
|
9
|
+
"children": [
|
|
10
|
+
{
|
|
11
|
+
"id": "6d5fa6e59ac0d3e8",
|
|
12
|
+
"type": "leaf",
|
|
13
|
+
"state": {
|
|
14
|
+
"type": "markdown",
|
|
15
|
+
"state": {
|
|
16
|
+
"file": "home.md",
|
|
17
|
+
"mode": "source",
|
|
18
|
+
"source": false
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"direction": "vertical"
|
|
26
|
+
},
|
|
27
|
+
"left": {
|
|
28
|
+
"id": "18e0bc63ac82562e",
|
|
29
|
+
"type": "split",
|
|
30
|
+
"children": [
|
|
31
|
+
{
|
|
32
|
+
"id": "9cc6c8640bf83790",
|
|
33
|
+
"type": "tabs",
|
|
34
|
+
"children": [
|
|
35
|
+
{
|
|
36
|
+
"id": "08551dcebb684ee5",
|
|
37
|
+
"type": "leaf",
|
|
38
|
+
"state": {
|
|
39
|
+
"type": "file-explorer",
|
|
40
|
+
"state": {
|
|
41
|
+
"sortOrder": "alphabetical"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "39b7b22b2e81f451",
|
|
47
|
+
"type": "leaf",
|
|
48
|
+
"state": {
|
|
49
|
+
"type": "search",
|
|
50
|
+
"state": {
|
|
51
|
+
"query": "",
|
|
52
|
+
"matchingCase": false,
|
|
53
|
+
"explainSearch": false,
|
|
54
|
+
"collapseAll": false,
|
|
55
|
+
"extraContext": false,
|
|
56
|
+
"sortOrder": "alphabetical"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "48ac4934e3c350a8",
|
|
62
|
+
"type": "leaf",
|
|
63
|
+
"state": {
|
|
64
|
+
"type": "bookmarks",
|
|
65
|
+
"state": {}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"direction": "horizontal",
|
|
72
|
+
"width": 300
|
|
73
|
+
},
|
|
74
|
+
"right": {
|
|
75
|
+
"id": "c120d9bbbfa46883",
|
|
76
|
+
"type": "split",
|
|
77
|
+
"children": [
|
|
78
|
+
{
|
|
79
|
+
"id": "d7378259eead963a",
|
|
80
|
+
"type": "tabs",
|
|
81
|
+
"children": [
|
|
82
|
+
{
|
|
83
|
+
"id": "3c5acbb57e9b2ecc",
|
|
84
|
+
"type": "leaf",
|
|
85
|
+
"state": {
|
|
86
|
+
"type": "backlink",
|
|
87
|
+
"state": {
|
|
88
|
+
"file": "home.md",
|
|
89
|
+
"collapseAll": false,
|
|
90
|
+
"extraContext": false,
|
|
91
|
+
"sortOrder": "alphabetical",
|
|
92
|
+
"showSearch": false,
|
|
93
|
+
"searchQuery": "",
|
|
94
|
+
"backlinkCollapsed": false,
|
|
95
|
+
"unlinkedCollapsed": true
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "dbc00eb5b912c400",
|
|
101
|
+
"type": "leaf",
|
|
102
|
+
"state": {
|
|
103
|
+
"type": "outgoing-link",
|
|
104
|
+
"state": {
|
|
105
|
+
"file": "home.md",
|
|
106
|
+
"linksCollapsed": false,
|
|
107
|
+
"unlinkedCollapsed": true
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "192b432a0da5e507",
|
|
113
|
+
"type": "leaf",
|
|
114
|
+
"state": {
|
|
115
|
+
"type": "tag",
|
|
116
|
+
"state": {
|
|
117
|
+
"sortOrder": "frequency",
|
|
118
|
+
"useHierarchy": true
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "7d5f5d40b932706c",
|
|
124
|
+
"type": "leaf",
|
|
125
|
+
"state": {
|
|
126
|
+
"type": "outline",
|
|
127
|
+
"state": {
|
|
128
|
+
"file": "home.md"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"direction": "horizontal",
|
|
136
|
+
"width": 300,
|
|
137
|
+
"collapsed": true
|
|
138
|
+
},
|
|
139
|
+
"left-ribbon": {
|
|
140
|
+
"hiddenItems": {
|
|
141
|
+
"switcher:Open quick switcher": false,
|
|
142
|
+
"graph:Open graph view": false,
|
|
143
|
+
"canvas:Create new canvas": false,
|
|
144
|
+
"daily-notes:Open today's daily note": false,
|
|
145
|
+
"templates:Insert template": false,
|
|
146
|
+
"command-palette:Open command palette": false
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"active": "6d5fa6e59ac0d3e8",
|
|
150
|
+
"lastOpenFiles": [
|
|
151
|
+
"clouds.jpg",
|
|
152
|
+
"home.md",
|
|
153
|
+
"blog/travel/home.md",
|
|
154
|
+
"blog/hello-world.md",
|
|
155
|
+
"blog/cooking/home.md",
|
|
156
|
+
"blog/economics/home.md",
|
|
157
|
+
"blog/economics/smith.md",
|
|
158
|
+
"blog/economics/keynes.md",
|
|
159
|
+
"blog/home.md",
|
|
160
|
+
"blog/cooking/soup.md",
|
|
161
|
+
"blog/cooking/settings.md",
|
|
162
|
+
"blog/cooking/pancakes.md",
|
|
163
|
+
"blog/economics",
|
|
164
|
+
"blog/Untitled.md",
|
|
165
|
+
"about.md",
|
|
166
|
+
"settings.md"
|
|
167
|
+
]
|
|
168
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
> Why do I have a folder named ".vercel" in my project?
|
|
2
|
+
The ".vercel" folder is created when you link a directory to a Vercel project.
|
|
3
|
+
|
|
4
|
+
> What does the "project.json" file contain?
|
|
5
|
+
The "project.json" file contains:
|
|
6
|
+
- The ID of the Vercel project that you linked ("projectId")
|
|
7
|
+
- The ID of the user or team your Vercel project is owned by ("orgId")
|
|
8
|
+
|
|
9
|
+
> Should I commit the ".vercel" folder?
|
|
10
|
+
No, you should not share the ".vercel" folder with anyone.
|
|
11
|
+
Upon creation, it will be automatically added to your ".gitignore" file.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"projectId":"prj_4CUiAmqACnAFX1cjGqW5om7DbK4E","orgId":"team_CpFUbX79Msg6m5IOy2BzFxEE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.link-preview {
|
|
2
|
+
h2 {
|
|
3
|
+
margin-top: 0;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.folder-blog {
|
|
8
|
+
margin-block: var(--size-9);
|
|
9
|
+
|
|
10
|
+
& > article + article {
|
|
11
|
+
border-top: 1px solid var(--surface-3);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
& > article > .content,
|
|
15
|
+
& > article > :not(h1, time) {
|
|
16
|
+
display: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
& > article {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: row;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
gap: 1rem;
|
|
24
|
+
align-items: baseline;
|
|
25
|
+
padding-inline: 0;
|
|
26
|
+
background: unset;
|
|
27
|
+
border-radius: 0;
|
|
28
|
+
border: unset;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
& article + article {
|
|
32
|
+
border-top: 1px solid grey;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
& > article > h1 {
|
|
36
|
+
max-inline-size: unset;
|
|
37
|
+
font-weight: 600;
|
|
38
|
+
flex: 1;
|
|
39
|
+
font-size: 1em;
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: space-between;
|
|
43
|
+
gap: 1rem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
& > article > time {
|
|
47
|
+
margin-left: auto;
|
|
48
|
+
margin: 0;
|
|
49
|
+
font-size: 1em;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
link: https://www.nngroup.com/articles/url-as-ui/
|
|
3
|
+
breadcrumb: URL Design
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
June 27, 2024
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
# Long Live the URL
|
|
11
|
+
|
|
12
|
+
This article from 1999 about how to write good URLs is awesome. Some tips:
|
|
13
|
+
|
|
14
|
+
- Write in lowercase
|
|
15
|
+
- Check for typos
|
|
16
|
+
- URLs should be permanent
|
|
17
|
+
- Keep URLs short
|
|
18
|
+
|
|
19
|
+
But Nielsen's overall view is that URLs are an important part of user experience. They contribute to a website visitor's sense of trust and geography. One of Neilsen's rules dictates that a user should be able to "hack" of the last segment of a URL to get to the parent page.
|
|
20
|
+
|
|
21
|
+
Ironically, in 1999 Nielsen thought that URLs and search engines would soon fade into obscurity as better solutions to information management emerged. Lo, 25 years later the URL remains more important than ever. Sometimes the simple solutions is the best one.
|
|
Binary file
|