diff --git a/mdsvex.config.js b/mdsvex.config.js new file mode 100644 index 0000000..7ce363f --- /dev/null +++ b/mdsvex.config.js @@ -0,0 +1,14 @@ +import { defineMDSveXConfig as defineConfig } from 'mdsvex'; +import relativeImages from 'mdsvex-relative-images'; + +const config = defineConfig({ + extensions: ['.svelte.md', '.md', '.svx'], + + smartypants: { + dashes: 'oldschool' + }, + remarkPlugins: [relativeImages], + rehypePlugins: [] +}); + +export default config; diff --git a/package.json b/package.json index 6bb03ba..3cd11af 100644 --- a/package.json +++ b/package.json @@ -14,24 +14,24 @@ "format": "prettier --plugin-search-dir . --write ." }, "devDependencies": { - "@iconify-icons/material-symbols": "^1.2.30", - "@iconify-icons/mdi": "^1.2.41", + "@iconify-icons/material-symbols": "^1.2.31", + "@iconify-icons/mdi": "^1.2.43", "@iconify-icons/radix-icons": "^1.2.8", - "@iconify-icons/simple-icons": "^1.2.43", + "@iconify-icons/simple-icons": "^1.2.44", "@leveluptuts/svelte-side-menu": "^1.0.5", "@leveluptuts/svelte-toy": "^2.0.3", - "@playwright/test": "^1.31.1", + "@playwright/test": "^1.31.2", "@rgossiaux/svelte-headlessui": "^1.0.2", "@sveltejs/adapter-auto": "^1.0.3", "@sveltejs/adapter-static": "^2.0.1", "@sveltejs/adapter-vercel": "^1.0.6", - "@sveltejs/kit": "^1.8.5", + "@sveltejs/kit": "^1.10.0", "@types/postcss-preset-env": "^8.0.0", - "@typescript-eslint/eslint-plugin": "^5.53.0", - "@typescript-eslint/parser": "^5.53.0", + "@typescript-eslint/eslint-plugin": "^5.54.1", + "@typescript-eslint/parser": "^5.54.1", "autoprefixer": "^10.4.7", "eslint": "^8.35.0", - "eslint-config-prettier": "^8.5.0", + "eslint-config-prettier": "^8.7.0", "eslint-plugin-svelte3": "^4.0.0", "iconify-icon": "^1.0.7", "just-intersect": "^4.3.0", @@ -47,7 +47,7 @@ "sass": "^1.58.3", "scrape-it": "^5.3.2", "svelte": "^3.54.0", - "svelte-check": "^3.0.4", + "svelte-check": "^3.1.0", "svelte-lazy-loader": "^1.0.0", "svelte-preprocess": "^4.10.7", "tslib": "^2.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08c72d5..6b94c0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,24 +1,24 @@ lockfileVersion: 5.4 specifiers: - '@iconify-icons/material-symbols': ^1.2.30 - '@iconify-icons/mdi': ^1.2.41 + '@iconify-icons/material-symbols': ^1.2.31 + '@iconify-icons/mdi': ^1.2.43 '@iconify-icons/radix-icons': ^1.2.8 - '@iconify-icons/simple-icons': ^1.2.43 + '@iconify-icons/simple-icons': ^1.2.44 '@leveluptuts/svelte-side-menu': ^1.0.5 '@leveluptuts/svelte-toy': ^2.0.3 - '@playwright/test': ^1.31.1 + '@playwright/test': ^1.31.2 '@rgossiaux/svelte-headlessui': ^1.0.2 '@sveltejs/adapter-auto': ^1.0.3 '@sveltejs/adapter-static': ^2.0.1 '@sveltejs/adapter-vercel': ^1.0.6 - '@sveltejs/kit': ^1.8.5 + '@sveltejs/kit': ^1.10.0 '@types/postcss-preset-env': ^8.0.0 - '@typescript-eslint/eslint-plugin': ^5.53.0 - '@typescript-eslint/parser': ^5.53.0 + '@typescript-eslint/eslint-plugin': ^5.54.1 + '@typescript-eslint/parser': ^5.54.1 autoprefixer: ^10.4.7 eslint: ^8.35.0 - eslint-config-prettier: ^8.5.0 + eslint-config-prettier: ^8.7.0 eslint-plugin-svelte3: ^4.0.0 iconify-icon: ^1.0.7 ioredis: ^5.3.1 @@ -35,7 +35,7 @@ specifiers: sass: ^1.58.3 scrape-it: ^5.3.2 svelte: ^3.54.0 - svelte-check: ^3.0.4 + svelte-check: ^3.1.0 svelte-lazy-loader: ^1.0.0 svelte-preprocess: ^4.10.7 tslib: ^2.5.0 @@ -48,24 +48,24 @@ dependencies: ioredis: 5.3.1 devDependencies: - '@iconify-icons/material-symbols': 1.2.30 - '@iconify-icons/mdi': 1.2.41 + '@iconify-icons/material-symbols': 1.2.31 + '@iconify-icons/mdi': 1.2.43 '@iconify-icons/radix-icons': 1.2.8 - '@iconify-icons/simple-icons': 1.2.43 + '@iconify-icons/simple-icons': 1.2.44 '@leveluptuts/svelte-side-menu': 1.0.5 '@leveluptuts/svelte-toy': 2.0.3 - '@playwright/test': 1.31.1 + '@playwright/test': 1.31.2 '@rgossiaux/svelte-headlessui': 1.0.2_svelte@3.55.1 - '@sveltejs/adapter-auto': 1.0.3_@sveltejs+kit@1.8.5 - '@sveltejs/adapter-static': 2.0.1_@sveltejs+kit@1.8.5 - '@sveltejs/adapter-vercel': 1.0.6_@sveltejs+kit@1.8.5 - '@sveltejs/kit': 1.8.5_svelte@3.55.1+vite@4.1.4 + '@sveltejs/adapter-auto': 1.0.3_@sveltejs+kit@1.10.0 + '@sveltejs/adapter-static': 2.0.1_@sveltejs+kit@1.10.0 + '@sveltejs/adapter-vercel': 1.0.6_@sveltejs+kit@1.10.0 + '@sveltejs/kit': 1.10.0_svelte@3.55.1+vite@4.1.4 '@types/postcss-preset-env': 8.0.0_postcss@8.4.21 - '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu autoprefixer: 10.4.13_postcss@8.4.21 eslint: 8.35.0 - eslint-config-prettier: 8.6.0_eslint@8.35.0 + eslint-config-prettier: 8.7.0_eslint@8.35.0 eslint-plugin-svelte3: 4.0.0_n4ieifq2d7jq3sqoe474cgqlim iconify-icon: 1.0.7 just-intersect: 4.3.0 @@ -81,7 +81,7 @@ devDependencies: sass: 1.58.3 scrape-it: 5.3.2 svelte: 3.55.1 - svelte-check: 3.0.4_yqhbri7c5yusomev55u36f7etq + svelte-check: 3.1.0_yqhbri7c5yusomev55u36f7etq svelte-lazy-loader: 1.0.0 svelte-preprocess: 4.10.7_o53ofcihxu4urxldnfcp5z27ga tslib: 2.5.0 @@ -574,14 +574,14 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@iconify-icons/material-symbols/1.2.30: - resolution: {integrity: sha512-P8bEZglt2lJ9EY5Ao3ZoPXrKdf0EJOxTwHTSBD1nYBjbprXTXQiVnFl5MaNyuBPCUfKzHFOpfBGfL7AsrR7CHA==} + /@iconify-icons/material-symbols/1.2.31: + resolution: {integrity: sha512-sGuk1FoNSzsBFsUxy1lfI0Scu3mV718jB8zHop8FrT/tYeyYef34oFN+y5vKSQ9QoR6+ET4cS30jBvy0sQGQgw==} dependencies: '@iconify/types': 2.0.0 dev: true - /@iconify-icons/mdi/1.2.41: - resolution: {integrity: sha512-duqTSmY0H+e/LdSZD5B8PxnJfdfh6qdLVnrI6klHGSSykz23d1KdvoPpfFpgF8mWWDm4UlHIO+rrvsqMLEb3NQ==} + /@iconify-icons/mdi/1.2.43: + resolution: {integrity: sha512-FfidsQn+m7NzZrc92UO/Ul6YXJmL5liEs9593tdWqY4DIqTgwO7Srw5WQ8LAhvS/D+LnuYwrJCUsIs6Yj3CPwA==} dependencies: '@iconify/types': 2.0.0 dev: true @@ -592,8 +592,8 @@ packages: '@iconify/types': 2.0.0 dev: true - /@iconify-icons/simple-icons/1.2.43: - resolution: {integrity: sha512-BEheEwSJCPNmL0xdpAqp/rTAHADcz4VPgYsvXOHvwX72brH9YQlBVFJQm4TGv+vjM2GCs+vIpXX4Gs3wJH0YmA==} + /@iconify-icons/simple-icons/1.2.44: + resolution: {integrity: sha512-iXZLANPS7DbKSK1wbiWxcWabdn7x8nvCt5LbVLsgJI9zzfHXOc3KdMBLpZH/ZlvdMGsZ2RIF0FmOp9YyuwCatQ==} dependencies: '@iconify/types': 2.0.0 dev: true @@ -671,13 +671,13 @@ packages: fastq: 1.15.0 dev: true - /@playwright/test/1.31.1: - resolution: {integrity: sha512-IsytVZ+0QLDh1Hj83XatGp/GsI1CDJWbyDaBGbainsh0p2zC7F4toUocqowmjS6sQff2NGT3D9WbDj/3K2CJiA==} + /@playwright/test/1.31.2: + resolution: {integrity: sha512-BYVutxDI4JeZKV1+ups6dt5WiqKhjBtIYowyZIJ3kBDmJgsuPKsqqKNIMFbUePLSCmp2cZu+BDL427RcNKTRYw==} engines: {node: '>=14'} hasBin: true dependencies: '@types/node': 18.11.18 - playwright-core: 1.31.1 + playwright-core: 1.31.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -716,29 +716,29 @@ packages: picomatch: 2.3.1 dev: true - /@sveltejs/adapter-auto/1.0.3_@sveltejs+kit@1.8.5: + /@sveltejs/adapter-auto/1.0.3_@sveltejs+kit@1.10.0: resolution: {integrity: sha512-hc7O12YQqvZ1CD4fo1gMJuPzBZvuoG5kwxb2RRoz4fVoB8B2vuPO2cY751Ln0G6T/HMrAf8kCqw6Pg+wbxcstw==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.8.5_svelte@3.55.1+vite@4.1.4 + '@sveltejs/kit': 1.10.0_svelte@3.55.1+vite@4.1.4 import-meta-resolve: 2.2.1 dev: true - /@sveltejs/adapter-static/2.0.1_@sveltejs+kit@1.8.5: + /@sveltejs/adapter-static/2.0.1_@sveltejs+kit@1.10.0: resolution: {integrity: sha512-o5/q3YwD/ErxYCFlK1v3ydvldyNKk1lh3oeyxn4mhz+Pkbx/uuxhzmbOpytTlp5aVqNHDVsb04xadUzOFCDDzw==} peerDependencies: '@sveltejs/kit': ^1.5.0 dependencies: - '@sveltejs/kit': 1.8.5_svelte@3.55.1+vite@4.1.4 + '@sveltejs/kit': 1.10.0_svelte@3.55.1+vite@4.1.4 dev: true - /@sveltejs/adapter-vercel/1.0.6_@sveltejs+kit@1.8.5: + /@sveltejs/adapter-vercel/1.0.6_@sveltejs+kit@1.10.0: resolution: {integrity: sha512-fo6aaEygPd/6B5Jms4Ff7R4jbADnppuLvKOWBNTGe5MGB7ZRUkl+gxHWMQx2av2knyEZkA6V8y5M6R3ML5yN4g==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.8.5_svelte@3.55.1+vite@4.1.4 + '@sveltejs/kit': 1.10.0_svelte@3.55.1+vite@4.1.4 '@vercel/nft': 0.22.6 esbuild: 0.16.17 transitivePeerDependencies: @@ -746,8 +746,8 @@ packages: - supports-color dev: true - /@sveltejs/kit/1.8.5_svelte@3.55.1+vite@4.1.4: - resolution: {integrity: sha512-b6kbjVAivoPd3oL9IVBaZBWiuHeI0qBKfszSDXcqsPfiSMyUK7ilHDFVSWNn+2EMPO48+87iuho71yTCOXZE3w==} + /@sveltejs/kit/1.10.0_svelte@3.55.1+vite@4.1.4: + resolution: {integrity: sha512-0P35zHrByfbF3Ym3RdQL+RvzgsCDSyO3imSwuZ67XAD5HoCQFF3a8Mhh0V3sObz3rc5aJd4Qn82UpAihJqZ6gQ==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -852,8 +852,8 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true - /@typescript-eslint/eslint-plugin/5.53.0_cjo54hduev4bqhpjw5znwiokqu: - resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} + /@typescript-eslint/eslint-plugin/5.54.1_mlk7dnz565t663n4razh6a6v6i: + resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -863,10 +863,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/type-utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/type-utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 grapheme-splitter: 1.0.4 @@ -880,8 +880,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==} + /@typescript-eslint/parser/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -890,9 +890,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 debug: 4.3.4 eslint: 8.35.0 typescript: 4.9.5 @@ -900,16 +900,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.53.0: - resolution: {integrity: sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==} + /@typescript-eslint/scope-manager/5.54.1: + resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/visitor-keys': 5.53.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 dev: true - /@typescript-eslint/type-utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} + /@typescript-eslint/type-utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -918,8 +918,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 tsutils: 3.21.0_typescript@4.9.5 @@ -928,13 +928,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.53.0: - resolution: {integrity: sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==} + /@typescript-eslint/types/5.54.1: + resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.53.0_typescript@4.9.5: - resolution: {integrity: sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==} + /@typescript-eslint/typescript-estree/5.54.1_typescript@4.9.5: + resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -942,8 +942,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/visitor-keys': 5.53.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -954,17 +954,17 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} + /@typescript-eslint/utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 eslint: 8.35.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.35.0 @@ -974,11 +974,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.53.0: - resolution: {integrity: sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==} + /@typescript-eslint/visitor-keys/5.54.1: + resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/types': 5.54.1 eslint-visitor-keys: 3.3.0 dev: true @@ -1765,8 +1765,8 @@ packages: dev: true optional: true - /eslint-config-prettier/8.6.0_eslint@8.35.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier/8.7.0_eslint@8.35.0: + resolution: {integrity: sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -2902,8 +2902,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /playwright-core/1.31.1: - resolution: {integrity: sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==} + /playwright-core/1.31.2: + resolution: {integrity: sha512-a1dFgCNQw4vCsG7bnojZjDnPewZcw7tZUNFN0ZkcLYKj+mPmXvg4MpaaKZ5SgqPsOmqIf2YsVRkgqiRDxD+fDQ==} engines: {node: '>=14'} hasBin: true dev: true @@ -3798,8 +3798,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check/3.0.4_yqhbri7c5yusomev55u36f7etq: - resolution: {integrity: sha512-feIyBAA5cSIxq4vq6mwGvGQTHy/wBVQbs5b+/VvE21WN8X7nonAuSqwvZv0UDBowzRka3Rh4gmLPH8rPePz3/w==} + /svelte-check/3.1.0_yqhbri7c5yusomev55u36f7etq: + resolution: {integrity: sha512-aSdnsGtndfqtb0dmN5qm9Zjl7wGpqh3cWF35WVCcK96TmGn2NEar4M40QW6bvaPPu089mrkZdpeD3Yar2SERBg==} hasBin: true peerDependencies: svelte: ^3.55.0 diff --git a/src/lib/components/ExternalLink.svelte b/src/lib/components/ExternalLink.svelte index 020f254..309afa0 100644 --- a/src/lib/components/ExternalLink.svelte +++ b/src/lib/components/ExternalLink.svelte @@ -1,10 +1,12 @@ @@ -12,15 +14,14 @@ {#if showIcon} - + {/if} \ No newline at end of file diff --git a/src/lib/content/portfolio/personal-website-gatsby.ts b/src/lib/content/portfolio/personal-website-gatsby.ts new file mode 100644 index 0000000..217c61a --- /dev/null +++ b/src/lib/content/portfolio/personal-website-gatsby.ts @@ -0,0 +1,43 @@ +import meta from '$lib/assets/images/Bradley_Shellnut_New_Site.png?metadata'; +import formatMeta from '$lib/assets/images/Bradley_Shellnut_New_Site.png?format=webp;avif;png&metadata'; +import placeholder from '$lib/assets/images/Bradley_Shellnut_New_Site.png?w=100&png&blur=10'; + +type ImageMeta = { + format: string; + src: string; + type: string; + width: string; + height: string; +}; + +type Sources = { + srcset: URL; + type: string; + width: string; + height: string; +}; + +const { height, src, width }: ImageMeta = meta; + +const sources: Sources[] = []; +const imageFormatsMetadata: ImageMeta[] = JSON.parse(formatMeta); +console.log(`Image format metadata: ${JSON.parse(imageFormatsMetadata)}`); +for (const metadata of imageFormatsMetadata) { + sources.push({ + srcset: new URL(metadata.src), + type: `image/${metadata.format}`, + width: metadata.width, + height: metadata.height + }); +} + +const data = { + alt: 'Home Page of bradleyshellnut.com', + width, + height, + src, + sources, + placeholder +}; + +export { data as default }; diff --git a/src/lib/content/portfolio/personal/old-website.md b/src/lib/content/portfolio/personal/old-website.md new file mode 100644 index 0000000..dc1157f --- /dev/null +++ b/src/lib/content/portfolio/personal/old-website.md @@ -0,0 +1,21 @@ +--- +portfolioName: 'Old Personal Website' +portfolioSubHeading: 'My first personal website.' +portfolioImage: 'Old_Website_Bradley_Shellnut.png' +portfolioImageAlt: 'Home Page of the old bradleyshellnut.com website' +--- + + + +{portfolioSubHeading} + +This was my first real personal website hosted on DigitalOcean. + +Tech stack: + +- React +- Redux +- ReactStrap for CSS grid management +- React Router for routing links in the page diff --git a/src/lib/content/portfolio/personal/personal-website-gatsby.md b/src/lib/content/portfolio/personal/personal-website-gatsby.md new file mode 100644 index 0000000..b98511b --- /dev/null +++ b/src/lib/content/portfolio/personal/personal-website-gatsby.md @@ -0,0 +1,31 @@ +--- +portfolioName: 'Personal Website' +portfolioSubHeading: 'My personal website written using the following technologies.' +portfolioImage: 'Bradley_Shellnut_New_Site.png' +portfolioImageAlt: 'Home Page of bradleyshellnut.com' +--- + + + +{portfolioSubHeading} + +Tech Stack: + +- React 18 +- Gatsby 5 +- Radix UI +- Styled Components +- GraphQL +- Deployed using Netlify +- Most icons from react-icons +- Bee, Shell, Nut, and Seattle Icons made by "Freepik" from flaticon.com + +Current version was improved after the suggestions on Show 444 of the Syntax Podcast. + +You can view the previous archived version of my personal website here. diff --git a/src/lib/content/portfolio/personal/wedding-website.md b/src/lib/content/portfolio/personal/wedding-website.md new file mode 100644 index 0000000..07bd3d5 --- /dev/null +++ b/src/lib/content/portfolio/personal/wedding-website.md @@ -0,0 +1,23 @@ +--- +portfolioName: 'Wedding Website' +portfolioSubHeading: 'An application that allows viewing of wedding details and provides the ability to RSVP to the wedding.' +portfolioImage: 'Wedding_Website.png' +portfolioImageAlt: 'Wedding Website' +--- + + + +{portfolioSubHeading} + +The app was initially created for my wedding but what is linked here is a public demo of the application. + +Tech stack: + +- Next.js 13 +- React 18 +- Radix UI +- MongoDB +- Styled Components +- Next Iron Session diff --git a/src/lib/content/portfolio/professional/mark-shellnut-architect.md b/src/lib/content/portfolio/professional/mark-shellnut-architect.md new file mode 100644 index 0000000..68283ec --- /dev/null +++ b/src/lib/content/portfolio/professional/mark-shellnut-architect.md @@ -0,0 +1,21 @@ +--- +portfolioName: 'Mark Shellnut Architect' +portfolioSubHeading: 'Company website for Mark Shellnut Architect.' +portfolioImage: 'Mark_Shellnut_Architect.png' +portfolioImageAlt: "Picture of Mark Shellnut Architect's Website" +--- + + + +{portfolioSubHeading} + +Tech stack: + +- React 18 +- Gatsby 5 +- Radix UI +- Styled Components +- GraphQL +- Lambda Functions diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte index bf4d562..729322b 100644 --- a/src/routes/about/+page.svelte +++ b/src/routes/about/+page.svelte @@ -9,7 +9,6 @@ import Remix from '@iconify-icons/simple-icons/remix'; import Svelte from '@iconify-icons/simple-icons/svelte'; import TypeScript from '@iconify-icons/simple-icons/typescript'; - import SEO from "$root/lib/components/SEO.svelte"; import space_needle from '$lib/assets/images/space-needle.png?format=webp;avif;png&metadata'; import space_needle_blurred from '$lib/assets/images/space-needle.png?w=100&png&blur=10'; import tortie_derp from '$lib/assets/images/tortie_derp.jpg?format=webp;avif;jpg&metadata'; @@ -18,10 +17,11 @@ import orange_derp_blurred from '$lib/assets/images/orange_derp.jpg?w=100&jpg&blur=10'; import Tag from '$root/lib/components/Tag.svelte'; import ExternalLink from '$root/lib/components/ExternalLink.svelte'; - import { Disclosure } from '@rgossiaux/svelte-headlessui'; - + + About | Bradley Shellnut +
diff --git a/src/routes/portfolio/+page.server.ts b/src/routes/portfolio/+page.server.ts new file mode 100644 index 0000000..230c200 --- /dev/null +++ b/src/routes/portfolio/+page.server.ts @@ -0,0 +1,28 @@ +import { error } from '@sveltejs/kit'; +import { compile } from 'mdsvex'; +import type { PageServerLoad } from '../$types'; +export const prerender = true; + +export const load: PageServerLoad = async () => { + try { + const personalSiteGatsby = await import( + `../../lib/content/portfolio/personal/personal-website-gatsby.md` + ); + + const { default: page, metadata } = personalSiteGatsby; + + // const [personalSiteGatsbyResponse] = await Promise.all([personalSiteGatsby]); + + console.log(`page: ${JSON.stringify(page)}, metadata: ${JSON.stringify(metadata)}`); + + // const compiledResponse = await compile(personalSiteGatsbyResponse); + + // console.log(`compiledResponse is: ${JSON.stringify(compiledResponse)}`); + return { + portfolios: '' + }; + } catch (e) { + console.error(e); + throw error(500, 'Error loading portfolios'); + } +}; diff --git a/src/routes/portfolio/+page.svelte b/src/routes/portfolio/+page.svelte index 9719bc5..8309ad9 100644 --- a/src/routes/portfolio/+page.svelte +++ b/src/routes/portfolio/+page.svelte @@ -1,4 +1,5 @@ @@ -23,346 +37,89 @@

Portfolio!

-
- - - selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}> -

Personal Sites

-
- selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}> -

Professional Sites

-
-
- - -
-
-
-

Personal Website

- - {#each personalSiteFormats as { src, format }} - - {/each} - -
-
-

- My personal website written using the following - technologies. -

-

Tech Stack:

- -

- Current version was improved after the suggestions on{' '} - - Show 444 - {' '} - of the{' '} - - Syntax Podcast - - . -

-

- Previous archived version of my{' '} - - personal website - - . -

-
-
-
-
-

Wedding Website

-
- - {#each weddingWebsite as { src, format }} - - {/each} - -
-

- - View Site - {' '} - - - -

-

- - Github Repo - {' '} - - - -

-
-
-

- An application that allows viewing of wedding details and - provides the ability to RSVP to the wedding. -

-

- The app was initially created for my wedding but what is - linked here is a public demo of the application. -

-

Tech stack:

-
    -
  • Next.js 13
  • -
  • React 18
  • -
  • - - Radix UI - -
  • -
  • MongoDB
  • -
  • Styled Components
  • -
  • Next Iron Session
  • -
-
-
-
-
-

Old Personal Website

-
- - {#each oldSite as { src, format }} - - {/each} - -
-

- - Link to an archive snapshot - -

-
-
-

- This was my first real personal website hosted on - DigitalOcean. It was built using the following: -

-
    -
  • React
  • -
  • Redux for any state management
  • -
  • ReactStrap for CSS grid management
  • -
  • React Router for routing links in the page
  • -
-
-
-
-
- -
-
-

Mark Shellnut Architect

-
- - {#each shellnutArchitectWebsite as { src, format }} - - {/each} - -
-

- - View Site - {' '} - - - -

-
-
-

Company website for Mark Shellnut Architect.

-

Tech stack:

-
    -
  • React 18
  • -
  • Gatsby 5
  • -
  • - - Radix UI - -
  • -
  • Styled Components
  • -
  • GraphQL
  • -
  • Lambda Functions
  • -
-
-
-
-
-
-
+ + + selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}> +

Personal Sites

+
+ selected ? "tab-selected portfolio-tab" : "tab-unselected portfolio-tab"}> +

Professional Sites

+
+
+ + + + + + + +

+ View Site +

+

+ GitHub repository +

+
+ +
+ + +

+ Link to an archive snapshot +

+
+ +
+
+ + + + + + + +
+