From c2ebc7804539e1c5e9b7f5813abc84c1975c7549 Mon Sep 17 00:00:00 2001 From: radishzzz Date: Thu, 6 Mar 2025 22:19:34 +0000 Subject: [PATCH] feat: add waline i18n & sync comments --- .vscode/settings.json | 8 +- package.json | 2 +- pnpm-lock.yaml | 148 +++++++++++++---------- src/components/Buttons/ThemeToggle.astro | 2 +- src/components/Comments/Waline.astro | 67 +++++----- src/components/Comments/index.astro | 0 src/components/Scrollbar.astro | 2 +- src/config.ts | 10 +- src/pages/[lang]/posts/[slug].astro | 2 + src/pages/posts/[slug].astro | 2 +- src/types/index.d.ts | 2 +- src/utils/ui.ts | 28 +++++ 12 files changed, 172 insertions(+), 101 deletions(-) create mode 100644 src/components/Comments/index.astro diff --git a/.vscode/settings.json b/.vscode/settings.json index de4a489..87004bd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,10 +60,12 @@ }, "cSpell.words": [ "antfu", + "Artículos", "astrojs", "attributify", "blurhash", "bmoji", + "Etiquetas", "Frontmatter", "Fuwriu", "GSAP", @@ -86,6 +88,7 @@ "rehype", "Retypeset", "Roundhand", + "Sobre", "srcset", "STIX", "titlebar", @@ -94,6 +97,9 @@ "unpic", "vite", "waline", - "weibo" + "weibo", + "Посты", + "себе", + "Теги" ] } diff --git a/package.json b/package.json index 8945e1e..843a594 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "vite": "^6.2.0" }, "devDependencies": { - "@antfu/eslint-config": "^4.5.1", + "@antfu/eslint-config": "^4.6.0", "@types/markdown-it": "^14.1.2", "@types/mdast": "^4.0.4", "@types/node": "^22.13.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e99dcaf..6f98ec4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: version: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.28.2)(terser@5.37.0)(yaml@2.7.0) devDependencies: '@antfu/eslint-config': - specifier: ^4.5.1 - version: 4.5.1(@typescript-eslint/utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@unocss/eslint-plugin@66.1.0-beta.3(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(astro-eslint-parser@1.2.1)(eslint-plugin-astro@1.3.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + specifier: ^4.6.0 + version: 4.6.0(@typescript-eslint/utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@unocss/eslint-plugin@66.1.0-beta.3(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(astro-eslint-parser@1.2.1)(eslint-plugin-astro@1.3.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) '@types/markdown-it': specifier: ^14.1.2 version: 14.1.2 @@ -151,8 +151,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@antfu/eslint-config@4.5.1': - resolution: {integrity: sha512-R/B0sdCELWX3LpB7oHtSiL5KWHke/7QyUCWUuag7U6GzyYJuLubmEHxXQg6/Wp8LoDX7MkvL7FdnKUUnOrcySQ==} + '@antfu/eslint-config@4.6.0': + resolution: {integrity: sha512-uLfrbSQkIJZEiDWNVYaS0KENDecRujEos9LabmRvpCuZFGDcGkfTosZel3nnKjdc/2FX3bd6SSOdiaJuAKCw+Q==} hasBin: true peerDependencies: '@eslint-react/eslint-plugin': ^1.19.0 @@ -510,8 +510,8 @@ packages: resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@6.2.2': - resolution: {integrity: sha512-U0/KgzI9BVUuHDQ9M2fuVgB0QZ1fSyzwm8jKmHr1dlsLHGHYzoeIA9yqLMdTbV3ivZfp6rTdt6zqre3TfNExUQ==} + '@eslint/markdown@6.3.0': + resolution: {integrity: sha512-8rj7wmuP5hwXZ0HWoad+WL9nftpN373bCCQz9QL6sA+clZiz7et8Pk0yDAKeo//xLlPONKQ6wCpjkOHCLkbYUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -1093,25 +1093,25 @@ packages: vitest: optional: true - '@volar/kit@2.4.11': - resolution: {integrity: sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==} + '@volar/kit@2.4.12': + resolution: {integrity: sha512-f9JE8oy9C2rBcCWxUYKUF23hOXz4mwgVXFjk7nHhxzplaoVjEOsKpBm8NI2nBH7Cwu8DRxDwBsbIxMl/8wlLxw==} peerDependencies: typescript: '*' - '@volar/language-core@2.4.11': - resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + '@volar/language-core@2.4.12': + resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} - '@volar/language-server@2.4.11': - resolution: {integrity: sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==} + '@volar/language-server@2.4.12': + resolution: {integrity: sha512-KC0YqTXCZMaImMWyAKC+dLB2BXjfz80kqesJkV6oXxJsGEQPfmdqug299idwtrT6FVSmZ7q5UrPfvgKwA0S3JA==} - '@volar/language-service@2.4.11': - resolution: {integrity: sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==} + '@volar/language-service@2.4.12': + resolution: {integrity: sha512-nifOPGYYPnCmxja6/ML/Gl2EgFkUdw4gLbYqbh8FjqX3gSpXSZl/0ebqORjKo1KW56YWHWRZd1jFutEtCiRYhA==} - '@volar/source-map@2.4.11': - resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + '@volar/source-map@2.4.12': + resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==} - '@volar/typescript@2.4.11': - resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} + '@volar/typescript@2.4.12': + resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==} '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} @@ -1755,6 +1755,11 @@ packages: peerDependencies: eslint: '>=8.0.0' + eslint-plugin-pnpm-catalogs@0.1.0: + resolution: {integrity: sha512-4FzIfTfr06U3ULStgSMSmpDsfhtxsbSAxKLvXLo+/i/z48v4+4WD0Yr5hTb6E37X/ch8isKiTl4bnnvSENTYFA==} + peerDependencies: + eslint: ^9.0.0 + eslint-plugin-regexp@2.7.0: resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} engines: {node: ^18 || >=20} @@ -2850,6 +2855,9 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + pnpm-catalogs-utils@0.1.0: + resolution: {integrity: sha512-avysWJc452htYTnae14ENYTI3fSzZ1U1xNrdSJ2kFgwDaDvdEKIM5Iu+WljP2cdr/HAKKQ1hnuvu3sQJ3Eq/zQ==} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -3761,8 +3769,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + yocto-queue@1.2.0: + resolution: {integrity: sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==} engines: {node: '>=12.20'} yocto-spinner@0.2.1: @@ -3797,12 +3805,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@4.5.1(@typescript-eslint/utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@unocss/eslint-plugin@66.1.0-beta.3(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(astro-eslint-parser@1.2.1)(eslint-plugin-astro@1.3.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': + '@antfu/eslint-config@4.6.0(@typescript-eslint/utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@unocss/eslint-plugin@66.1.0-beta.3(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(@vue/compiler-sfc@3.5.13)(astro-eslint-parser@1.2.1)(eslint-plugin-astro@1.3.1(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@antfu/install-pkg': 1.0.0 '@clack/prompts': 0.10.0 '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint/markdown': 6.2.2 + '@eslint/markdown': 6.3.0 '@stylistic/eslint-plugin': 4.2.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) '@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) '@typescript-eslint/parser': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) @@ -3821,6 +3829,7 @@ snapshots: eslint-plugin-n: 17.16.2(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-perfectionist: 4.9.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2) + eslint-plugin-pnpm-catalogs: 0.1.0(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-regexp: 2.7.0(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-toml: 0.12.0(eslint@9.21.0(jiti@2.4.2)) eslint-plugin-unicorn: 57.0.0(eslint@9.21.0(jiti@2.4.2)) @@ -3874,19 +3883,19 @@ snapshots: '@astrojs/compiler': 2.10.4 '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@volar/kit': 2.4.11(typescript@5.8.2) - '@volar/language-core': 2.4.11 - '@volar/language-server': 2.4.11 - '@volar/language-service': 2.4.11 + '@volar/kit': 2.4.12(typescript@5.8.2) + '@volar/language-core': 2.4.12 + '@volar/language-server': 2.4.12 + '@volar/language-service': 2.4.12 fast-glob: 3.3.3 muggle-string: 0.4.1 - volar-service-css: 0.0.62(@volar/language-service@2.4.11) - volar-service-emmet: 0.0.62(@volar/language-service@2.4.11) - volar-service-html: 0.0.62(@volar/language-service@2.4.11) - volar-service-prettier: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.11) - volar-service-yaml: 0.0.62(@volar/language-service@2.4.11) + volar-service-css: 0.0.62(@volar/language-service@2.4.12) + volar-service-emmet: 0.0.62(@volar/language-service@2.4.12) + volar-service-html: 0.0.62(@volar/language-service@2.4.12) + volar-service-prettier: 0.0.62(@volar/language-service@2.4.12) + volar-service-typescript: 0.0.62(@volar/language-service@2.4.12) + volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.12) + volar-service-yaml: 0.0.62(@volar/language-service@2.4.12) vscode-html-languageservice: 5.3.1 vscode-uri: 3.1.0 transitivePeerDependencies: @@ -4170,7 +4179,7 @@ snapshots: '@eslint/js@9.21.0': {} - '@eslint/markdown@6.2.2': + '@eslint/markdown@6.3.0': dependencies: '@eslint/core': 0.10.0 '@eslint/plugin-kit': 0.2.7 @@ -4829,24 +4838,24 @@ snapshots: optionalDependencies: typescript: 5.8.2 - '@volar/kit@2.4.11(typescript@5.8.2)': + '@volar/kit@2.4.12(typescript@5.8.2)': dependencies: - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 + '@volar/language-service': 2.4.12 + '@volar/typescript': 2.4.12 typesafe-path: 0.2.2 typescript: 5.8.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 - '@volar/language-core@2.4.11': + '@volar/language-core@2.4.12': dependencies: - '@volar/source-map': 2.4.11 + '@volar/source-map': 2.4.12 - '@volar/language-server@2.4.11': + '@volar/language-server@2.4.12': dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 + '@volar/language-core': 2.4.12 + '@volar/language-service': 2.4.12 + '@volar/typescript': 2.4.12 path-browserify: 1.0.1 request-light: 0.7.0 vscode-languageserver: 9.0.1 @@ -4854,18 +4863,18 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 - '@volar/language-service@2.4.11': + '@volar/language-service@2.4.12': dependencies: - '@volar/language-core': 2.4.11 + '@volar/language-core': 2.4.12 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 - '@volar/source-map@2.4.11': {} + '@volar/source-map@2.4.12': {} - '@volar/typescript@2.4.11': + '@volar/typescript@2.4.12': dependencies: - '@volar/language-core': 2.4.11 + '@volar/language-core': 2.4.12 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -5711,6 +5720,13 @@ snapshots: - supports-color - typescript + eslint-plugin-pnpm-catalogs@0.1.0(eslint@9.21.0(jiti@2.4.2)): + dependencies: + eslint: 9.21.0(jiti@2.4.2) + find-up-simple: 1.0.1 + jsonc-eslint-parser: 2.4.0 + pnpm-catalogs-utils: 0.1.0 + eslint-plugin-regexp@2.7.0(eslint@9.21.0(jiti@2.4.2)): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) @@ -7100,7 +7116,7 @@ snapshots: p-limit@6.2.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.2.0 p-locate@4.1.0: dependencies: @@ -7221,6 +7237,10 @@ snapshots: pluralize@8.0.0: {} + pnpm-catalogs-utils@0.1.0: + dependencies: + yaml: 2.7.0 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -8053,44 +8073,44 @@ snapshots: optionalDependencies: vite: 6.2.0(@types/node@22.13.9)(jiti@2.4.2)(lightningcss@1.28.2)(terser@5.37.0)(yaml@2.7.0) - volar-service-css@0.0.62(@volar/language-service@2.4.11): + volar-service-css@0.0.62(@volar/language-service@2.4.12): dependencies: vscode-css-languageservice: 6.3.2 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-emmet@0.0.62(@volar/language-service@2.4.11): + volar-service-emmet@0.0.62(@volar/language-service@2.4.12): dependencies: '@emmetio/css-parser': 0.4.0 '@emmetio/html-matcher': 1.3.0 '@vscode/emmet-helper': 2.11.0 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-html@0.0.62(@volar/language-service@2.4.11): + volar-service-html@0.0.62(@volar/language-service@2.4.12): dependencies: vscode-html-languageservice: 5.3.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-prettier@0.0.62(@volar/language-service@2.4.11): + volar-service-prettier@0.0.62(@volar/language-service@2.4.12): dependencies: vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.11): + volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.12): dependencies: vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-typescript@0.0.62(@volar/language-service@2.4.11): + volar-service-typescript@0.0.62(@volar/language-service@2.4.12): dependencies: path-browserify: 1.0.1 semver: 7.7.1 @@ -8099,14 +8119,14 @@ snapshots: vscode-nls: 5.2.0 vscode-uri: 3.1.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 - volar-service-yaml@0.0.62(@volar/language-service@2.4.11): + volar-service-yaml@0.0.62(@volar/language-service@2.4.12): dependencies: vscode-uri: 3.1.0 yaml-language-server: 1.15.0 optionalDependencies: - '@volar/language-service': 2.4.11 + '@volar/language-service': 2.4.12 vscode-css-languageservice@6.3.2: dependencies: @@ -8263,7 +8283,7 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.1.1: {} + yocto-queue@1.2.0: {} yocto-spinner@0.2.1: dependencies: diff --git a/src/components/Buttons/ThemeToggle.astro b/src/components/Buttons/ThemeToggle.astro index bca67c7..c0981e8 100644 --- a/src/components/Buttons/ThemeToggle.astro +++ b/src/components/Buttons/ThemeToggle.astro @@ -59,6 +59,6 @@ function setupThemeToggle() { } // Initialize click event (on first load or page transition) -document.addEventListener('astro:after-swap', setupThemeToggle) setupThemeToggle() +document.addEventListener('astro:after-swap', setupThemeToggle) diff --git a/src/components/Comments/Waline.astro b/src/components/Comments/Waline.astro index 54888c3..1476078 100644 --- a/src/components/Comments/Waline.astro +++ b/src/components/Comments/Waline.astro @@ -1,37 +1,48 @@ --- import { themeConfig } from '@/config' +import { getWalineLang } from '@/utils/ui' const { serverURL = '', emoji = [], - searchGif = false, + search = false, imageUploader = false, } = themeConfig.comment?.waline ?? {} ---- -{serverURL && ( - <> - -
- - -)} +const currentPath = Astro.url.pathname +const defaultLocale = themeConfig.global.locale +const walineLang = getWalineLang(currentPath, defaultLocale) + +const walineConfigJson = JSON.stringify({ + serverURL, + lang: walineLang, + emoji, + search, + imageUploader, +}); +--- +
+ + diff --git a/src/components/Comments/index.astro b/src/components/Comments/index.astro new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Scrollbar.astro b/src/components/Scrollbar.astro index 1f29876..ffa86f9 100644 --- a/src/components/Scrollbar.astro +++ b/src/components/Scrollbar.astro @@ -26,8 +26,8 @@ function initScrollbar() { } } -document.addEventListener('astro:after-swap', initScrollbar) initScrollbar() +document.addEventListener('astro:after-swap', initScrollbar)