mirror of
https://github.com/sergeyyarkov/yarkov.tech.git
synced 2026-10-11 10:29:21 +03:00
refactor: fixed markdown types
This commit is contained in:
parent
643f5b133f
commit
dac7b1c155
@ -65,6 +65,16 @@ export default defineConfig({
|
||||
ssr: {
|
||||
external: ["svgo"],
|
||||
},
|
||||
build: {
|
||||
minify: "esbuild",
|
||||
rollupOptions: {
|
||||
output: {
|
||||
entryFileNames: `[name].[hash].js`,
|
||||
chunkFileNames: `chunks/[name].[hash].js`,
|
||||
assetFileNames: `assets/[hash].[ext]`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
experimental: {
|
||||
integrations: true,
|
||||
|
||||
271
package-lock.json
generated
271
package-lock.json
generated
@ -9,14 +9,14 @@
|
||||
"version": "0.0.1",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@astrojs/image": "^0.3.2",
|
||||
"@astrojs/mdx": "^0.8.0",
|
||||
"@astrojs/solid-js": "^0.4.1",
|
||||
"@astrojs/image": "^0.3.4",
|
||||
"@astrojs/mdx": "^0.9.0",
|
||||
"@astrojs/solid-js": "^1.0.0",
|
||||
"@types/mdx": "^2.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
||||
"@typescript-eslint/parser": "^5.33.0",
|
||||
"astro": "^1.0.0-rc.8",
|
||||
"astro-compress": "^0.0.15",
|
||||
"astro": "^1.0.4",
|
||||
"astro-compress": "^0.0.18",
|
||||
"astro-icon": "^0.7.3",
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-plugin-solid": "^0.7.1",
|
||||
@ -24,12 +24,12 @@
|
||||
"hastscript": "^7.0.2",
|
||||
"html-escaper": "^3.0.3",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-astro": "^0.4.1",
|
||||
"prettier-plugin-astro": "^0.5.0",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-slug": "^5.0.1",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"remark-smartypants": "^2.0.0",
|
||||
"sass": "^1.54.3",
|
||||
"sass": "^1.54.4",
|
||||
"solid-js": "^1.4.8"
|
||||
}
|
||||
},
|
||||
@ -53,9 +53,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@astrojs/image": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.2.tgz",
|
||||
"integrity": "sha512-GOS2+buNjYE5Z23OJIvHxBPcODuog73eYynKoGhetV9oHr+x3fZLhgDYep8rble0oMAweQdMgllUls6OS8X0VA==",
|
||||
"version": "0.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.4.tgz",
|
||||
"integrity": "sha512-eggNQTRqWE2cxhJeVFYkRKKN5SMyMuHxcq/JaT6KfMEJY2ULGKiYa3ulKr3/kAIXGcU3hrOpv0U7GirMVKlhZg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"etag": "^1.8.1",
|
||||
@ -101,13 +101,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/markdown-remark": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-0.14.1.tgz",
|
||||
"integrity": "sha512-u072l5Nvb7GGMIBXmm65+IakPoF3nQ0ICIrDyFolznUB6e51AEa0ZGdpZa1jiT5fugR1gZgFPPJGcwWlSadZJA==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-1.0.0.tgz",
|
||||
"integrity": "sha512-yQIMvVjSMs4ZQHffT2nBgXiqVHKOwIgd6xC0o5XkcbXxyspxjRGpHyiAp/WKEdKsUeXwjVuL8b+6lhAYByd+lw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@astrojs/micromark-extension-mdx-jsx": "^1.0.3",
|
||||
"@astrojs/prism": "^0.7.0",
|
||||
"@astrojs/prism": "^1.0.0",
|
||||
"acorn": "^8.7.1",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"github-slugger": "^1.4.0",
|
||||
@ -130,12 +130,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/mdx": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.8.0.tgz",
|
||||
"integrity": "sha512-KM5O7nnAxADoDuTRSVQTQ6xBYo8a4ZMEAADOdf9yWWTrNHLC97IN0bBAKRLKDVRpI5dBCpEvBmwwXcDHel5pBQ==",
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.9.0.tgz",
|
||||
"integrity": "sha512-Z6W7YvCc36BenJZGkcG0oFi01OswR6KhUDWXL06prhgu51YSlKrpcvpykruGXaDQb1YkqGi3yxmWAmQwzgx6pQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@astrojs/prism": "^0.7.0",
|
||||
"@astrojs/prism": "^1.0.1",
|
||||
"@mdx-js/mdx": "^2.1.2",
|
||||
"@mdx-js/rollup": "^2.1.1",
|
||||
"acorn": "^8.8.0",
|
||||
@ -173,9 +173,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/prism": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-0.7.0.tgz",
|
||||
"integrity": "sha512-5gh4BL9BlgCKBru0crQI3Y7GQCCC389wLBy+0yPnfss/pA0rVgCupRnGcs3oinsRopymOlNblEDfJXdTbCWEtg==",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-1.0.1.tgz",
|
||||
"integrity": "sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"prismjs": "^1.28.0"
|
||||
@ -185,9 +185,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/solid-js": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-0.4.1.tgz",
|
||||
"integrity": "sha512-z97yq6d//XwPNeSa/btY4/vEv6EMgYh4vkK8M0/UQ8xB6oHgQ14HDurWiqKdTQ0omsNmawfinnSLxwp6i3zRuw==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-1.0.0.tgz",
|
||||
"integrity": "sha512-OEshIFX7itx8mzh3vFQgsWjzzcCYJegjY6aIoO0w2W34MP+iwEYvUwuyd6tXsDRPzTEDoCVDJDLHw/uZoNB18w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"babel-preset-solid": "^1.4.2"
|
||||
@ -200,9 +200,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/telemetry": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-0.4.1.tgz",
|
||||
"integrity": "sha512-xssM9IxVQGQHPNfzNlmbaQyevnD5CjSFNEszdYEoJRgsN0yzkxjgGzzVZ4Toq+7gwM5oSO2/oxNWVbP9loHEKg==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-1.0.0.tgz",
|
||||
"integrity": "sha512-a8edSHK2CpWrGubLp2RR2D/uC9Paa614hQM/lS4In2lhmcCjaQA9ZyYT6l44peuDwUNt1V82DqXk3TFiDBWM8g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ci-info": "^3.3.1",
|
||||
@ -219,12 +219,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@astrojs/webapi": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-0.12.0.tgz",
|
||||
"integrity": "sha512-rie5SYbvXVykKYBsNFnkUtDe7/0mGmrvj7Gg5pOKV34Cg/CrCJbvUSwH2oyCG2OLGtN2ttUOLvSgnVq3eipCsQ==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-1.0.0.tgz",
|
||||
"integrity": "sha512-+klQ75oQbRdAMEbvAgrKE14hxh6GVHsQWZE4j/eJ2qhnvMSu7pw13MVQtFaAV96+pUkcYSjwWd1k+Oxoxkuo3g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"node-fetch": "^3.2.4"
|
||||
"node-fetch": "^3.2.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
@ -1498,16 +1498,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro": {
|
||||
"version": "1.0.0-rc.8",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.0-rc.8.tgz",
|
||||
"integrity": "sha512-8j9Ka4Rgp5K6RmCy5Yagu/tBRDWZHZUQmAnjH99/eX9aWDIIlMxqcK0V6KM2JMi2IEdTQpnsFc8gg1Bxu8LoIA==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.4.tgz",
|
||||
"integrity": "sha512-wNXmDSHnhiFcEeMy2VWMJV1i8mPx8Lu4qLBfZSmP9nWrc/oxgBZfDQTWOj0/NFu+MkfZ2JEGJlL9RZFmHrKlew==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": "^0.23.1",
|
||||
"@astrojs/compiler": "^0.23.3",
|
||||
"@astrojs/language-server": "^0.20.0",
|
||||
"@astrojs/markdown-remark": "^0.14.1",
|
||||
"@astrojs/telemetry": "^0.4.1",
|
||||
"@astrojs/webapi": "^0.12.0",
|
||||
"@astrojs/markdown-remark": "^1.0.0",
|
||||
"@astrojs/telemetry": "^1.0.0",
|
||||
"@astrojs/webapi": "^1.0.0",
|
||||
"@babel/core": "^7.18.2",
|
||||
"@babel/generator": "^7.18.2",
|
||||
"@babel/parser": "^7.18.4",
|
||||
@ -1555,7 +1555,7 @@
|
||||
"tsconfig-resolver": "^3.0.1",
|
||||
"unist-util-visit": "^4.1.0",
|
||||
"vfile": "^5.3.2",
|
||||
"vite": "3.0.4",
|
||||
"vite": "3.0.5",
|
||||
"yargs-parser": "^21.0.1",
|
||||
"zod": "^3.17.3"
|
||||
},
|
||||
@ -1568,12 +1568,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro-compress": {
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.15.tgz",
|
||||
"integrity": "sha512-hkqTieat8UeJvK8Nrz0yHtlXlMOwFguz+3DKWCnxUmw2pfkWoBzl36OsrGiEuZk2IK1UtJ+1XVFpZ2H67YxLtA==",
|
||||
"version": "0.0.18",
|
||||
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.18.tgz",
|
||||
"integrity": "sha512-6AaT8vlJkXYyImIQ70+bCkPTPfgSfvw3T+S9AOlSv65GFf1pZBuhO5nRuCg2jtEVBw4Eo/T4qC9khYbd6cVsWA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"csso": "5.0.4",
|
||||
"csso": "5.0.5",
|
||||
"deepmerge-ts": "4.2.1",
|
||||
"fast-glob": "3.2.11",
|
||||
"html-minifier-terser": "6.1.0",
|
||||
"sharp": "0.30.7",
|
||||
@ -1593,9 +1594,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/astro/node_modules/@astrojs/compiler": {
|
||||
"version": "0.23.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.1.tgz",
|
||||
"integrity": "sha512-KsoDrASGwTKZoWXbjy8SlIeoDv7y1OfBJtHVLuPuzhConA8e0SZpGzFqIuVRfG4bhisSTptZLDQZ7oxwgPv2jA==",
|
||||
"version": "0.23.3",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.3.tgz",
|
||||
"integrity": "sha512-eBWo0d3DoRDeg2Di1/5YJtOXh5eGFSjJMp1wVoVfoITHR4egdUGgsrDHZTzj0a25M/S9W5S6SpXCyNWcqi8jOA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/astro/node_modules/semver": {
|
||||
@ -2263,12 +2264,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/css-tree": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz",
|
||||
"integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz",
|
||||
"integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"mdn-data": "2.0.23",
|
||||
"mdn-data": "2.0.28",
|
||||
"source-map-js": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
@ -2289,12 +2290,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/csso": {
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.4.tgz",
|
||||
"integrity": "sha512-AxnuDS5yBhDT5TQMdNS+6o2OdWTKC8ioi7C+G5a30Zgo8XMAQSuMItktj/jvqh8QWOH85kDf0/S6mH1DMgyq1Q==",
|
||||
"version": "5.0.5",
|
||||
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
|
||||
"integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"css-tree": "~2.0.4"
|
||||
"css-tree": "~2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
|
||||
@ -2379,6 +2380,15 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/deepmerge-ts": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.1.tgz",
|
||||
"integrity": "sha512-xzJLiUo4z1dD2nggSfaMvHo5qWLoy/JVa9rKuktC6FrQQEBI8Qnj7KwuCYZhqBoGOOpGqs6+3MR2ZhSMcTr4BA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=12.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/defaults": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||
@ -5513,9 +5523,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/mdn-data": {
|
||||
"version": "2.0.23",
|
||||
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz",
|
||||
"integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==",
|
||||
"version": "2.0.28",
|
||||
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
|
||||
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mdurl": {
|
||||
@ -7064,9 +7074,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier-plugin-astro": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.4.1.tgz",
|
||||
"integrity": "sha512-AvYyg4WDnhmqH5S85EFgJAMU20p1lLypVt4sn4tuGW+lnPfWr70SaHZD9gevx20o3FnALgZxDu1enFSkN/MSwQ==",
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.5.0.tgz",
|
||||
"integrity": "sha512-wBDZs0hlPWQDc7P7VmGe8pImci6F434Wd/otfLJwvCSXRb9J7AhmAigXhm5WPgCJuBA509Ovo/Ed+LAgZy4KWg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": "^0.19.0",
|
||||
@ -7803,9 +7813,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.54.3",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz",
|
||||
"integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==",
|
||||
"version": "1.54.4",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
|
||||
"integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chokidar": ">=3.0.0 <4.0.0",
|
||||
@ -8988,13 +8998,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz",
|
||||
"integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
|
||||
"integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.14.47",
|
||||
"postcss": "^8.4.14",
|
||||
"postcss": "^8.4.16",
|
||||
"resolve": "^1.22.1",
|
||||
"rollup": "^2.75.6"
|
||||
},
|
||||
@ -9333,9 +9343,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@astrojs/image": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.2.tgz",
|
||||
"integrity": "sha512-GOS2+buNjYE5Z23OJIvHxBPcODuog73eYynKoGhetV9oHr+x3fZLhgDYep8rble0oMAweQdMgllUls6OS8X0VA==",
|
||||
"version": "0.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.4.tgz",
|
||||
"integrity": "sha512-eggNQTRqWE2cxhJeVFYkRKKN5SMyMuHxcq/JaT6KfMEJY2ULGKiYa3ulKr3/kAIXGcU3hrOpv0U7GirMVKlhZg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"etag": "^1.8.1",
|
||||
@ -9373,13 +9383,13 @@
|
||||
}
|
||||
},
|
||||
"@astrojs/markdown-remark": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-0.14.1.tgz",
|
||||
"integrity": "sha512-u072l5Nvb7GGMIBXmm65+IakPoF3nQ0ICIrDyFolznUB6e51AEa0ZGdpZa1jiT5fugR1gZgFPPJGcwWlSadZJA==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-1.0.0.tgz",
|
||||
"integrity": "sha512-yQIMvVjSMs4ZQHffT2nBgXiqVHKOwIgd6xC0o5XkcbXxyspxjRGpHyiAp/WKEdKsUeXwjVuL8b+6lhAYByd+lw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@astrojs/micromark-extension-mdx-jsx": "^1.0.3",
|
||||
"@astrojs/prism": "^0.7.0",
|
||||
"@astrojs/prism": "^1.0.0",
|
||||
"acorn": "^8.7.1",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"github-slugger": "^1.4.0",
|
||||
@ -9402,12 +9412,12 @@
|
||||
}
|
||||
},
|
||||
"@astrojs/mdx": {
|
||||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.8.0.tgz",
|
||||
"integrity": "sha512-KM5O7nnAxADoDuTRSVQTQ6xBYo8a4ZMEAADOdf9yWWTrNHLC97IN0bBAKRLKDVRpI5dBCpEvBmwwXcDHel5pBQ==",
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.9.0.tgz",
|
||||
"integrity": "sha512-Z6W7YvCc36BenJZGkcG0oFi01OswR6KhUDWXL06prhgu51YSlKrpcvpykruGXaDQb1YkqGi3yxmWAmQwzgx6pQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@astrojs/prism": "^0.7.0",
|
||||
"@astrojs/prism": "^1.0.1",
|
||||
"@mdx-js/mdx": "^2.1.2",
|
||||
"@mdx-js/rollup": "^2.1.1",
|
||||
"acorn": "^8.8.0",
|
||||
@ -9442,27 +9452,27 @@
|
||||
}
|
||||
},
|
||||
"@astrojs/prism": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-0.7.0.tgz",
|
||||
"integrity": "sha512-5gh4BL9BlgCKBru0crQI3Y7GQCCC389wLBy+0yPnfss/pA0rVgCupRnGcs3oinsRopymOlNblEDfJXdTbCWEtg==",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-1.0.1.tgz",
|
||||
"integrity": "sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prismjs": "^1.28.0"
|
||||
}
|
||||
},
|
||||
"@astrojs/solid-js": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-0.4.1.tgz",
|
||||
"integrity": "sha512-z97yq6d//XwPNeSa/btY4/vEv6EMgYh4vkK8M0/UQ8xB6oHgQ14HDurWiqKdTQ0omsNmawfinnSLxwp6i3zRuw==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-1.0.0.tgz",
|
||||
"integrity": "sha512-OEshIFX7itx8mzh3vFQgsWjzzcCYJegjY6aIoO0w2W34MP+iwEYvUwuyd6tXsDRPzTEDoCVDJDLHw/uZoNB18w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babel-preset-solid": "^1.4.2"
|
||||
}
|
||||
},
|
||||
"@astrojs/telemetry": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-0.4.1.tgz",
|
||||
"integrity": "sha512-xssM9IxVQGQHPNfzNlmbaQyevnD5CjSFNEszdYEoJRgsN0yzkxjgGzzVZ4Toq+7gwM5oSO2/oxNWVbP9loHEKg==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-1.0.0.tgz",
|
||||
"integrity": "sha512-a8edSHK2CpWrGubLp2RR2D/uC9Paa614hQM/lS4In2lhmcCjaQA9ZyYT6l44peuDwUNt1V82DqXk3TFiDBWM8g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ci-info": "^3.3.1",
|
||||
@ -9476,12 +9486,12 @@
|
||||
}
|
||||
},
|
||||
"@astrojs/webapi": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-0.12.0.tgz",
|
||||
"integrity": "sha512-rie5SYbvXVykKYBsNFnkUtDe7/0mGmrvj7Gg5pOKV34Cg/CrCJbvUSwH2oyCG2OLGtN2ttUOLvSgnVq3eipCsQ==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-1.0.0.tgz",
|
||||
"integrity": "sha512-+klQ75oQbRdAMEbvAgrKE14hxh6GVHsQWZE4j/eJ2qhnvMSu7pw13MVQtFaAV96+pUkcYSjwWd1k+Oxoxkuo3g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"node-fetch": "^3.2.4"
|
||||
"node-fetch": "^3.2.5"
|
||||
}
|
||||
},
|
||||
"@babel/code-frame": {
|
||||
@ -10448,16 +10458,16 @@
|
||||
"dev": true
|
||||
},
|
||||
"astro": {
|
||||
"version": "1.0.0-rc.8",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.0-rc.8.tgz",
|
||||
"integrity": "sha512-8j9Ka4Rgp5K6RmCy5Yagu/tBRDWZHZUQmAnjH99/eX9aWDIIlMxqcK0V6KM2JMi2IEdTQpnsFc8gg1Bxu8LoIA==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.4.tgz",
|
||||
"integrity": "sha512-wNXmDSHnhiFcEeMy2VWMJV1i8mPx8Lu4qLBfZSmP9nWrc/oxgBZfDQTWOj0/NFu+MkfZ2JEGJlL9RZFmHrKlew==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@astrojs/compiler": "^0.23.1",
|
||||
"@astrojs/compiler": "^0.23.3",
|
||||
"@astrojs/language-server": "^0.20.0",
|
||||
"@astrojs/markdown-remark": "^0.14.1",
|
||||
"@astrojs/telemetry": "^0.4.1",
|
||||
"@astrojs/webapi": "^0.12.0",
|
||||
"@astrojs/markdown-remark": "^1.0.0",
|
||||
"@astrojs/telemetry": "^1.0.0",
|
||||
"@astrojs/webapi": "^1.0.0",
|
||||
"@babel/core": "^7.18.2",
|
||||
"@babel/generator": "^7.18.2",
|
||||
"@babel/parser": "^7.18.4",
|
||||
@ -10505,15 +10515,15 @@
|
||||
"tsconfig-resolver": "^3.0.1",
|
||||
"unist-util-visit": "^4.1.0",
|
||||
"vfile": "^5.3.2",
|
||||
"vite": "3.0.4",
|
||||
"vite": "3.0.5",
|
||||
"yargs-parser": "^21.0.1",
|
||||
"zod": "^3.17.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": {
|
||||
"version": "0.23.1",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.1.tgz",
|
||||
"integrity": "sha512-KsoDrASGwTKZoWXbjy8SlIeoDv7y1OfBJtHVLuPuzhConA8e0SZpGzFqIuVRfG4bhisSTptZLDQZ7oxwgPv2jA==",
|
||||
"version": "0.23.3",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.3.tgz",
|
||||
"integrity": "sha512-eBWo0d3DoRDeg2Di1/5YJtOXh5eGFSjJMp1wVoVfoITHR4egdUGgsrDHZTzj0a25M/S9W5S6SpXCyNWcqi8jOA==",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
@ -10528,12 +10538,13 @@
|
||||
}
|
||||
},
|
||||
"astro-compress": {
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.15.tgz",
|
||||
"integrity": "sha512-hkqTieat8UeJvK8Nrz0yHtlXlMOwFguz+3DKWCnxUmw2pfkWoBzl36OsrGiEuZk2IK1UtJ+1XVFpZ2H67YxLtA==",
|
||||
"version": "0.0.18",
|
||||
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.18.tgz",
|
||||
"integrity": "sha512-6AaT8vlJkXYyImIQ70+bCkPTPfgSfvw3T+S9AOlSv65GFf1pZBuhO5nRuCg2jtEVBw4Eo/T4qC9khYbd6cVsWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"csso": "5.0.4",
|
||||
"csso": "5.0.5",
|
||||
"deepmerge-ts": "4.2.1",
|
||||
"fast-glob": "3.2.11",
|
||||
"html-minifier-terser": "6.1.0",
|
||||
"sharp": "0.30.7",
|
||||
@ -11017,12 +11028,12 @@
|
||||
}
|
||||
},
|
||||
"css-tree": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz",
|
||||
"integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz",
|
||||
"integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mdn-data": "2.0.23",
|
||||
"mdn-data": "2.0.28",
|
||||
"source-map-js": "^1.0.1"
|
||||
}
|
||||
},
|
||||
@ -11033,12 +11044,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"csso": {
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.4.tgz",
|
||||
"integrity": "sha512-AxnuDS5yBhDT5TQMdNS+6o2OdWTKC8ioi7C+G5a30Zgo8XMAQSuMItktj/jvqh8QWOH85kDf0/S6mH1DMgyq1Q==",
|
||||
"version": "5.0.5",
|
||||
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
|
||||
"integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"css-tree": "~2.0.4"
|
||||
"css-tree": "~2.2.0"
|
||||
}
|
||||
},
|
||||
"data-uri-to-buffer": {
|
||||
@ -11092,6 +11103,12 @@
|
||||
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
|
||||
"dev": true
|
||||
},
|
||||
"deepmerge-ts": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.1.tgz",
|
||||
"integrity": "sha512-xzJLiUo4z1dD2nggSfaMvHo5qWLoy/JVa9rKuktC6FrQQEBI8Qnj7KwuCYZhqBoGOOpGqs6+3MR2ZhSMcTr4BA==",
|
||||
"dev": true
|
||||
},
|
||||
"defaults": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
|
||||
@ -13312,9 +13329,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"mdn-data": {
|
||||
"version": "2.0.23",
|
||||
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz",
|
||||
"integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==",
|
||||
"version": "2.0.28",
|
||||
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
|
||||
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
|
||||
"dev": true
|
||||
},
|
||||
"mdurl": {
|
||||
@ -14329,9 +14346,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"prettier-plugin-astro": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.4.1.tgz",
|
||||
"integrity": "sha512-AvYyg4WDnhmqH5S85EFgJAMU20p1lLypVt4sn4tuGW+lnPfWr70SaHZD9gevx20o3FnALgZxDu1enFSkN/MSwQ==",
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.5.0.tgz",
|
||||
"integrity": "sha512-wBDZs0hlPWQDc7P7VmGe8pImci6F434Wd/otfLJwvCSXRb9J7AhmAigXhm5WPgCJuBA509Ovo/Ed+LAgZy4KWg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@astrojs/compiler": "^0.19.0",
|
||||
@ -14871,9 +14888,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"sass": {
|
||||
"version": "1.54.3",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz",
|
||||
"integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==",
|
||||
"version": "1.54.4",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
|
||||
"integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chokidar": ">=3.0.0 <4.0.0",
|
||||
@ -15725,14 +15742,14 @@
|
||||
}
|
||||
},
|
||||
"vite": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz",
|
||||
"integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==",
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
|
||||
"integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esbuild": "^0.14.47",
|
||||
"fsevents": "~2.3.2",
|
||||
"postcss": "^8.4.14",
|
||||
"postcss": "^8.4.16",
|
||||
"resolve": "^1.22.1",
|
||||
"rollup": "^2.75.6"
|
||||
}
|
||||
|
||||
15
package.json
15
package.json
@ -8,6 +8,7 @@
|
||||
"email": "serzh.yarkov@gmail.com",
|
||||
"url": "https://yarkov.tech"
|
||||
},
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "astro dev --host",
|
||||
@ -18,14 +19,14 @@
|
||||
"lint": "eslint '**/*.{js,mjs,ts,tsx}'"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/image": "^0.3.2",
|
||||
"@astrojs/mdx": "^0.8.0",
|
||||
"@astrojs/solid-js": "^0.4.1",
|
||||
"@astrojs/image": "^0.3.4",
|
||||
"@astrojs/mdx": "^0.9.0",
|
||||
"@astrojs/solid-js": "^1.0.0",
|
||||
"@types/mdx": "^2.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
||||
"@typescript-eslint/parser": "^5.33.0",
|
||||
"astro": "^1.0.0-rc.8",
|
||||
"astro-compress": "^0.0.15",
|
||||
"astro": "^1.0.4",
|
||||
"astro-compress": "^0.0.18",
|
||||
"astro-icon": "^0.7.3",
|
||||
"eslint": "^8.21.0",
|
||||
"eslint-plugin-solid": "^0.7.1",
|
||||
@ -33,12 +34,12 @@
|
||||
"hastscript": "^7.0.2",
|
||||
"html-escaper": "^3.0.3",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-astro": "^0.4.1",
|
||||
"prettier-plugin-astro": "^0.5.0",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-slug": "^5.0.1",
|
||||
"remark-gfm": "^3.0.1",
|
||||
"remark-smartypants": "^2.0.0",
|
||||
"sass": "^1.54.3",
|
||||
"sass": "^1.54.4",
|
||||
"solid-js": "^1.4.8"
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,13 +84,6 @@
|
||||
margin: 0.7rem 0;
|
||||
}
|
||||
|
||||
& img {
|
||||
display: block;
|
||||
border-radius: var(--border-radius-md);
|
||||
max-width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
& .table-wrapper {
|
||||
overflow-x: auto;
|
||||
margin-bottom: 1.25rem;
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
---
|
||||
import { DateFormatter } from "@root/utils";
|
||||
import { Image, Picture } from '@astrojs/image/components'
|
||||
import { Image } from "@astrojs/image/components";
|
||||
import "./ArticlePost.scss";
|
||||
|
||||
export type Props = {
|
||||
data: ArticleType;
|
||||
}
|
||||
};
|
||||
|
||||
const { data } = Astro.props as Props;
|
||||
const { title, tags, author, published_at } = data;
|
||||
@ -15,11 +15,13 @@ const { title, tags, author, published_at } = data;
|
||||
<header>
|
||||
<div class="tags">
|
||||
<ul>
|
||||
{tags.map((tag) => (
|
||||
{
|
||||
tags.map((tag) => (
|
||||
<li>
|
||||
<a href={`/articles?tags=${tag.toLocaleLowerCase()}`}>{`${tag}${tags.at(-1) === tag ? "" : ","}`}</a>
|
||||
</li>
|
||||
))}
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="heading">
|
||||
@ -29,11 +31,15 @@ const { title, tags, author, published_at } = data;
|
||||
<time datetime={published_at}>{DateFormatter.format(new Date(published_at))}</time>
|
||||
<span>{author}</span>
|
||||
</div>
|
||||
{data.coverImage && <div>
|
||||
{
|
||||
data.coverImage && (
|
||||
<div>
|
||||
<figure>
|
||||
<Image src={data.coverImage} width={700} height={400} aspectRatio={'16:9'} format={'webp'} alt={data.title} />
|
||||
<Image src={data.coverImage} width={700} height={400} aspectRatio={"16:9"} format={"webp"} alt={data.title} />
|
||||
</figure>
|
||||
</div>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
</header>
|
||||
<slot />
|
||||
<footer>
|
||||
|
||||
@ -29,9 +29,7 @@
|
||||
margin-bottom: 1.25em;
|
||||
color: var(--font-color-gray);
|
||||
}
|
||||
|
||||
& figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& img {
|
||||
border-radius: var(--border-radius-md);
|
||||
@ -40,7 +38,9 @@
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
& figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& footer {
|
||||
|
||||
@ -16,13 +16,9 @@ const { title = SITE_METADATA.title, description } = Astro.props as Props;
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>
|
||||
{title}
|
||||
</title>
|
||||
<title>{title}</title>
|
||||
<meta name="title" content={title} />
|
||||
<meta name="description" content={description || SITE_METADATA.description} />
|
||||
<meta name="theme-color" content={SITE_METADATA.themeColor} />
|
||||
<script is:inline src="/assets/js/detect-theme.js">
|
||||
|
||||
</script>
|
||||
<script is:inline src="/assets/js/detect-theme.js"></script>
|
||||
<slot />
|
||||
|
||||
@ -17,13 +17,15 @@ const { pathname } = Astro.url;
|
||||
</div>
|
||||
<nav class="header__nav">
|
||||
<ul class="header__nav-links">
|
||||
{nav.map((link) => (
|
||||
{
|
||||
nav.map((link) => (
|
||||
<li>
|
||||
<a class={removeSlashes(pathname) === removeSlashes(link.url) && "active"} href={link.url}>
|
||||
{link.name}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
<div class="header__nav-contacts">
|
||||
<a href={"mailto:" + contacts.email}>
|
||||
|
||||
@ -73,7 +73,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
body[data-is-mobile-open='true'] {
|
||||
body[data-is-mobile-open="true"] {
|
||||
& .header {
|
||||
padding: 15px 0;
|
||||
background-color: var(--background-header-color);
|
||||
|
||||
14
src/components/RecentArticles/EmptyList.astro
Normal file
14
src/components/RecentArticles/EmptyList.astro
Normal file
@ -0,0 +1,14 @@
|
||||
<div>
|
||||
<p>Пока что здесь ничего нет...</p>
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
div {
|
||||
text-align: center;
|
||||
margin: 2.5rem 0;
|
||||
& p {
|
||||
color: var(--font-color-gray);
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
import "./RecentArticles.scss";
|
||||
import { ArticleItem } from "@components/ArticleItem";
|
||||
import { sortArtcilesByDate } from "@utils/articles";
|
||||
import EmptyList from "./EmptyList.astro";
|
||||
|
||||
export interface Props {
|
||||
articles: ArticleType[];
|
||||
@ -11,21 +11,40 @@ export interface Props {
|
||||
const { articles, length = 5 } = Astro.props as Props;
|
||||
|
||||
const recent = sortArtcilesByDate(articles);
|
||||
const isEmpty = recent.length === 0;
|
||||
---
|
||||
|
||||
<section class="recent">
|
||||
<div class="recent-heading">
|
||||
<section>
|
||||
<div>
|
||||
<h2>недавние публикации</h2>
|
||||
<a href="/articles">смотреть все</a>
|
||||
</div>
|
||||
|
||||
<div class="recent-list">
|
||||
{recent.length !== 0 ? (
|
||||
recent.slice(0, length).map((article) => <ArticleItem data={article} />)
|
||||
) : (
|
||||
<div style="text-align: center;margin:2.5rem 0;">
|
||||
<p style="color:var(--font-color-gray);user-select: none;">Пока что здесь ничего нет...</p>
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
{!isEmpty ? recent.slice(0, length).map((article) => <ArticleItem data={article} />) : <EmptyList />}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<style lang="scss">
|
||||
section {
|
||||
& > div:nth-child(1) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 15px;
|
||||
row-gap: 5px;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
padding-bottom: 10px;
|
||||
|
||||
& h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
& > div:nth-child(2) {
|
||||
margin-top: 10px;
|
||||
max-width: calc(var(--content-width) + (var(--content-padding) * 2));
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
.recent {
|
||||
&-heading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 15px;
|
||||
row-gap: 5px;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
padding-bottom: 10px;
|
||||
|
||||
& h2 {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&-list {
|
||||
margin-top: 10px;
|
||||
max-width: calc(var(--content-width) + (var(--content-padding) * 2));
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,5 @@
|
||||
---
|
||||
import { Icon } from 'astro-icon';
|
||||
import './Link.scss';
|
||||
import { Icon } from "astro-icon";
|
||||
|
||||
export interface Props {
|
||||
icon: string;
|
||||
@ -10,9 +9,21 @@ export interface Props {
|
||||
const { icon, href } = Astro.props as Props;
|
||||
---
|
||||
|
||||
<div class='splash-link'>
|
||||
<Icon name={icon} width='18' height='18' />
|
||||
<div>
|
||||
<Icon name={icon} width="18" height="18" />
|
||||
<a href={href}>
|
||||
<slot></slot>
|
||||
<slot />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 5px;
|
||||
|
||||
& a {
|
||||
color: var(--font-color-gray);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
.splash-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 5px;
|
||||
|
||||
& a {
|
||||
color: var(--font-color-gray);
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,10 @@
|
||||
---
|
||||
import "./Splash.scss";
|
||||
---
|
||||
|
||||
<section class="splash">
|
||||
<section>
|
||||
<slot />
|
||||
</section>
|
||||
|
||||
<style lang="scss">
|
||||
section {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 150px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
.splash {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 150px;
|
||||
}
|
||||
@ -1,7 +1,34 @@
|
||||
---
|
||||
import "./SplashHeading.scss";
|
||||
---
|
||||
|
||||
<header class="splash-heading">
|
||||
<header>
|
||||
<slot />
|
||||
</header>
|
||||
|
||||
<style lang="scss">
|
||||
header {
|
||||
& :global(p) {
|
||||
font-size: var(--font-size-lg);
|
||||
max-width: 570px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
& :global(hgroup) {
|
||||
& :global(h1) {
|
||||
font-size: var(--font-size-5xl);
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
& :global(h2) {
|
||||
font-size: var(--font-size-xl);
|
||||
margin-bottom: 1.25rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 560px) {
|
||||
.splash-heading hgroup h1 {
|
||||
font-size: var(--font-size-4xl);
|
||||
margin-bottom: 0.85rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
.splash-heading {
|
||||
& hgroup {
|
||||
& h1 {
|
||||
font-size: var(--font-size-5xl);
|
||||
font-weight: bold;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
& h2 {
|
||||
font-size: var(--font-size-xl);
|
||||
margin-bottom: 1.25rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
& p {
|
||||
font-size: var(--font-size-lg);
|
||||
max-width: 570px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 560px) {
|
||||
.splash-heading hgroup h1 {
|
||||
font-size: var(--font-size-4xl);
|
||||
margin-bottom: 0.85rem;
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,11 @@
|
||||
---
|
||||
import "./SplashLinks.scss";
|
||||
---
|
||||
|
||||
<nav class="splash-links">
|
||||
<nav>
|
||||
<slot />
|
||||
</nav>
|
||||
|
||||
<style>
|
||||
nav {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
.splash-links {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 20px;
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
---
|
||||
import type { MarkdownInstance } from "astro";
|
||||
import type { MDXInstance } from "astro";
|
||||
|
||||
import ArticleLayout from "@layouts/article.astro";
|
||||
|
||||
@ -13,10 +13,9 @@ export async function getStaticPaths() {
|
||||
});
|
||||
}
|
||||
|
||||
const article = Astro.props as MarkdownInstance<ArticleType>;
|
||||
const Content = article.default
|
||||
const { Content, frontmatter } = Astro.props as MDXInstance<ArticleType>;
|
||||
---
|
||||
|
||||
<ArticleLayout content={article.frontmatter}>
|
||||
<ArticleLayout content={frontmatter}>
|
||||
<Content />
|
||||
</ArticleLayout>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { MarkdownInstance } from "astro";
|
||||
import { MDXInstance } from "astro";
|
||||
|
||||
export const transformArticles = (articles: MarkdownInstance<ArticleType>[]): ArticleType[] =>
|
||||
export const transformArticles = (articles: MDXInstance<ArticleType>[]): ArticleType[] =>
|
||||
articles.map((article) => ({
|
||||
slug: article.frontmatter.slug,
|
||||
title: article.frontmatter.title,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user