From 679e8d40e62d84d56008c04ff903e4871f02ed65 Mon Sep 17 00:00:00 2001
From: Max Petrashishin
Date: Wed, 15 May 2024 12:53:26 +0300
Subject: [PATCH 01/37] create header, store, Root router
---
package-lock.json | 1091 ++++++++--------------
package.json | 9 +-
src/App.scss | 9 +-
src/App.tsx | 5 +-
src/Root.tsx | 16 +
src/api.ts | 0
src/app/hook.ts | 5 +
src/app/store.ts | 9 +
src/components/Footer/Footer.tsx | 0
src/components/Header/Header.module.scss | 168 ++++
src/components/Header/Header.tsx | 73 ++
src/components/Header/index.ts | 1 +
src/icons/Close.png | Bin 0 -> 540 bytes
src/icons/Favourites.png | Bin 0 -> 1024 bytes
src/icons/Logo.png | Bin 0 -> 5877 bytes
src/icons/Menu.png | Bin 0 -> 368 bytes
src/icons/Shopping.png | Bin 0 -> 822 bytes
src/index.tsx | 4 +-
src/types/index.d.ts | 2 +
19 files changed, 683 insertions(+), 709 deletions(-)
create mode 100644 src/Root.tsx
create mode 100644 src/api.ts
create mode 100644 src/app/hook.ts
create mode 100644 src/app/store.ts
create mode 100644 src/components/Footer/Footer.tsx
create mode 100644 src/components/Header/Header.module.scss
create mode 100644 src/components/Header/Header.tsx
create mode 100644 src/components/Header/index.ts
create mode 100644 src/icons/Close.png
create mode 100644 src/icons/Favourites.png
create mode 100644 src/icons/Logo.png
create mode 100644 src/icons/Menu.png
create mode 100644 src/icons/Shopping.png
create mode 100644 src/types/index.d.ts
diff --git a/package-lock.json b/package-lock.json
index 98392dc382..edc6dcc9f1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,12 @@
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
"integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="
},
+ "@adobe/css-tools": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz",
+ "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==",
+ "dev": true
+ },
"@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
@@ -1671,19 +1677,6 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
},
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
"string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
@@ -1694,36 +1687,6 @@
"strip-ansi": "^7.0.1"
}
},
- "string-width-cjs": {
- "version": "npm:string-width@4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
- }
- },
"strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
@@ -1732,21 +1695,6 @@
"ansi-regex": "^6.0.1"
}
},
- "strip-ansi-cjs": {
- "version": "npm:strip-ansi@6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- }
- }
- },
"wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@@ -1756,54 +1704,6 @@
"string-width": "^5.0.1",
"strip-ansi": "^7.0.1"
}
- },
- "wrap-ansi-cjs": {
- "version": "npm:wrap-ansi@7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
- }
}
}
},
@@ -2420,60 +2320,6 @@
"eslint-plugin-react-hooks": "^4.6.0"
}
},
- "@mate-academy/scripts": {
- "version": "1.7.9",
- "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.7.9.tgz",
- "integrity": "sha512-TDtSLf9BVwkaib4xpMB8r8VA18N6ABRpePGxpqk+aYOHcXq1DFwrzqCbOW9LyrOxWbqLVJBhP5exEgFXiaWhfw==",
- "dev": true,
- "requires": {
- "@octokit/rest": "^17.11.2",
- "@types/get-port": "^4.2.0",
- "commander": "^5.1.0",
- "cross-env": "^7.0.3",
- "dotenv": "^8.6.0",
- "fs-extra": "^9.1.0",
- "get-port": "^5.1.1",
- "open": "^7.4.2",
- "sinon": "^9.2.4",
- "tree-kill": "^1.2.2"
- },
- "dependencies": {
- "commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dev": true
- },
- "dotenv": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
- "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
- "dev": true
- },
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dev": true,
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "open": {
- "version": "7.4.2",
- "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
- "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0",
- "is-wsl": "^2.1.1"
- }
- }
- }
- },
"@mate-academy/students-ts-config": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@mate-academy/students-ts-config/-/students-ts-config-0.0.4.tgz",
@@ -2532,223 +2378,6 @@
"fastq": "^1.6.0"
}
},
- "@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
- }
- },
- "@octokit/core": {
- "version": "2.5.4",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-2.5.4.tgz",
- "integrity": "sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ==",
- "dev": true,
- "requires": {
- "@octokit/auth-token": "^2.4.0",
- "@octokit/graphql": "^4.3.1",
- "@octokit/request": "^5.4.0",
- "@octokit/types": "^5.0.0",
- "before-after-hook": "^2.1.0",
- "universal-user-agent": "^5.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
- "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
- }
- }
- },
- "@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "dev": true,
- "requires": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
- "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
- }
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
- "dev": true
- },
- "@octokit/plugin-paginate-rest": {
- "version": "2.21.3",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz",
- "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.40.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
- }
- },
- "@octokit/plugin-request-log": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
- "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
- "dev": true
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz",
- "integrity": "sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg==",
- "dev": true,
- "requires": {
- "@octokit/types": "^4.1.6",
- "deprecation": "^2.3.1"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "4.1.10",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz",
- "integrity": "sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==",
- "dev": true,
- "requires": {
- "@types/node": ">= 8"
- }
- }
- }
- },
- "@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dev": true,
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
- "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
- "dev": true
- }
- }
- },
- "@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- }
- }
- },
- "@octokit/rest": {
- "version": "17.11.2",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-17.11.2.tgz",
- "integrity": "sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ==",
- "dev": true,
- "requires": {
- "@octokit/core": "^2.4.3",
- "@octokit/plugin-paginate-rest": "^2.2.0",
- "@octokit/plugin-request-log": "^1.0.0",
- "@octokit/plugin-rest-endpoint-methods": "3.17.0"
- }
- },
- "@octokit/types": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz",
- "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==",
- "dev": true,
- "requires": {
- "@types/node": ">= 8"
- }
- },
"@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -2777,6 +2406,24 @@
"source-map": "^0.7.3"
}
},
+ "@reduxjs/toolkit": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.4.tgz",
+ "integrity": "sha512-EoIC9iC2V/DLRBVMXRHrO/oM3QBT7RuJNeBRx8Cpnz/NHINeZBEqgI8YOxAYUjLp+KYxGgc4Wd6KoAKsaUBGhg==",
+ "requires": {
+ "immer": "^10.0.3",
+ "redux": "^5.0.1",
+ "redux-thunk": "^3.1.0",
+ "reselect": "^5.1.0"
+ },
+ "dependencies": {
+ "immer": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz",
+ "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw=="
+ }
+ }
+ },
"@remix-run/router": {
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz",
@@ -2856,23 +2503,6 @@
"@sinonjs/commons": "^1.7.0"
}
},
- "@sinonjs/samsam": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz",
- "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.6.0",
- "lodash.get": "^4.4.2",
- "type-detect": "^4.0.8"
- }
- },
- "@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==",
- "dev": true
- },
"@surma/rollup-plugin-off-main-thread": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
@@ -3169,15 +2799,6 @@
}
}
},
- "@types/get-port": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@types/get-port/-/get-port-4.2.0.tgz",
- "integrity": "sha512-Iv2FAb5RnIk/eFO2CTu8k+0VMmIR15pKbcqRWi+s3ydW+aKXlN2yemP92SrO++ERyJx+p6Ie1ggbLBMbU1SjiQ==",
- "dev": true,
- "requires": {
- "get-port": "*"
- }
- },
"@types/graceful-fs": {
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
@@ -3196,6 +2817,15 @@
}
}
},
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz",
+ "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@@ -3301,6 +2931,24 @@
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
+ "@types/postcss-modules-local-by-default": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.2.tgz",
+ "integrity": "sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "@types/postcss-modules-scope": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/postcss-modules-scope/-/postcss-modules-scope-3.0.4.tgz",
+ "integrity": "sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^8.0.0"
+ }
+ },
"@types/prettier": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
@@ -3345,6 +2993,27 @@
"@types/react": "*"
}
},
+ "@types/react-redux": {
+ "version": "7.1.33",
+ "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz",
+ "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==",
+ "requires": {
+ "@types/hoist-non-react-statics": "^3.3.0",
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0",
+ "redux": "^4.0.0"
+ },
+ "dependencies": {
+ "redux": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
+ "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
+ "requires": {
+ "@babel/runtime": "^7.9.2"
+ }
+ }
+ }
+ },
"@types/react-transition-group": {
"version": "4.4.10",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz",
@@ -3473,6 +3142,11 @@
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
},
+ "@types/use-sync-external-store": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
+ "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA=="
+ },
"@types/ws": {
"version": "8.5.10",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
@@ -4481,12 +4155,6 @@
"tweetnacl": "^0.14.3"
}
},
- "before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
- },
"bfj": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz",
@@ -5033,6 +4701,15 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dev": true,
+ "requires": {
+ "is-what": "^3.14.1"
+ }
+ },
"core-js": {
"version": "3.36.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz",
@@ -5670,12 +5347,6 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
},
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
- },
"dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -5725,12 +5396,6 @@
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
},
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- },
"diff-sequences": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
@@ -5965,10 +5630,20 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
},
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"requires": {
"is-arrayish": "^0.2.1"
}
@@ -7539,12 +7214,6 @@
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q=="
},
- "get-port": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
- "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
- "dev": true
- },
"get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -7828,6 +7497,14 @@
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
"hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -8107,6 +7784,13 @@
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw=="
},
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "optional": true
+ },
"immer": {
"version": "9.0.21",
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
@@ -8474,6 +8158,12 @@
"get-intrinsic": "^1.2.4"
}
},
+ "is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "dev": true
+ },
"is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -10317,12 +10007,6 @@
"object.values": "^1.1.6"
}
},
- "just-extend": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
- "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
- "dev": true
- },
"keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -10380,6 +10064,64 @@
"integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==",
"dev": true
},
+ "less": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz",
+ "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==",
+ "dev": true,
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "parse-node-version": "^1.0.1",
+ "source-map": "~0.6.0",
+ "tslib": "^2.3.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "optional": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "optional": true
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ }
+ }
+ },
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
@@ -10448,17 +10190,17 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "dev": true
+ },
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
"lodash.isempty": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
@@ -10667,12 +10409,6 @@
"yallist": "^3.0.2"
}
},
- "macos-release": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz",
- "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==",
- "dev": true
- },
"magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
@@ -11302,61 +11038,39 @@
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g=="
},
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "nise": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz",
- "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==",
+ "needle": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz",
+ "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
"dev": true,
+ "optional": true,
"requires": {
- "@sinonjs/commons": "^1.7.0",
- "@sinonjs/fake-timers": "^6.0.0",
- "@sinonjs/text-encoding": "^0.7.1",
- "just-extend": "^4.0.2",
- "path-to-regexp": "^1.7.0"
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
},
"dependencies": {
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
- "dev": true
- },
- "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==",
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
+ "optional": true,
"requires": {
- "isarray": "0.0.1"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
}
}
}
},
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
"no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -11373,39 +11087,6 @@
}
}
},
- "node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dev": true,
- "requires": {
- "whatwg-url": "^5.0.0"
- },
- "dependencies": {
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- }
- }
- },
"node-forge": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
@@ -11626,28 +11307,12 @@
"word-wrap": "~1.2.3"
}
},
- "os-name": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
- "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
- "dev": true,
- "requires": {
- "macos-release": "^2.2.0",
- "windows-release": "^3.1.0"
- }
- },
"ospath": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz",
"integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==",
"dev": true
},
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true
- },
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -11722,6 +11387,12 @@
"lines-and-columns": "^1.1.6"
}
},
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true
+ },
"parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
@@ -12777,6 +12448,13 @@
"integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==",
"dev": true
},
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true,
+ "optional": true
+ },
"psl": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
@@ -12998,6 +12676,15 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "react-redux": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz",
+ "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==",
+ "requires": {
+ "@types/use-sync-external-store": "^0.0.3",
+ "use-sync-external-store": "^1.0.0"
+ }
+ },
"react-refresh": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
@@ -13328,6 +13015,16 @@
}
}
},
+ "redux": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
+ "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="
+ },
+ "redux-thunk": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz",
+ "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw=="
+ },
"reflect.getprototypeof": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
@@ -13572,6 +13269,17 @@
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
+ "reselect": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz",
+ "integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg=="
+ },
+ "reserved-words": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
+ "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==",
+ "dev": true
+ },
"resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -14078,46 +13786,6 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
- "sinon": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz",
- "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.8.1",
- "@sinonjs/fake-timers": "^6.0.1",
- "@sinonjs/samsam": "^5.3.1",
- "diff": "^4.0.2",
- "nise": "^4.0.4",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "@sinonjs/fake-timers": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz",
- "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
"sisteransi": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@@ -14379,6 +14047,23 @@
}
}
},
+ "string-width-cjs": {
+ "version": "npm:string-width@4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ }
+ }
+ },
"string.prototype.matchall": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
@@ -14514,6 +14199,14 @@
"ansi-regex": "^5.0.1"
}
},
+ "strip-ansi-cjs": {
+ "version": "npm:strip-ansi@6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
"strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -14524,12 +14217,6 @@
"resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
"integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
- "dev": true
- },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -14788,6 +14475,27 @@
"postcss-value-parser": "^4.2.0"
}
},
+ "stylus": {
+ "version": "0.62.0",
+ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.62.0.tgz",
+ "integrity": "sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==",
+ "dev": true,
+ "requires": {
+ "@adobe/css-tools": "~4.3.1",
+ "debug": "^4.3.2",
+ "glob": "^7.1.6",
+ "sax": "~1.3.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
+ "dev": true
+ }
+ }
+ },
"sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
@@ -15215,12 +14923,6 @@
"punycode": "^2.1.1"
}
},
- "tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true
- },
"trim-newlines": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz",
@@ -15384,6 +15086,59 @@
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
"dev": true
},
+ "typescript-plugin-css-modules": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/typescript-plugin-css-modules/-/typescript-plugin-css-modules-5.1.0.tgz",
+ "integrity": "sha512-6h+sLBa4l+XYSTn/31vZHd/1c3SvAbLpobY6FxDiUOHJQG1eD9Gh3eCs12+Eqc+TCOAdxcO+zAPvUq0jBfdciw==",
+ "dev": true,
+ "requires": {
+ "@types/postcss-modules-local-by-default": "^4.0.2",
+ "@types/postcss-modules-scope": "^3.0.4",
+ "dotenv": "^16.4.2",
+ "icss-utils": "^5.1.0",
+ "less": "^4.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss": "^8.4.35",
+ "postcss-load-config": "^3.1.4",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.4",
+ "postcss-modules-scope": "^3.1.1",
+ "reserved-words": "^0.1.2",
+ "sass": "^1.70.0",
+ "source-map-js": "^1.0.2",
+ "stylus": "^0.62.0",
+ "tsconfig-paths": "^4.2.0"
+ },
+ "dependencies": {
+ "dotenv": {
+ "version": "16.4.5",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
+ "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "dev": true
+ },
+ "postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "dev": true,
+ "requires": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ }
+ },
+ "tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "dev": true,
+ "requires": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ }
+ }
+ },
"unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -15437,15 +15192,6 @@
"crypto-random-string": "^2.0.0"
}
},
- "universal-user-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz",
- "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==",
- "dev": true,
- "requires": {
- "os-name": "^3.1.0"
- }
- },
"universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -15498,6 +15244,11 @@
"requires-port": "^1.0.0"
}
},
+ "use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -15949,105 +15700,6 @@
"has-tostringtag": "^1.0.2"
}
},
- "windows-release": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz",
- "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "dev": true
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
"word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -16346,6 +15998,39 @@
}
}
},
+ "wrap-ansi-cjs": {
+ "version": "npm:wrap-ansi@7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ }
+ }
+ },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/package.json b/package.json
index 222c88a139..b92217965f 100644
--- a/package.json
+++ b/package.json
@@ -8,11 +8,14 @@
"dependencies": {
"@cypress/react18": "^2.0.0",
"@fortawesome/fontawesome-free": "^6.2.0",
+ "@reduxjs/toolkit": "^2.2.4",
+ "@types/react-redux": "^7.1.33",
"@types/react-transition-group": "^4.4.5",
"bulma": "^0.9.4",
"classnames": "^2.5.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-redux": "^9.1.2",
"react-router-dom": "^6.22.3",
"react-scripts": "5.0.1",
"react-transition-group": "^4.4.5"
@@ -20,12 +23,13 @@
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"@mate-academy/eslint-config-react-typescript": "latest",
- "@mate-academy/scripts": "^1.7.9",
+ "@mate-academy/scripts": "^1.8.1",
"@mate-academy/students-ts-config": "latest",
"@mate-academy/stylelint-config": "latest",
"@types/node": "^16.18.80",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
+ "cross-env": "^7.0.3",
"cypress": "^12.17.4",
"eslint": "^7.32.0",
"eslint-plugin-cypress": "^2.11.2",
@@ -37,7 +41,8 @@
"prettier": "^3.2.5",
"sass": "^1.72.0",
"stylelint": "^15.11.0",
- "typescript": "5.1.6"
+ "typescript": "5.1.6",
+ "typescript-plugin-css-modules": "^5.1.0"
},
"scripts": {
"start": "mate-scripts start -l",
diff --git a/src/App.scss b/src/App.scss
index 71bc413aad..bcbf71e94f 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -1 +1,8 @@
-// not empty
+// not empty
+* {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+}
diff --git a/src/App.tsx b/src/App.tsx
index 372e4b4206..2ddf328b5c 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,7 +1,10 @@
+import { Outlet } from 'react-router-dom';
import './App.scss';
+import { Header } from './components/Header';
export const App = () => (
-
Product Catalog
+
+
);
diff --git a/src/Root.tsx b/src/Root.tsx
new file mode 100644
index 0000000000..12c4626c80
--- /dev/null
+++ b/src/Root.tsx
@@ -0,0 +1,16 @@
+import { HashRouter, Route, Routes } from 'react-router-dom';
+import { App } from './App';
+import { Provider } from 'react-redux';
+import store from './app/store';
+
+export const Root = () => (
+
+
+
+ }>
+ NoPages} />
+
+
+
+
+);
diff --git a/src/api.ts b/src/api.ts
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/app/hook.ts b/src/app/hook.ts
new file mode 100644
index 0000000000..debd386107
--- /dev/null
+++ b/src/app/hook.ts
@@ -0,0 +1,5 @@
+import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';
+import { AppDispatch, RootState } from './store';
+
+export const useAppDispatch = () => useDispatch();
+export const useAppSelector: TypedUseSelectorHook = useSelector;
diff --git a/src/app/store.ts b/src/app/store.ts
new file mode 100644
index 0000000000..dc7851c641
--- /dev/null
+++ b/src/app/store.ts
@@ -0,0 +1,9 @@
+import { configureStore } from '@reduxjs/toolkit';
+
+export const store = configureStore({
+ reducer: {},
+});
+
+export default store;
+export type RootState = ReturnType;
+export type AppDispatch = typeof store.dispatch;
diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/components/Header/Header.module.scss b/src/components/Header/Header.module.scss
new file mode 100644
index 0000000000..4e1dc20d2b
--- /dev/null
+++ b/src/components/Header/Header.module.scss
@@ -0,0 +1,168 @@
+@mixin on-tablet {
+ @media (min-width: 640px) {
+ @content;
+ }
+}
+
+@mixin on-desktop {
+ @media (min-width: 1200px) {
+ @content;
+ }
+}
+
+@font-face {
+ font-family: 'Mont';
+ src: url('../../../public/fonts/Mont-Bold.otf') format('opentype'),
+ url('../../../public/fonts/Mont-Regular.otf') format('opentype'),
+ url('../../../public/fonts/Mont-SemiBold.otf') format('opentype');
+}
+
+.header {
+ width: 100%;
+ box-shadow: 0 1px 0 #E2E6E9;
+
+ display: flex;
+ justify-content: space-between;
+ position: relative;
+}
+
+.logo{
+ width: 64px;
+ height: 22px;
+ margin: 13px 16px;
+
+ &__item {
+ width: 100%;
+ height: 100%;
+ }
+
+ @include on-desktop {
+ width: 80px;
+ height: 28px;
+ margin: 18px 24px;
+ }
+}
+
+.menu {
+ width: 48px;
+ height: 48px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-shadow: -1px 0 0 #E2E6E9;
+
+ @include on-tablet {
+ width: auto;
+ height: auto;
+ }
+
+ &__box {
+ width: 50%;
+ height: 64px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ box-shadow: -1px 0 0 #E2E6E9;
+
+ @include on-tablet {
+ width: 48px;
+ height: 48px;
+ }
+
+ @include on-desktop() {
+ width: 64px;
+ height: 64px;
+ }
+ }
+
+ &__item {
+ width: 16px;
+ height: 16px;
+ }
+}
+
+.menuIs {
+ @include on-tablet {
+ display: none;
+ }
+}
+
+.menuMobile {
+ width: 100%;
+ border-top: 1px solid #E2E6E9;
+ display: flex;
+
+ &__item {
+ width: 16px;
+ height: 16px;
+ }
+}
+
+.nav {
+ display: none;
+
+ @include on-tablet {
+ display: flex;
+ justify-content: space-between;
+ width: calc(100vw - 96px);
+ }
+
+ &__list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 16px;
+ width: 100vw;
+
+ @include on-tablet {
+ flex-direction: row;
+ gap: 32px;
+ width: auto;
+ margin-inline: 16px;
+ }
+
+ &Item {
+ text-transform: uppercase;
+ font-family: 'Mont', sans-serif;
+ height: 27px;
+ padding-block: 8px;
+ font-size: 12px;
+ font-weight: 800;
+ line-height: 11px;
+ color: #89939A;
+
+ @include on-tablet {
+ padding: 0;
+ height: auto;
+ }
+ }
+ }
+}
+
+.navMobile {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ position: absolute;
+ top: 49px;
+ left: 0;
+ background-color: #FFFFFF;
+ height: calc(100vh - 48px);
+ padding-top: 32px;
+ width: 100vw;
+ transform: translatex(100%);
+
+ animation: slideDown 0.7s ease forwards;
+}
+
+@keyframes slideDown {
+ from {
+ transform: translatex(100%);
+ }
+ to {
+ transform: translatex(0);
+ }
+}
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
new file mode 100644
index 0000000000..899bee9790
--- /dev/null
+++ b/src/components/Header/Header.tsx
@@ -0,0 +1,73 @@
+import s from './Header.module.scss';
+import logo from '../../icons/Logo.png';
+import burgerMenu from '../../icons/Menu.png';
+import closeMenu from '../../icons/Close.png';
+import favorites from '../../icons/Favourites.png';
+import shopping from '../../icons/Shopping.png';
+import { useState } from 'react';
+import classNames from 'classnames';
+
+export const Header = () => {
+ const [isManuActive, setIsActiveMenu] = useState(false);
+
+ return (
+
+ );
+};
diff --git a/src/components/Header/index.ts b/src/components/Header/index.ts
new file mode 100644
index 0000000000..266dec8a1b
--- /dev/null
+++ b/src/components/Header/index.ts
@@ -0,0 +1 @@
+export * from './Header';
diff --git a/src/icons/Close.png b/src/icons/Close.png
new file mode 100644
index 0000000000000000000000000000000000000000..276586a0820ffed08dcc19284e370b84c51fcd0f
GIT binary patch
literal 540
zcmV+%0^|LOP)GH%oLS|ke{*rB3R6~
zYMsP>pJLe)6B&kK7>4n8IPHz|`C?i5YRiuteC0Mpv3nvQvHfSHr1E~lolp7awaa`y
zn=O_E;w!w*YyEGvDE8{IvcLC2T>Wi00&NXbNdV_EKt
z%ZsZw=jf*1F8{gxm9M{00G;8E!@2IQEhbwpBVpK2vwN1N(7t>sizRX)(`%8m`U&6Ww*$x@_Ra+`@b*W_XQb-
eVHk$-&-nznYNYsGp1IWk0000ccK~#7F?U>zh
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
LNkvXXu0mjf`*ATs
literal 0
HcmV?d00001
diff --git a/src/icons/Menu.png b/src/icons/Menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..2065cc50970b5539c73570a36b620bd45763c50e
GIT binary patch
literal 368
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?393lL^>oo1K-6l5$8
za(7}_cTVOdki(Mh=^3)7asdMO
z%T*V*ZRC9TU-E(m-^xX&e?C)Qx=ubh{A=5!Kk6>&+jQ)`@&Zc*Prp7a!EG&__Gqrx
zn(50Lf*jS)O+EZEcKumFrm+4+*Na>4bvpp{(!?Z=Kk)(v5QC?y
KpUXO@geCwOr;mgH
literal 0
HcmV?d00001
diff --git a/src/icons/Shopping.png b/src/icons/Shopping.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b4049e1ccc30d478a324fb8cc6ad55ca805e74d
GIT binary patch
literal 822
zcmV-61Ihe}P)PQ$OY8P8Wjtqy!%k5b14BrTzibG
zRRfdXvmp^zBw}6Ekr#CkVsODYerj;?n#iWMUDUBq0O#8={qdlAJkGz5i#i>3pCs`*`g0fBp@00@|i9
z2J(p22b)v!_o~M4v3>))JSj>ws8+y}H$K<#dt6+|i~Vm?D|n9MBU}Wm;}1eS9Y9Hh
zcp(xEh!QNZ7C@Ur(kSNxC<*7kQ#n8T2A0^z0H}}gX9jF^EN|bV`_RrbOf({!gC+JZ
zq<+oKd3(Ny-Qj?)Gh$EyLo3h>EU^|46(0(2Qq6jTUwyy-UWjK0KiBc$`_IR_lZ{lJ
zfouW}SnmTGDevc0$4(7(?2vIjq&z0xmH`2&NLtLm0q31q7x)x}C;y7O!-4w%9H}Ig
zkjuM(cGH`5L2g9X){4KX>SUv`Tu2AvYPGo3LKxsYv9^;i-G)ltAU?U2@{9GVlg23q
zO#EF@X3!8_I^8y%fVSxbv`r_VZT^1&W$vl!qD+C56@YM?=)kw{%6w7P=pT-AOrAy?
zYUfNYL>C#KDe)Q{o}=6z6S;jeY%?_kBA=#vW#54M5td4enD931|a~NA1#}9))#YE_S%^2eEK5o(77p4FCWD07*qoM6N<$f*oLI
A?f?J)
literal 0
HcmV?d00001
diff --git a/src/index.tsx b/src/index.tsx
index 50470f1508..b0620ab4c6 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,4 +1,4 @@
import { createRoot } from 'react-dom/client';
-import { App } from './App';
+import { Root } from './Root';
-createRoot(document.getElementById('root') as HTMLElement).render();
+createRoot(document.getElementById('root') as HTMLElement).render();
diff --git a/src/types/index.d.ts b/src/types/index.d.ts
new file mode 100644
index 0000000000..c894fe02e1
--- /dev/null
+++ b/src/types/index.d.ts
@@ -0,0 +1,2 @@
+declare module '*.module.scss';
+declare module '*.png';
From 9899f544337751f6124ce16fb866a422f58bd9dc Mon Sep 17 00:00:00 2001
From: Max Petrashishin
Date: Mon, 20 May 2024 10:20:24 +0300
Subject: [PATCH 02/37] add HomePage and Styled Component
---
package-lock.json | 91 +++++++++++
package.json | 3 +-
src/App.scss | 9 ++
src/Root.tsx | 2 +
src/components/Header/Header.module.scss | 22 +--
src/icons/ProductSlider/ProductSlide.png | Bin 0 -> 152474 bytes
src/icons/ProductSlider/ProductSlide1.png | Bin 0 -> 213250 bytes
src/icons/ProductSlider/ProductSlide2.png | Bin 0 -> 268869 bytes
src/icons/ProductSlider/Tablet/Banner.png | Bin 0 -> 458686 bytes
src/icons/ProductSlider/Tablet/Banner1.png | Bin 0 -> 559712 bytes
src/icons/ProductSlider/Tablet/Banner2.png | Bin 0 -> 698054 bytes
src/modules/HomePage/HomePage.module.scss | 8 +
src/modules/HomePage/HomePage.tsx | 12 ++
.../PicturesSlider/PicturesSlider.tsx | 151 ++++++++++++++++++
.../components/PicturesSlider/styled.ts | 94 +++++++++++
src/modules/HomePage/styled.ts | 24 +++
16 files changed, 400 insertions(+), 16 deletions(-)
create mode 100644 src/icons/ProductSlider/ProductSlide.png
create mode 100644 src/icons/ProductSlider/ProductSlide1.png
create mode 100644 src/icons/ProductSlider/ProductSlide2.png
create mode 100644 src/icons/ProductSlider/Tablet/Banner.png
create mode 100644 src/icons/ProductSlider/Tablet/Banner1.png
create mode 100644 src/icons/ProductSlider/Tablet/Banner2.png
create mode 100644 src/modules/HomePage/HomePage.module.scss
create mode 100644 src/modules/HomePage/HomePage.tsx
create mode 100644 src/modules/HomePage/components/PicturesSlider/PicturesSlider.tsx
create mode 100644 src/modules/HomePage/components/PicturesSlider/styled.ts
create mode 100644 src/modules/HomePage/styled.ts
diff --git a/package-lock.json b/package-lock.json
index edc6dcc9f1..eaeb0aa61f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1572,6 +1572,24 @@
}
}
},
+ "@emotion/is-prop-valid": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
+ "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
+ "requires": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
"@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -3137,6 +3155,11 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
"integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw=="
},
+ "@types/stylis": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz",
+ "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="
+ },
"@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -4387,6 +4410,11 @@
}
}
},
+ "camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="
+ },
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -4777,6 +4805,11 @@
"postcss-selector-parser": "^6.0.9"
}
},
+ "css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="
+ },
"css-declaration-sorter": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
@@ -4887,6 +4920,16 @@
"resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
},
+ "css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "requires": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
"css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@@ -13752,6 +13795,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -14256,6 +14304,44 @@
"integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==",
"dev": true
},
+ "styled-components": {
+ "version": "6.1.11",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.11.tgz",
+ "integrity": "sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA==",
+ "requires": {
+ "@emotion/is-prop-valid": "1.2.2",
+ "@emotion/unitless": "0.8.1",
+ "@types/stylis": "4.2.5",
+ "css-to-react-native": "3.2.0",
+ "csstype": "3.1.3",
+ "postcss": "8.4.38",
+ "shallowequal": "1.1.0",
+ "stylis": "4.3.2",
+ "tslib": "2.6.2"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "requires": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "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=="
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ }
+ }
+ },
"stylehacks": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
@@ -14475,6 +14561,11 @@
"postcss-value-parser": "^4.2.0"
}
},
+ "stylis": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
+ "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="
+ },
"stylus": {
"version": "0.62.0",
"resolved": "https://registry.npmjs.org/stylus/-/stylus-0.62.0.tgz",
diff --git a/package.json b/package.json
index b92217965f..f002ebe6fb 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,8 @@
"react-redux": "^9.1.2",
"react-router-dom": "^6.22.3",
"react-scripts": "5.0.1",
- "react-transition-group": "^4.4.5"
+ "react-transition-group": "^4.4.5",
+ "styled-components": "^6.1.11"
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
diff --git a/src/App.scss b/src/App.scss
index bcbf71e94f..29796aa4d2 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -3,6 +3,15 @@
box-sizing: border-box;
}
+@font-face {
+ src: url('../public/fonts/Mont-Bold.otf') format('opentype'),
+ url('../public/fonts/Mont-Regular.otf') format('opentype'),
+ url('../public/fonts/Mont-SemiBold.otf') format('opentype');
+
+ font-family: Mont;
+}
+
body {
margin: 0;
+ font-family: Mont, sans-serif;
}
diff --git a/src/Root.tsx b/src/Root.tsx
index 12c4626c80..612a5e296c 100644
--- a/src/Root.tsx
+++ b/src/Root.tsx
@@ -2,12 +2,14 @@ import { HashRouter, Route, Routes } from 'react-router-dom';
import { App } from './App';
import { Provider } from 'react-redux';
import store from './app/store';
+import { HomePage } from './modules/HomePage/HomePage';
export const Root = () => (
}>
+ } />
NoPages
} />
diff --git a/src/components/Header/Header.module.scss b/src/components/Header/Header.module.scss
index 4e1dc20d2b..eb37a0fc86 100644
--- a/src/components/Header/Header.module.scss
+++ b/src/components/Header/Header.module.scss
@@ -10,13 +10,6 @@
}
}
-@font-face {
- font-family: 'Mont';
- src: url('../../../public/fonts/Mont-Bold.otf') format('opentype'),
- url('../../../public/fonts/Mont-Regular.otf') format('opentype'),
- url('../../../public/fonts/Mont-SemiBold.otf') format('opentype');
-}
-
.header {
width: 100%;
box-shadow: 0 1px 0 #E2E6E9;
@@ -69,7 +62,7 @@
height: 48px;
}
- @include on-desktop() {
+ @include on-desktop {
width: 64px;
height: 64px;
}
@@ -126,7 +119,6 @@
&Item {
text-transform: uppercase;
- font-family: 'Mont', sans-serif;
height: 27px;
padding-block: 8px;
font-size: 12px;
@@ -149,20 +141,20 @@
position: absolute;
top: 49px;
left: 0;
- background-color: #FFFFFF;
+ background-color: #FFF;
height: calc(100vh - 48px);
padding-top: 32px;
width: 100vw;
- transform: translatex(100%);
+ transform: translateX(100%);
- animation: slideDown 0.7s ease forwards;
+ animation: downslide 0.7s ease forwards;
}
-@keyframes slideDown {
+@keyframes downslide {
from {
- transform: translatex(100%);
+ transform: translateX(100%);
}
to {
- transform: translatex(0);
+ transform: translateX(0);
}
}
diff --git a/src/icons/ProductSlider/ProductSlide.png b/src/icons/ProductSlider/ProductSlide.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f7916294651a3da9b63a8c8abfe863c386b1059
GIT binary patch
literal 152474
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