diff --git a/package-lock.json b/package-lock.json index b989671..a145c19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "email-validator": "^2.0.4", "hcaptcha": "^0.1.1", "jsonwebtoken": "^9.0.2", + "radix-svelte": "^0.9.0", "reflect-metadata": "^0.2.1", "sequelize": "^6.37.1", "sqlite3": "^5.1.7", @@ -450,7 +451,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", - "dev": true, "dependencies": { "@floating-ui/utils": "^0.2.1" } @@ -459,7 +459,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", - "dev": true, "dependencies": { "@floating-ui/core": "^1.0.0", "@floating-ui/utils": "^0.2.0" @@ -468,8 +467,7 @@ "node_modules/@floating-ui/utils": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", - "dev": true + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" }, "node_modules/@gar/promisify": { "version": "1.1.3", @@ -5293,6 +5291,21 @@ "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" }, + "node_modules/radix-svelte": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/radix-svelte/-/radix-svelte-0.9.0.tgz", + "integrity": "sha512-0PJMHiZVTjWGrjK7c2/FY+nq0fBGwPXNy6fFvkLZIs73hTIai/Exw+pi3TCvtd80gSjFb5utdHWI3qiuuN0B/Q==", + "dependencies": { + "@floating-ui/core": "^1.3.1", + "@floating-ui/dom": "^1.4.5" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "svelte": "^4.1.1" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", diff --git a/package.json b/package.json index 9338ab9..5eb85a2 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "email-validator": "^2.0.4", "hcaptcha": "^0.1.1", "jsonwebtoken": "^9.0.2", + "radix-svelte": "^0.9.0", "reflect-metadata": "^0.2.1", "sequelize": "^6.37.1", "sqlite3": "^5.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ee6007..0564c04 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ dependencies: jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 + radix-svelte: + specifier: ^0.9.0 + version: 0.9.0(svelte@4.2.12) reflect-metadata: specifier: ^0.2.1 version: 0.2.1 @@ -38,6 +41,9 @@ dependencies: vite-plugin-vsharp: specifier: ^1.7.3 version: 1.7.3(vite@5.1.5) + ws: + specifier: ^8.16.0 + version: 8.16.0 devDependencies: '@sveltejs/adapter-auto': @@ -61,6 +67,9 @@ devDependencies: '@types/uuid': specifier: ^9.0.8 version: 9.0.8 + '@types/ws': + specifier: ^8.5.10 + version: 8.5.10 autoprefixer: specifier: ^10.4.16 version: 10.4.18(postcss@8.4.35) @@ -338,18 +347,15 @@ packages: resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} dependencies: '@floating-ui/utils': 0.2.1 - dev: true /@floating-ui/dom@1.6.3: resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} dependencies: '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 - dev: true /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - dev: true /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -947,6 +953,12 @@ packages: resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==} dev: false + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.11.25 + dev: true + /@yr/monotone-cubic-spline@1.0.3: resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==} dev: true @@ -3138,6 +3150,17 @@ packages: requiresBuild: true dev: false + /radix-svelte@0.9.0(svelte@4.2.12): + resolution: {integrity: sha512-0PJMHiZVTjWGrjK7c2/FY+nq0fBGwPXNy6fFvkLZIs73hTIai/Exw+pi3TCvtd80gSjFb5utdHWI3qiuuN0B/Q==} + engines: {node: '>= 16'} + peerDependencies: + svelte: ^4.1.1 + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/dom': 1.6.3 + svelte: 4.2.12 + dev: false + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -4295,6 +4318,19 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} diff --git a/src/app.pcss b/src/app.pcss index b361516..093089a 100644 --- a/src/app.pcss +++ b/src/app.pcss @@ -40,6 +40,10 @@ h3 { color: #000; } +:focus-visible { + @apply outline-none ring-2 ring-sky-400; +} + .cta-button { background: linear-gradient(0deg, rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.06)), radial-gradient(109.26% 109.26% at 49.83% 13.37%, #ffffff 0%, #babaca 100%); @@ -95,3 +99,23 @@ h3 { .link { @apply text-blue-300 underline transition-all ease-out hover:text-blue-100; } + +@keyframes contentShow { + 0% { + opacity: 0; + transform: translate(-50%, -48%) scale(0.96); + } + to { + opacity: 1; + transform: translate(-50%, -50%) scale(1); + } +} + +@keyframes overlayShow { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} diff --git a/src/assets/branding/suyu__Embed-Image.png b/src/assets/branding/suyu__Embed-Image.png new file mode 100644 index 0000000..4319683 Binary files /dev/null and b/src/assets/branding/suyu__Embed-Image.png differ diff --git a/src/assets/mockups/suyuwindow.png b/src/assets/mockups/suyuwindow.png new file mode 100644 index 0000000..ce1a7c9 Binary files /dev/null and b/src/assets/mockups/suyuwindow.png differ diff --git a/src/components/Card.svelte b/src/components/Card.svelte deleted file mode 100644 index f013004..0000000 --- a/src/components/Card.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - -
- suyu is a C++ based Switch emulator with a focus on compatibility. Completely free and - open-source, forever. + suyu is a familiar C++ based Switch emulator with a focus on compatibility. Completely free + and open-source, forever.
+ The future of suyu is shaped by you. New features are always being added, and our community + continually shapes the direction of the project. +
++ Join our Discord server to chat with 14,000+ suyu users and developers. Get the latest + updates and help with any issues you have. +
+ + + ++ GitLab is where all the magic of suyu happens. We're always looking for new contributors + to help us out, so feel free to check out our code. +
+ + +