diff --git a/.github/workflows/test.yml-template b/.github/workflows/test.yml-template new file mode 100644 index 00000000..8b5743ec --- /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/.linthtmlrc.json b/.linthtmlrc.json index 477c99b1..c427a687 100644 --- a/.linthtmlrc.json +++ b/.linthtmlrc.json @@ -26,16 +26,7 @@ "indent-width-cont": true, "input-radio-req-name": true, "spec-char-escape": true, - "tag-bans": [ - "b", - "i", - "u", - "center", - "style", - "marquee", - "font", - "s" - ], + "tag-bans": ["b", "i", "u", "center", "style", "marquee", "font", "s"], "tag-name-lowercase": true, "tag-name-match": true, "tag-self-close": false, diff --git a/README.md b/README.md index 302783df..f3e58b63 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # KateVR landing page (HARD) -**⚠️ 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).** +**⚠️ 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).** Implement landing page according to [Figma design](https://www.figma.com/file/Blpg4iapsI7fRqJeSp6DvK/KatVR?node-id=1%3A370) - Use BEM and SCSS @@ -9,9 +9,8 @@ Implement landing page according to [Figma design](https://www.figma.com/file/Bl - Tablet 640px - Mobile (> 320px) - - ## 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`). @@ -25,7 +24,7 @@ Implement landing page according to [Figma design](https://www.figma.com/file/Bl 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/layout_KateVR/). + [DEMO LINK](https://OlehYavoriv.github.io/layout_KateVR/). 14. Copy `DEMO LINK` to the PR description. > To update you PR repeat steps 7-11. diff --git a/package-lock.json b/package-lock.json index 05ac5122..d6216858 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", "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": { @@ -37,12 +38,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -50,30 +52,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", - "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", - "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.9", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-module-transforms": "^7.24.9", - "@babel/helpers": "^7.24.8", - "@babel/parser": "^7.24.8", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.9", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -98,29 +100,30 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", - "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dev": true, "dependencies": { - "@babel/types": "^7.24.9", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -137,67 +140,28 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", - "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -207,161 +171,62 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/parser": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@babel/types": "^7.26.3" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -405,6 +270,36 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -430,12 +325,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -516,6 +411,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -532,12 +442,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -547,33 +457,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.8", - "@babel/types": "^7.24.8", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -582,14 +489,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", - "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -602,9 +508,9 @@ "dev": true }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, "funding": [ { @@ -617,16 +523,16 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", "dev": true, "funding": [ { @@ -639,13 +545,13 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", "dev": true, "funding": [ { @@ -658,17 +564,17 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "dev": true, "funding": [ { @@ -681,10 +587,10 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^7.0.0" } }, "node_modules/@dual-bundle/import-meta-resolve": { @@ -1001,9 +907,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1049,15 +955,15 @@ } }, "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==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", "dev": true }, "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, "dependencies": { "@lezer/common": "^1.0.0" @@ -1132,7 +1038,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-darwin-x64": { "version": "2.8.5", @@ -1145,7 +1052,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-arm": { "version": "2.8.5", @@ -1158,7 +1066,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-arm64": { "version": "2.8.5", @@ -1171,7 +1080,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-linux-x64": { "version": "2.8.5", @@ -1184,7 +1094,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@lmdb/lmdb-win32-x64": { "version": "2.8.5", @@ -1197,7 +1108,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@mate-academy/bemlint": { "version": "0.1.2", @@ -1222,9 +1134,9 @@ "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, "dependencies": { "@octokit/rest": "^17.11.2", @@ -1261,6 +1173,96 @@ "stylelint-scss": "^5.3.0" } }, + "node_modules/@mate-academy/stylelint-config/node_modules/@csstools/css-parser-algorithms": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@mate-academy/stylelint-config/node_modules/@csstools/css-tokenizer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@mate-academy/stylelint-config/node_modules/@csstools/media-query-list-parser": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@mate-academy/stylelint-config/node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, "node_modules/@mate-academy/stylelint-config/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1334,6 +1336,20 @@ } } }, + "node_modules/@mate-academy/stylelint-config/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "peer": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/@mate-academy/stylelint-config/node_modules/decamelize": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", @@ -1440,6 +1456,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@mate-academy/stylelint-config/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "peer": true + }, "node_modules/@mate-academy/stylelint-config/node_modules/meow": { "version": "10.1.5", "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", @@ -1500,6 +1523,19 @@ "postcss": "^8.3.3" } }, + "node_modules/@mate-academy/stylelint-config/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@mate-academy/stylelint-config/node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -1802,7 +1838,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { "version": "3.0.3", @@ -1815,7 +1852,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { "version": "3.0.3", @@ -1828,7 +1866,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { "version": "3.0.3", @@ -1841,7 +1880,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { "version": "3.0.3", @@ -1854,7 +1894,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { "version": "3.0.3", @@ -1867,7 +1908,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -2041,9 +2083,9 @@ } }, "node_modules/@octokit/request-error": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.4.tgz", - "integrity": "sha512-VpAhIUxwhWZQImo/dWAN/NpPqqojR6PSLgLYAituLM6U+ddx9hCioFGwBr5Mi+oi5CLeJkcAs3gJ0PYYzU6wUg==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", + "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", "dev": true, "peer": true, "dependencies": { @@ -2229,9 +2271,9 @@ } }, "node_modules/@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", "dev": true, "peer": true, "dependencies": { @@ -2239,78 +2281,95 @@ } }, "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, + "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, "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, + "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, "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 +2377,29 @@ } }, "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, "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, "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 +2407,25 @@ } }, "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, + "engines": { + "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, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2358,39 +2433,42 @@ } }, "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, + "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, "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 +2476,16 @@ } }, "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, "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 +2493,54 @@ } }, "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, "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, + "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, + "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 +2548,43 @@ } }, "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, + "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, "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 +2592,18 @@ } }, "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, "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 +2611,12 @@ } }, "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, "engines": { - "node": ">= 12.0.0" + "node": ">= 16.0.0" }, "funding": { "type": "opencollective", @@ -2539,18 +2636,18 @@ } }, "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, "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 +2655,72 @@ } }, "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, "dependencies": { - "@parcel/cache": "2.12.0", - "@parcel/diagnostic": "2.12.0", - "@parcel/fs": "2.12.0", - "@parcel/package-manager": "2.12.0", + "@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, + "dependencies": { + "@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, "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, + "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, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -2614,24 +2735,25 @@ "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" ], @@ -2649,9 +2771,9 @@ } }, "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" ], @@ -2669,9 +2791,9 @@ } }, "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" ], @@ -2689,9 +2811,9 @@ } }, "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" ], @@ -2709,9 +2831,29 @@ } }, "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, + "optional": true, + "os": [ + "linux" + ], + "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" ], @@ -2729,9 +2871,9 @@ } }, "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" ], @@ -2749,9 +2891,9 @@ } }, "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" ], @@ -2769,9 +2911,9 @@ } }, "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" ], @@ -2789,9 +2931,9 @@ } }, "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" ], @@ -2809,9 +2951,9 @@ } }, "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" ], @@ -2829,9 +2971,9 @@ } }, "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" ], @@ -2849,9 +2991,9 @@ } }, "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" ], @@ -2869,27 +3011,27 @@ } }, "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, "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": { @@ -2937,20 +3079,21 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "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.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.1.tgz", + "integrity": "sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==", "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.9" + "@swc/types": "^0.1.17" }, "engines": { "node": ">=10" @@ -2960,16 +3103,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.1", + "@swc/core-darwin-x64": "1.10.1", + "@swc/core-linux-arm-gnueabihf": "1.10.1", + "@swc/core-linux-arm64-gnu": "1.10.1", + "@swc/core-linux-arm64-musl": "1.10.1", + "@swc/core-linux-x64-gnu": "1.10.1", + "@swc/core-linux-x64-musl": "1.10.1", + "@swc/core-win32-arm64-msvc": "1.10.1", + "@swc/core-win32-ia32-msvc": "1.10.1", + "@swc/core-win32-x64-msvc": "1.10.1" }, "peerDependencies": { "@swc/helpers": "*" @@ -2981,9 +3124,9 @@ } }, "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz", + "integrity": "sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==", "cpu": [ "arm64" ], @@ -2992,14 +3135,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz", + "integrity": "sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==", "cpu": [ "x64" ], @@ -3008,14 +3152,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz", + "integrity": "sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==", "cpu": [ "arm" ], @@ -3024,14 +3169,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz", + "integrity": "sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==", "cpu": [ "arm64" ], @@ -3040,14 +3186,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz", + "integrity": "sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==", "cpu": [ "arm64" ], @@ -3056,14 +3203,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz", + "integrity": "sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==", "cpu": [ "x64" ], @@ -3072,14 +3220,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz", + "integrity": "sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==", "cpu": [ "x64" ], @@ -3088,14 +3237,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz", + "integrity": "sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==", "cpu": [ "arm64" ], @@ -3104,14 +3254,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz", + "integrity": "sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==", "cpu": [ "ia32" ], @@ -3120,14 +3271,15 @@ "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.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz", + "integrity": "sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==", "cpu": [ "x64" ], @@ -3136,6 +3288,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -3144,13 +3297,15 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true + "dev": true, + "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, + "peer": true, "dependencies": { "@swc/counter": "^0.1.3" } @@ -3164,6 +3319,15 @@ "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, + "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", @@ -3272,12 +3436,12 @@ } }, "node_modules/@types/jsdom/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -3290,12 +3454,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, "node_modules/@types/normalize-package-data": { @@ -3323,9 +3487,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -3344,17 +3508,10 @@ "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", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3374,9 +3531,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "dependencies": { "acorn": "^8.11.0" @@ -3603,23 +3760,26 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -3684,18 +3844,6 @@ "dev": true, "peer": true }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -3707,6 +3855,12 @@ "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 + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3730,9 +3884,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "dev": true, "funding": [ { @@ -3749,10 +3903,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3845,9 +3999,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001642", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", - "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", "dev": true, "funding": [ { @@ -3896,27 +4050,18 @@ "dev": true }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/chrome-trace-event": { @@ -3944,9 +4089,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", "dev": true }, "node_modules/cli-cursor": { @@ -4152,9 +4297,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -4166,27 +4311,110 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, "engines": { "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, + "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, + "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, + "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, + "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, + "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", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "dependencies": { - "mdn-data": "2.0.30", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" }, "engines": { "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, + "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 +4427,39 @@ "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, + "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, + "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 + }, "node_modules/cssom": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", @@ -4238,12 +4499,12 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4500,16 +4761,38 @@ } }, "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 + "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, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } }, "node_modules/electron-to-chromium": { - "version": "1.4.832", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.832.tgz", - "integrity": "sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==", + "version": "1.5.75", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz", + "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==", "dev": true }, "node_modules/emittery": { @@ -4570,9 +4853,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -4730,9 +5013,9 @@ "dev": true }, "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", "dev": true }, "node_modules/fastest-levenshtein": { @@ -4778,9 +5061,9 @@ } }, "node_modules/file-entry-cache": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", "dev": true, "dependencies": { "flat-cache": "^5.0.0" @@ -4828,15 +5111,15 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "dependencies": { "asynckit": "^0.4.0", @@ -5232,18 +5515,18 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", "dev": true }, "node_modules/import-fresh": { @@ -5282,9 +5565,9 @@ } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -5373,22 +5656,10 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "dependencies": { "hasown": "^2.0.2" @@ -6269,27 +6540,27 @@ } }, "node_modules/jsdom/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -6374,9 +6645,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", - "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true }, "node_modules/leven": { @@ -6400,6 +6671,7 @@ "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", "dev": true, "hasInstallScript": true, + "peer": true, "dependencies": { "msgpackr": "^1.9.5", "node-addon-api": "^6.1.0", @@ -6423,7 +6695,8 @@ "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, + "peer": true }, "node_modules/locate-path": { "version": "5.0.0", @@ -6551,9 +6824,9 @@ } }, "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true }, "node_modules/meow": { @@ -6610,9 +6883,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -6688,16 +6961,17 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "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, + "peer": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" } @@ -6709,6 +6983,7 @@ "dev": true, "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, @@ -6730,6 +7005,7 @@ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -6740,6 +7016,7 @@ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, "optional": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -6756,9 +7033,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -6869,6 +7146,7 @@ "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, + "peer": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -6883,6 +7161,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -6894,9 +7173,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", - "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "node_modules/normalize-package-data": { @@ -6935,6 +7214,18 @@ "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, + "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", @@ -6942,9 +7233,9 @@ "dev": true }, "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", "dev": true }, "node_modules/once": { @@ -7011,10 +7302,11 @@ } }, "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, + "peer": true }, "node_modules/os-name": { "version": "3.1.0", @@ -7168,9 +7460,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" @@ -7186,9 +7478,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -7225,9 +7517,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -7245,8 +7537,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -7259,15 +7551,15 @@ "dev": true }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "dev": true }, "node_modules/postcss-safe-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, "funding": [ { @@ -7317,9 +7609,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -7336,9 +7628,9 @@ "dev": true }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -7390,15 +7682,21 @@ } }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -7563,15 +7861,16 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { @@ -7621,18 +7920,21 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7659,9 +7961,9 @@ } }, "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "engines": { "node": ">=10" @@ -7775,13 +8077,13 @@ "dev": true }, "node_modules/sass": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", - "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "version": "1.83.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", + "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -7789,6 +8091,9 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/saxes": { @@ -7921,9 +8226,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7966,9 +8271,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/sprintf-js": { @@ -8105,9 +8410,9 @@ "peer": true }, "node_modules/stylelint": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.7.0.tgz", - "integrity": "sha512-Q1ATiXlz+wYr37a7TGsfvqYn2nSR3T/isw3IWlZQzFzCNoACHuGBb6xBplZXz56/uDRJHIygxjh7jbV/8isewA==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", "dev": true, "funding": [ { @@ -8120,44 +8425,43 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/media-query-list-parser": "^2.1.13", - "@csstools/selector-specificity": "^3.1.1", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.5", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.1", + "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", + "file-entry-cache": "^9.1.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.1", + "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", - "micromatch": "^4.0.7", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.39", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", + "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -8168,15 +8472,18 @@ } }, "node_modules/stylelint-scss": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.4.1.tgz", - "integrity": "sha512-+clI2bQC2FPOt06ZwUlXZZ95IO2C5bKTP0GLN1LNQPVvISfSNcgMKv/VTwym1mK9vnqhHbOk8lO4rj4nY7L9pw==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.10.0.tgz", + "integrity": "sha512-y03if6Qw9xBMoVaf7tzp5BbnYhYvudIKzURkhSHzcHG0bW0fAYvQpTUVJOe7DyhHaxeThBil4ObEMvGbV7+M+w==", "dev": true, "dependencies": { - "known-css-properties": "^0.34.0", + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.35.0", + "mdn-data": "^2.12.2", "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.1.0", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -8186,18 +8493,6 @@ "stylelint": "^16.0.2" } }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/stylelint/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -8236,6 +8531,15 @@ } } }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/stylelint/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -8272,21 +8576,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylelint/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/stylelint/node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", @@ -8313,9 +8602,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -8323,6 +8612,9 @@ }, "engines": { "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -8343,6 +8635,50 @@ "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, + "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/svgo/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/svgo/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -8350,9 +8686,9 @@ "dev": true }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -8418,15 +8754,6 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8494,9 +8821,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, "node_modules/type-detect": { @@ -8530,9 +8857,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, "node_modules/universal-user-agent": { @@ -8552,9 +8879,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -8571,8 +8898,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -8664,7 +8991,8 @@ "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, + "peer": true }, "node_modules/webidl-conversions": { "version": "7.0.0", @@ -8752,9 +9080,9 @@ } }, "node_modules/windows-release/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "dependencies": { "nice-try": "^1.0.4", diff --git a/package.json b/package.json index 83c8373c..bde19f49 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", "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/fonts/Inter_18pt-Black.ttf b/src/fonts/Inter_18pt-Black.ttf new file mode 100644 index 00000000..89673de1 Binary files /dev/null and b/src/fonts/Inter_18pt-Black.ttf differ diff --git a/src/fonts/Inter_18pt-Bold.ttf b/src/fonts/Inter_18pt-Bold.ttf new file mode 100644 index 00000000..cd13f60c Binary files /dev/null and b/src/fonts/Inter_18pt-Bold.ttf differ diff --git a/src/fonts/Inter_18pt-ExtraBold.ttf b/src/fonts/Inter_18pt-ExtraBold.ttf new file mode 100644 index 00000000..e71c601c Binary files /dev/null and b/src/fonts/Inter_18pt-ExtraBold.ttf differ diff --git a/src/fonts/Inter_18pt-ExtraLight.ttf b/src/fonts/Inter_18pt-ExtraLight.ttf new file mode 100644 index 00000000..f9c6cfc5 Binary files /dev/null and b/src/fonts/Inter_18pt-ExtraLight.ttf differ diff --git a/src/fonts/Inter_18pt-Light.ttf b/src/fonts/Inter_18pt-Light.ttf new file mode 100644 index 00000000..acae3612 Binary files /dev/null and b/src/fonts/Inter_18pt-Light.ttf differ diff --git a/src/fonts/Inter_18pt-Medium.ttf b/src/fonts/Inter_18pt-Medium.ttf new file mode 100644 index 00000000..71d90172 Binary files /dev/null and b/src/fonts/Inter_18pt-Medium.ttf differ diff --git a/src/fonts/Inter_18pt-Regular.ttf b/src/fonts/Inter_18pt-Regular.ttf new file mode 100644 index 00000000..ce097c82 Binary files /dev/null and b/src/fonts/Inter_18pt-Regular.ttf differ diff --git a/src/fonts/Inter_18pt-SemiBold.ttf b/src/fonts/Inter_18pt-SemiBold.ttf new file mode 100644 index 00000000..053185e5 Binary files /dev/null and b/src/fonts/Inter_18pt-SemiBold.ttf differ diff --git a/src/fonts/Inter_18pt-Thin.ttf b/src/fonts/Inter_18pt-Thin.ttf new file mode 100644 index 00000000..e68ec470 Binary files /dev/null and b/src/fonts/Inter_18pt-Thin.ttf differ diff --git a/src/images/about-highlight.svg b/src/images/about-highlight.svg new file mode 100644 index 00000000..1a6aa47e --- /dev/null +++ b/src/images/about-highlight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/bg-header.png b/src/images/bg-header.png new file mode 100644 index 00000000..ec39c76e Binary files /dev/null and b/src/images/bg-header.png differ diff --git a/src/images/favicon.ico b/src/images/favicon.ico new file mode 100644 index 00000000..58f635ab Binary files /dev/null and b/src/images/favicon.ico differ diff --git a/src/images/go-top-button-hover.svg b/src/images/go-top-button-hover.svg new file mode 100644 index 00000000..0462be06 --- /dev/null +++ b/src/images/go-top-button-hover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/images/go-top-button.svg b/src/images/go-top-button.svg new file mode 100644 index 00000000..716d4cd7 --- /dev/null +++ b/src/images/go-top-button.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/icons/arrow-icon.svg b/src/images/icons/arrow-icon.svg new file mode 100644 index 00000000..7c2a91c3 --- /dev/null +++ b/src/images/icons/arrow-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/back-icon.svg b/src/images/icons/back-icon.svg new file mode 100644 index 00000000..6d4ea073 --- /dev/null +++ b/src/images/icons/back-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/close-icon.svg b/src/images/icons/close-icon.svg new file mode 100644 index 00000000..9ebfb1b9 --- /dev/null +++ b/src/images/icons/close-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/icons/computer-icon.svg b/src/images/icons/computer-icon.svg new file mode 100644 index 00000000..98ec036f --- /dev/null +++ b/src/images/icons/computer-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/images/icons/education-icon.svg b/src/images/icons/education-icon.svg new file mode 100644 index 00000000..ebd73b9d --- /dev/null +++ b/src/images/icons/education-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/images/icons/fitness-icon.svg b/src/images/icons/fitness-icon.svg new file mode 100644 index 00000000..b84079b4 --- /dev/null +++ b/src/images/icons/fitness-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/icons/microscheme-icon.svg b/src/images/icons/microscheme-icon.svg new file mode 100644 index 00000000..9bafc19b --- /dev/null +++ b/src/images/icons/microscheme-icon.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/icons/socials-icon.svg b/src/images/icons/socials-icon.svg new file mode 100644 index 00000000..8d37db9c --- /dev/null +++ b/src/images/icons/socials-icon.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/icons/socials/facebook-icon.svg b/src/images/icons/socials/facebook-icon.svg new file mode 100644 index 00000000..390e3693 --- /dev/null +++ b/src/images/icons/socials/facebook-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/socials/reddit-icon.svg b/src/images/icons/socials/reddit-icon.svg new file mode 100644 index 00000000..cf084739 --- /dev/null +++ b/src/images/icons/socials/reddit-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/socials/twitter-icon.svg b/src/images/icons/socials/twitter-icon.svg new file mode 100644 index 00000000..b89987d9 --- /dev/null +++ b/src/images/icons/socials/twitter-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/images/icons/socials/youtube-icon.svg b/src/images/icons/socials/youtube-icon.svg new file mode 100644 index 00000000..38a9ffdc --- /dev/null +++ b/src/images/icons/socials/youtube-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/icons/state-icon.svg b/src/images/icons/state-icon.svg new file mode 100644 index 00000000..89be44c1 --- /dev/null +++ b/src/images/icons/state-icon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/icons/visa-icon.svg b/src/images/icons/visa-icon.svg new file mode 100644 index 00000000..66975d2e --- /dev/null +++ b/src/images/icons/visa-icon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/images/icons/wireless-icon.svg b/src/images/icons/wireless-icon.svg new file mode 100644 index 00000000..45fd1e34 --- /dev/null +++ b/src/images/icons/wireless-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/logo.png b/src/images/logo.png new file mode 100644 index 00000000..a53d4846 Binary files /dev/null and b/src/images/logo.png differ diff --git a/src/images/logo.svg b/src/images/logo.svg new file mode 100644 index 00000000..105f9e7f --- /dev/null +++ b/src/images/logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/images/more-info-button-hover.svg b/src/images/more-info-button-hover.svg new file mode 100644 index 00000000..6fee4ce3 --- /dev/null +++ b/src/images/more-info-button-hover.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/more-info-button.svg b/src/images/more-info-button.svg new file mode 100644 index 00000000..8e7c26ba --- /dev/null +++ b/src/images/more-info-button.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/images/order-image-tablet.png b/src/images/order-image-tablet.png new file mode 100644 index 00000000..c88593ee Binary files /dev/null and b/src/images/order-image-tablet.png differ diff --git a/src/images/order-image.png b/src/images/order-image.png new file mode 100644 index 00000000..91271e70 Binary files /dev/null and b/src/images/order-image.png differ diff --git a/src/images/slider/slider-image-1-mobile.png b/src/images/slider/slider-image-1-mobile.png new file mode 100644 index 00000000..f644aef9 Binary files /dev/null and b/src/images/slider/slider-image-1-mobile.png differ diff --git a/src/images/slider/slider-image-1.png b/src/images/slider/slider-image-1.png new file mode 100644 index 00000000..1c17a482 Binary files /dev/null and b/src/images/slider/slider-image-1.png differ diff --git a/src/images/slider/slider-image-2.jpg b/src/images/slider/slider-image-2.jpg new file mode 100644 index 00000000..349d6f76 Binary files /dev/null and b/src/images/slider/slider-image-2.jpg differ diff --git a/src/images/slider/slider-image-3.jpg b/src/images/slider/slider-image-3.jpg new file mode 100644 index 00000000..51304e17 Binary files /dev/null and b/src/images/slider/slider-image-3.jpg differ diff --git a/src/images/slider/slider-image-4.png b/src/images/slider/slider-image-4.png new file mode 100644 index 00000000..76a1eae4 Binary files /dev/null and b/src/images/slider/slider-image-4.png differ diff --git a/src/images/slider/slider-image-5.png b/src/images/slider/slider-image-5.png new file mode 100644 index 00000000..689b5974 Binary files /dev/null and b/src/images/slider/slider-image-5.png differ diff --git a/src/images/tech-batteries-line.svg b/src/images/tech-batteries-line.svg new file mode 100644 index 00000000..f47de02d --- /dev/null +++ b/src/images/tech-batteries-line.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/tech-connection-line.svg b/src/images/tech-connection-line.svg new file mode 100644 index 00000000..a1f02465 --- /dev/null +++ b/src/images/tech-connection-line.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/tech-main-image.png b/src/images/tech-main-image.png new file mode 100644 index 00000000..769aec7e Binary files /dev/null and b/src/images/tech-main-image.png differ diff --git a/src/images/tech-main-mobile-image.png b/src/images/tech-main-mobile-image.png new file mode 100644 index 00000000..4d5312f1 Binary files /dev/null and b/src/images/tech-main-mobile-image.png differ diff --git a/src/images/tech-sensor-line.svg b/src/images/tech-sensor-line.svg new file mode 100644 index 00000000..dfc56f6d --- /dev/null +++ b/src/images/tech-sensor-line.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/images/video-button-hover.svg b/src/images/video-button-hover.svg new file mode 100644 index 00000000..9b21cdf6 --- /dev/null +++ b/src/images/video-button-hover.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/video-button.svg b/src/images/video-button.svg new file mode 100644 index 00000000..3220562e --- /dev/null +++ b/src/images/video-button.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/index.html b/src/index.html index 8019b83e..e048378f 100644 --- a/src/index.html +++ b/src/index.html @@ -1,19 +1,1612 @@ - + - Title + + KAT VR - -

Hello Mate Academy

- + + +
+
+
+ + +
+
+
+ + En + +
+
    +
  • + En +
  • +
  • + Ua +
  • +
+
+ + +
+
+ + + +
+
+
+
+
+

+ THE NEW START OF +
+ + VR LOCOMOTION + +

+
+

+ Discover the most comprehensive VR Locomotion system, and + unlock infinite motion in any games on any platforms! +

+ 1200$ + +
+
+
+ Slider Img 1 + Slider Img 2 + Slider Img 3 +
+
+
+
+
+ FAQ + Help +
+ + More + +
+
+ + +
+
+
+
+
+
+
+
+ + + +
+
+
+

+ More than + Gaming! +

+

+ This also made for people who are interested in... +

+
+
+
+

+ Education +

+

+ Create aducational simulations, trainings and much more with + unlimited virtual space and minimum physical space +

+
+
+
+

+ Real Estate +

+

+ Desighn architectural projects in a deeply realistic environment + allowing visitors to freely walk around, and feel their vibe +

+
+
+
+

+ Fitness +

+

+ Combine business with pleasure, and discover countless ways to + stay fit while playing your favorite VR Games! +

+
+
+ +

+ Social interactions +

+

+ Hang out with your friends in the virtual world when you can’t + meet space requirements +

+
+
+
+
+ +
+
+
+

+ About + Product +

+ +
+
1/5
+
+
+ Slide 1 +
+
+ Slide 2 +
+
+ Slide 3 +
+
+ Slide 4 +
+
+ Slide 5 +
+
+ +
+
+ + +
+
+
+
+
+
+
+
+

+ About + Product +

+

+ KAT loco is a foot-based VR locomotion system that gives + complete physical control over lower-body actions, allowing you + to freely walk, run, and carry out just any other movement in + virtual reality. +

+ + +
+
+
+
+

+ Hello, +

+

+ Nice to meet + YOU! +

+

+ KAT VR is an independent company dedicated to the research, + development, and sales of VR Locomotion products and solutions. + Founded in 2013, we have quickly grown to become one of the + world’s leading professional suppliers of VR games’ & + simulations’ equipment +

+
+
+
+
+
+ +
+
+

+ Tech + Specs +

+
+ Tech image + +
    +
  • Weight: 35g/1.23oz each
  • +
  • + Dimension: 50mm/1.97in 24mm/0.94in +
  • +
  • Light: LED lights
  • +
+ + +
    +
  • + Type: Lthium-lon polymer batteries +
  • +
  • Capacity: 370mAh
  • +
  • + Battery life: 10h of continuous use 150 hours on stand by +
  • +
  • Charging: Fast charging - 1 hour
  • +
  • + Charging voltage and current: 5V = 0.5A +
  • +
+ + +
    +
  • Wireless: Bluetooth 4.2
  • +
  • Signal range: 5m
  • +
  • Receiver: USB 2.0 and above
  • +
+ +
+

Sensor

+
    +
  • Weight: 35g/1.23oz each
  • +
  • + Dimension: 50mm/1.97in 24mm/0.94in +
  • +
  • Light: LED lights
  • +
+ +
+
+

Connection

+
    +
  • Wireless: Bluetooth 4.2
  • +
  • Signal range: 5m
  • +
  • Receiver: USB 2.0 and above
  • +
+ +
+
+

Batteries

+
    +
  • + Type: Lthium-lon polymer batteries +
  • +
  • Capacity: 370mAh
  • +
  • + Battery life: 10h of continuous use 150 hours on stand by +
  • +
  • + Charging: Fast charging - 1 hour +
  • +
  • + Charging voltage and current: 5V = 0.5A +
  • +
+ +
+
+
+
+ +
+
+

+ Why + Kat Loco! +

+ +
+
+
+

+ UNIVERSALLY COMPATIBLE +

+

+ KAT Loco offers universal compatibility across all major VR + headsets and platforms allowing you to play any VR game with + support for Free Locomotion +

+
+ +
+
+

+ VR/PC CONTROL PANEL +

+

+ Our Multifunctional Software allows for quick access to KAT + Loco’s control panel both from a computer desktop, and directly + from your VR headset. +

+
+ +
+
+

+ WIRELESS SENSORS +

+

+ What makes it even more advanced, KAT Loco is entirely wireless, + and comes with a complete system of algorithms, super durable + batteries and more! +

+
+
+
+
+ +
+
+
+

+ Have any questions? +

+

+ Get in + touch +

+
+ + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +

+ Our manager will reply you within 15 minutes +

+
+
+
+ + + + + + + + + +
+
+
+ + +
+

Place Order

+

Pay

+

Order Complete

+
+ + +
+
+
Place Order
+
Pay
+
Order complete
+
+ +
+
+
+ Order Image +
+
+ +
+ + +
+
+ +
+ Price + + 1200$ + +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ Ukraine +
+
    +
  • + Italy +
  • +
  • + Spain +
  • +
  • + Poland +
  • +
  • + USA +
  • +
+
+
+
+ +
+
+ Select City +
+
    +
    +
    + +
    + + +
    + +
    + + +
    + + +
    +
    + +
    +
    + Order Image +
    +
    + Quantity + + 1 + +
    +
    + Price + + 1200$ + +
    +
    +
    +
    +
    + +
    + + + + +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + + +
    + +
    +
    + +
    +
    +

    + Thank you for + your + order! +

    +

    + Your order has been placed and is being processed. You will + recive an email with the order details +

    + + Back to homepage + +
    +
    +
    +
    +
    + + diff --git a/src/scripts/main.js b/src/scripts/main.js index ad9a93a7..445c5116 100644 --- a/src/scripts/main.js +++ b/src/scripts/main.js @@ -1 +1,35 @@ 'use strict'; + +import { videoPlayer } from './utils/videoPlayer'; +import { burgerMenu } from './utils/burgerMenu'; +import { languageSelector } from './utils/languageSelector'; +import { languageNavMenu } from './utils/languageNavMenu'; +import { modalTemplate } from './utils/modals'; +import { faqAccordion } from './utils/faq-accordion'; +import { fullSizeModal } from './utils/fullSizeModal'; +import { + aboutUsSliderConfig, + headerSliderConfig, + slider, +} from './utils/slider'; + +const HELP_LINK_SELECTOR = 'a[href="#help"]'; +const HELP_MODAL_SELECTOR = '#modal-help'; +const FAQ_LINK_SELECTOR = 'a[href="#faq"]'; +const FAQ_MODAL_SELECTOR = '#modal-faq'; +const ORDER_MODAL_SELECTOR = '.order-modal'; +const ORDER_LINK_SELECTOR = 'a[href="#buy-now"]'; + +document.addEventListener('DOMContentLoaded', () => { + videoPlayer(); + burgerMenu(); + languageSelector(); + languageNavMenu(); + slider(aboutUsSliderConfig); + slider(headerSliderConfig); + modalTemplate(HELP_LINK_SELECTOR, HELP_MODAL_SELECTOR); + modalTemplate(FAQ_LINK_SELECTOR, FAQ_MODAL_SELECTOR); + modalTemplate(ORDER_LINK_SELECTOR, ORDER_MODAL_SELECTOR); + faqAccordion(); + fullSizeModal(); +}); diff --git a/src/scripts/utils/burgerMenu.js b/src/scripts/utils/burgerMenu.js new file mode 100644 index 00000000..5d10094d --- /dev/null +++ b/src/scripts/utils/burgerMenu.js @@ -0,0 +1,14 @@ +export const burgerMenu = () => { + const burgerMenu = document.getElementById('burger-menu'); + const asideMenu = document.getElementById('aside'); + const closeMenu = document.getElementById('close-menu'); + + burgerMenu.addEventListener('click', () => { + asideMenu.classList.add('menu--active'); + }); + + closeMenu.addEventListener('click', (e) => { + e.preventDefault(); + asideMenu.classList.remove('menu--active'); + }); +}; diff --git a/src/scripts/utils/faq-accordion.js b/src/scripts/utils/faq-accordion.js new file mode 100644 index 00000000..82a092ba --- /dev/null +++ b/src/scripts/utils/faq-accordion.js @@ -0,0 +1,25 @@ +export const faqAccordion = () => { + const faqItems = document.querySelectorAll('.modal-faq__item'); + + faqItems.forEach((item) => { + const question = item.querySelector('.modal-faq__question'); + const answer = item.querySelector('.modal-faq__answer'); + const arrow = item.querySelector('.modal-faq__arrow'); + + question.addEventListener('click', () => { + const isOpen = answer.classList.contains('open'); + + document + .querySelectorAll('.modal-faq__answer') + .forEach((a) => a.classList.remove('open')); + document + .querySelectorAll('.modal-faq__arrow') + .forEach((a) => a.classList.remove('open')); + + if (!isOpen) { + answer.classList.add('open'); + arrow.classList.add('open'); + } + }); + }); +}; diff --git a/src/scripts/utils/fullSizeModal.js b/src/scripts/utils/fullSizeModal.js new file mode 100644 index 00000000..99e70cc0 --- /dev/null +++ b/src/scripts/utils/fullSizeModal.js @@ -0,0 +1,173 @@ +export const fullSizeModal = () => { + const lifecycleSteps = document.querySelectorAll('.order-modal__lifecycle p'); + const progressSteps = document.querySelectorAll('.order-modal__progress div'); + + const placeOrderStep = document.getElementById('placeOrderStep'); + const payStep = document.getElementById('payStep'); + const orderCompleteStep = document.getElementById('orderCompleteStep'); + const paymentForm = document.getElementById('paymentForm'); + const priceDisplay = document.getElementById('price'); + const selectedQuantityDisplay = document.getElementById('selectedQuantity'); + const selectedPriceDisplay = document.getElementById('selectedPrice'); + + const dropdown = document.getElementById('customDropdown'); + const selected = document.getElementById('dropdownSelected'); + const dropdownList = document.getElementById('dropdownList'); + + const countryDropdown = document.getElementById('countryDropdown'); + const countrySelected = document.getElementById('countrySelected'); + const countryDropdownList = document.getElementById('countryDropdownList'); + + const unitPrice = 1200; + let selectedQuantity = 1; + let selectedPrice = unitPrice; + + const citiesByCountry = { + Ukraine: ['Kyiv', 'Lviv', 'Odessa'], + Italy: ['Rome', 'Milan', 'Venice'], + Spain: ['Madrid', 'Barcelona', 'Seville'], + Poland: ['Warsaw', 'Krakow', 'Gdansk'], + USA: ['New York', 'Los Angeles', 'Chicago'], + }; + + function updateCities(country) { + const cityDropdownList = document.getElementById('cityDropdownList'); + cityDropdownList.innerHTML = ''; + + const cities = citiesByCountry[country] || []; + cities.forEach((city) => { + const cityItem = document.createElement('li'); + cityItem.classList.add('custom-dropdown__item'); + cityItem.textContent = city; + cityItem.setAttribute('data-value', city); + cityDropdownList.appendChild(cityItem); + }); + + if (cities.length > 0) { + const citySelected = document.getElementById('citySelected'); + citySelected.textContent = cities[0]; + } + } + + const options = Array.from(dropdownList.children); + const countryOptions = Array.from(countryDropdownList.children); + + function updateLifecycleStep(step) { + lifecycleSteps.forEach((stepElement, index) => { + stepElement.classList.toggle( + 'order-modal__lifecycle-step--active', + index === step, + ); + }); + + progressSteps.forEach((stepElement, index) => { + stepElement.classList.toggle( + 'order-modal__progress-step--current', + index === step, + ); + }); + } + + function showStep(stepElement) { + placeOrderStep.style.display = 'none'; + payStep.style.display = 'none'; + orderCompleteStep.style.display = 'none'; + stepElement.style.display = 'grid'; + } + + dropdown.addEventListener('click', () => { + dropdownList.innerHTML = ''; + options + .filter( + (option) => + parseInt(option.getAttribute('data-value'), 10) !== selectedQuantity, + ) + .forEach((option) => dropdownList.appendChild(option)); + + dropdownList.classList.toggle('visible'); + }); + + dropdownList.addEventListener('click', (event) => { + if (event.target.classList.contains('custom-dropdown__item')) { + const newSelectedQuantity = parseInt( + event.target.getAttribute('data-value'), + 10, + ); + + if (selectedQuantity !== null) { + const previousOption = options.find( + (option) => + parseInt(option.getAttribute('data-value'), 10) === + selectedQuantity, + ); + if (previousOption) { + dropdownList.appendChild(previousOption); + } + } + + selectedQuantity = newSelectedQuantity; + selectedPrice = unitPrice * selectedQuantity; + + selected.textContent = selectedQuantity; + priceDisplay.textContent = `${selectedPrice}$`; + + dropdownList.classList.remove('visible'); + } + }); + + document.addEventListener('click', (event) => { + if (!dropdown.contains(event.target)) { + dropdownList.classList.remove('visible'); + } + }); + + countryDropdown.addEventListener('click', () => { + countryDropdownList.classList.toggle('visible'); + }); + + countryDropdownList.addEventListener('click', (event) => { + if (event.target.classList.contains('custom-dropdown__item')) { + const selectedCountry = event.target.getAttribute('data-value'); + countrySelected.textContent = selectedCountry; + + updateCities(selectedCountry); + + countryDropdownList.classList.remove('visible'); + } + }); + + const cityDropdown = document.getElementById('cityDropdown'); + cityDropdown.addEventListener('click', () => { + const cityDropdownList = document.getElementById('cityDropdownList'); + cityDropdownList.classList.toggle('visible'); + }); + + const cityDropdownList = document.getElementById('cityDropdownList'); + cityDropdownList.addEventListener('click', (event) => { + if (event.target.classList.contains('custom-dropdown__item')) { + const selectedCity = event.target.getAttribute('data-value'); + const citySelected = document.getElementById('citySelected'); + citySelected.textContent = selectedCity; + cityDropdownList.classList.remove('visible'); + } + }); + + orderForm.addEventListener('submit', (e) => { + e.preventDefault(); + selectedQuantityDisplay.textContent = selectedQuantity; + selectedPriceDisplay.textContent = `${selectedPrice}$`; + showStep(payStep); + updateLifecycleStep(1); + }); + + paymentForm.addEventListener('submit', (e) => { + e.preventDefault(); + showStep(orderCompleteStep); + updateLifecycleStep(2); + }); + + updateLifecycleStep(0); + showStep(placeOrderStep); + + updateCities('Ukraine'); +}; diff --git a/src/scripts/utils/languageNavMenu.js b/src/scripts/utils/languageNavMenu.js new file mode 100644 index 00000000..4530566f --- /dev/null +++ b/src/scripts/utils/languageNavMenu.js @@ -0,0 +1,34 @@ +export const languageNavMenu = () => { + const languageLink = document.getElementById('language-link'); + const languageMenu = document.getElementById('language-menu'); + const mainMenu = document.getElementById('main-menu'); + const backToMain = document.getElementById('back-to-main'); + const backIcon = document.querySelector('.icon--back'); + const closeIcon = document.querySelector('.icon--close'); + const sideBar = document.querySelector('.side-bar'); + + backIcon.classList.add('hidden'); + closeIcon.classList.remove('hidden'); + + languageLink.addEventListener('click', (event) => { + event.preventDefault(); + mainMenu.classList.add('hidden'); + languageMenu.classList.remove('hidden'); + + closeIcon.classList.add('hidden'); + backIcon.classList.remove('hidden'); + + sideBar.classList.add('language-open'); + }); + + backToMain.addEventListener('click', (event) => { + event.preventDefault(); + languageMenu.classList.add('hidden'); + mainMenu.classList.remove('hidden'); + + closeIcon.classList.remove('hidden'); + backIcon.classList.add('hidden'); + + sideBar.classList.remove('language-open'); + }); +}; diff --git a/src/scripts/utils/languageSelector.js b/src/scripts/utils/languageSelector.js new file mode 100644 index 00000000..196c7b0c --- /dev/null +++ b/src/scripts/utils/languageSelector.js @@ -0,0 +1,20 @@ +export const languageSelector = () => { + const languageMenu = document.querySelector('.header__language'), + selectBtn = languageMenu.querySelector('.header__language-btn'), + options = languageMenu.querySelectorAll('.header__language-option'), + sBtnText = languageMenu.querySelector('.header__language-btn-text'); + + selectBtn.addEventListener('click', () => { + languageMenu.classList.toggle('header__language--active'); + }); + + options.forEach((option) => { + option.addEventListener('click', () => { + let selectedOption = option.querySelector( + '.header__language-option-text', + ).innerText; + sBtnText.innerText = selectedOption; + languageMenu.classList.remove('header__language--active'); + }); + }); +}; diff --git a/src/scripts/utils/modals.js b/src/scripts/utils/modals.js new file mode 100644 index 00000000..1735a004 --- /dev/null +++ b/src/scripts/utils/modals.js @@ -0,0 +1,35 @@ +export const modalTemplate = (linkSelector, modalSelector) => { + const link = document.querySelectorAll(linkSelector); + const modal = document.querySelector(modalSelector); + + const closeElements = modal.querySelectorAll( + '.modal__overlay, .modal__close, .order-modal__close, .order-modal__complete-back-btn, #modal-more-btn, #modal-contact-us', + ); + + link.forEach((item) => { + item.addEventListener('click', (event) => { + event.preventDefault(); + openModal(modal); + }); + }); + + closeElements.forEach((element) => { + element.addEventListener('click', () => closeModal(modal)); + }); + + function openModal(modal) { + modal.classList.add('show'); + document.body.style.overflow = 'hidden'; + } + + function closeModal(modal) { + modal.classList.remove('show'); + document.body.style.overflow = ''; + } + + window.addEventListener('keydown', (event) => { + if (event.key === 'Escape' && modal.classList.contains('show')) { + closeModal(modal); + } + }); +}; diff --git a/src/scripts/utils/slider.js b/src/scripts/utils/slider.js new file mode 100644 index 00000000..3117d1c0 --- /dev/null +++ b/src/scripts/utils/slider.js @@ -0,0 +1,116 @@ +export const slider = (sliderConfig) => { + const { + slidesSelector, + progressLineSelector, + prevBtnSelector, + nextBtnSelector, + counterElementSelector, + dotsSelector, + } = sliderConfig; + + const slides = document.querySelectorAll(slidesSelector); + const progressLine = document.querySelector(progressLineSelector); + const prevBtn = document.querySelector(prevBtnSelector); + const nextBtn = document.querySelector(nextBtnSelector); + const counterElement = counterElementSelector + ? document.querySelector(counterElementSelector) + : null; + const dotsContainer = dotsSelector + ? document.querySelector(dotsSelector) + : null; + + let counter = 0; + const totalSlides = slides.length; + + slides.forEach((slide, index) => { + slide.style.left = `${index * 100}%`; + }); + + function createDots() { + if (!dotsContainer) { + console.warn('Dots container not found'); + return; + } + + for (let i = 0; i < totalSlides; i++) { + const dot = document.createElement('div'); + dot.classList.add('dot'); + dot.addEventListener('click', () => goToSlide(i)); + dotsContainer.appendChild(dot); + } + } + function updateSlider() { + slides.forEach((slide) => { + slide.style.transform = `translateX(-${counter * 100}%)`; + }); + + if (progressLine) { + progressLine.style.width = `${((counter + 1) / totalSlides) * 100}%`; + } + + if (counterElement) { + counterElement.textContent = `${counter + 1}/${totalSlides}`; + } + + if (dotsContainer) { + const dots = dotsContainer.querySelectorAll('.dot'); + dots.forEach((dot, index) => { + dot.classList.toggle('active', index === counter); + }); + } + + prevBtn.disabled = counter === 0; + nextBtn.disabled = counter === totalSlides - 1; + } + + function goToSlide(index) { + counter = index; + updateSlider(); + } + + if (prevBtn) { + prevBtn.addEventListener('click', () => { + if (counter > 0) { + counter--; + updateSlider(); + } + }); + } + + if (nextBtn) { + nextBtn.addEventListener('click', () => { + if (counter < totalSlides - 1) { + counter++; + updateSlider(); + } + }); + } + + setInterval(() => { + if (counter < totalSlides - 1) { + counter++; + } else { + counter = 0; + } + updateSlider(); + }, 5000); + + createDots(); + updateSlider(); +}; + +export const headerSliderConfig = { + slidesSelector: '.header__hero-slider-image', + progressLineSelector: '.slider__progress-line', + prevBtnSelector: '#Prev', + nextBtnSelector: '#Next', +}; + +export const aboutUsSliderConfig = { + slidesSelector: '.about-us__slider-slide', + progressLineSelector: '.about-us__slider-progress-line', + prevBtnSelector: '#goBack', + nextBtnSelector: '#goNext', + counterElementSelector: '.about-us__slider-counter', + dotsSelector: '.about-us__slider-dots', +}; diff --git a/src/scripts/utils/videoPlayer.js b/src/scripts/utils/videoPlayer.js new file mode 100644 index 00000000..0f25e254 --- /dev/null +++ b/src/scripts/utils/videoPlayer.js @@ -0,0 +1,38 @@ +export const videoPlayer = () => { + const videoButtons = document.querySelectorAll('.video__btn'); + const videoModal = document.querySelector('.video-modal'); + const videoClose = document.querySelector('.video-modal__close'); + const videoPlayer = document.getElementById('video-player'); + + videoButtons.forEach((videoButton) => { + videoButton.addEventListener('click', (event) => { + event.preventDefault(); + openModal(); + }); + }); + + videoClose.addEventListener('click', () => { + closeModal(); + }); + + videoModal.addEventListener('click', (event) => { + if (event.target === videoModal) { + closeModal(); + } + }); + + function openModal() { + const videoSrc = 'https://www.youtube.com/embed/9xzD-XzLLQw?autoplay=1'; + videoPlayer.src = videoSrc; + videoModal.classList.add('show'); + } + + function closeModal() { + videoModal.classList.remove('show'); + stopVideo(); + } + + function stopVideo() { + videoPlayer.src = ''; + } +}; diff --git a/src/styles/_fonts.scss b/src/styles/_fonts.scss index 619b8c52..0c29a08f 100644 --- a/src/styles/_fonts.scss +++ b/src/styles/_fonts.scss @@ -1,6 +1,27 @@ @font-face { - font-family: Roboto, Arial, Helvetica, sans-serif; - src: url('../fonts/FontFont_FF.Mark.Pro.otf') format('otf'); - font-weight: normal; + font-family: 'Inter Regular'; + src: url('../fonts/Inter_18pt-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Inter Medium'; + src: url('../fonts/Inter_18pt-Medium.ttf') format('truetype'); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: 'Inter Bold'; + src: url('../fonts/Inter_18pt-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: 'Inter Black'; + src: url('../fonts/Inter_18pt-Black.ttf') format('truetype'); + font-weight: 900; font-style: normal; } diff --git a/src/styles/_typography.scss b/src/styles/_typography.scss index 1837eb46..c4de89f1 100644 --- a/src/styles/_typography.scss +++ b/src/styles/_typography.scss @@ -1,3 +1,35 @@ -h1 { +.hero-title { @extend %h1; } + +.section-title { + @extend %h2; +} + +.highlight { + @extend %highlight; +} + +.small-title { + @extend %small-title; +} + +.secondary-text { + @extend %secondary-text; +} + +h3 { + @extend %h3; +} + +p { + @extend %primary-text; +} + +button { + @extend %buttons; +} + +a { + @extend %links; +} diff --git a/src/styles/_utils.scss b/src/styles/_utils.scss index 3280c3fe..83c85b57 100644 --- a/src/styles/_utils.scss +++ b/src/styles/_utils.scss @@ -1,3 +1,4 @@ +@import 'utils/reset'; @import 'utils/vars'; @import 'utils/mixins'; @import 'utils/extends'; diff --git a/src/styles/main.scss b/src/styles/main.scss index fb9195d1..c502d661 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss @@ -2,6 +2,2251 @@ @import 'fonts'; @import 'typography'; -body { - background: $c-gray; +.helper-links { + color: $robins-blue-color; + + @include hover-color($hover-color: $white-color); +} + +// PAGE + +.page { + font-family: 'Inter Regular', sans-serif; + scroll-behavior: smooth; + color: $gray-color; + background: linear-gradient(107.56deg, $haiti-color 0%, $black-color 100%); + + &:has(.page__menu:target) { + overflow: hidden; + } + + &__body { + margin: 0; + min-width: 320px; + } + + &__menu { + position: fixed; + top: 0; + right: 0; + left: 0; + opacity: 0; + transition: all 0.3s; + transform: translateX(-100%); + pointer-events: none; + + &.menu--active { + opacity: 1; + transform: translateX(0); + pointer-events: all; + z-index: 805; + } + } +} + +.container { + max-width: 1920px; + + @include content-padding-inline; +} + +.section { + padding: 160px 0; + + @include on-tablet { + padding: 70px 0; + } + + @include on-mobile { + padding: 50px 0; + } +} + +.video__btn { + display: block; + height: 66px; + background: url(../images/video-button.svg) no-repeat left; + background-size: contain; + margin-top: 36px; + + transition: + all 0.3s ease, + background-size 0.3s ease; + + &:hover { + background: url(../images/video-button-hover.svg) no-repeat left; + background-size: contain; + + @include on-mobile { + background-position: center; + } + } + + @include on-mobile { + background-position: center; + } +} + +// HEADER + +.header { + background: linear-gradient(107.56deg, $haiti-color 0%, $black-color 100%); + + &__burger-menu { + flex: 0 0 30px; + position: relative; + cursor: pointer; + z-index: 5; + height: 14px; + display: none; + + span { + @include set-size(100%, 1px); + + transition: all 0.3s ease 0s; + top: calc(50% - 1px); + left: 0; + position: absolute; + background-color: $white-color; + + &:first-child { + top: 0; + left: 5px; + } + + &:last-child { + bottom: 0; + top: auto; + left: 5px; + } + + &:nth-child(2) { + width: 70%; + } + } + + @include hover(transform, scale(1.2)); + + @include on-tablet { + display: block; + } + + @include on-mobile { + flex: 0 0 20px; + height: 10px; + } + } + + &__top { + @include flex(row, space-between, center); + + gap: 34px; + padding: 47px 0; + + @include on-tablet { + padding: 34px 0; + } + + @include on-mobile { + padding: 20px 0; + } + } + + &__logo { + @include hover(transform, scale(1.2)); + + display: block; + height: 16px; + + @include on-tablet { + height: 14px; + } + + @include on-mobile { + height: 12px; + } + } + + &__menu { + @include flex(row, space-between, center); + + width: 100%; + + @include on-tablet { + display: none; + } + } + + .nav { + display: flex; + gap: 35px; + + &__list { + @include flex(row, space-between, center); + + gap: 35px; + } + + &__link { + @include primary-text-effect( + $white-color, + $robins-blue-color, + $robins-blue-color, + 1px, + 8px, + 0.3s + ); + } + + &__button { + @include primary-button; + } + } + + &__language { + position: relative; + + &-btn { + @include flex(row, space-between, center); + + cursor: pointer; + + &-text { + color: $robins-blue-color; + font-weight: 500; + + &::after { + @include set-size(0, 0); + + content: ''; + display: inline-block; + margin-left: 8px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid $robins-blue-color; + transition: + transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), + border-top-color 0.2s ease; + } + + &:hover::after { + transform: rotate(180deg); + } + } + } + + &-options-list { + position: absolute; + margin-top: 10px; + border-radius: 8px; + background: $haiti-color; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.1); + display: none; + color: $white-color; + } + + &-option { + display: flex; + cursor: pointer; + padding: 15px 30px; + align-items: center; + + &:hover { + background: $ebony-color; + color: $robins-blue-color; + } + } + + &--active { + .header__language-options-list { + display: block; + } + } + } + + &__hero { + margin-top: 100px; + + @include on-tablet { + margin-top: 20px; + padding-bottom: 40px; + } + + @include on-mobile { + margin-top: 0; + } + + &-content { + @include page-grid; + } + + &-info { + grid-column: span 5; + + @include on-tablet { + grid-column: span 3; + } + + @include on-mobile { + order: 2; + } + } + + &-title { + color: $white-color; + margin-bottom: 35px; + + @include on-tablet { + margin-bottom: 18px; + font-size: 26px; + } + } + + &-highlight { + color: $robins-blue-color; + } + + &-description { + padding-left: 80px; + + @include on-tablet { + padding-left: 0; + } + } + + &-text { + max-width: 365px; + width: 100%; + font-size: 20px; + font-weight: 500; + margin-bottom: 30px; + + @include on-tablet { + font-size: 16px; + margin-bottom: 10px; + } + + @include on-mobile { + max-width: 100%; + text-align: justify; + margin-bottom: 8px; + } + } + + &-price { + color: $white-color; + font-size: 20px; + + @include on-mobile { + display: block; + font-size: 18px; + text-align: center; + } + } + + &-slider { + @include set-size(100%, 450px); + + grid-column: span 7; + position: relative; + overflow: hidden; + + &-image { + @include set-size(100%, 100%); + + position: absolute; + transition: all 1.5s ease; + object-fit: contain; + + @include on-mobile { + content: url('../images/slider/slider-image-1-mobile.png'); + } + } + + @include on-tablet { + grid-column: span 3; + height: 350px; + } + + @include on-mobile { + order: 1; + height: 150px; + } + } + } + + &__bottom { + @include flex(row, space-between, center); + + padding: 85px 0; + + &-info-nav { + display: flex; + flex-direction: row; + gap: 40px; + + a { + @include primary-text-effect( + $white-color, + $robins-blue-color, + $robins-blue-color, + 1px, + 8px, + 0.3s + ); + } + } + + .wrapper { + @include flex($direction: column); + + .slider { + &__navigation { + @include flex(row, space-between, center); + + gap: 100px; + + button { + @include slider-navigation-btn; + } + } + &__progress { + @include progress-container-styles; + + &-line { + @include progress-line-styles; + } + } + } + } + + @include on-tablet { + display: none; + } + } +} + +// ASIDE + +.aside { + height: auto; + box-sizing: border-box; + background-color: $haiti-color; + overflow: auto; + + &__navigation { + margin-bottom: 140px; + } + + @include on-mobile { + height: 100vh; + } +} + +.navigation { + &__list { + display: flex; + flex-direction: column; + } + + &__item { + &:hover { + background-color: #110e25; + } + + @include on-tablet { + padding-left: 128px; + } + + @include on-mobile { + padding-left: 0; + } + } + + &__link { + box-sizing: border-box; + position: relative; + color: $white-color; + padding: 11px 22px; + display: flex; + align-items: center; + width: 100%; + font-size: 21px; + font-weight: 500; + + &:hover { + color: $robins-blue-color; + background-color: #110e25; + } + } +} + +// SIDEBAR + +.side-bar { + @include flex(row, flex-end, center); + + padding: 34px; + + @include on-mobile { + padding: 20px; + } + + &__icons { + display: flex; + gap: 24px; + } + + &.language-open { + @include flex(row, flex-start, center); + } +} + +.icon { + @include set-size(17px, 17px); + + display: block; + background-size: cover; + background-repeat: no-repeat; + + @include hover(transform, scale(1.2)); + + &--close { + background-image: url(../images/icons/close-icon.svg); + } + + &--back { + background-image: url(../images/icons/back-icon.svg); + background-size: contain; + } +} + +.hidden { + display: none; +} + +// MORE-THAN-GAMING SECTION + +.more-than-gaming { + background-color: $ebony-color; + + &__title { + text-align: center; + margin-bottom: 16px; + text-transform: uppercase; + + @include on-tablet { + font-size: 21px; + margin-bottom: 12px; + } + + @include on-mobile { + text-align: left; + } + } + + &__subtitle { + text-align: center; + color: $robins-blue-color; + margin-bottom: 80px; + + @include on-tablet { + font-size: 12px; + margin-bottom: 30px; + } + + @include on-mobile { + text-align: left; + } + } + + &__features { + @include page-grid; + + &-item { + @include flex($direction: column, $items: center); + + grid-column: span 3; + + @include on-tablet { + &:nth-child(-n + 2) { + margin-bottom: 40px; + } + } + + @include on-mobile { + align-items: flex-start; + &:nth-child(-n + 3) { + margin-bottom: 20px; + } + } + } + } + + &__feature { + &-title { + margin-bottom: 18px; + + @include on-tablet { + font-size: 16px; + } + + @include on-mobile { + margin-bottom: 11px; + } + } + + &-description { + text-align: center; + + @include on-mobile { + text-align: left; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + line-clamp: 2; + } + } + } + &__icon { + @include set-size(100%, 80px); + + background-size: contain; + background-repeat: no-repeat; + background-position: center; + margin-bottom: 30px; + + &--education { + background-image: url('../images/icons/education-icon.svg'); + } + &--real-estate { + background-image: url('../images/icons/state-icon.svg'); + } + &--fitness { + background-image: url('../images/icons/fitness-icon.svg'); + } + &--social-interactions { + background-image: url('../images/icons/socials-icon.svg'); + } + + @include on-tablet { + margin-bottom: 22px; + } + + @include on-mobile { + display: none; + } + } +} + +// ABOUT-US SECTION + +.about-us { + background: linear-gradient(108.62deg, $haiti-color 0%, $black-color 77.34%); + + &__top { + @include page-grid; + + &-title--mobile { + display: none; + + @include on-mobile { + display: block; + grid-column: span 2; + font-size: 21px; + margin-bottom: 20px; + } + } + } + + &__info { + grid-column: 9 / span 4; + + &-title { + margin-bottom: 30px; + + @include on-tablet { + font-size: 21px; + } + + @include on-mobile { + display: none; + } + } + + @include on-tablet { + grid-column: span 3; + } + } + + &__slider { + grid-column: 3 / span 5; + position: relative; + width: 100%; + margin: 0 auto; + + &-counter { + color: $robins-blue-color; + position: absolute; + left: -35px; + + @include on-tablet { + display: none; + } + } + + &-content { + position: relative; + display: flex; + height: 290px; + overflow: hidden; + } + + &-slide { + min-width: 100%; + transition: transform 0.5s ease; + opacity: 1; + margin-bottom: 12px; + + img { + @include set-size(100%, 100%); + + object-fit: cover; + object-position: top; + } + } + + &-navigation { + @include flex($direction: column); + + width: 30%; + + &-btns { + @include flex(row, space-between, center); + + gap: 100px; + + button { + @include slider-navigation-btn; + } + + @include on-tablet { + display: none; + } + } + + @include on-tablet { + width: 100%; + } + + @include on-mobile { + margin-bottom: 20px; + } + } + + &-progress { + @include progress-container-styles; + + &-line { + @include progress-line-styles; + } + + @include on-tablet { + display: none; + } + } + + &-dots { + display: none; + + .dot { + @include set-size(4px, 4px); + + display: inline-block; + margin: 0 5px; + border-radius: 50%; + background-color: $tundora-color; + cursor: pointer; + + &.active { + background-color: $gray-color; + } + } + + @include on-tablet { + display: block; + margin: 0 auto; + } + } + + @include on-tablet { + grid-column: span 3; + } + } + + &__bottom { + @include page-grid; + + margin-top: 175px; + + &-greeting { + grid-column: span 5; + + &--hello { + margin: 43px 0 15px; + color: $robins-blue-color; + + @include on-tablet { + margin: 23px 0 10px; + } + } + + &--desc { + margin-top: 32px; + } + + @include on-tablet { + grid-column: span 4; + } + } + + &-vertical-text { + grid-column: 7 / 13; + background-image: url(../images/about-highlight.svg); + background-repeat: no-repeat; + background-size: contain; + width: 100%; + display: block; + + @include on-tablet { + grid-column: span 2; + background-size: cover; + height: 280px; + } + + @include on-mobile { + display: none; + } + } + + &-title { + @include on-tablet { + font-size: 21px; + } + } + + @include on-tablet { + margin-top: 85px; + } + + @include on-mobile { + margin-top: 45px; + } + } +} + +// TECH SECTION + +.tech { + background-color: $ebony-color; + + &__container { + @include page-grid; + } + + &__title { + grid-column: -5 / -1; + margin-bottom: 140px; + + @include on-tablet { + font-size: 21px; + grid-column: span 2; + margin-bottom: 70px; + } + + @include on-mobile { + margin-bottom: 40px; + } + } + + &__mobile-list { + display: none; + position: absolute; + background-color: $haiti-color; + border-radius: 4px; + z-index: 5; + opacity: 0; + transition: opacity 0.3s ease; + line-height: 18px; + font-size: 12px; + padding: 17px 10px; + + &--top { + top: 40px; + left: -100px; + + @include on-mobile { + left: -20px; + } + } + + &--right { + top: 180px; + right: -170px; + + @include on-mobile { + top: 160px; + right: -20px; + } + } + + &--bottom { + top: 110px; + left: -95px; + + @include on-mobile { + top: 140px; + left: -15px; + } + } + } + + &__btn { + background-image: url(../images/more-info-button.svg); + background-repeat: no-repeat; + background-size: cover; + border-radius: 50%; + transition-duration: 0.5s; + position: absolute; + display: none; + + &--sensor { + top: -30px; + left: 50px; + + &:hover + .tech__mobile-list--top { + display: block; + opacity: 1; + } + + @include on-mobile { + top: 0; + left: 105px; + } + } + + &--connection { + left: -60px; + bottom: 10px; + + &:hover + .tech__mobile-list--bottom { + display: block; + opacity: 1; + } + + @include on-mobile { + left: 0; + } + } + + &--batteries { + right: 40px; + + &:hover + .tech__mobile-list--right { + display: block; + opacity: 1; + } + + @include on-mobile { + top: 125px; + } + } + + &:hover { + background-image: url(../images/more-info-button-hover.svg); + cursor: pointer; + } + + @include on-tablet { + @include set-size(62px, 62px); + + display: block; + } + + @include on-mobile { + @include set-size(34px, 34px); + } + } + + &__content { + @include flex($content: center, $items: center); + + grid-column: 1 / -1; + justify-self: center; + position: relative; + } + + &__image { + @include set-size(297px, 294px); + + @include on-tablet { + content: url(../images/tech-main-mobile-image.png); + } + } + + &__info { + position: absolute; + + &-title { + margin-bottom: 22px; + } + + &--sensor { + @include set-size(250px, 143px); + + margin-right: 105px; + top: -60px; + right: 100%; + } + + &--connection { + @include set-size(240px, 125px); + + margin-right: 30px; + top: 155px; + right: 100%; + } + + &--batteries { + @include set-size(340px, 205px); + + margin-left: 60px; + top: -60px; + left: 100%; + } + + @include on-tablet { + display: none; + } + } + + &__line { + &-sensor { + @include set-size(403px, 72px); + + background: url(../images/tech-sensor-line.svg) no-repeat center/contain; + position: absolute; + top: 8px; + left: 107px; + } + + &-connection { + @include set-size(134px, 113px); + + background: url(../images/tech-connection-line.svg) no-repeat + center/contain; + position: absolute; + bottom: 110px; + left: 140px; + } + + &-batteries { + @include set-size(192px, 245px); + + background: url(../images/tech-batteries-line.svg) no-repeat + center/contain; + margin-right: 25px; + position: absolute; + top: 0; + right: 95%; + } + } + + &__list { + &-item { + margin-bottom: 5px; + &:last-child { + margin-bottom: 0; + } + } + } +} + +// WHY-KAT-LOCO SECTION + +.why-kat-loco { + background: linear-gradient(108.62deg, $haiti-color 0%, $black-color 77.34%); + + &__title { + text-align: center; + margin-bottom: 80px; + + @include on-tablet { + text-align: left; + font-size: 21px; + margin-bottom: 30px; + } + } + + &__features { + @include page-grid; + + &-item { + @include flex($direction: column, $items: center); + + grid-column: span 4; + + @include on-tablet { + grid-column: span 2; + &:nth-child(-n + 2) { + margin-bottom: 40px; + } + } + + @include on-mobile { + align-items: flex-start; + &:nth-child(-n + 3) { + margin-bottom: 20px; + } + } + } + } + + &__feature { + &-title { + margin-bottom: 18px; + + @include on-tablet { + font-size: 16px; + } + + @include on-mobile { + margin-bottom: 11px; + } + } + + &-description { + text-align: center; + + @include on-mobile { + text-align: left; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + line-clamp: 2; + } + } + } + + &__icon { + @include set-size(100%, 80px); + + background-size: contain; + background-repeat: no-repeat; + background-position: center; + margin-bottom: 30px; + + &--universally-compatible { + background-image: url('../images/icons/microscheme-icon.svg'); + } + &--computer { + background-image: url('../images/icons/computer-icon.svg'); + } + &--wireless { + background-image: url('../images/icons/wireless-icon.svg'); + } + + @include on-tablet { + margin-bottom: 22px; + } + + @include on-mobile { + display: none; + } + } +} + +// CONTACT SECTION + +.contact { + background-color: $ebony-color; + + &__container { + @include page-grid; + } + + &__info { + grid-column: span 4; + + &-inquiries { + color: $robins-blue-color; + margin-bottom: 12px; + } + + &-title { + margin-bottom: 26px; + + @include on-tablet { + font-size: 21px; + margin-bottom: 50px; + } + + @include on-mobile { + margin-bottom: 32px; + } + } + + @include on-tablet { + grid-column: span 3; + } + + @include on-mobile { + grid-row: 1; + grid-column: 1 / -1; + } + } + + &__details { + @include flex(column, flex-start, flex-start); + + grid-column: span 4; + gap: 10px; + margin-top: 75px; + + a { + @include hover-color($robins-blue-color); + + color: $gray-color; + } + + @include on-tablet { + grid-column: span 3; + } + + @include on-mobile { + display: none; + } + } + + &__manager-answer { + grid-column: span 3; + grid-row: 2; + + @include on-mobile { + grid-column: 1 / -1; + grid-row: 3; + margin-top: 25px; + text-align: center; + } + } + + &__content { + grid-area: 1 / 4 / 5 / -1; + grid-column: 7 / 13; + + .form { + &__input { + width: 100%; + background-color: $black-color; + border-bottom: 1px solid $gray-color; + font-size: 16px; + line-height: 24px; + color: $white-color; + + &-height { + height: 74px; + } + + &:-webkit-autofill { + -webkit-text-fill-color: $white-color; + -webkit-box-shadow: 0 0 0 50px $black-color inset; + } + + &:focus { + border-bottom: 1px solid $robins-blue-color; + } + } + + &__label { + display: block; + line-height: 21px; + + &:has(+ .form__input:focus) { + color: $robins-blue-color; + } + } + + &__field { + @include flex($direction: column, $items: flex-start); + + width: 100%; + margin-bottom: 24px; + + &-textarea { + height: 88px; + margin-bottom: 90px; + + @include on-tablet { + margin-bottom: 48px; + } + + @include on-mobile { + margin-bottom: 30px; + } + } + } + + &__btns { + @include flex(row, space-between, center); + + &-submit { + @include primary-button; + + @include on-mobile { + width: 100%; + } + } + + .go__top { + @include set-size(48px, 48px); + + background-image: url(../images/go-top-button.svg); + background-position: 50%; + background-size: cover; + transition: all 0.3s ease; + + &:hover { + background-image: url(../images/go-top-button-hover.svg); + } + + @include on-mobile { + display: none; + } + } + } + } + + @include on-tablet { + grid-area: 1 / 4 / 5 / -1; + grid-column: 4/7; + } + + @include on-mobile { + grid-row: 2; + grid-column: 1 / -1; + } + } +} + +// FOOTER SECTION + +.footer { + background-color: $black-color; + + padding: 40px 0; + + &__container { + @include page-grid; + } + + &__logo { + @include hover(transform, scale(1.2)); + + display: block; + height: 14px; + grid-column: 1; + + @include on-mobile { + grid-column: 1 / span 2; + + &:hover { + transform: none; + } + } + } + + &__navigation { + @include flex(row, center, center); + + grid-column: 5 / span 4; + + @include on-mobile { + justify-content: flex-start; + } + + &-list { + @include flex(row, center, center); + + gap: 45px; + + @include on-mobile { + @include flex($direction: column, $items: flex-start); + + margin-top: 15px; + gap: 12px; + } + } + + &-link { + @include primary-text-effect( + $white-color, + $robins-blue-color, + $robins-blue-color, + 1px, + 8px, + 0.3s + ); + } + + @include on-tablet { + grid-column: 2 / 6; + } + + @include on-mobile { + grid-column: 1; + } + } + + &__contacts-info { + @include flex(column, center, center); + + grid-column: -3 / -1; + + @include on-tablet { + grid-column: -2 / -1; + } + + @include on-mobile { + grid-column: 2; + } + } + + // &__contacts-list { + // display: none; + + // a { + // @include hover-color($robins-blue-color); + + // color: $gray-color; + // font-size: 13px; + // line-height: 15px; + // } + + // @include on-mobile { + // display: flex; + // flex-direction: column; + // grid-column: 2; + // margin-bottom: 22px; + // gap: 12px; + // } + // } + + &__socials { + &-list { + @include flex(row, space-between, center); + + gap: 28px; + + @include on-mobile { + @include flex(row, normal, flex-end); + + gap: 22px; + } + } + + &-link { + img { + display: flex; + transition: transform 0.6s; + + &:hover { + @include hover(transform, scale(1.2)); + } + } + } + } + + @include on-mobile { + padding: 45px 0; + } +} + +// VIDEO MODAL + +.video-modal { + @include flex(row, center, center); + + position: fixed; + inset: 0; + background-color: rgba(0, 0, 0, 0.7); + z-index: 30; + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease; + + &__overlay { + position: absolute; + inset: 0; + background-color: rgba(0, 0, 0, 0.5); + } + + &__content { + @include set-size(70%, 60%); + + position: relative; + z-index: 10; + overflow: hidden; + } + + iframe { + @include set-size(100%, 100%); + } + + &__close { + @include set-size(18px, 18px); + + position: absolute; + top: 25px; + right: 25px; + background: url(../images/icons/close-icon.svg); + background-repeat: no-repeat; + background-position: center; + cursor: pointer; + } + + &.show { + opacity: 1; + pointer-events: auto; + } +} + +.buy-btn { + position: sticky; + bottom: 0; + left: 0; + right: 0; + z-index: 800; + background: linear-gradient( + 180deg, + rgba(0, 0, 0, 0.21) 0%, + rgba(4, 4, 4, 0.59) 23.44%, + #050505 100% + ); + padding: 30px; + + display: none; + + &__content { + @include primary-button; + + width: 60%; + text-align: center; + } + + @include on-tablet { + @include flex(row, center, center); + } +} + +.more-btn { + @include flex(column, center, center); + + color: $robins-blue-color; + font-weight: 500; + + &::after { + @include set-size(0, 0); + + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid $robins-blue-color; + margin-top: 10px; + transition: all 0.3s ease; + } + + &:hover { + color: $white-color; + + &::after { + border-top-color: $white-color; + } + } +} + +// CONTACT LIST + +.contact-list { + &--footer { + display: none; + + @include on-mobile { + display: flex; + grid-column: 2; + margin-bottom: 22px; + } + } + + &__items { + @include flex(column, flex-start, flex-start); + + gap: 12px; + + &--help { + gap: 25px; + } + } + + &__link { + @include hover-color($robins-blue-color); + + color: $gray-color; + font-size: 13px; + line-height: 15px; + + &--help { + font-size: 16px; + } + } +} + +// MODAL DEFAULT + +.modal { + @include flex(row, center, center); + + position: fixed; + inset: 0; + z-index: 830; + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease; + + &__overlay { + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.7); + } + + &__container { + max-width: 880px; + width: 100%; + box-sizing: border-box; + padding: 60px 90px; + position: relative; + z-index: 10; + overflow: hidden; + background: $haiti-color; + border-radius: 4px; + + @include on-tablet { + max-width: 100%; + height: 100vh; + padding: 102px 34px; + } + + @include on-mobile { + padding: 68px 20px; + } + } + + &__close { + @include close-button; + } + + &__title { + margin-bottom: 50px; + + @include on-tablet { + margin-bottom: 30px; + font-size: 21px; + } + } + + .modal-help { + &__description { + text-align: justify; + margin-bottom: 20px; + + @include on-mobile { + margin-bottom: 30px; + } + } + + &__support { + @include flex(row, flex-start, center); + + gap: 65px; + + .warranty-links { + &__list { + @include flex($direction: column); + + gap: 20px; + } + } + + @include on-mobile { + @include flex(column, flex-start, flex-start); + + gap: 30px; + } + } + } + + .modal-faq { + &__list { + @include flex($direction: column); + + width: 100%; + overflow: hidden; + gap: 13px; + } + &__item { + border-radius: 4px; + border: 1px solid $robins-blue-color; + transition: box-shadow 0.2s ease; + + &:hover { + box-shadow: 0 0 10px rgba(173, 216, 230, 0.7); + } + } + + &__question { + @include flex(row, space-between, center); + + padding: 18px; + cursor: pointer; + color: $robins-blue-color; + + @include on-mobile { + padding: 18px 12px; + } + } + + &__answer { + max-height: 0; + overflow: hidden; + padding: 0 20px; + transition: + max-height 1s ease, + padding 0.3s ease; + + &--text { + margin-bottom: 20px; + } + + &--date { + color: $emperor-color; + font-size: 14px; + line-height: 21px; + + @include on-mobile { + font-size: 12px; + line-height: 18px; + } + } + + &.open { + max-height: 500px; + padding: 15px 20px; + + @include on-mobile { + padding: 12px; + } + } + } + + &__arrow { + @include arrow-icon; + + @include on-tablet { + display: none; + } + + &.open { + transform: rotate(90deg); + } + } + + &__btn { + margin-top: 50px; + + @include on-mobile { + display: none; + } + } + } + + &.show { + opacity: 1; + pointer-events: auto; + } +} + +// FULL SCREEN MODAL + +.order-modal { + background: linear-gradient(107.56deg, $haiti-color 0%, $black-color 100%); + + @include set-size(100%, 100vh); + + position: fixed; + inset: 0; + z-index: 830; + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease; + overflow: scroll; + + &__progress { + display: none; + + @include on-tablet { + @include flex($content: space-between); + + margin-bottom: 30px; + } + + &-step { + @include set-size(100%, 33px); + + text-align: center; + font-weight: 500; + color: $emperor-color; + border-bottom: 1px solid $emperor-color; + + &--current { + color: $robins-blue-color; + border-bottom: 1px solid $robins-blue-color; + } + } + } + + &__container { + padding: 65px 110px; + + @include on-tablet { + padding: 30px 34px; + } + + @include on-mobile { + padding: 20px; + } + } + + &__top { + @include flex(row, space-between, center); + + grid-column: span 12; + + margin-bottom: 102px; + + @include on-tablet { + margin-bottom: 30px; + } + } + + &__logo { + display: block; + } + + &__close { + @include set-size(18px, 18px); + + background: url(../images/icons/close-icon.svg); + background-repeat: no-repeat; + background-position: center; + cursor: pointer; + + @include hover(transform, scale(1.2)); + } + + &__lifecycle { + @include flex(row, space-between, center); + + gap: 190px; + + &-step { + font-size: 14px; + font-weight: 500; + + &--active { + position: relative; + color: $robins-blue-color; + + &::after { + @include set-size(4px, 4px); + + content: ''; + position: absolute; + top: calc(100% + 7px); + left: 50%; + transform: translateX(-50%); + border-radius: 50%; + background-color: $robins-blue-color; + } + } + } + + @include on-tablet { + display: none; + } + } + + &__content { + &--active { + @include page-grid; + } + } + &__product { + grid-column: span 5; + + &--image { + @include set-size(100%, auto); + + object-fit: contain; + margin-bottom: 32px; + + @include on-tablet { + content: url(../images/order-image-tablet.png); + height: 277px; + } + + @include on-mobile { + display: none; + } + } + + &--payment { + grid-column: span 5; + + @include on-tablet { + grid-column: 2/6; + } + } + + @include on-tablet { + grid-column: span 6; + } + + @include on-mobile { + grid-column: span 2; + } + } + + &__summary { + @include flex(row, center, flex-start); + + gap: 90px; + + @include on-tablet { + @include flex(row, flex-start, flex-start); + + gap: 150px; + margin-bottom: 48px; + } + + @include on-mobile { + @include flex(row, center, flex-start); + + gap: 75px; + } + } + + &__item { + @include flex(column, flex-start, flex-start); + } + &__label { + margin-bottom: 20px; + + @include on-mobile { + margin-bottom: 10px; + } + } + + &__price { + font-size: 36px; + font-weight: 500; + color: $robins-blue-color; + } + + &__value { + display: block; + width: 100%; + color: $white-color; + padding: 10px; + background-color: $haiti-color; + border-radius: 4px; + text-align: center; + } + + &__form { + grid-column: span 6 / -1; + } + + &__complete { + grid-column: span 12; + text-align: center; + + @include on-tablet { + grid-column: span 6; + } + + @include on-mobile { + grid-column: span 2; + } + &-back-btn { + @include primary-button; + } + &-title { + margin-bottom: 36px; + + @include on-tablet { + margin-bottom: 20px; + } + + @include on-mobile { + margin-bottom: 16px; + } + } + + &-text { + margin-bottom: 50px; + + @include on-mobile { + margin-bottom: 30px; + } + } + } + + &.show { + opacity: 1; + pointer-events: auto; + } +} + +.form-buy { + display: grid; + gap: 40px 20px; + grid-template-columns: repeat(6, 1fr); + grid-column: 7 / -1; + + @include on-tablet { + grid-column: 1 / -1; + } + + @include on-mobile { + @include flex($direction: column); + + row-gap: 30px; + } + + &__field { + @include flex($direction: column); + + grid-column: span 3; + } + + &__label { + font-size: 14px; + color: $gray-color; + } + + &__input, + &__textarea { + color: $white-color; + padding-bottom: 6px; + background-color: transparent; + border-bottom: 1px solid $mine-shaft-color; + font-size: 16px; + + &:-webkit-autofill { + transition: + background-color 5000s ease-in-out 0s, + color 5000s ease-in-out 0s; + } + + &:focus { + border-bottom: 1px solid $robins-blue-color; + } + } + + &__btn { + @include primary-button; + + grid-column: 1 / 4; + margin-top: 25px; + + @include on-tablet { + grid-column: span 4 / -2; + } + + @include on-mobile { + grid-column: span 2; + margin-top: 10px; + } + } + &__field:focus-within .form-buy__label { + color: $robins-blue-color; + } +} + +.payment-wrapper { + @include on-mobile { + grid-template-columns: repeat(6, 1fr); + } +} + +.form-payment { + display: grid; + grid-template-columns: repeat(5, 1fr); + grid-column: 7/12; + grid-row: 1/2; + gap: 30px 20px; + + @include on-tablet { + grid-column: 2 / 6; + grid-row: 2/2; + } + + &__field { + &--card { + grid-column: 1 / -1; + } + + &--expiration-date { + grid-column: 1 / 3; + } + + &--cvv { + width: 50px; + grid-column: 3 / 4; + } + + &-holder { + grid-column: 1 / -1; + } + } + &__label { + font-size: 14px; + } + + &__input { + box-sizing: border-box; + color: $white-color; + letter-spacing: 0.2em; + background-color: transparent; + border-bottom: 1px solid $mine-shaft-color; + width: 100%; + padding: 5px 0; + transition: border-bottom 0.3s; + display: block; + + &--num { + @include set-size(56px, 32px); + + letter-spacing: 0.1em; + padding-bottom: 5px; + text-align: center; + font-size: 16px; + } + + &:-webkit-autofill { + transition: + background-color 5000s ease-in-out 0s, + color 5000s ease-in-out 0s; + } + + &:focus { + border-bottom: 1px solid $robins-blue-color; + } + } + + &__card { + @include flex($content: space-between); + } + + &--visa-icon { + @include set-size(54px, 34px); + + background-image: url(../images/icons/visa-icon.svg); + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; + align-self: flex-end; + display: block; + } + + &__btn { + @include primary-button; + + grid-column: 1 / 4; + + @include on-tablet { + grid-column: span 5; + } + } + + &__field:focus-within .form-payment__label { + color: $robins-blue-color; + } +} + +// CUSTOM DROPDOWN + +.custom-dropdown { + position: relative; + display: inline-block; + width: 100%; + cursor: pointer; + color: $white-color; + + &__selected { + padding: 10px 24px; + background-color: $haiti-color; + border-radius: 4px; + + &::after { + @include arrow-icon; + + content: ''; + position: absolute; + right: 10px; + top: 15px; + } + } + + &__list { + text-align: center; + display: none; + position: absolute; + top: 110%; + left: 0; + width: 100%; + background-color: $haiti-color; + border-radius: 4px; + z-index: 10; + max-height: 200px; + overflow-y: auto; + + &.visible { + display: block; + } + } + + &__item { + padding: 10px; + cursor: pointer; + border-bottom: 1px solid $gray-color; + + &:hover { + background-color: $ebony-color; + } + } } diff --git a/src/styles/utils/_extends.scss b/src/styles/utils/_extends.scss index d7201e7b..dcce43b7 100644 --- a/src/styles/utils/_extends.scss +++ b/src/styles/utils/_extends.scss @@ -1,4 +1,65 @@ %h1 { - font-family: Roboto, sans-serif; + font-family: 'Inter Black', serif; + font-weight: 900; + font-size: 46px; + line-height: 130%; +} + +%h2 { + font-family: 'Inter Black', serif; + font-weight: 900; + font-size: 36px; + line-height: auto; + color: $white-color; + text-transform: uppercase; +} + +%highlight { + font-family: 'Inter Regular', serif; + font-weight: 400; + line-height: auto; + color: $robins-blue-color; +} + +%small-title { + font-family: 'Inter Black', serif; + font-weight: 900; + font-size: 18px; + line-height: 22px; + color: $white-color; + text-transform: uppercase; +} + +%primary-text { + font-family: 'Inter Regular', serif; + font-weight: 400; + font-size: 16px; + line-height: 150%; +} + +%secondary-text { + font-family: 'Inter Regular', serif; + font-weight: 400; + font-size: 14px; + line-height: auto; +} +%h3 { + font-family: 'Inter Black', serif; + font-weight: 900; + font-size: 16px; + line-height: auto; +} + +%buttons { + font-family: 'Inter Medium', serif; + font-weight: 500; + font-size: 16px; + line-height: auto; +} + +%links { + font-family: 'Inter Regular', serif; font-weight: 400; + font-size: 16px; + line-height: auto; } diff --git a/src/styles/utils/_mixins.scss b/src/styles/utils/_mixins.scss index 80c79780..caf7ad92 100644 --- a/src/styles/utils/_mixins.scss +++ b/src/styles/utils/_mixins.scss @@ -1,6 +1,185 @@ +@mixin set-size($width: auto, $height: auto) { + height: $height; + width: $width; +} + +@mixin flex($direction: row, $content: flex-start, $items: stretch) { + display: flex; + flex-direction: $direction; + justify-content: $content; + align-items: $items; +} + @mixin hover($_property, $_toValue) { transition: #{$_property} 0.3s; &:hover { #{$_property}: $_toValue; } } + +@mixin on-tablet { + @media (max-width: $tablet-max-width) { + @content; + } +} + +@mixin on-mobile { + @media (max-width: $mobile-max-width) { + @content; + } +} + +@mixin content-padding-inline { + margin-inline: auto; + padding-inline: 110px; + + @include on-tablet { + padding-inline: 34px; + } + + @include on-mobile { + padding-inline: 20px; + } +} + +@mixin page-grid { + --columns: 12; + + display: grid; + column-gap: 20px; + grid-template-columns: repeat(var(--columns), 1fr); + + @include on-tablet { + --columns: 6; + } + + @include on-mobile { + --columns: 2; + } +} + +@mixin slider-navigation-btn { + background: none; + color: $white-color; + cursor: pointer; + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } +} + +@mixin progress-line-styles( + $background: $robins-blue-color, + $transition: 0.3s ease +) { + background: $background; + transition: width $transition; + + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 0; +} + +@mixin progress-container-styles { + @include set-size(100%, 1px); + + background: $mine-shaft-color; + position: relative; + margin: 10px auto 0; +} + +@mixin primary-text-effect( + $text-color, + $hover-color, + $underline-color, + $underline-thickness: 1px, + $underline-spacing: 8px, + $transition-duration: 0.3s +) { + position: relative; + color: $text-color; + transition: color $transition-duration ease; + + &:hover { + color: $hover-color; + } + + &::after { + @include set-size(100%, $underline-thickness); + + content: ''; + display: block; + position: absolute; + bottom: -#{$underline-spacing}; + left: 0; + background-color: $underline-color; + transform: scaleX(0); + transform-origin: center; + transition: transform $transition-duration ease; + } + + &:hover::after { + transform: scaleX(1); + } +} + +@mixin hover-color($hover-color, $transition: all 0.3s ease) { + transition: $transition; + + &:hover { + color: $hover-color; + } +} + +@mixin primary-button( + $bg-color: $robins-blue-color, + $text-color: $white-color, + $hover-bg-color: $white-color, + $hover-text-color: $robins-blue-color, + $hover-shadow-color: $lavender-color, + $padding: 13px 55px, + $border-radius: 4px, + $transition: all 0.3s ease +) { + border-radius: $border-radius; + background-color: $bg-color; + color: $text-color; + padding: $padding; + transition: $transition; + + &:hover, + &:focus { + background-color: $hover-bg-color; + color: $hover-text-color; + box-shadow: + 0 0 10px $hover-shadow-color, + 0 0 20px $hover-shadow-color, + 0 0 20px $hover-bg-color inset; + } +} + +@mixin close-button($size: 18px, $icon-url: '../images/icons/close-icon.svg') { + @include set-size($size, $size); + + position: absolute; + top: $size; + right: $size; + background: url($icon-url) no-repeat center; + cursor: pointer; + + @include hover(transform, scale(1.2)); +} + +@mixin arrow-icon( + $width: 6px, + $height: 9px, + $icon-url: '../images/icons/arrow-icon.svg' +) { + @include set-size($width, $height); + + background: url($icon-url) no-repeat center; + transition: transform 0.3s ease; +} diff --git a/src/styles/utils/_vars.scss b/src/styles/utils/_vars.scss index aeb006ff..35a42d2c 100644 --- a/src/styles/utils/_vars.scss +++ b/src/styles/utils/_vars.scss @@ -1 +1,13 @@ -$c-gray: #eee; +$white-color: #fff; +$robins-blue-color: #05c2df; +$lavender-color: #ef97e8; +$ebony-color: #05040b; +$mine-shaft-color: #212121; +$gray-color: #929292; +$red-devil-color: #860404; +$haiti-color: #191536; +$black-color: #000; +$tundora-color: #484848; +$emperor-color: #545454; +$tablet-max-width: 1279px; +$mobile-max-width: 676px; diff --git a/src/styles/utils/reset.scss b/src/styles/utils/reset.scss new file mode 100644 index 00000000..ee4c744d --- /dev/null +++ b/src/styles/utils/reset.scss @@ -0,0 +1,142 @@ +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video, +button, +input { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} + +body { + line-height: 1; +} + +ol, +ul { + list-style: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote::before, +blockquote::after, +q::before, +q::after { + content: ''; + content: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +a { + text-decoration: none; +} + +input, +textarea { + outline: none; + border: none; + resize: none; +}