From e2e299de86ecd53bd0ba26e99ad641c5205f90c6 Mon Sep 17 00:00:00 2001 From: josehenriques10 Date: Sat, 1 Jun 2024 20:51:23 -0300 Subject: [PATCH] first commit --- .gitignore | 24 + index.html | 53 + package-lock.json | 1268 +++++++++++++++++ package.json | 17 + public/vite.svg | 1 + src/assets/img/footer-logo-desk-230px-img.svg | 18 + src/assets/img/footer-logo-mob-162px-img.svg | 18 + src/assets/img/header-desk-1280px-img.svg | 9 + src/assets/img/header-mob-428px-img.svg | 14 + src/assets/img/section-1-desk-607px-img.svg | 9 + src/assets/img/section-1-mob-379px-img.svg | 9 + src/assets/img/section-2-desk-607px-img.svg | 9 + src/assets/img/section-2-mob-379px-img.svg | 9 + src/assets/img/section-3-desk-607px-img.svg | 9 + src/assets/img/section-3-mob-379px-img.svg | 9 + src/assets/img/section-4-desk-784px-img.svg | 9 + src/assets/img/section-4-mob-379px-img.svg | 9 + src/components/footer.component.ts | 23 + src/components/header.component.ts | 59 + src/components/index.components.ts | 11 + src/components/section.component.ts | 101 ++ src/data/sections.json | 20 + src/interfaces/IImage.interfaces.ts | 4 + src/interfaces/ISection.interfaces.ts | 4 + src/modules/functions.export.ts | 15 + src/sass/components/_button.components.scss | 3 + src/sass/components/_footer.components.scss | 18 + src/sass/components/_header.components.scss | 109 ++ src/sass/components/_main.components.scss | 2 + src/sass/components/_section.components.scss | 140 ++ src/sass/elements/_e.elements.scss | 11 + src/sass/generic/_normalize.generic.scss | 1 + src/sass/generic/_reset.generic.scss | 9 + src/sass/imports/_components.imports.scss | 5 + src/sass/imports/_elements.imports.scss | 1 + src/sass/imports/_generic.imports.scss | 2 + src/sass/imports/_objects.imports.scss | 3 + src/sass/imports/_settings.imports.scss | 4 + src/sass/index.scss | 14 + src/sass/objects/_flex.objects.scss | 9 + src/sass/objects/_grid.objects.scss | 5 + src/sass/objects/_wrapper.scss | 4 + src/sass/settings/_breakpoints.settings.scss | 6 + src/sass/settings/_colors.settings.scss | 5 + src/sass/settings/_fonts.settings.scss | 17 + src/sass/settings/_sizes.settings.scss | 17 + src/vite-env.d.ts | 1 + tsconfig.json | 23 + vite.config.js | 12 + 49 files changed, 2152 insertions(+) create mode 100644 .gitignore create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/assets/img/footer-logo-desk-230px-img.svg create mode 100644 src/assets/img/footer-logo-mob-162px-img.svg create mode 100644 src/assets/img/header-desk-1280px-img.svg create mode 100644 src/assets/img/header-mob-428px-img.svg create mode 100644 src/assets/img/section-1-desk-607px-img.svg create mode 100644 src/assets/img/section-1-mob-379px-img.svg create mode 100644 src/assets/img/section-2-desk-607px-img.svg create mode 100644 src/assets/img/section-2-mob-379px-img.svg create mode 100644 src/assets/img/section-3-desk-607px-img.svg create mode 100644 src/assets/img/section-3-mob-379px-img.svg create mode 100644 src/assets/img/section-4-desk-784px-img.svg create mode 100644 src/assets/img/section-4-mob-379px-img.svg create mode 100644 src/components/footer.component.ts create mode 100644 src/components/header.component.ts create mode 100644 src/components/index.components.ts create mode 100644 src/components/section.component.ts create mode 100644 src/data/sections.json create mode 100644 src/interfaces/IImage.interfaces.ts create mode 100644 src/interfaces/ISection.interfaces.ts create mode 100644 src/modules/functions.export.ts create mode 100644 src/sass/components/_button.components.scss create mode 100644 src/sass/components/_footer.components.scss create mode 100644 src/sass/components/_header.components.scss create mode 100644 src/sass/components/_main.components.scss create mode 100644 src/sass/components/_section.components.scss create mode 100644 src/sass/elements/_e.elements.scss create mode 100644 src/sass/generic/_normalize.generic.scss create mode 100644 src/sass/generic/_reset.generic.scss create mode 100644 src/sass/imports/_components.imports.scss create mode 100644 src/sass/imports/_elements.imports.scss create mode 100644 src/sass/imports/_generic.imports.scss create mode 100644 src/sass/imports/_objects.imports.scss create mode 100644 src/sass/imports/_settings.imports.scss create mode 100644 src/sass/index.scss create mode 100644 src/sass/objects/_flex.objects.scss create mode 100644 src/sass/objects/_grid.objects.scss create mode 100644 src/sass/objects/_wrapper.scss create mode 100644 src/sass/settings/_breakpoints.settings.scss create mode 100644 src/sass/settings/_colors.settings.scss create mode 100644 src/sass/settings/_fonts.settings.scss create mode 100644 src/sass/settings/_sizes.settings.scss create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/index.html b/index.html new file mode 100644 index 0000000..ad6c916 --- /dev/null +++ b/index.html @@ -0,0 +1,53 @@ + + + + + + + + + + Discord Landingpage + + + + + + + + + + + + +
+ + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8369005 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1268 @@ +{ + "name": "discord-landingpage-clone", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "discord-landingpage-clone", + "version": "0.0.0", + "devDependencies": { + "sass": "^1.77.3", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-plugin-top-level-await": "^1.4.1" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/core": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.24.tgz", + "integrity": "sha512-Eph9zvO4xvqWZGVzTdtdEJ0Vqf0VIML/o/e4Qd2RLOqtfgnlRi7avmMu5C0oqciJ0tk+hqdUKVUZ4JPoPaiGvQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.7" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.5.24", + "@swc/core-darwin-x64": "1.5.24", + "@swc/core-linux-arm-gnueabihf": "1.5.24", + "@swc/core-linux-arm64-gnu": "1.5.24", + "@swc/core-linux-arm64-musl": "1.5.24", + "@swc/core-linux-x64-gnu": "1.5.24", + "@swc/core-linux-x64-musl": "1.5.24", + "@swc/core-win32-arm64-msvc": "1.5.24", + "@swc/core-win32-ia32-msvc": "1.5.24", + "@swc/core-win32-x64-msvc": "1.5.24" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.24.tgz", + "integrity": "sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.24.tgz", + "integrity": "sha512-MfcFjGGYognpSBSos2pYUNYJSmqEhuw5ceGr6qAdME7ddbjGXliza4W6FggsM+JnWwpqa31+e7/R+GetW4WkaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.24.tgz", + "integrity": "sha512-amI2pwtcWV3E/m/nf+AQtn1LWDzKLZyjCmWd3ms7QjEueWYrY8cU1Y4Wp7wNNsxIoPOi8zek1Uj2wwFD/pttNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.24.tgz", + "integrity": "sha512-sTSvmqMmgT1ynH/nP75Pc51s+iT4crZagHBiDOf5cq+kudUYjda9lWMs7xkXB/TUKFHPCRK0HGunl8bkwiIbuw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.24.tgz", + "integrity": "sha512-vd2/hfOBGbrX21FxsFdXCUaffjkHvlZkeE2UMRajdXifwv79jqOHIJg3jXG1F3ZrhCghCzirFts4tAZgcG8XWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.24.tgz", + "integrity": "sha512-Zrdzi7NqzQxm2BvAG5KyOSBEggQ7ayrxh599AqqevJmsUXJ8o2nMiWQOBvgCGp7ye+Biz3pvZn1EnRzAp+TpUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.24.tgz", + "integrity": "sha512-1F8z9NRi52jdZQCGc5sflwYSctL6omxiVmIFVp8TC9nngjQKc00TtX/JC2Eo2HwvgupkFVl5YQJidAck9YtmJw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.24.tgz", + "integrity": "sha512-cKpP7KvS6Xr0jFSTBXY53HZX/YfomK5EMQYpCVDOvfsZeYHN20sQSKXfpVLvA/q2igVt1zzy1XJcOhpJcgiKLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.24.tgz", + "integrity": "sha512-IoPWfi0iwqjZuf7gE223+B97/ZwkKbu7qL5KzGP7g3hJrGSKAvv7eC5Y9r2iKKtLKyv5R/T6Ho0kFR/usi7rHw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.5.24", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.24.tgz", + "integrity": "sha512-zHgF2k1uVJL8KIW+PnVz1To4a3Cz9THbh2z2lbehaF/gKHugH4c3djBozU4das1v35KOqf5jWIEviBLql2wDLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz", + "integrity": "sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.77.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.3.tgz", + "integrity": "sha512-WJHo+jmFp0dwRuymPmIovuxHaBntcCyja5hCB0yYY9wWrViEp4kF5Cdai98P72v6FzroPuABqu+ddLMbQWmwzA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz", + "integrity": "sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.1.tgz", + "integrity": "sha512-hogbZ6yT7+AqBaV6lK9JRNvJDn4/IJvHLu6ET06arNfo0t2IsyCaon7el9Xa8OumH+ESuq//SDf8xscZFE0rWw==", + "dev": true, + "dependencies": { + "@rollup/plugin-virtual": "^3.0.2", + "@swc/core": "^1.3.100", + "uuid": "^9.0.1" + }, + "peerDependencies": { + "vite": ">=2.8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3a62510 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "discord-landingpage-clone", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --host", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "sass": "^1.77.3", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-plugin-top-level-await": "^1.4.1" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/img/footer-logo-desk-230px-img.svg b/src/assets/img/footer-logo-desk-230px-img.svg new file mode 100644 index 0000000..eb0380a --- /dev/null +++ b/src/assets/img/footer-logo-desk-230px-img.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/footer-logo-mob-162px-img.svg b/src/assets/img/footer-logo-mob-162px-img.svg new file mode 100644 index 0000000..6f510ac --- /dev/null +++ b/src/assets/img/footer-logo-mob-162px-img.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/img/header-desk-1280px-img.svg b/src/assets/img/header-desk-1280px-img.svg new file mode 100644 index 0000000..4767345 --- /dev/null +++ b/src/assets/img/header-desk-1280px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/header-mob-428px-img.svg b/src/assets/img/header-mob-428px-img.svg new file mode 100644 index 0000000..e3b99f3 --- /dev/null +++ b/src/assets/img/header-mob-428px-img.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/img/section-1-desk-607px-img.svg b/src/assets/img/section-1-desk-607px-img.svg new file mode 100644 index 0000000..b3371e1 --- /dev/null +++ b/src/assets/img/section-1-desk-607px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-1-mob-379px-img.svg b/src/assets/img/section-1-mob-379px-img.svg new file mode 100644 index 0000000..c65c38f --- /dev/null +++ b/src/assets/img/section-1-mob-379px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-2-desk-607px-img.svg b/src/assets/img/section-2-desk-607px-img.svg new file mode 100644 index 0000000..782df4c --- /dev/null +++ b/src/assets/img/section-2-desk-607px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-2-mob-379px-img.svg b/src/assets/img/section-2-mob-379px-img.svg new file mode 100644 index 0000000..fa07f07 --- /dev/null +++ b/src/assets/img/section-2-mob-379px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-3-desk-607px-img.svg b/src/assets/img/section-3-desk-607px-img.svg new file mode 100644 index 0000000..c8b1615 --- /dev/null +++ b/src/assets/img/section-3-desk-607px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-3-mob-379px-img.svg b/src/assets/img/section-3-mob-379px-img.svg new file mode 100644 index 0000000..1987e03 --- /dev/null +++ b/src/assets/img/section-3-mob-379px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-4-desk-784px-img.svg b/src/assets/img/section-4-desk-784px-img.svg new file mode 100644 index 0000000..e42df44 --- /dev/null +++ b/src/assets/img/section-4-desk-784px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/img/section-4-mob-379px-img.svg b/src/assets/img/section-4-mob-379px-img.svg new file mode 100644 index 0000000..860bc6d --- /dev/null +++ b/src/assets/img/section-4-mob-379px-img.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/components/footer.component.ts b/src/components/footer.component.ts new file mode 100644 index 0000000..66ea39e --- /dev/null +++ b/src/components/footer.component.ts @@ -0,0 +1,23 @@ +import footerLogoMob from '../assets/img/footer-logo-mob-162px-img.svg'; +import footerLogoDesk from '../assets/img/footer-logo-desk-230px-img.svg'; + +class Footer extends HTMLElement +{ + + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` + + `; + } +} + +customElements.define("footer-component", Footer); diff --git a/src/components/header.component.ts b/src/components/header.component.ts new file mode 100644 index 0000000..ad9daf3 --- /dev/null +++ b/src/components/header.component.ts @@ -0,0 +1,59 @@ +class Header extends HTMLElement +{ + + constructor() { + super(); + } + + connectedCallback() { + this.innerHTML = ` +
+
+

+ IMAGINE UM
LUGAR... +

+

+ …onde você possa pertencer a um clube escolar, um grupo de gamers, ou + uma comunidade artística mundial. Onde você e alguns amigos possam + passar um tempo juntos. Um lugar que torna fácil conversar todos os dias + e socializar com mais frequência. +

+
+ + +
+
+
+ `; + } +} + +customElements.define("header-component", Header); + +let wrapperButtonsHeader: any; + +if (wrapperButtonsHeader !== null) { + wrapperButtonsHeader = + document.querySelector(".js-wpp-btn-hed"); +} + +function responsiveUpdate() { + wrapperButtonsHeader.classList.remove( + screen.width < 992 ? 'o-flex-container-def' : 'o-flex-container-col' + ); + wrapperButtonsHeader.classList.add( + screen.width >= 992 ? 'o-flex-container-def' : 'o-flex-container-col' + ); +} + +responsiveUpdate(); + +// To test responsiveness in the browser in real time + +window.addEventListener("resize", () => { + responsiveUpdate(); +}); diff --git a/src/components/index.components.ts b/src/components/index.components.ts new file mode 100644 index 0000000..9627e53 --- /dev/null +++ b/src/components/index.components.ts @@ -0,0 +1,11 @@ +// 1. Main Style +import '../sass/index.scss'; + +// 2. Header Component +import './header.component'; + +// 3. Main Content +import './section.component'; + +// 4. Footer Component +import './footer.component'; \ No newline at end of file diff --git a/src/components/section.component.ts b/src/components/section.component.ts new file mode 100644 index 0000000..4a91e66 --- /dev/null +++ b/src/components/section.component.ts @@ -0,0 +1,101 @@ +import { range } from '../modules/functions.export'; + +// Interfaces +import { ISection } from "../interfaces/ISection.interfaces"; +import { IImage } from '../interfaces/IImage.interfaces'; + +// Images +import imgMobSec1 from '../assets/img/section-1-mob-379px-img.svg'; +import imgDeskSec1 from '../assets/img/section-1-desk-607px-img.svg'; +import imgMobSec2 from '../assets/img/section-2-mob-379px-img.svg'; +import imgDeskSec2 from '../assets/img/section-2-desk-607px-img.svg'; +import imgMobSec3 from '../assets/img/section-3-mob-379px-img.svg'; +import imgDeskSec3 from '../assets/img/section-3-desk-607px-img.svg'; +import imgMobSec4 from '../assets/img/section-4-mob-379px-img.svg'; +import imgDeskSec4 from '../assets/img/section-4-desk-784px-img.svg'; + +const images: IImage[] = [ + { + imgMob: imgMobSec1, + imgDesk: imgDeskSec1 + }, + { + imgMob: imgMobSec2, + imgDesk: imgDeskSec2 + }, + { + imgMob: imgMobSec3, + imgDesk: imgDeskSec3 + }, + { + imgMob: imgMobSec4, + imgDesk: imgDeskSec4 + } +] + +// Api +const url: string = + "https://raw.githubusercontent.com/josehenriques10/discord-landingpage-clone/main/src/data/sections.json"; + +// Request + +const request: { sections: ISection[] } = await fetch(url) + .then((response: Response) => response.json()) + .catch((error: any) => console.log(error)) + .finally(() => console.log("Request completed!")) +; + +const mainContent: HTMLElement + = document.querySelector(".js-main-content") as HTMLElement; + +mainContent.innerHTML = request.sections + .map((section: ISection, index: number) => { + return ` +
+
+
+ + + + +

+ ${section.title} +

+

+ ${section.description} +

+
+
+
+ `; + }).join('') +; + +const secQty: number = mainContent.children.length; + +mainContent.children[secQty - 1].classList.add('c-section--special'); + +function responsiveUpdate() { + let i: number = 0; + + for (i of range(0, secQty - 1)) { + mainContent.children[i].children[0].children[0].classList.remove( + screen.width >= 992 ? 'o-flex-container-col' : 'o-grid-container-2cr' + ); + mainContent.children[i].children[0].children[0].classList.add( + screen.width >= 992 ? 'o-grid-container-2cr' : 'o-flex-container-col' + ); + + if (i % 2 === 1 && i < secQty - 1) + mainContent.children[i].classList.add('c-section--reverse'); + } + +} + +responsiveUpdate() + +// To test responsiveness in the browser in real time + +window.addEventListener('resize', () => { + responsiveUpdate() +}); \ No newline at end of file diff --git a/src/data/sections.json b/src/data/sections.json new file mode 100644 index 0000000..03c0c4d --- /dev/null +++ b/src/data/sections.json @@ -0,0 +1,20 @@ +{ + "sections": [ + { + "title": "Crie um espaço controlado por convite onde você se sinta em casa", + "description": "Os servidores Discord são organizados em canais com assuntos para vocês colaborarem, compartilharem ou simplesmente falarem do dia sem entupir um chat geral." + }, + { + "title": "Aqui é fácil se encontrar", + "description": "Entre no canal de voz quando estiver à toa. Amigos no mesmo servidor podem te ver e entrar imediatamente, sem nem ter que fazer a chamada." + }, + { + "title": "Para poucos e para muitos", + "description": "Organize qualquer comunidade com ferramentas de moderação e acesso personalizado a membros. Dê poderes especiais aos membros, monte canais privados e muito mais." + }, + { + "title": "TECNOLOGIA DE CONEXÃO
CONFIÁVEL", + "description": "Voz e vídeo de baixa latência, para você conversar como se estivesse na mesma sala. Dê um joinha por vídeo, veja amigos transmitirem a jogatina do dia ou junte uma galera pra desenhar na tela compartilhada." + } + ] +} \ No newline at end of file diff --git a/src/interfaces/IImage.interfaces.ts b/src/interfaces/IImage.interfaces.ts new file mode 100644 index 0000000..a7398df --- /dev/null +++ b/src/interfaces/IImage.interfaces.ts @@ -0,0 +1,4 @@ +export interface IImage { + imgMob: string, + imgDesk: string +} \ No newline at end of file diff --git a/src/interfaces/ISection.interfaces.ts b/src/interfaces/ISection.interfaces.ts new file mode 100644 index 0000000..1c0079b --- /dev/null +++ b/src/interfaces/ISection.interfaces.ts @@ -0,0 +1,4 @@ +export interface ISection { + title: string, + description: string +} diff --git a/src/modules/functions.export.ts b/src/modules/functions.export.ts new file mode 100644 index 0000000..b68b581 --- /dev/null +++ b/src/modules/functions.export.ts @@ -0,0 +1,15 @@ +export function range(start: number, stop: number, step = 1) { + const isPositive = step > 0; + let numbers = []; + + if (stop === undefined) { + stop = start; + start = 0; + } + + for (let i = start; isPositive ? i < stop : i > stop; i += step) { + numbers.push(i); + } + + return numbers; +} diff --git a/src/sass/components/_button.components.scss b/src/sass/components/_button.components.scss new file mode 100644 index 0000000..ebd26c4 --- /dev/null +++ b/src/sass/components/_button.components.scss @@ -0,0 +1,3 @@ +.c-button { + padding: var(--16px-pr-rem) 0; +} \ No newline at end of file diff --git a/src/sass/components/_footer.components.scss b/src/sass/components/_footer.components.scss new file mode 100644 index 0000000..2b0cb9e --- /dev/null +++ b/src/sass/components/_footer.components.scss @@ -0,0 +1,18 @@ +.c-footer { + background-color: var(--black); + padding: var(--48px-pr-rem) 0; + text-align: center; +} + +/* +========================================================================= + RESPONSIVE +========================================================================= +*/ + +// Large +@media screen and (min-width: 992px) { + .c-footer { + padding: var(--36px-pr-rem) 0; + } +} diff --git a/src/sass/components/_header.components.scss b/src/sass/components/_header.components.scss new file mode 100644 index 0000000..be9df0e --- /dev/null +++ b/src/sass/components/_header.components.scss @@ -0,0 +1,109 @@ +.c-header { + background-image: url('../assets/img/header-mob-428px-img.svg'); + color: var(--white); + padding: var(--68px-pr-rem) var(--24px-pr-rem); + background-size: cover; + background-position: right bottom; + + &__title { + font-family: var(--font-secondary); + font-size: var(--32px-pr-rem); + line-height: var(--32px-pr-rem) + 10; + } + + &__button { + border-radius: var(--28px-pr-rem); + } + + &__description { + line-height: calc(var(--16px-pr-rem) * 1.5); + } + + &__button--primary { + background-color: var(--white); + color: var(--black); + } + + &__button--secondary { + background-color: var(--black); + color: var(--white); + } + + .o-flex-container-col { + gap: var(--24px-pr-rem); + } + + .o-flex-container-col .o-flex-container-col { + gap: var(--16px-pr-rem); + } + + .o-wrapper .o-wrapper { + margin: 0; + } +} + +/* +========================================================================= + RESPONSIVE +========================================================================= +*/ + +// Small ≥ 576px +@media screen and (min-width: $sm) { + .c-header { + background-image: url('../assets/img/header-desk-1280px-img.svg'); + + &__title { + text-align: center; + } + + &__description { + text-align: center; + } + + .o-wrapper { + max-width: var(--758px-pr-rem); + } + } +} + +// Medium ≥ 768px +@media screen and (min-width: $md) { + .c-header { + padding: var(--94px-pr-rem) var(--48px-pr-rem); + + &__title { + font-size: var(--44px-pr-rem); + line-height: calc(var(--44px-pr-rem) + 10); + } + } +} + +// Large ≥ 992px +@media screen and (min-width: $lg) { + .c-header { + &__title { + font-size: var(--56px-pr-rem); + line-height: calc(var(--56px-pr-rem) + 10); + } + + &__button { + max-width: fit-content; + } + + .c-button { + padding: var(--12px-pr-rem) var(--16px-pr-rem); + } + + .o-flex-container-def { + align-items: center; + } + } +} + +// Extra Large ≥ 1200px +@media screen and (min-width: $xl) { + .c-header { + padding: var(--94px-pr-rem) 0; + } +} \ No newline at end of file diff --git a/src/sass/components/_main.components.scss b/src/sass/components/_main.components.scss new file mode 100644 index 0000000..9cd3e19 --- /dev/null +++ b/src/sass/components/_main.components.scss @@ -0,0 +1,2 @@ +.c-main-content { +} \ No newline at end of file diff --git a/src/sass/components/_section.components.scss b/src/sass/components/_section.components.scss new file mode 100644 index 0000000..230acdb --- /dev/null +++ b/src/sass/components/_section.components.scss @@ -0,0 +1,140 @@ +.c-section { + color: var(--black); + + &__img { + text-align: center; + } + + &__title { + font-size: var(--24px-pr-rem); + font-weight: 800; + line-height: calc(var(--24px-pr-rem) + 10); + } + + &__description { + line-height: calc(var(--16px-pr-rem) * 1.5); + } + + .c-main-content & { + &:nth-child(2n) { + background-color: var(--gray); + } + } + + .o-wrapper { + max-width: var(--970px-pr-rem); + } + + .o-flex-container-col { + gap: var(--28px-pr-rem); + padding: var(--40px-pr-rem) var(--24px-pr-rem); + } + + &--special { + .o-flex-container-col { + .c-section__img { + order: 1; + } + } + } +} + +/* +========================================================================= + RESPONSIVE +========================================================================= +*/ + +// OBS.: Titulos 24px Ate 768 32px | 992 40px + +// Small ≥ 576px +@media screen and (min-width: $sm) { + .c-section { + text-align: center; + } +} + +// Medium ≥ 768px +@media screen and (min-width: $md) { + .c-section { + &__title { + font-size: var(--32px-pr-rem); + line-height: calc(var(--32px-pr-rem) + 10); + } + + .o-flex-container-col { + padding: var(--40px-pr-rem) var(--48px-pr-rem); + } + + .o-flex-container-col { + gap: var(--16px-pr-rem); + } + } +} + +// Large ≥ 992px +@media screen and (min-width: $lg) { + .c-section { + text-align: start; + + &__title { + font-size: var(--40px-pr-rem); + line-height: calc(var(--40px-pr-rem) + 10); + } + + .o-grid-container-2cr { + padding: var(--40px-pr-rem) var(--48px-pr-rem); + + grid-template-areas: + "img title" + "img description" + ; + + .c-section__img { + grid-area: img; + } + + .c-section__title { + grid-area: title; + align-self: end; + max-width: var(--348px-pr-rem); + } + + .c-section__description { + grid-area: description; + max-width: var(--348px-pr-rem); + } + } + + + &--reverse { + .o-grid-container-2cr { + grid-template-areas: + "title img" + "description img" + ; + } + } + + &--special { + .o-flex-container-col { + text-align: center; + } + } + } +} + +// Extra Large ≥ 1200px +@media screen and (min-width: $xl) { + .c-section { + .o-grid-container-2cr { + padding: var(--40px-pr-rem) 0; + } + + &--special { + .o-flex-container-col { + padding: var(--40px-pr-rem) 0; + } + } + } +} diff --git a/src/sass/elements/_e.elements.scss b/src/sass/elements/_e.elements.scss new file mode 100644 index 0000000..1fd853c --- /dev/null +++ b/src/sass/elements/_e.elements.scss @@ -0,0 +1,11 @@ +button { + cursor: pointer; +} + +img { + max-width: 100%; +} + +h1 { + margin: 0; +} \ No newline at end of file diff --git a/src/sass/generic/_normalize.generic.scss b/src/sass/generic/_normalize.generic.scss new file mode 100644 index 0000000..0033bbb --- /dev/null +++ b/src/sass/generic/_normalize.generic.scss @@ -0,0 +1 @@ +@import 'https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css'; \ No newline at end of file diff --git a/src/sass/generic/_reset.generic.scss b/src/sass/generic/_reset.generic.scss new file mode 100644 index 0000000..4beea61 --- /dev/null +++ b/src/sass/generic/_reset.generic.scss @@ -0,0 +1,9 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + vertical-align: baseline; + list-style: none; + border: 0; + font-family: var(--font-primary); +} \ No newline at end of file diff --git a/src/sass/imports/_components.imports.scss b/src/sass/imports/_components.imports.scss new file mode 100644 index 0000000..42e9f77 --- /dev/null +++ b/src/sass/imports/_components.imports.scss @@ -0,0 +1,5 @@ +@import '../components/header.components'; +@import '../components/button.components'; +@import '../components/main.components'; +@import '../components/section.components'; +@import '../components/footer.components'; \ No newline at end of file diff --git a/src/sass/imports/_elements.imports.scss b/src/sass/imports/_elements.imports.scss new file mode 100644 index 0000000..d8c5f21 --- /dev/null +++ b/src/sass/imports/_elements.imports.scss @@ -0,0 +1 @@ +@import '../elements/e.elements'; \ No newline at end of file diff --git a/src/sass/imports/_generic.imports.scss b/src/sass/imports/_generic.imports.scss new file mode 100644 index 0000000..6451906 --- /dev/null +++ b/src/sass/imports/_generic.imports.scss @@ -0,0 +1,2 @@ +@import '../generic/normalize.generic'; +@import '../generic/reset.generic'; diff --git a/src/sass/imports/_objects.imports.scss b/src/sass/imports/_objects.imports.scss new file mode 100644 index 0000000..f5e150e --- /dev/null +++ b/src/sass/imports/_objects.imports.scss @@ -0,0 +1,3 @@ +@import '../objects/flex.objects'; +@import '../objects/grid.objects'; +@import '../objects/wrapper'; \ No newline at end of file diff --git a/src/sass/imports/_settings.imports.scss b/src/sass/imports/_settings.imports.scss new file mode 100644 index 0000000..14eb826 --- /dev/null +++ b/src/sass/imports/_settings.imports.scss @@ -0,0 +1,4 @@ +@import '../settings/sizes.settings'; +@import '../settings/fonts.settings'; +@import '../settings/colors.settings'; +@import '../settings/breakpoints.settings'; \ No newline at end of file diff --git a/src/sass/index.scss b/src/sass/index.scss new file mode 100644 index 0000000..7c51735 --- /dev/null +++ b/src/sass/index.scss @@ -0,0 +1,14 @@ +// 1. Settings +@import './imports/settings.imports'; + +// 3. Generic +@import './imports/generic.imports'; + +// 4. Elements +@import './imports/elements.imports'; + +// 5. Objects +@import './imports/objects.imports'; + +// 6. Components +@import './imports/components.imports'; \ No newline at end of file diff --git a/src/sass/objects/_flex.objects.scss b/src/sass/objects/_flex.objects.scss new file mode 100644 index 0000000..294a9ac --- /dev/null +++ b/src/sass/objects/_flex.objects.scss @@ -0,0 +1,9 @@ +.o-flex-container-def { + display: flex; + gap: var(--16px-pr-rem); +} + +.o-flex-container-col { + @extend .o-flex-container-def; + flex-direction: column; +} \ No newline at end of file diff --git a/src/sass/objects/_grid.objects.scss b/src/sass/objects/_grid.objects.scss new file mode 100644 index 0000000..f7b6ce5 --- /dev/null +++ b/src/sass/objects/_grid.objects.scss @@ -0,0 +1,5 @@ +.o-grid-container-2cr { + display: grid; + grid-template: repeat(2, auto) / repeat(2, auto); + gap: var(--16px-pr-rem); +} \ No newline at end of file diff --git a/src/sass/objects/_wrapper.scss b/src/sass/objects/_wrapper.scss new file mode 100644 index 0000000..5ea9ec0 --- /dev/null +++ b/src/sass/objects/_wrapper.scss @@ -0,0 +1,4 @@ +.o-wrapper { + max-width: $xl; + margin: 0 auto; +} \ No newline at end of file diff --git a/src/sass/settings/_breakpoints.settings.scss b/src/sass/settings/_breakpoints.settings.scss new file mode 100644 index 0000000..aaeceed --- /dev/null +++ b/src/sass/settings/_breakpoints.settings.scss @@ -0,0 +1,6 @@ +$xs: 0; +$sm: 576px; +$md: 768px; +$lg: 992px; +$xl: 1200px; +$xxl: 1400px; \ No newline at end of file diff --git a/src/sass/settings/_colors.settings.scss b/src/sass/settings/_colors.settings.scss new file mode 100644 index 0000000..707016c --- /dev/null +++ b/src/sass/settings/_colors.settings.scss @@ -0,0 +1,5 @@ +:root { + --white: white; + --black: #23272A; + --gray: #F6F6F6; +} \ No newline at end of file diff --git a/src/sass/settings/_fonts.settings.scss b/src/sass/settings/_fonts.settings.scss new file mode 100644 index 0000000..a33c08c --- /dev/null +++ b/src/sass/settings/_fonts.settings.scss @@ -0,0 +1,17 @@ +@import url('https://fonts.googleapis.com/css2?family=Luckiest+Guy&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'); + +:root { + --font-primary: 'Open Sans', sans-serif; + --font-secondary: 'Luckiest Guy', cursive; +} + +// .font { +// font-size: var(--font-size, var(--font-body-size)); +// font-weight: var(--font-weight, var(--font-body-weight)); +// font-family: var(--font-family, var(--font-sans)); +// } + +// .heading { +// --font-size: 2.5rem; +// --font-weight: 800; +// } \ No newline at end of file diff --git a/src/sass/settings/_sizes.settings.scss b/src/sass/settings/_sizes.settings.scss new file mode 100644 index 0000000..5be9c42 --- /dev/null +++ b/src/sass/settings/_sizes.settings.scss @@ -0,0 +1,17 @@ +:root { + --12px-pr-rem: .75rem; + --16px-pr-rem: 1rem; + --24px-pr-rem: 1.5rem; + --28px-pr-rem: 1.75rem; + --32px-pr-rem: 2rem; + --36px-pr-rem: 2.25rem; + --40px-pr-rem: 2.5rem; + --44px-pr-rem: 2.75rem; + --48px-pr-rem: 3rem; + --56px-pr-rem: 3.5rem; + --68px-pr-rem: 4.25rem; + --94px-pr-rem: 5.875rem; + --348px-pr-rem: 21.75rem; + --758px-pr-rem: 47.375rem; + --970px-pr-rem: 60.625rem; +} \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..75abdef --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..1ee8c37 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite' +import topLevelAwait from "vite-plugin-top-level-await"; + +export default defineConfig({ + base: '/discord-landingpage-clone/', + plugins: [ + topLevelAwait({ + promiseExportName: "__tla", + promiseImportName: i => `__tla_${i}` + }) + ] +}); \ No newline at end of file