refactor: fixed markdown types

This commit is contained in:
Sergey Yarkov 2022-08-14 12:39:00 +03:00
parent 643f5b133f
commit dac7b1c155
22 changed files with 316 additions and 281 deletions

View File

@ -65,6 +65,16 @@ export default defineConfig({
ssr: { ssr: {
external: ["svgo"], external: ["svgo"],
}, },
build: {
minify: "esbuild",
rollupOptions: {
output: {
entryFileNames: `[name].[hash].js`,
chunkFileNames: `chunks/[name].[hash].js`,
assetFileNames: `assets/[hash].[ext]`,
},
},
},
}, },
experimental: { experimental: {
integrations: true, integrations: true,

271
package-lock.json generated
View File

@ -9,14 +9,14 @@
"version": "0.0.1", "version": "0.0.1",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@astrojs/image": "^0.3.2", "@astrojs/image": "^0.3.4",
"@astrojs/mdx": "^0.8.0", "@astrojs/mdx": "^0.9.0",
"@astrojs/solid-js": "^0.4.1", "@astrojs/solid-js": "^1.0.0",
"@types/mdx": "^2.0.2", "@types/mdx": "^2.0.2",
"@typescript-eslint/eslint-plugin": "^5.33.0", "@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0", "@typescript-eslint/parser": "^5.33.0",
"astro": "^1.0.0-rc.8", "astro": "^1.0.4",
"astro-compress": "^0.0.15", "astro-compress": "^0.0.18",
"astro-icon": "^0.7.3", "astro-icon": "^0.7.3",
"eslint": "^8.21.0", "eslint": "^8.21.0",
"eslint-plugin-solid": "^0.7.1", "eslint-plugin-solid": "^0.7.1",
@ -24,12 +24,12 @@
"hastscript": "^7.0.2", "hastscript": "^7.0.2",
"html-escaper": "^3.0.3", "html-escaper": "^3.0.3",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-astro": "^0.4.1", "prettier-plugin-astro": "^0.5.0",
"rehype-autolink-headings": "^6.1.1", "rehype-autolink-headings": "^6.1.1",
"rehype-slug": "^5.0.1", "rehype-slug": "^5.0.1",
"remark-gfm": "^3.0.1", "remark-gfm": "^3.0.1",
"remark-smartypants": "^2.0.0", "remark-smartypants": "^2.0.0",
"sass": "^1.54.3", "sass": "^1.54.4",
"solid-js": "^1.4.8" "solid-js": "^1.4.8"
} }
}, },
@ -53,9 +53,9 @@
"dev": true "dev": true
}, },
"node_modules/@astrojs/image": { "node_modules/@astrojs/image": {
"version": "0.3.2", "version": "0.3.4",
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.4.tgz",
"integrity": "sha512-GOS2+buNjYE5Z23OJIvHxBPcODuog73eYynKoGhetV9oHr+x3fZLhgDYep8rble0oMAweQdMgllUls6OS8X0VA==", "integrity": "sha512-eggNQTRqWE2cxhJeVFYkRKKN5SMyMuHxcq/JaT6KfMEJY2ULGKiYa3ulKr3/kAIXGcU3hrOpv0U7GirMVKlhZg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"etag": "^1.8.1", "etag": "^1.8.1",
@ -101,13 +101,13 @@
} }
}, },
"node_modules/@astrojs/markdown-remark": { "node_modules/@astrojs/markdown-remark": {
"version": "0.14.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-0.14.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-1.0.0.tgz",
"integrity": "sha512-u072l5Nvb7GGMIBXmm65+IakPoF3nQ0ICIrDyFolznUB6e51AEa0ZGdpZa1jiT5fugR1gZgFPPJGcwWlSadZJA==", "integrity": "sha512-yQIMvVjSMs4ZQHffT2nBgXiqVHKOwIgd6xC0o5XkcbXxyspxjRGpHyiAp/WKEdKsUeXwjVuL8b+6lhAYByd+lw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@astrojs/micromark-extension-mdx-jsx": "^1.0.3", "@astrojs/micromark-extension-mdx-jsx": "^1.0.3",
"@astrojs/prism": "^0.7.0", "@astrojs/prism": "^1.0.0",
"acorn": "^8.7.1", "acorn": "^8.7.1",
"acorn-jsx": "^5.3.2", "acorn-jsx": "^5.3.2",
"github-slugger": "^1.4.0", "github-slugger": "^1.4.0",
@ -130,12 +130,12 @@
} }
}, },
"node_modules/@astrojs/mdx": { "node_modules/@astrojs/mdx": {
"version": "0.8.0", "version": "0.9.0",
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.8.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.9.0.tgz",
"integrity": "sha512-KM5O7nnAxADoDuTRSVQTQ6xBYo8a4ZMEAADOdf9yWWTrNHLC97IN0bBAKRLKDVRpI5dBCpEvBmwwXcDHel5pBQ==", "integrity": "sha512-Z6W7YvCc36BenJZGkcG0oFi01OswR6KhUDWXL06prhgu51YSlKrpcvpykruGXaDQb1YkqGi3yxmWAmQwzgx6pQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@astrojs/prism": "^0.7.0", "@astrojs/prism": "^1.0.1",
"@mdx-js/mdx": "^2.1.2", "@mdx-js/mdx": "^2.1.2",
"@mdx-js/rollup": "^2.1.1", "@mdx-js/rollup": "^2.1.1",
"acorn": "^8.8.0", "acorn": "^8.8.0",
@ -173,9 +173,9 @@
} }
}, },
"node_modules/@astrojs/prism": { "node_modules/@astrojs/prism": {
"version": "0.7.0", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-0.7.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-1.0.1.tgz",
"integrity": "sha512-5gh4BL9BlgCKBru0crQI3Y7GQCCC389wLBy+0yPnfss/pA0rVgCupRnGcs3oinsRopymOlNblEDfJXdTbCWEtg==", "integrity": "sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"prismjs": "^1.28.0" "prismjs": "^1.28.0"
@ -185,9 +185,9 @@
} }
}, },
"node_modules/@astrojs/solid-js": { "node_modules/@astrojs/solid-js": {
"version": "0.4.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-1.0.0.tgz",
"integrity": "sha512-z97yq6d//XwPNeSa/btY4/vEv6EMgYh4vkK8M0/UQ8xB6oHgQ14HDurWiqKdTQ0omsNmawfinnSLxwp6i3zRuw==", "integrity": "sha512-OEshIFX7itx8mzh3vFQgsWjzzcCYJegjY6aIoO0w2W34MP+iwEYvUwuyd6tXsDRPzTEDoCVDJDLHw/uZoNB18w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"babel-preset-solid": "^1.4.2" "babel-preset-solid": "^1.4.2"
@ -200,9 +200,9 @@
} }
}, },
"node_modules/@astrojs/telemetry": { "node_modules/@astrojs/telemetry": {
"version": "0.4.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-1.0.0.tgz",
"integrity": "sha512-xssM9IxVQGQHPNfzNlmbaQyevnD5CjSFNEszdYEoJRgsN0yzkxjgGzzVZ4Toq+7gwM5oSO2/oxNWVbP9loHEKg==", "integrity": "sha512-a8edSHK2CpWrGubLp2RR2D/uC9Paa614hQM/lS4In2lhmcCjaQA9ZyYT6l44peuDwUNt1V82DqXk3TFiDBWM8g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ci-info": "^3.3.1", "ci-info": "^3.3.1",
@ -219,12 +219,12 @@
} }
}, },
"node_modules/@astrojs/webapi": { "node_modules/@astrojs/webapi": {
"version": "0.12.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-0.12.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-1.0.0.tgz",
"integrity": "sha512-rie5SYbvXVykKYBsNFnkUtDe7/0mGmrvj7Gg5pOKV34Cg/CrCJbvUSwH2oyCG2OLGtN2ttUOLvSgnVq3eipCsQ==", "integrity": "sha512-+klQ75oQbRdAMEbvAgrKE14hxh6GVHsQWZE4j/eJ2qhnvMSu7pw13MVQtFaAV96+pUkcYSjwWd1k+Oxoxkuo3g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"node-fetch": "^3.2.4" "node-fetch": "^3.2.5"
} }
}, },
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
@ -1498,16 +1498,16 @@
} }
}, },
"node_modules/astro": { "node_modules/astro": {
"version": "1.0.0-rc.8", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.0-rc.8.tgz", "resolved": "https://registry.npmjs.org/astro/-/astro-1.0.4.tgz",
"integrity": "sha512-8j9Ka4Rgp5K6RmCy5Yagu/tBRDWZHZUQmAnjH99/eX9aWDIIlMxqcK0V6KM2JMi2IEdTQpnsFc8gg1Bxu8LoIA==", "integrity": "sha512-wNXmDSHnhiFcEeMy2VWMJV1i8mPx8Lu4qLBfZSmP9nWrc/oxgBZfDQTWOj0/NFu+MkfZ2JEGJlL9RZFmHrKlew==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@astrojs/compiler": "^0.23.1", "@astrojs/compiler": "^0.23.3",
"@astrojs/language-server": "^0.20.0", "@astrojs/language-server": "^0.20.0",
"@astrojs/markdown-remark": "^0.14.1", "@astrojs/markdown-remark": "^1.0.0",
"@astrojs/telemetry": "^0.4.1", "@astrojs/telemetry": "^1.0.0",
"@astrojs/webapi": "^0.12.0", "@astrojs/webapi": "^1.0.0",
"@babel/core": "^7.18.2", "@babel/core": "^7.18.2",
"@babel/generator": "^7.18.2", "@babel/generator": "^7.18.2",
"@babel/parser": "^7.18.4", "@babel/parser": "^7.18.4",
@ -1555,7 +1555,7 @@
"tsconfig-resolver": "^3.0.1", "tsconfig-resolver": "^3.0.1",
"unist-util-visit": "^4.1.0", "unist-util-visit": "^4.1.0",
"vfile": "^5.3.2", "vfile": "^5.3.2",
"vite": "3.0.4", "vite": "3.0.5",
"yargs-parser": "^21.0.1", "yargs-parser": "^21.0.1",
"zod": "^3.17.3" "zod": "^3.17.3"
}, },
@ -1568,12 +1568,13 @@
} }
}, },
"node_modules/astro-compress": { "node_modules/astro-compress": {
"version": "0.0.15", "version": "0.0.18",
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.15.tgz", "resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.18.tgz",
"integrity": "sha512-hkqTieat8UeJvK8Nrz0yHtlXlMOwFguz+3DKWCnxUmw2pfkWoBzl36OsrGiEuZk2IK1UtJ+1XVFpZ2H67YxLtA==", "integrity": "sha512-6AaT8vlJkXYyImIQ70+bCkPTPfgSfvw3T+S9AOlSv65GFf1pZBuhO5nRuCg2jtEVBw4Eo/T4qC9khYbd6cVsWA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"csso": "5.0.4", "csso": "5.0.5",
"deepmerge-ts": "4.2.1",
"fast-glob": "3.2.11", "fast-glob": "3.2.11",
"html-minifier-terser": "6.1.0", "html-minifier-terser": "6.1.0",
"sharp": "0.30.7", "sharp": "0.30.7",
@ -1593,9 +1594,9 @@
} }
}, },
"node_modules/astro/node_modules/@astrojs/compiler": { "node_modules/astro/node_modules/@astrojs/compiler": {
"version": "0.23.1", "version": "0.23.3",
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.3.tgz",
"integrity": "sha512-KsoDrASGwTKZoWXbjy8SlIeoDv7y1OfBJtHVLuPuzhConA8e0SZpGzFqIuVRfG4bhisSTptZLDQZ7oxwgPv2jA==", "integrity": "sha512-eBWo0d3DoRDeg2Di1/5YJtOXh5eGFSjJMp1wVoVfoITHR4egdUGgsrDHZTzj0a25M/S9W5S6SpXCyNWcqi8jOA==",
"dev": true "dev": true
}, },
"node_modules/astro/node_modules/semver": { "node_modules/astro/node_modules/semver": {
@ -2263,12 +2264,12 @@
} }
}, },
"node_modules/css-tree": { "node_modules/css-tree": {
"version": "2.0.4", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz",
"integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", "integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"mdn-data": "2.0.23", "mdn-data": "2.0.28",
"source-map-js": "^1.0.1" "source-map-js": "^1.0.1"
}, },
"engines": { "engines": {
@ -2289,12 +2290,12 @@
} }
}, },
"node_modules/csso": { "node_modules/csso": {
"version": "5.0.4", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.4.tgz", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
"integrity": "sha512-AxnuDS5yBhDT5TQMdNS+6o2OdWTKC8ioi7C+G5a30Zgo8XMAQSuMItktj/jvqh8QWOH85kDf0/S6mH1DMgyq1Q==", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"css-tree": "~2.0.4" "css-tree": "~2.2.0"
}, },
"engines": { "engines": {
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
@ -2379,6 +2380,15 @@
"node": ">=0.10.0" "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": { "node_modules/defaults": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@ -5513,9 +5523,9 @@
} }
}, },
"node_modules/mdn-data": { "node_modules/mdn-data": {
"version": "2.0.23", "version": "2.0.28",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
"integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
"dev": true "dev": true
}, },
"node_modules/mdurl": { "node_modules/mdurl": {
@ -7064,9 +7074,9 @@
} }
}, },
"node_modules/prettier-plugin-astro": { "node_modules/prettier-plugin-astro": {
"version": "0.4.1", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.4.1.tgz", "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.5.0.tgz",
"integrity": "sha512-AvYyg4WDnhmqH5S85EFgJAMU20p1lLypVt4sn4tuGW+lnPfWr70SaHZD9gevx20o3FnALgZxDu1enFSkN/MSwQ==", "integrity": "sha512-wBDZs0hlPWQDc7P7VmGe8pImci6F434Wd/otfLJwvCSXRb9J7AhmAigXhm5WPgCJuBA509Ovo/Ed+LAgZy4KWg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@astrojs/compiler": "^0.19.0", "@astrojs/compiler": "^0.19.0",
@ -7803,9 +7813,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.54.3", "version": "1.54.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
"integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
@ -8988,13 +8998,13 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "3.0.4", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
"integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.14.47", "esbuild": "^0.14.47",
"postcss": "^8.4.14", "postcss": "^8.4.16",
"resolve": "^1.22.1", "resolve": "^1.22.1",
"rollup": "^2.75.6" "rollup": "^2.75.6"
}, },
@ -9333,9 +9343,9 @@
"dev": true "dev": true
}, },
"@astrojs/image": { "@astrojs/image": {
"version": "0.3.2", "version": "0.3.4",
"resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@astrojs/image/-/image-0.3.4.tgz",
"integrity": "sha512-GOS2+buNjYE5Z23OJIvHxBPcODuog73eYynKoGhetV9oHr+x3fZLhgDYep8rble0oMAweQdMgllUls6OS8X0VA==", "integrity": "sha512-eggNQTRqWE2cxhJeVFYkRKKN5SMyMuHxcq/JaT6KfMEJY2ULGKiYa3ulKr3/kAIXGcU3hrOpv0U7GirMVKlhZg==",
"dev": true, "dev": true,
"requires": { "requires": {
"etag": "^1.8.1", "etag": "^1.8.1",
@ -9373,13 +9383,13 @@
} }
}, },
"@astrojs/markdown-remark": { "@astrojs/markdown-remark": {
"version": "0.14.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-0.14.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-1.0.0.tgz",
"integrity": "sha512-u072l5Nvb7GGMIBXmm65+IakPoF3nQ0ICIrDyFolznUB6e51AEa0ZGdpZa1jiT5fugR1gZgFPPJGcwWlSadZJA==", "integrity": "sha512-yQIMvVjSMs4ZQHffT2nBgXiqVHKOwIgd6xC0o5XkcbXxyspxjRGpHyiAp/WKEdKsUeXwjVuL8b+6lhAYByd+lw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@astrojs/micromark-extension-mdx-jsx": "^1.0.3", "@astrojs/micromark-extension-mdx-jsx": "^1.0.3",
"@astrojs/prism": "^0.7.0", "@astrojs/prism": "^1.0.0",
"acorn": "^8.7.1", "acorn": "^8.7.1",
"acorn-jsx": "^5.3.2", "acorn-jsx": "^5.3.2",
"github-slugger": "^1.4.0", "github-slugger": "^1.4.0",
@ -9402,12 +9412,12 @@
} }
}, },
"@astrojs/mdx": { "@astrojs/mdx": {
"version": "0.8.0", "version": "0.9.0",
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.8.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.9.0.tgz",
"integrity": "sha512-KM5O7nnAxADoDuTRSVQTQ6xBYo8a4ZMEAADOdf9yWWTrNHLC97IN0bBAKRLKDVRpI5dBCpEvBmwwXcDHel5pBQ==", "integrity": "sha512-Z6W7YvCc36BenJZGkcG0oFi01OswR6KhUDWXL06prhgu51YSlKrpcvpykruGXaDQb1YkqGi3yxmWAmQwzgx6pQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@astrojs/prism": "^0.7.0", "@astrojs/prism": "^1.0.1",
"@mdx-js/mdx": "^2.1.2", "@mdx-js/mdx": "^2.1.2",
"@mdx-js/rollup": "^2.1.1", "@mdx-js/rollup": "^2.1.1",
"acorn": "^8.8.0", "acorn": "^8.8.0",
@ -9442,27 +9452,27 @@
} }
}, },
"@astrojs/prism": { "@astrojs/prism": {
"version": "0.7.0", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-0.7.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-1.0.1.tgz",
"integrity": "sha512-5gh4BL9BlgCKBru0crQI3Y7GQCCC389wLBy+0yPnfss/pA0rVgCupRnGcs3oinsRopymOlNblEDfJXdTbCWEtg==", "integrity": "sha512-HxEFslvbv+cfOs51q/C7aMVFuW3EAGg0d1xXU/0e/QeScDzfrp5Ra4SOb8mV082SgENVjtVvet4zR84t3at4VQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"prismjs": "^1.28.0" "prismjs": "^1.28.0"
} }
}, },
"@astrojs/solid-js": { "@astrojs/solid-js": {
"version": "0.4.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-1.0.0.tgz",
"integrity": "sha512-z97yq6d//XwPNeSa/btY4/vEv6EMgYh4vkK8M0/UQ8xB6oHgQ14HDurWiqKdTQ0omsNmawfinnSLxwp6i3zRuw==", "integrity": "sha512-OEshIFX7itx8mzh3vFQgsWjzzcCYJegjY6aIoO0w2W34MP+iwEYvUwuyd6tXsDRPzTEDoCVDJDLHw/uZoNB18w==",
"dev": true, "dev": true,
"requires": { "requires": {
"babel-preset-solid": "^1.4.2" "babel-preset-solid": "^1.4.2"
} }
}, },
"@astrojs/telemetry": { "@astrojs/telemetry": {
"version": "0.4.1", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-1.0.0.tgz",
"integrity": "sha512-xssM9IxVQGQHPNfzNlmbaQyevnD5CjSFNEszdYEoJRgsN0yzkxjgGzzVZ4Toq+7gwM5oSO2/oxNWVbP9loHEKg==", "integrity": "sha512-a8edSHK2CpWrGubLp2RR2D/uC9Paa614hQM/lS4In2lhmcCjaQA9ZyYT6l44peuDwUNt1V82DqXk3TFiDBWM8g==",
"dev": true, "dev": true,
"requires": { "requires": {
"ci-info": "^3.3.1", "ci-info": "^3.3.1",
@ -9476,12 +9486,12 @@
} }
}, },
"@astrojs/webapi": { "@astrojs/webapi": {
"version": "0.12.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-0.12.0.tgz", "resolved": "https://registry.npmjs.org/@astrojs/webapi/-/webapi-1.0.0.tgz",
"integrity": "sha512-rie5SYbvXVykKYBsNFnkUtDe7/0mGmrvj7Gg5pOKV34Cg/CrCJbvUSwH2oyCG2OLGtN2ttUOLvSgnVq3eipCsQ==", "integrity": "sha512-+klQ75oQbRdAMEbvAgrKE14hxh6GVHsQWZE4j/eJ2qhnvMSu7pw13MVQtFaAV96+pUkcYSjwWd1k+Oxoxkuo3g==",
"dev": true, "dev": true,
"requires": { "requires": {
"node-fetch": "^3.2.4" "node-fetch": "^3.2.5"
} }
}, },
"@babel/code-frame": { "@babel/code-frame": {
@ -10448,16 +10458,16 @@
"dev": true "dev": true
}, },
"astro": { "astro": {
"version": "1.0.0-rc.8", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/astro/-/astro-1.0.0-rc.8.tgz", "resolved": "https://registry.npmjs.org/astro/-/astro-1.0.4.tgz",
"integrity": "sha512-8j9Ka4Rgp5K6RmCy5Yagu/tBRDWZHZUQmAnjH99/eX9aWDIIlMxqcK0V6KM2JMi2IEdTQpnsFc8gg1Bxu8LoIA==", "integrity": "sha512-wNXmDSHnhiFcEeMy2VWMJV1i8mPx8Lu4qLBfZSmP9nWrc/oxgBZfDQTWOj0/NFu+MkfZ2JEGJlL9RZFmHrKlew==",
"dev": true, "dev": true,
"requires": { "requires": {
"@astrojs/compiler": "^0.23.1", "@astrojs/compiler": "^0.23.3",
"@astrojs/language-server": "^0.20.0", "@astrojs/language-server": "^0.20.0",
"@astrojs/markdown-remark": "^0.14.1", "@astrojs/markdown-remark": "^1.0.0",
"@astrojs/telemetry": "^0.4.1", "@astrojs/telemetry": "^1.0.0",
"@astrojs/webapi": "^0.12.0", "@astrojs/webapi": "^1.0.0",
"@babel/core": "^7.18.2", "@babel/core": "^7.18.2",
"@babel/generator": "^7.18.2", "@babel/generator": "^7.18.2",
"@babel/parser": "^7.18.4", "@babel/parser": "^7.18.4",
@ -10505,15 +10515,15 @@
"tsconfig-resolver": "^3.0.1", "tsconfig-resolver": "^3.0.1",
"unist-util-visit": "^4.1.0", "unist-util-visit": "^4.1.0",
"vfile": "^5.3.2", "vfile": "^5.3.2",
"vite": "3.0.4", "vite": "3.0.5",
"yargs-parser": "^21.0.1", "yargs-parser": "^21.0.1",
"zod": "^3.17.3" "zod": "^3.17.3"
}, },
"dependencies": { "dependencies": {
"@astrojs/compiler": { "@astrojs/compiler": {
"version": "0.23.1", "version": "0.23.3",
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.1.tgz", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-0.23.3.tgz",
"integrity": "sha512-KsoDrASGwTKZoWXbjy8SlIeoDv7y1OfBJtHVLuPuzhConA8e0SZpGzFqIuVRfG4bhisSTptZLDQZ7oxwgPv2jA==", "integrity": "sha512-eBWo0d3DoRDeg2Di1/5YJtOXh5eGFSjJMp1wVoVfoITHR4egdUGgsrDHZTzj0a25M/S9W5S6SpXCyNWcqi8jOA==",
"dev": true "dev": true
}, },
"semver": { "semver": {
@ -10528,12 +10538,13 @@
} }
}, },
"astro-compress": { "astro-compress": {
"version": "0.0.15", "version": "0.0.18",
"resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.15.tgz", "resolved": "https://registry.npmjs.org/astro-compress/-/astro-compress-0.0.18.tgz",
"integrity": "sha512-hkqTieat8UeJvK8Nrz0yHtlXlMOwFguz+3DKWCnxUmw2pfkWoBzl36OsrGiEuZk2IK1UtJ+1XVFpZ2H67YxLtA==", "integrity": "sha512-6AaT8vlJkXYyImIQ70+bCkPTPfgSfvw3T+S9AOlSv65GFf1pZBuhO5nRuCg2jtEVBw4Eo/T4qC9khYbd6cVsWA==",
"dev": true, "dev": true,
"requires": { "requires": {
"csso": "5.0.4", "csso": "5.0.5",
"deepmerge-ts": "4.2.1",
"fast-glob": "3.2.11", "fast-glob": "3.2.11",
"html-minifier-terser": "6.1.0", "html-minifier-terser": "6.1.0",
"sharp": "0.30.7", "sharp": "0.30.7",
@ -11017,12 +11028,12 @@
} }
}, },
"css-tree": { "css-tree": {
"version": "2.0.4", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.0.4.tgz", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.0.tgz",
"integrity": "sha512-b4IS9ZUMtGBiNjzYbcj9JhYbyei99R3ai2CSxlu8GQDnoPA/P+NU85hAm0eKDc/Zp660rpK6tFJQ2OSdacMHVg==", "integrity": "sha512-7y32czN0VBL8WkevhC/mrHnoHOmQaJ1Wvp8sjRuTz6/n9cjL83jQaUru2MvP7kzjpGVwrSy5CE4XyQObWGIHQQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"mdn-data": "2.0.23", "mdn-data": "2.0.28",
"source-map-js": "^1.0.1" "source-map-js": "^1.0.1"
} }
}, },
@ -11033,12 +11044,12 @@
"dev": true "dev": true
}, },
"csso": { "csso": {
"version": "5.0.4", "version": "5.0.5",
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.4.tgz", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
"integrity": "sha512-AxnuDS5yBhDT5TQMdNS+6o2OdWTKC8ioi7C+G5a30Zgo8XMAQSuMItktj/jvqh8QWOH85kDf0/S6mH1DMgyq1Q==", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"css-tree": "~2.0.4" "css-tree": "~2.2.0"
} }
}, },
"data-uri-to-buffer": { "data-uri-to-buffer": {
@ -11092,6 +11103,12 @@
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
"dev": true "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": { "defaults": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@ -13312,9 +13329,9 @@
"dev": true "dev": true
}, },
"mdn-data": { "mdn-data": {
"version": "2.0.23", "version": "2.0.28",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.23.tgz", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
"integrity": "sha512-IonVb7pfla2U4zW8rc7XGrtgq11BvYeCxWN8HS+KFBnLDE7XDK9AAMVhRuG6fj9BBsjc69Fqsp6WEActEdNTDQ==", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
"dev": true "dev": true
}, },
"mdurl": { "mdurl": {
@ -14329,9 +14346,9 @@
"dev": true "dev": true
}, },
"prettier-plugin-astro": { "prettier-plugin-astro": {
"version": "0.4.1", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.4.1.tgz", "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.5.0.tgz",
"integrity": "sha512-AvYyg4WDnhmqH5S85EFgJAMU20p1lLypVt4sn4tuGW+lnPfWr70SaHZD9gevx20o3FnALgZxDu1enFSkN/MSwQ==", "integrity": "sha512-wBDZs0hlPWQDc7P7VmGe8pImci6F434Wd/otfLJwvCSXRb9J7AhmAigXhm5WPgCJuBA509Ovo/Ed+LAgZy4KWg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@astrojs/compiler": "^0.19.0", "@astrojs/compiler": "^0.19.0",
@ -14871,9 +14888,9 @@
"dev": true "dev": true
}, },
"sass": { "sass": {
"version": "1.54.3", "version": "1.54.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz",
"integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
@ -15725,14 +15742,14 @@
} }
}, },
"vite": { "vite": {
"version": "3.0.4", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
"integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
"dev": true, "dev": true,
"requires": { "requires": {
"esbuild": "^0.14.47", "esbuild": "^0.14.47",
"fsevents": "~2.3.2", "fsevents": "~2.3.2",
"postcss": "^8.4.14", "postcss": "^8.4.16",
"resolve": "^1.22.1", "resolve": "^1.22.1",
"rollup": "^2.75.6" "rollup": "^2.75.6"
} }

View File

@ -8,6 +8,7 @@
"email": "serzh.yarkov@gmail.com", "email": "serzh.yarkov@gmail.com",
"url": "https://yarkov.tech" "url": "https://yarkov.tech"
}, },
"type": "module",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"dev": "astro dev --host", "dev": "astro dev --host",
@ -18,14 +19,14 @@
"lint": "eslint '**/*.{js,mjs,ts,tsx}'" "lint": "eslint '**/*.{js,mjs,ts,tsx}'"
}, },
"devDependencies": { "devDependencies": {
"@astrojs/image": "^0.3.2", "@astrojs/image": "^0.3.4",
"@astrojs/mdx": "^0.8.0", "@astrojs/mdx": "^0.9.0",
"@astrojs/solid-js": "^0.4.1", "@astrojs/solid-js": "^1.0.0",
"@types/mdx": "^2.0.2", "@types/mdx": "^2.0.2",
"@typescript-eslint/eslint-plugin": "^5.33.0", "@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0", "@typescript-eslint/parser": "^5.33.0",
"astro": "^1.0.0-rc.8", "astro": "^1.0.4",
"astro-compress": "^0.0.15", "astro-compress": "^0.0.18",
"astro-icon": "^0.7.3", "astro-icon": "^0.7.3",
"eslint": "^8.21.0", "eslint": "^8.21.0",
"eslint-plugin-solid": "^0.7.1", "eslint-plugin-solid": "^0.7.1",
@ -33,12 +34,12 @@
"hastscript": "^7.0.2", "hastscript": "^7.0.2",
"html-escaper": "^3.0.3", "html-escaper": "^3.0.3",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-astro": "^0.4.1", "prettier-plugin-astro": "^0.5.0",
"rehype-autolink-headings": "^6.1.1", "rehype-autolink-headings": "^6.1.1",
"rehype-slug": "^5.0.1", "rehype-slug": "^5.0.1",
"remark-gfm": "^3.0.1", "remark-gfm": "^3.0.1",
"remark-smartypants": "^2.0.0", "remark-smartypants": "^2.0.0",
"sass": "^1.54.3", "sass": "^1.54.4",
"solid-js": "^1.4.8" "solid-js": "^1.4.8"
} }
} }

View File

@ -84,13 +84,6 @@
margin: 0.7rem 0; margin: 0.7rem 0;
} }
& img {
display: block;
border-radius: var(--border-radius-md);
max-width: 100%;
margin: 0 auto;
}
& .table-wrapper { & .table-wrapper {
overflow-x: auto; overflow-x: auto;
margin-bottom: 1.25rem; margin-bottom: 1.25rem;

View File

@ -1,11 +1,11 @@
--- ---
import { DateFormatter } from "@root/utils"; import { DateFormatter } from "@root/utils";
import { Image, Picture } from '@astrojs/image/components' import { Image } from "@astrojs/image/components";
import "./ArticlePost.scss"; import "./ArticlePost.scss";
export type Props = { export type Props = {
data: ArticleType; data: ArticleType;
} };
const { data } = Astro.props as Props; const { data } = Astro.props as Props;
const { title, tags, author, published_at } = data; const { title, tags, author, published_at } = data;
@ -15,11 +15,13 @@ const { title, tags, author, published_at } = data;
<header> <header>
<div class="tags"> <div class="tags">
<ul> <ul>
{tags.map((tag) => ( {
<li> tags.map((tag) => (
<a href={`/articles?tags=${tag.toLocaleLowerCase()}`}>{`${tag}${tags.at(-1) === tag ? "" : ","}`}</a> <li>
</li> <a href={`/articles?tags=${tag.toLocaleLowerCase()}`}>{`${tag}${tags.at(-1) === tag ? "" : ","}`}</a>
))} </li>
))
}
</ul> </ul>
</div> </div>
<div class="heading"> <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> <time datetime={published_at}>{DateFormatter.format(new Date(published_at))}</time>
<span>{author}</span> <span>{author}</span>
</div> </div>
{data.coverImage && <div> {
<figure> data.coverImage && (
<Image src={data.coverImage} width={700} height={400} aspectRatio={'16:9'} format={'webp'} alt={data.title} /> <div>
</figure> <figure>
</div>} <Image src={data.coverImage} width={700} height={400} aspectRatio={"16:9"} format={"webp"} alt={data.title} />
</figure>
</div>
)
}
</header> </header>
<slot /> <slot />
<footer> <footer>

View File

@ -29,18 +29,18 @@
margin-bottom: 1.25em; margin-bottom: 1.25em;
color: var(--font-color-gray); color: var(--font-color-gray);
} }
}
& figure { & img {
margin: 0; border-radius: var(--border-radius-md);
display: block;
margin: 0 auto;
max-width: 100%;
height: auto;
}
& img { & figure {
border-radius: var(--border-radius-md); margin: 0;
display: block;
margin: 0 auto;
max-width: 100%;
height: auto;
}
}
} }
& footer { & footer {

View File

@ -16,13 +16,9 @@ const { title = SITE_METADATA.title, description } = Astro.props as Props;
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title> <title>{title}</title>
{title}
</title>
<meta name="title" content={title} /> <meta name="title" content={title} />
<meta name="description" content={description || SITE_METADATA.description} /> <meta name="description" content={description || SITE_METADATA.description} />
<meta name="theme-color" content={SITE_METADATA.themeColor} /> <meta name="theme-color" content={SITE_METADATA.themeColor} />
<script is:inline src="/assets/js/detect-theme.js"> <script is:inline src="/assets/js/detect-theme.js"></script>
</script>
<slot /> <slot />

View File

@ -17,13 +17,15 @@ const { pathname } = Astro.url;
</div> </div>
<nav class="header__nav"> <nav class="header__nav">
<ul class="header__nav-links"> <ul class="header__nav-links">
{nav.map((link) => ( {
<li> nav.map((link) => (
<a class={removeSlashes(pathname) === removeSlashes(link.url) && "active"} href={link.url}> <li>
{link.name} <a class={removeSlashes(pathname) === removeSlashes(link.url) && "active"} href={link.url}>
</a> {link.name}
</li> </a>
))} </li>
))
}
</ul> </ul>
<div class="header__nav-contacts"> <div class="header__nav-contacts">
<a href={"mailto:" + contacts.email}> <a href={"mailto:" + contacts.email}>

View File

@ -73,7 +73,7 @@
} }
} }
body[data-is-mobile-open='true'] { body[data-is-mobile-open="true"] {
& .header { & .header {
padding: 15px 0; padding: 15px 0;
background-color: var(--background-header-color); background-color: var(--background-header-color);

View 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>

View File

@ -1,7 +1,7 @@
--- ---
import "./RecentArticles.scss";
import { ArticleItem } from "@components/ArticleItem"; import { ArticleItem } from "@components/ArticleItem";
import { sortArtcilesByDate } from "@utils/articles"; import { sortArtcilesByDate } from "@utils/articles";
import EmptyList from "./EmptyList.astro";
export interface Props { export interface Props {
articles: ArticleType[]; articles: ArticleType[];
@ -11,21 +11,40 @@ export interface Props {
const { articles, length = 5 } = Astro.props as Props; const { articles, length = 5 } = Astro.props as Props;
const recent = sortArtcilesByDate(articles); const recent = sortArtcilesByDate(articles);
const isEmpty = recent.length === 0;
--- ---
<section class="recent"> <section>
<div class="recent-heading"> <div>
<h2>недавние публикации</h2> <h2>недавние публикации</h2>
<a href="/articles">смотреть все</a> <a href="/articles">смотреть все</a>
</div> </div>
<div class="recent-list"> <div>
{recent.length !== 0 ? ( {!isEmpty ? recent.slice(0, length).map((article) => <ArticleItem data={article} />) : <EmptyList />}
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> </div>
</section> </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>

View File

@ -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));
}
}

View File

@ -1,6 +1,5 @@
--- ---
import { Icon } from 'astro-icon'; import { Icon } from "astro-icon";
import './Link.scss';
export interface Props { export interface Props {
icon: string; icon: string;
@ -10,9 +9,21 @@ export interface Props {
const { icon, href } = Astro.props as Props; const { icon, href } = Astro.props as Props;
--- ---
<div class='splash-link'> <div>
<Icon name={icon} width='18' height='18' /> <Icon name={icon} width="18" height="18" />
<a href={href}> <a href={href}>
<slot></slot> <slot />
</a> </a>
</div> </div>
<style lang="scss">
div {
display: flex;
align-items: center;
column-gap: 5px;
& a {
color: var(--font-color-gray);
}
}
</style>

View File

@ -1,9 +0,0 @@
.splash-link {
display: flex;
align-items: center;
column-gap: 5px;
& a {
color: var(--font-color-gray);
}
}

View File

@ -1,7 +1,10 @@
--- <section>
import "./Splash.scss";
---
<section class="splash">
<slot /> <slot />
</section> </section>
<style lang="scss">
section {
margin-top: 40px;
margin-bottom: 150px;
}
</style>

View File

@ -1,4 +0,0 @@
.splash {
margin-top: 40px;
margin-bottom: 150px;
}

View File

@ -1,7 +1,34 @@
--- <header>
import "./SplashHeading.scss";
---
<header class="splash-heading">
<slot /> <slot />
</header> </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>

View File

@ -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;
}
}

View File

@ -1,7 +1,11 @@
--- <nav>
import "./SplashLinks.scss";
---
<nav class="splash-links">
<slot /> <slot />
</nav> </nav>
<style>
nav {
display: flex;
align-items: center;
column-gap: 20px;
}
</style>

View File

@ -1,5 +0,0 @@
.splash-links {
display: flex;
align-items: center;
column-gap: 20px;
}

View File

@ -1,5 +1,5 @@
--- ---
import type { MarkdownInstance } from "astro"; import type { MDXInstance } from "astro";
import ArticleLayout from "@layouts/article.astro"; import ArticleLayout from "@layouts/article.astro";
@ -13,10 +13,9 @@ export async function getStaticPaths() {
}); });
} }
const article = Astro.props as MarkdownInstance<ArticleType>; const { Content, frontmatter } = Astro.props as MDXInstance<ArticleType>;
const Content = article.default
--- ---
<ArticleLayout content={article.frontmatter}> <ArticleLayout content={frontmatter}>
<Content /> <Content />
</ArticleLayout> </ArticleLayout>

View File

@ -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) => ({ articles.map((article) => ({
slug: article.frontmatter.slug, slug: article.frontmatter.slug,
title: article.frontmatter.title, title: article.frontmatter.title,