diff --git a/package-lock.json b/package-lock.json index 18962ff..5957454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,12 +19,19 @@ "@types/cookie": "^0.5.1", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", + "dateformat": "^5.0.3", "eslint": "^8.28.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte": "^2.30.0", + "mdsvex": "^0.11.0", "prettier": "^2.8.0", "prettier-plugin-svelte": "^2.10.1", + "reading-time": "^1.5.0", + "rehype-autolink-headings": "^7.0.0", + "rehype-external-links": "^3.0.0", + "rehype-slug": "^6.0.0", "sass": "^1.69.4", + "striptags": "^3.2.0", "svelte": "^4.0.5", "svelte-check": "^3.4.3", "tslib": "^2.4.1", @@ -740,6 +747,15 @@ "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", "dev": true }, + "node_modules/@types/hast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.2.tgz", + "integrity": "sha512-B5hZHgHsXvfCoO3xgNJvBnX7N8p86TqQeGKXcokW4XXi+qY4vxxPSFYofytvVmpFxzPv7oxDQzjg5Un5m2/xiw==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", @@ -767,6 +783,12 @@ "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, + "node_modules/@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", @@ -956,6 +978,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitest/expect": { "version": "0.32.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.32.4.tgz", @@ -1176,6 +1204,16 @@ "dequal": "^2.0.3" } }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1410,6 +1448,15 @@ "node": ">=4" } }, + "node_modules/dateformat": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz", + "integrity": "sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1478,6 +1525,19 @@ "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", "dev": true }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -1768,6 +1828,12 @@ "node": ">=0.10.0" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1912,6 +1978,12 @@ "node": "*" } }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2012,6 +2084,45 @@ "node": ">=8" } }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2068,6 +2179,18 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2119,6 +2242,18 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-reference": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", @@ -2294,6 +2429,21 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "node_modules/mdsvex": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.11.0.tgz", + "integrity": "sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.3", + "prism-svelte": "^0.4.7", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + }, + "peerDependencies": { + "svelte": ">=3 <5" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2792,6 +2942,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -2839,6 +3004,65 @@ "node": ">=8.10.0" } }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", + "dev": true + }, + "node_modules/rehype-autolink-headings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.0.0.tgz", + "integrity": "sha512-DLskejGYHQP9v7vUW85BeYIclgfMQ1IwAMx+0lm8Sr3cME2NThgy2OdTfosmuBA68fqP5o4FK+dknpUMFvlxYQ==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-external-links": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", + "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-is-element": "^3.0.0", + "is-absolute-url": "^4.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3060,6 +3284,16 @@ "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -3120,6 +3354,12 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/striptags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", + "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==", + "dev": true + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3352,6 +3592,16 @@ "node": ">=6" } }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/ts-api-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", @@ -3440,6 +3690,104 @@ "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", "dev": true }, + "node_modules/unified": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.3.tgz", + "integrity": "sha512-jlCV402P+YDcFcB2VcN/n8JasOddqIiaxv118wNBoZXEhOn+lYG7BR4Bfg2BwxvlK58dwbuH2w7GX2esAjL6Mg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==", + "dev": true + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==", + "dev": true + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==", + "dev": true + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==", + "dev": true + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3455,6 +3803,68 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/@types/unist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", + "integrity": "sha512-ue/hDUpPjC85m+PM9OQDMZr3LywT+CT6mPsQq8OJtCLiERkGRcQUFvu9XASF5XWqyZFXbf15lvb3JFJ4dRLWPg==", + "dev": true + }, + "node_modules/vfile/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", diff --git a/package.json b/package.json index b74030e..3effa80 100644 --- a/package.json +++ b/package.json @@ -18,12 +18,19 @@ "@types/cookie": "^0.5.1", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", + "dateformat": "^5.0.3", "eslint": "^8.28.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte": "^2.30.0", + "mdsvex": "^0.11.0", "prettier": "^2.8.0", "prettier-plugin-svelte": "^2.10.1", + "reading-time": "^1.5.0", + "rehype-autolink-headings": "^7.0.0", + "rehype-external-links": "^3.0.0", + "rehype-slug": "^6.0.0", "sass": "^1.69.4", + "striptags": "^3.2.0", "svelte": "^4.0.5", "svelte-check": "^3.4.3", "tslib": "^2.4.1", diff --git a/src/lib/components/atoms/Button.story.svelte b/src/lib/components/atoms/Button.story.svelte new file mode 100644 index 0000000..f672527 --- /dev/null +++ b/src/lib/components/atoms/Button.story.svelte @@ -0,0 +1,51 @@ + + + + + + + + + + + + + +
+ + + + + + +
+
diff --git a/src/lib/components/atoms/Button.svelte b/src/lib/components/atoms/Button.svelte new file mode 100644 index 0000000..f0bb660 --- /dev/null +++ b/src/lib/components/atoms/Button.svelte @@ -0,0 +1,132 @@ + + + + {#if $$slots['icon']} +
+ +
+ {/if} + +
+ + diff --git a/src/lib/components/atoms/Card.story.svelte b/src/lib/components/atoms/Card.story.svelte new file mode 100644 index 0000000..18f5fa3 --- /dev/null +++ b/src/lib/components/atoms/Card.story.svelte @@ -0,0 +1,36 @@ + + + +
+ + +
Card Content
+
Footer
+
+
+ + + + A cute dog +
+ Cards with images will automatically adapt between showing the image on top or bottom + depending on how wide it is. +
+
+
+ + + + A cute dog +
Card Content
+
Footer
+
+
+
+
diff --git a/src/lib/components/atoms/Card.svelte b/src/lib/components/atoms/Card.svelte new file mode 100644 index 0000000..ce347af --- /dev/null +++ b/src/lib/components/atoms/Card.svelte @@ -0,0 +1,99 @@ + + + + {#if $$slots.image} +
+ +
+ {/if} +
+
+ +
+ {#if $$slots.footer} + + {/if} +
+
+ + diff --git a/src/lib/components/atoms/Image.svelte b/src/lib/components/atoms/Image.svelte new file mode 100644 index 0000000..b1fed68 --- /dev/null +++ b/src/lib/components/atoms/Image.svelte @@ -0,0 +1,48 @@ + + + + + diff --git a/src/lib/components/atoms/Logo.story.svelte b/src/lib/components/atoms/Logo.story.svelte new file mode 100644 index 0000000..c173713 --- /dev/null +++ b/src/lib/components/atoms/Logo.story.svelte @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/src/lib/components/atoms/Logo.svelte b/src/lib/components/atoms/Logo.svelte new file mode 100644 index 0000000..10c35f1 --- /dev/null +++ b/src/lib/components/atoms/Logo.svelte @@ -0,0 +1,86 @@ + + + + + diff --git a/src/lib/components/atoms/RssLink.svelte b/src/lib/components/atoms/RssLink.svelte new file mode 100644 index 0000000..baf6416 --- /dev/null +++ b/src/lib/components/atoms/RssLink.svelte @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/src/lib/components/atoms/SingleSparkle.svelte b/src/lib/components/atoms/SingleSparkle.svelte new file mode 100644 index 0000000..6f1fe2f --- /dev/null +++ b/src/lib/components/atoms/SingleSparkle.svelte @@ -0,0 +1,55 @@ + + +
+ + + +
+ + diff --git a/src/lib/components/atoms/Sparkles.story.svelte b/src/lib/components/atoms/Sparkles.story.svelte new file mode 100644 index 0000000..eb32165 --- /dev/null +++ b/src/lib/components/atoms/Sparkles.story.svelte @@ -0,0 +1,32 @@ + + + + + + + +
+ + + + + +
+
diff --git a/src/lib/components/atoms/Sparkles.svelte b/src/lib/components/atoms/Sparkles.svelte new file mode 100644 index 0000000..3ada195 --- /dev/null +++ b/src/lib/components/atoms/Sparkles.svelte @@ -0,0 +1,71 @@ + + +
+ {#each sparkles as sparkle (sparkle.id)} + + {/each} + + + +
+ + diff --git a/src/lib/components/atoms/Tag.story.svelte b/src/lib/components/atoms/Tag.story.svelte new file mode 100644 index 0000000..e617d32 --- /dev/null +++ b/src/lib/components/atoms/Tag.story.svelte @@ -0,0 +1,17 @@ + + + + + This is a Tag + + + + This is a Tag + + diff --git a/src/lib/components/atoms/Tag.svelte b/src/lib/components/atoms/Tag.svelte new file mode 100644 index 0000000..024b9cf --- /dev/null +++ b/src/lib/components/atoms/Tag.svelte @@ -0,0 +1,31 @@ + + +
+ +
+ + diff --git a/src/lib/components/molecules/BlogPostCard.story.svelte b/src/lib/components/molecules/BlogPostCard.story.svelte new file mode 100644 index 0000000..7b21f89 --- /dev/null +++ b/src/lib/components/molecules/BlogPostCard.story.svelte @@ -0,0 +1,32 @@ + + + +
+ + + + + + + +
+
diff --git a/src/lib/components/molecules/BlogPostCard.svelte b/src/lib/components/molecules/BlogPostCard.svelte new file mode 100644 index 0000000..e79d505 --- /dev/null +++ b/src/lib/components/molecules/BlogPostCard.svelte @@ -0,0 +1,97 @@ + + + +
+ {#if coverImage} + Cover image of this blog post + {/if} +
+
+

+ {title} +

+ {#if readingTime} +
{readingTime}
+ {/if} + {#if excerpt} +

+ {excerpt} +

+ {/if} +
+ +
+ + diff --git a/src/lib/components/molecules/Callout.story.svelte b/src/lib/components/molecules/Callout.story.svelte new file mode 100644 index 0000000..2980d8c --- /dev/null +++ b/src/lib/components/molecules/Callout.story.svelte @@ -0,0 +1,33 @@ + + + + + + + +
+ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sapien mi, euismod eu + ipsum eget, faucibus maximus erat. Integer nisl tellus, interdum sit amet nunc vel, + ullamcorper suscipit odio. + + +
+
diff --git a/src/lib/components/molecules/Callout.svelte b/src/lib/components/molecules/Callout.svelte new file mode 100644 index 0000000..e5e451b --- /dev/null +++ b/src/lib/components/molecules/Callout.svelte @@ -0,0 +1,71 @@ + + +
+ {#if type} +
+ {#if type == 'info'} + + {:else if type == 'warning' || type == 'error'} + + {:else if type == 'success'} + + {/if} +
+ {/if} + +
+ + diff --git a/src/lib/components/molecules/CodeBlock.story.svelte b/src/lib/components/molecules/CodeBlock.story.svelte new file mode 100644 index 0000000..1640f16 --- /dev/null +++ b/src/lib/components/molecules/CodeBlock.story.svelte @@ -0,0 +1,55 @@ + + + + + + + + +
+ + +
<Header />
+
+          <main>
+            <slot />
+          </main>
+          
+          <Footer />
+
+
+
+
diff --git a/src/lib/components/molecules/CodeBlock.svelte b/src/lib/components/molecules/CodeBlock.svelte new file mode 100644 index 0000000..d63c118 --- /dev/null +++ b/src/lib/components/molecules/CodeBlock.svelte @@ -0,0 +1,72 @@ + + +
+ {#if filename} +
{filename}
+ {/if} + {#if lang} +
{lang}
+ {/if} + +
+ + diff --git a/src/lib/components/molecules/FeatureCard.story.svelte b/src/lib/components/molecules/FeatureCard.story.svelte new file mode 100644 index 0000000..0991750 --- /dev/null +++ b/src/lib/components/molecules/FeatureCard.story.svelte @@ -0,0 +1,20 @@ + + + +
+ + + +
+
diff --git a/src/lib/components/molecules/FeatureCard.svelte b/src/lib/components/molecules/FeatureCard.svelte new file mode 100644 index 0000000..45c8b69 --- /dev/null +++ b/src/lib/components/molecules/FeatureCard.svelte @@ -0,0 +1,67 @@ + + + +
+ Picture describing the {name} feature +
+
+
+ {name} +
+

{description}

+
+ +
+ + diff --git a/src/lib/components/molecules/MarkerHighlight.story.svelte b/src/lib/components/molecules/MarkerHighlight.story.svelte new file mode 100644 index 0000000..b820cfa --- /dev/null +++ b/src/lib/components/molecules/MarkerHighlight.story.svelte @@ -0,0 +1,33 @@ + + + + + + + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sapien mi, euismod eu ipsum + eget, faucibus maximus erat. Integer nisl tellus, interdum sit amet nunc vel, ullamcorper + suscipit odio. Praesent vitae nisl eros. Proin vel bibendum ante. Quisque nec fringilla libero. Duis + accumsan urna at arcu vestibulum placerat. Curabitur tincidunt neque mauris, vel posuere ex + malesuada quis. Ut nec odio placerat, aliquam elit vitae, volutpat eros. Duis vel sem purus. Donec gravida a + lectus vel sagittis. Morbi vel porttitor erat. Vestibulum ante ipsum primis in faucibus orci luctus + et ultrices posuere cubilia curae; + +
+
diff --git a/src/lib/components/molecules/MarkerHighlight.svelte b/src/lib/components/molecules/MarkerHighlight.svelte new file mode 100644 index 0000000..d5e55d2 --- /dev/null +++ b/src/lib/components/molecules/MarkerHighlight.svelte @@ -0,0 +1,34 @@ + + + + + + + diff --git a/src/lib/components/molecules/Socials.story.svelte b/src/lib/components/molecules/Socials.story.svelte new file mode 100644 index 0000000..9d828aa --- /dev/null +++ b/src/lib/components/molecules/Socials.story.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/src/lib/components/molecules/Socials.svelte b/src/lib/components/molecules/Socials.svelte new file mode 100644 index 0000000..a51d205 --- /dev/null +++ b/src/lib/components/molecules/Socials.svelte @@ -0,0 +1,73 @@ + + +
+ + + + + + + + + + + + + + + +
+ + diff --git a/src/lib/components/molecules/SparklingHighlight.story.svelte b/src/lib/components/molecules/SparklingHighlight.story.svelte new file mode 100644 index 0000000..ce07fc9 --- /dev/null +++ b/src/lib/components/molecules/SparklingHighlight.story.svelte @@ -0,0 +1,40 @@ + + + + + + + + + +
+ + + {text} + + +
+
diff --git a/src/lib/components/molecules/SparklingHighlight.svelte b/src/lib/components/molecules/SparklingHighlight.svelte new file mode 100644 index 0000000..088d23a --- /dev/null +++ b/src/lib/components/molecules/SparklingHighlight.svelte @@ -0,0 +1,19 @@ + + + + + diff --git a/src/lib/components/molecules/ThemeToggle.svelte b/src/lib/components/molecules/ThemeToggle.svelte new file mode 100644 index 0000000..44edb38 --- /dev/null +++ b/src/lib/components/molecules/ThemeToggle.svelte @@ -0,0 +1,168 @@ + + + + + + + diff --git a/src/lib/components/molecules/TintHighlight.story.svelte b/src/lib/components/molecules/TintHighlight.story.svelte new file mode 100644 index 0000000..7603376 --- /dev/null +++ b/src/lib/components/molecules/TintHighlight.story.svelte @@ -0,0 +1,33 @@ + + + + + + + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus sapien mi, euismod eu ipsum + eget, faucibus maximus erat. Integer nisl tellus, interdum sit amet nunc vel, ullamcorper + suscipit odio. Praesent vitae nisl eros. Proin vel bibendum ante. Quisque nec fringilla libero. Duis + accumsan urna at arcu vestibulum placerat. Curabitur tincidunt neque mauris, vel posuere ex + malesuada quis. Ut nec odio placerat, aliquam elit vitae, volutpat eros. Duis vel sem purus. Donec gravida a + lectus vel sagittis. Morbi vel porttitor erat. Vestibulum ante ipsum primis in faucibus orci luctus + et ultrices posuere cubilia curae; + +
+
diff --git a/src/lib/components/molecules/TintHighlight.svelte b/src/lib/components/molecules/TintHighlight.svelte new file mode 100644 index 0000000..5bc35c8 --- /dev/null +++ b/src/lib/components/molecules/TintHighlight.svelte @@ -0,0 +1,21 @@ + + + + + + + diff --git a/src/lib/components/organisms/About.story.svelte b/src/lib/components/organisms/About.story.svelte new file mode 100644 index 0000000..fde8faa --- /dev/null +++ b/src/lib/components/organisms/About.story.svelte @@ -0,0 +1,11 @@ + + + + + diff --git a/src/lib/components/organisms/About.svelte b/src/lib/components/organisms/About.svelte new file mode 100644 index 0000000..0ffd948 --- /dev/null +++ b/src/lib/components/organisms/About.svelte @@ -0,0 +1,87 @@ + + +
+
+

+ This is a catchy headline that + sparkles! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatum velit voluptatibus commodi + autem provident quam labore, libero beatae praesentium voluptate? +

+
+ Socials: + +
+
+
+ Sample for the static template +
+
+ + diff --git a/src/lib/components/organisms/ContentSection.story.svelte b/src/lib/components/organisms/ContentSection.story.svelte new file mode 100644 index 0000000..f5e4371 --- /dev/null +++ b/src/lib/components/organisms/ContentSection.story.svelte @@ -0,0 +1,45 @@ + + + + + +
+ +
+
Content
+
+
+ + + +
+ +
+
Content
+
+
+ + + +
+ +
+
Content
+
+
+
diff --git a/src/lib/components/organisms/ContentSection.svelte b/src/lib/components/organisms/ContentSection.svelte new file mode 100644 index 0000000..898a878 --- /dev/null +++ b/src/lib/components/organisms/ContentSection.svelte @@ -0,0 +1,104 @@ + + +
+
+ {#if title || description} +
+ {#if title} +

+ {title} +

+ {/if} + {#if description} +

+ {description} +

+ {/if} +
+ {/if} + {#if $$slots['button']} +
+ +
+ {/if} +
+
+ +
+
+ + diff --git a/src/lib/components/organisms/Features.svelte b/src/lib/components/organisms/Features.svelte new file mode 100644 index 0000000..4db5cf3 --- /dev/null +++ b/src/lib/components/organisms/Features.svelte @@ -0,0 +1,73 @@ + + + +
+
+ {#each features as feature} + + {/each} +
+
+
+ + diff --git a/src/lib/components/organisms/Footer.story.svelte b/src/lib/components/organisms/Footer.story.svelte new file mode 100644 index 0000000..caece8b --- /dev/null +++ b/src/lib/components/organisms/Footer.story.svelte @@ -0,0 +1,11 @@ + + + +