diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 38972655fa..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 77a3369f7e..0000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:svelte/recommended', - 'prettier' - ], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - }, - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser' - } - } - ] -}; diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index c9555dd921..0000000000 --- a/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "useTabs": false, - "tabWidth": 4, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] -} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000000..09537bd61c --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import prettier from 'eslint-config-prettier'; +import js from '@eslint/js'; +import svelte from 'eslint-plugin-svelte'; +import globals from 'globals'; +import ts from 'typescript-eslint'; + +export default ts.config( + js.configs.recommended, + ...ts.configs.recommended, + ...svelte.configs['flat/recommended'], + prettier, + ...svelte.configs['flat/prettier'], + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['**/*.svelte'], + + languageOptions: { + parserOptions: { + parser: ts.parser + } + } + }, + { + ignores: ['build/', '.svelte-kit/', 'dist/'] + } +); diff --git a/package.json b/package.json index 541099ba98..be7a6110b2 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,6 @@ "@types/glob": "^8.1.0", "@types/markdown-it": "^13.0.8", "@types/morgan": "^1.9.9", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", "analytics": "^0.8.14", "clsx": "^2.1.1", "cva": "npm:class-variance-authority@^0.7.0", @@ -55,10 +53,11 @@ "embla-carousel": "^8.1.5", "embla-carousel-svelte": "^8.1.5", "embla-carousel-wheel-gestures": "^8.0.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^8.10.0", + "eslint": "^9.7.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.40.0", "fuse.js": "^7.0.0", + "globals": "^15.12.0", "highlight.js": "^11.9.0", "markdown-it": "^14.1.0", "meilisearch": "^0.37.0", @@ -82,6 +81,7 @@ "tailwindcss": "4.0.0-alpha.17", "tslib": "^2.6.3", "typescript": "^5.5.2", + "typescript-eslint": "^8.13.0", "vite": "^5.3.1", "vite-plugin-dynamic-import": "^1.5.0", "vite-plugin-image-optimizer": "^1.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09f5c6318d..7f4c904f6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,12 +69,6 @@ importers: '@types/morgan': specifier: ^1.9.9 version: 1.9.9 - '@typescript-eslint/eslint-plugin': - specifier: ^7.13.1 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^7.13.1 - version: 7.18.0(eslint@8.57.1)(typescript@5.6.3) analytics: specifier: ^0.8.14 version: 0.8.14(@types/dlv@1.1.4) @@ -100,17 +94,20 @@ importers: specifier: ^8.0.1 version: 8.0.1(embla-carousel@8.3.0) eslint: - specifier: ^8.57.0 - version: 8.57.1 + specifier: ^9.7.0 + version: 9.14.0(jiti@1.21.6) eslint-config-prettier: - specifier: ^8.10.0 - version: 8.10.0(eslint@8.57.1) + specifier: ^9.1.0 + version: 9.1.0(eslint@9.14.0(jiti@1.21.6)) eslint-plugin-svelte: specifier: ^2.40.0 - version: 2.44.1(eslint@8.57.1)(svelte@4.2.19) + version: 2.44.1(eslint@9.14.0(jiti@1.21.6))(svelte@4.2.19) fuse.js: specifier: ^7.0.0 version: 7.0.0 + globals: + specifier: ^15.12.0 + version: 15.12.0 highlight.js: specifier: ^11.9.0 version: 11.10.0 @@ -180,6 +177,9 @@ importers: typescript: specifier: ^5.5.2 version: 5.6.3 + typescript-eslint: + specifier: ^8.13.0 + version: 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) vite: specifier: ^5.3.1 version: 5.4.9(@types/node@22.7.5)(lightningcss@1.27.0)(sass@1.79.5) @@ -459,13 +459,33 @@ packages: resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.7.0': + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.14.0': + resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.2': + resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -479,18 +499,25 @@ packages: '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} @@ -1708,6 +1735,9 @@ packages: '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/linkify-it@3.0.5': resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} @@ -1774,66 +1804,62 @@ packages: '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.13.0': + resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.13.0': + resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.13.0': + resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.13.0': + resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.13.0': + resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.13.0': + resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.13.0': + resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + eslint: ^8.57.0 || ^9.0.0 - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@typescript-eslint/visitor-keys@8.13.0': + resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@1.6.0': resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} @@ -1876,6 +1902,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -2280,10 +2311,6 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -2392,8 +2419,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-prettier@8.10.0: - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -2412,19 +2439,35 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.14.0: + resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2482,9 +2525,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} file-type@16.5.4: resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} @@ -2504,9 +2547,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -2610,9 +2653,13 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.12.0: + resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} + engines: {node: '>=18'} globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} @@ -4070,14 +4117,19 @@ packages: resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@4.26.1: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} + typescript-eslint@8.13.0: + resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -4579,19 +4631,31 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0(jiti@1.21.6))': dependencies: - eslint: 8.57.1 + eslint: 9.14.0(jiti@1.21.6) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.1': {} - '@eslint/eslintrc@2.1.4': + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.7.0': {} + + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 debug: 4.3.7 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.3.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -4600,7 +4664,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@9.14.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.2': + dependencies: + levn: 0.4.1 '@floating-ui/core@1.6.8': dependencies: @@ -4615,17 +4685,18 @@ snapshots: '@gar/promisify@1.1.3': {} - '@humanwhocodes/config-array@0.13.0': + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -5973,6 +6044,8 @@ snapshots: '@types/http-errors@2.0.4': {} + '@types/json-schema@7.0.15': {} + '@types/linkify-it@3.0.5': {} '@types/linkify-it@5.0.0': @@ -6045,15 +6118,15 @@ snapshots: '@types/shimmer@1.2.0': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 + eslint: 9.14.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6063,44 +6136,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7 - eslint: 8.57.1 + eslint: 9.14.0(jiti@1.21.6) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/scope-manager@8.13.0': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) debug: 4.3.7 - eslint: 8.57.1 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.13.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -6110,24 +6183,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + '@typescript-eslint/utils@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + eslint: 9.14.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.13.0': dependencies: - '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/types': 8.13.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} - '@vitest/expect@1.6.0': dependencies: '@vitest/spy': 1.6.0 @@ -6169,12 +6240,18 @@ snapshots: dependencies: acorn: 8.12.1 + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + acorn-walk@8.3.4: dependencies: acorn: 8.12.1 acorn@8.12.1: {} + acorn@8.14.0: {} + agent-base@6.0.2: dependencies: debug: 4.3.7 @@ -6597,10 +6674,6 @@ snapshots: dlv@1.1.3: {} - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -6710,21 +6783,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@8.57.1): + eslint-compat-utils@0.5.1(eslint@9.14.0(jiti@1.21.6)): dependencies: - eslint: 8.57.1 + eslint: 9.14.0(jiti@1.21.6) semver: 7.6.3 - eslint-config-prettier@8.10.0(eslint@8.57.1): + eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.6)): dependencies: - eslint: 8.57.1 + eslint: 9.14.0(jiti@1.21.6) - eslint-plugin-svelte@2.44.1(eslint@8.57.1)(svelte@4.2.19): + eslint-plugin-svelte@2.44.1(eslint@9.14.0(jiti@1.21.6))(svelte@4.2.19): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) '@jridgewell/sourcemap-codec': 1.5.0 - eslint: 8.57.1 - eslint-compat-utils: 0.5.1(eslint@8.57.1) + eslint: 9.14.0(jiti@1.21.6) + eslint-compat-utils: 0.5.1(eslint@9.14.0(jiti@1.21.6)) esutils: 2.0.3 known-css-properties: 0.34.0 postcss: 8.4.47 @@ -6743,53 +6816,65 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} - eslint@8.57.1: + eslint-visitor-keys@4.2.0: {} + + eslint@9.14.0(jiti@1.21.6): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.6)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.14.0 + '@eslint/plugin-kit': 0.2.2 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.7 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 transitivePeerDependencies: - supports-color esm-env@1.0.0: {} + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + espree@9.6.1: dependencies: acorn: 8.12.1 @@ -6850,9 +6935,9 @@ snapshots: dependencies: reusify: 1.0.4 - file-entry-cache@6.0.1: + file-entry-cache@8.0.0: dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 file-type@16.5.4: dependencies: @@ -6875,11 +6960,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: + flat-cache@4.0.1: dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 flatted@3.3.1: {} @@ -6988,9 +7072,9 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 + globals@14.0.0: {} + + globals@15.12.0: {} globalyzer@0.1.0: {} @@ -8422,10 +8506,19 @@ snapshots: type-detect@4.1.0: {} - type-fest@0.20.2: {} - type-fest@4.26.1: {} + typescript-eslint@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + typescript@5.6.3: {} uc.micro@2.1.0: {} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000000..a005c033e7 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,15 @@ +/** @type {import("prettier").Config} */ +export default { + useTabs: false, + tabWidth: 4, + singleQuote: true, + trailingComma: 'none', + printWidth: 100, + plugins: ['prettier-plugin-svelte', 'prettier-plugin-tailwindcss'], + overrides: [ + { + files: '*.svelte', + options: { parser: 'svelte' } + } + ] +}; diff --git a/src/app.css b/src/app.css index 0610b9496d..e4496d66cd 100644 --- a/src/app.css +++ b/src/app.css @@ -53,6 +53,7 @@ --color-white: hsl(0 0% 100%); --color-black: hsl(0 0% 0%); --color-transparent: rgba(0, 0, 0, 0); + --color-smooth: hsl(var(--color-greyscale-hue) 6%, 10%, 0.04); --color-greyscale-25: hsl(var(--color-greyscale-hue) 11% 98%); --color-greyscale-50: hsl(var(--color-greyscale-hue) 11% 94%); --color-greyscale-100: hsl(var(--color-greyscale-hue) 6% 90%); @@ -68,8 +69,16 @@ --color-greyscale-850: hsl(var(--color-greyscale-hue) 3% 14%); --color-greyscale-900: hsl(var(--color-greyscale-hue) 5.7% 10.4%); + /* utility colors */ + --color-badge-bg-light: #f2c8d6; + --color-badge-border-light: #f69db7; + --color-badge-bg-dark: #2c2c2f; + --color-badge-border-dark: #39393c; + /* Animations */ --animate-scale-in: scale-in 200ms ease-out forwards; + --animate-text: fade-in 0.75s ease-in-out both, blur 0.75s ease-in-out both, + up 0.75s ease-in-out both; /* Pink polyfills */ --transition: 0.2s; @@ -84,6 +93,33 @@ } } + @keyframes blur { + 0% { + filter: blur(5px); + } + 100% { + filter: blur(0); + } + } + + @keyframes up { + 0% { + transform: translateY(8px); + } + 100% { + transform: translateY(0px); + } + } + + @keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + /* Fonts */ --font-family-sans: 'Inter', arial, sans-serif; --font-family-mono: 'Fira Code', monospace; @@ -152,12 +188,16 @@ --color-primary: var(--color-greyscale-900); --color-secondary: var(--color-greyscale-700); --color-accent: var(--color-pink-600); + --color-badge-bg: var(--color-badge-bg-light); + --color-badge-border: var(--color-badge-border-light); } /* dark theme */ .dark { --color-primary: var(--color-greyscale-100); --color-secondary: var(--color-greyscale-300); + --color-badge-bg: var(--color-badge-bg-dark); + --color-badge-border: var(--color-badge-border-dark); } /* Container */ diff --git a/src/lib/animations/Products/Products.svelte b/src/lib/animations/Products/Products.svelte index b14146ca74..83b602742c 100644 --- a/src/lib/animations/Products/Products.svelte +++ b/src/lib/animations/Products/Products.svelte @@ -158,7 +158,6 @@ import { postController } from './post'; import Post from './post/post.svelte'; import { anyify } from '$lib/utils/anyify'; - import Badge from '$lib/components/ui/Badge.svelte'; /* Basic Animation setup */ let scrollInfo = { @@ -508,10 +507,6 @@ display: flex; align-items: center; gap: 0.75rem; - - .web-label { - margin-block-start: 0.25rem; - } } h4 { diff --git a/src/lib/animations/Products/ProductsMobile.svelte b/src/lib/animations/Products/ProductsMobile.svelte index 720eee17b0..d29f0a7b5d 100644 --- a/src/lib/animations/Products/ProductsMobile.svelte +++ b/src/lib/animations/Products/ProductsMobile.svelte @@ -108,10 +108,6 @@ display: flex; align-items: center; gap: 0.75rem; - - .web-label { - margin-block-start: 0.25rem; - } } h4 { diff --git a/src/lib/animations/Products/functions/phone.svelte b/src/lib/animations/Products/functions/phone.svelte index c162fe3a91..8eba2da7f2 100644 --- a/src/lib/animations/Products/functions/phone.svelte +++ b/src/lib/animations/Products/functions/phone.svelte @@ -1,6 +1,6 @@ + +{text} + + {#each words as word, i} + {word} + {/each} + diff --git a/src/lib/components/carousel/CarouselSlide.svelte b/src/lib/components/carousel/CarouselSlide.svelte index ad051c7471..59a59c3b21 100644 --- a/src/lib/components/carousel/CarouselSlide.svelte +++ b/src/lib/components/carousel/CarouselSlide.svelte @@ -5,21 +5,19 @@ diff --git a/src/lib/components/ui/InlineTag.svelte b/src/lib/components/ui/InlineTag.svelte index 3bd813cfd5..bab673e0b3 100644 --- a/src/lib/components/ui/InlineTag.svelte +++ b/src/lib/components/ui/InlineTag.svelte @@ -1,5 +1,5 @@
diff --git a/src/lib/layouts/DocsArticle.svelte b/src/lib/layouts/DocsArticle.svelte index 9281b413ab..fc30be1cfb 100644 --- a/src/lib/layouts/DocsArticle.svelte +++ b/src/lib/layouts/DocsArticle.svelte @@ -99,7 +99,7 @@ {/each} -
+
); } export default App; -``` \ No newline at end of file +``` diff --git a/src/routes/education/(assets)/beaker.svg b/src/routes/education/(assets)/beaker.svg new file mode 100644 index 0000000000..d75b34953e --- /dev/null +++ b/src/routes/education/(assets)/beaker.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/routes/education/(assets)/chat-icon.svg b/src/routes/education/(assets)/chat-icon.svg new file mode 100644 index 0000000000..31e10ed589 --- /dev/null +++ b/src/routes/education/(assets)/chat-icon.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/routes/education/(assets)/chat.svg b/src/routes/education/(assets)/chat.svg new file mode 100644 index 0000000000..64fc573995 --- /dev/null +++ b/src/routes/education/(assets)/chat.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/routes/education/(assets)/checkmark.svg b/src/routes/education/(assets)/checkmark.svg new file mode 100644 index 0000000000..f3f31edb17 --- /dev/null +++ b/src/routes/education/(assets)/checkmark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/routes/education/(assets)/github-mark.svg b/src/routes/education/(assets)/github-mark.svg new file mode 100644 index 0000000000..42b7ae7254 --- /dev/null +++ b/src/routes/education/(assets)/github-mark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/routes/education/(assets)/kickstart.svg b/src/routes/education/(assets)/kickstart.svg new file mode 100644 index 0000000000..7a103a0f1f --- /dev/null +++ b/src/routes/education/(assets)/kickstart.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/routes/education/(components)/CallToAction.svelte b/src/routes/education/(components)/CallToAction.svelte new file mode 100644 index 0000000000..1b5b8b1a93 --- /dev/null +++ b/src/routes/education/(components)/CallToAction.svelte @@ -0,0 +1,27 @@ + + +
+
+
+

+ Start building like a team of hundreds with Appwrite +

+

+ Develop your developer skills with Appwrite Pro, join a vibrant community of + open-source contributors, and start building with a vast array of frameworks. +

+ Sign up +
+
+
diff --git a/src/routes/education/(components)/Community.svelte b/src/routes/education/(components)/Community.svelte new file mode 100644 index 0000000000..3af6dafefc --- /dev/null +++ b/src/routes/education/(components)/Community.svelte @@ -0,0 +1,24 @@ + + +
+
+

+ Get help from the open source community +

+

+ Join a growing community of developers and students who use Appwrite to build their + products. Gain access to a wealth of knowledge, support, and shared experiences to help + navigate the challenges of startup growth. +

+ + + Join our Discord +
+ Chat +
diff --git a/src/routes/education/(components)/FAQ.svelte b/src/routes/education/(components)/FAQ.svelte new file mode 100644 index 0000000000..e8c5c46ef9 --- /dev/null +++ b/src/routes/education/(components)/FAQ.svelte @@ -0,0 +1,114 @@ + + +
+

FAQ

+ +
diff --git a/src/routes/education/(components)/GetStarted.svelte b/src/routes/education/(components)/GetStarted.svelte new file mode 100644 index 0000000000..f6106f038c --- /dev/null +++ b/src/routes/education/(components)/GetStarted.svelte @@ -0,0 +1,69 @@ + + +
+
+

Get started today

+ +
+ {#each items as item, i} +
+ Step {i + 1} +
+

{item.label}

+

{item.description}

+
+ + {#if item.cta.icon} + + {/if} + {item.cta.label} +
+ {/each} +
+
+
diff --git a/src/routes/education/(components)/Hero.svelte b/src/routes/education/(components)/Hero.svelte new file mode 100644 index 0000000000..7a77380710 --- /dev/null +++ b/src/routes/education/(components)/Hero.svelte @@ -0,0 +1,182 @@ + + +
+
+ +
+ {#each items as { label, description, icon }} +
+ {label} +

{label}

+

+ {description} +

+
+ {/each} +
+ + diff --git a/src/routes/education/(components)/Kickstart.svelte b/src/routes/education/(components)/Kickstart.svelte new file mode 100644 index 0000000000..08a7f809fa --- /dev/null +++ b/src/routes/education/(components)/Kickstart.svelte @@ -0,0 +1,24 @@ + + +
+
+

+ Kickstart your developer journey with Appwrite +

+

+ Earn free credits through GitHub Education to build your next project on Appwrite Cloud. + Sign up for the GitHub Student Developer Pack to receive Appwrite Cloud for the duration + of your studies. +

+ +

+ This credit is available only for new users who are verified through the GitHub program + as students. The credit is valid until you graduate from GitHub Education. +

+
+ Kickstart +
diff --git a/src/routes/education/(components)/Logos.svelte b/src/routes/education/(components)/Logos.svelte new file mode 100644 index 0000000000..58e1cd01dd --- /dev/null +++ b/src/routes/education/(components)/Logos.svelte @@ -0,0 +1,70 @@ +
+ + + + + + + + + + + + + + + + + + + + +
diff --git a/src/routes/education/+page.svelte b/src/routes/education/+page.svelte new file mode 100644 index 0000000000..621f6d9969 --- /dev/null +++ b/src/routes/education/+page.svelte @@ -0,0 +1,49 @@ + + + + + {title} + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + +
+ + +
+
diff --git a/src/routes/heroes/+page.svelte b/src/routes/heroes/+page.svelte index 88de7dcaae..f742d79194 100644 --- a/src/routes/heroes/+page.svelte +++ b/src/routes/heroes/+page.svelte @@ -355,6 +355,7 @@ diff --git a/src/routes/init-0/(components)/Ticket.svelte b/src/routes/init-0/(components)/Ticket.svelte index c3a0768e04..6f92f03539 100644 --- a/src/routes/init-0/(components)/Ticket.svelte +++ b/src/routes/init-0/(components)/Ticket.svelte @@ -413,12 +413,6 @@ z-index: -1; } - .text-title font-aeonik-pro { - font-size: adjusted(2.5); - line-height: #{math.div(44, 40)}em; - overflow-wrap: break-word; - } - .text-label { font-size: adjusted(1.5); line-height: #{math.div(28, 24)}em; diff --git a/src/routes/init/(components)/CountdownCard.svelte b/src/routes/init/(components)/CountdownCard.svelte index 12ed04c838..929ed1bcc3 100644 --- a/src/routes/init/(components)/CountdownCard.svelte +++ b/src/routes/init/(components)/CountdownCard.svelte @@ -33,12 +33,4 @@ align-items: center; background-color: hsl(var(--web-color-subtle)); } - - .text-title font-aeonik-pro { - margin-block-start: 0.75rem; - } - - .text-sub-body font-medium { - margin-block-start: 0.5rem; - } diff --git a/src/routes/init/(components)/TicketScroll.svelte b/src/routes/init/(components)/TicketScroll.svelte index 0828a61558..b309d98fd2 100644 --- a/src/routes/init/(components)/TicketScroll.svelte +++ b/src/routes/init/(components)/TicketScroll.svelte @@ -58,12 +58,12 @@
diff --git a/src/routes/init/tickets/customize/+page.svelte b/src/routes/init/tickets/customize/+page.svelte index 3ec154bf45..3641c95249 100644 --- a/src/routes/init/tickets/customize/+page.svelte +++ b/src/routes/init/tickets/customize/+page.svelte @@ -131,14 +131,4 @@ margin-block-start: 0; } } - - .text-display font-aeonik-pro { - margin-bottom: -48px; - } - - @media screen and (min-width: 768px) { - .text-display font-aeonik-pro { - margin-bottom: 0; - } - } diff --git a/src/routes/integrations/+page.svelte b/src/routes/integrations/+page.svelte index 562b2bac66..c1e428a367 100644 --- a/src/routes/integrations/+page.svelte +++ b/src/routes/integrations/+page.svelte @@ -447,16 +447,18 @@ diff --git a/src/routes/products/messaging/(components)/Target.svelte b/src/routes/products/messaging/(components)/Target.svelte index 0d02692204..351bb8c2ce 100644 --- a/src/routes/products/messaging/(components)/Target.svelte +++ b/src/routes/products/messaging/(components)/Target.svelte @@ -2,7 +2,6 @@ import { clamp } from '$lib/utils/clamp'; import { withPrevious } from '$lib/utils/withPrevious'; import { withRaf } from '$lib/utils/withRaf'; - import { get } from 'svelte/store'; import Accordion from './Accordion/Accordion.svelte'; import AccordionItem from './Accordion/AccordionItem.svelte'; import Checkbox from './Checkbox.svelte'; diff --git a/src/routes/startups/+page.svelte b/src/routes/startups/+page.svelte index eb8b323f2d..d7f18cb408 100644 --- a/src/routes/startups/+page.svelte +++ b/src/routes/startups/+page.svelte @@ -187,8 +187,8 @@ class="text-description web-u-max-width-640 e-u-padding-inline-32-desktop mx-auto" > The Appwrite Startups Program supports your startup with a complete - backend for you to build your products. You will receive - $20,000 Cloud credits for Appwrite Scale for 12 months. + backend for you to build your products. You will receive $20,000 Cloud + credits for Appwrite Scale for 12 months.