diff --git a/generate-react-cli.json b/generate-react-cli.json new file mode 100644 index 0000000..fdb1042 --- /dev/null +++ b/generate-react-cli.json @@ -0,0 +1,15 @@ +{ + "usesTypeScript": false, + "usesCssModule": false, + "cssPreprocessor": "css", + "testLibrary": "None", + "component": { + "default": { + "path": "src/components", + "withStyle": true, + "withTest": false, + "withStory": false, + "withLazy": false + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 02cb990..41b90c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,16 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "celebrate": "^15.0.1", + "framer-motion": "^8.4.2", + "generate-react-cli": "^8.2.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-minimal-pie-chart": "^8.4.0", + "react-player": "^2.11.0", "react-scripts": "5.0.1", + "react-slider": "^2.0.4", + "swiper": "^8.4.5", "web-vitals": "^2.1.4" } }, @@ -2124,6 +2131,21 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -2187,6 +2209,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -2968,6 +3003,64 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, + "node_modules/@motionone/animation": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", + "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", + "dependencies": { + "@motionone/easing": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.15.5", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.15.5.tgz", + "integrity": "sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==", + "dependencies": { + "@motionone/animation": "^10.15.1", + "@motionone/generators": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", + "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", + "dependencies": { + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", + "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", + "dependencies": { + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", + "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + }, + "node_modules/@motionone/utils": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", + "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", + "dependencies": { + "@motionone/types": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -3156,6 +3249,24 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "node_modules/@sinclair/typebox": { "version": "0.24.51", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", @@ -4121,6 +4232,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "node_modules/@types/svg-path-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/svg-path-parser/-/svg-path-parser-1.1.3.tgz", + "integrity": "sha512-F1Y6lQIto5b2sKCseVUsFfY5J+8PIhhX4jrDVxpth4m7hwM2OdySh3iTLeR35lEhl/K4ZMEF+GDAwTl7yJcO5Q==" + }, "node_modules/@types/testing-library__jest-dom": { "version": "5.14.5", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", @@ -4947,6 +5063,14 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -5240,6 +5364,25 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -5275,6 +5418,16 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5411,6 +5564,29 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -5517,6 +5693,16 @@ "node": ">=4" } }, + "node_modules/celebrate": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/celebrate/-/celebrate-15.0.1.tgz", + "integrity": "sha512-K2y221k10u+K2t9w25802qXh8h1mVWZf+6pl7zHdlhhwzrOSQFnnw+GsR8k17oyn4Y3fVErBGsO/+CeW8N7aRQ==", + "dependencies": { + "escape-html": "1.0.3", + "joi": "17.x.x", + "lodash": "4.17.x" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -5538,6 +5724,11 @@ "node": ">=10" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "node_modules/check-types": { "version": "11.2.2", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", @@ -5626,6 +5817,39 @@ "node": ">=0.10.0" } }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", + "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", + "engines": { + "node": ">= 12" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -5636,6 +5860,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6320,6 +6552,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -6362,6 +6602,14 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, + "node_modules/deep-keys": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/deep-keys/-/deep-keys-0.5.0.tgz", + "integrity": "sha512-/80a4+9lbLj1hRxG0ULtEOGtbM4hN/5u1Vu6kc6ZkYePUq+ZhtboRIsWTVKplc2ET1xY2FMVwhyt46w9vPf9Rg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -6381,6 +6629,17 @@ "node": ">= 10" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -6577,6 +6836,14 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom7": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.4.tgz", + "integrity": "sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw==", + "dependencies": { + "ssr-window": "^4.0.0" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -6661,6 +6928,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7764,6 +8036,30 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7832,6 +8128,32 @@ "bser": "2.1.1" } }, + "node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -8202,6 +8524,23 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/framer-motion": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-8.4.2.tgz", + "integrity": "sha512-AdYwbEZZ+6Z748A8JdNtwH7YR24HvXr/hJHL06ofipMyRchrf7Mzvk69zM24+rAm3SC3DCJK0WdbhpOLzroO+w==", + "dependencies": { + "@motionone/dom": "^10.15.3", + "hey-listen": "^1.0.8", + "tslib": "^2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -8276,6 +8615,69 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generate-react-cli": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/generate-react-cli/-/generate-react-cli-8.2.0.tgz", + "integrity": "sha512-qj5QWZfSDooppNYdCEiqzuYIQtCKXKnjDCNGYsdvpYS7DC7+Pa8/lVDUB3dtNhEZl0GwJr1K2a5FD9rRv3IAeg==", + "dependencies": { + "chalk": "5.2.0", + "commander": "9.4.1", + "deep-keys": "0.5.0", + "dotenv": "^16.0.3", + "fs-extra": "11.1.0", + "inquirer": "9.1.4", + "lodash": "4.17.21", + "openai": "^3.1.0", + "replace": "1.2.2" + }, + "bin": { + "generate-react": "bin/generate-react.js" + }, + "engines": { + "node": ">=10.x", + "npm": ">= 6.x" + } + }, + "node_modules/generate-react-cli/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/generate-react-cli/node_modules/commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/generate-react-cli/node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/generate-react-cli/node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8582,6 +8984,11 @@ "he": "bin/he" } }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -8846,6 +9253,25 @@ "node": ">=4" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -8939,6 +9365,135 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/inquirer": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz", + "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==", + "dependencies": { + "ansi-escapes": "^6.0.0", + "chalk": "^5.1.2", + "cli-cursor": "^4.0.0", + "cli-width": "^4.0.0", + "external-editor": "^3.0.3", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^6.1.2", + "run-async": "^2.4.0", + "rxjs": "^7.5.7", + "string-width": "^5.1.2", + "strip-ansi": "^7.0.1", + "through": "^2.3.6", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz", + "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==", + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.5.1.tgz", + "integrity": "sha512-70T99cpILFk2fzwuljwWxmazSphFrdOe3gRHbp6bqs71pxFBbJwFqnmkLO2lQL6aLHxHmYAnP/sL+AJWpT70jA==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/internal-slot": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", @@ -9115,6 +9670,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -9305,6 +9871,17 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -11411,6 +11988,18 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, "node_modules/js-sdsl": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", @@ -11625,6 +12214,11 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/load-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", + "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==" + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -11690,6 +12284,32 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -11787,6 +12407,11 @@ "node": ">= 4.0.0" } }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -11990,6 +12615,11 @@ "multicast-dns": "cli.js" } }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -12305,6 +12935,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/openai": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-3.1.0.tgz", + "integrity": "sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg==", + "dependencies": { + "axios": "^0.26.0", + "form-data": "^4.0.0" + } + }, + "node_modules/openai/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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -12321,6 +12973,72 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", + "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", + "dependencies": { + "bl": "^5.0.0", + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -14201,11 +14919,43 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-minimal-pie-chart": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/react-minimal-pie-chart/-/react-minimal-pie-chart-8.4.0.tgz", + "integrity": "sha512-A0wG+6mRjboyMxMDrzQNWp+2+GSn2ai4ERzRFHLp/OCC45PwIR1DpDVjwedawO+5AtFpzBRQKSFm3ZUxrqIEzA==", + "dependencies": { + "@types/svg-path-parser": "^1.1.3" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18", + "react-dom": "^16.8.0 || ^17.0.0 || ^18" + } + }, + "node_modules/react-player": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz", + "integrity": "sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==", + "dependencies": { + "deepmerge": "^4.0.0", + "load-script": "^1.0.0", + "memoize-one": "^5.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.0.1" + }, + "peerDependencies": { + "react": ">=16.6.0" + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -14286,6 +15036,17 @@ } } }, + "node_modules/react-slider": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-slider/-/react-slider-2.0.4.tgz", + "integrity": "sha512-sWwQD01n6v+MbeLCYthJGZPc0kzOyhQHyd0bSo0edg+IAxTVQmj3Oy4SBK65eX6gNwS9meUn6Z5sIBUVmwAd9g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14462,6 +15223,181 @@ "strip-ansi": "^6.0.1" } }, + "node_modules/replace": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", + "integrity": "sha512-C4EDifm22XZM2b2JOYe6Mhn+lBsLBAvLbK8drfUQLTfD1KYl/n3VaW/CDju0Ny4w3xTtegBpg8YNSpFJPUDSjA==", + "dependencies": { + "chalk": "2.4.2", + "minimatch": "3.0.5", + "yargs": "^15.3.1" + }, + "bin": { + "replace": "bin/replace.js", + "search": "bin/search.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/replace/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/replace/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/replace/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/replace/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/replace/node_modules/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==" + }, + "node_modules/replace/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/replace/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/replace/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/replace/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -14478,6 +15414,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -14582,6 +15523,21 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -14682,6 +15638,14 @@ "node": ">=8" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -14704,6 +15668,14 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -15003,6 +15975,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -15173,6 +16150,11 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -15536,6 +16518,29 @@ "boolbase": "~1.0.0" } }, + "node_modules/swiper": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.5.tgz", + "integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "hasInstallScript": true, + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -15723,11 +16728,27 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -16170,6 +17191,14 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, "node_modules/web-vitals": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", @@ -16597,6 +17626,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "node_modules/which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -18439,6 +19473,21 @@ "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", "requires": {} }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, "@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -18483,6 +19532,19 @@ } } }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -19064,6 +20126,64 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, + "@motionone/animation": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz", + "integrity": "sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==", + "requires": { + "@motionone/easing": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "@motionone/dom": { + "version": "10.15.5", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.15.5.tgz", + "integrity": "sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==", + "requires": { + "@motionone/animation": "^10.15.1", + "@motionone/generators": "^10.15.1", + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@motionone/easing": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz", + "integrity": "sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==", + "requires": { + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "@motionone/generators": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz", + "integrity": "sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==", + "requires": { + "@motionone/types": "^10.15.1", + "@motionone/utils": "^10.15.1", + "tslib": "^2.3.1" + } + }, + "@motionone/types": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz", + "integrity": "sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==" + }, + "@motionone/utils": { + "version": "10.15.1", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz", + "integrity": "sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==", + "requires": { + "@motionone/types": "^10.15.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -19180,6 +20300,24 @@ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, "@sinclair/typebox": { "version": "0.24.51", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", @@ -19931,6 +21069,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" }, + "@types/svg-path-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/svg-path-parser/-/svg-path-parser-1.1.3.tgz", + "integrity": "sha512-F1Y6lQIto5b2sKCseVUsFfY5J+8PIhhX4jrDVxpth4m7hwM2OdySh3iTLeR35lEhl/K4ZMEF+GDAwTl7yJcO5Q==" + }, "@types/testing-library__jest-dom": { "version": "5.14.5", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", @@ -20526,6 +21669,14 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==" }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "requires": { + "follow-redirects": "^1.14.8" + } + }, "axobject-query": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", @@ -20751,6 +21902,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -20777,6 +21933,16 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -20886,6 +22052,15 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -20955,6 +22130,16 @@ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" }, + "celebrate": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/celebrate/-/celebrate-15.0.1.tgz", + "integrity": "sha512-K2y221k10u+K2t9w25802qXh8h1mVWZf+6pl7zHdlhhwzrOSQFnnw+GsR8k17oyn4Y3fVErBGsO/+CeW8N7aRQ==", + "requires": { + "escape-html": "1.0.3", + "joi": "17.x.x", + "lodash": "4.17.x" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -20970,6 +22155,11 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "check-types": { "version": "11.2.2", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", @@ -21030,6 +22220,24 @@ } } }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" + }, + "cli-width": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", + "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==" + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -21040,6 +22248,11 @@ "wrap-ansi": "^7.0.0" } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -21526,6 +22739,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "decimal.js": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", @@ -21565,6 +22783,11 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, + "deep-keys": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/deep-keys/-/deep-keys-0.5.0.tgz", + "integrity": "sha512-/80a4+9lbLj1hRxG0ULtEOGtbM4hN/5u1Vu6kc6ZkYePUq+ZhtboRIsWTVKplc2ET1xY2FMVwhyt46w9vPf9Rg==" + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -21578,6 +22801,14 @@ "execa": "^5.0.0" } }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "requires": { + "clone": "^1.0.2" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -21723,6 +22954,14 @@ "entities": "^2.0.0" } }, + "dom7": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.4.tgz", + "integrity": "sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw==", + "requires": { + "ssr-window": "^4.0.0" + } + }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -21785,6 +23024,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -22599,6 +23843,26 @@ } } }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -22660,6 +23924,22 @@ "bser": "2.1.1" } }, + "figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "requires": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + } + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -22914,6 +24194,17 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" }, + "framer-motion": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-8.4.2.tgz", + "integrity": "sha512-AdYwbEZZ+6Z748A8JdNtwH7YR24HvXr/hJHL06ofipMyRchrf7Mzvk69zM24+rAm3SC3DCJK0WdbhpOLzroO+w==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "@motionone/dom": "^10.15.3", + "hey-listen": "^1.0.8", + "tslib": "^2.4.0" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -22966,6 +24257,49 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, + "generate-react-cli": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/generate-react-cli/-/generate-react-cli-8.2.0.tgz", + "integrity": "sha512-qj5QWZfSDooppNYdCEiqzuYIQtCKXKnjDCNGYsdvpYS7DC7+Pa8/lVDUB3dtNhEZl0GwJr1K2a5FD9rRv3IAeg==", + "requires": { + "chalk": "5.2.0", + "commander": "9.4.1", + "deep-keys": "0.5.0", + "dotenv": "^16.0.3", + "fs-extra": "11.1.0", + "inquirer": "9.1.4", + "lodash": "4.17.21", + "openai": "^3.1.0", + "replace": "1.2.2" + }, + "dependencies": { + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==" + }, + "commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==" + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -23175,6 +24509,11 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -23375,6 +24714,11 @@ "harmony-reflect": "^1.4.6" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -23439,6 +24783,86 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "inquirer": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.4.tgz", + "integrity": "sha512-9hiJxE5gkK/cM2d1mTEnuurGTAoHebbkX0BYl3h7iEg7FYfuNIom+nDfBCSWtvSnoSrWCeBxqqBZu26xdlJlXA==", + "requires": { + "ansi-escapes": "^6.0.0", + "chalk": "^5.1.2", + "cli-cursor": "^4.0.0", + "cli-width": "^4.0.0", + "external-editor": "^3.0.3", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^6.1.2", + "run-async": "^2.4.0", + "rxjs": "^7.5.7", + "string-width": "^5.1.2", + "strip-ansi": "^7.0.1", + "through": "^2.3.6", + "wrap-ansi": "^8.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.0.0.tgz", + "integrity": "sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==", + "requires": { + "type-fest": "^3.0.0" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "type-fest": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.5.1.tgz", + "integrity": "sha512-70T99cpILFk2fzwuljwWxmazSphFrdOe3gRHbp6bqs71pxFBbJwFqnmkLO2lQL6aLHxHmYAnP/sL+AJWpT70jA==" + }, + "wrap-ansi": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", + "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "internal-slot": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", @@ -23552,6 +24976,11 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" + }, "is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -23670,6 +25099,11 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==" + }, "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", @@ -25212,6 +26646,18 @@ } } }, + "joi": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, "js-sdsl": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", @@ -25370,6 +26816,11 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "load-script": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", + "integrity": "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==" + }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -25423,6 +26874,22 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "dependencies": { + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==" + } + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -25501,6 +26968,11 @@ "fs-monkey": "^1.0.3" } }, + "memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -25643,6 +27115,11 @@ "thunky": "^1.0.2" } }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -25862,6 +27339,27 @@ "is-wsl": "^2.2.0" } }, + "openai": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-3.1.0.tgz", + "integrity": "sha512-v5kKFH5o+8ld+t0arudj833Mgm3GcgBnbyN9946bj6u7bvel4Yg6YFz2A4HLIYDzmMjIo0s6vSG9x73kOwvdCg==", + "requires": { + "axios": "^0.26.0", + "form-data": "^4.0.0" + }, + "dependencies": { + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -25875,6 +27373,47 @@ "word-wrap": "^1.2.3" } }, + "ora": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", + "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", + "requires": { + "bl": "^5.0.0", + "chalk": "^5.0.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.6.1", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.1.0", + "log-symbols": "^5.1.0", + "strip-ansi": "^7.0.1", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==" + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -27049,11 +28588,36 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-minimal-pie-chart": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/react-minimal-pie-chart/-/react-minimal-pie-chart-8.4.0.tgz", + "integrity": "sha512-A0wG+6mRjboyMxMDrzQNWp+2+GSn2ai4ERzRFHLp/OCC45PwIR1DpDVjwedawO+5AtFpzBRQKSFm3ZUxrqIEzA==", + "requires": { + "@types/svg-path-parser": "^1.1.3" + } + }, + "react-player": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz", + "integrity": "sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==", + "requires": { + "deepmerge": "^4.0.0", + "load-script": "^1.0.0", + "memoize-one": "^5.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.0.1" + } + }, "react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -27114,6 +28678,14 @@ "workbox-webpack-plugin": "^6.4.1" } }, + "react-slider": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-slider/-/react-slider-2.0.4.tgz", + "integrity": "sha512-sWwQD01n6v+MbeLCYthJGZPc0kzOyhQHyd0bSo0edg+IAxTVQmj3Oy4SBK65eX6gNwS9meUn6Z5sIBUVmwAd9g==", + "requires": { + "prop-types": "^15.8.1" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -27253,6 +28825,137 @@ "strip-ansi": "^6.0.1" } }, + "replace": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", + "integrity": "sha512-C4EDifm22XZM2b2JOYe6Mhn+lBsLBAvLbK8drfUQLTfD1KYl/n3VaW/CDju0Ny4w3xTtegBpg8YNSpFJPUDSjA==", + "requires": { + "chalk": "2.4.2", + "minimatch": "3.0.5", + "yargs": "^15.3.1" + }, + "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" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -27263,6 +28966,11 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -27329,6 +29037,15 @@ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -27399,6 +29116,11 @@ } } }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -27407,6 +29129,14 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "requires": { + "tslib": "^2.1.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -27629,6 +29359,11 @@ "send": "0.18.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -27763,6 +29498,11 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, + "ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -28041,6 +29781,15 @@ } } }, + "swiper": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.5.tgz", + "integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==", + "requires": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -28170,11 +29919,24 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -28502,6 +30264,14 @@ "minimalistic-assert": "^1.0.0" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "requires": { + "defaults": "^1.0.3" + } + }, "web-vitals": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", @@ -28806,6 +30576,11 @@ "is-weakset": "^2.0.1" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", diff --git a/package.json b/package.json index 55b90b9..0687511 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,16 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "celebrate": "^15.0.1", + "framer-motion": "^8.4.2", + "generate-react-cli": "^8.2.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-minimal-pie-chart": "^8.4.0", + "react-player": "^2.11.0", "react-scripts": "5.0.1", + "react-slider": "^2.0.4", + "swiper": "^8.4.5", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/public/index.html b/public/index.html index aa069f2..4723c56 100644 --- a/public/index.html +++ b/public/index.html @@ -1,21 +1,21 @@ - - - - - - - - - - - React App - - - -
- - - + + + \ No newline at end of file diff --git a/src/App.css b/src/App.css index 74b5e05..8fd11ae 100644 --- a/src/App.css +++ b/src/App.css @@ -1,7 +1,31 @@ .App { + background-color: #141414; text-align: center; } + +.welcome-container { + z-index: 99; +} + +.welcome-header { + z-index: 99; + width: 100%; + position: fixed; + top: 0; + left: 0; +} + + +.content { + display: flex; + flex-direction: column; + gap: 160px; + padding: 160px 240px; + margin: 0 auto; + max-width: 1440px; +} + .App-logo { height: 40vmin; pointer-events: none; diff --git a/src/App.js b/src/App.js index 3784575..dc10f7e 100644 --- a/src/App.js +++ b/src/App.js @@ -1,23 +1,62 @@ -import logo from './logo.svg'; import './App.css'; +import { Welcome } from './components/Welcome/Welcome' +import { Header } from './components/Header/Header'; +import { motion } from 'framer-motion' +import { useState } from 'react'; +import { SalesInstrument } from './components/SalesInstrument/SalesInstrument' +import InteractiveTech from './components/InteractiveTech/InteractiveTech'; +import Integration from './components/Integration/Integration'; +import { Infrastracture } from './components/Infrastracture/Infrastracture'; +import { SimpleSearch } from './components/SimpleSearch/SimpleSearch'; +import { Immersion } from './components/Immersion/Immersion'; +import { Planing } from './components/Planing/Planing'; +import VirtualTour from './components/VirtualTour/VirtualTour'; +import Wishlist from './components/Wishlist/Wishlist'; +import { SalesPromotion } from './components/SalesPromotion/SalesPromotion'; +import { Analytics } from './components/Analytics/Analytics'; +import { RemoteSelling } from './components/RemoteSelling/RemoteSelling'; + + +const textAnimation = { + open: { opacity: 1 }, + closed: { opacity: 0 } +} + function App() { + + const [isOpen, setIsOpen] = useState(true); + const [isAnimation, setAnimation] = useState('') + + const handleScroll = () => { + setIsOpen(false) + } + + + + return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
+
+
+
+
+ + + + + + + + + + + + + + +
); } diff --git a/src/components/Analytics/Analytics.css b/src/components/Analytics/Analytics.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Analytics/Analytics.js b/src/components/Analytics/Analytics.js new file mode 100644 index 0000000..d2b8163 --- /dev/null +++ b/src/components/Analytics/Analytics.js @@ -0,0 +1,18 @@ +import "../../styles/styles.css" +import { AnalyticsDashboard } from "./AnalyticsDashboard/AnalyticsDashboard"; + +export const Analytics = () => { + return (
+
+
+

Анализируем поведение пользователей.

+

Система внутренней аналитики программы собирает информацию о поведении пользователя и эффективности работы менеджеров для создания отчета, содержащего необходимые метрики.

+
+
+ + +
) +} + + + diff --git a/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.css b/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.css new file mode 100644 index 0000000..f105078 --- /dev/null +++ b/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.css @@ -0,0 +1,778 @@ + +.mobile { + display: none; +} + +.graph__container { + font-family: 'GilroyWebRegular'; + display: -ms-grid; + display: grid; + -ms-grid-rows: 1fr 26px auto; + grid-template-rows: 1fr auto; + gap: 26px; +} + +.graph__row_1 { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: -ms-grid; + display: grid; + -ms-grid-columns: 1fr 30px 1fr 30px 1fr; + grid-template-columns: 1fr 1fr 1fr; + gap: 30px; +} + +.graph__row_item { + background: #1E1E1E; + height: 256px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + gap: 16px; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + border-radius: 16px; + padding: 32px; + font-style: normal; + font-weight: 500; + font-size: 20px; + line-height: 120%; + /* identical to box height, or 24px */ + + + /* Landing/White */ + + color: #EBEBEB; +} + + + + +.graph__row_2 { + display: -ms-grid; + display: grid; + -ms-grid-columns: 175px 30px 175px 30px 175px 30px 175px 30px 380px; + grid-template-columns: 175px 175px 175px 175px 380px; + gap: 30px; +} + + + +.graph__row_item_s { + background: #1E1E1E; + + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: 600; + font-size: 14px; + line-height: 120%; + padding: 24px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + gap: 20px; + padding: 24px; + border-radius: 16px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.graph__text { + text-align: left; + + font-weight: 400; + font-size: 18px; + line-height: 140%; + color: #EBEBEB; + background-color: transparent; +} + +.graph__text_mobile { + text-align: left; + + display: none; + font-weight: 400; + font-size: 18px; + line-height: 140%; + color: #EBEBEB; +} + +.graph__row_item_l { + background-color: transparent; +} + +.graph__color_elem { + font-weight: 400; + font-size: 48px; + line-height: 100%; + /* identical to box height, or 48px */ + + + /* Landing/Pink */ + + color: #D375FF; +} + +.graph__bar_row { + display: -ms-grid; + display: grid; + -ms-grid-columns: auto 16px 2fr 16px auto; + grid-template-columns: auto 2fr auto; + gap: 16px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.graph__title { + text-align: left; + margin-bottom: 8px; +} + +.graph__bar_row:last-of-type { + margin-bottom: 0; + +} + +.graph__caption { + text-align: left; + + width: 92px; + margin: 0; + font-style: normal; + font-weight: 400; + font-size: 14px; + line-height: 140%; +} + +.graph__bar_width_container { + width: 169px; +} + +.graph__bar_1 { + width: 100%; + background: -o-linear-gradient(33.25deg, #D375FF 19.74%, #798FFF 82.32%); + background: linear-gradient(56.75deg, #D375FF 19.74%, #798FFF 82.32%); + border-radius: 4px; + height: 24px; +} + +.graph__procentage { + font-size: 12px; + font-weight: 500; + line-height: 130%; + margin: 0; + text-align: center; + width: 25px; + text-align: left; +} + +.graph__bar_2 { + margin-right: 41px; + background: -o-linear-gradient(33.25deg, #D375FF 19.74%, #798FFF 82.32%); + background: linear-gradient(56.75deg, #D375FF 19.74%, #798FFF 82.32%); + border-radius: 4px; + height: 24px; + width: 80%; + +} + +.graph__bar_3 { + + background: -o-linear-gradient(33.25deg, #D375FF 19.74%, #798FFF 82.32%); + + background: linear-gradient(56.75deg, #D375FF 19.74%, #798FFF 82.32%); + border-radius: 4px; + height: 24px; + width: 60%; + + + +} + +.graph__bar_4 { + background: -o-linear-gradient(33.25deg, #D375FF 19.74%, #798FFF 82.32%); + background: linear-gradient(56.75deg, #D375FF 19.74%, #798FFF 82.32%); + border-radius: 4px; + height: 24px; + width: 15%; + + +} + +.bar__container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.chart__container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + gap: 49px; +} + +.legend__container { + font-style: normal; + font-weight: 400; + font-size: 14px; + line-height: 140%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + gap: 6px; + height: auto; +} + +.legend__point { + width: 12px; + height: 12px; + border-radius: 50%; +} + +.legend__row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + gap: 18px; +} + +.legend__caption { + margin: 0; + white-space: nowrap; +} + +.color { + background: #7A31C3; +} + +.color1 { + background: #798FFF; +} + +.color2 { + background: #D375FF; +} + +.color3 { + background: #8742F8; + ; +} + +.color4 { + background: #FB57F4; + ; +} + +.sales__container { + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + gap: 15px; + font-style: normal; +} + +.background__row { + background: -o-linear-gradient(33.25deg, rgba(211, 117, 255, 0.1) 19.74%, rgba(121, 143, 255, 0.1) 82.32%), rgba(124, 142, 255, 0.1); + background: linear-gradient(56.75deg, rgba(211, 117, 255, 0.1) 19.74%, rgba(121, 143, 255, 0.1) 82.32%), rgba(124, 142, 255, 0.1); + border-radius: 4px; + width: 262px; + height: 25px; +} + +.sales__bar { + width: 100%; + + padding-top: 3px; + padding-bottom: 5px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-family: 'GilroyWebRegular'; + font-style: normal; + font-weight: 600; + font-size: 12px; + line-height: 140%; + /* identical to box height, or 17px */ + + text-align: center; + border-radius: 4px; + height: 25px; + text-align: center; + background: -o-linear-gradient(33.25deg, #D375FF 19.74%, #798FFF 82.32%); + background: linear-gradient(56.75deg, #D375FF 19.74%, #798FFF 82.32%); +} + +.sales__row { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + gap: 16px; + width: 100%; +} + + +.sales_bar_width { + width: 90%; +} + +.sales_bar_width1 { + width: 45%; +} + +.sales_bar_width3 { + width: 30%; +} + +.background__row { + width: 262px; + + -webkit-box-pack: center; + + -ms-flex-pack: center; + + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + +} + +.sales__procentage { + font-weight: 500; + font-size: 12px; + line-height: 130%; + +} + +.graph__title_s { + text-align: left; + color: #EBEBEB; + + width: 116px; + height: 51px; +} + +@media screen and (min-width: 1600px) { + .graph__row_2 { + -ms-grid-columns: 1fr 1fr 1fr 1fr 456px; + grid-template-columns: 1fr 1fr 1fr 1fr 456px; + } + + .graph__container { + gap: 36px; + } + + .graph__text { + font-weight: 400; + font-size: 22px; + line-height: 140%; + padding-top: 32px; + } + + .graph__row_item { + padding: 40px; + height: auto; + } + + .graph__row_item_s { + padding: 30px; + height: 202px; + } + + .graph__color_elem { + font-size: 58px; + + } + + .graph__title_s { + white-space: pre-line; + font-size: 17px; + line-height: 120%; + height: 61px; + width: auto; + + } + + .graph__title { + margin-bottom: 15px; + } + + .graph__procentage { + font-size: 15px; + height: 29px; + } + + .background__row { + width: 100%; + } + + .sales__procentage { + width: 45px; + font-size: 14.4px; + } + + .graph__caption { + font-size: 16.8px; + width: 112px; + + } + + .sales__bar { + font-size: 14.4px; + } + + + .graph__bar_width_container { + width: 100%; + } + + .sales__row { + gap: 19px; + } + + .legend__container { + font-size: 17px; + gap: 7px; + } + + .legend__point { + height: 15px; + width: 15px; + + } + + +} + +@media (max-width: 1300px) { + + .background__row { + width: 216px; + } + + .graph__bar_width_container { + width: 123px; + } + + + .graph__row_2 { + -ms-grid-columns: 151px 15px 151px 15px 151px 15px 151px 15px 318px; + grid-template-columns: 151px 151px 151px 151px 318px; + gap: 15px; + } + + + .graph__row_1 { + -ms-grid-columns: 318px 15px 318px 15px 318px; + grid-template-columns: 318px 318px 318px; + gap: 15px; + } + + .graph__row_item { + height: 266px; + padding: 24px; + } + + + .chart__container { + gap: 19px; + } + + .graph__row_item_l { + margin-left: 15px; + } + + + + +} + +@media (max-width: 1024px) { + + + .chart__container { + gap: 54px; + } + + .bar__container { + width: 100%; + } + + .background__row { + width: 100%; + + } + + .sales__procentage { + width: 37px; + } + + .desktop { + display: none; + } + + .mobile { + display: block; + } + + + + .graph__row_1 { + grid-template-columns: repeat(auto-fit, minmax(405px, 1fr)); + width: 100%; + } + + .graph__row_mobile { + display: none; + } + + .graph__row_2 { + grid-template-columns: repeat(auto-fit, minmax(175px, 1fr)); + } + + .graph__row_item { + height: 240px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + .graph__row_item_s { + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 100%; + gap: 28px; + } + + .analytics__container { + padding: 120px 20px 80px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + } + + .graph__text { + display: none; + } + + + .graph__bar_width_container { + width: 100%; + } + + .graph__text_mobile { + display: block; + font-style: normal; + font-weight: 400; + font-size: 2.8vw; + line-height: 140%; + } +} + +@media (max-width: 890px) { + .graph__container { + display: -ms-grid; + display: grid; + -ms-grid-columns: 1fr 20px auto; + grid-template-columns: 1fr auto; + gap: 20px; + row-gap: 0; + } + +} + +@media (max-width: 690px) { + + + .graph__container { + display: block; + } + + .graph__row_2 { + margin-top: 10px; + } + + + .analytics__container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + + .sales__procentage { + width: 37px; + + } + + + .chart__container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + gap: 35px; + } + + .bar__container { + width: 100%; + } + + + .graph__bar_width_container { + width: 100%; + } + + .graph__row_1 { + gap: 10px; + } + + .sales__row { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + + .background__row { + width: 100%; + + } + + .desktop { + display: none; + } + + .mobile { + display: block; + } + + .analytics__container { + padding: 40px 10px 80px; + } + + .graph__row_1 { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + + } + + .graph__row_item { + height: auto; + width: 100%; + padding: 20px; + } + + + .graph__row_2 { + display: -ms-grid; + display: grid; + -ms-grid-columns: 1fr 10px 1fr; + grid-template-columns: 1fr 1fr; + gap: 10px; + } + + .graph__text { + display: none; + } + + + + + + .graph__row_mobile { + display: none; + } + + + + .legend__caption { + font-weight: 400; + font-size: 14px; + line-height: 140%; + } + + + + .graph__row_item_s { + padding: 16px; + gap: 14px; + font-size: 14px; + } + + .graph__color_elem { + font-size: 47px; + } + + .analytics__container { + margin-bottom: 0; + } + + .graph__text_mobile { + font-size: 4.5vw; + } + + .graph__container { + } + +} diff --git a/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.js b/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.js new file mode 100644 index 0000000..80e35f0 --- /dev/null +++ b/src/components/Analytics/AnalyticsDashboard/AnalyticsDashboard.js @@ -0,0 +1,147 @@ +import './AnalyticsDashboard.css' +import { PieChartComp } from './PieChartComp/PieChartComp' + +export const AnalyticsDashboard = () => { + return ( +
+
+
+
+ Конверсия менеджеров в брони +
+

К.Н. Федоров

+
+
+
+
+
+

45%

+
+
+

И.Ф. Яковлева

+
+
+
+
+
+

30%

+ +
+
+

А.М. Ташева

+
+
+
+
+
+

28%

+ +
+
+

А.А. Фетисов

+
+
+
+
+
+

5%

+ +
+
+
+ Популярные типы квартир, % +
+ +
+
+
+

Студии

+
+
+
+

1-к. квартиры

+
+
+
+

2-к. квартиры

+
+
+
+

3-к. квартиры

+
+
+
+

4-к. квартиры

+
+
+
+
+
+ Воронка продаж +
+
+
+
Сеансы
+
+
+
+
+
+
В избранное
+
+
93,47%
+
+
+
+
Брони
+
+
45,68%
+
+
+
+
Продажи
+
+
29,13%
+
+ +
+
+
+
+
+ Среднее время сеанса, мин. +
+ 12:45 +
+
+
+ Сформировано коммерческих предложений, шт +
+ 856 +
+
+
+ Конверсия из сеанса в продажу, % +
+ 12,44 +
+
+
+ Продано через Graff.estate, млн.руб. +
+ 134,5 +
+
+
+
Полученный отчет позволяет сделать процесс демонстрации жилого комплекса еще эффективнее.
+
+
+
+ +
+
Полученный отчет позволяет сделать процесс демонстрации жилого комплекса еще эффективнее.
+
+
+ + ) +} \ No newline at end of file diff --git a/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.css b/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.css new file mode 100644 index 0000000..22d16ad --- /dev/null +++ b/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.css @@ -0,0 +1,61 @@ +/* +* Prefixed by https://autoprefixer.github.io +* PostCSS: v8.4.14, +* Autoprefixer: v10.4.7 +* Browsers: last 4 version +*/ + +.chart { + font-family: 'Gilroy'; + font-style: normal; + font-weight: 500; + font-size: 12px; + line-height: 140%; + /* or 17px */ + + -webkit-font-feature-settings: 'tnum' on, 'lnum' on; + + font-feature-settings: 'tnum' on, 'lnum' on; + + /* Landing/White */ + width: 144px; + color: #EBEBEB; + } + + @media screen and (min-width: 1600px) { + .chart { + width: 174px; + height: 174px; + } + } + + + @media screen and (max-width: 1279px) { + .chart { + width: 128px; + } + + } + + @media screen and (max-width: 1023px) { + .chart { + width: 144px; + } + + } + + + @media screen and (max-width: 690px) { + .chart { + width: 40%; + } + } + + + @media screen and (max-width: 450px) { + .chart { + width: 100%; + } + + } + \ No newline at end of file diff --git a/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.js b/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.js new file mode 100644 index 0000000..e95f5c8 --- /dev/null +++ b/src/components/Analytics/AnalyticsDashboard/PieChartComp/PieChartComp.js @@ -0,0 +1,42 @@ +import { PieChart } from 'react-minimal-pie-chart'; +import './PieChartComp.css' + + + + +export const PieChartComp = () => { + const dataMock = [ + { title: 'One', value: 36.27, color: '#7A31C4' }, + { title: 'Two', value: 6.22, color: '#FB57F4' }, + { title: 'Three', value: 9.95, color: '#8742F8' }, + { title: 'Four', value: 17.93, color: '#D375FF' }, + { title: 'Five', value: 29.64, color: '#798FFF' }, + + ]; + + + const defaultLabelStyle = { + fontSize: '9px', + fontWeight: '500', + lineHeight: '140%', + fontFamily: 'GilroyWebRegular', + fill: '#EBEBEB', + }; + + + + + + return ( +
+ `${Math.round(dataEntry.percentage)} %`} + data={dataMock} + labelStyle={ + defaultLabelStyle + } + labelPosition={65} + /> +
+ ) +} diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js new file mode 100644 index 0000000..9292825 --- /dev/null +++ b/src/components/Header/Header.js @@ -0,0 +1,113 @@ +import React, { CSSProperties, useState } from "react"; +import logo from "./logoIcon.svg"; +import chevron from "./chevronIcon.svg"; +import "./header.css"; +import "./styles.css" + +export const Header = () => { + const [open, setOpen] = useState(false); + const [menuOpen, setMenuOpen] = useState(false); + const [opacity, setOpacity] = useState(false); + const [currentLang, setCurrentLang] = useState('ru') + + function handleUpdateLanguage(value) { + setCurrentLang((value)); + setOpen((prev) => !prev); + } + + function handleOpen() { + setOpen((prev) => !prev); + } + + function handleOpacity() { + setOpacity(true); + } + + const style = { + background: "rgba(235, 235, 235, 0.2", + }; + + const iconTransform = { + transform: "rotate(-90deg)", + }; + + const setBackground = opacity && !open; + + function setOpacityAndMenu() { + setMenuOpen(true); + const targetElement = document.querySelector("body"); + targetElement.style.overflow = "hidden"; + } + + function openMenu() { + setMenuOpen(false); + const targetElement = document.querySelector("body"); + targetElement.style.overflow = "visible"; + } + + return ( +
+
+ company-logo +
+
+ Контакты + О компании +
+
+ img +
+
setOpacity(false)} + onClick={handleOpen} + className=" header-lang-button-picked" + > + {currentLang.toLocaleUpperCase()} +
+
+ {currentLang === "ru" ? ( + + ) : ( + + )} +
+
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/Header/chevronIcon.svg b/src/components/Header/chevronIcon.svg new file mode 100644 index 0000000..b5f642d --- /dev/null +++ b/src/components/Header/chevronIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Header/closeIcon1.svg b/src/components/Header/closeIcon1.svg new file mode 100644 index 0000000..c6696a6 --- /dev/null +++ b/src/components/Header/closeIcon1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Header/header.css b/src/components/Header/header.css new file mode 100644 index 0000000..cac1f1f --- /dev/null +++ b/src/components/Header/header.css @@ -0,0 +1,239 @@ +.header-container { + font-family: 'Inter', sans-serif; + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 135%; + display: flex; + padding: 30px 40px; + color: #ffffff; + justify-content: space-between; + align-items: center; + position: relative; +} + +.header__buttons_wrapper { + display: flex; + gap: 40px; + align-items: center; +} + +.burger__button { + display: none; +} + +.header-logo { + width: 31px; + height: 50px; + +} + +.header-buttons { + margin-right: 96px; +} + +.header-button { + font-family: 'Inter', sans-serif; + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 125%; + background-color: transparent; + border: none; + color: #ffffff; + cursor: pointer; + padding: 0px; + appearance: none; + text-decoration: none; +} + +.header-lang-button-text:hover { + background: rgba(235, 235, 235, 0.2); + +} + +.wrapper__button { + margin-right: 10px; + +} + + + +.header-lang-button { + position: absolute; + right: 40px; + top: 40px; + overflow: hidden; + display: flex; + flex-direction: column; + gap: 10px; + width: 55px; + padding: 6px 8px 5px 12px; + box-sizing: border-box; + height: 29px; + justify-content: space-between; + box-sizing: border-box; + line-height: 13px; + background-color: transparent; + border: 2px solid #ebebeb; + border-radius: 12px; + transition: height ease-in 0.5s; + + +} + +.header-lang-button_disabled { + height: 29px; +} + +.header-lang-button_active { + height: 51px; +} + +.header-lang-button_active { + border-radius: 12px; +} + +.header-lang-button-text { + + width: 100%; + appearance: none; + background-color: transparent; + color: #ebebeb; + padding: 0; + text-align: left; + margin: 0; + border: none; + height: 13px; + -webkit-appearance: none; + + cursor: pointer; +} + +.header-lang-button-picked { + cursor: pointer; +} + +.header-select__icon { + top: 6px; + height: 13px; + right: 5px; + position: absolute; + + +} + +.select { + background-color: transparent; + display: flex; + flex-direction: column; + align-self: center; + gap: 11px; + position: relative; + border: none; + outline-color: transparent; + outline-style: none; + color: #ebebeb; + outline: none; +} + +.option { + /* or 16px */ + + + /* Landing/White */ + + color: #EBEBEB; +} + +.burger__button { + border: none; + cursor: pointer; + background-color: transparent; + display: none; + flex-direction: column; + gap: 5px; + box-sizing: border-box; + +} + +.line__burger { + background-color: #FFFFFF; + width: 14px; + height: 1px; +} + +@media screen and (min-width: 1600px) { + .header-container { + padding: 35px 48px; + } + + .header-logo { + width: 46px; + height: 74px; + } + + .header-button { + font-size: 20px; + + } + + .header-lang-button_active { + height: auto; + + } + + .header-buttons { + gap: 48px; + } + + .header-lang-button { + width: 70px; + padding: 7px 15px; + top: 57px; + } + +} + + +@media screen and (max-width: 1279px) { + .header-container { + padding: 30px 12px; + } + + .header-lang-button { + top: 40px; + right: 12px; + + } +} + +@media screen and (max-width: 1024px) { + .header-container { + padding: 15px 12px; + } + + .header-lang-button { + right: 12px; + top: 25%; + } +} + + +@media screen and (max-width: 639px) { + .header { + background: #262626; + + } + + .header-container { + padding: 8px 10px; + } + + + + .burger__button { + display: flex; + } + +} \ No newline at end of file diff --git a/src/components/Header/logoIcon.svg b/src/components/Header/logoIcon.svg new file mode 100644 index 0000000..a2e86e1 --- /dev/null +++ b/src/components/Header/logoIcon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/components/Header/styles.css b/src/components/Header/styles.css new file mode 100644 index 0000000..972012f --- /dev/null +++ b/src/components/Header/styles.css @@ -0,0 +1,510 @@ +.main-block__container { + margin: 0 auto 80px; + display: flex; + flex-direction: column; + justify-content: center; + gap: 56px; + } + + .main-block__caption_l { + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 140%; + margin: 0; + color: #ebebeb; + } + + .main-block__subblock-container { + display: flex; + flex-direction: column; + align-items: center; + } + + .main-block_subblock { + width: 480px; + display: flex; + margin: 0 auto; + flex-direction: column; + align-items: flex-start; + gap: 40px; + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 140%; + /* or 25px */ + + /* Landing/White */ + + color: #ebebeb; + } + + .main-block__title { + font-style: normal; + font-weight: 400; + font-size: 64px; + line-height: 100%; + color: #ebebeb; + margin: 0; + } + + .main-block__title_small { + font-style: normal; + font-weight: 400; + line-height: 100%; + color: #ebebeb; + margin: 0; + font-size: 40px; + } + + .main-block__title_gardient { + font-style: normal; + font-weight: 400; + font-size: 64px; + line-height: 100%; + margin: 0; + background-image: linear-gradient(56.75deg, #d375ff 19.74%, #798fff 82.32%); + background-size: 100%; + background-repeat: repeat; + background-color: transparent; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .main-block__title_gardient_small { + font-style: normal; + font-weight: 400; + line-height: 100%; + margin: 0; + background-image: linear-gradient(56.75deg, #d375ff 19.74%, #798fff 82.32%); + background-size: 100%; + background-repeat: repeat; + background-color: transparent; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 40px; + } + + .main-block__caption { + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 140%; + margin: 20px 0 0 0; + color: #ebebeb; + } + + .main-block__caption_color { + margin-top: 20px; + margin-bottom: 0px; + font-style: normal; + font-weight: 500; + font-size: 14px; + line-height: 150%; + color: #ebebeb; + letter-spacing: 0.02em; + text-transform: uppercase; + color: #d375ff; + width: 416px; + } + + .main-block__button { + font-family: "GilroyWebRegular"; + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 125%; + + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 125%; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 14px 18px 12px 24px; + gap: 8px; + box-sizing: border-box; + width: 164px; + height: 40px; + + border: 1px solid #454545; + border-radius: 32px; + background-color: transparent; + color: #ebebeb; + cursor: pointer; + } + + .main-block__icon { + opacity: 1; + width: 8px; + height: 8px; + margin: 0; + opacity: 0; + } + + .main-block__icon_container { + display: flex; + align-items: center; + justify-content: center; + width: 16px; + height: 16px; + border-radius: 100%; + border: 1px solid #ffffff; + } + + .main-block__button:hover > div > img { + transition: opacity ease-out 0.2s; + opacity: 1; + } + + .main-block__button:hover { + border: 1px solid #ffffff; + transition: border ease-out 0.2s; + } + + .link { + text-decoration: none; + } + + @media screen and (min-width: 1600px) { + .main-block__title { + font-size: 76px; + } + + .main-block__title_gardient { + font-size: 76px; + } + + .main-block__caption_color { + width: 87%; + font-size: 17px; + margin-top: 24px; + } + + .main-block__caption_l { + font-size: 22px; + } + + .main-block__caption { + font-size: 22px; + } + + .main-block__title_small { + font-size: 48px; + } + + .main-block__title_gardient_small { + font-size: 48px; + } + + .main-block_subblock { + width: 576px; + font-size: 22px; + } + + .main-block__button { + width: 196px; + height: 60px; + padding: 14px 18px 12px 24px; + gap: 9.6px; + font-weight: 400; + font-size: 20px; + line-height: 125%; + } + + .main-block__icon_container { + width: 19px; + height: 19px; + } + + .main-block__icon { + width: 9.5; + height: 9.5; + } + } + + .popup__container { + width: 494px; + + background: #262626; + + border-radius: 32px; + padding: 40px 48px 16px; + box-sizing: border-box; + } + + .logo__popup { + height: auto; + width: 100%; + margin-bottom: 48px; + object-fit: cover; + } + + .popup { + font-style: normal; + font-weight: 600; + font-size: 18px; + line-height: 22px; + color: #ffffff; + display: flex; + flex-direction: column; + gap: 24px; + } + + .button__container { + display: flex; + flex-direction: column; + gap: 16px; + } + + .button__title { + margin: 0; + } + + .button { + width: 100%; + display: flex; + padding-top: 20px; + padding-bottom: 20px; + justify-content: center; + background-color: #567ece; + border-radius: 12px; + outline: none; + border: none; + color: #ffffff; + font-style: normal; + font-weight: 600; + font-size: 16px; + line-height: 20px; + cursor: pointer; + box-sizing: border-box; + } + + .button:hover { + background: #6a92e2; + transition: 0.3s ease; + } + + .button:disabled { + background-color: #404040; + transition: 0.3 ease; + } + + .button__disabled:hover { + background: #595959; + transition: 0.3 ease; + + } + + .button__disabled { + background-color: #404040; + transition: 0.3 ease; + } + + .line { + height: 1px; + background-color: #404040; + width: 280px; + margin: 0 auto; + margin-top: 8px; + } + + .popup__caption { + margin: 0 auto; + font-style: normal; + font-weight: 400; + font-size: 18px; + cursor: pointer; + padding: 10px 8px; + border: none; + background-color: transparent; + line-height: 20px; + color: #ffffff; + } + + .popup__caption:hover { + opacity: 0.8; + transition: 0.3s ease; + } + + @media screen and (max-width: 1279px) { + .main-block__container { + gap: 44px; + } + } + + @media screen and (max-width: 1024px) { + .main-block__container { + margin: 30px 12px 60px; + gap: 40px; + } + + .main-block__caption { + font-size: 2.8vw; + font-style: normal; + font-weight: 400; + line-height: 140%; + } + + .main-block__caption_color { + font-size: 2.1vw; + width: fit-content; + } + + .main-block__caption_l { + font-size: 2.5vw; + font-style: normal; + font-weight: 400; + line-height: 140%; + } + + .main-block__title { + font-size: 10.6vw; + font-style: normal; + font-weight: 400; + line-height: 100%; + } + + .main-block__title_gardient { + font-size: 10.6vw; + font-style: normal; + font-weight: 400; + line-height: 100%; + } + + .main-block_subblock { + font-weight: 400; + line-height: 140%; + font-size: 2.8vw; + } + + .main-block__title_small { + font-style: normal; + font-weight: 400; + line-height: 100%; + font-size: 6.25vw; + } + + .main-block__title_gardient_small { + font-size: 6.25vw; + } + + .main-block__subblock-container { + display: block; + margin: 0 0; + } + + .main-block_subblock { + width: 80%; + margin: 0; + font-size: 3vw; + } + } + + @media screen and (max-width: 639px) { + .popup__container { + width: 100%; + border-radius: 0px; + height: 100%; + padding: 32px 10px 67px; + height: 100vh; + } + + .logo__popup { + margin-bottom: 40px; + } + + .line { + width: 80%; + } + + .popup { + font-size: 16px; + } + + .popup__caption { + font-size: 16px; + } + + .main-block__container { + margin: 42px 0px 40px; + gap: 30px; + width: 100%; + } + + .button { + font-size: 14px; + padding-top: 14px; + padding-bottom: 14px; + } + + .main-block_subblock { + gap: 30px; + width: 100%; + } + + .main-block__caption_color { + width: 100%; + margin-top: 10px; + font-size: 3.6vw; + } + + .main-block__caption { + margin: 10px 0 0 0; + } + + .main-block__caption_l { + font-size: 4.5vw; + font-style: normal; + font-weight: 400; + line-height: 140%; + } + + .main-block__button { + font-style: normal; + font-weight: 400; + font-size: 16px; + line-height: 125%; + } + + .main-block__caption { + font-size: 4.5vw; + font-style: normal; + font-weight: 400; + line-height: 140%; + } + + .main-block__title_gardient { + font-size: 13.3vw; + font-style: normal; + font-weight: 400; + line-height: 100%; + } + + .main-block__title_gardient_small { + font-size: 9.25vw; + } + + .main-block__title { + font-size: 13.3vw; + font-style: normal; + font-weight: 400; + line-height: 100%; + } + + .main-block__title_small { + font-style: normal; + font-weight: 400; + line-height: 100%; + font-size: 9.25vw; + } + + .main-block_subblock { + font-weight: 400; + line-height: 140%; + font-size: 4.5vw; + } + } + \ No newline at end of file diff --git a/src/components/Immersion/Immersion.css b/src/components/Immersion/Immersion.css new file mode 100644 index 0000000..a25f784 --- /dev/null +++ b/src/components/Immersion/Immersion.css @@ -0,0 +1,58 @@ +.text-col { + display: flex; + flex-direction: column; + gap: 32px; +} + +.video-wrapper { + position: relative; +} + +.play-caption { + font-style: normal; + font-weight: 400; + font-size: 48px; + line-height: 110%; + /* identical to box height, or 53px */ + + + /* White */ + + color: #EBEBEB; +} + +.play-block { + -webkit-user-select: none; + /* Safari */ + -ms-user-select: none; + /* IE 10 and IE 11 */ + user-select: none; + /* Standard syntax */ + + position: absolute; + top: 50%; + left: 43%; + transform: translate(-50%, -50%); + z-index: 1; + gap: 30px; + display: flex; + align-items: center; +} + +.button-icon-immersion { + position: absolute; + height: 52px; + width: 52px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + +} + +.play-button-immersion { + width: 104px; + height: 104px; + padding: 0; + margin: 0; + border-radius: 500px; +} \ No newline at end of file diff --git a/src/components/Immersion/Immersion.js b/src/components/Immersion/Immersion.js new file mode 100644 index 0000000..cb513ad --- /dev/null +++ b/src/components/Immersion/Immersion.js @@ -0,0 +1,43 @@ +import React from 'react'; +import './Immersion.css'; +import video from '../../components/Welcome/video.mp4' +import '../../styles/styles.css' +import playIcon from '../../icons/iconPlay.svg' +import { AnimatePresence, motion } from 'framer-motion'; +import { useState } from 'react'; + +export const Immersion = () => { + const [isVisible, setVisible] = useState(true) + return ( +
+
+
+

Полное погружение.

+
+

Клиент может свободно перемещаться по жилому комплексу, изучая холлы, архитектуру двора, планировки квартир.

+

Приложение позволяет рассмотреть вид из окна квартиры, угол инсоляции, ландшафт, малые архитектурные формы и другие важные характеристики жилого комплекса.

+
+
+
+
+ + {isVisible && ( + Попробуйте + + + )} + + +
+
+ + + ) +} + diff --git a/src/components/Infrastracture/Infrastracture.css b/src/components/Infrastracture/Infrastracture.css new file mode 100644 index 0000000..81692be --- /dev/null +++ b/src/components/Infrastracture/Infrastracture.css @@ -0,0 +1 @@ +.Infrastracture {} \ No newline at end of file diff --git a/src/components/Infrastracture/Infrastracture.js b/src/components/Infrastracture/Infrastracture.js new file mode 100644 index 0000000..81a45b0 --- /dev/null +++ b/src/components/Infrastracture/Infrastracture.js @@ -0,0 +1,21 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import './Infrastracture.css'; +import infrastracturePic from './infrastracturePic.svg' +import '../../styles/styles.css' + +export const Infrastracture = () => { + return ( +
+
+
+

Вся инфрастуктура на одном экране.

+ +

Мы можем показать состав жилого комплекса и окружающую инфрастуктуру на одном экране. Детские сады, школы, магазины и остановки общественного транспорта - указывайте радиус пешей доступности, система подскажет за сколько минут человек сможет дойти до указанного места.

+
+
+ +
+ ) +} + diff --git a/src/components/Infrastracture/infrastracturePic.svg b/src/components/Infrastracture/infrastracturePic.svg new file mode 100644 index 0000000..a5279ba --- /dev/null +++ b/src/components/Infrastracture/infrastracturePic.svg @@ -0,0 +1,1337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Integration/CRM.svg b/src/components/Integration/CRM.svg new file mode 100644 index 0000000..2a7ec2b --- /dev/null +++ b/src/components/Integration/CRM.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Integration/Chevron_Down.svg b/src/components/Integration/Chevron_Down.svg new file mode 100644 index 0000000..f4ef9e0 --- /dev/null +++ b/src/components/Integration/Chevron_Down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Integration/Integration.css b/src/components/Integration/Integration.css new file mode 100644 index 0000000..360d602 --- /dev/null +++ b/src/components/Integration/Integration.css @@ -0,0 +1,191 @@ + + +.form { + font-style: normal; + + color: #F7F7F7; + background: #17191D; + border-radius: 2px; + padding: 40px; + box-sizing: border-box; + width: 608px; + display: flex; + flex-direction: column; + gap: 24px; + +} + +.form-title { + font-weight: 400; + font-size: 24px; + line-height: 110%; + /* or 26px */ + + margin: 0; + + /* White */ + text-align: left; +} + + +.form-caption { + text-align: left; + margin: 0; + font-weight: 400; + font-size: 12px; + line-height: 130%; +} + +.input-container { + display: flex; + gap: 24px; +} + +.input-col { + display: flex; + flex-direction: column; + gap: 16px; + width: 50%; + justify-content: space-between; + outline: none; + border: none; +} + +.field { + position: relative; + display: flex; + flex-direction: column; +} + +.input-form { + background: #393C46; + border: 1px solid #393C46; + border-radius: 2px; + padding: 8px 10px; + outline: none; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + + + /* White */ + + color: #F7F7F7; +} + +.input-form::placeholder { + opacity: 0.5; +} + +.input-form:focus { + border: 1px solid #4B79D8; + +} + +.input-caption { + + font-weight: 400; + font-size: 10px; + line-height: 140%; + /* identical to box height, or 14px */ + + + /* White */ + margin-bottom: 4px; + + color: #F7F7F7; + text-align: left; +} + +.input-select { + background: #2E3138; + border-radius: 2px; + padding: 8px 10px; + border: none; + outline: none; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + /* White */ + color: #F7F7F7; + display: flex; + justify-content: space-between; + cursor: pointer; + position: relative; +} + +.option-container { + flex-direction: column; + top: 54px; + position: absolute; + +} + +.option { + height: 34px; + background: #2E3138; + border: none; + outline: none; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + /* White */ + color: #F7F7F7; + display: flex; + justify-content: space-between; + cursor: pointer; + box-sizing: border-box; + width: 252px; +} + +.option-name { + text-align: left; + width: 100%; + display: flex; + justify-content: space-between; +} + +.img-ok { + margin-right: 10px; +} + + +.option-container-opened { + display: block; +} +.name { + margin: 8px 10px; +} + +.option :hover { + background: #4E515F; +} + +.name-selected { + opacity: 1; +} + +.button-form { + width: 172px; + + /* Button/Blue/Default */ + outline: none; + border: none; + background: #2B5EC6; + border-radius: 2px; + font-weight: 400; + font-size: 16px; + line-height: 125%; + /* identical to box height, or 20px */ + + letter-spacing: 0.01em; + font-feature-settings: 'tnum' on, 'lnum' on; + padding: 12px 32px; + /* Landing/White */ + cursor: pointer; + color: #EBEBEB; + +} \ No newline at end of file diff --git a/src/components/Integration/Integration.js b/src/components/Integration/Integration.js new file mode 100644 index 0000000..3e03eb2 --- /dev/null +++ b/src/components/Integration/Integration.js @@ -0,0 +1,96 @@ +import React, { useState } from 'react'; +import PropTypes from 'prop-types'; +import './Integration.css'; +import '../../styles/styles.css' +import CRM from './CRM.svg' +import arrow from './Chevron_Down.svg' +import ok from './OK.svg' + +const managerArray = [{ name: 'Елизавета', id: 0 }, { name: 'Александра', id: 1 }, { name: 'Марина', id: 2 }] + +const Integration = () => { + const [open, isOpen] = useState(false) + const [select, isSelect] = useState({ name: 'Eлизавета', id: 0 }) + + + const handleSelect = (i) => { + isSelect(i) + isOpen(false) + } + + const handleSubmit = (e) => { + e.preventDefault() + return + } + + console.log(select) + return ( +
+
+
+

Интеграция +

с CRM - системой.

+ +

Виртуальная экскурсия начинается с регистрации нового сеанса. Мы получаем необходимую информацию о нашем клиенте и передаем их в CRM-систему застройщика.

+ +
+
+
+
+

Поделитесь

информацией о себе

+

Это нужно, чтобы сохранять квартиры в избранное.

+ При повторном входе информация восстановится.

+
+
+
+ Номер телефона + +
+
+ Имя + +
+
+
+
+ E-mail + +
+
+ Менеджер +
isOpen(prev => !prev)} className='input-select'> + {select.name} + иконка +
+
+ {managerArray.map((i) => ( +
handleSelect(i)} key={i.id} className='option'> + +

{i.name}

+ выбранный + +
+
+ ))} + +
+
+
+
+ +
+
+
+

В свою очередь, CRM система передает нашей презентации актуальную информацию по ценам и статусам квартир.

+
+
+ ) +}; + +Integration.propTypes = {}; + +Integration.defaultProps = {}; + +export default Integration; diff --git a/src/components/Integration/IntegrationForm/IntegrationForm.css b/src/components/Integration/IntegrationForm/IntegrationForm.css new file mode 100644 index 0000000..0039d28 --- /dev/null +++ b/src/components/Integration/IntegrationForm/IntegrationForm.css @@ -0,0 +1,44 @@ +.container-form { + border-radius: 8.10777px; + transform: matrix(0.81, -0.22, 0.94, 0.94, 0, 0); + border-bottom: 2px solid #2B5EC6; + border-left: 2px solid #2B5EC6; + background-color: #2B5EC6; + width: 1041px; + height: 440px; + position: relative; + box-sizing: border-box; + margin-top: 100px; + margin-bottom: 113px; + +} + + + +.form { + border-radius: 9px; + position: absolute; + background: #1E1E1E; + width: 101%; + height: 101%; + left: 7px; + top: -7px; + padding-top: 72px; + padding-left: 72px; + box-sizing: border-box; + font-style: normal; + font-weight: 400; + /* or 44px */ + font-family: "GilroyWebRegular"; + + /* Landing/White */ + + color: #EBEBEB; +} + +.form-title { + font-size: 40px; + line-height: 110%; + text-align: left; + margin: 0; +} \ No newline at end of file diff --git a/src/components/Integration/IntegrationForm/IntegrationForm.js b/src/components/Integration/IntegrationForm/IntegrationForm.js new file mode 100644 index 0000000..c587889 --- /dev/null +++ b/src/components/Integration/IntegrationForm/IntegrationForm.js @@ -0,0 +1,10 @@ +import './IntegrationForm.css' +export const IntegrationForm = () => { + return ( +
+
+

Поделитесь

информацией о себе

+
+ +
) +} \ No newline at end of file diff --git a/src/components/Integration/OK.svg b/src/components/Integration/OK.svg new file mode 100644 index 0000000..461d15c --- /dev/null +++ b/src/components/Integration/OK.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/InteractiveTech/InteractiveTech.css b/src/components/InteractiveTech/InteractiveTech.css new file mode 100644 index 0000000..0bf3d8f --- /dev/null +++ b/src/components/InteractiveTech/InteractiveTech.css @@ -0,0 +1,45 @@ +.InteractiveTech { + width: 100%; + box-sizing: border-box; + padding: 144px 96px 96px 96px; + background: #1E1E1E; + border-radius: 8px; + +} + + +.title-big { + margin-bottom: 64px; +} + +.text-row { + display: flex; + gap: 40px; + margin-left: 320px; + font-style: normal; + font-weight: 400; + color: #EBEBEB; + margin-bottom: 32px; +} + + + +.text-caption { + margin: 0 0 32px; + font-family: 'GilroyWebRegular'; + font-weight: 400; + font-size: 28px; + line-height: 130%; +} + +.text { + text-align: left; +} + +.text-paragraph { + height: 156px; + margin: 0; + font-weight: 400; + font-size: 18px; + line-height: 145%; +} \ No newline at end of file diff --git a/src/components/InteractiveTech/InteractiveTech.js b/src/components/InteractiveTech/InteractiveTech.js new file mode 100644 index 0000000..838d081 --- /dev/null +++ b/src/components/InteractiveTech/InteractiveTech.js @@ -0,0 +1,36 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import './InteractiveTech.css'; +import '../../styles/styles.css' +import photo from './Photo.svg' + +const InteractiveTech = () => { + + return ( +
+
+
+

Интерактивные технологии помогают продавать.

+
+
+
+
+

Задача.

+

Перенести покупателя в будущее. В деталях показать, какими будут его дом и квартира, удивить, поразить, вовлечь в интересную игру и помочь сделать единственно правильный выбор. Дать застройщику еще один канал продаж. Современный, мощный и эффективный.

+
+
+

Решение.

+

Виртуальная реальность на трех площадках – шоу-рум в офисе продаж, мобильная платформа и сайт проекта. Каждая из них выполняет свои конкретные задачи, у каждой есть свои уникальные преимущества, все они повышают эффективность продаж.

+
+ +
+ interactive tech +
+ ) +}; + +InteractiveTech.propTypes = {}; + +InteractiveTech.defaultProps = {}; + +export default InteractiveTech; diff --git a/src/components/InteractiveTech/Photo.svg b/src/components/InteractiveTech/Photo.svg new file mode 100644 index 0000000..5667b23 --- /dev/null +++ b/src/components/InteractiveTech/Photo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/components/Planing/Planing.css b/src/components/Planing/Planing.css new file mode 100644 index 0000000..a2a5724 --- /dev/null +++ b/src/components/Planing/Planing.css @@ -0,0 +1,8 @@ +.Planing {} + + +.img-plan { + border: 1.2px solid #EBEBEB; + border-radius: 2px; + +} \ No newline at end of file diff --git a/src/components/Planing/Planing.js b/src/components/Planing/Planing.js new file mode 100644 index 0000000..5d32d09 --- /dev/null +++ b/src/components/Planing/Planing.js @@ -0,0 +1,27 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import './Planing.css'; +import '../../styles/styles.css' +import img from './Sample.svg' + +export const Planing = () => { + return ( +
+
+
+

Дадим возможность покупателю выбрать цвет стен и мебели.

+

Сейчас покупатель находится прямо в квартире, взаимодействует с предметами, смотрит телевизор с презентацией жилого комплекса, выбирает цвет кухонного гарнитура из конфигуратора и думает, куда поставить рабочий стол.

+
+
+ +
+
+

Покупатель полностью вовлекается в процесс + и уверен, что управляет им.

+

Эффект новизны и присутствия включает в человеке открытость и любопытство.

+ +
+
+
+ ) +} diff --git a/src/components/Planing/Sample.svg b/src/components/Planing/Sample.svg new file mode 100644 index 0000000..a81c38f --- /dev/null +++ b/src/components/Planing/Sample.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Planing/virtual.svg b/src/components/Planing/virtual.svg new file mode 100644 index 0000000..e5b5b5f --- /dev/null +++ b/src/components/Planing/virtual.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/RemoteSelling/ChevronRight.svg b/src/components/RemoteSelling/ChevronRight.svg new file mode 100644 index 0000000..19735e8 --- /dev/null +++ b/src/components/RemoteSelling/ChevronRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/RemoteSelling/Picture.png b/src/components/RemoteSelling/Picture.png new file mode 100644 index 0000000..0b7d5ce Binary files /dev/null and b/src/components/RemoteSelling/Picture.png differ diff --git a/src/components/RemoteSelling/RemoteSelling.css b/src/components/RemoteSelling/RemoteSelling.css new file mode 100644 index 0000000..87a5a1f --- /dev/null +++ b/src/components/RemoteSelling/RemoteSelling.css @@ -0,0 +1,3 @@ +.block-gap { + gap: 80px; +} \ No newline at end of file diff --git a/src/components/RemoteSelling/RemoteSelling.js b/src/components/RemoteSelling/RemoteSelling.js new file mode 100644 index 0000000..d5c2bd6 --- /dev/null +++ b/src/components/RemoteSelling/RemoteSelling.js @@ -0,0 +1,26 @@ +import "../../styles/styles.css" +import icon from './ChevronRight.svg' +import picture from './Picture.png' + +export const RemoteSelling = () => { + return (
+
+
+

Ваш инструмент продаж поможет вам продавать удаленно.

+

Бескомпромиссный уровень графики и полное погружение покупателя в процесс выбора квартиры.

+
+ +
+ +
+
+

Покажите все преимущества вашего жилого комплекса клиенту из любого конца мира. Местоположение и устройство значения не имеют. Нужен только интернет.

+ +
+
+ +
) +} \ No newline at end of file diff --git a/src/components/SalesInstrument/SalesInstrument.js b/src/components/SalesInstrument/SalesInstrument.js new file mode 100644 index 0000000..8127fab --- /dev/null +++ b/src/components/SalesInstrument/SalesInstrument.js @@ -0,0 +1,44 @@ +import React, { useEffect, useState } from 'react'; +import './salesinstrument.css'; +import '../../styles/styles.css' +import iconPlay from '../../icons/iconPlay.svg' +import video from '../Welcome/video.mp4' +import { motion } from 'framer-motion' +import ReactPlayer from 'react-player' +import { useRef } from 'react'; + + +const textAnimation = { + open: { opacity: 1 }, + closed: { opacity: 0 } +} + + +export const SalesInstrument = ({ open, isAnimation }) => { + const [play, setPlay] = useState(false) + const [startVideo, setStartVideo] = useState('open') + const videoRef = useRef() + + + useEffect(() => { + if (startVideo === 'closed') { + videoRef.current.play() + } + }, [startVideo]) + + return ( +
+ {startVideo === 'open' ? setStartVideo(def)}> +

Инструмент

Продаж

+

Сегодня покупатель недвижимости платит не просто за квадратные метры – он платит за уникальные характеристики дома – инфраструктуру, удобный и комфортный двор, дизайн подъездов и холлов, вид из окон. Нужно показать ему все преимущества жилого комплекса на любой стадии строительства еще в офисе продаж.

+ +
: <>} + +
+ ) +}; + diff --git a/src/components/SalesInstrument/salesinstrument.css b/src/components/SalesInstrument/salesinstrument.css new file mode 100644 index 0000000..5b2464a --- /dev/null +++ b/src/components/SalesInstrument/salesinstrument.css @@ -0,0 +1,49 @@ +.salesinstrument { + position: relative; +} + +.videoShow { + width: 100%; + height: 778px; +} + +.sales-container { + -webkit-user-select: none; + /* Safari */ + -ms-user-select: none; + /* IE 10 and IE 11 */ + user-select: none; + /* Standard syntax */ + position: absolute; + top: 50%; + left: 45%; + transform: translate(-50%, -50%); + text-align: left; + display: flex; + flex-direction: column; + color: #EBEBEB; + gap: 48px; +} + + + +.sales-title { + font-family: 'GilroyWebRegular'; + margin: 0; + font-weight: 400; + font-size: 76px; + line-height: 100%; +} + +.sales-paragraph { + width: 494px; + margin: 0; + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 145%; +} + +.button-play { + margin-top: 48px; +} \ No newline at end of file diff --git a/src/components/SalesInstrument/video.mp4 b/src/components/SalesInstrument/video.mp4 new file mode 100644 index 0000000..562c244 Binary files /dev/null and b/src/components/SalesInstrument/video.mp4 differ diff --git a/src/components/SalesPromotion/Sales.png b/src/components/SalesPromotion/Sales.png new file mode 100644 index 0000000..e22f4b5 Binary files /dev/null and b/src/components/SalesPromotion/Sales.png differ diff --git a/src/components/SalesPromotion/SalesPromotion.css b/src/components/SalesPromotion/SalesPromotion.css new file mode 100644 index 0000000..6b49c78 --- /dev/null +++ b/src/components/SalesPromotion/SalesPromotion.css @@ -0,0 +1 @@ +.SalesPromotion {} \ No newline at end of file diff --git a/src/components/SalesPromotion/SalesPromotion.js b/src/components/SalesPromotion/SalesPromotion.js new file mode 100644 index 0000000..673e901 --- /dev/null +++ b/src/components/SalesPromotion/SalesPromotion.js @@ -0,0 +1,17 @@ +import React from 'react'; +import './SalesPromotion.css'; +import "../../styles/styles.css" +import img from './Sales.png' + +export const SalesPromotion = () => { + return (
+
+
+

Отправляем коммерческое предложение клиенту на почту.

+

Презентация объекта та подошла к концу и клиент вместе с менеджером добавили понравившееся квартиры в избранное. Теперь мы можем отправить коммерческое предложение на почту клиенту или распечатать на принтере и отдать клиенту в руки.

+
+
+ +
) +} + diff --git a/src/components/SimpleSearch/Card/Card.js b/src/components/SimpleSearch/Card/Card.js new file mode 100644 index 0000000..d769295 --- /dev/null +++ b/src/components/SimpleSearch/Card/Card.js @@ -0,0 +1,23 @@ +export const Card = () => { + return (
+ +
+
+ Тип + +
+
+ Этаж + 5 из 9 +
+
+ Площадь + 131,1 м2 +
+ +
+ + + +
) +} \ No newline at end of file diff --git a/src/components/SimpleSearch/FilterSearch/FilterSearch.css b/src/components/SimpleSearch/FilterSearch/FilterSearch.css new file mode 100644 index 0000000..e14ea31 --- /dev/null +++ b/src/components/SimpleSearch/FilterSearch/FilterSearch.css @@ -0,0 +1,134 @@ +.filter-container { + width: 100%; + background: #17191D; + border-radius: 4px; + display: flex; + flex-direction: row; + gap: 16px; + height: 122px; + align-items: center; + padding: 24px; + box-sizing: border-box; +} + + +.range-container { + height: 62px; + display: flex; + flex-direction: column; + gap: 12px; + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + + display: flex; + align-items: flex-start; + + /* White */ + + color: #F7F7F7; + + +} + +.filter-caption { + margin-bottom: 16px; + opacity: 0.7; + +} + +.buttons-container { + display: flex; + gap: 6px; + flex-direction: column; + align-items: flex-start; + + + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + + /* White */ + + color: #F7F7F7; + + +} + + + +.btn-room { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 9px 12px; + width: 32px; + height: 32px; + /* Button/Gray/Default */ + background: #373943; + border-radius: 80px; + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + cursor: pointer; + border: none; + /* White */ + + color: #F7F7F7; +} + +.btn-room:hover { + background: #2B5EC6; + +} + +.btn-container { + display: flex; + flex-direction: row; + gap: 8px; + margin-top: 3px; +} + +.btn-type { + font-style: normal; + font-weight: 400; + font-size: 10px; + line-height: 140%; + /* identical to box height, or 14px */ + background: #373943; + display: flex; + align-items: center; + text-align: center; + width: fit-content; + border: none; + border-radius: 100px; + cursor: pointer; + color: #F7F7F7; +} + +.btn-type:hover { + background: #2B5EC6; + +} + +.line { + width: 1px; + height: 100%; + background: #393C46; + border-radius: 4px; + opacity: 0.7; + + +} + +.btn-container-features { + flex-wrap: wrap; + width: 159px; +} \ No newline at end of file diff --git a/src/components/SimpleSearch/FilterSearch/FilterSearch.js b/src/components/SimpleSearch/FilterSearch/FilterSearch.js new file mode 100644 index 0000000..72b966e --- /dev/null +++ b/src/components/SimpleSearch/FilterSearch/FilterSearch.js @@ -0,0 +1,91 @@ +import ReactSlider from 'react-slider' +import './FilterSearch.css' + +const square = { + min: 25, max: 100, +} + +const floor = { + min: 1, max: 9 +} + +const price = { + min: 3, max: 15 +} + +const buttonArray = [{ buttonName: '1К' }, { buttonName: '2К' }, { buttonName: '3К' }, { buttonName: '4К' }] + +const buttonArrayType = [{ buttonName: 'Мастер-спальня' }, { buttonName: 'Лоджия' }, { buttonName: 'Вид на парк' }, { buttonName: 'Гардеробная' }] + +export const FilterSearch = () => { + return (
+
+ Тип квартиры +
+ {buttonArray.map((i, index) => ( + + ))} +
+
+
+ +
+ Площадь, м2 + `Thumb value ${state.valueNow}`} + renderThumb={(props, state) =>
{state.valueNow}
} + pearling + max={square.max} + min={square.min} + minDistance={5} + /> +
+
+ Этаж + `Thumb value ${state.valueNow}`} + renderThumb={(props, state) =>
{state.valueNow}
} + pearling + max={floor.max} + min={floor.min} + minDistance={0} + /> + +
+
+ Стоимость, млн. руб. + `Thumb value ${state.valueNow}`} + renderThumb={(props, state) =>
{state.valueNow}
} + pearling + max={price.max} + min={price.min} + minDistance={1} + /> +
+
+
+ Особенности +
+ {buttonArrayType.map((i) => ( + + ))} +
+
+
) +} \ No newline at end of file diff --git a/src/components/SimpleSearch/Search.png b/src/components/SimpleSearch/Search.png new file mode 100644 index 0000000..fadd36c Binary files /dev/null and b/src/components/SimpleSearch/Search.png differ diff --git a/src/components/SimpleSearch/SimpleSearch.css b/src/components/SimpleSearch/SimpleSearch.css new file mode 100644 index 0000000..516ed75 --- /dev/null +++ b/src/components/SimpleSearch/SimpleSearch.css @@ -0,0 +1,47 @@ +.horizontal-slider { + width: 317px; + height: 2px; + background: #2E3138; +} + + +.example-thumb { + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + + width: 32px; + height: 32px; + + /* Button/Gray/Default */ + font-style: normal; + font-weight: 400; + font-size: 12px; + line-height: 150%; + /* identical to box height, or 18px */ + box-sizing: border-box; + /* White */ + top: -15px; + color: #F7F7F7; + background: #373943; + border-radius: 80px; +} + + +.example-thumb:hover { + background: #2B5EC6; + +} + +.example-track { + height: 1px; +} + +.example-track-1 { + background: #2B5EC6; + +} + +.range-container { +} \ No newline at end of file diff --git a/src/components/SimpleSearch/SimpleSearch.js b/src/components/SimpleSearch/SimpleSearch.js new file mode 100644 index 0000000..85b8567 --- /dev/null +++ b/src/components/SimpleSearch/SimpleSearch.js @@ -0,0 +1,26 @@ +import React from 'react'; + +import searchPic from './Search.png' +import './SimpleSearch.css'; +import '../../styles/styles.css' +import { FilterSearch } from './FilterSearch/FilterSearch'; +export const SimpleSearch = () => { + + + return ( +
+
+
+

Простой и информативный поиск идеальной квартиры.

+

Можно воспользоваться классическим фильтром и указать количество комнат, этаж и стоимость квартиры, а можно включить в фильтр конкретные преимущества, например: вид из окна, наличие мастер-спальни или лоджии.

+
+
+
+ + +
+
+ ) +} + + diff --git a/src/components/SimpleSearch/searchPic.svg b/src/components/SimpleSearch/searchPic.svg new file mode 100644 index 0000000..18dbd05 Binary files /dev/null and b/src/components/SimpleSearch/searchPic.svg differ diff --git a/src/components/VirtualTour/Photo.png b/src/components/VirtualTour/Photo.png new file mode 100644 index 0000000..1ff86d9 Binary files /dev/null and b/src/components/VirtualTour/Photo.png differ diff --git a/src/components/VirtualTour/VirtualTour.css b/src/components/VirtualTour/VirtualTour.css new file mode 100644 index 0000000..258d1c3 --- /dev/null +++ b/src/components/VirtualTour/VirtualTour.css @@ -0,0 +1 @@ +.VirtualTour {} \ No newline at end of file diff --git a/src/components/VirtualTour/VirtualTour.js b/src/components/VirtualTour/VirtualTour.js new file mode 100644 index 0000000..2302b0a --- /dev/null +++ b/src/components/VirtualTour/VirtualTour.js @@ -0,0 +1,26 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import './VirtualTour.css'; +import '../../styles/styles.css' +import img from './Photo.png' + + +export const VirtualTour = () => { + return ( +
+
+
+

Виртуальная экскурсия

по выбранной квартире.

+

Клиенту достаточно надеть шлем виртуальной реальности, чтобы прогуляться, оценить и ощутить пространство. Он полностью погружается в воссозданную реальность, чувствует удобство и уровень комфорта.

+
+
+ дополненная реальность +
+ ) +} + +VirtualTour.propTypes = {}; + +VirtualTour.defaultProps = {}; + +export default VirtualTour; diff --git a/src/components/Welcome/Cover.png b/src/components/Welcome/Cover.png new file mode 100644 index 0000000..214f387 Binary files /dev/null and b/src/components/Welcome/Cover.png differ diff --git a/src/components/Welcome/Welcome.css b/src/components/Welcome/Welcome.css new file mode 100644 index 0000000..dd892a4 --- /dev/null +++ b/src/components/Welcome/Welcome.css @@ -0,0 +1,84 @@ +.videoElement { + position: fixed; + right: 0; + bottom: 0; + min-width: 100%; + min-height: 100%; + z-index: 1; + + +} + + +.welcome-background { + font-family: 'GilroyWebRegular'; + + width: 100%; + height: 89%; + position: relative; + +} + +.welcome-header { + width: 100%; + position: fixed; + top: 0; + left: 0; +} + +.welcome-text-block { + z-index: 1; + color: #EBEBEB; + width: fit-content; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.welcome-text-container { + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + + display: flex; + flex-direction: column; + align-items: center; + + padding-left: 46px; + padding-right: 46px; + box-sizing: border-box; + +} + +.welcome-line { + margin-top: 28px; + margin-bottom: 28px; + width: 82%; + height: 1px; + background: linear-gradient(#D375FF, #798FFF); +} + + + + +.welcome-title { + margin: 0; + font-weight: 300; + font-size: 134px; + line-height: 100%; + text-align: center; + +} + + + +.welcome-caption { + margin: 0; + font-weight: 400; + font-size: 28px; + line-height: 130%; + /* or 36px */ + text-align: center; +} \ No newline at end of file diff --git a/src/components/Welcome/Welcome.js b/src/components/Welcome/Welcome.js new file mode 100644 index 0000000..86343c1 --- /dev/null +++ b/src/components/Welcome/Welcome.js @@ -0,0 +1,54 @@ +import React, { useState } from 'react'; +import '../../styles/styles.css' +import './Welcome.css'; +import video from './video.mp4' +import iconWelcome from '../../icons/iconWelcome.svg' +import { motion, AnimatePresence } from 'framer-motion' + +const backgroundAnimation = { + open: { translateY: '0%' }, + + closed: { translateY: '-100%' } +} + +const textAnimation = { + open: { opacity: 1 }, + closed: { opacity: 0 } +} + + + +export const Welcome = ({ isOpen, setIsOpen, setAnimation, isAnimation }) => { + const [block, isBlock] = useState('') + console.log(isAnimation) + return ( + <> + {isAnimation !== 'closed' && (
+ setAnimation(def)} className='videoElement' src={video} autoPlay muted loop id="myVideo" type="video/mp4"> + +
+ isBlock(def)} className='welcome-text-block'> +
+

Graff.estate

+
+

Технологии расширенной реальности

для вашего бизнеса.

+
+
+ setIsOpen(!isOpen)} className='main-button'> + Узнать больше + calltoaction + +
+
+ )} + + ) + +} + + +Welcome.propTypes = {}; + +Welcome.defaultProps = {}; + +export default Welcome; diff --git a/src/components/Welcome/video.mp4 b/src/components/Welcome/video.mp4 new file mode 100644 index 0000000..562c244 Binary files /dev/null and b/src/components/Welcome/video.mp4 differ diff --git a/src/components/Wishlist/Wishlist.css b/src/components/Wishlist/Wishlist.css new file mode 100644 index 0000000..0c04007 --- /dev/null +++ b/src/components/Wishlist/Wishlist.css @@ -0,0 +1 @@ +.Wishlist {} \ No newline at end of file diff --git a/src/components/Wishlist/Wishlist.js b/src/components/Wishlist/Wishlist.js new file mode 100644 index 0000000..2801275 --- /dev/null +++ b/src/components/Wishlist/Wishlist.js @@ -0,0 +1,25 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import './Wishlist.css'; +import '../../styles/styles.css' +import img from './favorite.png' + +export const Wishlist = () => { + return ( +
+
+
+

Формируем вишлист.

+

Покупатель может все. Он поднимается на лифте, перемещается между квартирами, полностью ощущает пространство дома и добавляет понравившиеся варианты в избранное.

+
+
+ избранное +
+ ) +} + +Wishlist.propTypes = {}; + +Wishlist.defaultProps = {}; + +export default Wishlist; diff --git a/src/components/Wishlist/favorite.png b/src/components/Wishlist/favorite.png new file mode 100644 index 0000000..894599f Binary files /dev/null and b/src/components/Wishlist/favorite.png differ diff --git a/src/exampleComponent.js b/src/exampleComponent.js new file mode 100644 index 0000000..8630287 --- /dev/null +++ b/src/exampleComponent.js @@ -0,0 +1,15 @@ +import "../../styles/styles.css" + +export const SalesPromotion = () => { + return (
+
+
+

+

+
+ +
+ + +
) +} \ No newline at end of file diff --git a/src/fonts/Gilroy_Bold.woff b/src/fonts/Gilroy_Bold.woff new file mode 100644 index 0000000..c5bbebb Binary files /dev/null and b/src/fonts/Gilroy_Bold.woff differ diff --git a/src/fonts/Gilroy_Bold.woff2 b/src/fonts/Gilroy_Bold.woff2 new file mode 100644 index 0000000..bb8d73a Binary files /dev/null and b/src/fonts/Gilroy_Bold.woff2 differ diff --git a/src/fonts/Gilroy_Light.woff b/src/fonts/Gilroy_Light.woff new file mode 100644 index 0000000..3c8aca8 Binary files /dev/null and b/src/fonts/Gilroy_Light.woff differ diff --git a/src/fonts/Gilroy_Light.woff2 b/src/fonts/Gilroy_Light.woff2 new file mode 100644 index 0000000..bac74f7 Binary files /dev/null and b/src/fonts/Gilroy_Light.woff2 differ diff --git a/src/fonts/Gilroy_Medium.woff b/src/fonts/Gilroy_Medium.woff new file mode 100644 index 0000000..af869f6 Binary files /dev/null and b/src/fonts/Gilroy_Medium.woff differ diff --git a/src/fonts/Gilroy_Medium.woff2 b/src/fonts/Gilroy_Medium.woff2 new file mode 100644 index 0000000..dfaa5b6 Binary files /dev/null and b/src/fonts/Gilroy_Medium.woff2 differ diff --git a/src/fonts/Gilroy_Regular.woff b/src/fonts/Gilroy_Regular.woff new file mode 100644 index 0000000..d7ddc7e Binary files /dev/null and b/src/fonts/Gilroy_Regular.woff differ diff --git a/src/fonts/Gilroy_Regular.woff2 b/src/fonts/Gilroy_Regular.woff2 new file mode 100644 index 0000000..57b277d Binary files /dev/null and b/src/fonts/Gilroy_Regular.woff2 differ diff --git a/src/fonts/Gilroy_SemiBold.woff b/src/fonts/Gilroy_SemiBold.woff new file mode 100644 index 0000000..acdf98e Binary files /dev/null and b/src/fonts/Gilroy_SemiBold.woff differ diff --git a/src/fonts/Gilroy_SemiBold.woff2 b/src/fonts/Gilroy_SemiBold.woff2 new file mode 100644 index 0000000..9a1b0dc Binary files /dev/null and b/src/fonts/Gilroy_SemiBold.woff2 differ diff --git a/src/fonts/fonts.css b/src/fonts/fonts.css new file mode 100644 index 0000000..ad0a09e --- /dev/null +++ b/src/fonts/fonts.css @@ -0,0 +1,28 @@ + +@font-face { + font-family: 'GilroyWebRegular'; + src: + url('Gilroy_Regular.woff2') format('woff2'), + url('Gilroy_Regular.woff') format('woff'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'GilroyWebMedium'; + src: + url('Gilroy_Medium.woff2') format('woff2'), + url('Gilroy_Medium.woff') format('woff'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'GilroyWebSemiBold'; + src: + url('Gilroy_SemiBold.woff2') format('woff2'), + url('Gilroy_SemiBold.woff') format('woff'); + font-weight: normal; + font-style: normal; +} + diff --git a/src/icons/iconPlay.svg b/src/icons/iconPlay.svg new file mode 100644 index 0000000..9a19492 --- /dev/null +++ b/src/icons/iconPlay.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/iconWelcome.svg b/src/icons/iconWelcome.svg new file mode 100644 index 0000000..a81f147 --- /dev/null +++ b/src/icons/iconWelcome.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/index.css b/src/index.css index ec2585e..938a58e 100644 --- a/src/index.css +++ b/src/index.css @@ -1,8 +1,10 @@ +@import url(./fonts/fonts.css); body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + margin: 0 auto; + font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -10,4 +12,4 @@ body { code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; -} +} \ No newline at end of file diff --git a/src/styles/background.png b/src/styles/background.png new file mode 100644 index 0000000..bcdefc3 Binary files /dev/null and b/src/styles/background.png differ diff --git a/src/styles/styles.css b/src/styles/styles.css new file mode 100644 index 0000000..cda33a7 --- /dev/null +++ b/src/styles/styles.css @@ -0,0 +1,221 @@ +.main-button { + z-index: 99; + border: 1px solid #D375FF; + border-radius: 38.4px; + + cursor: pointer; + display: flex; + gap: 6px; + align-items: center; + background: rgba(29, 29, 29, 0.6); + backdrop-filter: blur(12px); + padding: 16px 22px; + box-sizing: border-box; + width: fit-content; + height: 60px; + position: fixed; + bottom: 5%; + left: 50%; + transform: translate(-50%, -50%); +} + +.main-button::before { + content: ""; + border-radius: 38.4px; + position: absolute; + top: -2px; + bottom: -2px; + left: -2px; + right: -2px; + border-image: linear-gradient(#D375FF, #798FFF); + z-index: -1; +} + + +.button-caption { + font-weight: 400; + font-size: 20px; + line-height: 125%; + /* identical to box height, or 25px */ + + letter-spacing: 0.01em; + /* White */ + color: #EBEBEB; +} + +.button-icon { + width: 28px; + height: 28px; + +} + +.block-type-grey { + width: 100%; + display: flex; + flex-direction: column; + gap: 96px; + + box-sizing: border-box; + padding: 144px 96px 96px 96px; + background: #1E1E1E; + border-radius: 8px; +} + +.block-type-grey-row { + gap: 64px; +} + +.block-type-trnsprnt { + width: 100%; + align-items: center; + display: flex; + flex-direction: column; + gap: 96px; + box-sizing: border-box; + padding: 144px 96px 96px 96px; + background: transparent; + border-radius: 8px; +} + +.block-type-trnsprnt-padding { + padding: 0 96px; +} + +.block-type-trnsprnt-padding-off { + padding: 0; +} + +.block-type-trnsprnt-padding-top-button { + padding: 144px 0 96px; + +} + +.block-type-trnsprnt-picture { + padding-bottom: 96px; +} + +.container { + margin: 0 auto; +} + + +.text-container { + color: #EBEBEB; + display: flex; + flex-direction: column; + gap: 48px; + text-align: left; + margin-right: 114px; +} + +.subtext-container { + margin: 0 auto; + font-style: normal; + font-weight: 400; + font-size: 18px; + line-height: 145%; + /* or 26px */ + + + /* White */ + + color: #EBEBEB; +} + +.subtext { + width: 494px; + text-align: left; + margin-right: 120px; + margin-top: 0; + margin-bottom: 0; +} + +.subtext-col { + display: flex; + flex-direction: column; + gap: 32px; +} + + +.title { + font-family: 'GilroyWebRegular'; + + width: 494px; + font-weight: 400; + font-size: 48px; + line-height: 110%; + /* or 53px */ + text-align: left; + margin: 0; + + background: linear-gradient(56.75deg, #D375FF 34.13%, #798FFF 73.56%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.title-small { + width: 351px; +} + + +.text-container-small { + margin-right: 161px; + gap: 40px; +} + +.text-main { + width: 494px; + font-style: normal; + font-weight: 400; + font-size: 19px; + line-height: 145%; + /* or 26px */ + + + text-align: left; + margin: 0; + color: #EBEBEB; +} + +.play-button { + margin-top: 48px; + border: 1px solid #D375FF; + border-radius: 38.4px; + position: relative; + cursor: pointer; + display: flex; + gap: 6px; + align-items: center; + background: rgba(29, 29, 29, 0.6); + backdrop-filter: blur(12px); + padding: 16px 22px; + box-sizing: border-box; + width: fit-content; + height: 60px; +} + +.play-button::before { + content: ""; + border-radius: 38.4px; + position: absolute; + top: -2px; + bottom: -2px; + left: -2px; + right: -2px; + border-image: linear-gradient(#D375FF 30%, #798FFF 70%); + z-index: -1; +} + + +.img-container { + background-image: url(./background.png); + width: 100%; + height: 526px; + display: flex; + align-items: center; + justify-content: center; + background-repeat: no-repeat; + background-size: cover; + +} \ No newline at end of file