diff --git a/.github/workflows/test.yml-template b/.github/workflows/test.yml-template new file mode 100644 index 000000000..8b5743ecb --- /dev/null +++ b/.github/workflows/test.yml-template @@ -0,0 +1,29 @@ +name: Test + +on: + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + - run: npm test + - name: Upload HTML report(backstop data) + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: report + path: backstop_data diff --git a/README.md b/README.md index a95e97afe..dd62c75b4 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,10 @@ -# Kickstarter landing page (HARD) +[Figma design]() - Use BEM and SCSS -**⚠️ Attention: this is a hard landing page for development. We highly recommend choosing this landing page only if you didn't have a lot of troubles with previous homework tasks and if you sent all homework in time (didn't miss deadlines).** +[DEMO LINK](https://daryna-kopytko.github.io/Kickstarter/) -Implement landing page according to [Figma design](https://www.figma.com/file/Ujp7bCFuvuJlkn8TSbQPSZ/%E2%84%9611-(kickstarter)?node-id=19655%3A33) - Use BEM and SCSS -- The design 1440px -- Desktop 1280px -- Tablet 640px -- Mobile (> 320px) - -1. Implement the header with `nav`. -1. Implement `Benefits` block. -1. Implement `Presentation` block. -1. Implement `About us` block. -1. Implement `Technology` block. -1. Implement `Testimonilas` block. -1. Implement `Features` block. -1. Implement `Questions` block -1. Implement the footer. - - -## Github flow - -1. **Fork** the repo. -2. **Clone** the forked one. (The project link should have your name but not `mate-academy`) -3. Run `npm install` (or just `npm i`) -4. Run `npm start`. -5. Open one more terminal window for the next steps -6. `git checkout -b develop` - to create new branch and switch on it -7. Write you code in `src` folder -8. Run `npm run lint` and fix code style errors. -9. Run `npm run deploy` to deploy your solution to `gh-pages` -10. `git add . && git commit -m 'solution'` to save your changes -11. `git push origin develop` - to send you code for PR -12. Create a Pull Request (PR) from your branch `develop` to branch `master` of original repo. -13. Replace `` with your Github username in the - [DEMO LINK](https://.github.io/Kickstarter/) -14. Copy `DEMO LINK` to the PR description - -> To update you PR repeat steps 7-11 +I developed a landing page that easily adapts to any size gadget. +It is easy to operate and has an attractive design. +When using the size for mobile devices, the menu board is hidden +in the side slideout, which simplifies work and maintains a neat appearance +of the page. In this case, the block with slides hides all slides except +one, which keeps the page clean from unnecessary material. diff --git a/package-lock.json b/package-lock.json index 05ac51229..73c79d5a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,14 +13,15 @@ "@linthtml/linthtml": "^0.9.6", "@mate-academy/bemlint": "latest", "@mate-academy/linthtml-config": "latest", - "@mate-academy/scripts": "^1.8.6", + "@mate-academy/scripts": "^1.9.12", "@mate-academy/stylelint-config": "latest", - "@parcel/transformer-sass": "^2.12.0", + "@parcel/transformer-sass": "^2.13.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "prettier": "^3.3.2", "stylelint": "^16.7.0", - "stylelint-scss": "^6.4.1" + "stylelint-scss": "^6.4.1", + "svgo": "^3.3.2" } }, "node_modules/@ampproject/remapping": { @@ -1049,16 +1050,18 @@ } }, "node_modules/@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "dev": true + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "dev": true, + "license": "MIT" }, "node_modules/@lezer/lr": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz", - "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", "dev": true, + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0" } @@ -1129,10 +1132,12 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-darwin-x64": { "version": "2.8.5", @@ -1142,10 +1147,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-arm": { "version": "2.8.5", @@ -1155,10 +1162,12 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-arm64": { "version": "2.8.5", @@ -1168,10 +1177,12 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-x64": { "version": "2.8.5", @@ -1181,10 +1192,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-win32-x64": { "version": "2.8.5", @@ -1194,10 +1207,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@mate-academy/bemlint": { "version": "0.1.2", @@ -1222,10 +1237,11 @@ "dev": true }, "node_modules/@mate-academy/scripts": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.8.6.tgz", - "integrity": "sha512-b4om/whj4G9emyi84ORE3FRZzCRwRIesr8tJHXa8EvJdOaAPDpzcJ8A0sFfMsWH9NUOVmOwkBtOXDu5eZZ00Ig==", + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.9.12.tgz", + "integrity": "sha512-/OcmxMa34lYLFlGx7Ig926W1U1qjrnXbjFJ2TzUcDaLmED+A5se652NcWwGOidXRuMAOYLPU2jNYBEkKyXrFJA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/rest": "^17.11.2", "@types/get-port": "^4.2.0", @@ -1782,6 +1798,7 @@ "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", "dev": true, + "license": "MIT", "dependencies": { "@lezer/common": "^1.0.0", "@lezer/lr": "^1.0.0", @@ -1799,10 +1816,12 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { "version": "3.0.3", @@ -1812,10 +1831,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { "version": "3.0.3", @@ -1825,10 +1846,12 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { "version": "3.0.3", @@ -1838,10 +1861,12 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { "version": "3.0.3", @@ -1851,10 +1876,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { "version": "3.0.3", @@ -1864,10 +1891,12 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -2239,78 +2268,99 @@ } }, "node_modules/@parcel/cache": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.12.0.tgz", - "integrity": "sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.13.3.tgz", + "integrity": "sha512-Vz5+K5uCt9mcuQAMDo0JdbPYDmVdB8Nvu/A2vTEK2rqZPxvoOTczKeMBA4JqzKqGURHPRLaJCvuR8nDG+jhK9A==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@parcel/fs": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/utils": "2.12.0", + "@parcel/fs": "2.13.3", + "@parcel/logger": "2.13.3", + "@parcel/utils": "2.13.3", "lmdb": "2.8.5" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.12.0" + "@parcel/core": "^2.13.3" } }, "node_modules/@parcel/codeframe": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.12.0.tgz", - "integrity": "sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.13.3.tgz", + "integrity": "sha512-L/PQf+PT0xM8k9nc0B+PxxOYO2phQYnbuifu9o4pFRiqVmCtHztP+XMIvRJ2gOEXy3pgAImSPFVJ3xGxMFky4g==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.0" + "chalk": "^4.1.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/codeframe/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@parcel/core": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.12.0.tgz", - "integrity": "sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.13.3.tgz", + "integrity": "sha512-SRZFtqGiaKHlZ2YAvf+NHvBFWS3GnkBvJMfOJM7kxJRK3M1bhbwJa/GgSdzqro5UVf9Bfj6E+pkdrRQIOZ7jMQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/graph": "3.2.0", - "@parcel/logger": "2.12.0", - "@parcel/package-manager": "2.12.0", - "@parcel/plugin": "2.12.0", - "@parcel/profiler": "2.12.0", - "@parcel/rust": "2.12.0", + "@parcel/cache": "2.13.3", + "@parcel/diagnostic": "2.13.3", + "@parcel/events": "2.13.3", + "@parcel/feature-flags": "2.13.3", + "@parcel/fs": "2.13.3", + "@parcel/graph": "3.3.3", + "@parcel/logger": "2.13.3", + "@parcel/package-manager": "2.13.3", + "@parcel/plugin": "2.13.3", + "@parcel/profiler": "2.13.3", + "@parcel/rust": "2.13.3", "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "abortcontroller-polyfill": "^1.1.9", + "@parcel/types": "2.13.3", + "@parcel/utils": "2.13.3", + "@parcel/workers": "2.13.3", "base-x": "^3.0.8", "browserslist": "^4.6.6", "clone": "^2.1.1", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", "json5": "^2.2.0", "msgpackr": "^1.9.9", "nullthrows": "^1.1.1", "semver": "^7.5.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2318,26 +2368,31 @@ } }, "node_modules/@parcel/core/node_modules/dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/@parcel/diagnostic": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz", - "integrity": "sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.13.3.tgz", + "integrity": "sha512-C70KXLBaXLJvr7XCEVu8m6TqNdw1gQLxqg5BQ8roR62R4vWWDnOq8PEksxDi4Y8Z/FF4i3Sapv6tRx9iBNxDEg==", "dev": true, + "license": "MIT", "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2345,12 +2400,27 @@ } }, "node_modules/@parcel/events": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.12.0.tgz", - "integrity": "sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.13.3.tgz", + "integrity": "sha512-ZkSHTTbD/E+53AjUzhAWTnMLnxLEU5yRw0H614CaruGh+GjgOIKyukGeToF5Gf/lvZ159VrJCGE0Z5EpgHVkuQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/feature-flags": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/feature-flags/-/feature-flags-2.13.3.tgz", + "integrity": "sha512-UZm14QpamDFoUut9YtCZSpG1HxPs07lUwUCpsAYL0PpxASD3oWJQxIJGfDZPa2272DarXDG9adTKrNXvkHZblw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2358,39 +2428,44 @@ } }, "node_modules/@parcel/fs": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz", - "integrity": "sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.13.3.tgz", + "integrity": "sha512-+MPWAt0zr+TCDSlj1LvkORTjfB/BSffsE99A9AvScKytDSYYpY2s0t4vtV9unSh0FHMS2aBCZNJ4t7KL+DcPIg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@parcel/rust": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", + "@parcel/feature-flags": "2.13.3", + "@parcel/rust": "2.13.3", + "@parcel/types-internal": "2.13.3", + "@parcel/utils": "2.13.3", "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.12.0" + "@parcel/workers": "2.13.3" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.12.0" + "@parcel/core": "^2.13.3" } }, "node_modules/@parcel/graph": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.2.0.tgz", - "integrity": "sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.3.3.tgz", + "integrity": "sha512-pxs4GauEdvCN8nRd6wG3st6LvpHske3GfqGwUSR0P0X0pBPI1/NicvXz6xzp3rgb9gPWfbKXeI/2IOTfIxxVfg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { + "@parcel/feature-flags": "2.13.3", "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2398,16 +2473,17 @@ } }, "node_modules/@parcel/logger": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz", - "integrity": "sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.13.3.tgz", + "integrity": "sha512-8YF/ZhsQgd7ohQ2vEqcMD1Ag9JlJULROWRPGgGYLGD+twuxAiSdiFBpN3f+j4gQN4PYaLaIS/SwUFx11J243fQ==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0" + "@parcel/diagnostic": "2.13.3", + "@parcel/events": "2.13.3" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2415,37 +2491,57 @@ } }, "node_modules/@parcel/markdown-ansi": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.12.0.tgz", - "integrity": "sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.13.3.tgz", + "integrity": "sha512-B4rUdlNUulJs2xOQuDbN7Hq5a9roq8IZUcJ1vQ8PAv+zMGb7KCfqIIr/BSCDYGhayfAGBVWW8x55Kvrl1zrDYw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.0" + "chalk": "^4.1.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/markdown-ansi/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@parcel/node-resolver-core": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.3.0.tgz", - "integrity": "sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.4.3.tgz", + "integrity": "sha512-IEnMks49egEic1ITBp59VQyHzkSQUXqpU9hOHwqN3KoSTdZ6rEgrXcS3pa6tdXay4NYGlcZ88kFCE8i/xYoVCg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/rust": "2.12.0", - "@parcel/utils": "2.12.0", + "@parcel/diagnostic": "2.13.3", + "@parcel/fs": "2.13.3", + "@parcel/rust": "2.13.3", + "@parcel/utils": "2.13.3", "nullthrows": "^1.1.1", "semver": "^7.5.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2453,42 +2549,45 @@ } }, "node_modules/@parcel/package-manager": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.12.0.tgz", - "integrity": "sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/node-resolver-core": "3.3.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", - "@parcel/workers": "2.12.0", - "@swc/core": "^1.3.36", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.13.3.tgz", + "integrity": "sha512-FLNI5OrZxymGf/Yln0E/kjnGn5sdkQAxW7pQVdtuM+5VeN75yibJRjsSGv88PvJ+KvpD2ANgiIJo1RufmoPcww==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@parcel/diagnostic": "2.13.3", + "@parcel/fs": "2.13.3", + "@parcel/logger": "2.13.3", + "@parcel/node-resolver-core": "3.4.3", + "@parcel/types": "2.13.3", + "@parcel/utils": "2.13.3", + "@parcel/workers": "2.13.3", + "@swc/core": "^1.7.26", "semver": "^7.5.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.12.0" + "@parcel/core": "^2.13.3" } }, "node_modules/@parcel/plugin": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.12.0.tgz", - "integrity": "sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.13.3.tgz", + "integrity": "sha512-cterKHHcwg6q11Gpif/aqvHo056TR+yDVJ3fSdiG2xr5KD1VZ2B3hmofWERNNwjMcnR1h9Xq40B7jCKUhOyNFA==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/types": "2.12.0" + "@parcel/types": "2.13.3" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2496,17 +2595,19 @@ } }, "node_modules/@parcel/profiler": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.12.0.tgz", - "integrity": "sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.13.3.tgz", + "integrity": "sha512-ok6BwWSLvyHe5TuSXjSacYnDStFgP5Y30tA9mbtWSm0INDsYf+m5DqzpYPx8U54OaywWMK8w3MXUClosJX3aPA==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/events": "2.12.0", + "@parcel/diagnostic": "2.13.3", + "@parcel/events": "2.13.3", + "@parcel/types-internal": "2.13.3", "chrome-trace-event": "^1.0.2" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2514,12 +2615,13 @@ } }, "node_modules/@parcel/rust": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.12.0.tgz", - "integrity": "sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.13.3.tgz", + "integrity": "sha512-dLq85xDAtzr3P5200cvxk+8WXSWauYbxuev9LCPdwfhlaWo/JEj6cu9seVdWlkagjGwkoV1kXC+GGntgUXOLAQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2531,6 +2633,7 @@ "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", "dev": true, + "license": "MIT", "dependencies": { "detect-libc": "^1.0.3" }, @@ -2539,18 +2642,19 @@ } }, "node_modules/@parcel/transformer-sass": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.12.0.tgz", - "integrity": "sha512-xLLoSLPST+2AHJwFRLl4foArDjjy6P1RChP3TxMU2MVS1sbKGJnfFhFpHAacH8ASjuGtu5rbpfpHRZePlvoZxw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/transformer-sass/-/transformer-sass-2.13.3.tgz", + "integrity": "sha512-M8Ntscr+RGoQJ2ymIvT+f/1THea/6pVLJY2ky2N+fhtM6/iFx/7WnpJKL37IKAGIOn5AhqDqc0tPjK6H9moIbA==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/plugin": "2.12.0", + "@parcel/plugin": "2.13.3", "@parcel/source-map": "^2.1.1", "sass": "^1.38.0" }, "engines": { - "node": ">= 12.0.0", - "parcel": "^2.12.0" + "node": ">= 16.0.0", + "parcel": "^2.13.3" }, "funding": { "type": "opencollective", @@ -2558,48 +2662,78 @@ } }, "node_modules/@parcel/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.12.0.tgz", - "integrity": "sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.13.3.tgz", + "integrity": "sha512-+RpFHxx8fy8/dpuehHUw/ja9PRExC3wJoIlIIF42E7SLu2SvlTHtKm6EfICZzxCXNEBzjoDbamCRcN0nmTPlhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/types-internal": "2.13.3", + "@parcel/workers": "2.13.3" + } + }, + "node_modules/@parcel/types-internal": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/types-internal/-/types-internal-2.13.3.tgz", + "integrity": "sha512-Lhx0n+9RCp+Ipktf/I+CLm3zE9Iq9NtDd8b2Vr5lVWyoT8AbzBKIHIpTbhLS4kjZ80L3I6o93OYjqAaIjsqoZw==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/cache": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/package-manager": "2.12.0", + "@parcel/diagnostic": "2.13.3", + "@parcel/feature-flags": "2.13.3", "@parcel/source-map": "^2.1.1", - "@parcel/workers": "2.12.0", "utility-types": "^3.10.0" } }, "node_modules/@parcel/utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz", - "integrity": "sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.13.3.tgz", + "integrity": "sha512-yxY9xw2wOUlJaScOXYZmMGoZ4Ck4Kqj+p6Koe5kLkkWM1j98Q0Dj2tf/mNvZi4yrdnlm+dclCwNRnuE8Q9D+pw==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/codeframe": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/markdown-ansi": "2.12.0", - "@parcel/rust": "2.12.0", + "@parcel/codeframe": "2.13.3", + "@parcel/diagnostic": "2.13.3", + "@parcel/logger": "2.13.3", + "@parcel/markdown-ansi": "2.13.3", + "@parcel/rust": "2.13.3", "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.0", + "chalk": "^4.1.2", "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@parcel/watcher": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", - "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -2614,32 +2748,35 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", + "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2649,17 +2786,19 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", - "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2669,17 +2808,19 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", + "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2689,17 +2830,19 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", + "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2709,17 +2852,41 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", + "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", + "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2729,17 +2896,19 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", + "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2749,17 +2918,19 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", + "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2769,17 +2940,19 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", + "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2789,17 +2962,19 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", + "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2809,17 +2984,19 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", + "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2829,17 +3006,19 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", + "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2849,17 +3028,19 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", + "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -2869,27 +3050,28 @@ } }, "node_modules/@parcel/workers": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.12.0.tgz", - "integrity": "sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.13.3.tgz", + "integrity": "sha512-oAHmdniWTRwwwsKbcF4t3VjOtKN+/W17Wj5laiYB+HLkfsjGTfIQPj3sdXmrlBAGpI4omIcvR70PHHXnfdTfwA==", "dev": true, + "license": "MIT", "dependencies": { - "@parcel/diagnostic": "2.12.0", - "@parcel/logger": "2.12.0", - "@parcel/profiler": "2.12.0", - "@parcel/types": "2.12.0", - "@parcel/utils": "2.12.0", + "@parcel/diagnostic": "2.13.3", + "@parcel/logger": "2.13.3", + "@parcel/profiler": "2.13.3", + "@parcel/types-internal": "2.13.3", + "@parcel/utils": "2.13.3", "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" }, "peerDependencies": { - "@parcel/core": "^2.12.0" + "@parcel/core": "^2.13.3" } }, "node_modules/@sinclair/typebox": { @@ -2943,14 +3125,16 @@ "dev": true }, "node_modules/@swc/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.0.tgz", - "integrity": "sha512-d4vMzH6ICllDwlPuhset2h8gu/USHdbyfJim+2hQEdxC0UONtfpmu38XBgNqRjStrji1Q5M10jfeUZL3cu1i8g==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.4.tgz", + "integrity": "sha512-ut3zfiTLORMxhr6y/GBxkHmzcGuVpwJYX4qyXWuBKkpw/0g0S5iO1/wW7RnLnZbAi8wS/n0atRZoaZlXWBkeJg==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", + "peer": true, "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.9" + "@swc/types": "^0.1.17" }, "engines": { "node": ">=10" @@ -2960,16 +3144,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.0", - "@swc/core-darwin-x64": "1.7.0", - "@swc/core-linux-arm-gnueabihf": "1.7.0", - "@swc/core-linux-arm64-gnu": "1.7.0", - "@swc/core-linux-arm64-musl": "1.7.0", - "@swc/core-linux-x64-gnu": "1.7.0", - "@swc/core-linux-x64-musl": "1.7.0", - "@swc/core-win32-arm64-msvc": "1.7.0", - "@swc/core-win32-ia32-msvc": "1.7.0", - "@swc/core-win32-x64-msvc": "1.7.0" + "@swc/core-darwin-arm64": "1.10.4", + "@swc/core-darwin-x64": "1.10.4", + "@swc/core-linux-arm-gnueabihf": "1.10.4", + "@swc/core-linux-arm64-gnu": "1.10.4", + "@swc/core-linux-arm64-musl": "1.10.4", + "@swc/core-linux-x64-gnu": "1.10.4", + "@swc/core-linux-x64-musl": "1.10.4", + "@swc/core-win32-arm64-msvc": "1.10.4", + "@swc/core-win32-ia32-msvc": "1.10.4", + "@swc/core-win32-x64-msvc": "1.10.4" }, "peerDependencies": { "@swc/helpers": "*" @@ -2981,161 +3165,181 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.0.tgz", - "integrity": "sha512-2ylhM7f0HwUwLrFYZAe/dse8PCbPsYcJS3Dt7Q8NT3PUn7vy6QOMxNcOPPuDrnmaXqQQO3oxdmRapguTxaat9g==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.4.tgz", + "integrity": "sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.0.tgz", - "integrity": "sha512-SgVnN4gT1Rb9YfTkp4FCUITqSs7Yj0uB2SUciu5CV3HuGvS5YXCUzh+KrwpLFtx8NIgivISKcNnb41mJi98X8Q==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.4.tgz", + "integrity": "sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.0.tgz", - "integrity": "sha512-+Z9Dayart1iKJQEJJ9N/KS4z5EdXJE3WPFikY0jonKTo4Dd8RuyVz5yLvqcIMeVdz/SwximATaL6iJXw7hZS9A==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.4.tgz", + "integrity": "sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==", "cpu": [ "arm" ], "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.0.tgz", - "integrity": "sha512-UnLrCiZ1EI4shznJn0xP6DLgsXUSwtfsdgHhGYCrvbgVBBve3S9iFgVFEB3SPl7Q/TdowNbrN4zHU0oChfiNfw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.4.tgz", + "integrity": "sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.0.tgz", - "integrity": "sha512-H724UANA+ptsfwKRr9mnaDa9cb5fw0oFysiGKTgb3DMYcgk3Od0jMTnXVPFSVpo7FlmyxeC9K8ueUPBOoOK6XA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.4.tgz", + "integrity": "sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.0.tgz", - "integrity": "sha512-SY3HA0K0Dpqt1HIfMLGpwL4hd4UaL2xHP5oZXPlRQPhUDZrbb4PbI3ZJnh66c63eL4ZR8EJ+HRFI0Alx5p69Zw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.4.tgz", + "integrity": "sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.0.tgz", - "integrity": "sha512-cEJ2ebtV1v/5Ilb55E05J6F5SrHKQWzUttIhR5Mkayyo+yvPslcpByuFC3D+J7X1ebziTOBpWuMpUdjLfh3SMQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.4.tgz", + "integrity": "sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.0.tgz", - "integrity": "sha512-ecQOOmzEssz+m0pR4xDYCGuvn3E/l0nQ3tk5jp1NA1lsAy4bMV0YbYCHjptYvWL/UjhIerIp3IlCJ8x5DodSog==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.4.tgz", + "integrity": "sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.0.tgz", - "integrity": "sha512-gz81seZkRn3zMnVOc7L5k6F4vQC82gIxmHiL+GedK+A37XI/X26AASU3zxvORnqQbwQYXQ+AEVckxBmFlz3v2g==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.4.tgz", + "integrity": "sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==", "cpu": [ "ia32" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.0.tgz", - "integrity": "sha512-b5Fd1xEOw9uqBpj2lqsaR4Iq9UhiL84hNDcEsi6DQA7Y1l85waQAslTbS0E4/pJ1PISAs0jW0zIGLco1eaWBOg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.4.tgz", + "integrity": "sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 AND MIT", "optional": true, "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -3144,13 +3348,17 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true + "dev": true, + "license": "Apache-2.0", + "peer": true }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", + "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", "dev": true, + "license": "Apache-2.0", + "peer": true, "dependencies": { "@swc/counter": "^0.1.3" } @@ -3164,6 +3372,16 @@ "node": ">= 10" } }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -3344,13 +3562,6 @@ "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, - "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", - "dev": true, - "peer": true - }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -3652,6 +3863,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -3707,6 +3919,13 @@ "readable-stream": "^3.4.0" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3924,6 +4143,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -4018,6 +4238,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=0.8" @@ -4174,6 +4395,82 @@ "node": ">=12 || >=16" } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.1.tgz", + "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", @@ -4187,6 +4484,19 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -4199,6 +4509,42 @@ "node": ">=4" } }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", @@ -4367,6 +4713,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "license": "Apache-2.0", "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -4500,11 +4847,35 @@ } }, "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, - "peer": true + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } }, "node_modules/electron-to-chromium": { "version": "1.4.832", @@ -6400,6 +6771,8 @@ "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", + "peer": true, "dependencies": { "msgpackr": "^1.9.5", "node-addon-api": "^6.1.0", @@ -6423,7 +6796,9 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/locate-path": { "version": "5.0.0", @@ -6694,10 +7069,12 @@ "dev": true }, "node_modules/msgpackr": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", - "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "dev": true, + "license": "MIT", + "peer": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" } @@ -6708,7 +7085,9 @@ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, + "peer": true, "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, @@ -6729,7 +7108,9 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, + "license": "Apache-2.0", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -6739,7 +7120,9 @@ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, + "license": "MIT", "optional": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -6820,7 +7203,9 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/node-fetch": { "version": "2.7.0", @@ -6869,6 +7254,8 @@ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -6883,6 +7270,8 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, + "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8" } @@ -6935,11 +7324,25 @@ "node": ">=8" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nwsapi": { "version": "2.2.12", @@ -7011,10 +7414,12 @@ } }, "node_modules/ordered-binary": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", - "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", - "dev": true + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/os-name": { "version": "3.1.0", @@ -8343,6 +8748,32 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -8602,6 +9033,7 @@ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -8664,7 +9096,9 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", - "dev": true + "dev": true, + "license": "MIT", + "peer": true }, "node_modules/webidl-conversions": { "version": "7.0.0", diff --git a/package.json b/package.json index 83c8373ca..9c98c49f1 100644 --- a/package.json +++ b/package.json @@ -18,19 +18,19 @@ "keywords": [], "author": "Mate Academy", "license": "GPL-3.0", - "dependencies": {}, "devDependencies": { "@linthtml/linthtml": "^0.9.6", "@mate-academy/bemlint": "latest", "@mate-academy/linthtml-config": "latest", - "@mate-academy/scripts": "^1.8.6", + "@mate-academy/scripts": "^1.9.12", "@mate-academy/stylelint-config": "latest", - "@parcel/transformer-sass": "^2.12.0", + "@parcel/transformer-sass": "^2.13.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "prettier": "^3.3.2", "stylelint": "^16.7.0", - "stylelint-scss": "^6.4.1" + "stylelint-scss": "^6.4.1", + "svgo": "^3.3.2" }, "mateAcademy": { "projectType": "layout", diff --git a/src/images/Logo/Vector.svg b/src/images/Logo/Vector.svg new file mode 100644 index 000000000..909a4e677 --- /dev/null +++ b/src/images/Logo/Vector.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/about-us/about-us-desktop.png b/src/images/about-us/about-us-desktop.png new file mode 100644 index 000000000..5ee739fcb Binary files /dev/null and b/src/images/about-us/about-us-desktop.png differ diff --git a/src/images/about-us/about-us-phone.png b/src/images/about-us/about-us-phone.png new file mode 100644 index 000000000..64a061432 Binary files /dev/null and b/src/images/about-us/about-us-phone.png differ diff --git a/src/images/about-us/about-us-tablet.png b/src/images/about-us/about-us-tablet.png new file mode 100644 index 000000000..61401c497 Binary files /dev/null and b/src/images/about-us/about-us-tablet.png differ diff --git a/src/images/avatar-img.png b/src/images/avatar-img.png new file mode 100644 index 000000000..727ce520a Binary files /dev/null and b/src/images/avatar-img.png differ diff --git a/src/images/benefits/design.svg b/src/images/benefits/design.svg new file mode 100644 index 000000000..6927abc6c --- /dev/null +++ b/src/images/benefits/design.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/benefits/lighting.svg b/src/images/benefits/lighting.svg new file mode 100644 index 000000000..634f3af0d --- /dev/null +++ b/src/images/benefits/lighting.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/images/benefits/multiroom.svg b/src/images/benefits/multiroom.svg new file mode 100644 index 000000000..621302af1 --- /dev/null +++ b/src/images/benefits/multiroom.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/benefits/speacer.svg b/src/images/benefits/speacer.svg new file mode 100644 index 000000000..e6aad8bc2 --- /dev/null +++ b/src/images/benefits/speacer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/desktop-banner-2x.png b/src/images/desktop-banner-2x.png new file mode 100644 index 000000000..417550f27 Binary files /dev/null and b/src/images/desktop-banner-2x.png differ diff --git a/src/images/favicon 3.png b/src/images/favicon 3.png new file mode 100644 index 000000000..9b6687dd1 Binary files /dev/null and b/src/images/favicon 3.png differ diff --git a/src/images/feature/features__banner-desk.png b/src/images/feature/features__banner-desk.png new file mode 100644 index 000000000..7b27fc830 Binary files /dev/null and b/src/images/feature/features__banner-desk.png differ diff --git a/src/images/feature/features__banner.png b/src/images/feature/features__banner.png new file mode 100644 index 000000000..393907d5b Binary files /dev/null and b/src/images/feature/features__banner.png differ diff --git a/src/images/feature/slider__left-hover.png b/src/images/feature/slider__left-hover.png new file mode 100644 index 000000000..b5316042e Binary files /dev/null and b/src/images/feature/slider__left-hover.png differ diff --git a/src/images/feature/slider__left.png b/src/images/feature/slider__left.png new file mode 100644 index 000000000..052e894c2 Binary files /dev/null and b/src/images/feature/slider__left.png differ diff --git a/src/images/feature/slider__right-hover.png b/src/images/feature/slider__right-hover.png new file mode 100644 index 000000000..addc39fe1 Binary files /dev/null and b/src/images/feature/slider__right-hover.png differ diff --git a/src/images/feature/slider__right.png b/src/images/feature/slider__right.png new file mode 100644 index 000000000..4a79de2fb Binary files /dev/null and b/src/images/feature/slider__right.png differ diff --git a/src/images/footer-img/arrow-to-top.svg b/src/images/footer-img/arrow-to-top.svg new file mode 100644 index 000000000..ed07452a1 --- /dev/null +++ b/src/images/footer-img/arrow-to-top.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/footer-img/facebook-icon.svg b/src/images/footer-img/facebook-icon.svg new file mode 100644 index 000000000..ed1dd9ae0 --- /dev/null +++ b/src/images/footer-img/facebook-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/footer-img/instagram-icon.svg b/src/images/footer-img/instagram-icon.svg new file mode 100644 index 000000000..272f93c47 --- /dev/null +++ b/src/images/footer-img/instagram-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/footer-img/twitter-icon.svg b/src/images/footer-img/twitter-icon.svg new file mode 100644 index 000000000..a4c9356e3 --- /dev/null +++ b/src/images/footer-img/twitter-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/Icon-Burger-open.svg b/src/images/icons/Icon-Burger-open.svg new file mode 100644 index 000000000..4df42c36f --- /dev/null +++ b/src/images/icons/Icon-Burger-open.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/images/icons/Icon-Close.svg b/src/images/icons/Icon-Close.svg new file mode 100644 index 000000000..df1397add --- /dev/null +++ b/src/images/icons/Icon-Close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/mobil-banner-2x.png b/src/images/mobil-banner-2x.png new file mode 100644 index 000000000..82f5c33fd Binary files /dev/null and b/src/images/mobil-banner-2x.png differ diff --git a/src/images/signboard/signboard__banner-desktop.png b/src/images/signboard/signboard__banner-desktop.png new file mode 100644 index 000000000..1012f9d25 Binary files /dev/null and b/src/images/signboard/signboard__banner-desktop.png differ diff --git a/src/images/signboard/signboard__banner-phone.png b/src/images/signboard/signboard__banner-phone.png new file mode 100644 index 000000000..986c449a5 Binary files /dev/null and b/src/images/signboard/signboard__banner-phone.png differ diff --git a/src/images/signboard/signboard__banner-tablet.png b/src/images/signboard/signboard__banner-tablet.png new file mode 100644 index 000000000..c5b78bb27 Binary files /dev/null and b/src/images/signboard/signboard__banner-tablet.png differ diff --git a/src/images/technology/technology__banner-desktop.png b/src/images/technology/technology__banner-desktop.png new file mode 100644 index 000000000..b716e09a5 Binary files /dev/null and b/src/images/technology/technology__banner-desktop.png differ diff --git a/src/images/technology/technology__banner-phone.png b/src/images/technology/technology__banner-phone.png new file mode 100644 index 000000000..19902efe7 Binary files /dev/null and b/src/images/technology/technology__banner-phone.png differ diff --git a/src/images/technology/technology__banner-tablet.png b/src/images/technology/technology__banner-tablet.png new file mode 100644 index 000000000..d7cc6c98d Binary files /dev/null and b/src/images/technology/technology__banner-tablet.png differ diff --git a/src/images/testimonilas/testimonilas-vector.png b/src/images/testimonilas/testimonilas-vector.png new file mode 100644 index 000000000..594ce83fd Binary files /dev/null and b/src/images/testimonilas/testimonilas-vector.png differ diff --git a/src/index.html b/src/index.html index 8019b83ec..68d4cfac7 100644 --- a/src/index.html +++ b/src/index.html @@ -6,14 +6,605 @@ name="viewport" content="width=device-width, initial-scale=1.0" /> - Title + CrazyBaby + + + -

Hello Mate Academy

+
+
+
+ + + + +
+
+ + SPECS + + +
+ + + / + + +
+
+ + +
+ +
+ + + +
+
+
+ +
+
+
+
+ +
+

+ Futuristic Wireless Speaker +

+ +

+ Luna’s performance is balanced and smooth in all frequency + ranges which makes the music both naturally pleasant ands +

+
+
+
+ + + +
+
+
+
+ futuristic design + +

Futuristic Design

+ +

+ To give Luna a truly flawless look, we specifically picked + aircraft grade aluminum as its material and adopted both + three-dimensional stretch-bending technology and a high + precision cold forging technique. +

+
+ +
+ speacer system + +

Tweeter Speaker System

+ +

+ To deliver a more layered sound performance better than a sole + full-range speaker, our team equipped Luna with one more + tweeter speaker responsible for high-frequency sound + independently. +

+
+ +
+ multiroom system + +

Multiroom System

+ +

+ Luna is natively compatible with your home Wi-Fi. Set up + multiple speakers in different rooms to expand your music + experience into the entire house. +

+
+ +
+ lighting system + +

Intuitive Lighting System

+ +

+ An intuitive user interface allows you to adjust the hue and + saturation of color for lighting that fits any mood and + situation. +

+
+
+
+
+ +
+
+
+ +
+

DESIGNED FOR THE FUTURE

+ +
+
+ +
+

DESIGNED FOR THE FUTURE

+ +

+ In 2014, a group of geeky industrial designers, engineering + veterans and acoustic experts formed crazybaby. This is a bunch + of passionate people who are crazy enough to think they can + challenge the industry with disruptive audio products. +

+ + +
+
+
+ +
+

LUNA EYE

+ +
+
+ +
+

LUNA EYE

+ +

+ Luna Eye is to the essence of this innovative light and audio + system. It comprises an independent tweeter speaker, a light + guiding component, a dome and a ring ornament. +

+ + +
+
+
+ +
+
+
+

+ It really took me by surprise honestly to have such full + beautiful sound that coming out of this small compact device. + And with the brush aluminum surface, it feels so familiar. Like + my iPhone. +

+ + avatar + +

Garrett Martin

+ + Creative Director +
+
+
+ +
+

FEATURES

+ +
+
+
+
+

Connectivity

+ +
    +
  1. Hands Free Wireless Audio
  2. +
  3. Bluetooth 4.0 LE
  4. +
  5. Wi-Fi 2.4 GHz (802.11 b/g/n)
  6. +
  7. Smart Multiroom System Set Up
  8. +
  9. + Party Mode with 6.0 Units and above +
  10. +
  11. MESHNET Multi Speaker Network
  12. +
+
+ +
+

App Features

+ +
    +
  1. Customize Music Schedule
  2. +
  3. Wake Up with Favorite Songs
  4. +
  5. Home Detection Auto Wake Up
  6. +
  7. Color Wheel
  8. +
+
+ +
+

Sound & Music

+ +
    +
  1. Feel-in-chest Base Power
  2. +
  3. + Lossless Digital Audio Transmission +
  4. +
  5. Easy & Stable Stereo Pairing
  6. +
  7. Crisp and Clear High Frequency
  8. +
  9. + Streams from Cloud Music and Local Library +
  10. +
  11. + Auto Music from Last Song Stopped +
  12. +
+
+
+ +
+ + +
+ +
+ 01 + + /03 +
+ +
+
+
+
+ +
+
+

Connectivity

+ +
    +
  1. Hands Free Wireless Audio
  2. +
  3. Bluetooth 4.0 LE
  4. +
  5. Wi-Fi 2.4 GHz (802.11 b/g/n)
  6. +
  7. Smart Multiroom System Set Up
  8. +
  9. + Party Mode with 6.0 Units and above +
  10. +
  11. MESHNET Multi Speaker Network
  12. +
+
+ +
+

App Features

+ +
    +
  1. Customize Music Schedule
  2. +
  3. Wake Up with Favorite Songs
  4. +
  5. Home Detection Auto Wake Up
  6. +
  7. Color Wheel
  8. +
+
+
+ +
+
+

Sound & Music

+ +
    +
  1. Feel-in-chest Base Power
  2. +
  3. + Lossless Digital Audio Transmission +
  4. +
  5. Easy & Stable Stereo Pairing
  6. +
  7. + Crisp and Clear High Frequency Sound +
  8. +
  9. + Streams from Cloud Music and Local Library +
  10. +
  11. Auto Music from Last Song Stopped
  12. +
+
+ +
+
+
+
+
+
+ +
+
+

DO YOU HAVE ANY QUESTIONS?

+ +
+
+ + + + + + + +
+
+
+
+
+ +
+ + + +
+
+ + diff --git a/src/scripts/main.js b/src/scripts/main.js index ad9a93a7c..ceb79497e 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1 +1,125 @@ 'use strict'; + +//зміна мови +function getChangeLanguage(language) { + const buttonEng = document.getElementById('EN'); + const deskButtonEng = document.getElementById('desk-button-en'); + const buttonUa = document.getElementById('UA'); + const deskButtonUa = document.getElementById('desk-button-ua'); + + if (language === 'en') { + buttonUa.classList.remove('active-language'); + deskButtonUa.classList.remove('active-language'); + buttonEng.classList.add('active-language'); + deskButtonEng.classList.add('active-language'); + } else if (language === 'ua') { + buttonEng.classList.remove('active-language'); + deskButtonEng.classList.remove('active-language'); + buttonUa.classList.add('active-language'); + deskButtonUa.classList.add('active-language'); + } + + console.log(language); +} + +document + .querySelector('.actions-desk__buttons-en') + .addEventListener('click', () => getChangeLanguage('en')); + +document + .querySelector('.actions-desk__buttons-en') + .addEventListener('click', () => getChangeLanguage('en')); + +document + .querySelector('.actions-desk__buttons-ua') + .addEventListener('click', () => getChangeLanguage('ua')); + +document + .querySelector('.actions-desk__buttons-ua') + .addEventListener('click', () => getChangeLanguage('ua')); + +//зміна слайдy +const sliders = document.querySelector('.slider__container'); +const slide = document.querySelectorAll('.slide'); +const previousButton = document.querySelector('.slider__button-prev'); +const nextButton = document.querySelector('.slider__button-next'); +const slidesCount = document.querySelector('.slider__counter-number'); + +let currentSlide = 0; + +function changeSlide(direction) { + const totalSlides = slide.length - 3; + + if (direction >= totalSlides) { + currentSlide = 0; + } else if (direction < 0) { + currentSlide = totalSlides - 1; + } else { + currentSlide = direction; + } + + const offset = -currentSlide * 100; + sliders.style.transform = `translateX(${offset}%)`; + + slidesCount.textContent = `0${currentSlide + 1}`; +} + +nextButton.addEventListener('click', () => { + changeSlide(currentSlide + 1); +}); + +previousButton.addEventListener('click', () => { + changeSlide(currentSlide - 1); +}); + +// відкривання та закривання меню +const openButton = document.querySelector('.burger-menu__open'); +const closeButton = document.querySelector('.burger-menu__close'); +const menu = document.querySelector('.menu'); +const body = document.body; +const menuLinks = document.querySelectorAll('.nav__link'); + +function toggleButtons(isOpen) { + openButton.classList.toggle('rotated', isOpen); + openButton.style.display = isOpen ? 'none' : 'block'; + closeButton.style.display = isOpen ? 'block' : 'none'; +} + +function openMenu() { + toggleButtons(true); + menu.classList.add('menu--active'); + body.classList.add('no-scroll'); +} + +function closeMenu() { + toggleButtons(false); + menu.classList.remove('menu--active'); + body.classList.remove('no-scroll'); +} + +menuLinks.forEach((link) => { + link.addEventListener('click', (e) => { + e.preventDefault(); + closeMenu(); + + const targetId = link.getAttribute('href').substring(1); + const targetElement = document.getElementById(targetId); + if (targetElement) { + window.scrollTo({ + top: targetElement.offsetTop, + behavior: 'smooth', + }); + } + }); +}); + +openButton.addEventListener('click', openMenu); +closeButton.addEventListener('click', closeMenu); + +// form +document + .getElementById('questionsForm') + .addEventListener('submit', function (e) { + e.preventDefault(); + this.reset(); + }); diff --git a/src/styles/_fonts.scss b/src/styles/_fonts.scss deleted file mode 100644 index 45cdd5400..000000000 --- a/src/styles/_fonts.scss +++ /dev/null @@ -1,6 +0,0 @@ -@font-face { - font-family: Roboto, Arial, Helvetica, sans-serif; - src: url('../fonts/Roboto-Regular-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; -} diff --git a/src/styles/_typography.scss b/src/styles/_typography.scss deleted file mode 100644 index 1837eb46e..000000000 --- a/src/styles/_typography.scss +++ /dev/null @@ -1,3 +0,0 @@ -h1 { - @extend %h1; -} diff --git a/src/styles/_utils.scss b/src/styles/_utils.scss deleted file mode 100644 index 3280c3fe1..000000000 --- a/src/styles/_utils.scss +++ /dev/null @@ -1,3 +0,0 @@ -@import 'utils/vars'; -@import 'utils/mixins'; -@import 'utils/extends'; diff --git a/src/styles/blocks/about-us.scss b/src/styles/blocks/about-us.scss new file mode 100644 index 000000000..c429bf63a --- /dev/null +++ b/src/styles/blocks/about-us.scss @@ -0,0 +1,164 @@ +.about-us { + padding: 110px 30px; + + @include on-tablet { + padding: 140px 30px 140px 0; + } + + @include on-desktop { + padding: 170px 30px; + } + + &__title-phone { + font-size: 30px; + line-height: 40px; + font-weight: 700; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + + @include on-tablet { + display: none; + } + } + + &__title-tablet { + display: none; + + @include on-tablet { + display: flex; + + font-size: 36px; + font-weight: 700; + line-height: 46px; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + } + + @include on-desktop { + font-size: 56px; + font-weight: 700; + line-height: 70px; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + } + } + + &__container { + @include on-tablet { + display: flex; + justify-content: space-between; + + @include on-desktop { + display: flex; + justify-content: center; + gap: 30px; + } + } + } + + &__image { + background-image: url(/src/images/about-us/about-us-phone.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 260px; + height: 210px; + margin: 0 auto; + + @include on-tablet { + background-image: url(/src/images/about-us/about-us-tablet.png); + + width: 374px; + height: 415px; + margin: 0; + } + + @include on-desktop { + background-image: url(/src/images/about-us/about-us-desktop.png); + + width: 582px; + height: 388px; + + @include hover(transform, scale(1.05)); + } + } +} + +.info { + margin-top: 20px; + + @include on-tablet { + max-width: 340px; + margin-top: 0; + margin-left: 10px; + + @include on-desktop { + max-width: 582px; + } + } + + &__description { + font-size: 14px; + font-weight: 400; + line-height: 21px; + + text-align: left; + + color: $second-color; + + @include on-tablet { + font-size: 16px; + line-height: 24px; + } + } + + &__block { + margin-top: 30px; + max-width: max-content; + + @include on-tablet { + margin-top: 60px; + } + } + + &__link { + font-size: 12px; + font-weight: 700; + line-height: 14px; + + text-align: left; + + color: $link-color; + } + + &__desing { + display: block; + + width: 5px; + height: 1px; + + background-color: $link-color; + margin-top: 5px; + + transition: width 0.3s ease; + cursor: pointer; + + @include on-desktop { + width: 64px; + } + } +} + +.info__block:hover .info__desing { + width: 100%; +} diff --git a/src/styles/blocks/benefits.scss b/src/styles/blocks/benefits.scss new file mode 100644 index 000000000..7ade3dde9 --- /dev/null +++ b/src/styles/blocks/benefits.scss @@ -0,0 +1,108 @@ +.benefits { + padding-top: 110px; + overflow: hidden; + + @include on-tablet { + padding-top: 140px; + } + + @include on-desktop { + padding-top: 82px; + } + + &__container { + padding: 0 30px; + + &::-webkit-scrollbar { + display: none; + } + } + + &__cards { + display: flex; + align-items: self-start; + scroll-snap-align: center; + gap: 20px; + box-sizing: border-box; + overflow-x: auto; + scroll-snap-type: x mandatory; + + &::-webkit-scrollbar { + display: none; + } + + @include on-tablet { + overflow-x: hidden; + scroll-snap-type: none; + + display: flex; + flex-wrap: wrap; + justify-content: center; + } + + @include on-desktop { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + } + } +} + +.card { + display: flex; + + justify-content: center; + align-items: center; + flex-direction: column; + box-sizing: border-box; + + width: 100%; + flex: 0 0 100%; + padding: 0 10px; + + @include on-tablet { + width: 310px; + flex: none; + padding: 0; + + transition: transform 0.3s ease; + + @include hover(transform, scale(0.9)); + } + + @include on-desktop { + max-width: 260px; + } + + &__title { + font-size: 22px; + font-weight: 700; + line-height: 28px; + + text-align: center; + text-transform: uppercase; + + margin-bottom: 20px; + margin-top: 40px; + + color: $main-color; + + @include on-desktop { + max-height: 28px; + margin-bottom: 62px; + } + + @include on-tablet { + max-height: 28px; + margin-bottom: 62px; + } + } + + &__description { + font-size: 14px; + font-weight: 400; + line-height: 21px; + text-align: center; + color: $second-color; + } +} diff --git a/src/styles/blocks/features.scss b/src/styles/blocks/features.scss new file mode 100644 index 000000000..1f0fc179c --- /dev/null +++ b/src/styles/blocks/features.scss @@ -0,0 +1,288 @@ +.features { + padding-bottom: 90px; + + @include on-tablet { + padding: 0 30px 140px; + } + + @include on-desktop { + padding-bottom: 170px; + } + + &__title { + font-size: 30px; + font-weight: 700; + line-height: 40px; + + text-align: left; + margin-bottom: 32px; + padding: 0 30px; + + color: $main-color; + + @include on-tablet { + padding: 0; + } + + @include on-desktop { + font-size: 56px; + line-height: 70px; + } + } + + &__container { + background-color: $secondary-background; + + @include on-tablet { + height: 555px; + } + + @include on-desktop { + height: 680px; + padding-top: 60px; + } + } + + &__slider { + @include on-desktop { + display: none; + } + } + + &__box-first { + display: none; + gap: 132px; + padding: 0; + margin-bottom: 56px; + padding-left: 22px; + + @include on-desktop { + display: flex; + } + } + + &__box-second { + display: none; + gap: 132px; + padding: 0; + width: 100%; + padding-left: 22px; + overflow: hidden; + + @include on-desktop { + display: flex; + } + } +} + +.slider { + padding-top: 30px; + overflow: hidden; + + @include on-tablet { + padding-top: 60px; + } + + @include on-desktop { + display: none; + } + + &__container { + display: flex; + width: 100%; + + transition: transform 0.5s ease-in-out; + } + + &__buttons { + display: flex; + justify-content: center; + align-items: center; + + margin-top: 50px; + + @include on-tablet { + justify-content: start; + padding-left: 90px; + position: relative; + z-index: 5; + } + } + + &__button-prev { + background-image: url(/src/images/feature/slider__left.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 48px; + height: 14px; + + background-color: $secondary-background; + + @include hover( + background-image, + url('/src/images/feature/slider__left-hover.png') + ); + } + + &__button-next { + background-image: url(/src/images/feature/slider__right.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 48px; + height: 14px; + + background-color: $secondary-background; + + @include hover( + background-image, + url('/src/images/feature/slider__right-hover.png') + ); + } + + &__counter { + display: flex; + justify-content: center; + align-items: center; + margin-top: 10px; + + @include on-tablet { + justify-content: start; + padding-left: 114px; + } + } + + &__counter-number { + font-size: 16px; + font-weight: 400; + line-height: 24px; + + text-align: left; + margin-right: 4px; + + color: $main-color; + } + + &__counter-length { + font-size: 11px; + font-weight: 400; + line-height: 13px; + + text-align: left; + + color: $link-color; + } + + &__banner { + display: flex; + justify-content: end; + width: 100%; + + @include on-tablet { + position: relative; + bottom: 48px; + right: 0; + z-index: 1; + } + + @include on-desktop { + display: flex; + justify-content: start; + bottom: 0; + } + } + + &__banner-img { + background-image: url(/src/images/feature/features__banner.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 320px; + height: 173px; + + background-color: $secondary-background; + + @include on-tablet { + width: 415px; + height: 225px; + } + + @include on-desktop { + background-image: url(/src/images/feature/features__banner-desk.png); + width: 543px; + height: 300px; + } + } +} + +.slide { + padding: 0 30px; + min-width: 100%; + + @include on-desktop { + min-width: max-content; + padding: 0; + } + + @include on-tablet { + padding: 0 30px 0 90px; + } + + &__title { + font-size: 18px; + font-weight: 700; + line-height: 22px; + + margin-bottom: 20px; + text-align: left; + + text-transform: uppercase; + + color: $slider-title; + + @include on-desktop { + font-size: 34px; + line-height: 42px; + margin-bottom: 30px; + } + } + + &__list { + display: flex; + flex-direction: column; + gap: 10px; + } + + &__item { + position: relative; + font-size: 14px; + font-weight: 400; + line-height: 21px; + + text-align: left; + margin-left: 10px; + + color: $main-color; + + @include on-desktop { + font-size: 16px; + line-height: 24px; + } + } + + &__item::before { + content: (''); + position: absolute; + + left: -10px; + top: 50%; + width: 4px; + height: 4px; + + background-color: $main-color; + } +} diff --git a/src/styles/blocks/footer.scss b/src/styles/blocks/footer.scss new file mode 100644 index 000000000..f8a03b063 --- /dev/null +++ b/src/styles/blocks/footer.scss @@ -0,0 +1,67 @@ +.footer { + padding: 0 30px 30px; + + &__link { + display: block; + width: 24px; + height: 24px; + + @include hover(transform, scale(1.4)); + + &--facebook { + background: url('/src/images/footer-img/facebook-icon.svg') no-repeat + center; + } + + &--twitter { + background: url('/src/images/footer-img/twitter-icon.svg') no-repeat + center; + } + + &--instagram { + background: url('/src/images/footer-img/instagram-icon.svg') no-repeat + center; + } + } + &__desk { + display: none; + + @include on-tablet { + display: flex; + justify-content: space-between; + align-items: center; + + padding-bottom: 60px; + } + } + + &__block { + display: flex; + flex-direction: column; + gap: 30px; + + @include on-desktop { + gap: 60px; + } + } + + &__list { + display: flex; + justify-content: center; + gap: 40px; + } + + &__rights { + font-size: 14px; + font-weight: 400; + line-height: 21px; + + text-align: center; + + color: #bdbdbd; + } +} + +.scroll-top { + @include hover(transform, scale(1.4)); +} diff --git a/src/styles/blocks/header.scss b/src/styles/blocks/header.scss new file mode 100644 index 000000000..ed7a5d776 --- /dev/null +++ b/src/styles/blocks/header.scss @@ -0,0 +1,51 @@ +.header { + &__container { + padding: 30px 25px; + + position: relative; + display: flex; + align-items: center; + justify-content: space-between; + } +} + +.logo { + &__img { + @include hover(transform, scale(1.2)); + } +} + +.burger-menu { + @include on-desktop { + display: none; + } + + &__open { + background-image: url(/src/images/icons/Icon-Burger-open.svg); + background-repeat: no-repeat; + background-position: center; + + background-color: #f9f9f9; + + width: $iconWidth; + height: $iconHeight; + + cursor: pointer; + + @include hover(transform, scale(1.4)); + } + + &__close { + display: none; + + background-image: url(/src/images/icons/Icon-Close.svg); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + + width: $iconWidth; + height: $iconHeight; + + cursor: pointer; + } +} diff --git a/src/styles/blocks/nav.scss b/src/styles/blocks/nav.scss new file mode 100644 index 000000000..b8091442b --- /dev/null +++ b/src/styles/blocks/nav.scss @@ -0,0 +1,181 @@ +.menu { + display: flex; + flex-direction: column; + position: absolute; + z-index: 10; + + left: 0; + top: 74px; + bottom: 30px; + padding: 0 25px; + + width: 100%; + height: 100vh; + + background-color: $background-color; + + transform: translateX(100%); + opacity: 0; + transition: + transform 0.5s ease, + opacity 0.5s ease; + + &--active { + transform: translateX(0); + opacity: 1; + } + + @include on-tablet { + top: 80px; + } + + @include on-desktop { + display: none; + } +} + +.nav { + height: max-content; + overflow: hidden; + + margin-top: 30px; + padding-bottom: 50px; + + @include on-tablet { + margin-top: 40px; + } + + @include on-desktop { + margin: 0 auto; + margin-top: 170px; + } + + &__list { + display: flex; + flex-direction: column; + gap: 25px; + + @include on-tablet { + gap: 40px; + } + + @include on-desktop { + display: flex; + flex-direction: row; + gap: 84px; + justify-content: center; + } + } + + &__link { + font-size: 14px; + font-weight: 400; + line-height: 20px; + text-align: left; + color: $main-color; + + @include hover(color, $link-color); + + @include on-tablet { + font-size: 22px; + line-height: 28px; + } + + @include on-desktop { + font-size: 14px; + line-height: 20px; + } + } +} + +.actions-desk { + width: 100%; + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 30px; + + @include on-phone { + display: none; + } + + @include on-desktop { + margin-right: 0; + } + + &__controll { + display: flex; + align-items: center; + gap: 30px; + } + + &__specs { + font-size: 14px; + font-weight: 300; + line-height: 16.93px; + text-align: left; + color: #4f4f4f; + + @include hover(color, $link-color); + } + + &__buttons { + display: flex; + gap: 4px; + margin-right: 30px; + + &-en { + font-size: 14px; + font-weight: 300; + line-height: 18px; + text-align: left; + color: #4f4f4f; + cursor: pointer; + + background-color: $background-color; + + @include hover(color, $link-color); + } + + &-ua { + font-size: 14px; + font-weight: 300; + line-height: 18px; + text-align: left; + color: #4f4f4f; + cursor: pointer; + + background-color: $background-color; + + @include hover(color, $link-color); + } + } + + &__buy { + display: flex; + justify-content: center; + align-items: center; + + width: 100px; + height: 48px; + cursor: pointer; + + color: white; + background-color: $main-color; + + @include hover(background-color, $main-color-hover); + } +} + +.navigation-desk { + display: none; + + @include on-desktop { + display: flex; + } +} + +.active-language { + color: #110d0d; + font-weight: 300; +} diff --git a/src/styles/blocks/presentation.scss b/src/styles/blocks/presentation.scss new file mode 100644 index 000000000..b4c61250c --- /dev/null +++ b/src/styles/blocks/presentation.scss @@ -0,0 +1,99 @@ +.presentation { + &__container { + display: flex; + + flex-direction: column; + justify-content: center; + + @include on-tablet { + display: flex; + + flex-direction: row-reverse; + justify-content: space-between; + align-items: center; + + margin-top: 90px; + } + } + + &__banner { + background-image: url(/src/images/mobil-banner-2x.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + min-width: 320px; + height: 245px; + + @include on-tablet { + min-width: 430px; + height: 317px; + } + + @include on-desktop { + background-image: url(/src/images/desktop-banner-2x.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 816px; + height: 464px; + } + } + + &__info { + margin-top: 40px; + padding: 0 30px; + + @include on-tablet { + margin-top: 0; + padding: 0 0 0 25px; + z-index: 2; + } + + @include on-desktop { + padding: 0 0 0 25px; + margin-right: 110px; + } + } + + &__info-title { + font-size: 40px; + max-width: 260px; + line-height: 52px; + font-weight: 700; + + margin: 0 auto; + text-align: left; + text-transform: uppercase; + + color: $main-color; + + @include on-tablet { + font-size: 48px; + line-height: 62px; + } + + @include on-desktop { + font-size: 62px; + line-height: 78px; + } + } + + &__info-description { + font-size: 16px; + font-weight: 400; + line-height: 24px; + max-width: 260px; + + padding-top: 20px; + text-align: left; + margin: 0 auto; + + color: $main-color; + + @include on-tablet { + margin-top: 30px; + } + } +} diff --git a/src/styles/blocks/question.scss b/src/styles/blocks/question.scss new file mode 100644 index 000000000..2e0798ac6 --- /dev/null +++ b/src/styles/blocks/question.scss @@ -0,0 +1,126 @@ +.questions { + padding-bottom: 110px; + + @include on-tablet { + padding-bottom: 140px; + } + + @include on-desktop { + padding-bottom: 170px; + } + + &__container { + padding: 0 30px; + + @include on-tablet { + display: flex; + justify-content: space-between; + } + } + + &__title { + font-size: 30px; + font-weight: 700; + line-height: 40px; + + text-align: left; + + color: $main-color; + + @include on-tablet { + width: 50%; + font-size: 36px; + line-height: 46px; + } + + @include on-desktop { + font-size: 56px; + line-height: 70px; + } + } +} + +.form { + display: flex; + flex-direction: column; + + width: 100%; + + margin-top: 28px; + + @include on-tablet { + min-width: 340px; + margin-top: 0; + } + + @include on-desktop { + min-width: 582px; + } + + &__email { + height: 48px; + font-size: 14px; + line-height: 24px; + + margin-bottom: 20px; + } + + &__message { + height: 128px; + outline: none; + resize: none; + margin-bottom: 30px; + } + + &__email, + &__message { + padding: 12px 0 12px 20px; + border: 1px solid #828282; + color: $main-color; + + @include hover(border-color, $link-color); + @include hover(transform, scale(1.05)); + + &:focus { + border-color: $hover-color; + } + + &:-webkit-autofill { + $box-shadow: 0 1000px $background-color inset; + + transition: background-color 5000s ease-in-out 0s; + } + + &:-webkit-autifill:hover, + &:-webkit-autofill:focus { + box-shadow: 0 1000px $hover-background-color inset; + } + } + + &__button { + display: flex; + cursor: pointer; + + height: 42px; + width: 102px; + font-size: 12px; + font-weight: 700; + line-height: 14px; + + padding: 13px 34px; + text-align: left; + justify-content: center; + align-items: center; + + background-color: $link-color; + color: white; + + @include hover(background-color, $slider-title); + + @include on-desktop { + padding: 17px 42px; + height: 48px; + width: 124px; + } + } +} diff --git a/src/styles/blocks/signboard.scss b/src/styles/blocks/signboard.scss new file mode 100644 index 000000000..9a8287839 --- /dev/null +++ b/src/styles/blocks/signboard.scss @@ -0,0 +1,36 @@ +.signboard { + padding-top: 110px; + + @include on-tablet { + padding-top: 140px; + } + + @include on-desktop { + padding-top: 170px; + } + + &__img { + background-image: url(/src/images/signboard/signboard__banner-phone.png); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + + min-width: 295px; + min-height: 195px; + margin: 0 auto; + + @include on-tablet { + background-image: url(/src/images/signboard/signboard__banner-tablet.png); + + min-width: 700px; + min-height: 430px; + } + + @include on-desktop { + background-image: url(/src/images/signboard/signboard__banner-desktop.png); + + min-width: 846px; + min-height: 520px; + } + } +} diff --git a/src/styles/blocks/technology.scss b/src/styles/blocks/technology.scss new file mode 100644 index 000000000..553b089f1 --- /dev/null +++ b/src/styles/blocks/technology.scss @@ -0,0 +1,167 @@ +.technology { + padding: 0 30px; + + @include on-tablet { + padding: 0 0 0 30px; + } + + @include on-desktop { + padding: 0 30px; + } + + &__title-phone { + font-size: 36px; + font-weight: 700; + line-height: 46px; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + + @include on-tablet { + display: none; + } + } + + &__title-tablet { + display: none; + + @include on-tablet { + display: flex; + + font-size: 36px; + font-weight: 700; + line-height: 46px; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + } + + @include on-desktop { + font-size: 56px; + font-weight: 700; + line-height: 70px; + + text-align: left; + margin-bottom: 30px; + + color: $main-color; + } + } + + &__container { + @include on-tablet { + display: flex; + justify-content: space-between; + flex-direction: row-reverse; + + @include on-desktop { + display: flex; + justify-content: center; + gap: 30px; + } + } + } + + &__image { + background-image: url(/src/images/technology/technology__banner-phone.png); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + + width: 260px; + height: 210px; + margin: 0 auto; + + @include on-tablet { + border-image: url(/src/images/technology/technology__banner-tablet.png); + + width: 374px; + height: 415px; + margin: 0; + margin-left: 10px; + } + + @include on-desktop { + background-image: url(/src/images/technology/technology__banner-desktop.png); + + width: 582px; + height: 388px; + margin-left: 0; + + @include hover(transform, scale(1.05)); + } + } +} + +.info { + margin-top: 20px; + + @include on-tablet { + max-width: 340px; + margin-top: 0; + + @include on-desktop { + max-width: 582px; + } + } + + &__description { + font-size: 14px; + font-weight: 400; + line-height: 21px; + + text-align: left; + + color: $second-color; + + @include on-tablet { + font-size: 16px; + line-height: 24px; + } + } + + &__block { + margin-top: 30px; + max-width: max-content; + + @include on-tablet { + margin-top: 60px; + } + } + + &__link { + font-size: 12px; + font-weight: 700; + line-height: 14px; + + text-align: left; + + color: $link-color; + } + + &__design { + display: block; + + width: 53px; + height: 1px; + + margin-top: 5px; + + background-color: $link-color; + + transition: width 0.3s ease; + cursor: pointer; + + @include on-desktop { + width: 64px; + } + } +} + +.info__block:hover .info__design { + width: 100%; +} diff --git a/src/styles/blocks/testimonilas.scss b/src/styles/blocks/testimonilas.scss new file mode 100644 index 000000000..3d6037c84 --- /dev/null +++ b/src/styles/blocks/testimonilas.scss @@ -0,0 +1,97 @@ +.testimonilas { + padding: 110px 30px; + + @include on-tablet { + padding-top: 170px; + padding-bottom: 170px; + } + + @include on-desktop { + padding-top: 170px; + padding-bottom: 170px; + } + + &__container { + position: relative; + z-index: 1; + } + + &__container::before { + content: ''; + position: absolute; + inset: 0; + background-image: url(/src/images/testimonilas/testimonilas-vector.png); + background-size: contain; + background-position: center; + background-repeat: no-repeat; + z-index: -1; + max-width: 233px; + max-height: 192px; + margin: 0 auto; + } + + &__content { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + + @include on-desktop { + max-width: 786px; + margin: 0 auto; + } + } + + &__description { + font-size: 14px; + font-weight: 700; + line-height: 20px; + + text-align: center; + margin-bottom: 30px; + padding-top: 50px; + + color: $main-color; + + @include on-tablet { + font-size: 24px; + line-height: 36px; + + padding-top: 60px; + margin-bottom: 40px; + } + + @include on-desktop { + margin-bottom: 30px; + } + } + + &__avatar-img { + width: 62px; + height: 62px; + + @include hover(transform, scale(1.4)); + } + + &__name { + font-size: 16px; + font-weight: 700px; + line-height: 22px; + + text-align: center; + margin-top: 30px; + + color: $main-color; + } + + &__role { + font-size: 14px; + font-weight: 400px; + line-height: 21px; + + text-align: center; + margin-top: 5px; + + color: $second-color; + } +} diff --git a/src/styles/global.scss b/src/styles/global.scss new file mode 100644 index 000000000..0c2169533 --- /dev/null +++ b/src/styles/global.scss @@ -0,0 +1,5 @@ +.wrapper { + max-width: 1260px; + margin: 0 auto; + overflow: hidden; +} diff --git a/src/styles/main.scss b/src/styles/main.scss index fb9195d12..40e7b10f5 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -1,7 +1,19 @@ -@import 'utils'; -@import 'fonts'; -@import 'typography'; +@import './utils/normalize'; +@import './utils/mixins'; +@import './utils/vars'; +@import 'global'; +@import './blocks/header'; +@import './blocks/nav'; +@import './blocks/presentation'; +@import './blocks/benefits'; +@import './blocks/signboard'; +@import './blocks/about-us'; +@import './blocks/technology'; +@import './blocks/testimonilas'; +@import './blocks/features'; +@import './blocks//question'; +@import './blocks/footer'; body { - background: $c-gray; + background: $background-color; } diff --git a/src/styles/utils/_extends.scss b/src/styles/utils/_extends.scss deleted file mode 100644 index d7201e7b3..000000000 --- a/src/styles/utils/_extends.scss +++ /dev/null @@ -1,4 +0,0 @@ -%h1 { - font-family: Roboto, sans-serif; - font-weight: 400; -} diff --git a/src/styles/utils/_mixins.scss b/src/styles/utils/_mixins.scss deleted file mode 100644 index 80c79780d..000000000 --- a/src/styles/utils/_mixins.scss +++ /dev/null @@ -1,6 +0,0 @@ -@mixin hover($_property, $_toValue) { - transition: #{$_property} 0.3s; - &:hover { - #{$_property}: $_toValue; - } -} diff --git a/src/styles/utils/_vars.scss b/src/styles/utils/_vars.scss deleted file mode 100644 index aeb006ffb..000000000 --- a/src/styles/utils/_vars.scss +++ /dev/null @@ -1 +0,0 @@ -$c-gray: #eee; diff --git a/src/styles/utils/mixins.scss b/src/styles/utils/mixins.scss new file mode 100644 index 000000000..d9a83075b --- /dev/null +++ b/src/styles/utils/mixins.scss @@ -0,0 +1,24 @@ +@mixin hover($_property, $_toValue) { + transition: #{$_property} 0.3s; + &:hover { + #{$_property}: $_toValue; + } +} + +@mixin on-desktop { + @media (min-width: 1024px) { + @content; + } +} + +@mixin on-tablet { + @media (min-width: 728px) { + @content; + } +} + +@mixin on-phone { + @media (max-width: 727px) { + @content; + } +} diff --git a/src/styles/utils/normalize.scss b/src/styles/utils/normalize.scss new file mode 100644 index 000000000..105db76a4 --- /dev/null +++ b/src/styles/utils/normalize.scss @@ -0,0 +1,15 @@ +* { + font-family: Inter, sans-serif; + box-sizing: border-box; + list-style: none; + text-decoration: none; + margin: 0; + padding: 0; + border: none; +} + +html, +body { + overflow-x: hidden; + scroll-behavior: smooth; +} diff --git a/src/styles/utils/vars.scss b/src/styles/utils/vars.scss new file mode 100644 index 000000000..3668c46e4 --- /dev/null +++ b/src/styles/utils/vars.scss @@ -0,0 +1,16 @@ +$background-color: #f9f9f9; +$main-color: #333; +$main-color-hover: #131313; +$second-color: #7c7c7c; +$link-color: #0db2b3; +$secondary-background: #cfeff0; +$slider-title: #0c797a; + +// icon-size +$iconWidth: 24px; +$iconHeight: 24px; + +// hover colors +$hover-color: rgb(59, 65, 193); +$hover-background-color: $link-color; +$hover-text-color: $main-color-hover;