diff --git a/website/bun.lock b/website/bun.lock index 42b949f..781797a 100644 --- a/website/bun.lock +++ b/website/bun.lock @@ -5,19 +5,15 @@ "": { "name": "quantus-website", "dependencies": { - "@astrojs/mdx": "5.0.2", - "@astrojs/react": "5.0.1", - "@astrojs/sitemap": "3.7.1", + "@fontsource/geist": "^5.2.8", + "@fontsource/geist-mono": "^5.2.7", "@fontsource/ibm-plex-mono": "^5.2.7", "@fontsource/ibm-plex-sans": "^5.2.8", "@fontsource/inter": "^5.2.6", "@fontsource/prompt": "^5.2.6", "@lucide/astro": "^0.541.0", - "@playform/compress": "^0.2.1", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-slot": "^1.2.3", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.12", "@tanstack/react-table": "^8.21.3", "astro": "6.0.7", "astro-seo": "^0.8.4", @@ -30,10 +26,15 @@ "react": "^19.2.0", "react-dom": "^19.2.0", "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.12", "usehooks-ts": "^3.1.1", }, "devDependencies": { + "@astrojs/mdx": "5.0.2", + "@astrojs/react": "5.0.1", + "@astrojs/sitemap": "3.7.1", + "@playform/compress": "^0.2.1", + "@tailwindcss/typography": "^0.5.19", + "@tailwindcss/vite": "^4.1.12", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "prettier": "^3.6.2", @@ -41,6 +42,7 @@ "prettier-plugin-tailwindcss": "^0.6.14", "puppeteer-core": "^24.38.0", "schema-dts": "^1.1.5", + "tailwindcss": "^4.1.12", "unlighthouse": "^0.17.4", }, }, @@ -194,6 +196,10 @@ "@floating-ui/vue": ["@floating-ui/vue@1.1.11", "", { "dependencies": { "@floating-ui/dom": "^1.7.6", "@floating-ui/utils": "^0.2.11", "vue-demi": ">=0.13.0" } }, "sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw=="], + "@fontsource/geist": ["@fontsource/geist@5.2.8", "", {}, "sha512-pI54klK6vz8fVpAVyV+iODGLEzw73cs1XJqV9PIXgW8MYMmBcwK6lKKaWqJrNHwEx8ppz9cuhussb6arXQ/PVQ=="], + + "@fontsource/geist-mono": ["@fontsource/geist-mono@5.2.7", "", {}, "sha512-xVPVFISJg/K0VVd+aQN0Y7X/sw9hUcJPyDWFJ5GpyU3bHELhoRsJkPSRSHXW32mOi0xZCUQDOaPj1sqIFJ1FGg=="], + "@fontsource/ibm-plex-mono": ["@fontsource/ibm-plex-mono@5.2.7", "", {}, "sha512-MKAb8qV+CaiMQn2B0dIi1OV3565NYzp3WN5b4oT6LTkk+F0jR6j0ZN+5BKJiIhffDC3rtBULsYZE65+0018z9w=="], "@fontsource/ibm-plex-sans": ["@fontsource/ibm-plex-sans@5.2.8", "", {}, "sha512-eztSXjDhPhcpxNIiGTgMebdLP9qS4rWkysuE1V7c+DjOR0qiezaiDaTwQE7bTnG5HxAY/8M43XKDvs3cYq6ZYQ=="], @@ -1102,7 +1108,7 @@ "emmet": ["emmet@2.4.11", "", { "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" } }, "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ=="], - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], @@ -1994,7 +2000,7 @@ "streamx": ["streamx@2.23.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg=="], - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], @@ -2368,12 +2374,12 @@ "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "astro/@astrojs/compiler": ["@astrojs/compiler@3.0.1", "", {}, "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA=="], - "boxen/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "boxen/wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], "cacheable-request/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], @@ -2386,6 +2392,8 @@ "clean-css/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -2454,8 +2462,6 @@ "speedline-core/@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], - "string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], @@ -2482,14 +2488,14 @@ "vscode-json-languageservice/jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], - "widest-line/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "wrap-ansi/string-width": ["string-width@8.2.0", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw=="], "yaml-language-server/request-light": ["request-light@0.5.8", "", {}, "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg=="], "yaml-language-server/yaml": ["yaml@2.7.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ=="], + "yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "zod-to-ts/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], @@ -2574,10 +2580,14 @@ "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.31.1", "", { "os": "win32", "cpu": "x64" }, "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw=="], - "boxen/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "chrome-launcher/is-wsl/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -2612,8 +2622,6 @@ "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - "string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "svgo/css-tree/mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], "unifont/css-tree/mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], @@ -2624,7 +2632,9 @@ "vaul-vue/@vueuse/core/@vueuse/shared": ["@vueuse/shared@10.11.1", "", { "dependencies": { "vue-demi": ">=0.14.8" } }, "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA=="], - "widest-line/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "@astrojs/check/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -2705,5 +2715,9 @@ "@playform/compress/astro/shiki/@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="], "@playform/compress/astro/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], + + "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], } } diff --git a/website/package.json b/website/package.json index f5c3c04..eea7dcc 100644 --- a/website/package.json +++ b/website/package.json @@ -13,19 +13,15 @@ "format:write": "prettier --write ." }, "dependencies": { - "@astrojs/mdx": "5.0.2", - "@astrojs/react": "5.0.1", - "@astrojs/sitemap": "3.7.1", + "@fontsource/geist": "^5.2.8", + "@fontsource/geist-mono": "^5.2.7", "@fontsource/ibm-plex-mono": "^5.2.7", "@fontsource/ibm-plex-sans": "^5.2.8", "@fontsource/inter": "^5.2.6", "@fontsource/prompt": "^5.2.6", "@lucide/astro": "^0.541.0", - "@playform/compress": "^0.2.1", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-slot": "^1.2.3", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.12", "@tanstack/react-table": "^8.21.3", "astro": "6.0.7", "astro-seo": "^0.8.4", @@ -38,15 +34,21 @@ "react": "^19.2.0", "react-dom": "^19.2.0", "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.12", "usehooks-ts": "^3.1.1" }, "devDependencies": { + "tailwindcss": "^4.1.12", + "@astrojs/mdx": "5.0.2", + "@astrojs/react": "5.0.1", + "@astrojs/sitemap": "3.7.1", + "@playform/compress": "^0.2.1", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "prettier": "^3.6.2", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.14", + "@tailwindcss/typography": "^0.5.19", + "@tailwindcss/vite": "^4.1.12", "puppeteer-core": "^24.38.0", "schema-dts": "^1.1.5", "unlighthouse": "^0.17.4" diff --git a/website/public/banner-small.jpeg b/website/public/banner-small.jpeg deleted file mode 100644 index 645c992..0000000 Binary files a/website/public/banner-small.jpeg and /dev/null differ diff --git a/website/public/favicon.ico b/website/public/favicon.ico index 608e90c..5a2f1d0 100644 Binary files a/website/public/favicon.ico and b/website/public/favicon.ico differ diff --git a/website/public/logo-alt.webp b/website/public/logo-alt.webp deleted file mode 100644 index 3e7f3d6..0000000 Binary files a/website/public/logo-alt.webp and /dev/null differ diff --git a/website/public/logo.webp b/website/public/logo.webp deleted file mode 100644 index 509f40f..0000000 Binary files a/website/public/logo.webp and /dev/null differ diff --git a/website/public/quantus-banner.png b/website/public/quantus-banner.png new file mode 100644 index 0000000..648682f Binary files /dev/null and b/website/public/quantus-banner.png differ diff --git a/website/public/quests/cat-first-rank.webp b/website/public/quests/cat-first-rank.webp deleted file mode 100644 index f7c70e6..0000000 Binary files a/website/public/quests/cat-first-rank.webp and /dev/null differ diff --git a/website/public/quests/cat-second-rank.webp b/website/public/quests/cat-second-rank.webp deleted file mode 100644 index a7516d1..0000000 Binary files a/website/public/quests/cat-second-rank.webp and /dev/null differ diff --git a/website/public/quests/cat-third-rank.webp b/website/public/quests/cat-third-rank.webp deleted file mode 100644 index fa094e8..0000000 Binary files a/website/public/quests/cat-third-rank.webp and /dev/null differ diff --git a/website/src/assets/benefits/benefit-1.svg b/website/src/assets/benefits/benefit-1.svg deleted file mode 100644 index 158721a..0000000 --- a/website/src/assets/benefits/benefit-1.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/src/assets/benefits/benefit-2.svg b/website/src/assets/benefits/benefit-2.svg deleted file mode 100644 index 6c1bdb0..0000000 --- a/website/src/assets/benefits/benefit-2.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/src/assets/benefits/benefit-3.svg b/website/src/assets/benefits/benefit-3.svg deleted file mode 100644 index 2c77f5a..0000000 --- a/website/src/assets/benefits/benefit-3.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/src/assets/brand/brand-logo.svg b/website/src/assets/brand/brand-logo.svg deleted file mode 100644 index 40e32a8..0000000 --- a/website/src/assets/brand/brand-logo.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/website/src/assets/brand/brand-name.svg b/website/src/assets/brand/brand-name.svg deleted file mode 100644 index 8fa6ce5..0000000 --- a/website/src/assets/brand/brand-name.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/website/src/assets/brand/logo-long.svg b/website/src/assets/brand/logo-long.svg new file mode 100644 index 0000000..5630e01 --- /dev/null +++ b/website/src/assets/brand/logo-long.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/website/src/assets/carousels/gallery-1.jpeg b/website/src/assets/carousels/gallery-1.jpeg deleted file mode 100644 index 235ccf0..0000000 Binary files a/website/src/assets/carousels/gallery-1.jpeg and /dev/null differ diff --git a/website/src/assets/carousels/gallery-2.jpeg b/website/src/assets/carousels/gallery-2.jpeg deleted file mode 100644 index e6d2bef..0000000 Binary files a/website/src/assets/carousels/gallery-2.jpeg and /dev/null differ diff --git a/website/src/assets/carousels/gallery-3.jpeg b/website/src/assets/carousels/gallery-3.jpeg deleted file mode 100644 index d023c76..0000000 Binary files a/website/src/assets/carousels/gallery-3.jpeg and /dev/null differ diff --git a/website/src/assets/carousels/gallery-4.png b/website/src/assets/carousels/gallery-4.png deleted file mode 100644 index c57d9d5..0000000 Binary files a/website/src/assets/carousels/gallery-4.png and /dev/null differ diff --git a/website/src/assets/carousels/gallery-5.jpeg b/website/src/assets/carousels/gallery-5.jpeg deleted file mode 100644 index 71a00fe..0000000 Binary files a/website/src/assets/carousels/gallery-5.jpeg and /dev/null differ diff --git a/website/src/assets/carousels/gallery-6.png b/website/src/assets/carousels/gallery-6.png deleted file mode 100644 index 644c5b8..0000000 Binary files a/website/src/assets/carousels/gallery-6.png and /dev/null differ diff --git a/website/src/assets/carousels/gallery-7.jpeg b/website/src/assets/carousels/gallery-7.jpeg deleted file mode 100644 index 5221ac7..0000000 Binary files a/website/src/assets/carousels/gallery-7.jpeg and /dev/null differ diff --git a/website/src/assets/download/app-home-view.png b/website/src/assets/download/app-home-view.png deleted file mode 100644 index 1780a59..0000000 Binary files a/website/src/assets/download/app-home-view.png and /dev/null differ diff --git a/website/src/assets/download/apple-store-download.png b/website/src/assets/download/apple-store-download.png deleted file mode 100644 index 77a4f55..0000000 Binary files a/website/src/assets/download/apple-store-download.png and /dev/null differ diff --git a/website/src/assets/download/google-play-download.png b/website/src/assets/download/google-play-download.png deleted file mode 100644 index 038cade..0000000 Binary files a/website/src/assets/download/google-play-download.png and /dev/null differ diff --git a/website/src/assets/events/token-2049-singapore.png b/website/src/assets/events/token-2049-singapore.png deleted file mode 100644 index 1376e4e..0000000 Binary files a/website/src/assets/events/token-2049-singapore.png and /dev/null differ diff --git a/website/src/assets/planet-like-object-with-ring.png b/website/src/assets/planet-like-object-with-ring.png deleted file mode 100644 index af1a173..0000000 Binary files a/website/src/assets/planet-like-object-with-ring.png and /dev/null differ diff --git a/website/src/assets/qday/q-day-logo.svg b/website/src/assets/qday/q-day-logo.svg deleted file mode 100644 index 0607eb5..0000000 --- a/website/src/assets/qday/q-day-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/website/src/assets/qday/q-day-mockup.png b/website/src/assets/qday/q-day-mockup.png deleted file mode 100644 index 54e0f4c..0000000 Binary files a/website/src/assets/qday/q-day-mockup.png and /dev/null differ diff --git a/website/src/assets/quests/king-of-the-shill.png b/website/src/assets/quests/king-of-the-shill.png deleted file mode 100644 index 1facbbd..0000000 Binary files a/website/src/assets/quests/king-of-the-shill.png and /dev/null differ diff --git a/website/src/assets/quests/qq-logo.png b/website/src/assets/quests/qq-logo.png deleted file mode 100644 index 00b9dca..0000000 Binary files a/website/src/assets/quests/qq-logo.png and /dev/null differ diff --git a/website/src/assets/team/cezary-olborski.png b/website/src/assets/team/cezary-olborski.png new file mode 100644 index 0000000..4b302f8 Binary files /dev/null and b/website/src/assets/team/cezary-olborski.png differ diff --git a/website/src/assets/team/christopher-smith.png b/website/src/assets/team/christopher-smith.png new file mode 100644 index 0000000..742889d Binary files /dev/null and b/website/src/assets/team/christopher-smith.png differ diff --git a/website/src/assets/team/ethan-cemer.png b/website/src/assets/team/ethan-cemer.png new file mode 100644 index 0000000..d966a9a Binary files /dev/null and b/website/src/assets/team/ethan-cemer.png differ diff --git a/website/src/assets/team/joe-mattia.png b/website/src/assets/team/joe-mattia.png new file mode 100644 index 0000000..4e8d056 Binary files /dev/null and b/website/src/assets/team/joe-mattia.png differ diff --git a/website/src/assets/team/jonathan-angle.png b/website/src/assets/team/jonathan-angle.png new file mode 100644 index 0000000..37679a3 Binary files /dev/null and b/website/src/assets/team/jonathan-angle.png differ diff --git a/website/src/assets/team/nikolaus-hager.png b/website/src/assets/team/nikolaus-hager.png new file mode 100644 index 0000000..1fe2c13 Binary files /dev/null and b/website/src/assets/team/nikolaus-hager.png differ diff --git a/website/src/assets/teams/cezary-avatar.png b/website/src/assets/teams/cezary-avatar.png deleted file mode 100644 index a3b8811..0000000 Binary files a/website/src/assets/teams/cezary-avatar.png and /dev/null differ diff --git a/website/src/assets/teams/chris-avatar.png b/website/src/assets/teams/chris-avatar.png deleted file mode 100644 index 7c18036..0000000 Binary files a/website/src/assets/teams/chris-avatar.png and /dev/null differ diff --git a/website/src/assets/teams/joe-avatar.png b/website/src/assets/teams/joe-avatar.png deleted file mode 100644 index a9f9cdb..0000000 Binary files a/website/src/assets/teams/joe-avatar.png and /dev/null differ diff --git a/website/src/assets/teams/nik-avatar.png b/website/src/assets/teams/nik-avatar.png deleted file mode 100644 index f4cd82d..0000000 Binary files a/website/src/assets/teams/nik-avatar.png and /dev/null differ diff --git a/website/src/assets/wallet/checkphrases.png b/website/src/assets/wallet/checkphrases.png new file mode 100644 index 0000000..4c317b6 Binary files /dev/null and b/website/src/assets/wallet/checkphrases.png differ diff --git a/website/src/assets/wallet/encrypt-your-funds.png b/website/src/assets/wallet/encrypt-your-funds.png new file mode 100644 index 0000000..cb4bee2 Binary files /dev/null and b/website/src/assets/wallet/encrypt-your-funds.png differ diff --git a/website/src/assets/wallet/high-security-accounts.png b/website/src/assets/wallet/high-security-accounts.png new file mode 100644 index 0000000..3b03fce Binary files /dev/null and b/website/src/assets/wallet/high-security-accounts.png differ diff --git a/website/src/assets/wallet/reversible-transactions.png b/website/src/assets/wallet/reversible-transactions.png new file mode 100644 index 0000000..47036c7 Binary files /dev/null and b/website/src/assets/wallet/reversible-transactions.png differ diff --git a/website/src/components/features/about/AdvisorsAndInvestorsSection.astro b/website/src/components/features/about/AdvisorsAndInvestorsSection.astro new file mode 100644 index 0000000..0c0f3b3 --- /dev/null +++ b/website/src/components/features/about/AdvisorsAndInvestorsSection.astro @@ -0,0 +1,220 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+ + {t("about.advisors.eyebrow")} + + +
+
+ +
+
+
+ + {t("about.investors.eyebrow")} + + +
+
+ + diff --git a/website/src/components/features/about/ContactSection.astro b/website/src/components/features/about/ContactSection.astro new file mode 100644 index 0000000..2aa770e --- /dev/null +++ b/website/src/components/features/about/ContactSection.astro @@ -0,0 +1,107 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+ + {t("about.contact.eyebrow")} + +

+ {t("about.contact.heading")} +

+

+ {t("about.contact.body")} +

+ + {t("about.contact.email")} + + + {t("about.contact.cta")} + +
+
+ + diff --git a/website/src/components/features/about/HeroBanner.astro b/website/src/components/features/about/HeroBanner.astro new file mode 100644 index 0000000..b53ce2a --- /dev/null +++ b/website/src/components/features/about/HeroBanner.astro @@ -0,0 +1,241 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+ + {t("about.hero.eyebrow")} + +

+ {t("about.hero.title")} +

+

+ {t("about.hero.sub")} +

+
+
+ + + + + + diff --git a/website/src/components/features/about/MissionSection.astro b/website/src/components/features/about/MissionSection.astro new file mode 100644 index 0000000..d23c2f1 --- /dev/null +++ b/website/src/components/features/about/MissionSection.astro @@ -0,0 +1,85 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+
+
+ + {t("about.mission.eyebrow")} + +

+ {t("about.mission.heading")} +

+
+
+

+ {t("about.mission.body1")} +

+

+ {t("about.mission.body2")} +

+
+
+
+
+ + diff --git a/website/src/components/features/about/TeamSection.astro b/website/src/components/features/about/TeamSection.astro new file mode 100644 index 0000000..86d8c54 --- /dev/null +++ b/website/src/components/features/about/TeamSection.astro @@ -0,0 +1,333 @@ +--- +import { Image } from "astro:assets"; + +import ChristopherSmith from "@/assets/team/christopher-smith.png"; +import JosephMattia from "@/assets/team/joe-mattia.png"; +import CezaryOlborski from "@/assets/team/cezary-olborski.png"; +import EthanCemer from "@/assets/team/ethan-cemer.png"; +import NikolausHager from "@/assets/team/nikolaus-hager.png"; +import JonathanAngle from "@/assets/team/jonathan-angle.png"; +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+ + {t("about.team.eyebrow")} + +

+ {t("about.team.heading")} +

+
+ +
+
+ Christopher Smith +
+
+ Christopher Smith + CEO and CTO + + + @YuviLightman + +
+
+ + +
+
+ Joseph Mattia +
+
+ Joseph Mattia + COO · Sales and Operations + + + @JoeMattia + +
+
+ + +
+
+ Cezary Olborski +
+
+ Cezary Olborski + Senior Engineer · DeFi HFT + + + @czareko + +
+
+ + +
+
+ Ethan Cemer +
+
+ Ethan Cemer + Zero-Knowledge Engineer + + + @ethan_t_c_ + +
+
+ + +
+
+ Nikolaus Hager +
+
+ Nikolaus Hager + Senior Engineer · Blockchain + + + @n13 + +
+
+ + +
+
+ Jonathan Angle +
+
+ Jonathan Angle + Communications Director + + + @defijangle + +
+
+
+
+
+ + diff --git a/website/src/components/features/blog/BlogList.tsx b/website/src/components/features/blog/BlogList.tsx index c35ecd1..82369ed 100644 --- a/website/src/components/features/blog/BlogList.tsx +++ b/website/src/components/features/blog/BlogList.tsx @@ -2,8 +2,6 @@ import React, { useState, useMemo, useEffect, useRef } from "react"; import Fuse from "fuse.js"; import { Search as SearchIcon } from "lucide-react"; import { useDebounceValue } from "usehooks-ts"; -import { Input } from "@/components/ui/react/Input"; -import { Tag } from "@/components/ui/react/Tag"; import { INPUT_DEBOUNCE_INTERVAL } from "@/constants/debounce-interval"; const INITIAL_VISIBLE_COUNT = 6; @@ -34,6 +32,53 @@ interface Props { tagsMap: Record; } +function useCardEntrance(deps: unknown[]) { + const containerRef = useRef(null); + + useEffect(() => { + const container = containerRef.current; + if (!container) return; + + const cards = Array.from( + container.querySelectorAll("[data-blog-card]"), + ); + + cards.forEach((card) => { + card.style.opacity = "0"; + card.style.transform = "translateY(20px)"; + }); + + const observers: IntersectionObserver[] = []; + + for (let i = 0; i < cards.length; i += 3) { + const group = cards.slice(i, i + 3); + const obs = new IntersectionObserver( + (entries) => { + if (entries[0].isIntersecting) { + group.forEach((card, idx) => { + setTimeout(() => { + card.style.transition = + "opacity 0.5s ease, transform 0.5s ease"; + card.style.opacity = "1"; + card.style.transform = "translateY(0)"; + }, idx * 80); + }); + obs.disconnect(); + } + }, + { threshold: 0.1 }, + ); + if (group[0]) obs.observe(group[0]); + observers.push(obs); + } + + return () => observers.forEach((o) => o.disconnect()); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, deps); + + return containerRef; +} + export const BlogList: React.FC = ({ posts, locale, @@ -62,11 +107,7 @@ export const BlogList: React.FC = ({ const featuredPost = useMemo(() => { if (debouncedQuery) return null; - let featuredPost = posts.find((post) => post.data.featured); - if (!featuredPost) { - featuredPost = posts[0]; - } - return featuredPost; + return posts.find((post) => post.data.featured) ?? posts[0] ?? null; }, [posts, debouncedQuery]); const displayedPosts = useMemo(() => { @@ -98,159 +139,160 @@ export const BlogList: React.FC = ({ return () => observer.disconnect(); }, [visibleCount, results.length]); + const gridRef = useCardEntrance([displayedPosts]); + const formatDate = (dateStr: string) => { - return new Date(dateStr).toLocaleDateString(locale, { - year: "numeric", - month: "short", - day: "numeric", - }); + return new Date(dateStr) + .toLocaleDateString(locale, { + year: "numeric", + month: "short", + day: "numeric", + }) + .toUpperCase(); }; return ( -
+
+ {/* Search */}
- - + setQuery(e.target.value)} - className="pl-10" + className="border-border text-content placeholder:text-content-35 focus:border-content-25 h-11 w-full border bg-transparent pr-4 pl-10 font-mono text-sm focus:outline-none" />
+ {/* Featured post */} {featuredPost && ( -
+
{featuredPost.data.heroImage && ( - +
{featuredPost.data.heroAlt - - )} -
- - + )} +
+
+ + + {featuredLabel} + +
+

+ {featuredPost.data.title} +

+

+ {featuredPost.data.description} +

{featuredPost.data.tags.length > 0 && ( -
- {featuredPost.data.tags.slice(0, 8).map((tag) => ( - - - {tagsMap[tag] || tag} - - +
+ {featuredPost.data.tags.slice(0, 6).map((tag) => ( + + {tagsMap[tag] || tag} + ))}
)}
-
+ )} -
+ {/* Grid */} +
{displayedPosts.map((post) => { const postSlug = post.id.split("/").slice(1).join("/"); const postHref = `${localizedBlogPath}/${postSlug}`; return ( - + ); })}
+ {/* Infinite scroll sentinel */} {visibleCount < results.length && (
-
+
)} {results.length === 0 && ( -

+

{noPostsFoundText}

)} diff --git a/website/src/components/features/blog/BlogPost.astro b/website/src/components/features/blog/BlogPost.astro index 0ed792f..abdb316 100644 --- a/website/src/components/features/blog/BlogPost.astro +++ b/website/src/components/features/blog/BlogPost.astro @@ -1,6 +1,5 @@ --- import Layout from "@/components/layout/Layout.astro"; -import Tag from "@/components/ui/Tag.astro"; import Card from "@/components/features/blog/Card.astro"; import type { CollectionEntry } from "astro:content"; import type { Article, WithContext } from "schema-dts"; @@ -38,6 +37,8 @@ const metadata = createMetadata({ imageAlt: heroAlt, }); +const blogIndexHref = getLocalizedPath(currentLocale, "/blog"); + const articleSchema: WithContext
= { "@context": "https://schema.org", "@type": "Article", @@ -56,24 +57,44 @@ const articleSchema: WithContext
= { --- -
-
-
+
+
+
+ + {t("blog.post.back_to_blog")} + + { - heroImage && ( - {heroAlt + tags.length > 0 && ( +
+ {tags.map((tag: string) => ( + + ))} +
) } -
+ +

+ {title} +

+ +

= { }) } - { - updatedDate && ( -
- Last updated on{" "} - {updatedDate.toLocaleDateString(currentLocale, { - year: "numeric", - month: "long", - day: "numeric", - })} -
- ) - } -
-

{title}

-
+  ·  + {t("blog.post.author")} +

+ { + updatedDate && ( +

+ {updatedDate.toLocaleDateString(currentLocale, { + year: "numeric", + month: "long", + day: "numeric", + })} +

+ ) + }
-
+
+ + { + heroImage && ( + <> +
+ {heroAlt +
+
-
{ - tags.length > 0 && ( -
- {tags.map((tag: string) => ( - - - {t(`blog.tags.${tag}`) || tag} - - - ))} + relatedPosts.length > 0 && ( +
+

+ {t("blog.related_posts")} +

+
+ {relatedPosts.map((relatedPost) => ( + + ))} +
) }
- - { - relatedPosts.length > 0 && ( -
-

- {t("blog.related_posts")} -

-
- {relatedPosts.map((relatedPost) => ( - - ))} -
-
- ) - } -
+
diff --git a/website/src/components/features/blog/Card.astro b/website/src/components/features/blog/Card.astro index 617f9ec..70da592 100644 --- a/website/src/components/features/blog/Card.astro +++ b/website/src/components/features/blog/Card.astro @@ -1,5 +1,4 @@ --- -import Tag from "@/components/ui/Tag.astro"; import { getLocaleFromUrl, getLocalizedPath, @@ -15,6 +14,7 @@ interface Props { heroImage?: string; heroAlt?: string; featured?: boolean; + horizontal?: boolean; } const { @@ -26,71 +26,95 @@ const { heroImage, heroAlt, featured, + horizontal = false, } = Astro.props; const currentLocale = getLocaleFromUrl(Astro.url.pathname); const t = await createTranslator(currentLocale); -const formattedDate = pubDate.toLocaleDateString(currentLocale, { - year: "numeric", - month: "short", - day: "numeric", -}); +const formattedDate = pubDate + .toLocaleDateString(currentLocale, { + year: "numeric", + month: "short", + day: "numeric", + }) + .toUpperCase(); --- -
- + { + heroImage && ( +
+ {heroAlt +
+ + READ + +
+
+ ) + } +
+ + ))} +
+ ) + } +
+ diff --git a/website/src/components/features/community/BlogSection.astro b/website/src/components/features/community/BlogSection.astro new file mode 100644 index 0000000..9ac7225 --- /dev/null +++ b/website/src/components/features/community/BlogSection.astro @@ -0,0 +1,195 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+ +
+ + diff --git a/website/src/components/features/community/EventSection.astro b/website/src/components/features/community/EventSection.astro new file mode 100644 index 0000000..0a10373 --- /dev/null +++ b/website/src/components/features/community/EventSection.astro @@ -0,0 +1,125 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+ + {t("community.events.eyebrow")} + +

+ {t("community.events.heading")} +

+
+
+ + {t("community.events.card.date_label")} + +

+ {t("community.events.card.title")} +

+ {t("community.events.card.cta")} +
+
+ + {t("community.events.card.status")} + +
+
+
+
+ + diff --git a/website/src/components/features/community/HeroBanner.astro b/website/src/components/features/community/HeroBanner.astro new file mode 100644 index 0000000..a0782ff --- /dev/null +++ b/website/src/components/features/community/HeroBanner.astro @@ -0,0 +1,248 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+ + {t("community.hero.eyebrow")} + +

+ {t("community.hero.heading")} +

+

+ {t("community.hero.sub")} +

+
+
+ + + + + + diff --git a/website/src/components/features/community/PodcastSection.astro b/website/src/components/features/community/PodcastSection.astro new file mode 100644 index 0000000..e3c61d4 --- /dev/null +++ b/website/src/components/features/community/PodcastSection.astro @@ -0,0 +1,186 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+
+
+ {t("community.podcast.eyebrow")} +

{t("community.podcast.heading")}

+

+ {t("community.podcast.body")} +

+ +
+
+ + + {t("community.podcast.episode.title")} + + + {t("community.podcast.episode.meta")} + +
+
+
+
+ + diff --git a/website/src/components/features/community/SocialsSection.astro b/website/src/components/features/community/SocialsSection.astro new file mode 100644 index 0000000..9f15f29 --- /dev/null +++ b/website/src/components/features/community/SocialsSection.astro @@ -0,0 +1,128 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+ +
+ + diff --git a/website/src/components/features/community/TelegramSection.astro b/website/src/components/features/community/TelegramSection.astro new file mode 100644 index 0000000..68a86c7 --- /dev/null +++ b/website/src/components/features/community/TelegramSection.astro @@ -0,0 +1,86 @@ +--- +import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; + +const locale = getLocaleFromUrl(Astro.url.pathname); +const t = await createTranslator(locale); +--- + +
+
+
+ + {t("community.telegram.eyebrow")} + +

+ {t("community.telegram.heading")} +

+

+ {t("community.telegram.body")} +

+ {t("community.telegram.cta")} +
+
+ + diff --git a/website/src/components/features/contact/ContactForm.astro b/website/src/components/features/contact/ContactForm.astro deleted file mode 100644 index d79907e..0000000 --- a/website/src/components/features/contact/ContactForm.astro +++ /dev/null @@ -1,127 +0,0 @@ ---- -import Button from "@/components/ui/Button.astro"; -import Input from "@/components/ui/Input.astro"; - -import { Image } from "astro:assets"; -import ContactImage from "@/assets/planet-like-object-with-ring.png"; -import TextArea from "@/components/ui/TextArea.astro"; -import { createTranslator, getLocaleFromUrl } from "@/utils/i18n"; - -const locale = getLocaleFromUrl(Astro.url.pathname); -const t = await createTranslator(locale); ---- - -
-
- - -