From c09f7e6245cbbb39e273d99814d1cf23ec83794b Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:30:52 +0200 Subject: [PATCH 001/185] create project --- package-lock.json | 1054 ++++++++++++++++- package.json | 15 +- public/vite.svg | 1 - src/App.css | 42 - src/App.jsx | 59 +- src/assets/react.svg | 1 - src/components/AddWaterBtn/.gitkeep | 0 src/components/AddWaterBtn/AddWaterBtn.jsx | 5 + .../AddWaterBtn/AddWaterBtn.module.css | 1 + src/components/AdvantagesSection/.gitkeep | 0 .../AdvantagesSection/AdvantagesSection.jsx | 5 + .../AdvantagesSection.module.css | 1 + src/components/Calendar/.gitkeep | 0 src/components/Calendar/Calendar.jsx | 5 + src/components/Calendar/Calendar.module.css | 1 + src/components/CalendarItem/.gitkeep | 0 src/components/CalendarItem/CalendarItem.jsx | 5 + .../CalendarItem/CalendarItem.module.css | 1 + src/components/CalendarPagination/.gitkeep | 0 .../CalendarPagination/CalendarPagination.jsx | 5 + .../CalendarPagination.module.css | 1 + src/components/ChooseDate/.gitkeep | 0 src/components/ChooseDate/ChooseDate.jsx | 5 + .../ChooseDate/ChooseDate.module.css | 1 + src/components/DailyInfo/.gitkeep | 0 src/components/DailyInfo/DailyInfo.jsx | 5 + src/components/DailyInfo/DailyInfo.module.css | 1 + src/components/Loader/Loader.jsx | 5 + src/components/Logo/.gitkeep | 0 src/components/Logo/Logo.jsx | 5 + src/components/Logo/Logo.module.css | 1 + src/components/MonthInfo/.gitkeep | 0 src/components/MonthInfo/MonthInfo.jsx | 5 + src/components/MonthInfo/MonthInfo.module.css | 1 + src/components/PrivateRoute/PrivateRoute.jsx | 5 + .../RestrictedRoute/RestrictedRoute.jsx | 5 + src/components/SignInForm/.gitkeep | 0 src/components/SignInForm/SignInForm.jsx | 5 + .../SignInForm/SignInForm.module.css | 1 + src/components/SignUpForm/.gitkeep | 0 src/components/SignUpForm/SignUpForm.jsx | 5 + .../SignUpForm/SignUpForm.module.css | 1 + src/components/UserBar/.gitkeep | 0 src/components/UserBar/UserBar.jsx | 5 + src/components/UserBar/UserBar.module.css | 1 + src/components/UserBarPopover/.gitkeep | 0 .../UserBarPopover/UserBarPopover.jsx | 5 + .../UserBarPopover/UserBarPopover.module.css | 1 + src/components/UserPanel/.gitkeep | 0 src/components/UserPanel/UserPanel.jsx | 5 + src/components/UserPanel/UserPanel.module.css | 1 + .../UsersSettingsForm/UsersSettingsForm.jsx | 5 + .../UsersSettingsForm.module.css | 1 + src/components/WaterDailyNorma/.gitkeep | 0 .../WaterDailyNorma/WaterDailyNorma.jsx | 5 + .../WaterDailyNorma.module.css | 1 + src/components/WaterDetailedInfo/.gitkeep | 0 .../WaterDetailedInfo/WaterDetailedInfo.jsx | 5 + .../WaterDetailedInfo.module.css | 1 + src/components/WaterForm/WaterForm.jsx | 5 + src/components/WaterForm/WaterForm.module.css | 1 + src/components/WaterItem/.gitkeep | 0 src/components/WaterItem/WaterItem.jsx | 5 + src/components/WaterItem/WaterItem.module.css | 1 + src/components/WaterList/.gitkeep | 0 src/components/WaterList/WaterList.jsx | 5 + src/components/WaterList/WaterList.module.css | 1 + src/components/WaterMainInfo/.gitkeep | 0 .../WaterMainInfo/WaterMainInfo.jsx | 5 + .../WaterMainInfo/WaterMainInfo.module.css | 1 + src/components/WaterProgressBar/.gitkeep | 0 .../WaterProgressBar/WaterProgressBar.jsx | 5 + .../WaterProgressBar.module.css | 1 + src/components/WelcomeSection/.gitkeep | 0 .../WelcomeSection/WelcomeSection.jsx | 5 + .../WelcomeSection/WelcomeSection.module.css | 1 + src/index.css | 63 - src/main.jsx | 26 +- src/modals/DeleteWaterModal/.gitkeep | 0 .../DeleteWaterModal/DeleteWaterModal.jsx | 5 + .../DeleteWaterModal.module.css | 1 + src/modals/LogOutModal/.gitkeep | 0 src/modals/LogOutModal/LogOutModal.jsx | 5 + src/modals/LogOutModal/LogOutModal.module.css | 1 + src/modals/Modal/.gitkeep | 0 src/modals/Modal/Modal.jsx | 5 + src/modals/Modal/Modal.module.css | 1 + src/modals/UserSettingsModal/.gitkeep | 0 .../UserSettingsModal/UserSettingsModal.jsx | 5 + .../UserSettingsModal.module.css | 1 + src/modals/UsersSettingsForm/.gitkeep | 0 src/modals/WaterForm/.gitkeep | 0 src/modals/WaterModal/.gitkeep | 0 src/modals/WaterModal/WaterModal.jsx | 5 + src/modals/WaterModal/WaterModal.module.css | 1 + src/pages/HomePage/.gitkeep | 0 src/pages/HomePage/HomePage.jsx | 5 + src/pages/HomePage/HomePage.module.css | 1 + src/pages/SignInPage/.gitkeep | 0 src/pages/SignInPage/SignInPage.jsx | 5 + src/pages/SignInPage/SignInPage.module.css | 1 + src/pages/SignUpPage/.gitkeep | 0 src/pages/SignUpPage/SignUpPage.jsx | 5 + src/pages/SignUpPage/SignUpPage.module.css | 1 + src/pages/TrackerPage/.gitkeep | 0 src/pages/TrackerPage/TrackerPage.jsx | 5 + src/pages/TrackerPage/TrackerPage.module.css | 1 + src/redux/auth/operations.js | 1 + src/redux/auth/selectors.js | 1 + src/redux/auth/slice.js | 12 + src/redux/store.js | 35 + src/redux/water/operations.js | 1 + src/redux/water/selectors.js | 1 + src/redux/water/slice.js | 12 + 114 files changed, 1360 insertions(+), 171 deletions(-) delete mode 100644 public/vite.svg delete mode 100644 src/App.css delete mode 100644 src/assets/react.svg delete mode 100644 src/components/AddWaterBtn/.gitkeep create mode 100644 src/components/AddWaterBtn/AddWaterBtn.jsx create mode 100644 src/components/AddWaterBtn/AddWaterBtn.module.css delete mode 100644 src/components/AdvantagesSection/.gitkeep create mode 100644 src/components/AdvantagesSection/AdvantagesSection.jsx create mode 100644 src/components/AdvantagesSection/AdvantagesSection.module.css delete mode 100644 src/components/Calendar/.gitkeep create mode 100644 src/components/Calendar/Calendar.jsx create mode 100644 src/components/Calendar/Calendar.module.css delete mode 100644 src/components/CalendarItem/.gitkeep create mode 100644 src/components/CalendarItem/CalendarItem.jsx create mode 100644 src/components/CalendarItem/CalendarItem.module.css delete mode 100644 src/components/CalendarPagination/.gitkeep create mode 100644 src/components/CalendarPagination/CalendarPagination.jsx create mode 100644 src/components/CalendarPagination/CalendarPagination.module.css delete mode 100644 src/components/ChooseDate/.gitkeep create mode 100644 src/components/ChooseDate/ChooseDate.jsx create mode 100644 src/components/ChooseDate/ChooseDate.module.css delete mode 100644 src/components/DailyInfo/.gitkeep create mode 100644 src/components/DailyInfo/DailyInfo.jsx create mode 100644 src/components/DailyInfo/DailyInfo.module.css create mode 100644 src/components/Loader/Loader.jsx delete mode 100644 src/components/Logo/.gitkeep create mode 100644 src/components/Logo/Logo.jsx create mode 100644 src/components/Logo/Logo.module.css delete mode 100644 src/components/MonthInfo/.gitkeep create mode 100644 src/components/MonthInfo/MonthInfo.jsx create mode 100644 src/components/MonthInfo/MonthInfo.module.css create mode 100644 src/components/PrivateRoute/PrivateRoute.jsx create mode 100644 src/components/RestrictedRoute/RestrictedRoute.jsx delete mode 100644 src/components/SignInForm/.gitkeep create mode 100644 src/components/SignInForm/SignInForm.jsx create mode 100644 src/components/SignInForm/SignInForm.module.css delete mode 100644 src/components/SignUpForm/.gitkeep create mode 100644 src/components/SignUpForm/SignUpForm.jsx create mode 100644 src/components/SignUpForm/SignUpForm.module.css delete mode 100644 src/components/UserBar/.gitkeep create mode 100644 src/components/UserBar/UserBar.jsx create mode 100644 src/components/UserBar/UserBar.module.css delete mode 100644 src/components/UserBarPopover/.gitkeep create mode 100644 src/components/UserBarPopover/UserBarPopover.jsx create mode 100644 src/components/UserBarPopover/UserBarPopover.module.css delete mode 100644 src/components/UserPanel/.gitkeep create mode 100644 src/components/UserPanel/UserPanel.jsx create mode 100644 src/components/UserPanel/UserPanel.module.css create mode 100644 src/components/UsersSettingsForm/UsersSettingsForm.jsx create mode 100644 src/components/UsersSettingsForm/UsersSettingsForm.module.css delete mode 100644 src/components/WaterDailyNorma/.gitkeep create mode 100644 src/components/WaterDailyNorma/WaterDailyNorma.jsx create mode 100644 src/components/WaterDailyNorma/WaterDailyNorma.module.css delete mode 100644 src/components/WaterDetailedInfo/.gitkeep create mode 100644 src/components/WaterDetailedInfo/WaterDetailedInfo.jsx create mode 100644 src/components/WaterDetailedInfo/WaterDetailedInfo.module.css create mode 100644 src/components/WaterForm/WaterForm.jsx create mode 100644 src/components/WaterForm/WaterForm.module.css delete mode 100644 src/components/WaterItem/.gitkeep create mode 100644 src/components/WaterItem/WaterItem.jsx create mode 100644 src/components/WaterItem/WaterItem.module.css delete mode 100644 src/components/WaterList/.gitkeep create mode 100644 src/components/WaterList/WaterList.jsx create mode 100644 src/components/WaterList/WaterList.module.css delete mode 100644 src/components/WaterMainInfo/.gitkeep create mode 100644 src/components/WaterMainInfo/WaterMainInfo.jsx create mode 100644 src/components/WaterMainInfo/WaterMainInfo.module.css delete mode 100644 src/components/WaterProgressBar/.gitkeep create mode 100644 src/components/WaterProgressBar/WaterProgressBar.jsx create mode 100644 src/components/WaterProgressBar/WaterProgressBar.module.css delete mode 100644 src/components/WelcomeSection/.gitkeep create mode 100644 src/components/WelcomeSection/WelcomeSection.jsx create mode 100644 src/components/WelcomeSection/WelcomeSection.module.css delete mode 100644 src/modals/DeleteWaterModal/.gitkeep create mode 100644 src/modals/DeleteWaterModal/DeleteWaterModal.jsx create mode 100644 src/modals/DeleteWaterModal/DeleteWaterModal.module.css delete mode 100644 src/modals/LogOutModal/.gitkeep create mode 100644 src/modals/LogOutModal/LogOutModal.jsx create mode 100644 src/modals/LogOutModal/LogOutModal.module.css delete mode 100644 src/modals/Modal/.gitkeep create mode 100644 src/modals/Modal/Modal.jsx create mode 100644 src/modals/Modal/Modal.module.css delete mode 100644 src/modals/UserSettingsModal/.gitkeep create mode 100644 src/modals/UserSettingsModal/UserSettingsModal.jsx create mode 100644 src/modals/UserSettingsModal/UserSettingsModal.module.css delete mode 100644 src/modals/UsersSettingsForm/.gitkeep delete mode 100644 src/modals/WaterForm/.gitkeep delete mode 100644 src/modals/WaterModal/.gitkeep create mode 100644 src/modals/WaterModal/WaterModal.jsx create mode 100644 src/modals/WaterModal/WaterModal.module.css delete mode 100644 src/pages/HomePage/.gitkeep create mode 100644 src/pages/HomePage/HomePage.jsx create mode 100644 src/pages/HomePage/HomePage.module.css delete mode 100644 src/pages/SignInPage/.gitkeep create mode 100644 src/pages/SignInPage/SignInPage.jsx create mode 100644 src/pages/SignInPage/SignInPage.module.css delete mode 100644 src/pages/SignUpPage/.gitkeep create mode 100644 src/pages/SignUpPage/SignUpPage.jsx create mode 100644 src/pages/SignUpPage/SignUpPage.module.css delete mode 100644 src/pages/TrackerPage/.gitkeep create mode 100644 src/pages/TrackerPage/TrackerPage.jsx create mode 100644 src/pages/TrackerPage/TrackerPage.module.css create mode 100644 src/redux/auth/operations.js create mode 100644 src/redux/auth/selectors.js create mode 100644 src/redux/auth/slice.js create mode 100644 src/redux/store.js create mode 100644 src/redux/water/operations.js create mode 100644 src/redux/water/selectors.js create mode 100644 src/redux/water/slice.js diff --git a/package-lock.json b/package-lock.json index 7711ccc..f9f18d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,21 @@ "name": "frontend-template", "version": "0.0.0", "dependencies": { + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "clsx": "^2.1.1", + "formik": "^2.4.6", + "modern-normalize": "^3.0.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-icon": "^1.0.0", + "react-icons": "^5.3.0", + "react-loader-spinner": "^6.1.6", + "react-redux": "^9.1.2", + "react-router-dom": "^7.0.1", + "redux": "^5.0.1", + "redux-persist": "^6.0.0", + "yup": "^1.4.0" }, "devDependencies": { "@eslint/js": "^9.13.0", @@ -24,6 +37,27 @@ "vite": "^5.4.10" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -580,6 +614,30 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.27.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", @@ -1027,12 +1085,28 @@ "@swc/counter": "^0.1.3" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1042,14 +1116,12 @@ "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "dev": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1064,6 +1136,18 @@ "@types/react": "*" } }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", @@ -1264,6 +1348,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1279,6 +1369,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha512-KpgoA8VE/pMmNCrnEeeXqFG24TIH11Z3ZaimIhJWsin8EbfZy3WzFKUTIan10ZIDgRVvi9EkLbruJElJC9dRlg==", + "license": "MIT", + "peer": true, + "dependencies": { + "core-js": "^1.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1323,6 +1434,15 @@ "node": ">=6" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1339,6 +1459,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1357,12 +1486,41 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "license": "MIT", + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1377,11 +1535,30 @@ "node": ">= 8" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/data-view-buffer": { "version": "1.0.1", @@ -1457,6 +1634,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1491,6 +1677,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -1976,6 +2171,26 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1985,6 +2200,45 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formik": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2204,6 +2458,15 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2213,6 +2476,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2698,6 +2971,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2715,6 +3000,27 @@ "loose-envify": "cli.js" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2727,6 +3033,18 @@ "node": "*" } }, + "node_modules/modern-normalize": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-3.0.1.tgz", + "integrity": "sha512-VqlMdYi59Uch6fnUPxnpijWUQe+TW6zeWCvyr6Mb7JibheHzSuAAoJi2c71ZwIaWKpECpGpYHoaaBp6rBRr+/g==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2737,7 +3055,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -2940,8 +3257,7 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/possible-typed-array-names": { "version": "1.0.0", @@ -2980,6 +3296,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3000,6 +3322,18 @@ "react-is": "^16.13.1" } }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3032,11 +3366,145 @@ "react": "^18.3.1" } }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "license": "MIT" + }, + "node_modules/react-icon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", + "integrity": "sha512-VzSlpBHnLanVw79mOxyq98hWDi6DlxK9qPiZ1bAK6bLurMBCaxO/jjyYUrRx9+JGLc/NbnwOmyE/W5Qglbb2QA==", + "license": "MIT", + "peerDependencies": { + "babel-runtime": "^5.3.3", + "react": ">=0.12.0" + } + }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-loader-spinner": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/react-loader-spinner/-/react-loader-spinner-6.1.6.tgz", + "integrity": "sha512-x5h1Jcit7Qn03MuKlrWcMG9o12cp9SNDVHVJTNRi9TgtGPKcjKiXkou4NRfLAtXaFB3+Z8yZsVzONmPzhv2ErA==", + "license": "MIT", + "dependencies": { + "react-is": "^18.2.0", + "styled-components": "^6.1.2" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-loader-spinner/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", + "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", + "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "license": "MIT", + "dependencies": { + "react-router": "7.0.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "license": "MIT", + "peerDependencies": { + "redux": ">4.0.0" + } + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", @@ -3077,6 +3545,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -3192,6 +3666,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -3224,6 +3704,12 @@ "node": ">= 0.4" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3267,7 +3753,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3369,6 +3854,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "license": "MIT", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3393,6 +3946,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3405,6 +3988,18 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -3503,6 +4098,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", @@ -3676,9 +4280,39 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yup": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", + "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } } }, "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, "@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -3962,6 +4596,17 @@ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true }, + "@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "requires": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + } + }, "@rollup/rollup-android-arm-eabi": { "version": "4.27.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", @@ -4193,12 +4838,26 @@ "@swc/counter": "^0.1.3" } }, + "@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -4208,14 +4867,12 @@ "@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "dev": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4230,6 +4887,16 @@ "@types/react": "*" } }, + "@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, + "@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "@vitejs/plugin-react-swc": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", @@ -4370,6 +5037,11 @@ "is-shared-array-buffer": "^1.0.2" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -4379,6 +5051,25 @@ "possible-typed-array-names": "^1.0.0" } }, + "axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha512-KpgoA8VE/pMmNCrnEeeXqFG24TIH11Z3ZaimIhJWsin8EbfZy3WzFKUTIan10ZIDgRVvi9EkLbruJElJC9dRlg==", + "peer": true, + "requires": { + "core-js": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4414,6 +5105,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4424,6 +5120,11 @@ "supports-color": "^7.1.0" } }, + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4439,12 +5140,31 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "peer": true + }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -4456,11 +5176,25 @@ "which": "^2.0.1" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" + }, + "css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "data-view-buffer": { "version": "1.0.1", @@ -4510,6 +5244,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, "define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -4532,6 +5271,11 @@ "object-keys": "^1.1.1" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4902,6 +5646,11 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4911,6 +5660,31 @@ "is-callable": "^1.1.3" } }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formik": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", + "requires": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + } + }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -5051,12 +5825,25 @@ "function-bind": "^1.1.2" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, + "immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5383,6 +6170,16 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5397,6 +6194,19 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5406,6 +6216,11 @@ "brace-expansion": "^1.1.7" } }, + "modern-normalize": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-3.0.1.tgz", + "integrity": "sha512-VqlMdYi59Uch6fnUPxnpijWUQe+TW6zeWCvyr6Mb7JibheHzSuAAoJi2c71ZwIaWKpECpGpYHoaaBp6rBRr+/g==" + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5415,8 +6230,7 @@ "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0", @@ -5550,8 +6364,7 @@ "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "possible-typed-array-names": { "version": "1.0.0", @@ -5570,6 +6383,11 @@ "source-map-js": "^1.2.1" } }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5587,6 +6405,16 @@ "react-is": "^16.13.1" } }, + "property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5610,11 +6438,88 @@ "scheduler": "^0.23.2" } }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "react-icon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", + "integrity": "sha512-VzSlpBHnLanVw79mOxyq98hWDi6DlxK9qPiZ1bAK6bLurMBCaxO/jjyYUrRx9+JGLc/NbnwOmyE/W5Qglbb2QA==", + "requires": {} + }, + "react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "requires": {} + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-loader-spinner": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/react-loader-spinner/-/react-loader-spinner-6.1.6.tgz", + "integrity": "sha512-x5h1Jcit7Qn03MuKlrWcMG9o12cp9SNDVHVJTNRi9TgtGPKcjKiXkou4NRfLAtXaFB3+Z8yZsVzONmPzhv2ErA==", + "requires": { + "react-is": "^18.2.0", + "styled-components": "^6.1.2" + }, + "dependencies": { + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + } + } + }, + "react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "requires": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + } + }, + "react-router": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", + "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "requires": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + } + }, + "react-router-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", + "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "requires": { + "react-router": "7.0.1" + } + }, + "redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "requires": {} + }, + "redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "requires": {} }, "reflect.getprototypeof": { "version": "1.0.6", @@ -5643,6 +6548,11 @@ "set-function-name": "^2.0.2" } }, + "reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, "resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -5725,6 +6635,11 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, + "set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" + }, "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5751,6 +6666,11 @@ "has-property-descriptors": "^1.0.2" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5781,8 +6701,7 @@ "source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, "string.prototype.matchall": { "version": "4.0.11", @@ -5854,6 +6773,44 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "requires": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "dependencies": { + "postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5869,6 +6826,31 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==" + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5878,6 +6860,11 @@ "prelude-ls": "^1.2.1" } }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, "typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -5952,6 +6939,12 @@ "punycode": "^2.1.0" } }, + "use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "requires": {} + }, "vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", @@ -6042,6 +7035,17 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "yup": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", + "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", + "requires": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } } } } diff --git a/package.json b/package.json index f209553..bc78999 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,21 @@ "preview": "vite preview" }, "dependencies": { + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "clsx": "^2.1.1", + "formik": "^2.4.6", + "modern-normalize": "^3.0.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-icon": "^1.0.0", + "react-icons": "^5.3.0", + "react-loader-spinner": "^6.1.6", + "react-redux": "^9.1.2", + "react-router-dom": "^7.0.1", + "redux": "^5.0.1", + "redux-persist": "^6.0.0", + "yup": "^1.4.0" }, "devDependencies": { "@eslint/js": "^9.13.0", diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.jsx b/src/App.jsx index f67355a..a4dc60a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,35 +1,34 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' +import { lazy, Suspense } from "react"; +import { Loader } from "./components/Loader/Loader"; +import { PrivateRoute } from "./components/PrivateRoute/PrivateRoute"; +import { RestrictedRoute } from "./components/RestrictedRoute/RestrictedRoute"; +import { Route, Routes } from "react-router-dom"; -function App() { - const [count, setCount] = useState(0) +const HomePage = lazy(() => import("./pages/HomePage/HomePage")); +const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); +const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); +const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); +function App() { return ( - <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

- Edit src/App.jsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ) + }> + + } /> + } />} + /> + } />} + /> + } />} + /> + + + ); } -export default App +export default App; diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/AddWaterBtn/.gitkeep b/src/components/AddWaterBtn/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx new file mode 100644 index 0000000..33e5bcf --- /dev/null +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -0,0 +1,5 @@ +const AddWaterBtn = () => { + return <>; +}; + +export default AddWaterBtn; diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/AdvantagesSection/.gitkeep b/src/components/AdvantagesSection/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/AdvantagesSection/AdvantagesSection.jsx b/src/components/AdvantagesSection/AdvantagesSection.jsx new file mode 100644 index 0000000..2936d4b --- /dev/null +++ b/src/components/AdvantagesSection/AdvantagesSection.jsx @@ -0,0 +1,5 @@ +const AdvantagesSection = () => { + return <>; +}; + +export default AdvantagesSection; diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/Calendar/.gitkeep b/src/components/Calendar/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx new file mode 100644 index 0000000..b8805aa --- /dev/null +++ b/src/components/Calendar/Calendar.jsx @@ -0,0 +1,5 @@ +const Calendar = () => { + return <>; +}; + +export default Calendar; diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/Calendar/Calendar.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/CalendarItem/.gitkeep b/src/components/CalendarItem/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx new file mode 100644 index 0000000..6557d2a --- /dev/null +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -0,0 +1,5 @@ +const CalendarItem = () => { + return <>; +}; + +export default CalendarItem; diff --git a/src/components/CalendarItem/CalendarItem.module.css b/src/components/CalendarItem/CalendarItem.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/CalendarItem/CalendarItem.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/CalendarPagination/.gitkeep b/src/components/CalendarPagination/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/CalendarPagination/CalendarPagination.jsx b/src/components/CalendarPagination/CalendarPagination.jsx new file mode 100644 index 0000000..0134dc8 --- /dev/null +++ b/src/components/CalendarPagination/CalendarPagination.jsx @@ -0,0 +1,5 @@ +const CalendarPagination = () => { + return <>; +}; + +export default CalendarPagination; diff --git a/src/components/CalendarPagination/CalendarPagination.module.css b/src/components/CalendarPagination/CalendarPagination.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/CalendarPagination/CalendarPagination.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/ChooseDate/.gitkeep b/src/components/ChooseDate/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/ChooseDate/ChooseDate.jsx b/src/components/ChooseDate/ChooseDate.jsx new file mode 100644 index 0000000..ca4f333 --- /dev/null +++ b/src/components/ChooseDate/ChooseDate.jsx @@ -0,0 +1,5 @@ +const ChooseDate = () => { + return <>; +}; + +export default ChooseDate; diff --git a/src/components/ChooseDate/ChooseDate.module.css b/src/components/ChooseDate/ChooseDate.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/ChooseDate/ChooseDate.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/DailyInfo/.gitkeep b/src/components/DailyInfo/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx new file mode 100644 index 0000000..721befc --- /dev/null +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -0,0 +1,5 @@ +const DailyInfo = () => { + return <>; +}; + +export default DailyInfo; diff --git a/src/components/DailyInfo/DailyInfo.module.css b/src/components/DailyInfo/DailyInfo.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/DailyInfo/DailyInfo.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/Loader/Loader.jsx b/src/components/Loader/Loader.jsx new file mode 100644 index 0000000..332a6fb --- /dev/null +++ b/src/components/Loader/Loader.jsx @@ -0,0 +1,5 @@ +const Loader = () => { + return <>; +}; + +export default Loader; diff --git a/src/components/Logo/.gitkeep b/src/components/Logo/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/Logo/Logo.jsx b/src/components/Logo/Logo.jsx new file mode 100644 index 0000000..f5dff78 --- /dev/null +++ b/src/components/Logo/Logo.jsx @@ -0,0 +1,5 @@ +const Logo = () => { + return <>; +}; + +export default Logo; diff --git a/src/components/Logo/Logo.module.css b/src/components/Logo/Logo.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/Logo/Logo.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/MonthInfo/.gitkeep b/src/components/MonthInfo/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/MonthInfo/MonthInfo.jsx b/src/components/MonthInfo/MonthInfo.jsx new file mode 100644 index 0000000..0d1b3cd --- /dev/null +++ b/src/components/MonthInfo/MonthInfo.jsx @@ -0,0 +1,5 @@ +const MonthInfo = () => { + return <>; +}; + +export default MonthInfo; diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/PrivateRoute/PrivateRoute.jsx b/src/components/PrivateRoute/PrivateRoute.jsx new file mode 100644 index 0000000..1881354 --- /dev/null +++ b/src/components/PrivateRoute/PrivateRoute.jsx @@ -0,0 +1,5 @@ +const PrivateRoute = () => { + return; +}; + +export default PrivateRoute; diff --git a/src/components/RestrictedRoute/RestrictedRoute.jsx b/src/components/RestrictedRoute/RestrictedRoute.jsx new file mode 100644 index 0000000..4af96d9 --- /dev/null +++ b/src/components/RestrictedRoute/RestrictedRoute.jsx @@ -0,0 +1,5 @@ +const RestrictedRoute = () => { + return; +}; + +export default RestrictedRoute; diff --git a/src/components/SignInForm/.gitkeep b/src/components/SignInForm/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx new file mode 100644 index 0000000..ca95924 --- /dev/null +++ b/src/components/SignInForm/SignInForm.jsx @@ -0,0 +1,5 @@ +const SignInForm = () => { + return <>; +}; + +export default SignInForm; diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/SignInForm/SignInForm.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/SignUpForm/.gitkeep b/src/components/SignUpForm/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx new file mode 100644 index 0000000..61e61b8 --- /dev/null +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -0,0 +1,5 @@ +const SignUpForm = () => { + return <>; +}; + +export default SignUpForm; diff --git a/src/components/SignUpForm/SignUpForm.module.css b/src/components/SignUpForm/SignUpForm.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/SignUpForm/SignUpForm.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/UserBar/.gitkeep b/src/components/UserBar/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/UserBar/UserBar.jsx b/src/components/UserBar/UserBar.jsx new file mode 100644 index 0000000..afcc221 --- /dev/null +++ b/src/components/UserBar/UserBar.jsx @@ -0,0 +1,5 @@ +const UserBar = () => { + return <>; +}; + +export default UserBar; diff --git a/src/components/UserBar/UserBar.module.css b/src/components/UserBar/UserBar.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/UserBar/UserBar.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/UserBarPopover/.gitkeep b/src/components/UserBarPopover/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/UserBarPopover/UserBarPopover.jsx b/src/components/UserBarPopover/UserBarPopover.jsx new file mode 100644 index 0000000..9ca162e --- /dev/null +++ b/src/components/UserBarPopover/UserBarPopover.jsx @@ -0,0 +1,5 @@ +const UserBarPopover = () => { + return <>; +}; + +export default UserBarPopover; diff --git a/src/components/UserBarPopover/UserBarPopover.module.css b/src/components/UserBarPopover/UserBarPopover.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/UserBarPopover/UserBarPopover.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/UserPanel/.gitkeep b/src/components/UserPanel/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx new file mode 100644 index 0000000..24247dd --- /dev/null +++ b/src/components/UserPanel/UserPanel.jsx @@ -0,0 +1,5 @@ +const UserPanel = () => { + return <>; +}; + +export default UserPanel; diff --git a/src/components/UserPanel/UserPanel.module.css b/src/components/UserPanel/UserPanel.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/UserPanel/UserPanel.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx new file mode 100644 index 0000000..8deae9d --- /dev/null +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -0,0 +1,5 @@ +const UsersSettingsForm = () => { + return <>; +}; + +export default UsersSettingsForm; diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterDailyNorma/.gitkeep b/src/components/WaterDailyNorma/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx new file mode 100644 index 0000000..593d5b3 --- /dev/null +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -0,0 +1,5 @@ +const WaterDailyNorma = () => { + return <>; +}; + +export default WaterDailyNorma; diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.module.css b/src/components/WaterDailyNorma/WaterDailyNorma.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterDailyNorma/WaterDailyNorma.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterDetailedInfo/.gitkeep b/src/components/WaterDetailedInfo/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx new file mode 100644 index 0000000..2fadd37 --- /dev/null +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -0,0 +1,5 @@ +const WaterDetailedInfo = () => { + return <>; +}; + +export default WaterDetailedInfo; diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterForm/WaterForm.jsx b/src/components/WaterForm/WaterForm.jsx new file mode 100644 index 0000000..ec1d11d --- /dev/null +++ b/src/components/WaterForm/WaterForm.jsx @@ -0,0 +1,5 @@ +const WaterForm = () => { + return <>; +}; + +export default WaterForm; diff --git a/src/components/WaterForm/WaterForm.module.css b/src/components/WaterForm/WaterForm.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterForm/WaterForm.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterItem/.gitkeep b/src/components/WaterItem/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterItem/WaterItem.jsx b/src/components/WaterItem/WaterItem.jsx new file mode 100644 index 0000000..b2aeecb --- /dev/null +++ b/src/components/WaterItem/WaterItem.jsx @@ -0,0 +1,5 @@ +const WaterItem = () => { + return <>; +}; + +export default WaterItem; diff --git a/src/components/WaterItem/WaterItem.module.css b/src/components/WaterItem/WaterItem.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterItem/WaterItem.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterList/.gitkeep b/src/components/WaterList/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx new file mode 100644 index 0000000..56321bd --- /dev/null +++ b/src/components/WaterList/WaterList.jsx @@ -0,0 +1,5 @@ +const WaterList = () => { + return <>; +}; + +export default WaterList; diff --git a/src/components/WaterList/WaterList.module.css b/src/components/WaterList/WaterList.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterList/WaterList.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterMainInfo/.gitkeep b/src/components/WaterMainInfo/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx new file mode 100644 index 0000000..ef5d9c2 --- /dev/null +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -0,0 +1,5 @@ +const WaterMainInfo = () => { + return <>; +}; + +export default WaterMainInfo; diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WaterProgressBar/.gitkeep b/src/components/WaterProgressBar/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx new file mode 100644 index 0000000..a9b0b8f --- /dev/null +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -0,0 +1,5 @@ +const WaterProgressBar = () => { + return <>; +}; + +export default WaterProgressBar; diff --git a/src/components/WaterProgressBar/WaterProgressBar.module.css b/src/components/WaterProgressBar/WaterProgressBar.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WaterProgressBar/WaterProgressBar.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/components/WelcomeSection/.gitkeep b/src/components/WelcomeSection/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/components/WelcomeSection/WelcomeSection.jsx b/src/components/WelcomeSection/WelcomeSection.jsx new file mode 100644 index 0000000..4691e67 --- /dev/null +++ b/src/components/WelcomeSection/WelcomeSection.jsx @@ -0,0 +1,5 @@ +const WelcomeSection = () => { + return <>; +}; + +export default WelcomeSection; diff --git a/src/components/WelcomeSection/WelcomeSection.module.css b/src/components/WelcomeSection/WelcomeSection.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/components/WelcomeSection/WelcomeSection.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/index.css b/src/index.css index 6119ad9..3a4f578 100644 --- a/src/index.css +++ b/src/index.css @@ -2,67 +2,4 @@ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; line-height: 1.5; font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } } diff --git a/src/main.jsx b/src/main.jsx index b9a1a6d..1a205cf 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,10 +1,20 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.jsx' +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "./index.css"; +import App from "./App.jsx"; +import { BrowserRouter } from "react-router-dom"; +import { Provider } from "react-redux"; +import { PersistGate } from "redux-persist/integration/react"; +import { persistor, store } from "./redux/store.js"; -createRoot(document.getElementById('root')).render( +createRoot(document.getElementById("root")).render( - - , -) + + + + + + + + +); diff --git a/src/modals/DeleteWaterModal/.gitkeep b/src/modals/DeleteWaterModal/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx new file mode 100644 index 0000000..1e71873 --- /dev/null +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -0,0 +1,5 @@ +const DeleteWaterModal = () => { + return <>; +}; + +export default DeleteWaterModal; diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.module.css b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/modals/LogOutModal/.gitkeep b/src/modals/LogOutModal/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx new file mode 100644 index 0000000..8b2c0a4 --- /dev/null +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -0,0 +1,5 @@ +const LogOutModal = () => { + return <>; +}; + +export default LogOutModal; diff --git a/src/modals/LogOutModal/LogOutModal.module.css b/src/modals/LogOutModal/LogOutModal.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/modals/LogOutModal/LogOutModal.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/modals/Modal/.gitkeep b/src/modals/Modal/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/Modal/Modal.jsx b/src/modals/Modal/Modal.jsx new file mode 100644 index 0000000..8a0bc6c --- /dev/null +++ b/src/modals/Modal/Modal.jsx @@ -0,0 +1,5 @@ +const Modal = () => { + return <>; +}; + +export default Modal; diff --git a/src/modals/Modal/Modal.module.css b/src/modals/Modal/Modal.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/modals/Modal/Modal.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/modals/UserSettingsModal/.gitkeep b/src/modals/UserSettingsModal/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx new file mode 100644 index 0000000..d2c7f99 --- /dev/null +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -0,0 +1,5 @@ +const UserSettingsModal = () => { + return <>; +}; + +export default UserSettingsModal; diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/modals/UsersSettingsForm/.gitkeep b/src/modals/UsersSettingsForm/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/WaterForm/.gitkeep b/src/modals/WaterForm/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/WaterModal/.gitkeep b/src/modals/WaterModal/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/modals/WaterModal/WaterModal.jsx b/src/modals/WaterModal/WaterModal.jsx new file mode 100644 index 0000000..5ab075c --- /dev/null +++ b/src/modals/WaterModal/WaterModal.jsx @@ -0,0 +1,5 @@ +const WaterModal = () => { + return <>; +}; + +export default WaterModal; diff --git a/src/modals/WaterModal/WaterModal.module.css b/src/modals/WaterModal/WaterModal.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/modals/WaterModal/WaterModal.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/pages/HomePage/.gitkeep b/src/pages/HomePage/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/HomePage/HomePage.jsx b/src/pages/HomePage/HomePage.jsx new file mode 100644 index 0000000..658edab --- /dev/null +++ b/src/pages/HomePage/HomePage.jsx @@ -0,0 +1,5 @@ +const HomePage = () => { + return <>; +}; + +export default HomePage; diff --git a/src/pages/HomePage/HomePage.module.css b/src/pages/HomePage/HomePage.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/pages/HomePage/HomePage.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/pages/SignInPage/.gitkeep b/src/pages/SignInPage/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx new file mode 100644 index 0000000..7ad8811 --- /dev/null +++ b/src/pages/SignInPage/SignInPage.jsx @@ -0,0 +1,5 @@ +const SignInPage = () => { + return <>; +}; + +export default SignInPage; diff --git a/src/pages/SignInPage/SignInPage.module.css b/src/pages/SignInPage/SignInPage.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/pages/SignInPage/SignInPage.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/pages/SignUpPage/.gitkeep b/src/pages/SignUpPage/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx new file mode 100644 index 0000000..8d47fc9 --- /dev/null +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -0,0 +1,5 @@ +const SignUpPage = () => { + return <>; +}; + +export default SignUpPage; diff --git a/src/pages/SignUpPage/SignUpPage.module.css b/src/pages/SignUpPage/SignUpPage.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/pages/SignUpPage/SignUpPage.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/pages/TrackerPage/.gitkeep b/src/pages/TrackerPage/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/TrackerPage/TrackerPage.jsx b/src/pages/TrackerPage/TrackerPage.jsx new file mode 100644 index 0000000..57e1d52 --- /dev/null +++ b/src/pages/TrackerPage/TrackerPage.jsx @@ -0,0 +1,5 @@ +const TrackerPage = () => { + return <>; +}; + +export default TrackerPage; diff --git a/src/pages/TrackerPage/TrackerPage.module.css b/src/pages/TrackerPage/TrackerPage.module.css new file mode 100644 index 0000000..189ff91 --- /dev/null +++ b/src/pages/TrackerPage/TrackerPage.module.css @@ -0,0 +1 @@ +/*style*/ diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js new file mode 100644 index 0000000..b1a7245 --- /dev/null +++ b/src/redux/auth/operations.js @@ -0,0 +1 @@ +// операції авторизації diff --git a/src/redux/auth/selectors.js b/src/redux/auth/selectors.js new file mode 100644 index 0000000..a892399 --- /dev/null +++ b/src/redux/auth/selectors.js @@ -0,0 +1 @@ +//селектори diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js new file mode 100644 index 0000000..26e1494 --- /dev/null +++ b/src/redux/auth/slice.js @@ -0,0 +1,12 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const INITIAL_STATE = {}; + +const authSlice = createSlice({ + name: "auth", + initialState: INITIAL_STATE, + reducers: {}, + extraReducers: {}, +}); + +export const authReducer = authSlice.reducer; diff --git a/src/redux/store.js b/src/redux/store.js new file mode 100644 index 0000000..e8f0ed4 --- /dev/null +++ b/src/redux/store.js @@ -0,0 +1,35 @@ +import { configureStore } from "@reduxjs/toolkit"; +import { + persistStore, + persistReducer, + FLUSH, + REHYDRATE, + PAUSE, + PERSIST, + PURGE, + REGISTER, +} from "redux-persist"; +import storage from "redux-persist/lib/storage"; +import { authReducer } from "./auth/slice"; +import { waterReducer } from "./water/slice"; + +const authConfig = { + key: "auth", + storage, + whitelist: ["token"], +}; + +export const store = configureStore({ + reducer: { + water: waterReducer, + auth: persistReducer(authConfig, authReducer), + }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], + }, + }), +}); + +export const persistor = persistStore(store); diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js new file mode 100644 index 0000000..9a35dde --- /dev/null +++ b/src/redux/water/operations.js @@ -0,0 +1 @@ +// операції з водою diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js new file mode 100644 index 0000000..a892399 --- /dev/null +++ b/src/redux/water/selectors.js @@ -0,0 +1 @@ +//селектори diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js new file mode 100644 index 0000000..17ab777 --- /dev/null +++ b/src/redux/water/slice.js @@ -0,0 +1,12 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const INITIAL_STATE = {}; + +const waterSlice = createSlice({ + name: "water", + initialState: INITIAL_STATE, + reducers: {}, + extraReducers: {}, +}); + +export const waterReducer = waterSlice.reducer; From 482172d6c618afb46ddd8d4102298ef73809de74 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:54:27 +0200 Subject: [PATCH 002/185] replace --- src/App.jsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index a4dc60a..34157d3 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -13,17 +13,17 @@ function App() { return ( }> - } /> + } /> } />} + path="/tracker" + element={} />} /> } />} /> } />} /> From f5c2abe8c2272a31d13a8156f33f77e93ca5d07b Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:46:15 +0200 Subject: [PATCH 003/185] import --- src/App.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 34157d3..9a922f9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,7 +1,7 @@ import { lazy, Suspense } from "react"; -import { Loader } from "./components/Loader/Loader"; -import { PrivateRoute } from "./components/PrivateRoute/PrivateRoute"; -import { RestrictedRoute } from "./components/RestrictedRoute/RestrictedRoute"; +import Loader from "./components/Loader/Loader"; +import PrivateRoute from "./components/PrivateRoute/PrivateRoute"; +import RestrictedRoute from "./components/RestrictedRoute/RestrictedRoute"; import { Route, Routes } from "react-router-dom"; const HomePage = lazy(() => import("./pages/HomePage/HomePage")); From b301af3ae370f112dfe778936e4dea9eb3106d95 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sat, 23 Nov 2024 14:30:37 -0500 Subject: [PATCH 004/185] update README.md with participants list --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index f768e33..2ea9344 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +--- +title: README +date: 2024-11-23 14:26 +include_toc: true +--- + + # React + Vite This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. @@ -6,3 +13,19 @@ Currently, two official plugins are available: - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Team +01. [Anton Pokydko](https://github.com/Pokydko/) +02. [Dmytro M.](https://github.com/Mitka92) +03. [Dmytro Orel](https://github.com/Decembric) +04. [Elmira Eminova ](https://github.com/ElmiraEminova) +05. [Igor Ievtushenko](https://github.com/ii777) +06. [Kateryna Artemieva](https://github.com/KaterynaArtemieva) +07. [Myroslava Hubar ](https://github.com/users/MyroslavaHubar) +08. [Oleksii O.](https://github.com/lexxus0) +09. [Olga Blud](https://github.com/olgablud) +10. [Serhii S.](https://github.com/ITStupak) +11. [Stas A.](https://github.com/StasAstenenko) +12. [Svitlana Tymchenko ](https://github.com/SvitLanaTy) +13. [Yuliia](https://github.com/JeinKh) +14. [Yuliia](https://github.com/Yuliia0905) From 53396f1a86c4bc86891f556283c7747a64cc2588 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Sun, 24 Nov 2024 02:16:45 +0100 Subject: [PATCH 005/185] Create sprite.svg --- src/icons/sprite.svg | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/icons/sprite.svg diff --git a/src/icons/sprite.svg b/src/icons/sprite.svg new file mode 100644 index 0000000..4ef34b5 --- /dev/null +++ b/src/icons/sprite.svg @@ -0,0 +1,47 @@ + \ No newline at end of file From 07b41371ce76b03fe3d29417cf6cc1f0b3fa0da8 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:53:18 -0500 Subject: [PATCH 006/185] update README.md --- README.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2ea9344..0c66521 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ date: 2024-11-23 14:26 include_toc: true --- - # React + Vite This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. @@ -15,17 +14,17 @@ Currently, two official plugins are available: - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh ## Team -01. [Anton Pokydko](https://github.com/Pokydko/) -02. [Dmytro M.](https://github.com/Mitka92) -03. [Dmytro Orel](https://github.com/Decembric) -04. [Elmira Eminova ](https://github.com/ElmiraEminova) -05. [Igor Ievtushenko](https://github.com/ii777) -06. [Kateryna Artemieva](https://github.com/KaterynaArtemieva) -07. [Myroslava Hubar ](https://github.com/users/MyroslavaHubar) -08. [Oleksii O.](https://github.com/lexxus0) -09. [Olga Blud](https://github.com/olgablud) -10. [Serhii S.](https://github.com/ITStupak) -11. [Stas A.](https://github.com/StasAstenenko) -12. [Svitlana Tymchenko ](https://github.com/SvitLanaTy) -13. [Yuliia](https://github.com/JeinKh) -14. [Yuliia](https://github.com/Yuliia0905) +- [Anton Pokydko](https://github.com/Pokydko/) +- [Dmytro M.](https://github.com/Mitka92) +- [Dmytro Orel](https://github.com/Decembric) +- [Elmira Eminova ](https://github.com/ElmiraEminova) +- [Igor Ievtushenko](https://github.com/ii777) +- [Kateryna Artemieva](https://github.com/KaterynaArtemieva) +- [Myroslava Hubar ](https://github.com/users/MyroslavaHubar) +- [Oleksii O.](https://github.com/lexxus0) +- [Olga Blud](https://github.com/olgablud) +- [Serhii S.](https://github.com/ITStupak) +- [Stas A.](https://github.com/StasAstenenko) +- [Svitlana Tymchenko ](https://github.com/SvitLanaTy) +- [Yuliia](https://github.com/JeinKh) +- [Yuliia](https://github.com/Yuliia0905) From ecd77be94e6539b576581430493cbb569b0984b3 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sat, 23 Nov 2024 22:03:39 -0500 Subject: [PATCH 007/185] add temporary bug fix in redux slices --- src/redux/auth/slice.js | 2 +- src/redux/water/slice.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 26e1494..3a4b174 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -6,7 +6,7 @@ const authSlice = createSlice({ name: "auth", initialState: INITIAL_STATE, reducers: {}, - extraReducers: {}, + // extraReducers: {}, // II777: deprecated syntax was breaking the build }); export const authReducer = authSlice.reducer; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 17ab777..51dced2 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -6,7 +6,7 @@ const waterSlice = createSlice({ name: "water", initialState: INITIAL_STATE, reducers: {}, - extraReducers: {}, + // extraReducers: {}, // II777: deprecated syntax was breaking the build }); export const waterReducer = waterSlice.reducer; From bc0dde94d39e66fdb49f1dfce3af2c4163c5f04f Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sat, 23 Nov 2024 22:16:39 -0500 Subject: [PATCH 008/185] add favicon and fonts --- index.html | 8 ++++++-- public/assets/favicon.svg | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 public/assets/favicon.svg diff --git a/index.html b/index.html index 0c589ec..0c72660 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,13 @@ - + + - Vite + React + AquaTrack
diff --git a/public/assets/favicon.svg b/public/assets/favicon.svg new file mode 100644 index 0000000..a0e5a34 --- /dev/null +++ b/public/assets/favicon.svg @@ -0,0 +1,3 @@ + + + From 17f06dbb81eb002cbba853e2546413f3e09c44b8 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sun, 24 Nov 2024 02:21:24 -0500 Subject: [PATCH 009/185] add Logo component --- src/components/Logo/Logo.jsx | 8 ++++++-- src/components/Logo/Logo.module.css | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/Logo/Logo.jsx b/src/components/Logo/Logo.jsx index f5dff78..66f285a 100644 --- a/src/components/Logo/Logo.jsx +++ b/src/components/Logo/Logo.jsx @@ -1,5 +1,9 @@ -const Logo = () => { - return <>; +import styles from './Logo.module.css'; + +const Logo = ({ text = 'aquatrack', className = '' }) => { + return ( +
{text}
+ ); }; export default Logo; diff --git a/src/components/Logo/Logo.module.css b/src/components/Logo/Logo.module.css index 189ff91..7ccc0d8 100644 --- a/src/components/Logo/Logo.module.css +++ b/src/components/Logo/Logo.module.css @@ -1 +1,10 @@ -/*style*/ +.logo { + font-family: 'Poppins', sans-serif; + font-size: 18px; + font-weight: 700; + color: var(--background-primary-dark); + text-transform: uppercase; + position: absolute; + top: 32px; + left: 32px; +} From 61946d25b351388d755836ba1218cee59d25cf7c Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Sun, 24 Nov 2024 02:31:18 -0500 Subject: [PATCH 010/185] add color variables --- src/index.css | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/index.css b/src/index.css index 3a4f578..c6bb6c4 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,13 @@ +/* Color Variables */ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; + --accent: #9BE1A0; + --text-primary-dark: #2F2F2F; + --text-primary-light: #FFFFFF; + --background-primary-dark: #323F47; + --background-primary-light: #FFFFFF; + --background-secondary-light: #F0EFF4; + + margin: 0; font-weight: 400; + font-family: Popplin, system-ui, Avenir, Helvetica, Arial, sans-serif; } From 69d8d8b0c28760eb2639240b2f5abc2f67d85726 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sun, 24 Nov 2024 10:15:16 +0200 Subject: [PATCH 011/185] up --- .../WaterMainInfo/WaterMainInfo.jsx | 28 ++++++++++- .../WaterMainInfo/WaterMainInfo.module.css | 16 +++++- src/modals/LogOutModal/LogOutModal.jsx | 49 ++++++++++++++++++- src/modals/LogOutModal/LogOutModal.module.css | 25 +++++++++- 4 files changed, 113 insertions(+), 5 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index ef5d9c2..7e0724c 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -1,5 +1,31 @@ +import css from "./WaterMainInfo.module.css"; + const WaterMainInfo = () => { - return <>; + return ( + <> +
+

aquatrack

+ + + + + First project + +
+ + ); }; export default WaterMainInfo; diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 189ff91..c0117f7 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -1 +1,15 @@ -/*style*/ +.container { + border-radius: 30px; + color: #9be1a0; + /* width: 343px; +height: 415px; */ +} + +.title { + font-weight: 700; + font-size: 18px; + line-height: 111%; + letter-spacing: -0.01em; + text-transform: uppercase; + text-align: center; +} diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index 8b2c0a4..e1fbdb5 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -1,5 +1,50 @@ -const LogOutModal = () => { - return <>; +import Modal from "react-modal"; +import css from "./LogOutModal.module.css"; +Modal.setAppElement("#root"); + +const LogOutModal = ({ isOpen, onRequestClose, onConfirm, title, message }) => { + const customStyles = { + overlay: { + backgroundColor: "rgba(0, 0, 0, 0.3)", + }, + content: { + position: "absolute", + top: "20%", + left: "auto", + right: "42%", + bottom: "auto", + marginRight: "-50%", + transform: "translate(-50%, -50%)", + padding: "0", + border: "none", + maxWidth: "100%", + maxHeight: "100%", + height: "auto", + overflow: "hidden", + }, + }; + return ( + +
+

{title}

+

{message}

+
+ + +
+
+
+ ); }; export default LogOutModal; diff --git a/src/modals/LogOutModal/LogOutModal.module.css b/src/modals/LogOutModal/LogOutModal.module.css index 189ff91..178f246 100644 --- a/src/modals/LogOutModal/LogOutModal.module.css +++ b/src/modals/LogOutModal/LogOutModal.module.css @@ -1 +1,24 @@ -/*style*/ +.container { + padding: 10px; + text-align: center; +} + +.confirmBtn, +.cancelBtn { + display: inline-block; + padding: 5px 10px; + border: none; + border-radius: 4px; + margin-top: 10px; +} + +.confirmBtn { + background-color: #d9534f; + color: white; + margin-right: 10px; +} + +.cancelBtn { + background-color: rgb(38, 148, 38); + color: white; +} From f5e76769bc0005d8115a85a9d3989d49f7429107 Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Sun, 24 Nov 2024 13:40:10 +0200 Subject: [PATCH 012/185] add daily info and choose date --- src/components/ChooseDate/ChooseDate.jsx | 57 ++++++++++++++++++- .../ChooseDate/ChooseDate.module.css | 11 ++++ src/components/DailyInfo/DailyInfo.jsx | 20 ++++++- src/components/DailyInfo/DailyInfo.module.css | 4 ++ src/pages/HomePage/HomePage.jsx | 9 ++- 5 files changed, 94 insertions(+), 7 deletions(-) diff --git a/src/components/ChooseDate/ChooseDate.jsx b/src/components/ChooseDate/ChooseDate.jsx index ca4f333..d036e1f 100644 --- a/src/components/ChooseDate/ChooseDate.jsx +++ b/src/components/ChooseDate/ChooseDate.jsx @@ -1,5 +1,56 @@ -const ChooseDate = () => { - return <>; -}; +import css from "./ChooseDate.module.css"; +import PropTypes from "prop-types"; +const ChooseDate = ({ date = new Date() }) => { + return ( + <> +

{text(date)}

+ + ); +}; +ChooseDate.propTypes = { + date: PropTypes.instanceOf(Date), // Перевірка на об'єкт Date +}; export default ChooseDate; + +const dayParse = (chooseDay) => { + const date = new Date(chooseDay); + const monthNames = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ]; + + const day = date.getDate(); // Отримуємо день місяця + const month = monthNames[date.getMonth()]; // Отримуємо назву місяця за індексом + const year = date.getFullYear(); // Отримуємо рік + return { day, month, year, date }; +}; + +const isToday = (date) => { + const today = dayParse(Date.now()); + const chooseDay = dayParse(date); + + return ( + today.day === chooseDay.day && + today.month === chooseDay.month && + today.year === chooseDay.year + ); +}; + +const text = (date) => { + if (isToday(date)) { + return "Today"; + } else { + return `${dayParse(date).day}, ${dayParse(date).month}`; + } +}; diff --git a/src/components/ChooseDate/ChooseDate.module.css b/src/components/ChooseDate/ChooseDate.module.css index 189ff91..bb6cdcc 100644 --- a/src/components/ChooseDate/ChooseDate.module.css +++ b/src/components/ChooseDate/ChooseDate.module.css @@ -1 +1,12 @@ /*style*/ +.day-text { + font-family: Poppins; + font-size: 28px; + font-weight: 700; + line-height: 32px; + letter-spacing: -0.01em; + text-align: left; + text-underline-position: from-font; + text-decoration-skip-ink: none; + color: var(--background-primary-dark); +} diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx index 721befc..9c6b3d2 100644 --- a/src/components/DailyInfo/DailyInfo.jsx +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -1,5 +1,19 @@ -const DailyInfo = () => { - return <>; -}; +import ChooseDate from "../ChooseDate/ChooseDate.jsx"; +import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; +import WaterList from "../WaterList/WaterList.jsx"; +import css from "./DailyInfo.module.css"; +import PropTypes from "prop-types"; +const DailyInfo = ({ date }) => { + return ( +
+ + + +
+ ); +}; +DailyInfo.propTypes = { + date: PropTypes.instanceOf(Date), // Перевірка на об'єкт Date +}; export default DailyInfo; diff --git a/src/components/DailyInfo/DailyInfo.module.css b/src/components/DailyInfo/DailyInfo.module.css index 189ff91..0b6e30d 100644 --- a/src/components/DailyInfo/DailyInfo.module.css +++ b/src/components/DailyInfo/DailyInfo.module.css @@ -1 +1,5 @@ /*style*/ +.daily-info-container { + margin: 0 32px; + /* border: 1px solid red; */ +} diff --git a/src/pages/HomePage/HomePage.jsx b/src/pages/HomePage/HomePage.jsx index 658edab..55c53ad 100644 --- a/src/pages/HomePage/HomePage.jsx +++ b/src/pages/HomePage/HomePage.jsx @@ -1,5 +1,12 @@ +import DailyInfo from "../../components/DailyInfo/DailyInfo.jsx"; // Тимчасово для розробки + const HomePage = () => { - return <>; + return ( + <> + + {/* Тимчасово для розробки */} + + ); }; export default HomePage; From e761336b42832010ec3855912b6744047bb88c9a Mon Sep 17 00:00:00 2001 From: Oleksii Ozyrskyi Date: Sun, 24 Nov 2024 13:12:45 +0100 Subject: [PATCH 013/185] water form base --- package-lock.json | 171 +++++++++++++++- package.json | 2 + src/App.jsx | 68 +++--- src/components/WaterForm/WaterForm.jsx | 133 +++++++++++- src/components/WaterForm/WaterForm.module.css | 193 +++++++++++++++++- src/redux/auth/slice.js | 2 +- src/redux/water/slice.js | 2 +- 7 files changed, 534 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9f18d8..dc5eba9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,11 @@ "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "clsx": "^2.1.1", + "date-fns": "^4.1.0", "formik": "^2.4.6", "modern-normalize": "^3.0.1", "react": "^18.3.1", + "react-datepicker": "^7.5.0", "react-dom": "^18.3.1", "react-icon": "^1.0.0", "react-icons": "^5.3.0", @@ -553,6 +555,59 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1611,6 +1666,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -3078,7 +3143,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3315,7 +3379,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3354,6 +3417,32 @@ "node": ">=0.10.0" } }, + "node_modules/react-datepicker": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-7.5.0.tgz", + "integrity": "sha512-6MzeamV8cWSOcduwePHfGqY40acuGlS1cG//ePHT6bVbLxWyqngaStenfH03n1wbzOibFggF66kWaBTb1SbTtQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.23", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" + } + }, + "node_modules/react-datepicker/node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -3946,6 +4035,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", @@ -4560,6 +4655,46 @@ "levn": "^0.4.1" } }, + "@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "requires": { + "@floating-ui/utils": "^0.2.8" + } + }, + "@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "requires": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "requires": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + } + }, + "@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "requires": { + "@floating-ui/dom": "^1.0.0" + } + }, + "@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, "@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -5229,6 +5364,11 @@ "is-data-view": "^1.0.1" } }, + "date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==" + }, "debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -6241,8 +6381,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { "version": "1.13.3", @@ -6398,7 +6537,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6429,6 +6567,24 @@ "loose-envify": "^1.1.0" } }, + "react-datepicker": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-7.5.0.tgz", + "integrity": "sha512-6MzeamV8cWSOcduwePHfGqY40acuGlS1cG//ePHT6bVbLxWyqngaStenfH03n1wbzOibFggF66kWaBTb1SbTtQ==", + "requires": { + "@floating-ui/react": "^0.26.23", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "prop-types": "^15.8.1" + }, + "dependencies": { + "date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" + } + } + }, "react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -6826,6 +6982,11 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", diff --git a/package.json b/package.json index bc78999..2b77f3d 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,11 @@ "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "clsx": "^2.1.1", + "date-fns": "^4.1.0", "formik": "^2.4.6", "modern-normalize": "^3.0.1", "react": "^18.3.1", + "react-datepicker": "^7.5.0", "react-dom": "^18.3.1", "react-icon": "^1.0.0", "react-icons": "^5.3.0", diff --git a/src/App.jsx b/src/App.jsx index 34157d3..b2abcab 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,34 +1,46 @@ -import { lazy, Suspense } from "react"; -import { Loader } from "./components/Loader/Loader"; -import { PrivateRoute } from "./components/PrivateRoute/PrivateRoute"; -import { RestrictedRoute } from "./components/RestrictedRoute/RestrictedRoute"; -import { Route, Routes } from "react-router-dom"; +// import { lazy, Suspense } from "react"; +// // import { Loader } from "./components/Loader/Loader"; +// // import { PrivateRoute } from "./components/PrivateRoute/PrivateRoute"; +// // import { RestrictedRoute } from "./components/RestrictedRoute/RestrictedRoute"; +// import { Route, Routes } from "react-router-dom"; -const HomePage = lazy(() => import("./pages/HomePage/HomePage")); -const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); -const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); -const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); +// const HomePage = lazy(() => import("./pages/HomePage/HomePage")); +// const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); +// const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); +// const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); -function App() { +// function App() { +// return ( +// }> +// +// } /> +// } />} +// /> +// } />} +// /> +// } />} +// /> +// +// +// ); +// } + +// export default App; + +import WaterForm from "./components/WaterForm/WaterForm.jsx"; + +const App = () => { return ( - }> - - } /> - } />} - /> - } />} - /> - } />} - /> - - +
+ +
); -} +}; export default App; diff --git a/src/components/WaterForm/WaterForm.jsx b/src/components/WaterForm/WaterForm.jsx index ec1d11d..f496b55 100644 --- a/src/components/WaterForm/WaterForm.jsx +++ b/src/components/WaterForm/WaterForm.jsx @@ -1,5 +1,136 @@ +import { ErrorMessage, Field, Form, Formik } from "formik"; +import * as Yup from "yup"; +import DatePicker from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; +import css from "./WaterForm.module.css"; +import { useState } from "react"; +import { GoPlus } from "react-icons/go"; +import { GoDash } from "react-icons/go"; + +const entriesValidationSchema = Yup.object().shape({ + amountOfWater: Yup.number() + .required("Required") + .min(50, "Amount of water has to be greater than 50ml") + .max(5000, "Amount of water has to be less than 5000ml"), + recordingTime: Yup.date().required("Required"), +}); + const WaterForm = () => { - return <>; + const [amount, setAmount] = useState(50); + + const initialValues = { + amountOfWater: 50, + recordingTime: new Date(), + }; + + const handleSubmit = (values) => { + const formattedTime = values.recordingTime.toISOString().slice(11, 16); + const entries = { + amount: values.amountOfWater, + time: formattedTime, + }; + + console.log("Values:", entries); + // dispatch(addEntries(entries)); + }; + + return ( +
+ + {({ setFieldValue, values }) => { + const handleIncrease = () => { + const newAmount = Math.min(amount + 50, 5000); + setAmount(newAmount); + setFieldValue("amountOfWater", newAmount); + }; + const handleDecrease = () => { + const newAmount = Math.max(amount - 50, 50); + setAmount(newAmount); + setFieldValue("amountOfWater", newAmount); + }; + const handleInputChange = (e) => { + const inputValue = Number(e.target.value); + if (!isNaN(inputValue)) { + setAmount(inputValue); + setFieldValue("amountOfWater", inputValue); + } + }; + + return ( +
+

Add water

+

Choose a value:

+
+

Amount of water:

+
+ +
+ {amount} ml +
+ +
+
+ + + + + + + ); + }} +
+
+ ); }; export default WaterForm; diff --git a/src/components/WaterForm/WaterForm.module.css b/src/components/WaterForm/WaterForm.module.css index 189ff91..85038e4 100644 --- a/src/components/WaterForm/WaterForm.module.css +++ b/src/components/WaterForm/WaterForm.module.css @@ -1 +1,192 @@ -/*style*/ +p { + margin: 0; +} + +.wrapper { + margin: auto; + margin-top: 100px; + border-radius: 15px; + padding: 40px 20px; + width: 343px; + height: 490px; + background-color: lightblue; +} + +.form { + display: flex; + flex-direction: column; +} + +.addWater { + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 20px; + color: #323f47; + margin-bottom: 24px; +} + +.chooseAValue { + font-weight: 700; + font-size: 16px; + line-height: 125%; + letter-spacing: -0.01em; + color: #323f47; + margin-bottom: 20px; +} + +.amountParagraph { + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + color: #2f2f2f; + margin-bottom: 8px; +} + +.inputWrapper { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 14px; +} + +.valueDisplay { + border-radius: 30px; + width: 81px; + height: 40px; + background: #323f47; + font-weight: 700; + font-size: 14px; + line-height: 129%; + color: #fff; + text-align: center; +} + +.valueDisplay > span { + display: block; + padding: 10px; +} + +.ctrlBtn { + border-radius: 30px; + border: 1.5px solid #323f47; + background-color: inherit; + width: 40px; + height: 40px; +} + +.btnIcon { + width: 25px; + height: 25px; +} + +.recordingTime { + font-size: 16px; + line-height: 150%; + letter-spacing: -0.01em; + color: #2f2f2f; + margin-bottom: 8px; +} + +.field { + border: 1px solid rgba(47, 47, 47, 0.15); + border-radius: 15px; + width: 318px; + padding-left: 20px; + height: 56px; + margin-bottom: 24px; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.enterValue { + font-weight: 700; + font-size: 18px; + line-height: 133%; + letter-spacing: -0.01em; + color: #323f47; + margin-bottom: 8px; +} + +.amountOfWaterField { + border: 1px solid rgba(47, 47, 47, 0.15); + border-radius: 15px; + padding-left: 20px; + width: 318px; + height: 56px; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.submitBtn { + cursor: pointer; + border: none; + font-weight: 700; + font-size: 16px; + line-height: 150%; + letter-spacing: -0.01em; + text-align: center; + color: #323f47; + border-radius: 30px; + padding: 18px 50px; + width: 141px; + height: 60px; + margin-top: 24px; + background: #9be1a0; + transition: all 700ms cubic-bezier(0.42, 0, 0.61, 0.97) 0s; +} + +.submitBtn:hover { + background: #87d28d; +} + +@media screen and (min-width: 768px) { + .wrapper { + padding: 40px; + width: 438px; + height: 475px; + background-color: lightblue; + } + + .addWater { + font-size: 28px; + line-height: 114%; + } + + .chooseAValue { + font-size: 18px; + line-height: 133%; + } + + .amountParagraph { + font-size: 16px; + line-height: 150%; + } + + .valueDisplay { + width: 86px; + height: 43px; + font-size: 15px; + } + + .ctrlBtn { + width: 43px; + height: 43px; + } + + .btnIcon { + width: 28px; + height: 28px; + } + .amountOfWaterField, + .field { + width: 410px; + font-size: 16px; + line-height: 150%; + letter-spacing: -0.01em; + color: #2f2f2f; + } +} diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 26e1494..f9b0169 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -6,7 +6,7 @@ const authSlice = createSlice({ name: "auth", initialState: INITIAL_STATE, reducers: {}, - extraReducers: {}, + // extraReducers: {}, }); export const authReducer = authSlice.reducer; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 17ab777..ed9d85b 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -6,7 +6,7 @@ const waterSlice = createSlice({ name: "water", initialState: INITIAL_STATE, reducers: {}, - extraReducers: {}, + // extraReducers: {}, }); export const waterReducer = waterSlice.reducer; From fef12bee6e884ecca911365be047273c92c85b65 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sun, 24 Nov 2024 21:42:56 +0200 Subject: [PATCH 014/185] mobile signin --- .../RestrictedRoute/RestrictedRoute.jsx | 4 +- src/components/SignInForm/SignInForm.jsx | 90 +++++++++++- .../SignInForm/SignInForm.module.css | 132 +++++++++++++++++- src/index.css | 35 ++++- src/pages/SignInPage/SignInPage.jsx | 4 +- src/redux/auth/slice.js | 13 +- 6 files changed, 265 insertions(+), 13 deletions(-) diff --git a/src/components/RestrictedRoute/RestrictedRoute.jsx b/src/components/RestrictedRoute/RestrictedRoute.jsx index 4af96d9..1f047eb 100644 --- a/src/components/RestrictedRoute/RestrictedRoute.jsx +++ b/src/components/RestrictedRoute/RestrictedRoute.jsx @@ -1,5 +1,5 @@ -const RestrictedRoute = () => { - return; +const RestrictedRoute = ({ component }) => { + return component; }; export default RestrictedRoute; diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index ca95924..55977ae 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -1,5 +1,93 @@ +import { ErrorMessage, Field, Form, Formik } from "formik"; +import * as Yup from "yup"; +import css from "./SignInForm.module.css"; +import clsx from "clsx"; +import { NavLink } from "react-router-dom"; + +const LoginValidationSchema = Yup.object({ + email: Yup.string().email("Incorrect email").required("Email is required"), + password: Yup.string() + .required("Password is required") + .min(8, "Must be at least 8 characters") + .max(50, "Must be less than 50 characters"), +}); + const SignInForm = () => { - return <>; + const initialValue = { + email: "", + password: "", + }; + + function handleSubmit(name, password) { + console.log(name, password); + } + + return ( +
+
+

AquaTrack

+

Sign In

+ + {({ touched, errors }) => ( +
+
+ + + +
+ +
+ + + +
+ +

+ Don't have an account?{" "} + + Sign Up + +

+
+ )} +
+
+
+ ); }; export default SignInForm; diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 189ff91..9b7529c 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -1 +1,131 @@ -/*style*/ +.signInSection { + padding: 16px; + margin: 0 auto; + max-width: 320px; + background-color: #ffffff; +} + +.container { + padding-top: 24px; + padding-right: 16px; + padding-left: 16px; + padding-bottom: 216px; + border-radius: 30px; + background-color: #f0eff4; +} + +.title { + font-size: 18px; + line-height: 111%; + letter-spacing: -0.01em; + text-transform: uppercase; + margin-bottom: 172px; +} + +.signInTitle { + font-weight: 700; + font-size: 32px; + line-height: 100%; + letter-spacing: -0.01em; + margin-bottom: 32px; +} + +.form { + display: flex; + flex-direction: column; +} + +.label { + margin-bottom: 8px; + font-weight: 700; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; +} + +.emailContainer { + display: flex; + flex-direction: column; + margin-bottom: 16px; +} + +.inputForm { + padding-top: 16px; + padding-bottom: 16px; + padding-left: 16px; + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + border: 1px solid rgba(47, 47, 47, 0.2); + border-radius: 15px; + margin-bottom: 10px; + max-width: 311px; +} + +.inputFormError { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + border-color: #ef5050; + color: #ef5050; +} + +.inputForm:focus { + outline: none; + border-color: rgba(47, 47, 47, 0.4); +} + +.passwordContainer { + display: flex; + flex-direction: column; + margin-bottom: 32px; +} + +.submitBtn { + font-weight: 700; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + text-align: center; + padding-top: 16px; + padding-bottom: 16px; + background-color: #9be1a0; + border: none; + border-radius: 30px; + margin-bottom: 16px; + max-width: 311px; + transition: color 250ms linear, background-color 250ms linear; +} + +.submitBtn:hover, +.submitBtn:focus { + cursor: pointer; + color: #323f47; + background-color: #87d28d; +} + +.error { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + color: #ef5050; +} + +.desc { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + text-align: center; + color: rgba(47, 47, 47, 0.5); +} + +.signup { + font-weight: 700; + text-decoration: underline; + text-decoration-skip-ink: none; + color: #2f2f2f; +} diff --git a/src/index.css b/src/index.css index c6bb6c4..3a80bed 100644 --- a/src/index.css +++ b/src/index.css @@ -1,13 +1,36 @@ /* Color Variables */ :root { - --accent: #9BE1A0; - --text-primary-dark: #2F2F2F; - --text-primary-light: #FFFFFF; - --background-primary-dark: #323F47; - --background-primary-light: #FFFFFF; - --background-secondary-light: #F0EFF4; + --accent: #9be1a0; + --text-primary-dark: #2f2f2f; + --text-primary-light: #ffffff; + --background-primary-dark: #323f47; + --background-primary-light: #ffffff; + --background-secondary-light: #f0eff4; margin: 0; font-weight: 400; font-family: Popplin, system-ui, Avenir, Helvetica, Arial, sans-serif; } + +h1, +h2, +h3, +h4, +h5, +h6, +p { + margin-top: 0; + margin-bottom: 0; +} + +ul, +ol { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} + +a { + text-decoration: none; +} diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 7ad8811..129b0b8 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -1,5 +1,7 @@ +import SignInForm from "../../components/SignInForm/SignInForm"; + const SignInPage = () => { - return <>; + return ; }; export default SignInPage; diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 3a4b174..04b4696 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -1,12 +1,21 @@ import { createSlice } from "@reduxjs/toolkit"; -const INITIAL_STATE = {}; +const INITIAL_STATE = { + user: { + name: "", + email: "", + }, + token: null, + isLoggedIn: false, + isRefreshing: false, + error: null, +}; const authSlice = createSlice({ name: "auth", initialState: INITIAL_STATE, reducers: {}, - // extraReducers: {}, // II777: deprecated syntax was breaking the build + // extraReducers: {}, // II777: deprecated syntax was breaking the build }); export const authReducer = authSlice.reducer; From c584c5360d13037c6871bc6d4806eefe57f4d795 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sun, 24 Nov 2024 22:58:57 +0200 Subject: [PATCH 015/185] add components with static data --- src/components/PrivateRoute/PrivateRoute.jsx | 4 +- .../WaterDailyNorma/WaterDailyNorma.jsx | 11 +++- .../WaterDailyNorma.module.css | 50 ++++++++++++++- .../WaterMainInfo/WaterMainInfo.jsx | 37 ++++++------ .../WaterMainInfo/WaterMainInfo.module.css | 40 +++++++++++- .../WaterProgressBar/WaterProgressBar.jsx | 16 ++++- .../WaterProgressBar.module.css | 57 +++++++++++++++++- src/img/water-main-info/bottle-desktop.png | Bin 0 -> 58117 bytes src/img/water-main-info/bottle-desktop@2x.png | Bin 0 -> 208857 bytes src/img/water-main-info/bottle-mob.png | Bin 0 -> 20719 bytes src/img/water-main-info/bottle-mob@2x.png | Bin 0 -> 71632 bytes src/img/water-main-info/bottle-tablet.png | Bin 0 -> 37264 bytes src/img/water-main-info/bottle-tablet@2x.png | Bin 0 -> 136708 bytes src/pages/HomePage/HomePage.jsx | 2 +- src/pages/TrackerPage/TrackerPage.jsx | 8 ++- 15 files changed, 197 insertions(+), 28 deletions(-) create mode 100644 src/img/water-main-info/bottle-desktop.png create mode 100644 src/img/water-main-info/bottle-desktop@2x.png create mode 100644 src/img/water-main-info/bottle-mob.png create mode 100644 src/img/water-main-info/bottle-mob@2x.png create mode 100644 src/img/water-main-info/bottle-tablet.png create mode 100644 src/img/water-main-info/bottle-tablet@2x.png diff --git a/src/components/PrivateRoute/PrivateRoute.jsx b/src/components/PrivateRoute/PrivateRoute.jsx index 1881354..4b3839e 100644 --- a/src/components/PrivateRoute/PrivateRoute.jsx +++ b/src/components/PrivateRoute/PrivateRoute.jsx @@ -1,5 +1,5 @@ -const PrivateRoute = () => { - return; +const PrivateRoute = ({ component }) => { + return component; }; export default PrivateRoute; diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index 593d5b3..a1c1c37 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -1,5 +1,14 @@ +import css from "./WaterDailyNorma.module.css"; + const WaterDailyNorma = () => { - return <>; + return ( + <> +
+

1.5 L

+

My daily norma

+
+ + ); }; export default WaterDailyNorma; diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.module.css b/src/components/WaterDailyNorma/WaterDailyNorma.module.css index 189ff91..6e06e8a 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.module.css +++ b/src/components/WaterDailyNorma/WaterDailyNorma.module.css @@ -1 +1,49 @@ -/*style*/ +.container { + position: absolute; + margin-left: 16px; + margin-top: 122px; + border-radius: 15px; + padding: 12px; + max-width: 102px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + background-color: #ffffff; +} + +.litres { + margin: 0; + margin-bottom: 6px; + font-weight: 700; + font-size: 14px; + line-height: 100%; +} + +.text { + margin: 0; + font-weight: 400; + font-size: 10px; + line-height: 100%; + color: rgba(47, 47, 47, 0.6); +} + +@media only screen and (min-width: 768px) { + .container { + margin-left: 32px; + margin-top: 157px; + padding: 14px 18px; + max-width: 129px; + } + + .litres { + font-size: 15px; + line-height: 149%; + margin-bottom: 6px; + } + + .text { + font-size: 12px; + line-height: 187%; + } +} + +@media only screen and (min-width: 1440px) { +} diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 7e0724c..8b19eac 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -1,28 +1,31 @@ import css from "./WaterMainInfo.module.css"; +import bottleDesktop from "../../img/water-main-info/bottle-desktop.png"; +import bottleDesktop2x from "../../img/water-main-info/bottle-desktop@2x.png"; +import bottleTablet from "../../img/water-main-info/bottle-tablet.png"; +import bottleTablet2x from "../../img/water-main-info/bottle-tablet@2x.png"; +import bottleMob from "../../img/water-main-info/bottle-mob.png"; +import bottleMob2x from "../../img/water-main-info/bottle-mob@2x.png"; +import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; +import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; + const WaterMainInfo = () => { return ( <> + {/* */}

aquatrack

- - - - + +
+ Bottle with water - First project - +
); diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index c0117f7..477b21e 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -1,8 +1,7 @@ .container { + position: relative; border-radius: 30px; - color: #9be1a0; - /* width: 343px; -height: 415px; */ + background-color: #9be1a0; } .title { @@ -12,4 +11,39 @@ height: 415px; */ letter-spacing: -0.01em; text-transform: uppercase; text-align: center; + padding-left: 16px; + padding-top: 24px; + width: 114px; + margin: 0; +} + +.bottleContainer { + display: flex; + justify-content: center; +} + +.bottle { + max-width: 100%; + height: auto; +} + +@media only screen and (min-width: 768px) { + .title { + width: 155px; + font-size: 24px; + line-height: 100%; + padding-left: 32px; + padding-top: 32px; + } +} + +@media only screen and (min-width: 1440px) { + .container { + max-width: 672px; + height: 736px; + } + + .bottleContainer { + padding: 0; + } } diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index a9b0b8f..e273f98 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -1,5 +1,19 @@ +import css from "./WaterProgressBar.module.css"; + const WaterProgressBar = () => { - return <>; + return ( + <> +
+

Today

+ ------------------------ +
+

0%

+

50%

+

100%

+
+
+ + ); }; export default WaterProgressBar; diff --git a/src/components/WaterProgressBar/WaterProgressBar.module.css b/src/components/WaterProgressBar/WaterProgressBar.module.css index 189ff91..92779d3 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.module.css +++ b/src/components/WaterProgressBar/WaterProgressBar.module.css @@ -1 +1,56 @@ -/*style*/ +.container { + position: absolute; + margin-top: 225px; + left: 50%; + transform: translateX(-50%); + min-width: 198px; + border-radius: 15px; + padding: 12px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + background-color: #ffffff; +} + +.today { + margin: 0; + font-weight: 700; + font-size: 14px; + line-height: 100%; +} + +.percents { + display: flex; + justify-content: space-between; + font-weight: 400; + font-size: 10px; + line-height: 100%; + color: rgba(47, 47, 47, 0.6); + align-items: center; +} + +.percent { + margin: 0; +} + +@media only screen and (min-width: 768px) { + .container { + margin-top: 332px; + min-width: 295px; + padding: 20px; + } + + .today { + font-size: 15px; + line-height: 149%; + } + + .percents { + font-size: 12px; + line-height: 187%; + } +} + +@media only screen and (min-width: 1440px) { + .container { + margin-top: 450px; + } +} diff --git a/src/img/water-main-info/bottle-desktop.png b/src/img/water-main-info/bottle-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a8834449ac363fb789c79beaac0f8b4343da29 GIT binary patch literal 58117 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°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�VcAb`t19~X=@@&E8) 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�CYhr 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 JPDHLkV1k+U$AAC; literal 0 HcmV?d00001 diff --git a/src/img/water-main-info/bottle-mob.png b/src/img/water-main-info/bottle-mob.png new file mode 100644 index 0000000000000000000000000000000000000000..47087767dd5093fa0959ffc7b7c477a915263232 GIT binary patch literal 20719 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

Itp^zu{4kN(Y) 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 literal 0 HcmV?d00001 diff --git a/src/img/water-main-info/bottle-tablet.png b/src/img/water-main-info/bottle-tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..7e01f9011be0b5b2513aa96853741ba7f00e30cc GIT binary patch literal 37264 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�@n9sumt~A;=9^#_w8uGe|h-B>&l7dJAi; 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 literal 0 HcmV?d00001 diff --git a/src/img/water-main-info/bottle-tablet@2x.png b/src/img/water-main-info/bottle-tablet@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bd668f2b1b0a44f46f6f8fa98d5d81a6ac9e0f76 GIT binary patch literal 136708 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 literal 0 HcmV?d00001 diff --git a/src/pages/HomePage/HomePage.jsx b/src/pages/HomePage/HomePage.jsx index 658edab..6cc2cbd 100644 --- a/src/pages/HomePage/HomePage.jsx +++ b/src/pages/HomePage/HomePage.jsx @@ -1,5 +1,5 @@ const HomePage = () => { - return <>; + return <> ; }; export default HomePage; diff --git a/src/pages/TrackerPage/TrackerPage.jsx b/src/pages/TrackerPage/TrackerPage.jsx index 57e1d52..83ac220 100644 --- a/src/pages/TrackerPage/TrackerPage.jsx +++ b/src/pages/TrackerPage/TrackerPage.jsx @@ -1,5 +1,11 @@ +import WaterMainInfo from "../../components/WaterMainInfo/WaterMainInfo.jsx"; + const TrackerPage = () => { - return <>; + return ( + <> + + + ); }; export default TrackerPage; From 8273924169b3526c2e2409cea2ff40f13c92877b Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:56:46 +0200 Subject: [PATCH 016/185] tablet and show password --- package-lock.json | 86 +++++++++++++- package.json | 1 + src/App.jsx | 36 +++--- src/components/SignInForm/SignInForm.jsx | 50 ++++++-- .../SignInForm/SignInForm.module.css | 110 +++++++++++++++++- 5 files changed, 248 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9f18d8..4ee28de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-redux": "^9.1.2", + "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", @@ -1544,6 +1545,12 @@ "node": ">=4" } }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", + "license": "BSD" + }, "node_modules/css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -2467,6 +2474,12 @@ "react-is": "^16.7.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3000,6 +3013,15 @@ "loose-envify": "cli.js" } }, + "node_modules/matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "license": "MIT", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3078,7 +3100,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3315,7 +3336,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3442,6 +3462,24 @@ } } }, + "node_modules/react-responsive": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.0.tgz", + "integrity": "sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-router": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", @@ -3704,6 +3742,12 @@ "node": ">= 0.4" } }, + "node_modules/shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==", + "license": "MIT" + }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -5181,6 +5225,11 @@ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" + }, "css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -5833,6 +5882,11 @@ "react-is": "^16.7.0" } }, + "hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" + }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -6194,6 +6248,14 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "requires": { + "css-mediaquery": "^0.1.2" + } + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6241,8 +6303,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { "version": "1.13.3", @@ -6398,7 +6459,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6485,6 +6545,17 @@ "use-sync-external-store": "^1.0.0" } }, + "react-responsive": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.0.tgz", + "integrity": "sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==", + "requires": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + } + }, "react-router": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", @@ -6666,6 +6737,11 @@ "has-property-descriptors": "^1.0.2" } }, + "shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==" + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", diff --git a/package.json b/package.json index bc78999..6196665 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-redux": "^9.1.2", + "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", diff --git a/src/App.jsx b/src/App.jsx index 9a922f9..44b83ed 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,23 +11,25 @@ const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); function App() { return ( - }> - - } /> - } />} - /> - } />} - /> - } />} - /> - - +
    + }> + + } /> + } />} + /> + } />} + /> + } />} + /> + + +
    ); } diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 55977ae..d8b7864 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -3,6 +3,8 @@ import * as Yup from "yup"; import css from "./SignInForm.module.css"; import clsx from "clsx"; import { NavLink } from "react-router-dom"; +import { useMediaQuery } from "react-responsive"; +import { useState } from "react"; const LoginValidationSchema = Yup.object({ email: Yup.string().email("Incorrect email").required("Email is required"), @@ -13,11 +15,18 @@ const LoginValidationSchema = Yup.object({ }); const SignInForm = () => { + const isTabletAndDesktop = useMediaQuery({ minWidth: 768 }); + const [openEye, setOpenEye] = useState(false); + const initialValue = { email: "", password: "", }; + function handleOpenEye() { + return setOpenEye(!openEye); + } + function handleSubmit(name, password) { console.log(name, password); } @@ -59,7 +68,7 @@ const SignInForm = () => { Password { [css.inputFormError]: touched.password && errors.password, })} /> + {isTabletAndDesktop && ( + + )} - -

    - Don't have an account?{" "} - - Sign Up - -

    +
    + +

    + Don't have an account?{" "} + + Sign Up + +

    +
    )} diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 9b7529c..9a0b9d1 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -59,7 +59,6 @@ letter-spacing: -0.01em; border: 1px solid rgba(47, 47, 47, 0.2); border-radius: 15px; - margin-bottom: 10px; max-width: 311px; } @@ -95,10 +94,14 @@ border: none; border-radius: 30px; margin-bottom: 16px; - max-width: 311px; + min-width: 288px; transition: color 250ms linear, background-color 250ms linear; } +.btnDescContainer { + max-width: 311px; +} + .submitBtn:hover, .submitBtn:focus { cursor: pointer; @@ -129,3 +132,106 @@ text-decoration-skip-ink: none; color: #2f2f2f; } + +@media only screen and (min-width: 768px) { + .signInSection { + padding: 32px; + margin: 0 auto; + max-width: 768px; + background-color: #ffffff; + } + + .container { + padding-top: 32px; + padding-right: 32px; + padding-left: 32px; + padding-bottom: 281px; + background-color: #f0eff4; + } + + .title { + font-size: 24px; + line-height: 100%; + margin-bottom: 225px; + } + + .signInTitle { + font-size: 36px; + line-height: 106%; + margin-left: 102px; + } + + .form { + margin-left: 102px; + } + + .label { + font-size: 16px; + line-height: 150%; + } + + .inputForm { + font-size: 16px; + line-height: 150%; + min-width: 416px; + } + + .emailContainer { + max-width: 436px; + margin-bottom: 20px; + } + + .passwordContainer { + position: relative; + max-width: 436px; + } + + .error { + font-size: 16px; + line-height: 150%; + color: #ef5050; + } + + .errorPass { + position: absolute; + bottom: -20px; + left: 0; + } + + .submitBtn { + font-size: 16px; + line-height: 150%; + padding-top: 18px; + padding-bottom: 18px; + min-width: 436px; + } + + .desc { + font-size: 16px; + line-height: 150%; + text-align: center; + } + + .btnDescContainer { + max-width: 436px; + } + + .closeEyeBtn { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + background-color: transparent; + border: none; + top: 50%; + right: 18px; + transform: translateY(25%); + fill: none; + stroke: #2f2f2f; + } + + .inputFormError { + font-size: 16px; + line-height: 150%; + } +} From 6b58bf02b3077e3b74c1a4b6a6c2981499680820 Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Mon, 25 Nov 2024 15:40:07 +0200 Subject: [PATCH 017/185] add mobile sign up form --- .../RestrictedRoute/RestrictedRoute.jsx | 4 +- src/components/SignUpForm/SignUpForm.jsx | 109 +++++++++++++++++- .../SignUpForm/SignUpForm.module.css | 87 +++++++++++++- src/pages/SignUpPage/SignUpPage.jsx | 8 +- 4 files changed, 203 insertions(+), 5 deletions(-) diff --git a/src/components/RestrictedRoute/RestrictedRoute.jsx b/src/components/RestrictedRoute/RestrictedRoute.jsx index 4af96d9..1f047eb 100644 --- a/src/components/RestrictedRoute/RestrictedRoute.jsx +++ b/src/components/RestrictedRoute/RestrictedRoute.jsx @@ -1,5 +1,5 @@ -const RestrictedRoute = () => { - return; +const RestrictedRoute = ({ component }) => { + return component; }; export default RestrictedRoute; diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index 61e61b8..bdafb7d 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -1,5 +1,112 @@ +import { ErrorMessage, Field, Form, Formik } from "formik"; +import css from "./SignUpForm.module.css"; +import * as Yup from "yup"; +import clsx from "clsx"; + const SignUpForm = () => { - return <>; + const SignUpValidationSchema = Yup.object().shape({ + emailSignUp: Yup.string() + .email("Invalid email address") + .required("Email is required"), + passwordSignUp: Yup.string() + .min(6, "Password must be at least 6 characters") + .required("Password is required"), + repeatPassword: Yup.string() + .oneOf([Yup.ref("passwordSignUp")], "Passwords must match") + .required("Please confirm your password"), + }); + + const initialValues = { + emailSignUp: "", + passwordSignUp: "", + repeatPassword: "", + }; + const handleSubmit = (values, actions) => { + console.log(values); + actions.resetForm(); + }; + return ( + <> +

    SignUp

    + + {({ errors, touched }) => ( +
    +
    + + + +
    +
    + + + +
    + +
    + + + +
    + + +
    + )} +
    + + ); }; export default SignUpForm; diff --git a/src/components/SignUpForm/SignUpForm.module.css b/src/components/SignUpForm/SignUpForm.module.css index 189ff91..7f22da5 100644 --- a/src/components/SignUpForm/SignUpForm.module.css +++ b/src/components/SignUpForm/SignUpForm.module.css @@ -1 +1,86 @@ -/*style*/ +.title { + text-align: center; + margin-bottom: 32px; + font-weight: 700; + font-size: 32px; + line-height: 1; + letter-spacing: -0.01em; + color: #323f47; +} +.form { + max-width: 311px; + /* width: 311px; */ + margin: 0 auto; +} +.fieldWrap { + display: flex; + flex-direction: column; + margin-bottom: 16px; +} +.fieldWrap:last-of-type { + margin-bottom: 32px; +} +.label { + margin-bottom: 8px; + font-weight: 700; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: #2f2f2f; +} +.input { + /* margin-bottom: 16px; */ + border: 1px solid rgba(47, 47, 47, 0.2); + border-radius: 15px; + padding: 16px; + outline: none; + font-weight: 400; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: #2f2f2f; + + /* height: 50px; */ +} +.input:focus { + border: 1px solid rgba(47, 47, 47, 0.4); +} + +.inputError { + border-color: #ef5050; + color: #ef5050; +} + +.input::placeholder { + font-weight: 400; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: rgba(47, 47, 47, 0.6); +} +.errorMsg { + font-weight: 400; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: #ef5050; +} +.btn { + border-radius: 30px; + border: none; + padding: 16px; + font-weight: 700; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: #323f47; + background-color: #9be1a0; + transition: background-color 250ms linear; + cursor: pointer; + width: 311px; +} + +.btn:hover, +.btn:focus { + background-color: #87d28d; +} diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index 8d47fc9..63ec4cf 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -1,5 +1,11 @@ +import SignUpForm from "../../components/SignUpForm/SignUpForm"; + const SignUpPage = () => { - return <>; + return ( + <> + + + ); }; export default SignUpPage; From 95224351c2997e9001a975e7d50bbc55eb89d26e Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 25 Nov 2024 17:32:56 +0200 Subject: [PATCH 018/185] waterMainInfo with static data --- src/components/AddWaterBtn/AddWaterBtn.jsx | 45 ++++++++++++++++++- .../AddWaterBtn/AddWaterBtn.module.css | 45 ++++++++++++++++++- .../WaterDailyNorma/WaterDailyNorma.jsx | 2 + .../WaterMainInfo/WaterMainInfo.jsx | 3 +- .../WaterMainInfo/WaterMainInfo.module.css | 12 +++-- .../WaterProgressBar/WaterProgressBar.jsx | 24 ++++++++-- .../WaterProgressBar.module.css | 25 ++++++++--- 7 files changed, 140 insertions(+), 16 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 33e5bcf..9c2d315 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -1,5 +1,48 @@ +import { useState } from "react"; +import css from "./AddWaterBtn.module.css"; + const AddWaterBtn = () => { - return <>; + const [, setIsModalOpen] = useState(false); + + const openModal = () => { + setIsModalOpen(true); + }; + + // const closeModal = () => { + // setIsModalOpen(false); + // }; + + return ( + <> + + {/* {isModalOpen && } */} + + ); }; export default AddWaterBtn; diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css index 189ff91..09eacdb 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.module.css +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -1 +1,44 @@ -/*style*/ +.addBtn { + position: absolute; + cursor: pointer; + font-weight: 700; + font-size: 14px; + line-height: 129%; + letter-spacing: 0.01em; + text-align: center; + background-color: #323f47; + min-width: 140px; + border-radius: 30px; + padding: 14px 20px; + right: 16px; + bottom: 32px; + color: #ffffff; + transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1); + border: none; + display: flex; + align-items: center; + justify-content: center; + gap: 10px; +} + +.addBtn:hover { + color: #9be1a0; +} + +.icon { + transition: fill 250ms cubic-bezier(0.4, 0, 0.2, 1), + stroke 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.addBtn:hover .icon { + fill: #9be1a0; + stroke: #9be1a0; +} + +@media only screen and (min-width: 768px) { + .addBtn { + min-width: 178px; + padding: 18px 30px; + right: 32px; + bottom: 64px; + } +} diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index a1c1c37..d5f6bfe 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -1,10 +1,12 @@ import css from "./WaterDailyNorma.module.css"; const WaterDailyNorma = () => { + // const dailyNorma = useSelector() return ( <>

    1.5 L

    + {/* {formatVolume(dailyNorma)} */}

    My daily norma

    diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 8b19eac..296c392 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -8,11 +8,11 @@ import bottleMob from "../../img/water-main-info/bottle-mob.png"; import bottleMob2x from "../../img/water-main-info/bottle-mob@2x.png"; import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; +import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; const WaterMainInfo = () => { return ( <> - {/* */}

    aquatrack

    @@ -26,6 +26,7 @@ const WaterMainInfo = () => { sizes="(min-width: 1440px) 1440px, (min-width: 768px) 768px, 100vw" />
    + ); diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 477b21e..9149db4 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -13,8 +13,8 @@ text-align: center; padding-left: 16px; padding-top: 24px; - width: 114px; - margin: 0; + max-width: 114px; + margin-bottom: 6px; } .bottleContainer { @@ -34,16 +34,20 @@ line-height: 100%; padding-left: 32px; padding-top: 32px; + margin-bottom: 13px; } } @media only screen and (min-width: 1440px) { .container { max-width: 672px; - height: 736px; + /* height: 736px; */ + } + .title { + margin-bottom: 36px; } .bottleContainer { - padding: 0; + padding-bottom: 40px; } } diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index e273f98..89914fa 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -1,15 +1,31 @@ +// import { useSelector } from "react-redux"; import css from "./WaterProgressBar.module.css"; const WaterProgressBar = () => { + // const { currentAmount, dailyGoal, history } = useSelector(selectWater); + + // export const formatVolume = (ml) => { + // return `${(ml / 1000).toFixed(1)} L`; + // }; + // const waterPercentage = Math.round((currentAmount / dailyGoal) * 100); + return ( <>

    Today

    - ------------------------ + + {/* {formatVolume(currentAmount)} / {formatVolume(dailyGoal)} */} + +
    +
    +
    -

    0%

    -

    50%

    -

    100%

    + 0% + 50% + 100%
    diff --git a/src/components/WaterProgressBar/WaterProgressBar.module.css b/src/components/WaterProgressBar/WaterProgressBar.module.css index 92779d3..69a348d 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.module.css +++ b/src/components/WaterProgressBar/WaterProgressBar.module.css @@ -1,6 +1,6 @@ .container { position: absolute; - margin-top: 225px; + margin-top: 235px; left: 50%; transform: translateX(-50%); min-width: 198px; @@ -11,10 +11,10 @@ } .today { - margin: 0; font-weight: 700; font-size: 14px; line-height: 100%; + margin-bottom: 8px; } .percents { @@ -27,8 +27,23 @@ align-items: center; } -.percent { - margin: 0; +.progressBarContainer { + position: relative; + width: 100%; + height: 0.5rem; + background-color: #e5e7eb; + border-radius: 9999px; + margin-bottom: 8px; +} + +.progressBar { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #4ade80; + border-radius: 9999px; + transition: width 0.3s ease-out; } @media only screen and (min-width: 768px) { @@ -51,6 +66,6 @@ @media only screen and (min-width: 1440px) { .container { - margin-top: 450px; + margin-top: 358px; } } From 4eb593aa557a775ebb5e0c96af9567a8bb4a7d01 Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Mon, 25 Nov 2024 19:05:39 +0200 Subject: [PATCH 019/185] save --- src/components/ChooseDate/ChooseDate.jsx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/components/ChooseDate/ChooseDate.jsx b/src/components/ChooseDate/ChooseDate.jsx index d036e1f..88b7ca6 100644 --- a/src/components/ChooseDate/ChooseDate.jsx +++ b/src/components/ChooseDate/ChooseDate.jsx @@ -1,16 +1,26 @@ import css from "./ChooseDate.module.css"; import PropTypes from "prop-types"; -const ChooseDate = ({ date = new Date() }) => { +const ChooseDate = ({ date = Date.now() }) => { + const chooseDate = new Date(date); // Створюємо об'єкт Date + + // Форматуємо дату в потрібний формат + const year = chooseDate.getFullYear(); + const month = String(chooseDate.getMonth() + 1).padStart(2, "0"); // Місяці з 0 + const day = String(chooseDate.getDate()).padStart(2, "0"); + const hours = String(chooseDate.getHours()).padStart(2, "0"); + const minutes = String(chooseDate.getMinutes()).padStart(2, "0"); + const seconds = String(chooseDate.getSeconds()).padStart(2, "0"); + + const formattedDate = `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`; + console.log(formattedDate); // Наприклад: 2024-11-25T05:47:28 return ( <>

    {text(date)}

    ); }; -ChooseDate.propTypes = { - date: PropTypes.instanceOf(Date), // Перевірка на об'єкт Date -}; + export default ChooseDate; const dayParse = (chooseDay) => { From 83dd68cabcd3c4862b4bc53a53a551d408675912 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Sun, 24 Nov 2024 02:16:45 +0100 Subject: [PATCH 020/185] Create sprite.svg --- src/icons/sprite.svg | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/icons/sprite.svg diff --git a/src/icons/sprite.svg b/src/icons/sprite.svg new file mode 100644 index 0000000..4ef34b5 --- /dev/null +++ b/src/icons/sprite.svg @@ -0,0 +1,47 @@ + \ No newline at end of file From b6be6e5e792915e8072972f25f715fbd2cfc8aea Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sun, 24 Nov 2024 21:42:56 +0200 Subject: [PATCH 021/185] mobile signin --- src/components/SignInForm/SignInForm.jsx | 90 +++++++++++- .../SignInForm/SignInForm.module.css | 132 +++++++++++++++++- src/index.css | 35 ++++- src/pages/SignInPage/SignInPage.jsx | 4 +- src/redux/auth/slice.js | 13 +- 5 files changed, 263 insertions(+), 11 deletions(-) diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index ca95924..55977ae 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -1,5 +1,93 @@ +import { ErrorMessage, Field, Form, Formik } from "formik"; +import * as Yup from "yup"; +import css from "./SignInForm.module.css"; +import clsx from "clsx"; +import { NavLink } from "react-router-dom"; + +const LoginValidationSchema = Yup.object({ + email: Yup.string().email("Incorrect email").required("Email is required"), + password: Yup.string() + .required("Password is required") + .min(8, "Must be at least 8 characters") + .max(50, "Must be less than 50 characters"), +}); + const SignInForm = () => { - return <>; + const initialValue = { + email: "", + password: "", + }; + + function handleSubmit(name, password) { + console.log(name, password); + } + + return ( +
    +
    +

    AquaTrack

    +

    Sign In

    + + {({ touched, errors }) => ( +
    +
    + + + +
    + +
    + + + +
    + +

    + Don't have an account?{" "} + + Sign Up + +

    +
    + )} +
    +
    +
    + ); }; export default SignInForm; diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 189ff91..9b7529c 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -1 +1,131 @@ -/*style*/ +.signInSection { + padding: 16px; + margin: 0 auto; + max-width: 320px; + background-color: #ffffff; +} + +.container { + padding-top: 24px; + padding-right: 16px; + padding-left: 16px; + padding-bottom: 216px; + border-radius: 30px; + background-color: #f0eff4; +} + +.title { + font-size: 18px; + line-height: 111%; + letter-spacing: -0.01em; + text-transform: uppercase; + margin-bottom: 172px; +} + +.signInTitle { + font-weight: 700; + font-size: 32px; + line-height: 100%; + letter-spacing: -0.01em; + margin-bottom: 32px; +} + +.form { + display: flex; + flex-direction: column; +} + +.label { + margin-bottom: 8px; + font-weight: 700; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; +} + +.emailContainer { + display: flex; + flex-direction: column; + margin-bottom: 16px; +} + +.inputForm { + padding-top: 16px; + padding-bottom: 16px; + padding-left: 16px; + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + border: 1px solid rgba(47, 47, 47, 0.2); + border-radius: 15px; + margin-bottom: 10px; + max-width: 311px; +} + +.inputFormError { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + border-color: #ef5050; + color: #ef5050; +} + +.inputForm:focus { + outline: none; + border-color: rgba(47, 47, 47, 0.4); +} + +.passwordContainer { + display: flex; + flex-direction: column; + margin-bottom: 32px; +} + +.submitBtn { + font-weight: 700; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + text-align: center; + padding-top: 16px; + padding-bottom: 16px; + background-color: #9be1a0; + border: none; + border-radius: 30px; + margin-bottom: 16px; + max-width: 311px; + transition: color 250ms linear, background-color 250ms linear; +} + +.submitBtn:hover, +.submitBtn:focus { + cursor: pointer; + color: #323f47; + background-color: #87d28d; +} + +.error { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + color: #ef5050; +} + +.desc { + font-weight: 400; + font-size: 14px; + line-height: 129%; + letter-spacing: -0.01em; + text-align: center; + color: rgba(47, 47, 47, 0.5); +} + +.signup { + font-weight: 700; + text-decoration: underline; + text-decoration-skip-ink: none; + color: #2f2f2f; +} diff --git a/src/index.css b/src/index.css index c6bb6c4..3a80bed 100644 --- a/src/index.css +++ b/src/index.css @@ -1,13 +1,36 @@ /* Color Variables */ :root { - --accent: #9BE1A0; - --text-primary-dark: #2F2F2F; - --text-primary-light: #FFFFFF; - --background-primary-dark: #323F47; - --background-primary-light: #FFFFFF; - --background-secondary-light: #F0EFF4; + --accent: #9be1a0; + --text-primary-dark: #2f2f2f; + --text-primary-light: #ffffff; + --background-primary-dark: #323f47; + --background-primary-light: #ffffff; + --background-secondary-light: #f0eff4; margin: 0; font-weight: 400; font-family: Popplin, system-ui, Avenir, Helvetica, Arial, sans-serif; } + +h1, +h2, +h3, +h4, +h5, +h6, +p { + margin-top: 0; + margin-bottom: 0; +} + +ul, +ol { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} + +a { + text-decoration: none; +} diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 7ad8811..129b0b8 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -1,5 +1,7 @@ +import SignInForm from "../../components/SignInForm/SignInForm"; + const SignInPage = () => { - return <>; + return ; }; export default SignInPage; diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 3a4b174..04b4696 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -1,12 +1,21 @@ import { createSlice } from "@reduxjs/toolkit"; -const INITIAL_STATE = {}; +const INITIAL_STATE = { + user: { + name: "", + email: "", + }, + token: null, + isLoggedIn: false, + isRefreshing: false, + error: null, +}; const authSlice = createSlice({ name: "auth", initialState: INITIAL_STATE, reducers: {}, - // extraReducers: {}, // II777: deprecated syntax was breaking the build + // extraReducers: {}, // II777: deprecated syntax was breaking the build }); export const authReducer = authSlice.reducer; From 593dc0ab975e4c68f801c9a14c4308487bf0cb96 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:56:46 +0200 Subject: [PATCH 022/185] tablet and show password --- package-lock.json | 86 +++++++++++++- package.json | 1 + src/App.jsx | 36 +++--- src/components/SignInForm/SignInForm.jsx | 50 ++++++-- .../SignInForm/SignInForm.module.css | 110 +++++++++++++++++- 5 files changed, 248 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9f18d8..4ee28de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-redux": "^9.1.2", + "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", @@ -1544,6 +1545,12 @@ "node": ">=4" } }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", + "license": "BSD" + }, "node_modules/css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -2467,6 +2474,12 @@ "react-is": "^16.7.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3000,6 +3013,15 @@ "loose-envify": "cli.js" } }, + "node_modules/matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "license": "MIT", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3078,7 +3100,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3315,7 +3336,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3442,6 +3462,24 @@ } } }, + "node_modules/react-responsive": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.0.tgz", + "integrity": "sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/react-router": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", @@ -3704,6 +3742,12 @@ "node": ">= 0.4" } }, + "node_modules/shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==", + "license": "MIT" + }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", @@ -5181,6 +5225,11 @@ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" }, + "css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" + }, "css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -5833,6 +5882,11 @@ "react-is": "^16.7.0" } }, + "hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" + }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -6194,6 +6248,14 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "requires": { + "css-mediaquery": "^0.1.2" + } + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6241,8 +6303,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-inspect": { "version": "1.13.3", @@ -6398,7 +6459,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6485,6 +6545,17 @@ "use-sync-external-store": "^1.0.0" } }, + "react-responsive": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.0.tgz", + "integrity": "sha512-N6/UiRLGQyGUqrarhBZmrSmHi2FXSD++N5VbSKsBBvWfG0ZV7asvUBluSv5lSzdMyEVjzZ6Y8DL4OHABiztDOg==", + "requires": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + } + }, "react-router": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", @@ -6666,6 +6737,11 @@ "has-property-descriptors": "^1.0.2" } }, + "shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==" + }, "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", diff --git a/package.json b/package.json index bc78999..6196665 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-redux": "^9.1.2", + "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", diff --git a/src/App.jsx b/src/App.jsx index 9a922f9..44b83ed 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,23 +11,25 @@ const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); function App() { return ( - }> - - } /> - } />} - /> - } />} - /> - } />} - /> - - +
    + }> + + } /> + } />} + /> + } />} + /> + } />} + /> + + +
    ); } diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 55977ae..d8b7864 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -3,6 +3,8 @@ import * as Yup from "yup"; import css from "./SignInForm.module.css"; import clsx from "clsx"; import { NavLink } from "react-router-dom"; +import { useMediaQuery } from "react-responsive"; +import { useState } from "react"; const LoginValidationSchema = Yup.object({ email: Yup.string().email("Incorrect email").required("Email is required"), @@ -13,11 +15,18 @@ const LoginValidationSchema = Yup.object({ }); const SignInForm = () => { + const isTabletAndDesktop = useMediaQuery({ minWidth: 768 }); + const [openEye, setOpenEye] = useState(false); + const initialValue = { email: "", password: "", }; + function handleOpenEye() { + return setOpenEye(!openEye); + } + function handleSubmit(name, password) { console.log(name, password); } @@ -59,7 +68,7 @@ const SignInForm = () => { Password { [css.inputFormError]: touched.password && errors.password, })} /> + {isTabletAndDesktop && ( + + )}
    - -

    - Don't have an account?{" "} - - Sign Up - -

    +
    + +

    + Don't have an account?{" "} + + Sign Up + +

    +
    )} diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 9b7529c..9a0b9d1 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -59,7 +59,6 @@ letter-spacing: -0.01em; border: 1px solid rgba(47, 47, 47, 0.2); border-radius: 15px; - margin-bottom: 10px; max-width: 311px; } @@ -95,10 +94,14 @@ border: none; border-radius: 30px; margin-bottom: 16px; - max-width: 311px; + min-width: 288px; transition: color 250ms linear, background-color 250ms linear; } +.btnDescContainer { + max-width: 311px; +} + .submitBtn:hover, .submitBtn:focus { cursor: pointer; @@ -129,3 +132,106 @@ text-decoration-skip-ink: none; color: #2f2f2f; } + +@media only screen and (min-width: 768px) { + .signInSection { + padding: 32px; + margin: 0 auto; + max-width: 768px; + background-color: #ffffff; + } + + .container { + padding-top: 32px; + padding-right: 32px; + padding-left: 32px; + padding-bottom: 281px; + background-color: #f0eff4; + } + + .title { + font-size: 24px; + line-height: 100%; + margin-bottom: 225px; + } + + .signInTitle { + font-size: 36px; + line-height: 106%; + margin-left: 102px; + } + + .form { + margin-left: 102px; + } + + .label { + font-size: 16px; + line-height: 150%; + } + + .inputForm { + font-size: 16px; + line-height: 150%; + min-width: 416px; + } + + .emailContainer { + max-width: 436px; + margin-bottom: 20px; + } + + .passwordContainer { + position: relative; + max-width: 436px; + } + + .error { + font-size: 16px; + line-height: 150%; + color: #ef5050; + } + + .errorPass { + position: absolute; + bottom: -20px; + left: 0; + } + + .submitBtn { + font-size: 16px; + line-height: 150%; + padding-top: 18px; + padding-bottom: 18px; + min-width: 436px; + } + + .desc { + font-size: 16px; + line-height: 150%; + text-align: center; + } + + .btnDescContainer { + max-width: 436px; + } + + .closeEyeBtn { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + background-color: transparent; + border: none; + top: 50%; + right: 18px; + transform: translateY(25%); + fill: none; + stroke: #2f2f2f; + } + + .inputFormError { + font-size: 16px; + line-height: 150%; + } +} From d066ef34e409d23ac95dd05031f06137b910288a Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Mon, 25 Nov 2024 19:09:17 +0200 Subject: [PATCH 023/185] finish sign up form --- src/components/SignUpForm/SignUpForm.jsx | 39 +++++++++- .../SignUpForm/SignUpForm.module.css | 74 +++++++++++++++++-- 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index bdafb7d..0685ade 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -2,14 +2,19 @@ import { ErrorMessage, Field, Form, Formik } from "formik"; import css from "./SignUpForm.module.css"; import * as Yup from "yup"; import clsx from "clsx"; +import { useState } from "react"; const SignUpForm = () => { +const [isVisiblePassword, setIsVisiblePassword]=useState(false); +const togglePasswordView=()=>{setIsVisiblePassword((prev) => !prev)}; + const SignUpValidationSchema = Yup.object().shape({ emailSignUp: Yup.string() .email("Invalid email address") .required("Email is required"), passwordSignUp: Yup.string() - .min(6, "Password must be at least 6 characters") + .min(8, "Password must be at least 8 characters") + .max(50, "Password must be less than 50 characters") .required("Password is required"), repeatPassword: Yup.string() .oneOf([Yup.ref("passwordSignUp")], "Passwords must match") @@ -25,9 +30,11 @@ const SignUpForm = () => { console.log(values); actions.resetForm(); }; + + return ( <> -

    SignUp

    + {/*

    SignUp

    */} { id="passwordSignUp" name="passwordSignUp" placeholder="Enter your password" - type="password" + type={isVisiblePassword ? "text" : "password"} className={clsx(css.input, { [css.inputError]: errors.passwordSignUp && touched.passwordSignUp, @@ -75,6 +82,19 @@ const SignUpForm = () => { component="span" className={css.errorMsg} /> +
    @@ -97,6 +117,19 @@ const SignUpForm = () => { component="span" className={css.errorMsg} /> +
    - {/* {isModalOpen && } */} + {isModalOpen && } ); }; diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css index 09eacdb..18ba63f 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.module.css +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -1,44 +1,77 @@ .addBtn { - position: absolute; cursor: pointer; font-weight: 700; - font-size: 14px; - line-height: 129%; letter-spacing: 0.01em; text-align: center; + display: inline-block; + vertical-align: middle; + text-align: center; + border: none; +} + +.defaultBtn { + font-size: 14px; + line-height: 129%; background-color: #323f47; min-width: 140px; border-radius: 30px; + margin-left: 187px; padding: 14px 20px; - right: 16px; - bottom: 32px; color: #ffffff; transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1); - border: none; - display: flex; - align-items: center; - justify-content: center; - gap: 10px; } -.addBtn:hover { +.defaultBtn:hover { color: #9be1a0; } +.addBtnAlt { + min-width: 124px; + font-size: 16px; + line-height: 150%; + text-align: center; + color: #323f47; + background-color: inherit; +} + .icon { - transition: fill 250ms cubic-bezier(0.4, 0, 0.2, 1), + vertical-align: middle; + margin-right: 10px; + transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), stroke 250ms cubic-bezier(0.4, 0, 0.2, 1); } -.addBtn:hover .icon { - fill: #9be1a0; + +.icon:hover { + transform: scale(1.1); +} + +.defaultIcon { + stroke: #ffffff; + transition: stroke 250ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.defaultIcon:hover { stroke: #9be1a0; } +.iconAlt { + border-radius: 30px; + background-color: #9be1a0; + stroke: #323f47; + stroke-width: 1.5px; + padding: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.iconAlt:hover { + background-color: #323f47; + stroke: #ffffff; +} + @media only screen and (min-width: 768px) { - .addBtn { + .defaultBtn { min-width: 178px; padding: 18px 30px; - right: 32px; - bottom: 64px; + /* right: 32px; + bottom: 64px; */ } } diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index d5f6bfe..a96d12d 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -2,11 +2,12 @@ import css from "./WaterDailyNorma.module.css"; const WaterDailyNorma = () => { // const dailyNorma = useSelector() + // const volumeToShow = dailyNorma === 0 ? "1.5 L" : `${dailyNorma} L`; return ( <>

    1.5 L

    - {/* {formatVolume(dailyNorma)} */} + {/* {formatVolume(volumeToShow)} */}

    My daily norma

    diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.module.css b/src/components/WaterDailyNorma/WaterDailyNorma.module.css index 6e06e8a..8a60bb3 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.module.css +++ b/src/components/WaterDailyNorma/WaterDailyNorma.module.css @@ -1,10 +1,11 @@ .container { - position: absolute; + display: inline-block; + margin-bottom: 89px; margin-left: 16px; - margin-top: 122px; border-radius: 15px; padding: 12px; - max-width: 102px; + max-width: 78px; + min-height: 30px; box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); background-color: #ffffff; } diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 296c392..d359d07 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -1,31 +1,16 @@ -import css from "./WaterMainInfo.module.css"; - -import bottleDesktop from "../../img/water-main-info/bottle-desktop.png"; -import bottleDesktop2x from "../../img/water-main-info/bottle-desktop@2x.png"; -import bottleTablet from "../../img/water-main-info/bottle-tablet.png"; -import bottleTablet2x from "../../img/water-main-info/bottle-tablet@2x.png"; -import bottleMob from "../../img/water-main-info/bottle-mob.png"; -import bottleMob2x from "../../img/water-main-info/bottle-mob@2x.png"; import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; +import css from "./WaterMainInfo.module.css"; +import Logo from "../Logo/Logo.jsx"; const WaterMainInfo = () => { return ( <>
    -

    aquatrack

    + -
    - Bottle with water -
    diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 9149db4..e90c9e4 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -1,7 +1,13 @@ .container { - position: relative; + /* height: 100vh; */ border-radius: 30px; background-color: #9be1a0; + background-image: url("/src/img/water-main-info/bottle-mob.png"); + background-repeat: no-repeat; + background-position: center 50px; + background-size: contain; + padding-top: 149px; + padding-bottom: 30px; } .title { @@ -17,17 +23,17 @@ margin-bottom: 6px; } -.bottleContainer { - display: flex; - justify-content: center; -} - .bottle { max-width: 100%; height: auto; } @media only screen and (min-width: 768px) { + .container { + max-width: 704px; + max-height: 578px; + background-image: url("/src/img/water-main-info/bottle-tablet.png"); + } .title { width: 155px; font-size: 24px; @@ -41,7 +47,7 @@ @media only screen and (min-width: 1440px) { .container { max-width: 672px; - /* height: 736px; */ + background-image: url("/src/img/water-main-info/bottle-desktop.png"); } .title { margin-bottom: 36px; @@ -51,3 +57,23 @@ padding-bottom: 40px; } } + +/* ============ retina =========== */ + +@media only screen and (min-resolution: 192dpi) and (max-width: 767px) { + .container { + background-image: url("/src/img/water-main-info/bottle-mob@2x.png"); + } +} + +@media only screen and (min-width: 768px) and (min-resolution: 192dpi) { + .container { + background-image: url("/src/img/water-main-info/bottle-tablet@2x.png"); + } +} + +@media only screen and (min-width: 1440px) and (min-resolution: 192dpi) { + .container { + background-image: url("/src/img/water-main-info/bottle-desktop@2x.png"); + } +} diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index 89914fa..8f5dea8 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -2,19 +2,20 @@ import css from "./WaterProgressBar.module.css"; const WaterProgressBar = () => { - // const { currentAmount, dailyGoal, history } = useSelector(selectWater); + // const { currentAmount, dailyNorma, history } = useSelector(selectWater); // export const formatVolume = (ml) => { // return `${(ml / 1000).toFixed(1)} L`; // }; - // const waterPercentage = Math.round((currentAmount / dailyGoal) * 100); + // const waterPercentage = Math.round((currentAmount / dailyNorma) * 100); return ( <>

    Today

    - {/* {formatVolume(currentAmount)} / {formatVolume(dailyGoal)} */} + {/* {formatVolume(currentAmount)} / {formatVolume(dailyGoal) * 100} */} +

    80

    Date: Tue, 26 Nov 2024 16:07:32 +0200 Subject: [PATCH 030/185] eslint --- eslint.config.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 238d2e4..842b03d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,38 +1,39 @@ -import js from '@eslint/js' -import globals from 'globals' -import react from 'eslint-plugin-react' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' +import js from "@eslint/js"; +import globals from "globals"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; export default [ - { ignores: ['dist'] }, { - files: ['**/*.{js,jsx}'], + files: ["*/.{js,jsx}"], + ignores: ["dist"], languageOptions: { ecmaVersion: 2020, globals: globals.browser, parserOptions: { - ecmaVersion: 'latest', + ecmaVersion: "latest", ecmaFeatures: { jsx: true }, - sourceType: 'module', + sourceType: "module", }, }, - settings: { react: { version: '18.3' } }, + settings: { react: { version: "18.3" } }, plugins: { react, - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, + "react-hooks": reactHooks, + "react-refresh": reactRefresh, }, rules: { ...js.configs.recommended.rules, ...react.configs.recommended.rules, - ...react.configs['jsx-runtime'].rules, + ...react.configs["jsx-runtime"].rules, ...reactHooks.configs.recommended.rules, - 'react/jsx-no-target-blank': 'off', - 'react-refresh/only-export-components': [ - 'warn', + "react/prop-types": 0, + "react/jsx-no-target-blank": "off", + "react-refresh/only-export-components": [ + "warn", { allowConstantExport: true }, ], }, }, -] +]; From c48f496ce3ded75bed205788c47c3d4e3ecef819 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:18:45 +0200 Subject: [PATCH 031/185] vercel --- vercel.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 vercel.json diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..3a48e56 --- /dev/null +++ b/vercel.json @@ -0,0 +1,3 @@ +{ + "rewrites": [{ "source": "/(.*)", "destination": "/" }] +} From 0243e1778db61799e038367ebb63dc4d014a932a Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Tue, 26 Nov 2024 18:13:40 +0200 Subject: [PATCH 032/185] true sign in page --- src/components/SignInForm/SignInForm.jsx | 152 ++++++++---------- .../SignInForm/SignInForm.module.css | 101 ++---------- src/pages/SignInPage/SignInPage.jsx | 20 ++- src/pages/SignInPage/SignInPage.module.css | 71 ++++++++ 4 files changed, 177 insertions(+), 167 deletions(-) diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index d8b7864..2c6c09f 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -2,7 +2,6 @@ import { ErrorMessage, Field, Form, Formik } from "formik"; import * as Yup from "yup"; import css from "./SignInForm.module.css"; import clsx from "clsx"; -import { NavLink } from "react-router-dom"; import { useMediaQuery } from "react-responsive"; import { useState } from "react"; @@ -32,89 +31,78 @@ const SignInForm = () => { } return ( -
    -
    -

    AquaTrack

    -

    Sign In

    - - {({ touched, errors }) => ( -
    -
    - - - -
    + <> +

    Sign In

    + + {({ touched, errors }) => ( + +
    + + + +
    -
    - - - {isTabletAndDesktop && ( - - )} - -
    -
    - -

    - Don't have an account?{" "} - - Sign Up - -

    -
    - - )} -
    -
    -
    + )} + +
    + + + )} + + ); }; diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 9a0b9d1..a9eb17b 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -1,27 +1,3 @@ -.signInSection { - padding: 16px; - margin: 0 auto; - max-width: 320px; - background-color: #ffffff; -} - -.container { - padding-top: 24px; - padding-right: 16px; - padding-left: 16px; - padding-bottom: 216px; - border-radius: 30px; - background-color: #f0eff4; -} - -.title { - font-size: 18px; - line-height: 111%; - letter-spacing: -0.01em; - text-transform: uppercase; - margin-bottom: 172px; -} - .signInTitle { font-weight: 700; font-size: 32px; @@ -33,6 +9,7 @@ .form { display: flex; flex-direction: column; + margin-bottom: 16px; } .label { @@ -44,11 +21,18 @@ } .emailContainer { + position: relative; display: flex; flex-direction: column; margin-bottom: 16px; } +.errorMail { + position: absolute; + bottom: -20px; + left: 0; +} + .inputForm { padding-top: 16px; padding-bottom: 16px; @@ -77,11 +61,18 @@ } .passwordContainer { + position: relative; display: flex; flex-direction: column; margin-bottom: 32px; } +.errorPass { + position: absolute; + bottom: -20px; + left: 0; +} + .submitBtn { font-weight: 700; font-size: 14px; @@ -93,13 +84,8 @@ background-color: #9be1a0; border: none; border-radius: 30px; - margin-bottom: 16px; - min-width: 288px; - transition: color 250ms linear, background-color 250ms linear; -} - -.btnDescContainer { max-width: 311px; + transition: color 250ms linear, background-color 250ms linear; } .submitBtn:hover, @@ -117,44 +103,7 @@ color: #ef5050; } -.desc { - font-weight: 400; - font-size: 14px; - line-height: 129%; - letter-spacing: -0.01em; - text-align: center; - color: rgba(47, 47, 47, 0.5); -} - -.signup { - font-weight: 700; - text-decoration: underline; - text-decoration-skip-ink: none; - color: #2f2f2f; -} - @media only screen and (min-width: 768px) { - .signInSection { - padding: 32px; - margin: 0 auto; - max-width: 768px; - background-color: #ffffff; - } - - .container { - padding-top: 32px; - padding-right: 32px; - padding-left: 32px; - padding-bottom: 281px; - background-color: #f0eff4; - } - - .title { - font-size: 24px; - line-height: 100%; - margin-bottom: 225px; - } - .signInTitle { font-size: 36px; line-height: 106%; @@ -173,7 +122,7 @@ .inputForm { font-size: 16px; line-height: 150%; - min-width: 416px; + min-width: 436px; } .emailContainer { @@ -192,12 +141,6 @@ color: #ef5050; } - .errorPass { - position: absolute; - bottom: -20px; - left: 0; - } - .submitBtn { font-size: 16px; line-height: 150%; @@ -206,16 +149,6 @@ min-width: 436px; } - .desc { - font-size: 16px; - line-height: 150%; - text-align: center; - } - - .btnDescContainer { - max-width: 436px; - } - .closeEyeBtn { position: absolute; display: flex; diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 129b0b8..f03b133 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -1,7 +1,25 @@ +import Logo from "../../components/Logo/Logo"; import SignInForm from "../../components/SignInForm/SignInForm"; +import { NavLink } from "react-router-dom"; +import css from "./SignInPage.module.css"; const SignInPage = () => { - return ; + return ( +
    +
    + + +
    +

    + Don't have an account?{" "} + + Sign Up + {" "} +

    +
    +
    +
    + ); }; export default SignInPage; diff --git a/src/pages/SignInPage/SignInPage.module.css b/src/pages/SignInPage/SignInPage.module.css index 189ff91..c0f9c64 100644 --- a/src/pages/SignInPage/SignInPage.module.css +++ b/src/pages/SignInPage/SignInPage.module.css @@ -1 +1,72 @@ /*style*/ +.signInSection { + font-family: Poppins; + padding: 16px; + margin: 0 auto; + max-width: 320px; + background-color: #ffffff; +} + +.title { + font-size: 18px; + line-height: 111%; + letter-spacing: -0.01em; + text-transform: uppercase; + margin-bottom: 172px; +} + +.container { + padding-top: 24px; + padding-right: 16px; + padding-left: 16px; + padding-bottom: 216px; + border-radius: 30px; + background-color: #f0eff4; +} + +.descContainer { + display: flex; + justify-content: center; + align-items: center; +} + +.desc { + font-size: 14px; + line-height: 129%; + font-weight: 400; + letter-spacing: -0.01em; + text-align: center; + color: rgba(47, 47, 47, 0.5); +} + +.signup { + font-weight: 700; + text-decoration: underline; + text-decoration-skip-ink: none; + color: #2f2f2f; +} + +@media only screen and (min-width: 768px) { + .signInSection { + padding: 32px; + max-width: 768px; + } + + .container { + padding-top: 32px; + padding-right: 32px; + padding-left: 32px; + padding-bottom: 281px; + } + + .title { + font-size: 24px; + line-height: 100%; + margin-bottom: 225px; + } + + .desc { + font-size: 16px; + line-height: 150%; + } +} From 6abcc284388f6c5d28f15ddf14f5377b8a678354 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Tue, 26 Nov 2024 20:58:24 +0200 Subject: [PATCH 033/185] libreris --- package-lock.json | 62 +++++++++++++++++++ package.json | 2 + src/components/SignInForm/SignInForm.jsx | 2 +- .../SignInForm/SignInForm.module.css | 5 +- 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6fbf6a..af5be8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "frontend-template", "version": "0.0.0", "dependencies": { + "@hookform/resolvers": "^3.9.1", "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "clsx": "^2.1.1", @@ -19,6 +20,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-popper": "^2.3.0", + "react-portal": "^4.2.2", "react-redux": "^9.1.2", "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", @@ -555,6 +557,15 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@hookform/resolvers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -3404,6 +3415,23 @@ "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", "license": "MIT" }, + "node_modules/react-hook-form": { + "version": "7.53.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.2.tgz", + "integrity": "sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-icon": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", @@ -3472,6 +3500,19 @@ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", "license": "MIT" }, + "node_modules/react-portal": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.2.tgz", + "integrity": "sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.5.8" + }, + "peerDependencies": { + "react": "^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0", + "react-dom": "^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0" + } + }, "node_modules/react-redux": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", @@ -4646,6 +4687,12 @@ "levn": "^0.4.1" } }, + "@hookform/resolvers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "requires": {} + }, "@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -6551,6 +6598,13 @@ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" }, + "react-hook-form": { + "version": "7.53.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.2.tgz", + "integrity": "sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==", + "peer": true, + "requires": {} + }, "react-icon": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", @@ -6600,6 +6654,14 @@ } } }, + "react-portal": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.2.tgz", + "integrity": "sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==", + "requires": { + "prop-types": "^15.5.8" + } + }, "react-redux": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", diff --git a/package.json b/package.json index 77180a0..b755956 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@hookform/resolvers": "^3.9.1", "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "clsx": "^2.1.1", @@ -21,6 +22,7 @@ "react-icons": "^5.3.0", "react-loader-spinner": "^6.1.6", "react-popper": "^2.3.0", + "react-portal": "^4.2.2", "react-redux": "^9.1.2", "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 2c6c09f..73873b4 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -23,7 +23,7 @@ const SignInForm = () => { }; function handleOpenEye() { - return setOpenEye(!openEye); + setOpenEye(!openEye); } function handleSubmit(name, password) { diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index a9eb17b..4d7ae15 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -29,7 +29,7 @@ .errorMail { position: absolute; - bottom: -20px; + bottom: -30px; left: 0; } @@ -69,7 +69,7 @@ .errorPass { position: absolute; - bottom: -20px; + bottom: -30px; left: 0; } @@ -161,6 +161,7 @@ transform: translateY(25%); fill: none; stroke: #2f2f2f; + cursor: pointer; } .inputFormError { From 6ff17be932a31d87089616ccd4d79986797a2bdd Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Tue, 26 Nov 2024 21:35:28 +0200 Subject: [PATCH 034/185] path --- src/components/SignInForm/SignInForm.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 73873b4..99de040 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -81,11 +81,11 @@ const SignInForm = () => { > {!openEye ? ( - + ) : ( - + )} From 5fb32036a3bfa7dc37180b8953023c66a4391995 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Tue, 26 Nov 2024 22:32:57 +0200 Subject: [PATCH 035/185] update --- src/components/AddWaterBtn/AddWaterBtn.module.css | 3 +-- .../WaterDailyNorma/WaterDailyNorma.module.css | 2 +- .../WaterMainInfo/WaterMainInfo.module.css | 13 +++++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css index 18ba63f..b81f063 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.module.css +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -71,7 +71,6 @@ .defaultBtn { min-width: 178px; padding: 18px 30px; - /* right: 32px; - bottom: 64px; */ + margin-left: 494px; } } diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.module.css b/src/components/WaterDailyNorma/WaterDailyNorma.module.css index 8a60bb3..2fca1da 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.module.css +++ b/src/components/WaterDailyNorma/WaterDailyNorma.module.css @@ -29,7 +29,7 @@ @media only screen and (min-width: 768px) { .container { margin-left: 32px; - margin-top: 157px; + padding: 14px 18px; max-width: 129px; } diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index e90c9e4..abd432d 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -1,5 +1,9 @@ .container { - /* height: 100vh; */ + max-width: 343px; + margin-left: auto; + margin-right: auto; + padding-left: 16px; + padding-right: 16px; border-radius: 30px; background-color: #9be1a0; background-image: url("/src/img/water-main-info/bottle-mob.png"); @@ -31,7 +35,10 @@ @media only screen and (min-width: 768px) { .container { max-width: 704px; - max-height: 578px; + padding-left: 32px; + padding-right: 32px; + padding-top: 32px; + padding-top: 157px; background-image: url("/src/img/water-main-info/bottle-tablet.png"); } .title { @@ -47,6 +54,8 @@ @media only screen and (min-width: 1440px) { .container { max-width: 672px; + margin-right: auto; + margin-left: 0; background-image: url("/src/img/water-main-info/bottle-desktop.png"); } .title { From 2274c93b791bae8d44cb98174269f5963a9cae62 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Wed, 27 Nov 2024 00:56:17 +0200 Subject: [PATCH 036/185] up --- src/components/AddWaterBtn/AddWaterBtn.jsx | 10 ++-- .../AddWaterBtn/AddWaterBtn.module.css | 34 +++++++------- .../WaterDailyNorma.module.css | 14 ++---- .../WaterMainInfo/WaterMainInfo.jsx | 2 +- .../WaterMainInfo/WaterMainInfo.module.css | 47 ++++--------------- .../WaterProgressBar.module.css | 5 +- 6 files changed, 36 insertions(+), 76 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 11d5f3b..e00d211 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -11,6 +11,7 @@ const AddWaterBtn = ({ variant = "default" }) => { return ( <> +
    + + ); }; diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index d2c7f99..44d9e7b 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -1,5 +1,28 @@ -const UserSettingsModal = () => { - return <>; +import ReactDOM from "react-dom"; +import Icon from "../../components/Icon/Icon"; +import UsersSettingsForm from "../../components/UsersSettingsForm/UsersSettingsForm"; +import css from "./UserSettingsModal.module.css"; + +const UserSettingsModal = ({ isOpen, onClose }) => { + if (!isOpen) return null; + + return ReactDOM.createPortal( +
    +
    +

    Setting

    + + +
    +
    , + document.body + ); }; export default UserSettingsModal; diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index 189ff91..45337df 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -1 +1,5 @@ -/*style*/ +.settingModalButton { + border: none; + background-color: transparent; + stroke: #2f2f2f; +} diff --git a/vite.config.js b/vite.config.js index 2328e17..1f378e7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,7 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react-swc' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; // https://vite.dev/config/ export default defineConfig({ plugins: [react()], -}) +}); From 951d4cb7e7267f301dcfabd3ced5a3e61db98502 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Wed, 27 Nov 2024 02:24:05 +0100 Subject: [PATCH 039/185] add styles user setting modal --- .../UserSettingsModal/UserSettingsModal.jsx | 25 ++++++---- .../UserSettingsModal.module.css | 50 +++++++++++++++++++ 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index 44d9e7b..da65b4f 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -9,16 +9,21 @@ const UserSettingsModal = ({ isOpen, onClose }) => { return ReactDOM.createPortal(
    -

    Setting

    - - +
    +

    Setting

    + +
    + +
    + +
    , document.body diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index 45337df..78035bd 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -1,5 +1,55 @@ +.settingModalOverlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + align-items: flex-start; + justify-content: center; + z-index: 1000; + overflow-y: auto; +} + +.settingModal { + border-radius: 15px; + padding: 40px 20px; + /* max-height: 1302px; */ + width: 343px; + margin-top: 80px; + background-color: #fff; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.settingModalHeader { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + position: relative; +} + .settingModalButton { + position: absolute; + top: -20px; + right: 0; border: none; background-color: transparent; stroke: #2f2f2f; } + +.settingModalContent { + flex: 1; + overflow-y: auto; +} + +.settingModalTitle { + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 20px; + line-height: 1.2; + letter-spacing: -0.01em; + color: #323f47; +} From 796671517e6d122a82180065d37be4e8626f97db Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Wed, 27 Nov 2024 02:56:44 +0100 Subject: [PATCH 040/185] create style user setting modal --- src/icons/sprite.svg | 1 + .../UserSettingsModal/UserSettingsModal.jsx | 4 +-- .../UserSettingsModal.module.css | 29 ++++++++++++++++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/icons/sprite.svg b/src/icons/sprite.svg index 4ef34b5..2a126a6 100644 --- a/src/icons/sprite.svg +++ b/src/icons/sprite.svg @@ -35,6 +35,7 @@ + diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index da65b4f..240d6b8 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -14,8 +14,8 @@ const UserSettingsModal = ({ isOpen, onClose }) => { diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index 78035bd..f502d62 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -21,6 +21,15 @@ background-color: #fff; box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); overflow: hidden; + + @media (min-width: 768px) { + padding: 40px; + width: 648px; + } + + @media (min-width: 1440px) { + width: 920px; + } } .settingModalHeader { @@ -28,16 +37,24 @@ justify-content: space-between; align-items: center; margin-bottom: 20px; - position: relative; + @media (max-width: 767px) { + position: relative; + } } .settingModalButton { - position: absolute; - top: -20px; - right: 0; border: none; background-color: transparent; stroke: #2f2f2f; + @media (max-width: 767px) { + position: absolute; + top: -20px; + right: 0; + } + @media (min-width: 768px) { + width: 28px; + height: 28px; + } } .settingModalContent { @@ -52,4 +69,8 @@ line-height: 1.2; letter-spacing: -0.01em; color: #323f47; + @media (min-width: 768px) { + font-size: 28px; + line-height: 1.14; + } } From 132020ead2337a6c9d6dd351b95854b63e3efda5 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:42:21 +0200 Subject: [PATCH 041/185] path --- src/components/SignInForm/SignInForm.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 99de040..fc03692 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -81,11 +81,11 @@ const SignInForm = () => { > {!openEye ? ( - + ) : ( - + )} From 54b0b9efb10e46ad39038c6ce69636701eaa0197 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:18:09 +0200 Subject: [PATCH 042/185] paths3 --- {src => public}/icons/sprite.svg | 0 src/components/SignInForm/SignInForm.jsx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename {src => public}/icons/sprite.svg (100%) diff --git a/src/icons/sprite.svg b/public/icons/sprite.svg similarity index 100% rename from src/icons/sprite.svg rename to public/icons/sprite.svg diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index fc03692..5df564f 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -81,11 +81,11 @@ const SignInForm = () => { > {!openEye ? ( - + ) : ( - + )} From 36187641d116f067469b94201e76ec7063278475 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Wed, 27 Nov 2024 11:51:56 +0100 Subject: [PATCH 043/185] add svg icons --- public/icons/index.js | 1 + public/icons/sprite.svg | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 public/icons/index.js diff --git a/public/icons/index.js b/public/icons/index.js new file mode 100644 index 0000000..fff198b --- /dev/null +++ b/public/icons/index.js @@ -0,0 +1 @@ +export { default as icons } from './sprite.svg'; \ No newline at end of file diff --git a/public/icons/sprite.svg b/public/icons/sprite.svg index 4ef34b5..9f213fc 100644 --- a/public/icons/sprite.svg +++ b/public/icons/sprite.svg @@ -43,5 +43,17 @@ + + + + + + + + + + + + \ No newline at end of file From ee7e205482d0f4686aaadb439f3721d2c868d0f8 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Wed, 27 Nov 2024 13:02:52 +0200 Subject: [PATCH 044/185] add tracker page container --- src/components/AddWaterBtn/AddWaterBtn.module.css | 4 ++-- .../WaterDailyNorma/WaterDailyNorma.module.css | 6 ++++-- .../WaterMainInfo/WaterMainInfo.module.css | 4 ++-- .../WaterProgressBar/WaterProgressBar.module.css | 6 ++---- src/pages/TrackerPage/TrackerPage.jsx | 5 ++++- src/pages/TrackerPage/TrackerPage.module.css | 12 +++++++++++- 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css index f0cfab3..4cd9266 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.module.css +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -62,8 +62,8 @@ @media only screen and (min-width: 768px) { .addBtn { - right: 16px; - bottom: 32px; + right: 32px; + bottom: 64px; } .defaultBtn { diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.module.css b/src/components/WaterDailyNorma/WaterDailyNorma.module.css index baca514..a914aae 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.module.css +++ b/src/components/WaterDailyNorma/WaterDailyNorma.module.css @@ -1,5 +1,4 @@ .container { - margin-top: 4px; margin-bottom: 52px; border-radius: 15px; padding: 12px; @@ -24,8 +23,8 @@ @media only screen and (min-width: 768px) { .container { - margin-top: 51px; padding: 14px 18px; + margin-bottom: 87px; max-width: 129px; } @@ -41,4 +40,7 @@ } @media only screen and (min-width: 1440px) { + .container { + margin-bottom: 215px; + } } diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 2603d52..ad8cce2 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -12,7 +12,6 @@ } .logo { - line-height: 111%; margin-bottom: 78px; } @@ -25,7 +24,6 @@ } .logo { - line-height: 100%; margin-bottom: 101px; } } @@ -35,7 +33,9 @@ max-width: 672px; margin-right: auto; margin-left: 0; + background-image: url("/src/img/water-main-info/bottle-desktop.png"); + background-position: center 92px; } } diff --git a/src/components/WaterProgressBar/WaterProgressBar.module.css b/src/components/WaterProgressBar/WaterProgressBar.module.css index c9750c9..b419528 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.module.css +++ b/src/components/WaterProgressBar/WaterProgressBar.module.css @@ -54,7 +54,6 @@ .container { min-width: 295px; padding: 20px; - /* margin-bottom: 150px; */ } .today { @@ -67,9 +66,8 @@ line-height: 187%; } } - +/* @media only screen and (min-width: 1440px) { .container { - margin-top: 358px; } -} +} */ diff --git a/src/pages/TrackerPage/TrackerPage.jsx b/src/pages/TrackerPage/TrackerPage.jsx index 83ac220..538a2c2 100644 --- a/src/pages/TrackerPage/TrackerPage.jsx +++ b/src/pages/TrackerPage/TrackerPage.jsx @@ -1,9 +1,12 @@ import WaterMainInfo from "../../components/WaterMainInfo/WaterMainInfo.jsx"; +import css from "./TrackerPage.module.css"; const TrackerPage = () => { return ( <> - +
    + +
    ); }; diff --git a/src/pages/TrackerPage/TrackerPage.module.css b/src/pages/TrackerPage/TrackerPage.module.css index 189ff91..8cbd2fd 100644 --- a/src/pages/TrackerPage/TrackerPage.module.css +++ b/src/pages/TrackerPage/TrackerPage.module.css @@ -1 +1,11 @@ -/*style*/ +.container { + padding: 16px; + margin-left: auto; + margin-right: auto; +} + +@media only screen and (min-width: 768px) { + .container { + padding: 32px; + } +} From 310d3d70dc04c901cc83c50ae4a887e5d58cf0f8 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Wed, 27 Nov 2024 12:04:44 +0100 Subject: [PATCH 045/185] add modal windows (main, logout, delete) --- .../DeleteWaterModal/DeleteWaterModal.jsx | 29 ++++- .../DeleteWaterModal.module.css | 102 ++++++++++++++++- src/modals/LogOutModal/LogOutModal.jsx | 76 ++++++------- src/modals/LogOutModal/LogOutModal.module.css | 103 +++++++++++++++--- src/modals/Modal/DeleteWaterModal.jsx | 32 ++++++ src/modals/Modal/DeleteWaterModal.module.css | 101 +++++++++++++++++ src/modals/Modal/Modal.jsx | 41 ++++++- src/modals/Modal/Modal.module.css | 46 +++++++- 8 files changed, 470 insertions(+), 60 deletions(-) create mode 100644 src/modals/Modal/DeleteWaterModal.jsx create mode 100644 src/modals/Modal/DeleteWaterModal.module.css diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx index 1e71873..f5bc39e 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -1,5 +1,32 @@ +import css from "./DeleteWaterModal.module.css"; + const DeleteWaterModal = () => { - return <>; + return ( +
    +
    +

    Delete entry

    +

    Are you sure you want to delete the entry?

    +
    +
    + + +
    +
    + ); }; export default DeleteWaterModal; diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.module.css b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css index 189ff91..1933602 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.module.css +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css @@ -1 +1,101 @@ -/*style*/ +.modalWindow { + background-color: var(--background-primary-light); + border-radius: 15px; + padding: 40px 14px; + text-align: center; + max-width: 375px; + min-width: 320px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1), + transform 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.wrapperText { + margin-bottom: 28px; +} + +.title { + font-size: 20px; + font-weight: 700; + margin-bottom: 16px; + line-height: 1.2; + letter-spacing: -0.01em; +} + +.text { + font-size: 14px; + line-height: 1.28; + letter-spacing: -0.01em; +} + +.buttonContainer { + display: flex; + flex-direction: column; + align-items: center; + gap: 9px; +} + +.deleteBtn, +.cancelBtn { + width: 100%; + padding: 14px 0; + border: none; + border-radius: 30px; + font-size: 14px; + font-weight: 700; + line-height: 1.28; + cursor: pointer; +} + +.deleteBtn { + background-color: var(--accent); + color: var(--background-primary-dark); + transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.deleteBtn:hover, +.deleteBtn:active { + background-color: #87d28d; +} + +.cancelBtn { + background-color: var(--background-secondary-light); + color: rgba(50, 63, 71, 0.4); + transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.cancelBtn:hover { + color: var(--background-primary-dark); +} + +@media only screen and (min-width: 768px) { + .modalWindow { + padding: 40px 78.5px; + width: 516px; + max-width: 516px; + } + + .title { + font-size: 28px; + line-height: 1.14; + margin-bottom: 24px; + } + + .text { + font-size: 18px; + line-height: 1.33; + margin-bottom: 24px; + } + + .buttonContainer { + flex-direction: row; + gap: 10px; + } + + .deleteBtn, + .cancelBtn { + padding: 18px 0; + font-size: 16px; + line-height: 1.5; + } +} diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index e1fbdb5..da91ea7 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -1,49 +1,41 @@ -import Modal from "react-modal"; import css from "./LogOutModal.module.css"; -Modal.setAppElement("#root"); -const LogOutModal = ({ isOpen, onRequestClose, onConfirm, title, message }) => { - const customStyles = { - overlay: { - backgroundColor: "rgba(0, 0, 0, 0.3)", - }, - content: { - position: "absolute", - top: "20%", - left: "auto", - right: "42%", - bottom: "auto", - marginRight: "-50%", - transform: "translate(-50%, -50%)", - padding: "0", - border: "none", - maxWidth: "100%", - maxHeight: "100%", - height: "auto", - overflow: "hidden", - }, - }; +// import { useDispatch } from "react-redux"; +// import { logOut } from "../../redux/auth/operations"; + +const LogOutModal = () => { + // const dispatch = useDispatch(); + // const closeModal = ? ; + return ( - -
    -

    {title}

    -

    {message}

    -
    - - -
    +
    +
    +

    Log Out

    +

    Do you really want to leave?

    +
    +
    + +
    - +
    ); }; diff --git a/src/modals/LogOutModal/LogOutModal.module.css b/src/modals/LogOutModal/LogOutModal.module.css index 178f246..922b6c9 100644 --- a/src/modals/LogOutModal/LogOutModal.module.css +++ b/src/modals/LogOutModal/LogOutModal.module.css @@ -1,24 +1,101 @@ -.container { - padding: 10px; +.modalWindow { + background-color: var(--background-primary-light); + border-radius: 15px; + padding: 40px 14px; text-align: center; + max-width: 375px; + min-width: 320px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1), + transform 300ms cubic-bezier(0.4, 0, 0.2, 1); } -.confirmBtn, +.wrapperText { + margin-bottom: 28px; +} + +.title { + font-size: 20px; + font-weight: 700; + margin-bottom: 16px; + line-height: 1.2; + letter-spacing: -0.01em; +} + +.text { + font-size: 14px; + line-height: 1.28; + letter-spacing: -0.01em; +} + +.buttonContainer { + display: flex; + flex-direction: column; + align-items: center; + gap: 9px; +} + +.logoutBtn, .cancelBtn { - display: inline-block; - padding: 5px 10px; + width: 100%; + padding: 14px 0; border: none; - border-radius: 4px; - margin-top: 10px; + border-radius: 30px; + font-size: 14px; + font-weight: 700; + line-height: 1.28; + cursor: pointer; +} + +.logoutBtn { + background-color: var(--accent); + color: var(--background-primary-dark); + transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1); } -.confirmBtn { - background-color: #d9534f; - color: white; - margin-right: 10px; +.logoutBtn:hover, +.logoutBtn:active { + background-color: #87d28d; } .cancelBtn { - background-color: rgb(38, 148, 38); - color: white; + background-color: var(--background-secondary-light); + color: rgba(50, 63, 71, 0.4); + transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.cancelBtn:hover { + color: var(--background-primary-dark); +} + +@media only screen and (min-width: 768px) { + .modalWindow { + padding: 40px 78.5px; + width: 516px; + max-width: 516px; + } + + .title { + font-size: 28px; + line-height: 1.14; + margin-bottom: 24px; + } + + .text { + font-size: 18px; + line-height: 1.33; + margin-bottom: 24px; + } + + .buttonContainer { + flex-direction: row; + gap: 10px; + } + + .logoutBtn, + .cancelBtn { + padding: 18px 0; + font-size: 16px; + line-height: 1.5; + } } diff --git a/src/modals/Modal/DeleteWaterModal.jsx b/src/modals/Modal/DeleteWaterModal.jsx new file mode 100644 index 0000000..f5bc39e --- /dev/null +++ b/src/modals/Modal/DeleteWaterModal.jsx @@ -0,0 +1,32 @@ +import css from "./DeleteWaterModal.module.css"; + +const DeleteWaterModal = () => { + return ( +
    +
    +

    Delete entry

    +

    Are you sure you want to delete the entry?

    +
    +
    + + +
    +
    + ); +}; + +export default DeleteWaterModal; diff --git a/src/modals/Modal/DeleteWaterModal.module.css b/src/modals/Modal/DeleteWaterModal.module.css new file mode 100644 index 0000000..1933602 --- /dev/null +++ b/src/modals/Modal/DeleteWaterModal.module.css @@ -0,0 +1,101 @@ +.modalWindow { + background-color: var(--background-primary-light); + border-radius: 15px; + padding: 40px 14px; + text-align: center; + max-width: 375px; + min-width: 320px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1), + transform 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.wrapperText { + margin-bottom: 28px; +} + +.title { + font-size: 20px; + font-weight: 700; + margin-bottom: 16px; + line-height: 1.2; + letter-spacing: -0.01em; +} + +.text { + font-size: 14px; + line-height: 1.28; + letter-spacing: -0.01em; +} + +.buttonContainer { + display: flex; + flex-direction: column; + align-items: center; + gap: 9px; +} + +.deleteBtn, +.cancelBtn { + width: 100%; + padding: 14px 0; + border: none; + border-radius: 30px; + font-size: 14px; + font-weight: 700; + line-height: 1.28; + cursor: pointer; +} + +.deleteBtn { + background-color: var(--accent); + color: var(--background-primary-dark); + transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.deleteBtn:hover, +.deleteBtn:active { + background-color: #87d28d; +} + +.cancelBtn { + background-color: var(--background-secondary-light); + color: rgba(50, 63, 71, 0.4); + transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.cancelBtn:hover { + color: var(--background-primary-dark); +} + +@media only screen and (min-width: 768px) { + .modalWindow { + padding: 40px 78.5px; + width: 516px; + max-width: 516px; + } + + .title { + font-size: 28px; + line-height: 1.14; + margin-bottom: 24px; + } + + .text { + font-size: 18px; + line-height: 1.33; + margin-bottom: 24px; + } + + .buttonContainer { + flex-direction: row; + gap: 10px; + } + + .deleteBtn, + .cancelBtn { + padding: 18px 0; + font-size: 16px; + line-height: 1.5; + } +} diff --git a/src/modals/Modal/Modal.jsx b/src/modals/Modal/Modal.jsx index 8a0bc6c..0a8e008 100644 --- a/src/modals/Modal/Modal.jsx +++ b/src/modals/Modal/Modal.jsx @@ -1,5 +1,42 @@ -const Modal = () => { - return <>; +import { useEffect } from "react"; +import css from "./Modal.module.css"; +import { icons as sprite } from "../../icons/index"; + +const Modal = ({ isOpen, onClose, children }) => { + useEffect(() => { + const handleEscape = (e) => { + if (e.key === "Escape") { + onClose(); + } + }; + if (isOpen) { + document.addEventListener("keydown", handleEscape); + } + return () => { + document.removeEventListener("keydown", handleEscape); + }; + }, [isOpen, onClose]); + if (!isOpen) { + return null; + } + return ( +
    +
    e.stopPropagation()}> + + + {children} +
    +
    + ); }; export default Modal; diff --git a/src/modals/Modal/Modal.module.css b/src/modals/Modal/Modal.module.css index 189ff91..2879acc 100644 --- a/src/modals/Modal/Modal.module.css +++ b/src/modals/Modal/Modal.module.css @@ -1 +1,45 @@ -/*style*/ +.backdrop { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); +} +.modalWindow { + background: var(--background-primary-light); + border-radius: 15px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.closeBtn { + position: absolute; + top: 20px; + right: 16px; + background-color: transparent; + border: transparent; + cursor: pointer; +} + +.closeIcon { + width: 24px; + height: 24px; + stroke: var(--text-primary-dark); + transition: stroke 300ms cubic-bezier(0.4, 0, 0.2, 1); +} + +.closeBtn .closeIcon:hover { + stroke: var(--accent); +} + +@media only screen and (min-width: 768px) { + .closeBtn { + right: 20px; + } + .closeIcon { + width: 28px; + height: 28px; + } +} From 438259e21143552cb2fc83879dd9270fbea6deef Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Wed, 27 Nov 2024 13:27:24 +0200 Subject: [PATCH 046/185] up --- src/components/AddWaterBtn/AddWaterBtn.jsx | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index e00d211..365283d 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -24,21 +24,8 @@ const AddWaterBtn = ({ variant = "default" }) => { className={clsx(css.icon, variant === "alt" && css.iconAlt)} width="24" height="24" - viewBox="0 0 24 24" - xmlns="http://www.w3.org/2000/svg" > - - + Add water From fdfd7b864ac7fd4bbdb965ef98cc47b5ff82539c Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Wed, 27 Nov 2024 12:46:31 +0100 Subject: [PATCH 047/185] add wrapper for modals & del duplicate --- .../DeleteWaterModal/DeleteWaterModal.jsx | 49 +++++---- src/modals/LogOutModal/LogOutModal.jsx | 57 +++++----- src/modals/Modal/DeleteWaterModal.jsx | 32 ------ src/modals/Modal/DeleteWaterModal.module.css | 101 ------------------ 4 files changed, 56 insertions(+), 183 deletions(-) delete mode 100644 src/modals/Modal/DeleteWaterModal.jsx delete mode 100644 src/modals/Modal/DeleteWaterModal.module.css diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx index f5bc39e..8c3e070 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -1,31 +1,34 @@ import css from "./DeleteWaterModal.module.css"; +import Modal from "../Modal/Modal"; const DeleteWaterModal = () => { return ( -
    -
    -

    Delete entry

    -

    Are you sure you want to delete the entry?

    + +
    +
    +

    Delete entry

    +

    Are you sure you want to delete the entry?

    +
    +
    + + +
    -
    - - -
    -
    + ); }; diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index da91ea7..8c4cfd2 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -1,4 +1,5 @@ import css from "./LogOutModal.module.css"; +import Modal from "../Modal/Modal"; // import { useDispatch } from "react-redux"; // import { logOut } from "../../redux/auth/operations"; @@ -8,34 +9,36 @@ const LogOutModal = () => { // const closeModal = ? ; return ( -
    -
    -

    Log Out

    -

    Do you really want to leave?

    + +
    +
    +

    Log Out

    +

    Do you really want to leave?

    +
    +
    + + +
    -
    - - -
    -
    + ); }; diff --git a/src/modals/Modal/DeleteWaterModal.jsx b/src/modals/Modal/DeleteWaterModal.jsx deleted file mode 100644 index f5bc39e..0000000 --- a/src/modals/Modal/DeleteWaterModal.jsx +++ /dev/null @@ -1,32 +0,0 @@ -import css from "./DeleteWaterModal.module.css"; - -const DeleteWaterModal = () => { - return ( -
    -
    -

    Delete entry

    -

    Are you sure you want to delete the entry?

    -
    -
    - - -
    -
    - ); -}; - -export default DeleteWaterModal; diff --git a/src/modals/Modal/DeleteWaterModal.module.css b/src/modals/Modal/DeleteWaterModal.module.css deleted file mode 100644 index 1933602..0000000 --- a/src/modals/Modal/DeleteWaterModal.module.css +++ /dev/null @@ -1,101 +0,0 @@ -.modalWindow { - background-color: var(--background-primary-light); - border-radius: 15px; - padding: 40px 14px; - text-align: center; - max-width: 375px; - min-width: 320px; - box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); - transition: opacity 300ms cubic-bezier(0.4, 0, 0.2, 1), - transform 300ms cubic-bezier(0.4, 0, 0.2, 1); -} - -.wrapperText { - margin-bottom: 28px; -} - -.title { - font-size: 20px; - font-weight: 700; - margin-bottom: 16px; - line-height: 1.2; - letter-spacing: -0.01em; -} - -.text { - font-size: 14px; - line-height: 1.28; - letter-spacing: -0.01em; -} - -.buttonContainer { - display: flex; - flex-direction: column; - align-items: center; - gap: 9px; -} - -.deleteBtn, -.cancelBtn { - width: 100%; - padding: 14px 0; - border: none; - border-radius: 30px; - font-size: 14px; - font-weight: 700; - line-height: 1.28; - cursor: pointer; -} - -.deleteBtn { - background-color: var(--accent); - color: var(--background-primary-dark); - transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1); -} - -.deleteBtn:hover, -.deleteBtn:active { - background-color: #87d28d; -} - -.cancelBtn { - background-color: var(--background-secondary-light); - color: rgba(50, 63, 71, 0.4); - transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); -} - -.cancelBtn:hover { - color: var(--background-primary-dark); -} - -@media only screen and (min-width: 768px) { - .modalWindow { - padding: 40px 78.5px; - width: 516px; - max-width: 516px; - } - - .title { - font-size: 28px; - line-height: 1.14; - margin-bottom: 24px; - } - - .text { - font-size: 18px; - line-height: 1.33; - margin-bottom: 24px; - } - - .buttonContainer { - flex-direction: row; - gap: 10px; - } - - .deleteBtn, - .cancelBtn { - padding: 18px 0; - font-size: 16px; - line-height: 1.5; - } -} From 60a82dcdd4f090c71dc04ba9d2890ba6b0b9f58d Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Wed, 27 Nov 2024 08:38:06 -0500 Subject: [PATCH 048/185] -m --- src/components/Logo/Logo.module.css | 1 - src/components/WelcomeSection/WelcomeSection.module.css | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/Logo/Logo.module.css b/src/components/Logo/Logo.module.css index e189e80..1326128 100644 --- a/src/components/Logo/Logo.module.css +++ b/src/components/Logo/Logo.module.css @@ -4,7 +4,6 @@ font-weight: 700; position: relative; text-transform: uppercase; - margin-bottom: 74px; } /* BREAKPOINTS (Mobile First) */ diff --git a/src/components/WelcomeSection/WelcomeSection.module.css b/src/components/WelcomeSection/WelcomeSection.module.css index 69d9ead..e8af7bc 100644 --- a/src/components/WelcomeSection/WelcomeSection.module.css +++ b/src/components/WelcomeSection/WelcomeSection.module.css @@ -11,6 +11,11 @@ line-height: 1; } +/* Logo Component */ +.logo { + margin-bottom: 74px; +} + /* Headers Styles */ .headersWrapper { display: flex; From e5cdc2458e8562e1a2a9ea4b2a0a45c3b08aea2d Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Wed, 27 Nov 2024 16:54:03 +0100 Subject: [PATCH 049/185] add jsx css img --- .../AdvantagesSection/AdvantagesSection.jsx | 77 ++++++++- .../AdvantagesSection.module.css | 160 +++++++++++++++++- src/img/advantages/Avatar1.png | Bin 0 -> 4747 bytes src/img/advantages/Avatar1@2x.png | Bin 0 -> 15122 bytes src/img/advantages/Avatar2.png | Bin 0 -> 4492 bytes src/img/advantages/Avatar2@2x.png | Bin 0 -> 13947 bytes src/img/advantages/Avatar3.png | Bin 0 -> 4939 bytes src/img/advantages/Avatar3@2x.png | Bin 0 -> 15803 bytes src/img/advantages/avatar1M.webp | Bin 0 -> 1278 bytes src/img/advantages/avatar2M.webp | Bin 0 -> 1158 bytes src/img/advantages/avatar3M.webp | Bin 0 -> 1264 bytes src/img/advantages/girlD.webp | Bin 0 -> 41584 bytes src/img/advantages/girlD@2x.webp | Bin 0 -> 147708 bytes src/img/advantages/girlM.webp | Bin 0 -> 13794 bytes src/img/advantages/girlM@2x.webp | Bin 0 -> 42548 bytes src/img/advantages/girlT.webp | Bin 0 -> 24486 bytes src/img/advantages/girlT@2x.webp | Bin 0 -> 79168 bytes src/pages/HomePage/HomePage.module.css | 12 +- 18 files changed, 241 insertions(+), 8 deletions(-) create mode 100644 src/img/advantages/Avatar1.png create mode 100644 src/img/advantages/Avatar1@2x.png create mode 100644 src/img/advantages/Avatar2.png create mode 100644 src/img/advantages/Avatar2@2x.png create mode 100644 src/img/advantages/Avatar3.png create mode 100644 src/img/advantages/Avatar3@2x.png create mode 100644 src/img/advantages/avatar1M.webp create mode 100644 src/img/advantages/avatar2M.webp create mode 100644 src/img/advantages/avatar3M.webp create mode 100644 src/img/advantages/girlD.webp create mode 100644 src/img/advantages/girlD@2x.webp create mode 100644 src/img/advantages/girlM.webp create mode 100644 src/img/advantages/girlM@2x.webp create mode 100644 src/img/advantages/girlT.webp create mode 100644 src/img/advantages/girlT@2x.webp diff --git a/src/components/AdvantagesSection/AdvantagesSection.jsx b/src/components/AdvantagesSection/AdvantagesSection.jsx index 2b53eff..9404363 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.jsx +++ b/src/components/AdvantagesSection/AdvantagesSection.jsx @@ -1,9 +1,78 @@ -import styles from './AdvantagesSection.module.css'; +import css from "./AdvantagesSection.module.css"; +import girlM from "./../../img/advantages/girlM.webp"; +import girlM2x from "./../../img/advantages/girlM@2x.webp"; +import girlD2x from "./../../img/advantages/girlD@2x.webp"; +import girlD from "./../../img/advantages/girlD.webp"; +import girlT2x from "./../../img/advantages/girlT@2x.webp"; +import girlT from "./../../img/advantages/girlT.webp"; +import avatar1 from "./../../img/advantages/Avatar1.png"; +import avatar2 from "./../../img/advantages/Avatar2.png"; +import avatar3 from "./../../img/advantages/Avatar3.png"; -const AdvantagesSection = ({ className = '' }) => { +const AdvantagesSection = ({ className = "" }) => { return ( -
    - Advantages Section +
    +
    + + + + + Girl drink water + +
    +
    +
      +
    • + avatar1 +
    • +
    • + avatar2 +
    • +
    • + avatar3 +
    • +
    +
    + +
    +

    + Our happy + customers +

    +
    +
    + +
    +
      +
    • +
      +
      +

      Habit drive

      +
      +
    • +
    • +

      View statistics

      +
    • +
    • +

      Personal rate setting

      +
    • +
    +
    +
    ); }; diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 189ff91..fae7dc4 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -1 +1,159 @@ -/*style*/ +.advantages_section { + width: 100%; + position: relative; +} + +.customers { + display: flex; + gap: 72px; + border-radius: 30px; + padding: 10px 14px; + box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); + background: var(--background-primary-light); + position: absolute; + left: 16px; + top: 209px; +} + +.customers_list { + position: relative; + display: flex; +} +.customers_item { + position: absolute; +} + +.avatar { + border: 2px solid var(--background-primary-light); + border-radius: 50px; + width: 26px; + height: 28px; +} +.customers_item:nth-child(3) { + z-index: 1; + left: 36px; +} + +.customers_item:nth-child(2) { + z-index: 2; + left: 18px; +} + +.customers_item:nth-child(1) { + z-index: 3; +} + +.customers_text { + font-weight: 700; + font-size: 12px; + color: var(--background-primary-dark); + width: 67px; +} +.span { + color: var(--accent); +} + +.benefits { + position: absolute; + top: 265px; + left: 159px; + width: 168px; +} +.benefits_list { + display: flex; + flex-wrap: wrap; + gap: 4px; +} +.benefits_item { + border-radius: 30px; + padding: 9px 12px; +} +.benefits_item:nth-child(1) { + background: var(--background-primary-dark); +} +.benefits_item:nth-child(2) { + background-color: var(--accent); +} +.benefits_item:nth-child(3) { + background-color: var(--background-primary-light); +} +.flex { + display: flex; + align-items: center; + justify-content: center; + flex-direction: row; + gap: 4px; +} +.ellipse13 { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--accent); +} + +.text { + font-weight: 700; + font-size: 8px; + line-height: 1; + letter-spacing: -0.01em; + text-align: center; + color: var(--background-primary-dark); +} + +.benefits_item:first-child .text { + color: var(--text-primary-light); +} + +@media (min-width: 768px) { + .customers { + padding: 10px 20px; + gap: 104px; + left: 32px; + top: 283px; + } + + .customers_text { + font-size: 15px; + line-height: 1.49333; + width: 90px; + } + + .avatar { + width: 43px; + height: 43px; + } + .customers_item:nth-child(3) { + left: 56px; + } + + .customers_item:nth-child(2) { + left: 28px; + } + + .benefits { + top: 336px; + left: 430px; + width: 242px; + } + .benefits_list { + gap: 10px; + } + .benefits_item { + padding: 11px 16px; + } + .text { + font-size: 12px; + } +} + +@media only screen and (min-width: 1440px) { + .customers { + left: 48px; + top: 534px; + } + + .benefits { + top: 591px; + left: 414px; + } +} diff --git a/src/img/advantages/Avatar1.png b/src/img/advantages/Avatar1.png new file mode 100644 index 0000000000000000000000000000000000000000..49a5a4b6ba6a8101c1b0700423228965184e73b5 GIT binary patch literal 4747 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 Aa{vGU literal 0 HcmV?d00001 diff --git a/src/img/advantages/Avatar2.png b/src/img/advantages/Avatar2.png new file mode 100644 index 0000000000000000000000000000000000000000..a800e06e13ffdc55b7b0888e954d095e40759a25 GIT binary patch literal 4492 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 FV1nHgd;$Of literal 0 HcmV?d00001 diff --git a/src/img/advantages/avatar1M.webp b/src/img/advantages/avatar1M.webp new file mode 100644 index 0000000000000000000000000000000000000000..964dc73bcf706269e2cff46cb3e91d4c4d6fc3c8 GIT binary patch literal 1278 zcmaKqdox!|{WhMIit-6`;QVAb0Rj*x{V;z2(qtfJ$^Uz-k$QZZN<*0{~jI zy&4MtaW*_EnV@sA(1?LJU;rMxfeDddi^u_8sy&=K>qGgd1_^bAl-LyU+&98hKjMSJ za+Mn@H*Z`}JFZp#J{VN$|9W=r<(;GIGAzA6Pnezy@@)1sV%HO<$@+z@F_-!GYy$f; zLo(#W0w+f@qj`2JIa&>XT%HxzxM$7Ym3bOTvAc(0P6uoQvApjy~^YawsP^`~jd{8p2Wt=T9uz;|IJC_B4cd=*=z z;kB7E=LhI*;(b*Bs&(K#=7ce7)!p9UOJebH9Thl=xe*MOKF=pxvktNAS3+0MM`25k zluTW&jc=eAIdPl(zd}7#^pT{dIeIciF8wqEwfY2T`B8%v|5H{p`VI%VU|9j5%t%YT>B zQpfr}C*?k_xQTgj#j&lvPkJ|_pdu@jyf)dMZ^^&-`dbB$IO6DmDVkg=3K`&p;AXn= zANI=xLyr>WikesJga$vJX{Nu0zHdSI_ruMk-h}T=+;% zUL}BC50*^P8SBB~Z3$GicHibqbzLQ&$`|7)fEg7Smvc7=j(CM-S ay2NkW?a^XTfBKz{gg-a3L_bsgh43%B#@Q_Z literal 0 HcmV?d00001 diff --git a/src/img/advantages/avatar2M.webp b/src/img/advantages/avatar2M.webp new file mode 100644 index 0000000000000000000000000000000000000000..729c1bd017dc74fe958179336f06fbc46fc90aa8 GIT binary patch literal 1158 zcmWIYbaSg?VPFV%bqWXzu!!JdU|=u+Vrek)baoCn!3g9sFrEOBEI_H;ypp0IcPE92 z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG% zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI zw=ghlJC6`Ugh@eSQ6ktlU~DijrKK@2d|J-Hz#GZHAbf#=fh!s;2PAN~O#vt+19VqD z5T-NaFr+dlFnBWLF(fnS0a-@CNHt_IbMy)DSPWFiSf4N#))H;)b?=J5O_ZK%@%&8h<~bJW z^AA3MBN`qa!zu6fydX6u;iyUDx$8@c8JL3kUv7W$wB@1tR&B?3dG+n3j6gR6Q=`HY zAftebVJ@SV4A66Sh9d1wixhd-m>C2Zn*vyG)(I?7^Ld>9Pv&b?rNp-u*JPu&3~Sc> zXFi#J;om{~)%#!n`oPX9Ilq|cQf7>siz~O~8X?(yg9!##F00EHe~j57!0_+C@&cut z_pa=FHqCne{-0}XJ99Lbh4XHeGVY1>*F zw{4#9d~{ppb<=|LA%XuEW*JZWw0MKrlLW*1jz6`U^Ew(LvpG)26z-At>XQvyDizLe zWO#4#)hn)>-_2XjbF1u9>$8_TX6$*I&tR&SsV3bhV`ujNOF*XY8s+fTH?NI(tN#AT z$=$8MlrGjB_ixgxvnES-z7w0PI$=fs)6*+vefE5HylP*B{r~%unZ6&n>6P-`;>KQ= z#~)@azVKf4xkP46Oo;m7AAWslbvLFp-+GyJ+->5+*t2Zc7?*vh6W^H4Kub4qW^ zr!}9%|6RY`Qc{w-Y0Ep0BR!wzR21BenWxP2tKRd>pV;ZM&bMWIE@5PRzy3>6YGKW< wS6%fp1K&G7-EMqFCG@t~`k(Q?v?O%Gk9f~3**WQ%`On?O?b2(f9AaPq04`LBcK`qY literal 0 HcmV?d00001 diff --git a/src/img/advantages/avatar3M.webp b/src/img/advantages/avatar3M.webp new file mode 100644 index 0000000000000000000000000000000000000000..2004a1115ec3f759fb23abd2dc752790df3590f2 GIT binary patch literal 1264 zcmWIYbaQ*b!oU#j>J$(bU=hK^z`$St#L{5o>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b=I9gPu?eV#^;9T&gJg%iuMt){g{ii9WeBHAyH$HW~GU<-Y zR;e%R)hu6`zL1~JJniwf@am&x^BO&So}KOSkC3lkw>FY*&m76@dpEj$U|)u}6Y|6ont z6RiFAoavcgd(yjrX;Z<0iGkq)55rtWEg7I!?F@z5ofawb{taUgU~CFt{d`5vHClED z+YRn*8K3o6eZKX*{JPDg`o8i5g(pQ8|Bc@opB!&cf95;;UyuKVKU?qiUv&N|VLi9* zZ>rKGHI)1NgV$w&Q;%&ECWfsn!qF#PB@_Y4uiMk%my?df3J4}8sA+fjLW1Yy- zzwe)W&3=4Ut}}Ok?xJr)i$gk#AseC*y%B@W_W&iEinD>8=`U@Th zk<$A+mOQ@U^lMVr9fL57#-kj^d%kX5^~A5@ijyh#2Z!B9FO(b4lll_Ie*ew1E!Vc+ zi*B{%*d6`lp0maAx+&$)jQ_uho%!a;k^lAff6D*(9h&s%#0vW}o3H%>_2bzF`Av&|Epl;e2?&3>AhrZW06e7l-$ Io-r^00B^I$#sB~S literal 0 HcmV?d00001 diff --git a/src/img/advantages/girlD.webp b/src/img/advantages/girlD.webp new file mode 100644 index 0000000000000000000000000000000000000000..14789e68e398e2981aba503a86c4bb4c92c53264 GIT binary patch literal 41584 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 QEZ}pQ7;aOzANV8y0Dx)$=Kufz literal 0 HcmV?d00001 diff --git a/src/img/advantages/girlD@2x.webp b/src/img/advantages/girlD@2x.webp new file mode 100644 index 0000000000000000000000000000000000000000..acbbae4b374e04dbcef8d32e71b9799ad002a23e GIT binary patch literal 147708 zcmeFZQ;;S>yRQAVt!dkww(ag|+qP}nwrv~Jp0@32+cw{SzO@e4KG^?0+J`$c@~JDI zydzZ=QI%O0r6egX{wN3vP!|(cP*dR4fCT^mjQ^4V1fUNBASoiEFb4833ji7Wj|Kl% zWNYW*r1VReNJCSL2x=Dq@-O~ZFf?{{_;32(+JCC&mH*Z*(*180|7RzRiK(;kKgsRC zMCSCb@qc|n`^RYJ|IJkYVWai-XHQjlzG}NkvKIADjGRD)aw^js6!lc5wQS zKIWf>*Ve}MKW+Ud{AYCVrgo~z|BlfA5+1-Apal2@5dP2j|KP;9tr?p{rw*wSpfim6aoOW&Hj(?f9Ax&(8=(>sssOLLCwqnfctU)06`M~K%D~s zV733N?4SAn=^N3%BD{b7vi}#&0X6_r01-eEUbL*L``1AasVOhTG%a-Nzp1U{5G9wVX#T1YWbWKcj5GDJYoma1S;0VaA0|+1i0;N$BYj!xjO>2g+N^Iy$ebQ23d)#j7a)lOQS?V=fOSsmfnWyK8 z9mH0v*fssw%DA{)=({G4EZ#z2|B|}vUeW%IzQr$UuYAMP3m`=4{o6szn|XuWx6rkc zHx>tNaOXKTyTER-TZS86-ayKn;r>LyP;aX+;1pRNnt2_7ah&%Y-9+l;v1)tow22?3 z;gg-N)M{bW0e`@J4y!ul7b9I^k36zR`mN_1%!){O*Iotdh&OWQZWGS?eDa9vCQ8`6 zbCS>ULS@3$b~MV(+N3rp-wKr|%ESE?W1BGUJ0)-*A$M&2fr>A+es<>FmL#<_`dN!u zJ2m>uvmHh5WU_;mIQey}5v=ECg5(+$>GL5GY=qGWr8O@4A3zb8Xgv-G*nH^|gic0>R z!94pSaAEB9}+3k?99)Jlm!xI zK^simQ7(D?S$Z%gg-UnKxLf&E+<3oMP)Z~ql0W%{Zc$ESjmaaV#!b!3TX6%U_0 zLDzh|HdvCEDQ}N2funa)G^j?bl$X)d@(V^@b?JcBI9+Fu}VavxmJ&xX(zw?6#FBP+up52SbP4fxI>IXU3e4N)-8y zoOM~a=4$-4NF+=*Htnf8CwM0*uZ*=lo8-zm)jzUw^3;txX~!xmp2Jf?rc%Tw=_#le zP=J5;Ya&iAP{8dsY%U0mAjBUCekQDFQ4-=p^1}Iy(*{TwbK66tuFY7!nPj^8i4_en z)Agg@P~6}rAAExRoxs6Wfp!0b`x*tLT|x+8?5_RA&b4oV?;n8x-$#S_2Z910D;JCh z-;($NsLp^uWrk0Iz+G+J2jy?)7wJ!dk$U|1=^KAifB!fCdHck^zT@QMoi5-O5cS*s zCH~000%;}xvu8jc-d_{g@h$xc9M)IlYyQFT!QZi+(!Ulwu6;B7vkHak(Pa99 zCy;<5aaHi%W}*)p^xU{w3TzH9)i1+#hl~JmMEmFV%c5LcLTbUhvf0e}w9TGe%e#jM zUCAJ+gP##r+opjsqBbL9Tf@Z!YwcTRSTKWgc&KDnSwgS^4%CGXBlOL^$E{N|8;T^# z@a z8|#^xB*!3vVKIQ0h=M6~r_+~QQ5T^^1z021iK^3(f9hc7q5VifU{@ZcSesP20_>eH z#}pJ}{a*_Jmx%aAAfd~jD1e+F)dgRu(WA`5@uRokJY6Vakq?*MHbl8f7*u(#3M?eNljDHGU_h+ zQ~a!ynl|ysF4(6K`HRaRXus(WQp4%lms374DSww1Zcqy9cF5RIZ_x%ySK}qsa5TmbcoaI{`w?pH1oRhu<{m` z1g7A03sL5yNAUC8iTB(q{_-s%VwE}i(;#H+Rk;V~5yu)z{2VJ66L zk4=2?3N0FwoOm8ELaL*Cp#<93#i5b=5KBi*q}2?bn5d^OP_>Z<`?6@-K9sx&;Gd!~ zsoM0tx#B7>sW#-;J9EfIH`-)F{|U&^9J<&)sLiAHUU zv?uJpQ66mg<+wItLgD%QJej(TjQS`Hq z=Y`C2d-BKR&|G3eVHX~gz9{j(Oa4ZGaxo>o14gSLJ_oBP8xPg!hc4{jr9(}4GSFV1 z@zW+Taj5Vkes#ihkndLp{BCqJaa(PeBSX_BfZCE{OP6XxOA-tgt%&h;uy?FTTv zG=ke7p87~+Vi2`WXb4|SoBCW#2XaCh&zonJUg*$o`;&V8E%0hhu(H)z-KUM zk$f$7@M^E9&(!50POwr-CI=bH3!g^+t$CQXrp@_%V)FCgvMUsbbv&fz%x8`VXL9ru za7$cq3IJLg+qNeW@YF9tsT)zp`D9mJ;)BuVzb3J9Mt>SXOl}vky{H{ihngDS7Zy9V z^)0oU6R1$+@G`L03c|EcPsm!C_gR^b~1DY45;bF&>WDPzgLkK1KL7JIimqy9b1>I?##cXl-U>^RH67s zSdo0bCrLrcEfLoxU%|Bpx$GC}?GJ@e`=5p^ecqi@^F`F%1gonT@6h+UBF!B&pOy5` zp*BbV%uP1jsP1WOMQ%*}3*%nUkiH@5ayxZD_3)I>bZ{a(BQxgtH(Ug2QUYr+=t2nA zpaXdesD8*5E_wzQOMNV+IhrcS@~(a?04730dsa#-yS^g$w7T&+v}(KdNd+35cG1RR zH5Uipcc%J>3w7vi()=X1f?S%jMV31_o<*U|s25hLOH~$uFvtlqp`AO%kav4hJ60>o zU|me$ki=n+9dckL-laWsv~HQE!E?6pJibPjF!@G=zMEyUFwo#7m*>6 zml_r~Hm;xVf;;!owsgaC)sX3po~)N(iIiYa*;58A$p0DiED zmUh2(NWr$l^jF6^CVC}DZ`!8U1Gi^*9aDtI9Q65jaD_8SbefMxZQ55w~H#-y$4L2s$p z7L5)FAOmf9)w(vlE?g#f#J0_ZKIaN!K?(XkI};pZ^V-+>YtXMHn9PfpE_}4-sEY;{J7$j>W&0rT<2>2`(`)i@wC8VlD@3j8I&##JTy5~#oRu{ zs*a_1h_fOrPQ2HHi=wvI{Y+fmZnnd63vLVA6iW{`2R)h+^EjOXr`^IfYj^G{;g5N*vzshn;PDK${#n@%|5xT=d^9V zYaOX`T=+&MbEddYw3Re=3Ac zLJ&Sar1S;YS5KjLpPW5R zSiY~zkq70|g72k!Ef1LWPZ|c;OOZ@kpLfAy5O=)p*?k5u+SxOSZ|%{{1k- zI4WFJ{?%+az3o~um$g?+oC09+ZsO~fb81H_&Yr?YQ7JJ-O$;c%;yw2SxDv)LL5Ffn zOCTY1+B>)?>o~f~;-WEeS$8ikZ7OvbmpFy!ZY`7UpH-f$`j=kD^bDAwZI`UUXu~>{8%VeBTWV$ zY|XvrNyWn+$yLsuP9^nM2u0?xoRxA#^>wJznSRjVVMl!`y-MZIIPM`I&+JbryDq+1 z&>}Gzx9EcQmG+!TQ_JJuiR&*S3`7dBZ!2+o9d*SvBi%dDRz2QKQa~dM$fzLTqw&^a zU3ag-p%P06n9COmO}7&+$Oktfn)`xXXXjW5g-)|~&AtX;rpLq&l5UVMo=j0`tyW8t zj!$LeX8Lwjs|95s)7Razf?}3Pw7}ko_NEED;aT4E1@rqTzASI<5f5^u#|A~{K3J4% zYcE`rX+l+bipVDpM9Kx<#BhefVW%1sTTsnxNU^5lS}LTv=ZW1&SvN|)21>?gwbluN z+<1Yqvcx zA;!`l3>sT<&ol7C`f1++Y>~=F-nCi&E|ngZyMBBvul>MOFLP(^OT?wVY{AG5#%0ebP|Ic5VvrB|J9lJ0KK#xK zyzk8j3PgtucN<73v3U(4$=EeHfYlJ53hFOhl{|I;!rfS!zmo7CK#O-i%B{2L2Oi^D zU(R%U3fPIC-=S??>km4RwFkhG<_e~g|BxS06az6hwJlA0QY|zVjhEzHbm!pyFqi{X zv-Q7B@kwv}N%fufX}{sl6_k|H;Z$+z0k5Oz8aMF`*qp0;LJ3mF-?5p&{q!~T+fluo z$Vk#e;wf#^yHRN}biP#91!)`?%J(kuWFIjNY=F5^KEu7DEx=TE0YHj8T&Cjg61)0< zE4Hq=#@|yv92Lg7EOM>2aMFzoA@Nf4{@OoD6S$0VM|+qn!fub2Me-$-6JN3rApr|Flhg@O)d&k zt_m10qx#nU5oO3wG(FaK>46YV{;b1(73PNkqb<~&qvQQJocXzSoAs6?@K=beN1ai1 zC1?5#>%LM9aebiqxw{xAau!QEd4MW9yE0|SvkwmT5yoQTnE{SnQ(TS=HC&jmt+o&H z$&V0JrhWs?@H7^lJyN&h!OEZW`29g3R1THH9dg$lVPP^OST;T?A1ovXX5ZPwmCI^QHS-V znS{CMF3pOY01CXz4z4&s+Ix7_xZjD*b?dzw{WQTJJp>Hz5kU%GAV~-=xdV{9Fufrp9f`9js^GRf_W6WT~jO*qQGdhq%C+MwmS}bUrm1YZ^SfjQ@iIMup&7)H0+-8;*%XwM9@;amBAeG)o8lPnzE# z>;9lD7~_gLLx(>4gv&nk`t6M|f9`_3LJeW#V2KKf(d99QUkxb%eNtcXF*Q>eUQ3cr zAKP~FQgz)Pf6kYF7Lk2{zNWklNq#)zy@^H$#$8yK-Yg#E4=ii4=*W;gb~qo)6s z_C$#Kd6&&F9}Cu->mCSm5f+SJA>Fr^s+1DJ)Ic#4#9fckfE}q;>N7X2O1U((s5BoiN7h!yu(!_*=OITbsKXrOf(oqRQPm%?; z^)EIauhW)v(#kh^+iSARma4eITvuIKZIw3_Tj@qx>85OXXPvBy5$A)IY#Ipo%=ugh z_>na5upi@;e`c^?V!hdn@MRgtdxBN@qi1}meAkm6WlEKft!-Z9gP5w6b_Eqv^9D`_ zg3Y)jqpP}+txoBl+WIz03=)?(6{UDm^%jx@vxW381nG=VYeyEG%zG`+5J_@DKyG%_veP?nuk^II#>J!WVXy*-4S$s^ z>$t|`gSyAuwyO`WzJnGYPZ@XGqgIG99mOEfU2VJcpR!n@6&%{u+W>D!lj0stK$VMV zISyPP9u}X>-!Z?Ed9INUPuBQha!he<@|?F8JNCmJM5C-{3EOQBFe1KKcJZl!^JiMi5| z$0N5Hy{vd^egnQp0mJ?M+DQB8&N}P6IOO5d_dZYc6G`8absrKd(5){az zTT95?S%`aVvf@DcJi<4$-8fea<5*z&gjLlXS&T0U$GHP=cb_1JgWj%XH&08DtH{_RTrex@gj;lwW!fWq&i(RWMBWF06DlfWp2lOV-`qZr+3ZuXg30GW9c zl;0ht@g~^~`83iU^YJz60HL+$+I6mO#_3S(dWLsg-@|;$OZ3CL)zP+2o(MN@GJ%-G zz?O#xc0YU3J?#c$(@mMN1x5~bT1`y*NhDrc6-<2L3U1N5HmGI7h~DI=|=DV`^`#VVe}rz`X_3I?^$Qqu((7_dm3_xd%RffEC^4h72nXO z=2G$OX=6O7=fZhmU5&$%nTMInfEjxQCwPQbDGp%OA<51N$s>woHyjGI~URXv@ow`L;@*Xx)ICCE1hSkN&ni##t%%>p0hSXaii5DjTl= zSSFG=1LiBI70|jwBUx-ZWRYU}m31A(S?feFv$mC=jgpR;A=_B1KZFAgPV&U}3Vm?F zvth6Jb+S-|u*{+R^=IKK9FC^&eqU#bUM+!<>bMzjDKGJojPM=01GG;^>-qimjrDqF z2$^=%Yx((IV^2sjSp!>+fJq?pDye6A;<8Xj4V1TM1p6K{JuZZfcV8L`L@ufUbx>Sz z5me+&L#fe-bnOe-N5FmHFlV_&r$o`=-C zN6H-XdQO2E1Le-TAPA&nVOf@m3H-K2(p7+LVr7*cl(!7hx>wyR?VOv;$0+-h-jT3M9xX%j9!N+U?LMiD7*Ef?0 zn+u(cwXL7-c)2*wakPtDmHxZuTW5VYHThNtbx{a5Uz4X$;MyPG(W}7TY%d1pzVN^2j0_ZP7j6?(I zbo&U)HSf!E?{Q7*X)UBF%5gky9zHBrlb=Lowu+7+5;|WE$KRw`t%ftzFH+IX@RhF? z7E~!iB5)Ix$w@KfX8i;72c2NFpuSIO>CWc7rb96-U+0G5OsG`vS42w~A*y3B+9=3z z=JSL{B2qKfC(=MnNcFF)E_O}HA@wk*m)my$$H;p2Y#r?uJUXCn&ON5Qdz5zyb?&YZ zd>&x^3R2XPT~%peWmO`}^OF;lCG*2Y%ZMinVM#`!==F48k(sVW+85qVqHL7NdnAA0 ztbA+-3pup8WVw!{Y&RKxXDrlo2IdEf-bCx=-QSKa1Z9m-rO&A07?edV>!#&B+bfga z>8yJKB`;g`r}{%9MNp)29r4gGEFm3b>+#sZ(qbJ;i46}^xyGal&g^B+-Wnv*kfg;*7*fc)HoDW4#HAuo0k2({x#65$7*AuG8l^x3WS0V z%rxI3zW#9N8!c@|z#mChdK;nOfFi?^E9`qLeopDggDZc7@088tZP6hOOBa5%?X=;G>^J*c~Q z3=V9awaobfa%A*c=NT#sI1`A&4f@bi1u*AW^>k0YzoU6K-uXn$m;PoOOm0pdXLqHE z4kf07k*=w|aHg7f69F66*y}#+0`%aT_Rb;?0OVrV2J=TAoyf^6-g+Y|#EBs0p1>Z8 zvHT(!94=S(ZoK=s-hKZvtY4XyODh*%!XSp!J0&~eY?iTz_!(Eqn@2VwJ7!3}v=v7o zehe)EC=0DHQ~YeDT+>9|0~0oPVINtMsl&Dj-;VU8fgN=7Ge{3v!@0wzVzXT|Uu6gh zTX|C@j2L^{>~eZZxI0x~8#`Pjz2kLkPK?)P#0CPUWlQ+@GTM{e0xP9KIbLlj?W`@) z$aiUAE<~8IOtWrr&ae~3ypFT=U%rB$Cv;7ADi z$dppqb(B8(BLnlLwI&%{L(R^dT>`)AM*S4ci?H#`!Rw);BK3d!1%{5AG1QlwrmcO} zeG$t!G=Y04TZO0SSf|b19=BZYgKJ(PzuAWU2Bq8leRE5k?MqCHe{ZwI7dfePzg>f4 z{l+gi-N}G1i+iDcika~0rBrp1Gm{2<95yI|VlMMdd zC{ces(((RySQ&FD#blqD0Fn<>L3c9sKoYeQ6$mpsRbsw(IP(;L-%i z`M&MNK5>}LsW8avzQ4{x|8=|Lnzo|NU&{DG7m-4AVPT7Jg3>#P!+OX`boWl08y|~- z6xgja4LbDj2!dw6IF(kPh8u4xh_Qof*Q~%TRN{>DZ(B?q%|{&T&~#rT4}$y80Jcea zbqKT}D@Q8c3nQ$J9}k|-=q_@Pv`|Yti(vDqg6T11W5@d z*VrJTlu;@!yWQ&NQhkB3zua|S!}tL{2-;U}G;Ew$h(%CK!Lep9r$5suuxn|MpGRUT zkP5sw-ImG!etRP>r=g2tKWW1%6&oQgJU&l|Zxb;cz~oJVAEI|x)*@y980YAR{Y#^; z-x4XUQ;B64&lFG^keu8({7Wc_wC^~dobm#lbuPFq1#WwX>kriZK!2|x%X`bG!{ioq zdv$ysoL#SkUWmkLD|b~Qw+T>6gb^jraon6BV9%%4Bk!9JDXd@~ZF&tU$V zU^wpZ;7q1;qTQ}jBx2!V*WrR2Hy9<}Ype0sTtL>187wX+P^Lq{^r7JX!(-yLgNe%s zHDxBQRH15_tKM%O_exzIiukH1kiug1bVY z8#ccmU>4y0h|M~NLjHr6Z0_ucp}69<dJ=t_SHWNF zNN_pZsTuDaliPP1ji~|ula%{$;#=`E0w-jE^?8YI=vfMuaNFYm3U0+}mZWYv1pC&X z=H5cE=OKI*&-bO*`nODwKMqd@DTJm`3kklN$gVVn_NXm)Jy)Ts@1<83nw1y8IPgsu=&mRqNq2ZOQlTo=EL4_H1DGg4vHC1lNrX%za7YqUE&pUI~Q zDJ#vi8>7>!5lDo+uy~kCU)dGEX(OBPAgIuL#FLGp{+`ftqIXS~W4= z@X&)i$~`6*EnQg|nc2om zB*Z~KNE9O7sOxinAyQ~wYs#^;(NfLR?rIiMu)+^xlt(nls16SsjX5kRS z@CZ&=94+v4lqY(b->}^#UM^m211K>@Ge38z9XVW77|AXjY{lO=t@u)Ru2JTyM4%Yf zM!R4CP7Nn8cmzr+`?2~-gZ4WwwEEb4!)>&hYN@k>?-k&^v|0@+IZi`e#U4*G4!QR) zFI&ekbmKM{5=v`jX2Hp=oE^sOELYq-fonn~s9 zl!!gWNhDY){ejY^YGQr;i2d*Nya35^QNBWlyL1!SO5W5fM3riGVPR`zw9}UidPkpS zdzBOe<-X%{0SA7dngJStnzw&Hmk+*TW*^4(h}r=XCfbh)WjRfT4(c>}5BMo5TM>C? zS{5JoZxRS4P06U1^!&tmzAn_geT47KoR{msOhIs8x)ShY#9AF*hH*7nMY(oi`|-Jp z$kq3o_40J?Q`lt%80mG)2c46h0r}UsXKBrmD=l2YIw);+2oP=*2e8!oN?SfjWDS^o z3g{^-xH?08cY~l7>TG2~WlGIrdHx(=rxC1g-JrD0wGsTJsZeqmV_$sMxK9&*mfv#e z)%6#0f;2Z-XIW>-^N$p}p(>KRTzWgJvFA0U%yL+s_XRW*qImYw+!6$ROQdHM++7?S z50NZTvyvuPJ7HV)1E1SlOXRvXcGGMVOP=(y4;kAb1UzDg70x8=)V-xM&uA)mpL9)X zIBaE1qe1pUq3lED)f!3NK`)wXX7&)tM!fGOz0KcTO2nF>Ra;y?^+Fu@9bi~_3J6fI zm&WJVDg(5}{px56vbkvVHQuX1L2M+;+7cAh8%GH)Qv;C+$&dWFj@@oAuvwnE7Ynnp z3RC!uoUsUH8d(gAQX=`7>Qx`#b$k56D7x)J-WxX%>6f0hLyXIYlp@H}EqW-2`Mfq6 zG%IvI?R>ZG_|mjzK>#O>Td>z6?W-IpOeuE|-w}J3T0ARt!(zbXbKQ{(DO&39Mxx|% zd2Y+U+Qe{bEDNDpKK&lTs3A9zk3p8T}p_k1$`2Id$`yEzh&_>m6edlB9eMrfVN`Adfw%H$Z^OMF8M}ve>E-;H!T`fO?|bX z$P^F?EF#M2SfnJ0iuzVDDgdLE^TK zsvwc{w+7U~@B2g=G6YgtdOJq9A=QbHd+!%h+mlX2CMK&R>Q7?Q8SgQBn)G0|DsD!c z(MTbwfXwR7NDf1I02Kl2mIVYg5)$dK$6K=}>-p6=>K`SP+w-=XHr<}Y5yxKn9;*hS z`jNAb?1NA>sR#mPF`4LOY&L3=1o;KvNfR6P@zA5t645qjy4f*zBt+)|l(|1rl1LoU z`_ta<_auRexO1F}Bsvd|>Lu5z`GT;PzWzFKpiwmWP~){S_& zf7bMUGfGK!4&kJZwsIf(Fc~7KEM@)}*MZY{@NCNoQn+<(ob4kihu#4}++I*!xJyOH zeFeAYL+G;tfQtxV&-vcZUpuX=@|_erE0bh(l~{_Y9M_(S$IbSl&m$37Q8|k@j9{m1 zKOfMd*=8;&S?|$*v#hjxtyte6h`sVm zu=fF~9FH0@m&;Mg&39IQ`=j4Cs;cJT1H@3xDYfQ;*+;XF1h)=k z8ax{g4EYwJdig>vs*2(_3B~p?R?Q%D5~pn3^xk(%4rLC0n9xD%Qdln+8=GPQZDmiz zp;oc-!ndH4&LH-Ojg!}lHTkR<2^hp`g05aUS!nI z!i)(f zQ{y{3oC3)+IYl%0OkMegD_4HSLqBx*^!K5J3@7YIU`&Lp_TOJ^+o#Qr0VltDf(b*IH^Fv=&6KK4$5_!=t-ix(?X#1!P`1 ze^Xgh#6oHjI+3^`JK|Fyyj$5vaeOgp;Q}E`J+kv#oG|+|K<*F$x1ilZcp{7DWriYH z-ECGrZL4w5GC1xYV)POTB*xZuqp++1p5U@ULJ@{5qO^*lFdz8gyrDiJbv-~y74DWv ze>&ZU`4x3P3DJEZv_^1;Mo=&>)e*WG&}DY>-QwpLhWsakjUGmn7gbfNeVKIjF~f#W zyGCSV5Tc%47r#(g z4Fm;(LHjD>W}g%bA_ddNBcg7FqcMbg7v&q4Q68`3r(_%PB&T&m7S}2=z8^Xc4;GA> z)u(BY8Wj(ezS_brdSl|E;vGtd+rGMm{2##;AQ@w2h@V}Y9c`(J5ppLqY%PzIgrCB@ zo!qxRFak2u&Q`nzgHp>d)S=9mGI3S2-G1$MSk0GCZi9`V5`*8& znVMMM=^htD=>_Iz=Y0+K74wSoAi9!zu48w3S0T(qZd7X-;%N!#c(1}MC+s}dd{A2h zw5zCx4cg+LfA#(PjRnAIWB&5<=8w#clr`6xg|CA3$TMf!l#cDKK;oJY(^>}4lhf40 zErP0H;kjy0gJ=?Q7*yazO)xflhfIm6rKT%}C`gXKmS1>5=@8?Dr|5aX^Oz(rpb@?j z$GPOXOxZv)ZKltWbP!gjEuFG>rqQvH5IQQ~3nI9t=k~ z(Y(S#kLCUq`3!pKqG^R|-y*ac%qe2h0Zg<8Quj*LD1^Y?C z*p-xeWEiV{S&PZaRp86cosR^26GTOr#?cYKsn6M?Y1F`Kif{&=Fjtr~$yxCGW_J+r zap1IH%OQ~t#?R$k60TAb$iMhM?XOj!4k$wD^Q!YGom=uR}}oBGsnP`ioLTNlD` zB7{19^k74k(d;+T-r;rAs4eF}SW!xLOA@~E*W~xQ!f+&}oT%Wah@m7M!H=+gyql8q zcfZvQEYR!oQBbcB`w!+HokF9(a8t0Ck5*jUW2iLNxA3M3;HuW=zHDE8XZEuYFf_K( zjKh;OQZlVr{m?5iHVU!mV)6pu`n+uMpAL02Q;<@RSv>_D62R$>ckU0JRS&-b-pT83 zQrvC_9#F4eA=5X&r)gc2zOCoT3UPM=bf>f3dUH=s`^ieg-^yI=0)vimyo~}aTG+5#E+ImW}>;NXT2Uba1nmTP*j8X7XI>UvYCYath1IpEF)ooXo4BmBFOj;+`ra| z{1)vi3oQI>ex-|Nf{?m@Rl>h*gI<8UfV7~71Rvw8{}w!K&~c@SMy#r(u+S}}8= zGqa@y7M}E;76C7KhxQ52xLx^IQF)b(|O*Lgm~f)Rf|H9 z{3XxD3@U^pc+;R6`pXGFC<41uH?2F}#MDMCdG{H%S)(+PLm)6eeJpnV@r$IHilA7S zm#8uhL`_U<6(apz)B#M}WdS^7;~8HSSaQR)yePAKRu^8nqUnr6^TramDkWX+w2@Sx z5k;}7;BQECoiRIq)kzX3VmbWKKv~zkUgmehMPWjY9Lw-gw`HhDuZK21_lzXG{m4?h zmX#$(A?UrNX!|{v4;`;IK{5PrlIB*oH^sNR-X#bYX-UsL*^EAT{FA&%D$fRi6Zt5< zfwgLH6lOZM$dpmjiLLS~IK{qKJPV!*6RcHo_SL{|ifMj8Efw9Ndh0-05&co1Nb7D} zQaKaIsUPQQH>{n2t(*cIYT~& ztRJMDNj^J{kqamRVX0T%5oLQv^FbUYr!p_E>Q0wlBW#hQx^8`ud4{c0sIHlEaewJi zZc*jjWj)scS$%A`{SxNxk7?g@LW)TLnhs_#**;fzC9sXL080#ZO%2PI(k5PL$(!ny z%=M;RpQrc`{iz{CZJM9pdV^rFe~Cga2aXR~wOZi#7>IkHvBKdPFc8Cy@LvBOIfBic zuX`b)dSG^|ElLKDFYci(f+MLLAiZKF8mW8wCh*o$DY&T;cf)t<8C{oBP0OS^ShEL) zpC>H`h4oWUeQm`q7r6*E9eg}IoL`RS{^IOCjqgmQi=h-UuY->Z2Zd&0bn;7b0Y!&` zP|$0W<@{N^T`S_!!@0K)&m)X8Yi{yW@R~HTs_SX;37j+$JG{xo&2CsyRHd1SpQe~s zRU4Z1`h+pK7Kb!|$~r{=^LMtm<&Wqocb7+ubi~9#(hDrF1-OzywjV4!IpmNGYMjpO zD$61U^URFD{$^zIYiiS(9*8}z-e&s69Ji|woaw#K{{ZWh@RsM=Do}^E-xkW|iKXy$ zfCN&Ix7!9OWtyT5p@$0wO`K+~4YDY)O53}f!m>+ooR7{R&PgbgOJ+YZlccPe?G^V& zLfGfmu*#T&Z^dL6Hm@U_F0b|QPWNYU_J13yaIOsMi#@NZ8AsC;Qz6LAZ@f*>6<6Bl z9HctWfOSNjvt}699R`=PP1=1$<2A(oe&EHRGS2#@!C=vhV#4lBp08Sq-hi#}Hy?Do zka!pWJgZ1+5+QG6GNc(+;tfwFaC%C<97|F|=#^|vji=Rjkmb{UL>84VuNH2Al2Dzx z3S*b#2*DmOt5)y=f{tdpeo3X`}wf^Do{E)9o!2HSGo6haXl0UcZ~uixj7FV zsIOMw%MYfkLWDlIZ~2uoZsN!>Ach8QfF_EZe1sK%sX>zt=%6r4gF?d0lJ>628$f-! zf(gm1-gULdWtSsv?9FKn9Rw5*UuJ*#+AwYe}iyzHO^S6z!FvWf*Qy=SP@ z+#j&!YaM*I-`+d!8q^H$>sAp?Lgr=d*?F@2q-P#3+`529sPKhIuzNjO(pWtj=+CP+ zFV zraB^wwV@Om9+)(JVzQPhuJe`lbOh2njcTyCbp|4^rN*$2#&|poAEQNR!Msi{MHo%& zw&S#M(j)8fqxlA%>vwGRF$)~zA`9$$gpeJ>sV0?lswge9zavTgk$oo25v7ZEL|T2! z8sO;Yhaogoi;wj9e@+=1mHu|#No|`Z95Xquiz}*@x5W?9jW~CDL}y)7d3>9}eYMbe z(60U5tn`dyAD~gecZkgY8&O@5yX60*wevC-FA8=@Dj&b?Sd%5_%U$LD@F?0|z!2ZY zOVKd&mn0?%Oqlyli1&HochfR~sFYmlhCJB!Pb9f}k~^2eseK{QWGflL-dX4nl;A%c z`MqsPUMV}9nq;7o^hmgJQUpInNWBT1WTMz27Z)4!3^o$XF{LN+(a~xI#7iCWOGAgb zwVugF;J76YnT|bT0o9>;o)6ccIm0J0wz7yZwRul?UX^d8mFv$0NjHmb>Aa+Aau7+-YGQ`jPk;Y>_s zAGs~(4r{b&1)tKIi7}4mEB*QQyGFp(U($#T5=hn_G7((Pgc%k{H>#iF5!%HP4?yYqoN}GEa zHIa(EkTspG>J|C0bY1`BfO8?{GSVU;+l_lJJ?F2q{1}@|`Y#BtO=Z@pay4% z4(f>@v@d7k^Dz?aZid}S6_I-VSAnclTh_NrMq?Z!#(c0UOCGeMB*uP3Jlok0?xW2Z z)L)Gk1B8)Iov)|4XHf`0QqrG49P}OeI@Sp$Wqawp| zXP*q@cjKjC^TcZWR3iI5kl-?0@YMElZofkyI8VUsR1iMP7Y99U@!xZ+zdlOEv+BETzlz=w+Ney~l&kA=)muW_n zewZHh;WK+L~&(sM25Pl#N4+kk2)5|Q_cZc=-0L)LT;mQTZzcd6mFek303L2&cb zwaTsY@<$1r&Tt$VM|+!NH!Jk8r~?^2ds)LuU}K{ma5WsEfZ0Gtx?vn+y5ws8BNGx0 z9fKp=8*5Mxct~?`b&I`|^_O_gzig&^JNo3lnY33}gQ7}&Ano9G z)|QQra7TMf;c#umd`u6wjJAaLhwJmOiKfsbSXSniYXPiy7TU#4{0u0$Th80Tm*~og z?^IYVFJlb4Ot%EBuIdA0TBx31pY>7#33w=UTM>3!j9-6P&7*q-abyR-ibYN*!G4WH zI22iyew3`ij8x0%h)HI*8TEui$meoV3Wkia_OmD>T;`KC6e&@#*|JlR*c^*x0FAO0 z%i@AMM6z2FlG*g|wN8hhhLeTg1|W9B(ld;5mnINcywON~Ziu1`j#m^UZ8+(%y46|>^g z85Et#8^8a>(VPrVV`{ddMZU3Y46C>Td_-3-hxU>PEBC`&H`h)go-c;Q=F8-ifdUQ- zw%hdJ8;2C`qiv@$=lcrFbyo{H+h&;9eJv>!ruuO#J)pEnqU*I@J16B(?4q`QE#C(W z&ZhqR^CfDMdq0UkJ_xEHy+%o*;fwS`q>c1>nVX3*Ndv4mEus9+8mLe7_4#ZVL%PT! zqAHu`u-=zAsPxGwo`UUYYqyH>z-RmY5zDsO^V3$Q`=>!>nrfe=mP|j3tnhU&dIdpG zrtV-n&?CVAqn!#Zyg1Vi)A2!?+l0%n!C@zgf@~j-sZ#_FKByy-F%3E+Ys^3cikI42 zgtX?+SHUf-Nux^`DbYZ0DP#8{-E5-DKo`6=c(z}G`Z9ng?+Xlc~9HC<>KBn}K1sG+n01T<}dm$)3s?;-BehK~9gu}^NuHQpRc`1uKj`$=h+n9377 zTXX}cf3eTKF(vz)O93u>ECJ(rA2NEpr{VoKumdqK{F$ijcX!0ZmOuyX(mjLXzE1JY zBl!bB*{I7fY*xH0&MR*meR%_Ae9_2Q_s)KzzcvasM|uCe*- z!C@8ZjG2i{w?ypG$Gk_SzFxl2jZ823IfCe($q zJ8D(ElsSoO9T6oFxay4>Vl{00wC(^5DOt;cvl=S5l(*!3n+k$tCdVq#g1!BXpJ}gk zeiRqpCDJGa!J45xaH?ss=~hQu8JHc5FunQQF4kntMa< zh$|{osdg^I3A=qHz92Gx@_F1VPV9&!cB_VXi0b0sm)%2ndg!Ur6t5WZ7Z<3^O5?w2}F|a;O6e*#{{1>4r+yEvU-$I+|2O&;=bY;L{;aNJBSFFpUM%gAhYTafoXT{cyjdYNmz+_@uLu$Viz+Ao84t`Tc`u)S&D(OR($L z9yW;tU05T!wO#vJUyT+?ZZTMAEoOyre4$ua?S>L$fKs53jIMVI?+8?`t5FsMb6$d% zjupdxEGfEq6w*aCZdd7wdz8|;-eJ*`p2Lq(;*VSfY{L%t^OnkM{prQt#0MPXU-(Uu z5no{@JgM5In7reu@P%qnE17nJFy9Lm0hvp(8rN)JCMY8c{xO!)ymbo!Xq1Q-7#r+- zh!N!cj!E7ZkT>s~ZYjJFMJ2|7e=r6l$mwqZf0ue19Muy%Hza&HfqtR4SF(_o+fL#8 zPY1v)ux(6Gh-zocYCOA|JYZIUP-o6Y4G^DN#5+U&Nk-uA!s-BR%EHC1eu%-_Pfikw zw3XRmkE~iJ|6|lAv5lw?_zbhMaQrecZVdB~p|PGWUYuY@kifoH3MtWJ;7hg?iiJl5 zgS^~*wmh&(Xgn-4*p&;81V2;q$4m}HuS$salM?**D3JW#CmuKJ;$D1Ux+uqe85v(F z8S10^?a|A-3oh3QSI{x&4jV$$SJbzQl~}KN_mzc{`#UwvZFG7$h4EK;T64LxCF8P@ zEBDuCN3G)Allf(1JRMx6#lQmUX;~Xs5=g7(tP$lqv{5;tu;>*)?)a8SLPZorYI5t; zcB_#Su4sw?7Mp;}_o9DT?U%7EYi@xa>BE?bgui{p-ZK>uJ6EEAe$Tw;@K$%|7c+*P z6W})kmMaU4;HtUNf>)o<;ZaB*IChoyt413&p{xSUd^4@70Ab* z8Rx2}v8q^uj>Y>C6p8p|B_Z!lH4>^Z2bd$fA<3tu4iVkdL-g1!(`ok*5R(;xjg>ed zw?+QFAjmTTECAa2ppSxFR@inRKhOPXoz5ElPN!#S-*)_Y?k1|WP3Ejc3Zbbn@23=9 ze1NTx`xSUpcQ_~-XS?5W;))M>-0e*a7WbHMphY5eyxWfQ_6E207CvqGEh)|xUwn*{ zW#7^gw-u>Jr3iiZKIXvsUpsBLwANmw3?mgx@=3YHJC2N`{)54YC;Tc7z(0}1<;W@B zeiKnX>?sX$_?IPrIfJ36-e8w@?MO42Dc7s0-qZ&c3q877ynM^!3JD5fg@zDL;_&l) z;6LD-BpX0=(a>K3Py=j~?zXDMMD{!iQOh!Pt8kdx$la=td6ZGQ-KUUmqNn>QkWDQ#j>RDoTT@LNERP$vZ z9?r>dHy?Tbr&^sc5Drms$9q)R2%IfACxbtrthi%?XMV5?uzs)1;Jq)Hla|dIJ{pR= z#>LzX+N}7%>48+7!HsT=WbqeSez$%9K+}5eqbF}sn68%E^gs(8rMU^61D9wJkNm&0 zxeQ}_ibeaRjwH5NOB0_8jldfqTI7Q1a7DqGW8PSw;>W-uOGs2amphRPl4hxK7Zy8g z@&9K7?7H@{LzZ~oz_Ze#2#$h`e>R-`b~zo9DV13t3@iOz;Z1l*o^z|r+V>CqcQY*J zbLqE{O%_WAT0xCWB|CVVoXzv%yyxBvuQ~SZxak;zaF(0&#~>432`a2)p?rC3CQYzZ zkN4R$+?eTK|0igAwC*m4yuLJ4Xm}CVY=FQ?knibRxhi*4FmFR03W4O&PTvUK>FhkD z(N-9cShzyE>>=N6&)?%9C=DWB?}hi^N+zJ1Z=N&f0ED3y<~aT`fB5AJAAlyO-5lT% z`UXTx%fnIRI52SN3_Z7q%J#$zDs~8BXMU>{*SRT5Y~R9s2*7vYLQ?kp!|m69fckqE z5uXUEr^I6f;gOw0zI^k-(((6{+PQj#6~F()db7*AdLEc9<0sS!)P?@3Y0+|Cxd@ZR z-VcjdI7w?^2vOt4mS)WWUzI!!dCo5`RH={)BL!&Yd|q4x?8SK6hr(fz@=G55Yf?5q zb=(2*(>~=xO@Fki1`-_i<5$>O%V;}UGjjEH$USXjd`Ez8!W-@Jdg!#KKj2Ah!#~{#@P1m4*tVk+I>;6LuLl_?v0n7)ru^WhJ`$}IMHs0_NFKd*0f+kf|iP8EW! zL?TY}?2S(ue~4*%SVhq4lA9Jy z%ocB2^Tt4nHsF>`W?i$WL?-7ndmU{xw^)K=BKbK$Nw-)eBEyg2#86T9`~@125|Yks zx_2|Lw98*jCtPI%+VFy`n^tWyzh~df)OGI`6{vqPq`%0}UPTIeLS^>7sb>lG4c#x$ z{lsMWv#;q%uUe5qgVYA)-m$~yeDm~Pg-tu@NGK8$M5lRy+N*9$E;Z|W%@*U5pssq> zxj<=3x;erDY9pFPJ5!v`SAx`oLT&(xfIwYGx0Ijl($SRHiUYP9i#-{OtS&WfWj%-e ze6qN(x;Y7Y1hr~gv<~wro~;`fB=h061@KX1D z6i{N>chh%HBCBCMQ7Sp=)xHZ^t zc(MyXYm9Fw)iJaiJmE3CEr^gm|^WN1Q$I$$*k zH^^ucXFD>^z1fMPmzleqLRe8g+x+WvQQCP}Q^=p)h-r7GjO_Y{-9Oo97%^noY6g>Y zL24L-MbD?EkMWSWWDshWI4dV1?KrAu*o82iyxCR3t_L-8SOEhxxqA}?sSY$*`WC(O z0bVLZa`^v0mCUcpx_SNawe)-zA*~{NL$*oT@}8st$7LUvsp{23dG2)iC7TO=S-5zK z?@&!tUzB<^Rvr2}_w|Vatz{a)iKojY%6BE^reC32ZZ@iv-^`=s!zBgWjep>-ryyIpE58L4h|CO`Y+Cyx_lQ{t0)VE>pr=WE~I8F z%l(ZIB;^#Xnfy3}sr~A*LDVKuk+dI8ZlNH)QR~K3UD0_ap1iJ(CM@6)GPlqyx7 zGM3q|!;GA2^qj}}3&E%ANPF8oj^B5FL76-28bUL=hlH|W=R)c=<+oFBPTz6>~4K`0-tVv-`WMZvx!tz;KL zrk={?cGw0T_bUBh$y_TaX1QtEpl;m1@jIiN$@GYam&TpFCAwXXM)Gc5nFhJVeXC9OA>$&kXAbz#?BkDN+rZ?%t;OAH z)adQ2$ok@mskpGN<|QSt*~&%Ma16Ws z-a5~jS$A~d%yE9XWqs<{E2gD9q6!rLAKu$DNwvGEZnJuv&kHHCNeN41JyolcC@;)F z+!^yK^E=HQb%HS|a9VD*?kp$fMwP05m8xRS8I3s< z6ZopS_R%%MeE-ul6%ApUvaH78#bH%0ymTh(*ff#3>H=!AaNo!WU5Q z@XHpc@Iu3=SL)R+%pA~$Bv?O(_Zwlmm%}>!{zA{&E>sTF%~Tjl_JZ=?is=54W>>I~ zPLxf8??@gveOQ2NiW7q1eT-Hhg!#SavXb?6fu^)dJ^X&TW1#;(R_q)m2Vx_`9Bje_ z)u&*>NnisLsRYawTMmZz(ig7log_kA1)|nPF7ST`h{P;%zkhjvZOQROq%>WAPk!~$ zGO$GRiQGx?zS-S8eXAGqm=od+2Gg$CrUVj-!`^j+-w=xWKXY!G(?;#`kt{mo`*zK? z8-Vib-S9c_@#mGN^Q}0535Gi8F{&tinSQ$Oqk}5wvm@%+Mz7T*8P4dVpZ(lNZ0rh- zaOPc_VH{UL(`)knYP& zZwz6YRw;m*SANVr0VxnIX(6$iVQi?tctqsFP}?L3A^%U79$Eka81?Qq41<~C3& z%Z1q|$CiKWIO8(#-GOnA?HiTW7NF6QBEtLth2K^?^rhzL!e2Ym*yCvAeiilkbYYzH z0DP6a94~pFLVYf;5FxY+E7F0m$`*;8j|AoKQyZ_m%W((xIr)c`-bo>N%4aVG_dc%B z>y%|)*$v!1M<-2oQznTT!UO>3R%<*4D*d?*p#hbP4C^8;?XGaa_Xs%4k9)fnnh$rH zcs#Bk($|f4>GujQq#pdF1Vic})%cFSvbHZ@o3z{w5C5kNTmk*q*{KKrMhx)QKNX|? zbX+>SnIC#NQH-aLU-E}cr$A~7x=TlTx-{TW;-E;-JGy}7wDAQa|6S{{xlHJUGx-$} z_kp>Bc#iKAiF)E|sGVuz+_Wpv+S>z?US`!#DS#>U_W}_-gAv8^lvXD%r7jr2a8++l z!b+aFEDf*ZLu_$UgZ6PsmCTb8(uY@vDF-Sz%JB#}Q(nuzcolRR#RhLBDvhIi4957d zN8%r*^9WzUjIePZ_aU`Ohd@VpC#9m+VY9GWt0PBlA0X9}k?=A+YfBwuMozQxqS7zp zh%xD%5}NJz3>FW=zKWV><`}Kp*->(+5$;1z|0hp%{sq3Ek8GV>vYp+YjQ@@H~Mo2TXVPa0jCR@8}ovX?xh81xJm~L+6te?cTqvk-# z@!fKAU;cas$WQ-0vO#S@e(<%LNib|f1ji>f(94%~Ha+}~y%eAwCHHYSXZFQH@2IUu znQO;VNUFU?*Dmt$&nQu7X6~i7xCs_>F%>X1!L&g4$}3tBrBq+F4KaR0utrDC)$C4* z^Dzee_dvk^$|3$7S`glag|fe2TeKdaViiabZUAaf=A$Ebz%SuKLk-U%(q|HS1aRa7jn#_ws$&+xhMb_!t3r$pgy&=;htHy0Gr zJ(XBI>zOQ5IOH7ZJR@3NY9ehS+ODARyO;=E7v)pzKOA2?KAykO0092%LBn>d!9V}% z2j>Qn7!s^2rq>IC_Dl!6G4{M-BFKVKl{oM5-OzrC+#wChha1Yrk|nuOh;xd89#ysw zgQ5|G%j`!``p0UU_Cczu8amyjNQhKoPCbGYeI>?%;2hYb%t_8aN zDb&A`8Bs5o$u1ba3KnMlO#>@}DF{L1=1W}~$VpfEne)Qhn8HlkFaPzn<5&SAfR6oy zjky0w9lA8+a_d=kItJe`UbA(nuR1eBOj9fls9x z^ta3cX>BN--zCrZ$>c2=0!&{dyWL2PW zThQ3dxnGEJqjH4(a^y`HbX>i%EMh1mQQpbm-!Jw)(71iu^grSZ*G~?}a{@14vi(I? z<-#ae__TSmNZ*7*o|@MsD_7aY-ZfEqy=K<>P7|QR{lV3SQRVc*-6GezhNak^AvY+z zZVjP)MtN9FmoimQ((3wwT;bg_y|AutZ%>agiJ8C;)#G#YlN^vj@5(rRW#EI|(MP_hVTs-oZ;=Kp8TQ8&` z9sRdL%r8eIacIrHr0o`Jo;yWN%zEB1-!nEN6@=#dm~;?#+|Od=bq54Y$s}Q@eB`-G zCF{XGt%Cpbgu&nk&hShFFsaR!)!~sZ#j7R82nJw;vOMJXX4TaP6owprSs$wyWRZU+Xyx)aMzC#83xByf!MMoo>nhznkp&FNC+ZLDJZYP35V zwgz8x``Aa1>D;B*VDEnCWDR`ORTuCSYKk!xTbZ5cE4>zws;WT!*^alqzs|;KSjPg& zMuOIM`z5@E!#?LIK}RWO;%r1Jk-nwkOSq=)_$;2`HWR$eWcL+nV4@-!}}a1>LNi1+j^)SHXRvhB1)MQ!9fPq@j}GDxa9>zr8I)8*?o ze6WxGNeEQ1_zfAI45CC}VzMXCF_VJ8pfbs=!KtIiEYmZYFZArmgZ06-o%mlL;r4Vd zU^th{8O{;MFd)?h+Lnk#BnOnN4Z~f{MNE!|xPSfBiC= zV41h;DY3=JJTMUPkNk2&G_B_5{MZCYgoRJ=WHvPUW$Z^Ijp;SrV=m8+QzBK7bTFD0 zih(MIQCdvLT#a|Y6jn5M>tdK^vIl}@W(t3%l~q7!WrD>6 zE1M*KmFSQ?4}hK`m}96Z{k;9tk5tR?lSTWPkC))^>68|)bp|6VtD}fvc6i$b{v1p> zpf`RJ>crJB6rl4>Kg72Ho+}G0s)d{Wu0kDjSpYrD#W8YB_%IM=^YBEVe8_zd@ zkR&hfT5&~f9B%&wGqx2oV0-eQ^2mIcm+MkdDhwT0752Y^QKY;ZU{RwOP^4!$n=?Lb z+htLGXqD+X;lkwI5_lIMEP?`xZmgc#MES%d`>e3LNxlC6bqdOc zex-snbPCBxTlhCa*N;#G{Ni~4|5(YVPdueAj1EvllG>zhxK>R%3l}91O3ACyOj#t_ z0!^G|`Y~Wv6N(S+Tt1rAJt4j7OLeHv?qZ(dvrura*}qwG`w2Hr=~Is2fzm zTS&897?J=VHeKf9M1Wb0bdqRUDty!G{a^vj3L(p=oxf%`W&t~$&HN6^mb<=$UF$g3 z^CS!>nKJP(5tItCW+0x&5rcej(d1YVLc6H~^pKYFt+t37OGw^RP}(|7b?2C38`bJ! z4!CTWgVQ1a>`tb$88B1_4qKUa*#$@_=6fepfq6NXb0J^9xHYrmZeY-bLFn2`&VxJ} ziA|+>QeOIo!BU3B2|B>}+Tna6quW_;G?5Dl5F)BDG`%%hZ_MKzLn4Dv9EopQHQXiy zuFRTg4=BIX-XQu*1U-3D>W+-yAV*nh@I!>HFPSEx5$ z27fO7vhWb}+A<^<@H}9zcj4~Q`C^vu9~L=H%tt_o)c};OV>QvU)BJG&aKbs^Owp!d zk`!yTqJXD+{P+c;1=>s|5R-r@m%*(*=3g>+FP-zh_f*f`r`#G9c`bA);ndz?oEB;8 zGoJHFOt6(?R|puw-zAmFCzMI&vSb!S%0=fkrAJ648tLM7mM5u%1%jfxQvh02z`omj)m(xgSA8dn8ZT zgy%;5l|63TTmRA*&z{CJ`Q!K{qExDyp5J&L;*7WqTv-9c|1oCx&X8#$bO5Y78g-GM zWo0U`1Xtca1=JkF>JEptf&+f}Py^&FOO2W9DlJHh`ut7?IWTbu4SJ?_^Mafu+!!a! zZu6F8l+}q<;<-}=a^09hhZw2_+i)M}r%z}nfptru8OL`R7-s z`{${lec}eRf}Fu^F#414QE85(umzMqhfC%5tOyXC8uT}v;4>6?nf7NNGzdmAMKm1VUnSS+!T^P1@aF&+`6jor*{~bt2af}>h z$7HCi5Lwf)ku9&A2fIkq*<4%@0gEu^CU=go<(iN&mCbCwgZcQ@86YK)9&9{v6dm5x z8c;o5@8+XhH%h^$VV}OT6!#f_O36-}@=@!|8TUcwK~&Go0<3@TEW$WV{W(}+lQj)C zb*x5?wGBiXZ-rx;`3S)mUnj8Qr|(Z>CF>Zo(3I64O21#-h>m~!Q(J~wDiI#XV-l39 z{b7CjKR~VzTr)qn0jJ9&Ixlqdf_?&~Ji{%^okz9^a}xY<98hkEvE6i5vfM`bPA z2H#2{VfF&p4F8-$j{Df8n5_sWf~$-@hcS}Z`Kzd>fR#ZaruiL|b*^RyJxL8D7TIny zhdq`T`j-Pkeawkh7$>mjNj5j<(G=INYFeFhD%nOg(`18b!?&7(K$YODv8s71LW9*a zj2HvyzN~+mtO*K6`h|u=o5s;f_ynL~uA^Qc$R$zNx~(CcS|d3zclz*KQ}h4?BIOv} z#ljUjd;r@NiHnaVdNP9vZifU4FX}ARKUnpiLv!xTWim6C3<`b`2yd(OHFqQUsQ{8> zV2))*h>}>Q(=bU?w>c*=kn+B1RVvKzR!hmMPC-@8R}-8sQW!{#o=GCbON*Q1yD?PC zJ%&{BkD9YLimF%XY^(B2s00x!sC9E2cHbJ;LP@S$Xdl@X1?FJfg!Q5{+a^Uyj~pbMY4$8YxEhxl2>iJCVu zbr{i0w(1=}F&)BQ$*9{#iL@iiFBV5?6xAzez zy)Qou#w92nK}{peIf|D*th=6uL3a^& z#$a5abKd2+==Rgc7wLQ;fU4V{?}gIiS+u{G>hvN`{1{CsXRMw6uKa~;263Z^c@r#c(It<>{qTXP&g@{a zreE@zpw{ZR^qygh#JfQ!6`CSLZQ!mLt=L|NJ}q7x{A031A`P4*0TF#&TCZ!f`Gw1} zOE4<^X92+9{_9tNKciislRZSqY-u5^+B=eya=SX?0!&WY>5DAx)eO_Py56zL&~i2j zxtx$P3wv!1JT6|}o-+aKedPfJK?&s}ViK?rikCe`OcZ=N?q79) z!N?LE#yDg6K3NC8GD^WKEqv#(9zusP4X%PdIF> z4uXhrVYa+SB&7nS4!KP*ZJKG*$=J<>EA~Ecm~b=e1KM1_b2g;?DRYN{Cm@mzvK|8dfL@!`m!ZjNxzC04%@ZvBoUD={ySGu_mq@0Aw zY)^F?RLk=F$!?=C7nf6b|1O^;72fNXuxYG-sn&&Qqf1TU{DjOkKS<>AVeJ^Erfp)4 z;Zp_p9N)V>RTS(cm8ha7$nFH(`drrD`K`K=Oo8fq*bd{{GMC$KI!*%CF}T2ApK#e@~hfk1rY z#7abNJ0~Q8n>7nr0)zKx)Pa;E0Dw%>te=(izL`h1wZI~|M4M%Oz`=WG@d_z_aaS3~JjDlRq|wMyvKjy?dDt)e&%Z#t z&*aT5p?`J}@0Ft4($1~X{wcll&zTK1p02d?we9g%!`px3>nyAy&rYrtBz}bq&%F7A z{sc{csh}mq*Sr@Tnivgv8&YhJ1s?&uj`zYk32k4^lTtSz!)hRIjri03QHae@|HBvq zx3(+(XBz|XQ|r_yGhqtK?HqBt>r1z-U8%`fh8Q%6a2P<}W*9i%%?9Es50||+Ah{0? z909igGy1UV{gZrVe&?KS8FV6veky-kj9{HM!VjdrekD&|zR)++ewc~Q=!j*PV?0s# z{DyOT(@dJ2);B+xFNCUsck*x7b*+kT9-UBS^VF5{hXW#Wwl8eZq)DChB=Yb$YhdI{ zo+x*fE2KUMEH$t@64B;YW3;3+Ms#qdio@_JKZk->t(3#BrW+7CTyYk(;J7Bfu06az ziQ1#>C*fZ!&t@ZGNNJ8Ez49Y0T+h3+r5w{h{8fEZp6 zapho`zLysZ9XGNhwF?HK+|;eBJro`*1%kyXH<*rbQDXrwu zW})h3ax{?)AY=U!;qOLSyIlz#g!t!aIGu_&Bsxycvg6}7)U0{?KD>%8Byq-5)v<+i zdnTOO<7p$3EcTVyli`ZSXvZ48!i(~UO$sLM%I$+8Kp(Y)HHB*`jOu#mB1o7+3iM%4 zO++7u)v)kHav68%HAD=yE7-r^*Bdaw zBCV(AfJQU^AZax{C323L30q$gLzo7-lNPok3F!j-Ti%MZGjcg05?ZGVu$#nX_%oa4476R>ovspSG9{T@Cx zDyQXY)MB__oG=ijjO*Em3h{5iJ`Yw1GC^`DL0E!X3`y0_Sn|2B2OPsB{MHE-Cv>gPG13?C`p3 zN*nuRJmG%7r^;E;XlhMb9IY&ufO-T`C)v_VTAO2CT-kYU1au#+6>;)ux>()0w(TM7 zwp;0e7;!Q+)TURpQZQ%jw238M_@6dSnaZjL8-@7FheKmHkpfs33=gr~m?~MmxD5Lf zU>}=Y%*Rf{^MdiFgxW~V;N~I|D^rn@QkN)BPh!qa z2)x3RXY+M$M#1bnM{7W~e{xTf4Y@$a6HMD*n8P$JCZyey1xp*bJgrTD1W%}!Rq$CB zM@<|&z5@)l;C4PGQO=tg$JRmK7~4XU%ke(0CoeC#@#07~ODOOGEffeqhl=b&!uTe~ za=aG)Z(muXAI|6irAP%pBG9IcsuNLm35H&W?PuQ_e$ioVHT%Z40=zkrNjj+G+Fe9( zkLUf>+cER_-CQ(4NxT$X02jhrpiNO!u(WQmM51Q(f#vrxG^uf}v98CmgQbdn_blE0a+*Dim=Dd2k$41B3?cvG0Q&q9G35s++Aqvbrkt=gBje3W%D`cyz-H8NE^ z1Wv|~eElMRkos~WF&j2?neO1TQOFN5D!`@yvZkiq=vRL=3xm$G68@|$Mq6r#v8IEy za~ZUt^;ZIZ#l2KRD5RKB+lYcq?M)?~QITw;7V`h94P@Hg9iyi55bvJ*o=PRG93B`h zUPG89MTbs%OHM2^=0i_WDm)JdDRU4nYy9U_VnX&0L6Ve0qlt~Y@^AQf+R=Y#%mcF0 zvOzAY_nuw(&v$RaL_=~e&hw$E$*G4IF}VGnsZi?@&|)Q1b!$k42vkWFrz|N+LX5U$ z1**yGSVDlwMm+_Zqkgl+^s8TvpgpxwT5X6VRWbRTxcRQxRYo3iB@Kg^)#6?~SO{>H1e6#luCvAAy6?eX#$<8wY#Qvbw z)R%P5!Nq9EFfj3OG)$qZ(wT={Yz(4;{1)&$Pk%hgVe!`1X}vP8A-#$c?;eEn z!03F<5|F@wT_O;0zGn*@amV3Bb0X20;1630dLKSW^dHUg15T`iN~|v+=nH!e9C7RS zc@foiSjOFe$HA+SapK#Eh({J1XojZ>c8Uc?MeB;&&qP_N6tCF}s8|_Qj0_mwfF! z5C6CFn_bCQzuF?0=;2fo=J2nSNmf0L@@f+p6&*LJGL6NC8jhVWk}B#$+(RVuEEn8z zUY||UmpG;GPgIs^{C~}Nc3W3Dv*6je1+gQWjRfVbf93z`ioiGOR|v_p+PuW;ZbI!*32jijzO7&q{^OUSh|Gb9Q{4U&&lIdWKrIyCTHKhG_K3$M= zr}2aZ8f%u#3*M(+LFe-pbps3QbP}#+33L6rFFyEJf)9vMGeN%Hw8FM+yZHV6U)!tQ zZkhaJrG^Oi;3(`oHEymU|6x+9I>qpSQ)|BOR(Un#52|o$d5O^y5baj@m3AaZS|ju{kIkmp7lq!IYAcQ{9t0rwxly>xg5uE3`JvUOp+?h&Ir=CJXd z6dy0EnL0!rzWv0Cw(xrkTsYtJH1VA;YGA(7PwIPabg*X?Ip5Hg)+#Q+XbwK{#$WU$ zk$7?4N&GfN5+4jvQGftbK&-!^23(7c2P~p`r>L&%C-tHvU8FVSvhVpSz+TcwIczwR zw9c0R&v+0tGVxuV*oL5lipQ%cDis$CFyn2vHN9T;jkH&~^~mgTLa)kF9!oUF{qsW) zz8628r316Cy|%5vI9?M|*3Wu^U4TxhnxW;QTy6^`@GY1>76UQk>YD4@y+y~62BN57 z4ep6Sd1T}RGwBKi?N|i#^5q>$nT;7;SNuo;W(_RWKN!js3vY^wF&Cj?MBtz>&4JQ&vDR;R}?8dyR&EW z)N3AQuGOzWr*=mYi!anNswIbHL}kEKTklm@Eq@ehE<4W#R# zNsbZ_!a{F4ldQ>v#`VFl=Fj^HXVA)0A4#MghfO}optj@T9rJsf0E;$JXw`|*8dSR_ zyj!W5`e`am5o|6vQY%@1qzSwAd0B{Uq9`=0++}{9Z<(E3qbl#-TJ@+#DPsyKs?+p` zpO@g(fjv@rItcuu7}bzZ=eLYN@q%R<{+zU2{4&-)0>-;uTrsl6m=nH?)-O@yqG*&$ z*2?=6hH4KcQ_X=kNmO1qn}+EGkG)xGwbebDX_>)$KvvlLQhQ0FzLrC1 zq+`^FpYH923SN)8Xsa;~7|arRCcF*@B&smGRpvkBIZlB>Ff;; zmvL>9oW>E7_s&S5KvAW-aJs#kc=P$y#L!@*i?k!=g1Mxm*JIlS}@0X zVvwyv94!;-aYSe9vX5Vwg0AGd$0l2iT`xUDuXy(GK# z=?6~WLxh+bE%WBf(O!+ZtVMMcJf=DroAY%f^MpNwYoEMNEgR=H5Y))(-}W1;MKc=! zRdGCHqBlX9b}S|#XlCf7BJG@O6&o#bm*~EE<xLd@W@dF>g&M}9^l_1buQ%4gLW5+aNkE5a~oyUi~L2`(xf^Q^^x zXTHTa2}w?NDzx`&*@&n|mQcv;@=jUsGlSf8f$)#^E|0;?ISod;Qt4TqySS)Rp*DVu zx}eq)2h8Ux-(o69zEL2xQgOUckhZvVsu}2zzM-`PVZ39b8T7Xe#v59CZI+Ns@w0;3 z3gS#BE7`eoC{N7i;6IiNaD(@xyI738IkcnLfkR1%VN9 zKEgp<^cYyDvqUf%Mjo07vEo18w7<{St^p>n3!L0yB|L=gMdDFEQQPE~9NOC; z(wN{pX5Kp-UBIXiKOwz+cmwAD^@x*-t(U4$Bv-s>9Ebjy@u=QWG?nQ-Cm5G*B8?$fR%w#!0I^!i7Oy&*9!Bx?ag zTthknakkP_)vx?x7~oE4()d-d408vyWv}~~LNqCd)dxH-kpU`zgT({vy_?elW7+qJ zKpgb} z^lUk)k>HiScdLB1&9F2kstibp0Lm0Z=Dk5nz`=2XxzR{qdF>pnL7SYylAWO?XEg7= z1kvDfTh7#XO>8FeUI>tEUZMH#dttzb{qb!KnBTZ=R0&n1yzH@nBsqh0%S)C0u1n$z zEBrNRqhHnlAL8W25W^fLfs%eM`FIdVd`G(e^CiGS2-&6dzB3cs(|^zfOS^|Zw@nOI z#%1GLM2B&z8HlhjWh=NR%;8cfiQFyZgfUijAEP7Fs+|&Wl8F`2m_Z>H>O6q?`ZH^O zFF-~Lh)@}4BB0rX+k&db+*)}rS9Jkxmdv0`!&KC?mFg#^Sj*!LXIJ>y^NSZlZ^u^- z-|ALqgh9b=5;D;sh{r80tbn;w2%ZllaQ%;blUKUaF899j!fd2ozFuJC7*bCuiUdTS z`8Wq_>f4uZrKX<=h9vD!Z-m&&d@EA=923>fIm;0(+%0hE2!m6>4UI?Aflc?X;(6=# zjiHZB>0>8|p)4L56POaiB5(T&vC>&B>Fsq%&dAAZcsG1d)|!vdxS@s?tyrf=d9n zv^-;-;U+w!0+NTJ9r=gu_!aQ*We5^XbG%~8f88pnhD1Y25+D0la-7%(?gDv#=40FMq+pm&PnkLH`dLW-pLm6gCoY33DIuX6+A45k6V-O=4; z+T+KO=Y9@`*Gj@Ut(2ix#B_)=A~i12gBG1le}IjMP&)rpT7IgWFbLF1=NY0b{(zLQZce%2ENjO_K+jm4r`U3B|tB7+1}C*>eYY0 zJZ$sj#qi4D@y$-{BGCkR=iZfaWsN*)jfV|)vjfjUDl^2M9`hd^sa!9=d!BI}t7DUs zvi{cZj0c~K^mEcfyFjNmMBcxxYDpa3kD52>VugKxRdk+)$#B42i`^nsKTzJ;+$SGV z3VpVD#*{nt3JT2+wca%ff)LQ00%jr7BOHRR7j4?0z>?V-{{(Qrc7!n#zFobmm;2Y9)PQrNfI?kb&sjLquko6 z{I7oF7jU1hPnzY_Q0vqn!S>3Z2!xS62MAsNM1U185BIpYQ6^)Ps?s3k*=rS*&NwbQ zRA^~(G8Y7NUyeuk)#KVvmdOrLC>aR-9;WZ zd{;)1;*O>7SajueWKjm&(WbTkgYm zG1~vBB;{4Z^=LKt*FG>^hHX}T#jBm-T2XM2<3kxPJCHQ8q4$NZWo@@25TEfF=puCYu#tckai`+;W{X)0F1ePoA-YOtjQYl zQ%vOJODqcS0n&IxY{}H8d#pqZgj^ht#;jv}F6k-Uk359XGeMT`UY1D(S_BDiHRUQ9 zft3RxwhXC?iL;aN;gNmBqcQcGXkuFb6^nkqyBcF zbKRW%K6dpy_}L3L>e3_T;Fp(fu)-etX4+~$^ODZvMlX)$^;T>%!znXolclXVYV?lk z(Z^28nt7!*+w(gdIhmyZx3wt_kPpr8GOY0us4C+^U$Qn7gWh6PT}d8cw#Y7_Td$IO z(g1KlvZ>L?Av;0lOj9ntX0tx5C# z6nLSy!I`OA7fO6o5zym8ky7xK-kCwg2^Bqmh~9F@abz-8JQunfQ-)Ozlg!ap1!(i4 zzx4N^_u$*v_e)H5IZ4M}1Bb)PJ&emBIa(-1`wI`X*@fPyU|^u`>%&jbyDAnIqEsF> z)d#ZKk&hhHux|*o3y9s(&`I@?fP9qXZ?mNs?f>?VW>!zf0$A78^1PN!8`<|2P#Ame zM94!5D{599T(q+4Q)my*-_x9t=xUE75+qk=RjY~Ctr&2w4FAJb@stL(yUD)VUo92C zx)ItPWb_gx@G-R!oa z7(m=*S2%^XqsoA`dslptY4QPN7 z<2Vj9(+Uo){Hu<4w%z}XtB%pC$L!L3O0Es$FzdGYVtx$g1G3z<@dj$14KGs`M6SZb zhq_j4Nooe-tyD`%xa3@kD}Q7I`|d)8(C|v@{KvhQ_&h%+?wQ zcyMxgU9hh~9*$u<>ZXC^(0>YXbo8JD4#BQ98LfD!Cm86SFC+d&Ff5Ht6X>jaGW2QV z*elKIm~aRF6zX<0G8E2+!yfJUgfM!m=5YCfET8S7#E%)T=JhAf7Hfs^gyWt1N#G$R?ySTi4iHv8F)S-xFG*1!8o zGs1UdkIKWqSrooFN^xf=`n}P(4_}pu<;Uy332+5H!(e{RB z?BfEf;SQQEg_>1S)r=xPrAf`y^!eIcKCW`NBd$OF|BIgA5p;?`iAQQEoinc=SZin*R>N$Mt=u;a+9l}L*p@&_PKB${>q?tCblWC) z*cYq6O!{4%`bbkkPJe^C)FChgL>}pE_%r_FGAS2aHWep`m6F2*R(XqVKz2}uO)Y&h z36>}B)mp8@7acq&;E-W#^;t?8%;&5Xao{i8RSFWQ zZ9W=J#O5ziRy#!iPTp5Ht5bkJPetx7R9(AQ<8asIN-|4Y=gl$b!e1MJ#~(or)_bd8 z5fbg6jA3=RjpXsLr2!&qcF{=!^1QnrCX~Cx3q{{~#xCoZV?k6Umdcxn>u2RX3eLDxI2NF)UMl!3_KKh zIE;_xLEX?GDs+fK#m{C8+aAuf@i&#O(br*!N=#*k>vk&%O|Y6=yQJyo!%{ulOwVH} z@g$)6uW1klOiG=sLPTAB!BCxSpL}uC*nCeBA>A3!T(gswnQDiKP^x@cAiUb{6Q*`m zMg_2I#bdw=5ryIwi-Y^<+}1~}1f7vkoPRH#TS7X;tw;kB(>y4oL4^;dU_YlFifS`nnoRZ~ z2ykv)Fj$hKceC-*^Ado>{VLN_a#A5LA~Lgb{}=IdrCcwr^A1D+cYMYPO4F2+d7$8G z@JdTK)3@7TjoEXWx-2=kDWENhdzE+V=8^sClXhVUL5}FI)Kg3i9!=9n^Bm*LF zv*c26qz1r`BL{!1wgIfF`ttH;(lOYx`zq2oCKUXj8}gZ^g&{+PrtEHa zWI52o)}wwC6g4dR-;(Fz1X{>6l-j>*jp9g1^c3@qqG8{r4*TOE7E(8Is>|+uen~TL zjqt$kpbc*2Y>$ltVMY!}@CRT!K-CBEAz%vM^RD8&%!bb;%iB;{*z@q?t&$<)hM#)K zRxWmL>@eDyNKrC%e%8qQD6uK^-_3c{u1UF7HHWT-`xJZhU0B5BMis4MWw8KtN`Qm9 zm2>LamWxkM@3rPRRD$K;0jBIU-YR4Zgho~(JaH*n6Sy?&H1;)khb}v z2emxlTQ#no1=%{x7$6q99jszAW`S)D@sx^MZcrwniH^+%6D!6HpE}>7LotB~St}Vh z6u|l)geC-ZZdB3?cOE9{(Y!Bo4_?})yL)ZFGR1OYL~r9ZPezU(k&?Sb)zX3RJq}?g zr^-vEab&WOg1u)}iO&_cqtLRniUgE<6cp6As$<`qd^}$FWzzY2`wDJ@%%2q`+SQEF zriIQ3jDw+##ZYE=W2R@s&8jLX9=%V)|Bva)wy4`P9a!g>18&s+^P(ng;8Xz=h(j!`Nl$G#wFhS~=}q?PO1{B+clj zydpSo%vULiko)sEhO{SAM{cQT3KXTu7pYNP8%VBxsYSI9*X;M}1VbjmkgJ*@Cntxv z{hwfQTb+&M;+!x3o zDaCpn)??wX(v`59Fs)`g`J+Eur|1nYn!Czve8YBHlMYt{-o@FSu|H+T`CLEQeOqDD zW-8E30sc7Red?D|`S3yA6Vr_tK6^dMaVAW_Wr90`X;yK_XU%P2eCJMeANp=_I@3?l z^oJ!qbZ}Z|FYiFW%CaM~+K);UbT2{BR2ihlwNHSfnl5BkldndJbG~yhcQJ|>*l31w zvfWis3sJZ6Qq7QPSU&_E2QbfZk=)t2xLz~(cyoDzL({w0A5h{-|LgGw`UzLbZw>|! zCTPEEK~D%g4(;Rml3pg_n>z4u1tEJTP|KoZI1dtRNrCXfXNSOS`G$034r>8Kd8)Lv zw1)<=0UFUw|0Q3O8tF&t1Okk&8WQ!rIEJS<+sBp0h5!=RE?m9Kwq)`DHop=E2BLOA z$2sEXddoh{e}lgOgd_)W#CP~}vYh9QXX$1(XiQ@%GsE)}@omB|O&X|ABLh;22ZWCCssjRoXb8 zzuP48L{ufELSWXACd!GPILS!BfE((c=R+ctzH$4Xw_FL3@ z1~u%&Xup_GqJ0eE$DRp2c}Dg0A_ZUmBkyWqYz8A-WfIYersiPlW6m)3RyReeZ_Xkk zfiUNL@_H~pA4UAR{E3p)3t2MjNiVeU!hX3A9b*~!VWq<*ZLEW0R{zV}D`VOD=Acbj z;*5`9jyGOS^<=f-E$nyPKjXvxKq@wft9>2szc&=L;vyE@_16=;3q*Bdc(mhNMrK_p z9}5q|Cyp9mA!N(R`mv^P#Q5_Xvh)_et++z_XdK^Volr|+hDewo*J#50<~B=7-A=pB zRsQWq?$ioV5X_~w6DAAaAqzz@)W^o+Xdi-! zgh36R#2+H*O={uL5sINYh)VA!SvgYl?iGPcmugPAhB-?G&$0r+25PBDx!4I@y&)hk z*O7ezq)!uHId5EI_4gwPtyI+o(7F*`4*r`?;Xn7$!+}+Tnl5NUKEfYU$V%VEt9?Hb zr@B?chrRMGH+1A6q@Rw~Kqk);?%Ukp{r*l-EpzE|h%+|u&Vi|(nicDajEyrpd4Au7 z)3+OMPLH~E{bZZ@iy$bt2w2-+5;yM6U9<(NQ>xhtT*5r_3Bl$a6vVh4;-Ial0Fdq@ zjtF&lYBDLDNBWi-N3l3lzf||Ct@gT(@Eb;AWGOZ~!(vYy9nOs1Jsuy&MEA~!J`ONk zX<3m|tcD+jJ?Y>c8v%_}oen^9@$OCmJHKPGG!bAyqFFed;P+AONv5(~C$PJ0d@Nv} zmEa$ecoHJzLdmn(9>;@LCtE*>7JWdXA(C0ZiW|AbVF2OIMkL~){DR$g_qoF%*=rAT z$N%;%s{@;+#?REi>35W*so3C64XNdoya#Y;jJFB)9uX{w9{+lm0)3Qqbw>K)MOc$l zKlp}e>g?omwlDax5HLiqg!RsgPH~`N%3&GzLP19_HQ^|alg(0Z?&a_ zc*rH9voJm0)$^D4O|hJ1y@Gd$*7%xovHn&MW-g(AIJ?amV6&OLM%#i40K4o&9?wsT zrM)yi!hWDl#7wRGLkTZn!?(|StL;7{I8dKqcd}#cJ+Ws+gESG*p z6xw92pdJkjqg($Mz|c-<_^QO;p^mt2U9qReAV02e{2KGb|gyVJ=grJ%E&LbK6rn~Lz*R3sD(4h9yfQNuH#+v@QY(}py@{u8>dKkZ#LqO ztbDkJk%t##zce3MdZOj=-dZIU5N{VS zWI#JIROhI{lmCgN4?mn`6Fx8k7UT5PT&rjp-HBIp1LK#t|FB>7FUV+sU`O5qE(qIx z>rox*7ThZgL@SWryuRyHn8;?`+p^S~iW9imzvGgF!7q$ll{k$c{^YSOAT2$9gXsCf zhTO(DPb39L_L0(aJ_ctf-HBCTM@NaiEKWMXhjq)~_saZU?93BK+>Sd%&z~bE@47Jy zqHZ`2t}cScu5XUY*C!7H=d({;50Mns<0%Dgu>CrL1u}2Bz2{lmrq&%Miw}W5GfAz* zIL~>PQPr@#Y(6Ao`aJOI7>x(gt5YU_t>~ZH1SYllO$v6e>uOSBUq8jnvv=&QwWQBML|zFjvp2j5C?;L@jRk zwX%@doj{w)$m%wt62udY+qXPUu2CJHF>49|GdmqtPVaM+5BPcEU0Z1rB3CvJ+3@I= z<%xIFSq5gsnQAR>(K)%q)2%hT0W+(l9OHw@U!L*%uQGGqfFF}(1TZK)`OCN2>$_dI znA>(Tzo^v$3sU4h0b?lV33Dae4_wjk@-C$C$>Exz=#&hSKZda{*tJrcP@b!gNgzh# z`0jg|%cHW?@QBU}Cz(IYbj)1c-RwlmglIwr@T2Z>+A7`}-> zxQ0(6L7t!|?0I-pW0S|sf=xoJ2pc;H%|>)d5^>DQnSvdY(%A(@rk8w6?D1o=CsIPu zcV&K_`XKaNPa3$9gs1qmR+ilvm4+uAKW693cK&>Emn2y)(OQnNfBs2N6s){rz+{IGaZUOx%j;E`^7nK<;p1rG7em>m*wP?17{MzZ4i zn_hmb-ojn5xA76v_S0ecA!{^{>aV-p6assY1=jZpDS6O4E~`3~_WW zoAt3Nmxzz=CPbXzy_PouAEH*#1wkP=^u3XMyrTg`YBV_vuuRxy{CDFcZ1NW$vMWoA zF5`BFGwjkkX05BDxWj;Z;Hs8dKj=&QiCfvccYpANAF?q`npgLUHe~6fDKSq8pH{0m zS~OE@ym6hulp}$dYVx6SMpt+tSm4f`RR7|>nA$s8lARkl6ez(y#5L^D0Yv<;az-s2 zorwSqs%>kwc(S5&_}}V1v)5$tn*lqF4jA>Gwc8HaA$cnV!akJ;Lff*tx;&CvLs zx6taht^4w%0aeL^I^bDjGUu>qYZ-<8s(}BPfN-1KJdsdKNvb!r0}C-*@aSNLz4n@= zU^xKJg;nA`)sXG^>sSkk8Oi2CYNB_dUr0TUK-OP556v(z;)Be~+yvPoyfe}zW}<$XHfH~> zW{)aCvE-Qqb;_CoE)muvCP>1iV9V_Lr{HtIMrAh}#jM34#qgWkAIZztK7X3D68=Z9 zM!@iLhxmt@a-9G<2B@xg#n3AH)ssncemuij6HyzMJ9Sv9+$3aX3)bAyg7TZsbJ7{? zt21~j6>J*_TbC+IneWhlKaoFgdTof!GoS#Bb&|7?IjE-!@P1&XOKvA1yrU5YH=<4Dn-ZgF5Pd9esBomWGFz$O~PRD0mEbW}@Q&DwW_lvc=$z zync0{OCmdaI;e>gOCGk2KdJC6ONHx~+I`)jK(ZL|e#W=Z%~hwwsjEz4n91r`KQRF|L|`cWU1CeB7mv&7<%HsO(R5a){m2EHGv zBtcU~_x+Bhbap0A?j_35Hh^QW&IMV}p@Gd~9X zV!gOOJKCZTqzE~K#oD9zMVTWMxhrcyjA;#xpXmKX)6ieqiN616*9PgJ-EZW_2y-+~ zvis?s8{b5qgLD6XtHb#{$WbW|D^le(W8}>J2z3Q2>rbvYzk*EC+1H$L9H!H{KuLqHF zwEFCMP@Q8L8|Wc|SdDJOGgQc+U|g!nVF%fE7@s*eD-JCWTFwc91dg2({W{wr6pOO2 zMZOGQ5n2)RqUU)#^|O3d1;b~9!tAJ67o4VPSNG%SFp+@fLE#8kQfWZLaNi1E)-re= z7EN3Dg2~r@b|gd5o&cfB6G{R&;>1Gdi4$Jo>sL&kA&|4N76q-Rf)WFMon0Wo8&|M9l{*r4J z?4GgpAPDX>Tij(n#)vV-z4fgo&c?D3`nFzc2l%eL8>YRDvhAj!HBsH4ss4=!z;X(L zr)pbu#tZ^CQfkWD?`*OctJUF2Z6SJf3w~{6&8x)#HY0$!66wcl`Hs!~4vK#<2&D75 zS7jE@I1?#?sD!#`6XqU{a4NI)7Tz+c-t3+kfo(|8En4~Ot@5QZQ8Yi@0eKb} zfQLeGYwjPIC1MiMvHd~cV;^2;^ZJBnBQ?0OM$wOBY{`Ths)wYERQJiFWy5E;J%HYGRszwa2&r<=_F} zwO~c#!Z*~zpjy0=Ns47ZqRvW>GB`U0_^F2a&l5^LD-JO=!Rnh@V%|+@2{E8`7w%#L z^4u>iJ;-A)lX94u1ww`tjH_G9aOgJiA`;Ir)0^W;JxCH1b&I0U%CPn)6R3(T34csU)n*nMwMg;={K&XrK#r##DR;%j=8!o|02wKAC@<*6Q zMHMs)?)Y0vv9^ABz0@XQ6oIx(=P*LR01_Cq0%=9Zv^tcl=ZZ&nMLKj~b~Ke}JCAhY zjmn*-BC6XPJEi{)`6>Sy zI$B_3VYVP2E^XKqex;4c=z9$}!{`DNy4S#2mul*L00L*qVsR>yhNV$)#UjzX?%+_Zi0F}+GZ&gok4d)y*gca zHt4`Hq@u7fJAJ3lkgse07GP``Y2m~O*R^a`6Ob6N zI$7AAHN647STZa7u_^-TisM(&^c*=e!<^C25r4TN9(vHJ=&HFAdGD4k2dS}kLktVV zLuxbhjiPdsq2@pLl>vfz;PqvOj~YqUMGvPFPOsoU$3kZ%d}x>#H*8;)ecqbvp3H=! z?ik9ysohdy(95QTB}X4^#B;Nj?@mWFTuL*rr|084W^jxs9_2^~^{8Ti60J#u43m#9 zzXpoa=12F*V>qQUX_sd%(1LdXNn;)?jQmj^%{w+{@D_j^X!`!t>CzX=Iq47(mYvRP zNxMN*Q8e|t?nOg0&FZzg{Fw$@fA4R#uOqgH5)H-^tm@pgj`|mnAcIOy=A-uxA=Q|# zcN?vmV_Jc}9!Yj_>H1*zPp9aSXGqIR4CwJ)W2=J}iYhVMj>XjRuveP*^rM$=Kjh^j zaMXg@sEJ?-&tK}ao04=A;!oq2LnBYn-GPFE=f^MpH_O27cG-11FY27YV-hS(X3;Y5 zJ80KH0{w;AQc3ga?snvlA)1y?oh&FIT7eW&mS8_cL%#x|--MP3odpC&yw^ke5{_U2 zk0&4|H0bhF(Z?Z^yC0+?wRxH}vw*fiJ?@1lo_RPI=JU(^ahd{aYt#=@86gu8cQP>p z(-g4BZk2p@FS>vGbP4D|>kXsa4spC2ihyK!65yizsgh)Bl-2*jr@uP}=nlEWmMei-)JCNw8(su&6gROWu_e z5Y{E=2b_rr0*&LFQF1uS2|57y#L;ww3%$1U*0h<`^sa`#2cI{mx=ZqS3v#Z>{ptX# zew_7Q2QQo}wTr~J8h=LW^PBUt?FF2G%#RP)WF*V)&NsTUUn~CVojff(x*kH0G<_on zW#*uvot9|Jr$Q zxcqZ^7;RcKC6j-^SLyeSUX5hwGX=S-2_oz=`$-cFjO1%k7?t-el*e};bFPoYeR5JG z`4IIWtdDVFBqCh$ITnN=nx?ytML^h}D90};yZQ$bT0;c>X=c!o`QcZRSP5Map#F{% z%t=*eBKjDw41U!PQix2@tF*@1Xr%)t-zyDsh9GA+6%tp>k^JVBb5~-p)56hBX!dX4 zh~odup8?);kRF+EdTpWQds1wbvj}W?oTL zEJVM|?g2|;8(^p2*obH1gly`w(VtAEagT;TfItfCYcXy)v3US z>BINiC3Y!c+i5Ah2Dt_{n(NG2$j7VcgwlYPYsytdUkdL*c~4j{?ObkK;&OumaB|M1 z=T`{YKVO6-tM34K_s_dYFQW3TVY((z$(@vL5fh3;C)C>UAl)*$CibfJ(|OMA{?JVq zRcN5Je#$EZv2$GITgMw4pf1R+p-R@wmks>4;Yqd*AH#Q!;v0t2Fu|F|gUS(0LAV;? zObR17=3h|}oVNW|7S@CR8MzM0pzeB$^JoDv;qMq~MNVGgf%Hd4nA#pdHZ>JzcUn_F zBXHd7zJF_+6}!$Ow%6qV;0)-CQak5JFAo#RlQu5wBF4; zi7cfux|gymxuitnzumten|2w?W^EYpg35E0au~jw6@yN90OP+aQiz!oHF_SCR`~t& z_$U4LCme6;!n^n__EahHa_mz-#wswQ*e-{PD^M2KR_LkK+A0^uB6zKW;Z|srMm|-m zKUrvM_cDJ!Kf%SVTfzZBn#cXeWoG^>3x^f_YJ%@M^jlubYFCzTE#0Pz+&sR{%C9=98AfK*NoRh4!ydWaJognf#$mnfFK*O*r zNhG4w*Rlgs6ya67nO$Iw#4dd@<*aIEG?QYc85w8G{@JfMnSiJWBISL6T1m8po~hpR zSTYk{`jI&myqQnTC%Ei-de4jQv*U7%u%b7~ENRYMw3YgCbrI2!mHI)`@NPXJsqH6@ ze6g+YJd92epqP0tH)aUSnjt7!vgL=Ol-CDB<%Qpx=Xbk2uJZ(tc5K@pmY3g=y33Mt17@$eJ8bgHP>_S z=WMLhMM1DPmfMgFZZiy%!^T>UL$K$d6*Ccl4W$=dfz1enT{rDM!-(~XSxjWNsx^3S zV4FgSt7jpGfkdsZp=Djv|BIJ?@ZuX~U(xaJiQe>7ekMoPxKF5=ujrK^!~6w;o%zjq z%OThlnikhT&&rc@Cmn^V!&0A68P5(rVf?A2vrdNzI}_RQj_IO0^L5KU=-KLYGVGsj zI$>o{TpPmJEn$Rsc%To^uIW8$l;NP&Y`pZyasuZ2HzihA@Lf8isICVQSJC~Zc$Vof zg)%^G);)fBd@0?^y{lZH^9d(CHEG1k!n@6k+-$Er?pL5i`CkC%0gNGd(pMtbWxh5y zqpAHQ55qZe4Ffd0V*OotvmD?7$qSsM%N~+F`Td`n3pHV1-zq<6qV2{=DZu5Tj*_xK z7er(0T2&*sfss#w;Rlke0BQ(tqKVjk&Qv-244w$kmHLaYsZ$BK7Zu>ySQIVvvl@39 zCMtzEcas~G!`l)wQ`J`jE=ng9*(mm@s%UMj%h0hk;f1u!?i zErLD2v?vvzEKbCtEp?73?H~@aQ-Fmwk^@z|XiuUrjb~gKj~%phTG6j*T&fVnomM^O zwg1f_!4woz)^%QRd$Jn9e%xUWpTS-Z%`clSchAC5rqEFlZd()26IXcO z$JAi8);G0rTYw6}!qH2EM}%;IWRw{|;Su3mhSs1?;4Kc&8*;gmBk5{0 zxuofOF3K$SR4P{;u?%2pTM-B6V8!sPW|>lO`H4fkIUNm55W<+iYJ}ggKkYoX!+8*> zSHq^#5J(#?HGZ`k$iM7K$OeI*rRF6hYJA%`K@?Xwxa?Uh^;$;R9)flAKOaLRM>)7v zL>RE=4|nRHgKP_v`Wb5%u*FoxA9h3zeHl#k$qiI%q3#2XKeBLOB54mBX8FLddDw~K z$Gl(Pw)7*{iD#xOxVY-ii_bVfwaYe~%w7wM_~6R0Rp$cGJh!~KzFqc$4Bw;W=GQqD zpuwXZr{g`$*|K~qz7zZ>dSo6PQ^}4GB9S_gzYH6GZPGS!a@(l9puPanxVlT#GYs}x z+#_f;azK4qN%kJ_On7zmHzHY-g+O8U&RbAYV=jrIqhvw8MIZo;sas8Vo@in*A1DV6 zf+2`i0$0PgFBgi$G}zq&sE}J!-)V2 zU|sZ=vKQZXPhc=HQ# zA)4V=GY?~kAy*j=IaO>C8S=#iAXUwxczghoQMP7wW^X5`Q^Oef04E#2>3eUvUi4f_ zCA-(+X|4C&^EiQ=HeZu7!^bk5*y(C46`Y&I=y)M(#V5wmq9?6e7e5jgpcMPZ3OhX8 zE6wSv7dG<`;Ik%sk7>v}z5)=j*o|xR2=C?kkz=v;J5ctW4y*y=gvy+<$wO-Q80UzY zc7K&J-QB$r|H(q^l|?UH|8x|)XsrZ54-o(9`S>sEJ{!5VZOz6!;faKx1ba`j!f#YD zd)0#;+#Udd5;MMflNcb;7Ht7f4XXv9jRebujz%u01Y zE6n{}u~`Wne8d3UEMLC3x#tx*o$&}|5LlpdOian#!&V&ku8~jnKc+3*E#U}P58taH zt3XS(oT$j9!5_K}36`+1L2-98*r^rVynMDx9r84G4*JBdG%7Upnu0!SJqgWc6Oj%e z4iv}3_6>laupWRUKpqg`RXOHf=CIXcQwWm|3kiJLPem=<+-)_0kS z*q9hV?P7KMut}cfTPnNf_XB2)W+eydAUa(@Q-CQY(i$^eH0?YCR%hy>#8m$4nTHb) z3b>j~Nz%@hbn$D*+$>4lG9_&2{1*Bnjp9C7k1T=}{<;l390~34mi)}>HXKguge@E> zezM`FfmnPOIqL2aWIDoA%sDnXne}(S$pb$(9P6zH;`gAPEEgc?>QIS9eqvVm!$=h? zpqyz=!SS!;9>y4gM|-biH6iSPY3nfvwqd&?VyZ7nPaCIUHL%6+ z_+jd2xtq1p?4y&gBn`!fluTsU@? z)|HUFnNbIn1~1+G`;ctYNd@gBSNx_i7lJ`)+8+4ORW52jCrTQbA+PA5^n_!2>$S;! z%kSVP)yPO|N&gkSv0)>(gAB-?Ni1xJL!y{tY~f_1-fFys6OnP54xf`e#t_#m##1y@ z@G=b|56K-gkB&BS46so1lenyNGq^?Z?B&0P@L~|^30YRlu!NDNto*-^vUm8Q-YtE9 z_J-MrRs_xbB}b*)jlPk4IcOoRb*1tIrXqYw3gK2Ai3Ajy9I*J7VbmhZp2EtsgQ6%mhpC>}+5jSFZoETyb8V zSUl0_Z{fAF)!K+LUt~Iyr9l~k?35Qin`9hTK;>w0rrC(H0}yZug638R_np(H6v;b= zl2XdH%&rWkDh(y3SsgZt_ zzdpR?{ojlk$nyCRrP*DTo}AV6*dhD`&(jdQGtPgoJWdhk|4PPrf?-fX!p!;TJWy{= zk>>SC-L^z!`*>1t>?T7x*)8n_j8c(aaiW>}7D-0~6Rlrmb5O!o>VL$jSS zO&vulypNbM9plJ~bCtC&vySt2ouhR+RB5TVD}V(g7<{otV^oLUsU5({rij5FwRbza z+f{2YGOU96RaBpg1Rr%|6#`GV9dVF${B4Z17%?KTi&5w#AHgx-Wio)agvzM&;LBrN zN4XX2(d8yhfGkZr8jAC45is?7gv9PkTyB0y8QdzsW0$3(sS$ZG55a~7DGd&Ih~s~} zbWqas{Gp(o7l)Ag%6PoyLGI)}Y)g4q64tw0Mf1rAq;D8I+q#JO4g37hHaP}6f9MsI`Snzo142LQl~@w`N*DCQ>YJ6FqE z9K-krmh)eMRL6_&v+E+bC57*2_{jSFqFNDOJR!q_ubwuMgMzBvc0#kdP-P{EDuL`U zb8ZZ=Y$@JBvLL?Dc1DRgyWFi1xGRuJYGpozE#R8HlsWm)$f##S;SW?nZIsTp3UI}( zx2w;*Mz&_}1qcw4o%y%)QJJOoj{Iuh3*IP*3G{$_)=Gpof3GAvy0(mY3SU)FT(7Kh z@xv5#)gQ|dK&+`UHGK8Q#X>Wp4nREXX5Hz&hX5NAGCCA$U!LMa$J=hRTZWM@@qxGr zN5NW5<%%1{<`1L-Pe`y~s!=S!@(X!8Upi4jpyuUcMZFqGKk2Pu0`X3>o{$zT9 z#q!Z2tRl&p;wHbRWxyfTwh~A~RFiK$I<#4H&T6mwCL0*T{0Wy72r;z9 zh%yI2y^jH!=5*SZ3JiN5gyd6%a*qp~Yyv|EAful|RBNedcAxLEeNJcWR#LVpEy(@u zVGAZuUoO%j+Xlwr{vPD^9W?PrE7ofY+}r&cmB;2%qGrace*PuFAz{##2WCI(;V|kD zni*p)W<67NFF9#qfLV#t;kY2dVT1HW)W-VD4E!eR;SSi7sA0%8++tpFiiEZxVk$?k z5v%cfUB%|Z_KqLMf*#W%2oY8Xeqy1@992i#LX(fOmskSFm>Myr8|OY75Ml3S4P^Y^ zF)>t~GVhhvk?pN->{7MV8CB`}sE7~^Pp^nTtMpJzvqfti-A;OmO;4%_$%s;XOWMjM z`9@G`!=?mPDVLk$a$uv|L2Q0QI%mH^I=Xj|hH7{+|Htf?dYLCr@p}QpAju2Zhsy$D%MhGU&-rRC_G#Z0a-`Qe#p(b@gk;eMbc&%x^ zHHH*k4T*!j(kP(#a5Q_dutiI`&hcb~g$gABs3sT@5W7`+v?aUgr+rDJR1=g{mWuek zmdL=??2CXAZjHKr%kxk;oM)F)4ss$@m(~>XM5V%gN4(oI$bM+3lmarCeX%`|2nt_c z?LswKsQk?ZIOHB|vo~+%)@~2?z=2JJiwZy=uhHq!r;R23Q1l^hZiPDyqWk|pI%Zq& zh7ChnRK~x!zWa?DaB1lRTTx(?->nHG@0zKYyO(FRNhh7x*{jJamgGA+W5aEM)Jzkf zC1MHYJ{0%oNA~L9LDG@N#DD)4i`|<&I}NdMJO;vouw$TMH|gcrQe#Q|`33FyGT5(i zh;q>RgMLrSyy6`)mc)veyrrLJ9{SG%W!$FX*&$Bn^y6bqun>ErF0A^}Y+Wzl-xtJV zIXt~q1_jMvXMxvVq0r3eOh*m_TbG&;qmgv=31Uv~ch!(2t8)xm`qAkYavlUKjsw;P zk)0^e4}iGpk)4oq>#Jt>ih2SGSS3L*d22pev`j0=A(_M_NRRg;>(U$_n4v>PDS?_p zJa-O^$hP zHdrr?OWF-6Lu*$!bV)hQW)G5a3Qc<>*;f~Kb%o;2K-Tz8YU_Cs12ew>$Gqs*Gb|{PG~$Pp`L}G33in0d z4)R~sS%^<>E0Oi-JqFJG0YdPD=;YjE8wc|&Ogqa`YE`}SucmsbId~GkmgoS~CQyox z9kqBC#Lhh-I!rnk%@IkU0K0G;*=lV*eY!k@NFDlQ=S((0aOb>wqFK)OYqe(!Df^+L zykaUmO9xn9fdUwbU!2I;H--i}*PK|@Lfoyp*I$ZGnVXAc;$z@EF{x(My3B4~3`T;- zi|YUE=^j|dZst^Kmz8&!og=c$$%08L{62dztU;eQM+SUme?)@(dc+d71G%|7$%eEp zJ?%uq09+SDF`=LUOQ_vn&7jugo{6TZCc8@F5f6SkjH(cbS62y;k-jt*DJCwU{6)DX zWV9$_N46{jWy>9Hzzk^pbi$D>_JibcFOzC7mWX<%7DD?k;~D_PC&8C5`J}=%F|D>e zp-6PJL%90yT60F?&Wvelle}Fj2`Q>ccQ>AJ!w3E7={pUm01=Gx1g1N3A)TlUK~)#+~)>Qzm)+v?P$ zYG|t}wZ=|Wijc-aQJ?O#wSsJd)%f%>(~|@pkJ8F7r}psNd!ipI^HRmrfr?vyS5a8|Am5flu@N< zI=PoJ>d(%cO_Vd?DnqL?(w}Ic^sXfDxhO!WD=|xR-9a%avW>+Y=}kV!9dGtyjD0+V z+wcxn9BS>NNj!6$*UVNx@O8F5iEKMJgd zL%Ld|t1zPGnS5`4@3Af)e@LSM@Ag!Cl4mt1vg+3bw@zcTGDN?_&a|Wz{9nc&&|5BD zd+1Vq0+5a|JUbbaV;aT`rbpI1cIjF=B=vuYnkMWu7H;fg2*>uDXW06_Oz_7}Scl50 zjc5|k5;qsymr%vR)VRF-?GMeL|)s&>XpJ9(3hFQhU5lqT*yq6~_Xt;oNPniQQGN^=E+ zS1s0Ko8LF^7+kMfD6aq_3F=w&8nu14|VYI9&qqM5pi5k_{{c&99=sHcC(# zXGDn4dRYF4Sqd7h_WyihL~f&fy)~GV>Flqjo7Aaqo+uHTJtLXJH_C^NQ|!L-;qllC z;Y9-)rJu>OeZ6!8vYx#a=0KIO^@D$6s)D{g6;LPj^8;}kwN(lJ%Clk7Nf7;%8oy`X z10_Oc2)exQoTzD5%6hxf_e`2CDze#uO}{FcwfCp~iO zvs6)&|NO4=PRz87{F#UtJifJ+KM^eVZMktl;oJaZ&;lk9JKl|sR3s6qFtO>^TI{_K zW1!6$|37_u4ye&v{;)7I1-iiSz@j)!l)?F3y&=TQ!D_&yu5b2swk8Unw2X8VADA>g zRnZ11mCDO=XA-Vd6Em10wDk>=P)Me$VoW!G>UiK{o)D1!m_GndEw>DpgG{9~bI;A= zo8%^R6L$*oz+L%@8ojQSm-LeiBL#LObAxjh)|}Gy5iKXFG$V=UrfX9Uv`#6nLhOg@ z-UC=h++=u^QuLnGmLkW!c252f01nY#1r~7(;5Zqri$6rZ1U9^Kl{!EEdKx*032v5a zoi}Cf`9l+-2SZ=XxD$V-&BfN4cP@adw{rWl=9(&_t{$Q6Yn@8rubzwS!R4yqu5WX# zuX-y{yh6F3LJZA!c$|DWv zPNQ<2ZRrR0+_a^4{E>kd$cP`k4b~$y_aVE5I)zET0^Z3UIkXc4R zDMIT)&rQ;ho7)sq*x{6~OfTqEkp*dz*Rw;E+0p{au^2emfo?Un4fwSXz)^!L40MZ% zpYa-<=I_nxLq*_`)u|p>Vh$^xur{P7UBV5X>~u$2IUW%kGfMO3(pPrK=Qss$uB77< zP|yblyM4T}9vLa__Qyy9xR88mv43KWF$&HyhiDHw%d8scf8r@U)xz|ear{u88zx87 zWrP0r^;y#zMQno8i=W!$C9D@Tv6xN|Wom%7pQVu#4;?<@=Xm0*kDEj&qnC4)7zQA)04=LcndoF|`tuwn!@1vr;5+pNP2#iNaeL96N(vjcK-$ikuSfHV{ z2&TM=eG<)YLtj3`y_Ep?@Y6Bo;{D_rLVM9(o8P%@L^xMqVQ>f~?4=eA;`LS?DF$7n zL9e?%(*-0lH}ga{U~(Wwv&oI~PKQ|1oAjrC1z!L03WSVstg`yWORmEh-i1n?wvzGp zL+j?f*fjNK{gi9hHe4e_^HBx#8)$PqgnvH?MP!A`8B_E=5i82lu`) z{N(`?VpiDFGlYMvnv?>W8;o;7`1tO2ne*78$JYg-1v1_`7px6GbLzNc0lWF2i^dVDZW@b7M3OTQRAO^6Pdy>8}AB! z|Dpyl$Mh|KkC#A|MKN`jgFVqfA*%!EWuhPgPT%z}!UY{tyl!C_*08rSHn6fks z6&fuLf#k{y7DXI^!EN^;EerNns>rYp%3J|V+$)GhkGVP4Ecb=q^&{$=_I@pX^cj4T z(~UK$1)Gk?@F#npwCV=GU?d8km*4Dv6NLF#2%32f3n*D_*&ter*Nd8JL|uSffUP6` zzD2vYVrHL;*g3LS5Chtb22-`BuNS?)iu!{mzgk~NzT9CqLD4^vr{=Gyeg^azt~nT} zC|CsK$1e5o@F!{qmJMdULm!Ac>I1NW(bnC>ayYmRu}7a)sNM_LjY-^GS=wvTw$!fL ze!&=+VW)+=mN&blSPt9)OV8TZF{OOx*M4}iz)&O4ORptxv2Br`9RxL#qN_!U8ZGq zA%x;pt&*^bw&iEK#j|cVu2FCo>7^cNP)Se`a}`(35+p(F4uhER5A~Dr(ulnbf6K9u z;O&r6`+v4-(>LE3V4Fy*R+jKRzBH!~`t6P5Y(>|2i9RpgN3r#xUx>XE8%`QRTj?c} z`yZ&Uj1v=0!hwmDRTGRF?#dF2d@J&ZxC^PmLu_X%i|HZeoQgl{#Dx3Xvd0c0pAm-V zF0!ZsoXWvZ?;22k%{Ew*+C2FB0aNhi-|yjWP`t4I1og7~AY>k;F)%twZj^eiuFLz$ z_C8e&7HR?}E|T{Pi*TclBj@uRMp2 z98trcLmtrDG>GOY&xzaL-)08ywCq#CAfHAsU5%Mj8K3S;9>zTO=p&;`gwSw1I`rZIPRZ#tD6d~1;m&d+^&@?FvMA8(b|^f zt04n2r|uBo>Xw||@i?YgaM?N6h`)#7eEylqKe2FCm!{|zP3kVu1XG9-Wl`;7&Yc=p z%fQ6&MsEdOr!JtLMJHJGYa#@EvRg!0-4!Eui|Ph%5=l@8bslVJQRCwEGxrb%UC&%J zUT2-4xIK9o^U%jR2==Kg6T~(vmXsUt0wTS%iTB3ql63%t%SKSZ^(=qwF39S2Vh1m2 z%cY@3UV(qz#LgQ^=mLGhA+=+Xbbn>q({_kO;{EFqxm!$Z3I8k#w}kwt&PZ|=U(u)i zod_MH*|_H2=dhI6WoXzfu%Z;vxr#>@#=2s_n?P#QDZjaB5Mi}=B0cM7{lGOjc23ig z6aZOoKG>CMcjb!&xZ+752Gt^6y3uOap^y~fq{Jf(J-gos9`#UG-O=BaGgCz4Cv>T; zFpH7F4oV&=**BirJz?7{&P>@_nGCs%SRrIAF7nI>NO?u{U5pBQ(u zDx;YF2jjk2BT+N}hAR0y+TRfpyw{56(TXVU8@9@%6iTlExNyPvcRs~;!`UrgItA(6 zd|DIl+EiRiKE=j+Q64h+;P1d;N+AKiQH5JqLPdY!J0GS9(r{WGa zTcLemo4V((`$n`xBkNb+C5bPu>WxgWX|LFB_t5doRUXM=UX0(xBz3c%?+pOBF+3$9AI9abF|nFhNQMJe7Bu$l!JY+l$iru^$;2i)dfT)}Lx@DpmnK7C znG>5?xQ{_YO$;~yG?{j-+3{169djvvdop&f)NT^FoKDB`r>S94Ed_Sv?{Q zkv{~MtJfrFK$rST9PT~$cY|;xD0M7YwPKB{(n(LCeCdumR73Y~USM@uTVn;Z&8hU? z002hyY7(mr&P$_KvodN@gw8V}YCiNrn2DiAH^x-*Ai&(pnmiRCC+*cqHvZx|RN z%45cm14rXCJoo=fZjszmu%XH+pwuV;GM0uJ?h#y9vcx~avO?V0Y6Ru-^WhgCMMJs= z0@eh&JXcU}4LZ)_i@qy#d(NYzt`&0AkqJiph^Gkq*lWG7`I(+uaQxzzf7>zJ$pA?@ zEaHa*R(FdKG&_>RktHLb24(n&a9qSFn&cz$d>a2Xt+zrpLY`|Al_#s+iofhl_9|IE zLvxJn2H|hTez`%PMGzVH)tViG`JDHCfwY&h)nzKC#xSm zZU&F;#v+53eJTn90e0V;=_aL)H-y=qHn5$uZM81J zC_E@W1p zlBN&NQxbNHGKi^3eXv*IR-aIlB%rnI7R7$$+`9`HmrsasEIXCy0Z+m$0$liKdnbR) zICQs&o`dSoiEE8}2{#up@bfZPw})Qrw9314tL2em(CJqDguqTCzeVY(or@uJBqKn6V0BgIRj+&7nfbmp3?=Pv-~ouFeG^c3REA zu<-}BYN?A{Dz+&sz#Gv{W*2g%Ax#7BY|xo0xge&@V8zAW!k8(Mn$D=os{BCSj=q?k z5{;yHN#p$UaV(V$Isp@(-nQEx^_)i`td8?c!JLAMk5d~SMj2>UF!gf6`^X&2Y@4V9 zI)N`YQlF`;&8%z8Y-ZvPmsHBUjZL&HYtbb9h1s`Z`uNp9v$0e*PBT&2%6BxzCRVKe zpO(vK&^u(viesRr^G2-g=$o1Ij8n=6P%k`={(7|H(?TXslWu>bGH!R0*(L6#(ygd^ zev=5gR=59nW;!Q{PXRfq?$uH_fuVAW2<0Yd`lQ72)Hm+uih8$^ypS*rq@IQ{<>jWceUeDvVLfg&M-kyz}Vcd&zG&UwMm7! zrV<@x7}ie;WGJZ|*1QS*B?U@?-SVdsE4UR@>b;N!*f&%|et!4<&*;CrPqH3nX6`Dl zC7XMrsxFkgjk*c9V~{3x4haQgl~*C)4rIa<8xa16B5I~|f1d;WmcdPCot(Cvqcnu5 z(t+%XUg_X#p=BpVlWt0bEQ!OsGR6b})*A3>w(j2q!7YvX>^v8AoEPm%KD5VhTrBy8 z0j3M4cssc>CRLN~42AE^&@>h>FixvYtiM-bx!8~P&t%ahZ7p#RB~oMExy5oKjP_S$ zeuT%)^s3g2w>dM%pAu=VM*{ioE^>j} zR#@|mK`>!bbd_={(iOcM6)}S|iv*pn@TN>w&5@Dn8k`3Rk-I3z{`1`Yv65a-t+hHE z=>hfSUv4IEqib2fbaFt1i&GLLl#8T6M?;Py$9UHSDTBT*v=ht>Eh$#gRDj|jJi;KQHm&`OJSHV}W_sKW^o?(dXz;q>7%{a%4cO%zMLNwKtC;6dMV-J@Y)emVQL9_s$o}c3n;2{< z+wP0#`L?FIh3`+7X6K~t+SOU>S`wMZN^uxfgeREw`s3m&{!eT?ji zwJxU%1ht@_bvVi?tcBrvRmqDj*0U8hKvgOiBZQXB}HeaJ=#9B3jbS&fS2>>i&}@Ns376`!1H30?>462#FO^Aw)8Y4eECV%rMm zYJ$xHwSuAwce%_&m$56HQ&AS4{_x2dV^2BmFnmXkXmC1b|JfewI>+(^y60hFff^%` zH&Dc)Y;00{{&EYs@B#$Zp-#dO>r;_(Gkt9>valT24Az@vwn{#dM-!OiPM26(QpRZ{ z?(Pn>9w0&ok+nCI+)S=#hJ%1*)zO$Rc*e(B=dKlqe=px+%{r=rx)+cA+3`x1sr;y` z-Gtfsh)yg4H9rJ`Uek3r>!aL*T_&^Ycn+Hn^iXw>rj1LDNlKb>O_C=nbj&UJ4tE@D zPQK}@CsgRw2h2aET_IG$O` znAV;h4#n%T!5DgDBuFpIBN(CC(Si1~Pp%m(cw%pt7OLU0)!Xhh_3O}%M+JM`uO7(u z#SBIOB-z@45K#P)+Rdih<#ua>%Ei6HX4uJ#fi*%z(l}6^Mt=SCSGFRAD=hcH9yJs! zIp0~$BMq@|Mei-VWv~g*$v>OwO5*fi0iwuk688ferIlgmP^(4=WhdzqPxW5y&Q?WK zc&e8~!=1K(6ZYbSD+14*Wiz8&65ZQPlwBWI=;oj3D$DASXzsnOYHj1|o7Si)i)0fH zS|esHqN5Lz6hc7mQdx>emf-B6|`#QWcIl<0K;aA$Ht(-LX=QBy{UW?5s3D<%zYy2qeFDzG zYR;DVOYpOi8rqIAu*)EK%@Vl9|1=!HE5QE8LW3l*ZLBUtXdSLp+*A_r(P7im1RHgB z*Z@?}n=@rfeAzOoVl~gWEK()}m$H_$Kmg(Zt^UpqGF-L`rQ zNcW~eyLp0CKsLNN^w1q^w6ckC0iK;Us#c1Wl0eIjkLyy#mZE9K13bMB67F-9@^5gz zyROW-qFA8UxyAm0Wko*M56Vs6j%A4kpUvSqaZ0ftDQ@QV;$JJyDe6%h`KD1Z+#+q; zu@inGD~(uv{LfF@Z>yZ)G%dk&*knRgxHp1W4hyq?s8O;l?;2dbEdLngHO!B{mOiU+ zqMzWAS3lNM5jKqEj4ha#?&TTy3s#Jz=ssiD%?Ojyz%|ijI{NXy-i;+7I}zk@OU?u8 zw`{r3M44gIa8c(b#LH0F*Ia)hOeCsOE`;!|7cMz~X{RajJ)Sx+FUSK?i`3H&%a&+v z*})SfSH~xjKqPZu%JqQct3wEJ{h><35SPxfA1%P7+2N}t!pu0#DDw!Vaj1(0z(x<; z;1uGM)yC!xyUt;jjHl{dF7PL;5smAm$0`4bm?{85V;M9x@SKq`#uLR}WPzq^;<`UV ztzMN~8m01ndaB`XdnwYtO{<~H3>%Kmefe-jCsLcHc>)L>xLVek`v!oKr(1T@IVZ+_ zC=*0hI=jAnB>d;fjU=^~r(zu0j?#371sR>$A;E~ z&0#5Dr2!gyK;Fnj^m^d$^{KT4@SCLFW-Sk5(sP~a-M9kyH14ol>we~kChDyWB~zl~ zAT7@>?CQ>>3&Ts$02a`Gh(k6k1XOOFY)#`d5wkM`7MnG+3mY08@`R#py$Qrx*;Jhs zWF&)8#X`mC#^`XWLyie8-^$p1sXVW9(Aht)sQ!W;G}?87oV{Js*a(rjvuG+_RnN-( zZ_NI%PqG0SxMsq-`G>bCkcJs3i{jUX{twpu47{C_#Za-R?8l}J8sN=|VNUYqahl(} z;!d_#>y(x?(T%b=*!h(-#Q>{<*R)&c8=nUL4oq4Arxu2Ym8YN1=nJrL+ zUB3={Nupg-iLT*Wi?q^=M@8 zlh{;#Kq6c(PIw@Bf=Cc^Dg;{DVriyD8E{!&$=0isFmp-UzKeQor8g=X*=<(%OXF7C zO6$^gj&V2`i3pm8Fb(+oTZd6YpES)eTLvf2f66!CGL4k<ZcirutX%)3ocHtQD+dZ4 zH%z1k##6R)RX+UnS#X zJKY!$Tp{xTcm0~dWmRGJ0*lC@;$IJXUO%@^lelv_Xwh5psWHcmum)Q%C3izk3JNY5 z2}mn=0vtU$+UU&d2Bfg@ksr_(Wh+Z^YGjrc1BaUYklsw3qv*E1+c znaAzT>dDasb4Dh4EeJ9)-v?!VdPsuCTI7-bv!0g zDx(sDYFTIp*Cx=HlLXD)<5hql4*7s4me$YQkGCYxQ5X*h0^mggfdu}P%<^`Q*qyRy zL4-7FqCfpH=2_fKi}4(b`Cqq54y3{ZsK4X_uyG8xY4L(kZ47ZueI(i?f)oNn7Px+< zs-g$RUvdx9?)Gz^p{wbTZax8G`RBRzQpZ_>4EssIDbNLIowNL+(lbXAgKtZ$A9h+c z)!=|L0kj~M6M{;q6QI}E2b?W#=!!lC9T|lW<0VWQSgEG@EIf3-l&bnt&~)bB2C0@j z9$ko3{CKrpGZx)7+Do4k)DLIjxZpG$5z&zUG8M5%t9rWQ~cWF_ieIy*m zo4kP3C?bvpc|m&C?=YuM$X0^0HhyiW|}z zF$u+v?N!>m4pEA{N-?^Qu+Av~iA-b#K%7)%N>N8$wd(4MyuDA2XpE^t_IuOk>(YHB z?QlX$N)zrAwc^`{!GmlQAXVN;D-znCL9D+ZI${?=o~9tLT30@rzS?bGW9rjmz$!N| z8#aZE12$Nuu1Zg3VWe9wJgNO`J~@R2Te4o*u%{juSqUwuQ?J1Nl}u5_>hnE z$4=J?&O&IXxY7-Dz7F*F_t*%8&}a^@Bq;}-o;5G}LQU_%p1{e=W0MrAP;kUcN6bOo z`|Ek~nF^FR^=(PX??uqtjJVM8-OTe@3*favs)}z>zfHthy>qh|K9tQVHVji1T@4GW z0TUpKv1TmkDl7`})^C!$z9joe`2_*N4E;9HXzQ^VxfhoLXkRY`1fG*3-huGXp#m`l z=*Dco!1ug*9Rl&4oY&nM?mN3Eb?s3gw&$h^2t;6&8%ln_n@S~mij)gIzY6A#yx;Jl z#A-#up8M3eNQ ziSBPFrvMaeab%W_+6O9aik%%<85sV$SW2-)FhuZ5mCmi>_J9g5jw3$)3R{1_)rUDt z5gf35nJ$=Z2soQL_GrE3;dwgxtYsSz+fB>}jmPVF8!aKsj+Ya;FWqAcCIX391IBFa zaFAgwtmrSA2pW-kAc&}0pu;zmmUTTv$@r&jL0)*iW0gu7EHYsa{gfve2`Mc5xjlFr zF$2bGSG=j6$oPefR?NKQKHJ^ZlaO$Y(9i{x3X*+zC@LKKC3YW60bO4EdIjqOPDB;U z+WxxaL~|J(zzkPe47M_=Xb|K0%MW>(ai+cB#LM+zKH^~|2ARD4GzLV>+S`VK->!SwG_0c0&?g?9=%JlzDqZt( zR*th1_)*?N-%o9WFNzh3C+^46_YSq-lK$UoeRgv$R2q@|edgd!hcG1khoztdBi>9H zNvRE5hciPFsl6PmcPG96*MDxy!2+o15Q@!oZ+uH5~$G zdi}t<5geo!g$W*kiVJ0g7pS%Ips~CWFDRjOBzM=Ca!g=_rEI4Ml3x;aYiK|UG+;Ne zO7p-2$&vBlIE?FTPYeFq9o0Y+h6~PFS;Y#)JGp} z;gk$n6hesMt3$X6Pj^9H9w??NvdSYVbv$uMRIj~Jn`ByCo#&0obksH9*wZh-g&d}p9VXFP_ z4_=V!6ic%tR%L$hPcb$5qN@;tNBU8aDI5@Mj!0Rx*1jaH{q3_@(!_z=Q)iN+3^Wxc z)J>Hegfiv?>yh=U&yUJ5n9jbIufTlCbv(DI*;zV38xOhdP3Q9_n5OV3yGk$ONa^`$ za(1J#PBR)gbO}t-il;_p8#fi*71{&aTGrhE8>P?bWJ4bkr8(>zGTNUy@Z;(&(Y4|O z{D`9@oN@tY44^Fh4f#_pH4;+=3LKYc0xM z1$a<~$chWJBY%Ap9ekfoj+-ctcxSjKD>+>9m6ZoA$wr9_^G;)=ex;!y1LaLN!d+k~ z=KG+LXXRv&ZTY%i^b7P|OjXVGjgpL`#gXSUrR75N=AtR()k~>PTR|*(nHUB&f)H~m z$7ol%evtaSBmzmynl7sw2GbDsyuM- zAt{kADz(+r#seM=mmjkZ@Qv}z3%kfl>D#R!T5TTi`PvIf4Vp%E!HBgoZqykD?N>)A zUq=NHs89kp*iZ*^vBP-WF~_716RDqX@;b2FD^{dn)}4VKq1KDT2Dgk#K&g%q7wQ|v zqXQp5Rz$zaQUNHL#X}Fi5K8%P(}e|rdU)JuBmfZr5Ggmbeq@_Ya)43GY0(NOjq3w* z6=LAlf4vCR$yE59QDT&8#jZ834iV?)RHoZGJ?=`qPHo~er|A!{k~0q3LC5T?#B?NZ zCMrYCXCmu#Q3*YSrA=N7q0VCOdlwoOlWPHyBcE4n9dk1iHP^DRolRa_@g%)`dW9z4 z4Q=28o5OWge9vPn4)>~XGpDP^64;g=0G#Is*134#^eZJ9beDXTJ1n6-(pDK6AvDH2 zyA0|?(i-FJTAsmdJe~Bi7ltuvBBs#w6-xSbN6YP<_bzjxA|*uth>Rp(8RIR~p|DME zs?n2JFY#b(y#9pKGB4bjnhU><C7~Oz8c%sQu5}Rwx$6AFElleUggwK9XEgZM1OqUw>rz)ugly`V5w86Z?UGZexhq! z+HS^aa_}RH-o*9KPzfxp83`WU-nVlL`28_vR^kvcsN-3CxD|(J2ga46OFuI~?ju&( zS1c(e*&`1tS!-;717lb?XZe>pa||HzX0aZ*R?$Knw{jNc#XAX^I6GvhavbH}NS^u{ z>gBdy%&Emu$OaCk8RQd*&b99Ou6SDsY@W5Y+uS5T09d>8l1w9aU{nX+-`{FZ{4XQ) zBraP)y0Xp)vm=j}$-j3*EvM^&-LBFxNXebjCWVV$g}Lbvd{cJfwck*P%(s~YT?u{N z>m!5dU_Ymxa?JQc$rlj8-q@NbrHuxYV9G4NoX6YRofZpPfj`?yrq@diE(EZKOu;kt z^?8mMt?>3q9E8$0Y3yPa7RBhOF{l~0cu|(YWv-bc@q$nsGqdi%li*V013eE@)rxj7 zjS(1#*Ac??2@dLfEQ0Uk*QdTAG(Vrb-`|Ypyq$>S`u7ATMg#|@DfVHLwSy^!sO_G? z^-!b{hzV!xuk_eOHwBS>cH>dF{vXZ>?u+Ov?M7Lxt7?Y-DlhQHtOYDbxnh+t1!%46^k6Tm-h*bx0DoWKzFOTJg|!p@FHjqEL$KOnT*N z^`9^K-4AWv)#LSQU^5FMpTUhVClz>hCw>}K&Z)z3 zI4p)%zu|ZAeALb1iFJ^b|DUIPllnx(n|XHDGKuYPro+wpLB&pJn0EWXt0pi;f%$zs z$Z?)PLvHL!NMwUe1~Zku&j6@2$r`#HPf)zp={ISze@>p~qzsq!Id{(RA)?$O_=~u`G#}n3Hw$Zcz_^NJIh;HB_e}7@RXS@P$ z?=j$D&Mr;nM-As>KUQ{&{mneJ_!LJ&%8~fyr0G)_;zkwQk2%Nee-z|vKyD)FtrSnW zx+?(B@EYo<4f_boP#$`o_U%@P6{WR(~-gIB!BDwgA)YTjI{3bzRoaI8coF| z$2iA5{Uu&F`Id+vZzx)TQECn4r&nCpjlTVJ3g_1QZlBtovr2d zg%8Xsjo1sN$bsF4tK#5DG?RgUiLI0bHp+`@hj7n>kD0bFOcqu!omAzU_rE4>Q2x`? zC2W1aL1fa`Lyr_#^PQ=+#!`*Q58RvDig_$YZ@q23;DOMRCFc^-OW0Rz0vHhR?-OIj zSN2A*?eVgI;U$yRKW3_PfDsCuaIPqx7Pd_Jso5o!c8bq!rH$K!VGxWeA~CMDn15*h zg1*el$KB`C+;(doB|XIIA^#1nw3hE!zcB77)AV;VhpdCq$*|DyMQa-WtBb=fQM8h+ zjjW!RGCkl{5t_ewY@4N@qj%H`0li<+R`$}bOca>tVR%o??b!(mzD8bxqV}&(u266* z7mU7LE%wE5teUEU;;Ghcjn2Fm;-0{jFZ#rA}Q#yab_{ z8#|AJR{Ox%9C+RwEixqqd_|(VRP(O=A|4p7*|`H|ta032d5a@-dD(!eJj_{07Y+y~ z^etIo_*!*Ga?9bvu1`1R1`I4OUOsd->u=9xnzWCFHeb7W%%ji~12tM)Y(e_t7>8}H zFosjQV@sO^_}&)7zsA%qrkG{^UPHB$T1P}kYHMpO)$|o%6JCRAjpGh2Z?DO$xl{tI zZ7NSR#T>16yvDQi_o6laOt*vA(Z9FA`Vo?B30^(AWkP?-QLiN(N{>N!g$aL5p19#& z^wc*qfs7Mp^J1>g9{RJ8`^xJeCg}&oDq8JIyRle_#@XflU7r6rOijKM<%{c>GAE2j z)1Z+ORjTGLmU%ShCTLC}kac0z9OMm-#@&u;-!4mF&#iBazORXej9MQ|+&x4Z%gTb! zZSI4d4edNm6-F+%dop4Ploy`)lu}#s5R@1W+>^__<6VjhB6rJ{prtX3@1HJNNp-Dq z(?!PrSwy|hINeK~a3UCN;OI`zaYnJ24r#- zo=*BnYSfljfP*@!*~u%c20{6rtn*Y>X^Ft}*pYCiG6Qe4+LGwT-|p&wB-YBWVg9D7 zaASqe6+b$3fup?$b*^PmZqj_GJv#xLlSq9jkRBQW2_)(ua>+egTPMP-M25gCe}mfP zCVg^Nn69(ettH}9Ub-vRe{d{c=qmPY6C>Jh%U#~V$d(Jr2v7Y~(JjYG%<9Rh) zc}M}>=P#ZE!n(v5)4af$o}4{`Z&L-GZ3|={Ljq z+4=v_-;6GJ=Qy7zU3LsH2@}U0wFZ&wqe~bSF;zv@?QAf2ry!nq#!W6ccN(D;+#<_o zY~uJx0c@RVpZ^r+kvSBd8u435(ynw7#qpH~z~*>iBQ>jVO9vZLXBGC!yKZRu20(>eNjetH7PD^B4KgG|Z;A zYYo%)miTecWB*-Iyj_S0+BIuo?GyXU7r3Dm0xX6C=*_ZFfN2oZ0nH4aTAaysB*)AZ*u#JkR~%@ z?Mi2T%eO*G;woG&^~)jM@(=9IsX_amiRmL41ARrkiBVg#`Zc5vR~)TE^US^gK(k2- zq|BvbJbM>D5~yBXFO5Ei=dtoM_TN(V6zMveN^<3ksxlhG|Di0|^kMYIpy(2@t9b@r zP6Lz4a1-eXtLYzs~zphA3*}c^-#Xf~yAB-iH%Xvpe>Bid1@ z*&p2;pj)r80rVx%^Gyn$bemNqAn4gmf@5~G`RqyJf=73$vac2 zgPH-M03{V-Dy^^)j$oMWNtrL-{mFg5*ehV8vqNSc{4G(g3-B3;Ty;rA7}a}4n4V_s z0H`e{yT!6VCib+B%%56S5munW-#*aIVc=g4(OL-1%|HBtGQdMUYkg zy*f~0T1rspUhX*(Ow|LGf@U2oIG5E6zz;u@QuDi3VwT)hOvHx<0e)M-yOdEM4I%4^ zNR`^!7?=?wtJiKW7p(RhztPNB4q5|}EB3@ASgmV{WbvH=_A~OxN9hsO;+-~d0xe-~ zD06FKDn(Zhzg{7dvur}$IMTO6%#Etui%v{SRGf5m28csRx3^S%2P@D^g>ZNVallJC zxtALh7Smq{EfQWYH0!P|43Q0p-f-4_pKQ$enTDpomUfls*JSbv|E*MA)pAK%*_6WK zPexicm^F{B&}^ZL>rO-4FsXG1vbShgAS>Zz=RdWy(0z!jmVQ&a_m#K+!~ab+pwzv{ zh|fA)JQZy$>&L#x`E{Wk#s>Sr8&}REZ_4{}+oz|-8%`@47+_?BqTo`>L6`rIa!|6l|yL8k7vvhxEH3T zH@AL=g_p#EfUxUZ3_yfD$@yO>n7FwIYVP&1!f|(t{5Wq({1{o1cXgJV0x<`=mbdsO zDC6w+x0_bxSlc(6q%dS1PV=lX`~`eXdcnob9g6D6OCaICoLqAvYi#mSQy;}R@(LY9 zn?E%`6Rjq;Za1f4~eOTD*9|H$smjQMnDi`c+D*@FN*K*GPvhHzdfN9NdNq>CQm%K+A62cER~ zP6T_o1VC1f%#G2p_fNBZPib_>eYOXw@a`x->>0NTW$yOvA7O+w?8g6R9c9%7>*HSmyLt;H!7!^S{Mv~uAWTEX6C@`60xj+J9Bu<2@4c%+)?WX2LBd%PVM5x&lc#?#M(k|{;7j4H9=(@Rt|!RHc4aks&whvhX)Er( ze-D51lCh|BYeJ>?e0|L3;P=po-bHGlRv*R}Hw|_Y?bJ2fzagUK)H1CFYo*g-XUST{pfk zqY0+?GlOVd+H8b&OHSmLzVc&0F^D!n`eJH^t%>ejeVJTr5@5Ukx&9i^}JZEfw&rCf*I+OpKdN`?}tJ>bm9_YFZHbf4z>3d%G2Ve$KBUae#;*0M8 z=I(h_r|jbwH0Wf_3#6`$h!nSs0mlDKQKX*V>MD+k;a=JEtf_6Z$D;t;{ghgVn_fhM zb|L?pGByz;2>#%jgik#YqbL(INQz2J+F&hAZjoPmey>=O!rt?6K)YC%CsIt*32)5Q zsSZ+1>6CCE6*EC)EY!!V*AnA5b2#lk3@bVhLdq-Up($)csI?9PxgEDMJAp?b@?>ZU z$%;nvmknIYxKgB-*(q031lq*8HbM#*@YKc2lX`(&K(&;LGHe91WU}f%ggca9?3)3K zV&g(gd$xO#B4xgH#`?L@5Yqt*cI`9s zLt1hro9`iAP(7^0JGjtq_a?FyIva@NBiD12X@kL^n?SYuvSTqa)K-=Sx{)&o2wI4^)4jwQJyW@VV4Id}-qN%Wz=HYec_ zT6!ixrYq+5K#Q?~0LTvhE6g!~~ zeyDh`#KSq4)^q6}%xVT;F~3>LqiF0wHaDd(i&VGbss z+@=6xR{ajv=CrGHqBo*P~4G1CUgGiNR4sZ>d!7sZrAa z%T8$_?}l|`;?7u9n@N)68&*p_xgh3)H#}-Q1agLy?!flI__dpxrAj3V)O*}IHeobc zg{jkn)Za=sQ$|=<8KT0&V`%Ptp%oq5qh`mJQgeN34S@Ovxcj;fmk%`bV9o8gInAZ4 zNeHj6vOc+HIu(E;hg8Ab!eDEdNKsLS>t8OHYD1W+rFMlG3o7mAQbw;Ji%YR)bB2xh z$F-~beSL4H?R(Mic2}0^;abtykwCpYeQRs1mHhyZbRo*qW4f?)9`=??>>Z~1t2ON! z0S&Iz9Cy780wF>3&Q!l(xlz@JH88iux3u2MlKV;+GyL%wiMuY~q zt5F~4yh-r)Vg!+*igQwm1vS8eOtaLR8FjH2&UG?MU~DDA1XqeSrvVib;ioiWRxpoN zW^7m)+*!B7|Lw30;U3=;jor25IjmbnzA9@*G-0mmLO}+L9K}iuHm;`!Vw<@OZGg#7@%OsQNc(1zd z&_SaO`ck!#AAMuK=R#Cynptc;t4f007(>>}o)uvA4Irb6d7+Twn+d=|`pPEOVvxm-+-l;0e5Cg>M!m6b; z^9cH23~-P)_KbJM6@jpl4)d5ii@C9pUWOMc_pv+ZPH8@Sp6L8V!x0)sXi| zXdEo9;`~*h;3+thdfn6jvRz{K4?ehIe@PPnSI#?&UaA=zSYm4Yqx8lByhm2w3uxx= zc`oN8qFU=itbNGMoWof*D<)DM)VXY|_X84!au!7ipLDJAn!MS{EEy#WWfu#y#(67q&H!zPvd)3V;%ODJN2#(XIY#pua0T%@Aw(zE|vRTdye`5$XmxBL*x^ z1tI6=O+w4N7d2F$Y60Y4N7=SbBo2>ZmDl`v%#|Yh@22v1PMD~q#4$YugX{t!q`0kN#9qu*`}$pGj2fo7R~!R4%fKrQST;}yeWJ7j!7 zrejg0;T67r%2!_rtVCZc$>tOtbobL_P9RIjSA?SOmggQ?WI4S0B*+gIKDx-s$&tbK z@I(5OR7XmF&dB)bwK@7rn=Q5IFYG?iq9if#J_~3^>Qp68akkm}N32jM5XAQ82uI%= z$BozRveoys1YG_XaD;$?8^}k6Z;>z910@~MYUMQYG^bl?rhS<} z;TAP@@B9njLi#{^0^>99FuIYhO)@tkva+#dMOJ<4!?}Ii9i48!sSzN_+ayi@k@E>9 z%o5SMa&#l^C5q;r{(*R(@d3(4jju*$??u;d&6jHsx<{X13ah z;{LH`eR!U<7tZ-nME$Yg)V&%0s5rFICqujf5l$Hzb?q&{hf7#m7l_5#NFKXQ#}Hzl zL5F4io=qDpRa2KoD3BFv4$$#Tw#Wk5yUSP3+2&v|_lI&#Onq0_*Q#|c1hOltP4-D+K^>JZ=o0aZU`;?%ni5kQ?#i8#>VWS0|*xg zWEI`4$4fGJ#?2ZWwF9EK!&q$M8VXz9(>V(VNTgi*rcsFNLs1V<<%g9>O|vjlxvwlD zytWMIyw|Gb<;qn#Ax)Oslh%1sfGKBJR}B5iHBkK@cPF0Teue>~?+t>}Cd4XNvBvZ6 zArAMckIq_T6D=??7TIER_P@2_iUdP0VjXLOay7I{hUKmvb8;g<#e=#3LeBIGbDgzj zJ9knSdL5w=eE3CquAkN<6V9}tP;7*bTHANU#8){Gw3?1Mw2Sj{#12bF0yI%JkaL^j ztjbWvQmbxsvGr{Vvp__$M*0A;$&qMbmB^^^n=IOfonWbA`=fy5mDBGHPul=E3P$N< z8}{NX=Gs#Cb5x5hlV?E|8_>9x^!Ehzy|FWZL^&{$*C9|^BG2p2?ippZuO zU)LW1;aact1VoxdHfyS2sP(c<@3k6Yhrrd;&y9!0hN5|#7}WNP0YVvzVAm|&x!0qgEqSO=w^~rof1Ri(braU!ETZ$36vbbQ`>3yUyIy{PwT-BdjsIjz8v}BgF0h zK?X`sj?bV>dk@sdzNxK+{NqWNcTsFLG-0wDZoZZ6aBx3hOIi`F8(nK?hg`4~zBai% z&@-3UH=vz1G0b_8c$Fg^ZM=RRM*aB_2u*1zY{dMo2kCliGiHP7Tu0YmSQ`7jn3$V> z1-7IXG$ba8V&#Wyi}@Z1Z}BN4&i1Qt@Bgd3mS@|`4Hy}hSKSBjRi?T z=JE{6+2kr36iqGd6qDtrWWf`dOio7I1*v<;7CH4Noi$1sdQr{mOg9C<&Z4P* zPXh)FrAb~}7{!Yb=W(1T?~8i&#KQXYW0s$7Q?2l9yW!4;3C$^eQlu+vUCZ3pV;^FF z;}!@+OJc+J9^?Z%G*w&Esd8-!Wb>9Kzm1OUMX$n?%p|TJI}{Q+MA#rT8bcl$kZT60 zK#Zyi7h2mIG0Ld|%Lc1I&Q!X%0ered41=8XfhlYXSEbzoYI-JcwoEQY5wXuDI|4Fn z9})4x(#)T|JjLg=V(BO%6V8!+nT*^ld3|T3`K~t)Th>FGO~xz-Hp971zu;<^k_gW} zwMX&fGrUZ&y7F_-as@f&qifRkyvQv~8F81uayzOzLpEI>98^k#P#@OjXMV6J+1^?m zapK{KalVDgnw?{Ow~U98-E%<_zf5TiS=;@fqR%UCULJ4Ef+YwD0S|^X^0TqClWsMX z+HX;+Ad*k58o?$j9;_W5;5`46OnIdoooF_EVZknCZQZW*_qT2XlYK%LbV7lCd$psH ziiX)0n692PTF#WPY!E|$^A$OoSXQ*%3gEi%Po?v^O1b?Rg>}?YP5l$`wg4Q3>#a;wlOTo}u(*2LWL)Du$?dY?}gip}+ilR2Gb-ng)dqS9YaiFoN%N0vDCS zOsjyoJh0?@a!asavR3!kQQ++=g)@PhSn!>-pw7JVwuHIf>>`$PoBSR4kNvUS_s_iD z8>xO=y*`#(Cw>?^kV7|l2vFho}3@ z1-tAo8Szh&Z6M=_Z~SE7HF-t@`CPf@vT>+Ol~r6&-5Ty#p(AEWf~nS1#2xN+mmjWy z^KAe#QryZ)8qFMXbX!RjRSs{`QN($+!L!QP_z9w?{$Blrfg(rdkL?D&gK9 z@qDt|x>I%+0nY}zKTCaY_W$A-`5HF;Ne|-J(LGEzXJG=&)HOguZ85yz*&6v?9=?i9 zBYtMf6n!`6WW}EyE@uW;)nHO%v&klc3vQ$u&a4$$yX!p7eg4r;H5uI+V_tk^xvtB# zsZaU-N3_}W61`O>NWu@R^WemfV1^E_VM#emFo%#ewgE#A!tNsu|JwcxoClb;!Dg?N zhgIMJ8oyT>P{w%R3df^uOZu#OQzTqLSGcu+5b@~o7h0XNzg7+H&!qIN3BFBDZcOZl zNO_sE`j7gM-u9QoL(NR<1G#gL>f${SMiw(D{!|Z`lV!8CHhDEXtc{n|TKI^01=W>W z3b3|93`ETkml-#nA{Fe_SS$?t7aK^rNF8gzG(JUD&{5T0onBrVBq4NnR1a~=b|$n@ zIXGQ9_H8xPmk7XFKTd1yXO<>jw)w$BwPRCL8I`b*cj}>bo$sE)JX_)TmPg;z)*~O9 zz=G*=^3n)JKFNMWh~u=hmvZMB2BN*GRaPmmilBDF%4Ez(!!RMVKH!c4?WPRBjPfuy zDb<7=a`K*f>y7DKe1EcoLw)Xb3NIOKnSdEgbb01k0QE+L-UMf#@E+|JzqwO6)^vdR ze$yC&8}(Va{*~A1v{(`Kn$aZ&GwH9UwVUR=7+EL@GL;&NcjR>tVrrY{2;pKkxPbc- zX`;)FF2(I-+Hv?4&4p&*m8ww)R9?s}FKhmL6k&|c+BCKry&%BKqkff(kQ|sIK)&g& za4-Xi(w|EbR5-wva0bq|TD?k}A%G(?l;%Ox5Sy}Y)0c&>al1WBVqAHG5cIk{W~wY$ zOb~H}iXlREV5UtGew!Uj&6y2JbcjwCFp~y1;0715Ne5`Tpeor2=T?h_0b)ZD_w$eD zq&&D^X!@cR^uVFuZ>$L3>DX2Ky^3e`f)fsn@1ir8KNFj}T0jH*)O`|X_Q;LAe}u+E zF|l?D+hv?z{4DM}gj3|p-_*+9L7YC0JP6B%7{O371b=D1ZRXJObPg*BSSk-c(_x(04ao|$k1m-ChfaBO~c|{ z!y9nqBI+#sIHv|pi~za_rAqIDFTPcD3)k6R=$9y*jv#m7xJs4> z1oEaZCYZb$5^>?{-C!j2)aXjxUC<6L@Y;+b%P4EbReml_A$`QHR!*qu-Zi0pHZVJj zbm1xAesrx15$~&>6_$wzmha}8;_J}WA@GDGK7lKya(BV4JLfD9=9nA26MYuz-D(TeDO%o8kR2lUXMm5J zh;5}|1{=9ku(wgNdO~4n-K|kB1zGePOzYVN#!K&*D9S8Xmi#E0YJkYj+>>@oO#hzP zqBEl!4VD|pkl~NY`6H=uc8x6pswBSEUx_6$(xDjVYhVd7I0&t!PP+yfnpUKHP$Pkp zbtc~j{rAi_vGuViM9f5_<$xy$C+1&E1Km}Us0Fv)gn)$K$ zDKw24zuKGaVai-e(hi6Rf9g0to8s}S1Nw&Np^W1AA@hguO7TSuKfRAxgHyjKYzBjRmSVKvU^@`YimhD3?Biv$>A0C3kyuqfe?qaMElo5JibBL={eS1VTDCz$5y4 zY~Wkc8-$Nl(`UaYwhJN)fNny_r=fN&t0e}W=$kWQT#kKXFkIs8a<_3@%8W~0s^nxC zUKSHMA#Z*zL)!dybF<}2y`^dPh&B;|r6j4q zo^a`XSoW(tCdlm1&qYim8LYHJSixR3$uFqLUWI?8zA8fTa2z1B+Zyq5*<^(v7@873 zAE$y}+<7fzeBJ**whiifTM!96+2(xGLzwX>q8YJWi3l8K>#x^mdBjoTpc)6HRzmZbF_QkIB^#5R3G%{G_htmuaQ<8 z!Ny4*!@|VS5o;VfBMYrijDASlp-K(@&t-!^Mvpv-!a4F065n164B1Ouob~G<>=e?* z8sOcm)xr;jJ*=oSxOhjtOLvKl{gveC=}|K|vT}0K+!dF@6>HrX#4Rb*>Ge%F(Iy^t zpxDcaGMI0 zhfFLaPo2#(@*1=6MZh+6Ju0^Q0Bg1^HR}shg-}xk1Y0)xNV^d%2DaVTH-c#Eb8X=S zE$t)8?=Ci`pHbF7@M1Byo7b_j%EA+2qdS6NX2?0n1vsRTCKN?t-;|ia9Hk$gE+4B? zU`fMpK|-?pa`PdrUcXXfdgZovI-16<5K{Ev2zfda0A-d3gy{5!R15M7VzR!-$rE%T z5>y-qdsbGMoyE{MyA9sYV4GoN` zpmm7!aZo|CcpPeLH%K5@$@6I^I^tEg$6X@hhF)f%S@YPFdTL`wq#ta=QeoG^>()B-0nA3Tdgn|?#W}@%0mpFvv#Xe9=;UoJ9AJ}R-l9iBy52%P- z@7Av6rXan;3CGb&GH=X;znzdMIg7ITcE%9LVkf?~YynEQWaqf{UFE#>3c|X06^l1+q z`rWP0rZ_O+IKPSH?3}Q1(jS|C0G(h15^qFXq|{a&)JphhhV$u%g5hg2P(GC?E7X3v z7~y0I3^>2{Qo+z&FeZ@BH_#tBw9=6NK6 zzRz;wZ$M9z_SXx(M;0#PDzVj3b91BAuB8w!_z<@*v4$K8dNKRc1zZ#L5fIVfNni(c z8nWhFyB@;xlwY4-4GSk=>ZXC!{(s}=Pd5xfPI_w$-1J#CChs-#ZNQ#MRPkYpX$NE4 z+-xe<_JX{}V`serDQ<0jpKmpn%w)m^ZJA5_NAAIAJ6 zT}vY_6LYu!9Z%OIgg0f=oTR<%8%%rx^2U$%lg`K=;t(@+QIue^+T7T8>+B{xl!@C> zZ4w1!@G0G(V_uDne^)oNOg0G?O>66g)GPGXopS=gA*6jiu5NTLVKu#uA=D()>t|XR z-65T1hKpT0jGNdRR@bZ8JQQYRz z-+!^STf_^I$H96lw;$i{)*|98JTb|L^n7 zQ;6wa+i2+Dniw3Ys&TWo(#RQ4-8|5|>wE;DXLH_?AqN~{C3`oOhx5?#11Ak7kmcx| ziiV%%zyIY;lKwncYsVl21*nG%7dMFjBcrRIw+{J&Frl~g&0{jr52sA%UVfZzBA$l$ z%Js~eg}>==AD*KY^&?^vIIPo-4@yaQW=TjDoa8M_?8-sFB?@211Vt5B_6U49xI2w$ zNJ!6%>PcHuZf2HuUE(DkQlD~~zl1*Z$6V2v(hs0usaEG>dK%l*3Wr$lTo@L5)Sesp z^+OX7qJ1KD7fJjV$JS1OtZ$kEz7HlOwv@0*}`NtN0&%Mh)SM=*DQk88R*7Fg>BCTD9oVxs0vR80QlfA`z>VD8{1 zMB6H}mNLYDsv2QUF87lF$IPeljIbGA3OZw6Kj>_?=mzNDWwzmgqyg0T_;JF)Q7+C{ z{Y_rbFP<4oqDE|frQEOEDC4DaN0%r7&c7)x?c|11lSj$vB67VN^j#m#z-r|~PDqG1 zK5Or)&g>zpEbem4(xF8&7y43N3|u=ABsRf6OyWYmN_Ni7!|e_ zViQ(*Lt9RCh$DqsI?S+C1HSo(WAvrU=~1%pV#3|g;2tvtcxzPh4RHz_Nks|`*SyI> zW65;ZG0g2Q5x|9Cob-gGC~p-%_By$c0Q$b#CnG<`_BR*eI7DeP8Lquhx*t3MWwEQP z^nh#Q@l&alAwukVM!x3_umHV$jedkFoSqVMpv~qqRQN^Yx&c3lfpi8v0vgy=(8$ZL zX)P8rJ?bP~F6k&m&IP+R&RlWsQ^Q&7v4mNpD0W(R|HOw->y*tKEpzX6QjF=a1AGcF zq&rM=?C6ya?{^J5wq>WsxJ5};5Rd3f*9G$hfc(9rI#O#18@-jv<-~Jnb{FLL?l=R* zao~38U%*iiQAO4b>QLi$(hg6@bZ*&-J%m94OTtcX^XUJ)5e|Gpe!>l!kRuGwd%=jDK8NV&zfnOk^?JoJ9@w=AiL(NTKqmG&QOJ{BVXm>u@M zUJ`f4N`0pUaup8~SUh*I2A+`LlL7E6{y49B!q8GD$S_V>2(dRw3AV2%*xu?E|4rCd zMGXPj)n~>VN?aLC6L1)S9Ob^GqgThpCW$HmNx>lDO#ZK~4yl`|cEFTa&=y}!Tl!_q zjmH68Cc13mx9Kp+rWu$6%THMWdxQeE)k3G_?u9WoL%&6FLdA$ZRd+qMb03L$>QQv` z`*KM*CBt%7jS)u)wX7rJ!~`ewaIU|84VE9^I!Wbh6Pm2C!82S;*Qgvrr^s<#QS+g{ zzQfw5cjQj6PD=P<{PwzWZ&a*rM|`bb14#?tI_e`&d;7Ms6!=PZ2$1;4K0By=sLc4v z9!iW!0Q{cH0~=TWj5%a2u}0g;GElYD=T_SMAw17pGPF510^;7ddr0zQ&V??j za=YYO%3%6$IWFO7TE%d>>u#Q{|5-#9da?qb&LGt7i`ca6d>+8&7Bwz22Uxac6&dtu zOz!#cgO`KVA^1v*#^&XyfO2t|>TDlcVYUPAaO3fS+nZCDn@gTtVPvgR%HacYOiw%Mdlxow7q6MZ zD>hI{+j9KV%B0E(Y8fl;zKRtRJ5(tqKDLd+C!Q92-Vub&EeN1_R*H&HYA~E;X@Y#> zmDV1$6V#RW-U~^Y7@6KZj1kCA#!i4w`BMn(TJHWRU0L`f;&p8l^@`wTCFK-_jI;)JMeJMEdCe{W zRzY6N+uB|Dpt+9PWEA){8i@-au@i9cP9+#4WLJ!N3JN%~@mJ?5Q(r z182m)brG*xVaB~4fV}HJgSKahE*^4InMr*<>yis=;0Q2Jz{&{DK=QFR(EzFX`LHLN zo2D*b57~fOglcrY@nGY;UKjPwp_5k*qWKM2I3+rMP9otSnaHxMay>$oXro7koSZ|G zi}t}2SU^YXRTwReNmXP>89Wdec)2lx3i$-qB&*@!P5CqHgoUA9^tDf&d#L)4K>H`I^G`tZ^ko3DBW?!Hv&9LG+ zXgim~5&7kpkSW3c8=3M#telgc_>o4Lia=+L7vz~RQWgy?}HXFGHI zVd!c*nb-~?YaDM5z?Da7by7|Lf~tl(S2kkbdB65BH^>~-Ozd0v3l{@SnYY)8oG^B& z)2WUMtp>SZ=c@ZVOs$*^5S{66Akd8UUvCvNsLXTgA@+L6>pFMQSy&8G42`L(L^kcD zfIh>5rO!P3n?2rW%4*Z(8HlM?shv^}h*G1hUGI8bk>>80N~0K$LEG-*HFu4JlnN^!!f@eScN zwF<8gd>?EH1ni(xfnFx{rdV?1JJB{EHbA=vvq9>4Fb1zEZLzkU+QO>~T92Lor>jP_ zA)RRCfRQ22B9jPDg$GcU;_>zdc(;K}_D#i}BI_|gaW zPA&-o6d!vSf#v5q7(1q^S>-LooP22Qg;muS)AR}xUfBJy>^h9wu*E$b7BszKwlE*p zw`cq1f`1yEc?D(kEIW5s1{;Z`wA$4KqE+V7;E#a_*7{;K_sBs;h?KPB0b10$Dug}T z&}~&DVm2_3OSIUM;ts8wWTA54tG5O+>5kdv(_pKQea4C|Qa*NK>2)sOPFV6vLegtG zX89{Y_%L4q1a%Z)1=p^c9}8irt%5f7i^Ab={pMjgF-kW3>7ImO?1zBL!*7$4NFu0n z^VqAJ6Npq}smxTgetbawOiMS>M0bzCTURm=F(`M^-dO;<%rl~%)~?i>1>)f>%aq4s zxkN2{%WuEc>g`?Ow~Y-(NaYm2Z;{dS{0-x(3FfoeGhTP9RI=T_-izT|Ky5p&2eoHX z3F(=sYk4)y0TFVyLs(N7q7{Qs=vS2fKf?=XZ{Xi-E%bcvwJch^7Nj-+8;26z&`olD z7Q`II;Eww2fk!5QX=$O}otzHP?OGm39U(iy`9c(3m)A;dSk(8w~&sfN~(I7K#2}+sxSO{Ov9nG;uDRO#qa+Aid+kd=*!f_8*(4A7@C?Qi~oT#EF`;QgcWPxqay0jQ4C4kBaL<8lD=+b0T@=TgbwojHPBz ziPNlEV-njfI)`;TC8ba#2la*nOT*>2?oQ3*)TF@7Y8vu{U1f+l?JrJTA9HvV_GQP9 z{KSrR>D)Sm7BY}#eE3maD4MuSZVWbrtS((V9k%8MB$_J8_YXxQ(Mm=6a)EFL@7P$M9qx%`L0NDT#{*xq> z;;ZV<3coaKb!zg!xRRm{e!mwsjwBkPBIsnju*bR_$U2}B#Ttqb77S-~ZWZZIm^xef2jPE{eN@@vl&$p)9eK)TC z)UY5*{Mbt#Dg>|Kb-D4AtYbm;f*jW@ zLgCzzRe|?&52xG0jg!1JRKasW;sx6ii4>Gt-g3f&Oa^S6JO--LlCo$M4j4335uJU) z%n3g>RXnmolV(&!S-yy9t>UBp9%?ex|AoWyt?YZ!?%QHdhv~!Sf`zBFJKzc}$d9((zy#)}%?`rRP-d4|daqQrx&R^CY*L#Y6haJ%>%9=>Jo6uMs!Jq%y2g*vc{(VDxs@~(c+!-I%F@Q4 z0~E@UPuo@;JRrqDw}%$0H0M68g0=nW@NhDToi^oHiU$&IbPo2p0-5!9-(-0~=mqkj zW9?1dULDS(+r$YobDwTN7CYp{CqS^G8rXj4Nor-=x*1Sa~R> zVFZU_;y5;rE0Ku}$qebvqtaPU7<|bC!g~0Ct6#p10Zn44NMRf?q%z7OXdyR$%KiKc z>C$>LMGjw1EWcSnv8mD!=-t6l+;0jnopDV}Nlku=*v2sIO8WGc%c>=N1k`1?G z!ke(moGl(*QVrnKDfOxW5Pr=w#Espovg>-5Nk3aX^{Ls55x>M>N$~&Gr-Kg1utCQ$ zao?G%Or*MO;*qNR!Dl9#Sf7`+&?-wPox!|e6Te7*enDnYmhD16?%r}Q6?|xu1(PqE z4XptlI!Lx<;FO`7l`A9FRGPemBp~i6!ar!9UE0t@Le>O@Fd3e1zy9!rZvc9P-3Pif zk;%C=QiQax!nXkveb7MeT}*LPRtvg#y$Afvhsob$vD=M}7(v!&s_B>1W34 zT=@;Lol|jz-1$^TYrfcr_EcurWmv6F66s}5x$au68s`&Vr@;G3>kKu6<*F0Ilz-~!xSZ`F8BP3{z^R` zY^99O*3ENW^@GvOtPc=`ESDt-9#{bBgC;DXpYCC=`&%P>gY@Jh@U)4dVR273pL&(o;F;xyS(^;Yk*(COjf~~KQF>{j$uu-dH-OsnJ)&Xys zvfn-tS#ecAxDr_!V$scL^&vU;sM~?j(~o^nbWfJ$2(W5SIkEtYddjB+txbe*?~LQV za`pkDse5Q-^pE`Za9zDVcMWtpzDPlEF_qkhY`uJWRjiGW!4@=pAi3(@IkHmD`89OZSNvGu+WDjqtDqwh9eS9S;IAfw~gz*bwWGh0iID&^Xf~ba| z)yJw5%=s4wM-Pdx{jAo;`(2l1YIvukF}QUJ->}@OK6mB_T7(IPYiPS$U=MH)#n|=L z(l(TW3r|uh7vB=q3Yxb@Xg?Zal#V_Xh(zvkn}n~GE?ajyOi>17*aAs-K}bE9x>+Ir zIH-GFxsA3A@QQRccjXRDT15Te=Wjr3roA(*cPuls1;)V5N>KihzLTuCD`?bCv*apq z53LwCd@8j}G7bP-`vl}LMY6TzDBnpWO0~6nCTog5pO~ig9>1jVs$zO1_F>aF+^YJf zW%-W{G`(DF5yR2Bt9;Yq5UzGX8Tev7Mb2{2C5@!j2%6vB?&{JKgN9J0yD^4NFa2iG zmhyok%0la+t?>u|bbDMwkD<@5+(IlX*HJ>FZ<+l(>qGli=ZpsS1bSU;mA``~M85w6 zKsw6@8gGmH<1oNsxH?Jk4~rWmmV$+|yW7dln1gK*8ki~$WI5Fqp=ojmZ=Lw%dXDl( z$2YJDjkDf*=oy6YOF#gy;cAR3K_%4iH93Gl`Q>)LbIX)Hk-Yjq7sr+@NHa&LH?Z=Q z5NA5;!J{KsS#)(hLw1kMP=1{n&4L=#a8qa--@BiKljTIIeQVv5;c3EZi8vAXw?v)4 zLTJ~l{RAfh>y<_4Tf+bKs8~VlDs#lp$6k{4|C@NQ0cb3DTUc0NCDafFeED%C$6I=D z80hZ$`GxE){E6~t0ngGywN%983N7D@u(#HI2GgKT8&0U4tSnHC;JYb=YXRo#>qATC ziVUnYT)fpYFAtGZJ9D!XcVwTy>WLQ^;!Q!iJr71cO#K14pufnT)RUbv*ZkRlL;i5o zo`vA|oVcz;?R^)X*`5{S4Q4pk-9Id%Trq;I&<9z++R+gIXx{qM^Gz05&gmC$6-zRb z$V$F6xI!L@098=Lu^M|UWUqAmv_N!Pcj{d{Y+sLaq~MP_4YJa^OFh`qxs8P9aS;Z= zGuRsTp|^^gTXt7T&UY`c_65^NlF3ifY*g7&`kn7 zPtKk#L+68?_`q~>QkU=mUVdnubWMN^4=wIc!HeH%;E<4kEfB02T>n*~AGIpF5NfXq zaCCFgOxx)=5m$=alhJOR{Q5}ZSYSc-oJr3QsLZ8Xm9*B)^^sWV(hly>u9`;7?hI;3 z*_SGYOjX2TC7fij5lrvE;Z}>qly#VO(x&?(6Ke$7c-#AytY2_pSxI_Ux#S1RWmP4rq@K%!x4~%FmRyGyK6U{&AjWUPCm^b>s1R59jEdyA`_}mYmqrurqe}39QVKYya(4u zGhHe@QZ;Hn1<9o-1Q&GWJ@0=jj`%6c2bN1H#Kbz)oMOK!=4{A~4{_zOHz~T)E5a0? zQLfux3ib~72n=NNDOeot;XnzBA$_XCRO~M_mUbNQ9U`rfz;zOGC5z-Ex8L^J(^Cg0 zb~D%X?lXdFNhWt882AflC+T;L-?J+ZgMSoLi?OSehL*%8cm<~N!5bjt6gF>^giB;G z<#77aa9=QTc1-Daofxd%YW8YD4Vl5>Y_2}?8JYdwYd!9Y;}Xr-(|x0ayDMP!Yt zk1j^kVlT=(VcgT-pG+4ueQy?fs$lg$Bxm9*?P6rr9AJTnbbQFl^A+AY7F^58{}ex4 zo2$kMh2I(z)02jO)>7}}ptqvI9^E&uxOyyUK;~ma9B%~;;W@4qwzPy_9;aVjGdQ*C zL6QvvnT!4NrQf9Q)v7mhw*Qx>^}}BV?SNaDy=pIF5likGMV8c~ZEQxs9m3GF{=Fb@ zyiT-WuZNo0B=6c@#zlXmxxd+#8aGg;X*i;4jmC*oHMhLVjC}irxR3$a%mL6ZR1Mec zOerPw7q@k&z03kx=zl34D?U)oFiq~}0j8rfR3$Hzh`Ic>xigPXe9uCIR6@{+QzW5+M4sRYuV z2?DVvFJxx1O51)|7gA>gkU(;_D_Jp{l;}s+H!(~x|Gfy*_gWcGEKdVKcb5$RmMrfu z+xGIcX(?aNq6xT(edBNL;H}y?Il9_Ur|Q!BuC1>{rl0F6AVxV;0=zid4-;qGurNxL)Vj84oXq zTIQ(#_d%86Ni)-64dF|uUaSo~)jdfA`@AgQL=<3ZiYB^Z2@W ziZ<VzB*%Ny^6bAyyiJ_Xvq6xGH=8EA4%TO6#wQ=0JbJmf9a6yaM|rfb+J%Dy9m0>dnQE0=+yTO^zM--PW}@R$IV zyE7ES*n-bt{vPC?t)Ac6eEHd6FMU3tDjfrDQ;z;1ixI^aeXM1v-m{$q=v# zy7hDoqsD#Ox?`fbX16{YQy10jrr?_}RQ}0l^^#8?F|_aeE0D<6ex|EDqolo(0c+}b z9nvyeJ;I8GFKNlQ$m&L+~q%n`4wHdd}`0z1&-T0f~_X^%KkyOx3 zbyp<0OWs1PhkOX|yPXOF|7%^mF7^F?;E(}ld++q!STFGE_{M{v<&`AlNo*#Nvpv1s z&*poF$sPFCv}=bs7L039`_TI94l{)G^!slF5GCT=6-`&1s0UKUIeGb-bR&*}eO*QC>MQDq@#v zZ)Ag?w(mTEJhki-%b#Vc_duzxO$kL>O3c_bG|Yf+;xiy?hSyDQCU0(QLhYOJ^Sx8c zxMv+~e%;aYS$bephZPaKl+G2dOw7+-BQexcWVV6~Q~Jb4PR9Uurj(XPrNP-;+o}hZ zvq;#ECKp~ zJ>b4e^4Q(AA3Q1dIX3UldEyp9Tgd5RU=4~H1@k!7Wh9>0Itucs&Ee2@M4>%!zdJ-R zxL>zMJzpQ1PUi9tK4}9NS)ce_D`(NeOj)RdROt6%+eV}l49$;SzIShQ5GpMqi^hgI zD}>Jj9Sj#p?uO+WsYwjQI7HwDahAmKkfcbx*%sL=D@y!ed06;*$zpclt z6ML3-w`Dm9p8~5uJ|dvNunfp5StRd6({=@0eOX$DJAT>c>48Wd; z3IjUR_U(wNtvjo6?A)j4fivTYF#={MdV3c;|z57#&(Z+B@)mE!Q%{J;e z%U$x<;6a82f1dM1JWTcI0_n&)PRse~EZIcrIba4dGCh#~)iKmb{GM`|MVlB1Y~%n? zTn8)PC$0deEM66IGJQmbizgvuLCud~1*ef3Jmc21FY5`m3z2OWHs1rKx^xWLQ0z@j zp0f1$BVD?(s=}T_vveY``?W=O?`dg@R_l_H+r6ySbz_L96%d*OpNn+M1ma{KJsDe3 zO?ef979RDRkOM~}&IKb0Km^b1(8Q}Olw_}oy=;>J;RwSPok+TOgYwa0tQ1T#=s7(tY0jDq&Ikaw^|i(yOyz)ZKRh?`u4qS|$OvEAJC8 zaxEx6?9UsrOE>FsSxL-tc_+?LqnEtE0r|0&Z8={$x@SE*GIV>GD}gZQpWadCNko z2HSRYrg2(RtRb`=cfQ10^%1i14yQ1KJX#>*E*|*R9Y7uPIr5*$KF8C1JN6W#k%hnmclqlWdlzi3!2;)pVF>WU~%| zVi596{-;gkRV-)i457APs&K0tCsV5MeriZ1onagRa?0b*lh4ZT)8G}$k`XC;J)KPO zArfu7xiS1ptFu~d*f$?uq7h&_n;_T$ahqCVUU$D_k~i;i5|j(h>+b! zJOI030``@(cu^eLLOiJ?yJRF{)4*EeuCuWxk$NujFx)vPvxfV|f&agO z-CqK{j{|D?(CE1XGi(YNk*nzH;NBOO05D@9Km9y%Vs4)pi3=(JgKh=bwrLdPE1kVF z9#PllxIf$j*#eChNJ#~~``H+qaqJ7c-3NDq!qPg9qkp<^`jLBmUn53s_V}9j=<2n_ zDr%2)c9xeJv5}=P=!=vP9lNlB`JD-S{SP8R%$O}N?~f+DW_bie_Z^R_{t9(JSD&Wz z`7@|hFGo>v4*x67p`k1F{c2dcq~UtS9P5epx!>M@Xym+T33RZh)kvH;^q=X$X!UHF zVYqtiOKV-p;LJl_VMoUcT;4)CYHD2V(pnZXgoed3dAgoNd)B_p0TvXM>2NyTbiOj` z&$0v%Jg6FST3Q@bCBejOTIaOxMf2#>*S0H3#pzzN5S$vuoh!ML6| zNkbC&84<^6R@_AH?tSuw6!N+lZ(@1=fpf}kG>WoRjeJN!Y#}+$6To@T1FeTB6ZJlo zl<1S^vXob9S(4@5a>pW9>__Y*ULSP|)H45elwcYTMVAcGg)T zy<@Xmg0g#Ue?b`|>Ce1L=7n+WpeQ`dot%s1Nbxh$-#FR* zg9{;?OfAV1%Q|=5=9YY^JaI~|E5b$PR2mW_1 zURnn$KL=O$w@~Fm+O>^`<@G*)CF}H*v^2{m$Ny^N8-P#VCw5I(XK+i0x4B`yZ)fl< z#In~T5r%=P@%k9Ix#f&3QhZmTl~58yex``gkpxqee@rA)O_TuTXu-To^tReR2ga7EM?X@ zw)d~z6MZbQjCV|gYx%M%WMi-u*~J-qo#-PB320{x_nJCgFCXv&kFPs+jVBCUEnn6Z zst9-RVDQxb%#dPZJl<6G)j|zb4*t5JKumqaypfZ#YygTP+TIUL1;u-~IcvO#Ba49wJB5W9&cRmxqm}|Sq_7yOMz!(CiFbK-h=O^e zj0m#@o1;V^=x2`ZZLCp#<-rA#dY>Ds)RLU(RRx*cDsY(}La%$N#jJo;Culec`@(y=O5@)QbY73?#6D49~ z+br%xQ~ax|j(6#sy<Xhyhfdio82|G6)3| zwAi?KKGwdK6@r7)cZFIPxrnah0~xYsQHo zOHWHYx7{zQR#O=GK4ZdO*+{T+Js2ntc2VW)prQ1RB?b!a&nkT02*j%-Wq~Kx_ZRl_ zsTd4)ur#FXnh;Tsxut`@Z;D*s=fB27;=o_*_XZ2V?A7vs0MNm4@)gWU^O8&j?Fs%t zq?*tdA|uhXsmu5FYzY#B%fyHqqg{gd1qh}{uP+S;s`EY^gdb)9ib$Q?7RfY{Sy4d7 z#%n}o5Y)lf zUKLhfV{$ZHdGrVKwJAA#%UYReycmb~e#0KiO{9m+|Kfw}B~mMjv<0-*Fs$>G`5#bS z%WDXW_+%li0>}RWBmm40N7b>2ciCQMLZ1qq9r-HtdL}IZTywjVQz8SU{7^fQgW3n+ zWrkd)84a#xnGeyDmmyoMu)+5ND%;{r{YCV)<3OR!v4W3OfBDvspHEW z9|@{yKRvNp9`P2$V zXfucLNsVwE#TaB>#HKr#*+y7l1=V%K_*G2z4EuM_SyUMc`?m)_fmx3{K!(RNFe1Zn z-+FV5NVr%?ltY81s=N&^db6J#ImV0+2et&s$&!BN-#BJY3-EOYR=bDZA3Sqcwx2gf z?6;WpX~Ftt84&q^HU9N9M*)6~<`%C)1HSMlGc+j&K~^>I8qSeNUpI+uw-=q2sDRv1 zRW%z(A!}B#O`UE2A)i22$x4+r@LbedP-!(e3ft+qO0>{%oZ@~yB(0D|X@BZzIdnhZ z#FW=;tu-JfR~0>P=5p6--h-ucNv~Aq%9>&RbL7bZzsV&{GX-;*N{n39p8!Sheh8zA zh;f_ts;{LVVJDD%+@$g-YkojiSl>@BW4jD7~RZbE3d{L+8ha~?#7mOJTR^+~a;sx6wgj?o%KaOc+%=Q@6urFr#9d0p?1TN|z zo~S_l4)UG;VR=uBv%GTc%r%L_YkePbRWB_--{Vu#vk!~+^@^EuZuzsr=}LMZktxly zg?$uGItq;s&#ELc3gFZrIsI$!i&0(8Zc^_8+OPZlQDzgvn8keC-^;y72isZ;+LZ~r z=i8aJwM7d%(vt;E(hx; zgfMB5wsV0VcO%{^`If6T9}GW|urIB=8UTAk>^hV6ILEVmzpj>);#o*EfF%r;7tjR2 zWnTJjK`@QYd-xU&@&5yytMIJg#zH!^qI*}Xdg&ie8T^Q6o?5#m3^T>w9n*dOE$5>W z{DU{|;q(=IIf&uobXmum&M!fhk8<^!)27PzMdfDL<~LQq0>0Wadu#4 znmEQVh*n%OF|Hm4`e9Tk@mA1$fwx^6AwO#i`-N9kF>_3^J$zQM=+;?I!;e%3EJjovyAWbIt9C$J8huT`{#c7%0mo*o97 za01x5y382|ZjUK5DZIw@yi~^$&Go_SAQf&hDh`E*X(1&Y9`;X~W!pqD%fO6mi}Hg` zOEix`%@xrBwbs<=NPxF&cKqw7lFS)>Q!#d-V$ZWx(p8OBJ_CQ z$5*^zRFcf$#x=rygc_k`y0OMcgNl$)Ma7&(b@xv_4)f%Lz#t|^z5||9XOJoESfjBD zoU%GkK7{l#Vy&pcX6$N-%G5_%!fM{8+8)>GkfMpTpIJmX@E@cu_>Asp&fD?+;oO61 zwOCcV&thhtJ@1*R1Y$scy4;%=oN3E5n2CQJ59^|A%9fOOZy@4E)Uy$gKS6Ze;w1a* zJp=ieSB=^?`woQwEyWz!;700B8)`KUdFSB07E)@CwC2{XbecUfyRbEdm<6toFzvhc zEopPfnLvZy6UbL=9xcflB?kf+^yi%=nORnY9{WgXBABg?OZnqE1e=@8%hC&1*Z_&< zI3WbPW3kd-G<66i^Ltkq4G%(qI=u07Iu^chBiPdOs3vs@%n)N0qzrdb@*7Y)FB*{T zOpZU&KlCZAzBQW=rNv#744}BxQBkmbwYeziD!;F48DbDIQ^Ty9o9JZM$U^I2PezgZ zaL586TvDeGk_hS6ReTtPY~D@OZqe*#%LL6$AQAdz0h9J-gQ&}kU#9-y|Iqa%^=+GX zzjvQu(_m@s;d@5oBrI(J_dl>b#ikw$BO%W-=N&0axu8VcqmtIs4@{?*M*JYk36tDm+Va78>P*Heee(@H}J0n`T1y-8W6}t{F+D3E>BGNEjTP7gvfH#tK6E< zCfo@uQmKCi{Y`7YivDVkz{emitHR^ff_T=cXU^#`{VaQ~>A0v0VGGmLSPD#NQE0R` z2l~sK<71b;j>b~sYAbE-%mjtVIe!s~aC`YZ^}zpB8&GyFn4zBji%d*c>_Yfa1d6>FYkff3_)q?V7BHjIcXhC+ zko-=9+Jq=wRZ&jNckB9@+F*{LO?}milk>v65;hV={wsF%)^_BJhwNs!iS2SiNTnNL z%L^Sxvuhw$B9Lj$G%Jx7yvds#KnuZ}n=%_qJGEhx%NgQ)2R zu4L7^NQ+8!B5d!E-{nm-J<9Nzb3|1td6Cf~C+A$?VDTY5TN&N6A7V3b zl&PhK=E8y=3hT0~c6aNLUdfNY#a%q)YH9lY^{b1m!pI-x5V%f`jh}2^eVN)43A}^J zJ3jnSPRmh=Ba#B-+!piPcIz^RCx2Xs^$g}z+HR#3xH!0W(ziI#f~Gp)oB>?|m%n*((c(&2)nz)q`or!Jg=ie0A?{Je`e)1lL$(zV*>M( zgt}+@tJ9dPkX+7cS?_hk4tV&l{RUiq)wX$at16MMYzNznuXL+v>4m?-S}S(yJP$Q= z5f;s-1uQjcYBzXXp@N*(n{s`Z2jC^F7mCD~qnnrhL#*|ekhqsO7eIOOUaQ5;-X3WhcK$-Yd8#?@^JKzAUKS+}wjk0k`6J}3e;c|exY(I{O&36n?tx}Jfjt-H z#OI5@KGlq(`c?tDnf$A1EC9svClwTCY)zc?iX-ey2>c|5O+~%5MM)#9k8l^? zccGS3Fjl;@DS^0fi4y$-7unFtm-mU!7OgbVkbaoxmiU*LFLI|NW0cI7%al+;0#7C$ zDuI2X!vK1qz6{XwHcVL_1x%8YgDf+H{PVPa0jvs;TxQ`UbfLLHP^qThPBU3xz~VuZ z-j*agj*T9raBQQqz7kYHbV5pwn|R09B9EVfM3Q&>o7zqt8a~e1MT``JKX0ZMJre8} z>DkmgLYJMJb4Hpbf(}RQ9Plk9R=1}7UB4O+cXXQDMZ}ZFIsWJNrgVoE?5M?33Wu0A zT!lb!n0?=_tlajo4`sSa|7x`4q()Xk?vUXGm$y1}>!=7#0DIi1(G2OKW>>uVk)I`D zlG>4eCbCNJXy|!e#Om^-q$M0E_g*VNY6^sF&FtHDe5M26KkqX6cf#(s-nQ`{7-L9j zl>gR~mT;5&(W*9{19#88^Z74jhp+*QSHKT5tFD%9-A12!0n&7>Q!kKfCyl>NcN#~7 z#|=^qC%*Wsa=EMf%BU10EycR34TSMo!+>`dL5yxHGT&L_HHiJCRH=cU9pWLT@K#$G zo+;w@d;Q<+R#y=l2p8L0N?n}-PH=I5CG$#s2HsC5E@*|$Voihq4P^J5Z9n=*y){FP zoUM*Rru+k1KNpl@5dGy@Hlb&p$>(3i!BkT=R1vetxR3an)9uNZA~bb@K|wgI9BwZS z?qQ-NgSL12&2`^ArTxDRs|`SH;{k>=`|JMwEO~O*Zx9%360iXCIe@Tap=d>xs_mi= z@DKL{bET(s0m43@!!NQGx2wWeIMIdwK!HM>yU*B2&em9}C?m;OBFSkv8+&WQ9&_C* zh2b!4f2kKAmCHs`}`9Jwm6#i~Trne0;X-vl!^g?egb7F`x;nCC)S zAiQZG~YHO6_ndf(Iw+YGinBbtKl%zs;i z`f1*byy^$4EH&4*TPMWbD(gDvlL+?&Vnjug3B)Rs2wzdgn(Xd29x3!P{pm2djM<(# zdj34+K##WU-D($vUGze<$zn#+KLaljDNn^L`bHBEl|P_mTu;O7|I-!C=<&jR6)Y2? zJ*25~GypK>3>w@ci-pggS#|(BqNUX-U1WQ}Ueq&}df`!-+fIFROyJv6)ehD3`tz|B?ZN)AAJF>q_M# z29L#GOVt&Y9?ek47DkW{zy|lz6AOnXW0}qmN6=P?1zM}IW_%gny6 zK&b4N6^6fhmv?E~l&K@D=HK;}hfHre_M?>Xi6eCLsqE8cy-3YR_|L6(`n#C)Aw4;6 zMupcty=o@SGij$R`4LlVK=W=0V&ZlDt%M5QjY?t^!qnMCAiUD>ZTIt?1d!17FD7kB z3?V`+eVOhP^(Xq2VGgw?{rFPN8j!5;0FnubR#Nl5iKs|hNw(Gh3X~XWfo&Of))>#X z0yxXicNd)Nr)^$dTm8{zhYZYa+DH-b@n5~_tAA~%Ue zl1Olx>VVQooffIJMy{@uRe#6n>+ zp=e63pzNw{Vc|ngg!M^{WW|aILOl9QL;OX7&5rH+1^XSP6b*JEF-^%81?K;d=p7US z&&5ftc+gJRf~7>-?0_1l)9%hY=X>A?pR&{h+wm$aZTyC1d5hl}c&Ul9p^OS{gl+2`rnX@f-xi$pWIuMr+ z#hJ1dLWaYfg6l#nK(FRJOBK7z4I|Bnfkj5P;L)n$4tge-qYr{HR&E$4#L0)6vHvBQ zKDLFPvzf@^wl_c!$RR_`leDcCKEo!YKNLSF;pi-1Y#F_{^k2F{tR9-7e(F=R(T$KM zAymmL5UGOK9udbnO7snUMIAO@8x{9F)m1Fl2&8xx^dQP{IDGK^|Oq}!FR+)E3roj%bl;Z>cMreZSw zd%rw-erm)#M091(PDfHD;Wo{8>6dd%+5!Zm?HSgEi2AC>`RR4P$;m8CkF*kQx!f?qC z^cd|x@b7fp9FN=+NX(Qx27*lt+!nS|#aeCD6mo>Wc2RsHhM8!7#vR{171wk~>c!YT zA()AHX7k{KKd(nemc&~uCsdxl>mU4@v&zL6yBfI+3BB^60zpc6F9vk1)GmH`vq`w~Cr)-DbSyV}*+pWqmG`?~D^|+!# z9j6}cZ33DRnp!c(=MxE$*{cdhIN*=S$W4Wd{ry4mgY>%udtQsxrS)b{88*2(a=E8X zU4O*^<}EcQQqH=c#O@Ydq6|_+QXfstq$|z9bqgl^|K%Tdt<~Kc<26|#Tg1z6+lkgx z2VviK8QF$dWU8HLBrRqyr$ z?FM##jy5uYDyS)7Jf?m&{K3OXL-8}#;%1z(*0F?8OR&*8(K~n?2Ev+Ym-T}E!tmIE zgoU>KUGG5f;gRD%Qr{)dtJ~{!;@A9PfYI2jn`gb=Ar1P(bCkHAy#h{z5vCe=kS;v% ztyeS8dQC`lac5M^N3U{=WlSLGa)z2UI{Z&Z(r+@VHw-($a1#ghQ5cCZm~%960K$UM zk7TluMs!n?^U1N2y)k?|$rHL;ryxfgzTK>;Ve*&_O^Y?IPA>%F=e(F@8MAlef?$mV zHU4Tk$rSslT+6_=ardY@4W zrCV?9Z_A4u%6;31`uo` zx_u069U%w2-Txe8ooU&q(p`wY&3(v0r$yHs8csk?y;4XMoIbY%BLb-@1R~9MlV_+! zqD~{&MrfDmsDJzlI6ovL-hd=R;jVpoTOmDZUmjs|=hE^$UX6_1I(`skvKS$K*4OQ?1YE1Cq!wQBx09wn5bRrSd=A&(6 zyCc&p!u_wfi?1ufFSRX)TxvM8gG;@6Rt>BZL!xRZz%C^Z04<(}YleJ#gOSlU(c7(q4 z^qvj4)%5vC0q7?OWFveB8h2vUvAI|^>u0y$hsVB4iPv%w#ruoy-v#0Xn~Gr4dle9Y z(y{7)BSF#_;f8P|n?$3Rm)FfPngyf_z>tq1W2UN$T8>w?bTQuiG*tM)tA0#%`8kYh zMD)@oH}erR=3j+Amk(;4z(E=A;rJ67h=TSU1@Z!3WUtWF!_yg;!}plOrd-mvDE4pL zAXu~NX)0-8-u^OXneEm*zIMo1?2MOO38UQsHcU3>JX%l+tk7{>4LQO@&` z5$A5*X#!4d&|wSxl#bpR0&AM3oYEIF52D69XI_2Kd>f4;Dl~@(){Q1Kx?l0WCwZGs z<`YowSPL1Jt8%TC!G~V}YDU-hyx!k933!RTk@85Ytxhk0zk;rX#2b*)7qJ#KigA^{{#VEi7{8%+$pT1s($;&RaDyF0c71Z zT{TRJIvbSmCM9``oWR%61xp)ai;A{`YVv)%QVlUz+a68DU{PmM=&cggaJNkLM;zsG zwzRBzj|x%}Api21O=dIM`wPS4FL|Fi2`B*s=oKiUk4!aE{eFi$Gv2EEc~dTYcQN@S z!7y`11IX~6I7X>^z>}v_{u!XU!^IQM1UPnl{0NqiO^_Cf0Os)vXuTayE_UBetNLSY zvgrldJK31-$;06Z0`>`{$kvfFQ7I_?U%zv7T=-|Qn)^y@PtTR##x$DICA)*cg$6QQ zJ0IH@TD-Qv{5v3GVc$np!)-?dgA+mLqWU^2>Hp%q#@f4}TOA!Sho-tqC$*nc5WR8W zg3Ug7_0Zt3d(g>%1fnDcaSUzls%Z|ntibxm==agMm!E3y$I*PefVV7!BYsi0$^m6YeVDz)C#%UmhIoG49B;vWcd;`hCruacp;)AkMa>%5QP( z6F&LM_H{kr-q5ol8PYz)H?x)B0JD>}ak?r#UDd#K8U{pqs9J%$ms*5WA--_Sh@(>I zry)CBQTzc1)N9R~&1ezpkdV;YIHLzOzg%f>=2bK1V=?4>aEmQwsd2IBD0pTf(tt3# z4a~5%^7?%}(~;qQbF4r41j*2$pI;=)d#?`IJzTLfp$Gf~N>qWPNEZX@adc^@$vSqS zGNLi09(=SzeKa)9@wPLQqH(;xsKSag0i}-Ft1u`X=@eCWId)uOG5^bLXu_H8@YlQX zA3T2mfZ8vmq#+F6$;OaGajVxpK;noZV-MrUZxtxcnh- z4dyOF(cv~vy}oZu#A%W|ib3@2DcQQnac_8tZ5kiW=*7%?eA)* zpPZ`!ojxg$xcB#Mpo5vX2iPODZKu@CU~B(7eQ}*AIfj3|5u-5C$miAg@c&8-rKD1i z#~Sr!n$!l1N2(#Ka1MI7YUK%@+eKrb?IMXumCNdYe`9)fG{!x3ggx7uy{{$FOhB3{ zCK!=l>eelqpI7CsW09oh6i11>Ko$_21$ZP%|JhPliCMcif2oze*@a3nGE&XS4p^x@ zD!;`&1NA}2^x1x{39#Q5AwugPni4Cv zI8z2A=L@G~8V@<-!)m8(7+DL6tm*XBevw>H@x=M&8M=+|$=)N*(3eAmaCq-K;)Y@8 zqthI@U4wm^W!K0HTQ^u+tvqD;%Tu-E0Tx?~faXp>R?p$b24u3LiJ#w|xh)?<4`ZCK z?_t70f~`|4=`8Z67za>b6jXF!f(%uY+T4wIxF#>>Bn3^u>GjeC4D^kkUr}kA6`deG zD&3G%yWz1`Pnx9Uq^!$z*&tsvWatm3>o-N`C``I%rQJu&^K@SZl+7-d;`#WE)36So zZ09G2q`g-D;sBZg9XMGI=7uCZVe_GUcq;)lG+2909azj9`KvGILIGT!0hU<$PiARv z@r#Fc(YO%E{HExfV8A=ZoWK#D=G-QdyW==?nZRz~bOo#hEi)_CD$zo}_USYM9VwNH z)zfLIrSZGRMC+DlRs*VM^BWOh8jogF6pv0b3DcV=77L(M|MHM>7Rg(mb*}a@0G55+ zF~OgYdzT(T|Es#Q48vBM)RQ&PH3{$ZopU3FLT@rF-XncPntmQ#Gz7%a^}h&TT+RvK zLnFiz!4;@pFZOOznJYLGEfE`neI{XZQ2OiJ9_maA1z2vg&3!=KHPjBMPmmOZ;`_QhF4){mU0nJ zqZU1@1e>ljSD>5!-yIS28ffP{KWJ81tzGEh{7)MAI0}8JW8b@^Ar3itF}7@F4xeF~ zecIfZym*t|=FNiv(&}XvLMNpA!N^$Im|q_wx*_o|5`d4EUAcR?W+;fmu%EMTb_0NfvB|&A5kZ254 zEMRQGU~8xvwfTN&HR7dASsBBG#sEhqPOzxfOVbk7X0>&tt<21oAn846-oE|OK8_VW zaCosWJ?7_MBuhGBtT&d-Hl_9cMx%i5Cq*4>_oz8j=cHGV3UNGZ zodzsnvOo8Mi^V4=s83^O;vaEtyrv-94vbPWgHQ$v=ZQ4{zDb3m{!afkNHIuO+gss1u4}Wj| ziy1NGuE!eKKg@C3EYTrSt6Pej8K87)RAm~h^$B0%lZ{5?f+8h)V4Qm5?7_>@4S-79 z8L#_Hma4BEA$s3M$zy$U2xEnNsPO`rN(GemRHoJ%1?;B!y?aOX_pNANANf&I?WfPa zsYl2Bw|(0cXV0i$;jZ9~j^cFlHC5yMZ?UdK0LUzsVronrvyJiwnsRci(jC6)+P=Nr zPcs9sG0gM}0eYV%7&cK7QY*Nh-F8?0QA=KyHU8=uS9~%Jj?12+O-lR=vjM$FUhQdH z8|wHxe!T`3&2!nT!2^UzhNJc3UhK7!{Jps5^#@XfaJqbwzu-#j2$=zDGzfRVu4nwb z3o<49q4~JIE7a$8qH5?sF$7<0N4pIWRkS_$}f! zpo%cUG^iR1lQNDIa`C)m>}4{-ojk8QHjNG*y_N*B_(!VwWFSj#^s}Ss`7lp&k{Qx8ORJRn1*|O>BbIlbwJzcg#Y@ zs>KqDK30v3#AZ(2)5yo1)rxi;AyogJAmXc|LO=f;nSL>(AhaK-MQGqTe}tMG_iWus zlsmu$61utw$ZsO6Kt9Rc)(hh=-|)K#VjZuMk!YQe_ z5^0a0Y!bF_P$fxsFrL9UGA-`koYQZ9*Kzz#W_D0~A+Ld>^d(EVjK*1rK$11q)uB!k z@YI;C%0hyQms6d7P2;V!Y#$nbNO9dA`Hm`!S}FKUqut8p{iURm{?$F6Cgt29v#o^T;|q@EEY$`@wzJrHZLfRV-nOg5Sl zP;6WfeAMWw$BX5O4fP=7g}FAo0Q|f}+W?JHMS*6k4I0hL0HNGOvYsWS}#5h4xov`V159pG1&{=U^Kaj8Gz-sJHoCCo;$rR!oE z8l(rXvyAHo2?z55V#^=mlZji?KM%hcd#`()x}_=%@-?S#y46Isv#(kaj?m8{+$ROu zTw!fk80^l_(-Hf!in+@F*mkFyuWpp)^H}p3t-C_rjCi_80GLH4lgru}Y9_F)UpvyI zF3FM?#hht-9m5TZUR~^w`DkrA>zw3wU5%_ZfU8hJe7|rIH+f%a2en) z-IC$|tqq0_L_XC>263YT&ffLf!POU;rfN2|Ii%Ayf{j%c#o(hySL{7O*qex6JS2BV zgLW%OJOzx6*Av)ag8#{m8{yU?QD zMn*tGT14D(?(V%OZ;^s4T`1Y}iBoZFEfr|5mod!^yG&PFxf>CPdDTZtm)M z#LfM#$3>+V#E1!wO<%o)aWS6yQO*0XtW?UX%8O-7)LJYAoL9FS)Uj?C8NY@}KuZF% zhumDSiSctNX*Mc${k23VJ1am2*5UHN;!(R*C zDrCX;N%7ktjLlh@u=_46lKl7YSQyBQ;G~K^NmmygpkDOYr3!6gQrZM`^Ym6$(^n!| z7w7iD8S{|i;XHJ#n?{VD8yI96f3I>>M1}waM=lePjy)y?x=oafV2mq5Z#on!MX?}b z(H+f|0;Hmzc_st`d>**vsLQQ7siHH;C^e5rl~sPR;k^u>|JjTL7WW0(aZG7ZYVnqZ zd$zDOJ`q{nb)&#;)p=|TU`@wz{^#D;>*=#?mzj7QIebnG3k^w^`L3CPK;J#&G!?Mm zdnheJJ7Tcn8jfSY^O4ybeNg{kIz~A7oBtXvh_~_DAAPcPHk!nA1qt58OiB|C$4x*X<)T&&gbr9Ei}9q00Z5uY2+(#5qL7^&0R(0Z}6F2nNNs_-1$ zolxpN?8(b}!nRt^rNY+h4=am`NE`b{>MnMz&YjY|Tihft7!fj=B*+|r07epYkpjfA zGqM~Vfks(j02um~uaAds!KH6;(aSR*-tpaNH)+q^Jp6{>hoI?fvKpgryxcDt3o|!G~6F-0qTg zZ_8fXrrKQ%Z;mZud}(H94^Sc&S((G1IFj3!pnGhd6QE zDl};u^}HWED2qFk8igA4LuiS6ENs|4zj>H+Dz!FY_oj!`sEX;eL!ehKVf2<-(;q>|#h>@8T zP+=Hj!aMS;f%vcrylx!m_?Nv>{=o~1*m1WWx|oY)oQ2#@E}813Ctbfb%&cfgKWcy@@YK`Ww*EbwY1Vi_>8 zZFv-=g9Elu(_e}1=ir4mU+qD27L>J>b-^5DuThWM)F2L!R(22KiY9M}ir~B}9v_^*icbNiic?b;+hsPV0I1IZ7(fBOw z55#bops>(sBlHIy-!*+ksOtg=Q)3DM@$F&9Aq3NOWY`+I&_WX@l4!m)iI$T281tt( zW!%>z!~mM1(qMf5`*ka>;%O6gj_Rv^Yf>G9SA^B%;<~b-^N@4AbXBh)V34+g(&6la z=7d2NJUV4xAr`CH_-hh8%JSvNSjs-kr-hT4U)g$ddfo0gyHXLv}Hr|XS`Nwqx)jj~T~8QTv8kW5}2IOS~8 zrjzo2BUzvl7RFYiKjrtk_-ehToz626FGHto;~LHdugTuqw(FN|Ic{z z@Mp2Rw#Sje3&=_CIXiJ&vbKi4fg{8Lq)MP9$%sMh+%V|IZIZ{a{v)FqLU+pqb2)ZZG0f2rKn2~U%{zs=!!Utbh}xQ zD>mB02w>L!P9j)P|HL(B`8(j15yS9( zgkfRYnP2+?8ke`9NCFZ&6ou=jk}ocLHKI>1BhZE5;n4Rh^)cMyc|rqZmBqaG2&^mb zM1dS>f5=$u)nP0y1RgTmD!FaUvxV~{>0^)E1s>>|0zEg%wp9`J@`-btf9Jdn$yZ%| zFJ$2fFaN_|{^4G0z(nkRp^|$V!j%@jsqUJ^B=BwWFlovf{^796UNUzs@g#U!Nv#Ju z`@~=fM8$L|rn(7b{sx1;)c+e!r4Iihb;~(jGdXB6oOj9hHLe7@q#Ruj;OF6~z`pWs4q4)Ak?=^bO?7MBd zUsA3~zB^bDXAQVp(lZAmd~gN9o5C(KM*gFhet>G+Or3**qF#9L(elXTygH=#YpN-Y z)e#0(x2VWv{jZhb0BoEr zF5CY?TlMAt*)FVo*oH_C3;FMn1a5eQZyISzzTwR~O)h?4z*|U3*!C#E?GVkMXE~%s z?blWJx}SfzekxE(FsMxBb?_HHrLJNmpsky@m0CAU_>0Lpv7AxH&34`jMJk?D##dEP zybcWa)V(ECG>Rl~DF8Y^#lH#t^w2Bl6+5{BFF5{OWW}yAUmh|$y$j2qtfSju{^^;6 z(|EAA3xRJ>lN*ZdccgkR^1$4MXs}hjzoN7322;KPq@b+AL^V;mYr9qTc4Y)J7=>pv5aga9>GTyOXQhx zYMVO(Hvh+N6FBFOiaRf60R5F#)jK{v=mpek`ar9gk zs0B6vsRp`#otC(>BSZ0)P1wUqIA*qOLheRc zNaU%)BN@D`0}|}=A`3Q>g>O;42>=RItg~U|g`yOkS|ojuZG55uui`uQ^(3ybjHhfX zw{?)Sr;7X#!-AAXzpH&+i7`sEf-g?wWpjuio(0PQGG}|Ar%dE|BX2cT-jSB60WcmH ziA2M7y33;Mv+0)ie~T=fT^P*#oRG01T>TGYqRw~Nr^0%D=iv=!a-BxgFc-v*nFdGB zTmCibe}X5kJFCg?pS8wNG#~^fc{Nh$L?vYE2+~rrD9t7z#%0voilsndZDAfROY}iDei@QTZSHCPm!>&H4Q{j1p?E&3jR~Lnq&~6$%?QG zqB_i~(q0)_a+868qY&M1g9Gk+58Sy_`11Pp?@uU6Lnf#Cm8)bff@Mg-l(7Po+`IiD zcz)Xt!1$B2Vb`-hIlz%x)Y<)pM!mDHju+;3m-fGry^*dxx$l-hKXMwgC;@WKcraaJ zZg(wepNlNp4`dQ-s0nv2DmDij`UEwl3;7=2B)MKiP{F`D&GRMdmZjy8Bg zgO1re-q*r!=)8L>yo3MW6Nl3IMQ5kRdm(mk>dB~u+&>kl-qgp9ePh0G!n(4F%|w<0SB@1!}F zp~kx!K5d0n9+b=Q5Jes<>%!*TBVdvme$LH&_+D}mnWnh03km?sVlI0r8Y}3H%UWA6 zIz9xQweOzx%u!{~O&3H-Qy1Bb;#o33DU34ly~sa{RNy}1v*B6x!f~%|II!Z)4YPBV zU_)a@`1cHLVu4Nk+e`_*8y~OKSH5koCQW*80A>T)Oy?TtvBKyE&>3BOh?w+KzPKl= zxVuYQHUBYncVZ0#F(Zt?G-zmN2Zk8f0DxV3l&XCU3Z!yqZ^pk~z~5K=|DNwgrJ!W$8AX$$<5h*Rr)If$xn>BM(m{chWHuk`80<29W3CKp zH~Noi#NO1~y+%PK3h?a(N9<0_t`}u#T^R`nu`}@HN&f zMX2MYUoG(2%3+{=rTIWUDn2t6wVg*(Fl+>iCNQ2H3Z|LN)lIq2&VRp`Z}IBHqWOexyt=2yKg5;mL=CG=$d{2QXl4j_r}% zTPqUIxz(FC%q;T9AH$#>;+tlFsb)@hPpB%qRRQj#HPtci_}eU`&$lL@4PW_Q?Y1FW zkkobb&f=->tDCx8x}x+adX-?Yc{6azQ-_M3B)eplS79(%=~0X4?s zZ~{>=3WWTsMHflHR(f}Gu!k-d`ZEj>z%p}Zl#ic<60ds3*T$Bts}fKwiRchAZx&lZ z!Y_JJ(6tgnE3nV4+f;XA_xytagnhmXk@r^S>vwFTcf$2k+Zw(n>5*0*uYfliRSnQ0 z<-c1gT7&WjtuEHo`MvK-oW%}Wht6e_udD05qaXa37{D4TFn}-WEFi-@tQZP?>ze^l z537cr|NT_#n$&h^uVn6#iPAYanu=wT`s`6qvG?|}JIhlSJ*&3G(^xZ z6?nowg$$45NSr-T8K^9Aq6Rq(y`-u^M+ut*{bZ=pLlhTHakxUbX0@lcj3e<&`aJuG z1~safU7G_egP5|yPXRF|8Vyi`))bQD*guhgZ1x~ETK&9b?o1+!I&zqxS4%?Au3k`zzi@}ZUr@HYYlKsLU!(lU5x~!CY7+64@IzRH(fF4N|aBsPz+@k*`P4&m=B>8x&8={KA!cs%yd4LWQC@BC`9d%}Le# zi5b00O$%q)?=4;o!klL=sz>ib>FEG#Be)aZu^|yC!7O}HeTC+PKn zG5J{V2r|EHl^3jdlOY_TvXq=f`_Dm0$-V5P(OtQnZRM%r;&%^_o4}LLfS(i*5#q zOvdDN4%QovsHED|Q13!LRnY)E%3sKAktJ`sS>>aOp+mRpH&VrthjhS0seJIGl&!XH zYPriimzQ%k+3^YB_Kh>VZz~Rzd28BMMPcc1P4pvEVkiiZej6$nlCh!VI*@;s6t~Ci zR#UOJ2BgThH&rGFu&FY7k2Axrlz1W6euunZ!0~a{?O0mCUUIni45>eVsvU z%MDGbrsGqVPE+vf1>odZ0(8-AGoEuyPs1S9_LTKYc{WXC-CJN0Os1qI=l~HMJGd4& zWrs-M7FWBdOxn2Lzl1x85LRXMoJmO@Hu7}}gS>mL5KF7+FCqA{2 za0S1m?Wtd$8P@y2FP*&QK)jeA_1fD3`5UG9zNIYK>}oPFlo}d}Uc9{b=+j*v3+ElH zL7c8LqbRCW+Fa(gvThJnH-IMBA~UhGn-Yry31OF}Da2R&AaHuTHH&J^oX~VQkrHDB1-z7DeHHiZ2npHTew>JjV3`zkSeL?-0CoP+mOz}#(6wKN z!L~f7lw*68=h}nI2OcLv)QRh}K`(+$u0%&=#s}i?`iFn{W864!j0T;S51W zXnFjkwhpF8B_jxnYh1?OI*ZDnO#(pC+c#OA-PQL@@hz5WQeQy@roiMkbdN{-a1mSj7i4d3{?Lv1TLqfeCOP|K z_QjCWl=x#M&(&Xkv*D-999QAzcSm+X`WJiUu>CS5h>-TX?-&lQUG8jI&q89|Rw~Av z-BZa8D+0jvzwaD0BDCW!$(LkvTqT!P0#KLb_TdYc+5q@LBAry7$o|k&w29)}D-xgF zH9*P|Nrn)Kx&ay)13ospvJi5h_U&T=k0!nE$b+O)1udqIywgM8l(8%00)pRwFnNpS z0RT96CYhYKOZ<*E{Tvl~WkXyS(=$tIFzLwENNJVA4=~6|Vj;cv=}IsXDyzTKAW~0) z#x-SjfskHFc+6}SRSk;$kje>olP8t#qOl*+EA&zptd#fl_ zeq%zO)zPy9l*YtN2!dJEwN8D7G$iJMR3Bv{G&w9R`J`A`2neCfyo*$+o};BApz{p5 zdLjS^3?#KVL6bktYIV!0mLDHEl`2jm3N@xjX5bk3TV+el@UR-mooM4CkKsE7A6QszBAZa>u79`jk@B+zH;CGy{*}VOkwM(J_wzC z#AL{Gmk;HJ3Wbz1qU!TmFJ@-$-!D>!7=cX%VtRmE@!3Xnl+A?3!*oTobUUWp=IKL- zWivK2_qGeRd*3bXr`Xm_cA4wZ9LfNjQ|9?G5Lr(uepN^3#m)9*jYL&o`cLoIDel%D@P9Gym(y(9v^0F;Q&W~Xq@UTtii)Y+F-vuCt zBqjmzl1EAfc*e{zEw++QDy?A-uB2e(D^M)*rsy%C5g=H%X zo8|S9d28+r36RXrL)quGKKa1`xjLPFJ$d+jsx3tqCoLadf}Y;hVhO!T56<+~bw#+M z9a2gqY9ll99CEIpA!EqIhdoD5;?QYB}`Ss^Ov-L@N zPD@$NqxQ)1jFjivWHq(QXcw6*=3ZOELGOY^$!C`tb%HA>$g)(CHh6&sRu5Q&kVoEw zX)wVX-GUBQ)oTjnkJIT5+Nm^poAQ#695DJ6M6KpWJ5t38r@Dg7(6y_2oe%-v+fi@! zChBGv$(xoKzkS>4#@X2z~Z%M2KA5Ds<+Biy8IjGQaX;#7sou+_RR` zfKKyd~#hCk1%OT=-y!+1-KLS$M zh+CbaE%)?7En(^BWV>CELo-}K<*2RcqqnA_clH`oqRdiegolKOV~d+7m)kfU-6elL zbq@_yE@u?=g2Wnk@6?&Fo2{%4-Av~>K{ZlJ=_mTXrI1_H@FEh#tR^b|<&GbQ?`zT= zVd5OpmZ9w~-KnG3r5!p22F3ze}B#+bHT5 zpS2+qw#kO#W6WCKN-!R_pTBg!D?oL~Dn4J*1mQ&~$G}++hoAu8NDN9X?Usb@n^|8B z2p)%t?=*$|>1c*+%&f3kXL$@E>I5>QB+nlxEwoV4=A$bMck}8h6z#Ilsp5j`rpcQy zrHKU~9F`a$Frrtc0*J4-rDS@85`UtzIA-k-R*ou{@ujcs)xXVR3UgOVI$!k>Z0ODx zqhX$`8}Q%E$z@hVh(f!qi+cE-@AiEZ3cjfT8vHp}@Wl8jC_j_N3;z?BVzmVOhs_jM zAn?y9k4tG!-61nv^}F6;i@qJDUjw}t)ymiW*q3k>m!0iow_U4(C-*(S9tsSq*@#b| z5L0a8$Aim(0XfZW8eQ*=&+DJ;O+^$s{-OJL+}-o#Vr=$^MQ?FiHBc}6R|onYdY2R} za9^u9Yt!15XO=ckk*O0LlYDuALt0G$0_MvYbz?GuZd2hOyE{;6%&*B5Zr*^B9j8LA zi{MjN9d;sa(5loJGFq_D z8=~tCgaYRsISB)<m5pG&vurAOf&^49x zJHnO$7AgSa^21V6zCXHrPJ^VzI0XjFbl(i!Xj_B_vFl}pkXs~|1~J2K2$m=^RFiX> zQ8EoQOYt2fEjlXn<*;LcQwtz(V*FtO-j^iBR_71ivE>r7<(8H<7|Dm3(96-;<@JRm z6v@oDcR#eB?kkL`vN7RFoaOV{<;lwe^4D5E%ErS4lf9<~6QG~@5~VO6&t(0yZp^2y zJ02H2E@v`woD0`$r_6Sq;QjCPV~MQ?7s+#6wRFnc4`h^rwEezIn5J5ip-ZT#AqfZ% zjibiIP?aQ!C#)IjMWY_MT%dfGlM4dvB8!YwsnHGF|J@WZW_;%Yn^h>feS>(C{Ae3H zN}cxwlVK^OQmIa_rMZnc|JxR<`FgRdf!C|^$Np z0Y80eJnGc8)fF)@*LpERjUAR}g&i=>X{S=EARsZWES%#UW=|y<#y}UrhL(ZX&=z?4 z#*iMbz=~SOvdJhT$`88-FCUF4&RJfDSk}_#m@2Q`;QM(ZsGsRu;UI^|>BMGDKDf|g zU}qhbT;f^3L)nbJ5EH!0w4Vy%h$g4X3K`BP(Sr9Tl+XG9b7F#aD%YA0-MI3<@I|&8 z6?eH-9gH5Ichj-psW3$^#96g-e{c?FmS^w$fF7LBcn zc`VE!da29e1zMwt+AWavTij0j6~NXP!xpZ*vt*_r%baS))zNCtr~wF4rL+^gJ@O0p z@(<)eii!*pfOEINz9FL_84kU~Xd%QlHf`kZqy#_LnX3C)MgPAP`aC3_xcy!9cv@Nd zEZS%q6Qi%3P^}@0efw2L5MCwLjD`p9?xyPX3Kf`sL5qwE#2w#ysrh^RpH99l>W}9c znJzXE;U&;GY*Jm2;OHV#3fqkEdH>Jhncjd?POXXuEn8aH8sY_mH#FAKvA66r`o5cg z`%}xQFMU?7XplHlI-_5_ndyzvD|N^VD>Ix9V(+tS{*U59o7Sb}5Sso@GiP=;hIa&m zbjVhnFIbi#v=RSrPJz1({NGUC5y-LT0$BE$p*XWe9Y%hD6t8F3!V&QA84_3D6gnO9 zq%DZX@}1(Sjy#4Wu|!iVvhw1|@NL}%#Q=tG#m{4V{XHR1K8&DrU=zmZ%Izq$U{>Lp zq;~w2EO;?>zlfraMEMHb&4~+iaW8V1wV1}7)rtIXnp6=fO2RCXY54_MH!E#Pr1nj;ntSEl1O)I{LOk~D>i}J3 z3jIdHpEf^I4gjhM9)Uq7eX^y6A`gt(L;?D4xBr?ILni2Wa9k4OX+H@ z9WcJ>7eg@_{6>WZ_fl6C*W)lH_@x0zz4qEWjq@?T0kB1;AzvN)&M(AZb&@SIyT^?;PJuL(mlsj&7GJUM5bSG z8v#5^ax?l1c4z)RBx}#P75Q_QW-N5s2@q;7P_+Yqy0_?F^R7vToo1`k!%o~>xKU@O59B;L!tJo zPIh;bJ!||M_rnsWI9|iuehqfNc?Ur!awR|sd}O;yD}eV^^ZxD`aunpSL}}~iXcBGR zs3}{6IErK;C_M?fgl#cEhCXUI#K}aU^byVMFYH53IHSNXbBGbIPm%|ehM_mLOTUhS zrcV?^R$veTI_9EcY|!+Y=F! za)jCh_DZIpy2>xZCdeSqnWSQWB&}t24Pq99ANa;;!0_R2VWE}qzSrM7T|AZwpH1UjFYQ1mH-6^3u9ZE4%E$LW_+l+dPUyMbdFk6dC0d@d!o zNsrblrEt0kuyU$hd1;DBflIdrV_7dkCfIiD(MB&?6Q=y-e_st)J- zj1TRxaDpqz~oSX$Ug*xiBPxLyy^c6k--aaJ|4~ zJG5iFAzttE|5zd|m1s7Xs2VDE;*5FNj#tlX!;%g?`GW#>Tgf2Om^{ z>Ewtw)mRTK*8=o^miS(v_C9a7f3V=WaIWzT7LmqMM&MgqC3o1u(X}3jzV*VDSVoVY zcGo9WR;scbZ1FUW_7VqsFxTxB%~TZ$E|lU4N`E!qtST&05)7_n+gb6yVjLhTzu`${ zTF@wIsHs^E+e4wDBCS|^w5xTh$I-B$*GwY`?gkHDyNMS(#gA&}B??rg){2=Dv))Q< zj&z|*`@fJXUvXdu%}On2M?M~-CgNI9v)}Zw6!@hBr-D6LSPB>3vU=>TKNtC~LzM0` z=6oZSVwTG{>SDTnO(qCy9Uhj|d&M)#s&u=+%kw$_j=(k~wWjf)GG^TjR~nNtCFnfz zbo)~!NMnM?M+<$zwmWpVb zDJufS&oawmkf@x0CcMLGfX2a{GY>M+)SYwYUiEuMJNHR!kbUIes53e8z?VDJ9pSpU z?BC}BkQ-(kAgNKCC~%HLgaz9`&wIGkp=La?Z{V&v>_ z#B)=f)Z-1z{f$60gRSOSHkzcn<-bdlSuT zS`r_9<~#{vCB~))6{U73$|)FeN4DH7GS`2B=@O17Hw0g%DDWp(r+(}F*mZ1tJ`awvhksoPpdndeq91FF~ib}r&XY4>e3iJ$_2 zNltwwTHbUxZopHW9Gl+a3`?nOIYUTIq?CBkJTURt1AWZ5`22z%M9KFeH4<66qXXtt zcEIf3jRRz3kw6G6^vub}BA>8bW33M9IAR^2@iTT8>%p@So?nqVe0WL2Ww#O@IKnd$ zZ_sf-01yNYj#QII*U1-Y`~V*n`P-ZT9uPR9cuq=4pd1QwHA zPQME&nMgV)-F+J!-9~#929)f~9+XI=I2JGMH5J0aZ?_a`L#4Rwk;Hr*GQ0AKHkKhf zt~;xv!c@(JtLk@utEY_<9=@`NX$zw*v0UsW9ymDODuCNBxSkO$Kp_9c<5KOAH-%Irom(0kJPt|kYJ9@ z86stp>wNXm$nvdW=2&^(9(6z(PHb#_H7ft-r8uz2;?wm85cwW~{OrI&w6?Of!xQ33 zkD4e~y8C~-k<7z1N$l1swdj`0WAdBts+j?aw=4VE(|*ow{q09wysUx7jGa}i^tuLp ze0)H-BUf@99zsxK5SvidTjRjB~xI4^(j+1SY!vShqxGmL9b&ux6%z+NI z7?ll&zGqTQrneU9k{Z6C?4%~~eQciFx#?^p*5`9!eLM{m6MF?mHW=qwGfo1`Xvv+) zc%zzF)Vg|=cFnudeE|VWeA~Lc^oKT4glLnOr}lh0aN)rS4sir{%tvRL?`>B_il%-r zY$V3yLyy;Kp}9>2e{7x4nJk~Y&~2im2`7%_B7$3t9y)dZMC!_t;|cR~FUxt|qq5=6 zuts-?Qax8MiKi9ylvSgp!9HOSaL^C=9a|&0W`$t1WX*8fN=$1Wf~ZXmyHMjdCCaT3 z$}bqek=&#*tld_#ZLjM82`NV=vbjHHZo)<%n{tm39(30lI1w2)(KEGWXLv^nloo!g zvoc6m0ygtK-yZ(Kk#VAXQ|;lFQ`KYG)lTGCKHbJqICT05@)m%}c=MVz^ulM(EroRB zH+n&On)-+KPMlZ}hUCrf#OTrZ^LIqH;_)_Vy_32nUrHDOLSEc zk$5PAygon+-|ZxVjc@nURH%@%as;^LMhQ8FJE{$Hll3y>o=`{IGta+wEtzSP+nfoD z8%y1R!kKBAibI&U#aoyV-Vv8RJMvxK^HmGnV>~X154WN6vH_v>**RFEi7Ru-^LiN< z@C803tH)Wv4ACpofrqhT5a1)EEtAkdJ<|S@igAAF)aJ0(`ZDd%JHU}Llxn@c66rI7 ztNeT5d04$E+X^aj_=PJKU1pA*!71$UggulPiDE5$#eSsJed<3zHMv#pCXhdFR~=ur z0mbHky3Uu&Y-bGNda>x-DNg)*iTR5s2%DW2BbtB!Lw0ZaYfal2(MAscxAjfInl)3= zP8e7!1o4G>4ZdTg2dGBxYnEX`qTsv^BO@e0i>|rzw4-#*BZGL< z!cX^m>b?9bZcoIU?O#+v}E82&!)OcYdsW!@Lz9Kp+!xk@!=)7gtO*M?ef+eK9#=v%c#cZ|JHHHhMQ<7mJN zN;R5%m2SP5dyCy!XROOp!Bs6gD2LzImrJr6BvZqkXr&qmsqDp>+e5H#cF+#zmOxHA zVC8zM3RxWp+G(JZ4-!=0%qUtN*QsdWY<;dtuny3I%ZSvZ9W{7`1BY}{+UaXvR)L(8ma~#LB-%Ks&jbx( zIAC^;>f_BO?95I^O2`A;`wwNFhJEr%qw@V!Tz*Q7-TQ(42FX@fmPu;)TD0j_e0@pI#FdeV}J?eHq?fw9)=Mb|jkI?(*4mP#8VxXWJs z@bF|N;>^TC7cIf5t61~9j<_(cT*VxVQYc1DPx}X9RdapU4t`yYZXVea!!@~3O04D6 zpW(~CwQ;6sZipS{RGA4EHhl7k)`oa@qF&mHLp~(V0Hcv@~j7-Jkf6H^U|4`>z+E@Vb8xH}UC7Z*RT+ z+2JV%WOiv`%gW#m-&AAi7pO9LHc3~(fHsw5eK8ootV{dmKL9)@-KPrk+f$_Lgt)4; zXBQ1x`%WF3f4boHGgO0@^WYO@$ETKpx1}85Af;pVSlqKqXTCAKA&^+-YjnciM8x^z{TZMXtN=mO+i10QXA?DVm2O-fVC8a0 z!E~%98sHSPQ>t(XET=k7gLAnf`}b*gVzN>T3!VQej)yGj&HGj`Kq}kV>IgrHMTUOY zt<^=YUB40PXTyd5ch|yzL&>lG&|7Dt0%}Q?Fsb&9Nvv%l>X?#vW0X57Upc5I{~b82 zur^L4vKD|-owu;xLvJ3S?nb*)wJtaP`P^}HQs%p|#Jpwf(B@b}7)b>Rm~|)4t ze16~uQW+|KRr1wI6|<`dCNLa6X-8=Nmz!DW;K9<;&*xVDd+<#-7snS@FIvyPl_O!2 z{5Gkv`IJE|BzCS?H3x(#RlsPyt;&v*V!~h}d+4+s7z!cxB7#v?g|!Sn1}_box$21| zMLf&~v5+nDM&9p~@&a)8o+Mw>`YLeinNYme@59&F&S(_vrMxWJOuwb53s)}Ygvt+bk9<4mv#tERZ zI~6o`7(Bio-!An*SN8e5GyKmT>eMB3W#PG83|g*kqLMRjRjCVBv@0wOS}7mwP#Yf9 zVf&$tgyK|Q387a%u?rbCV^Ta>d&dr}j{d|WKThmiPae-=i=@s+Po%hRzb^tU+nIUI zECslAEJ0WlYXOmQ%NH{76#-z`xa~giG+4ENdqui}>~&}q6XZG~q;G{{l*f6Z^A;pMva#aOdl z+T&|fh*2RCS$_f}cMPPSlB_FrQLs{KTS%1%jryY2uQf9tG7+^Q5EJ}z#q$6>Z=gy@$ zE&);xZ9({RpJsgS*U|Re?zG?IwKSM=^_Dn{QY;>#J5OvAaT;4*ijsVLT|Wm2IJ7(z z*h{dt!I7lj9P{VR$Xi4bbp3(OduZH{|D8{Nna9CK(b?Sz9<%d>@E^KR#^WfsfMBTQ%40^R607g8l&Uy10yMTAAIKY2%I|o`ek6hsof~wB6kyh6 zjI@z!=l4_&Jp`EmCeDKyYMqUJAI?WtJ7u!y)qivtCP6;#nDaMO?kb8#+?bgSzG;4G z#c4CnqHr5coUY9Ser|JI?pzBoJGc>os^sXb)O4s)CG zR*lsvT%NYx*x%K9w#D5u9P(wNBQwT{6?NX%=QcZc8N3+P`D^_#v!xR57Pma|pa~jqH~wryH}Px^(tPKZJmx}qxbcP z!nn{ZW9!HZkZcM7n8S2hN;l9O+D!wbL9Tq$e-AWSDR5`@nYlp$E_VDv<#6sB5|8tv zLp7V(DJ5328WR!%g{p4qA)OYq6YHj}Xd>(OeQ2s)b36xjqQTvkAr20EmM&+ZSD}W+ zJx6XWac-N+#Ckkl0zCi3bRjwP^>XJ%1{_bY{})<=y`kjV@nwNya(tX#ZA3sHR&a}g zfWYB!2+^d@PZ^`$H+2r!qHi}%VXT!_)_xiL;61c-`8;djh~W&8uYMqxP=K6?g&JvR zswY2~xqb~_rb4L3JQ9!JAoEx+3?=B%`^t*M<_ww$%bi>JfC=jNfh@Mz_FM`8V3A04 zT|<)uf2AT}osMYV7*eWlAv_luX?MZz!Z>n(d*jcaig#69Kc-jqT@Fom9OCpNBRY2~ zl{NZexvyG8*87-aP2UEAlqN)JAl;?PRGt=pjfxPv>C6o=uYg-J3HDE>&E-p_@wI40 zw*Eh;{mxF?(4Z;J)z@0*Krsduozj`HfP>Vop$5HdvQ-kh8a5JD_q2N5XS`=ysP{!b zdW?F&@{h0=_9Rmssu4Q{YB7`qq;j6F`ELFr{@4YN_q|Lk0~ zWQrlS-RR9aqbEO)HpA?)Y2nA}0fW73o#4-L=?3A5(eY`3CJ?~jOtH!DrZR<232jpL zcXo-%5Q}n&p(NjNF~WUvRYia&E?0)Qe~4B?ZyCV~d=}gB3k?0hXW0shd^w`=y5!;T z%)y@T%{+;~cl#W%7|=rAZK*R{N@Pyvn*HjSgqDEVjBlN803g^pljLn+cG3t|K)I=3 zJ$*>U==67avVT$R^ycr`h4B~_l`5C;ngb=QCqdG==Tf&#>)ka#CZl}5|N)1qJ!^y0@(n2efnO$7;N?g6x>?2B_)3p z`MH6IJT;^GOV-Q3DSuxL5*Ky{3`_RSGHM_72D<3pQY1@+0d5a%{x3`XmyK#`NfKA{ zJsV{!obC#>N1gmBO!*!K5P0b9E+(d&4@*(9TUN?0n(_1E>#i2*4CPUZ4S6vP4=5Qr zp?9^2krNG-IvsbA^rqT0!egeKl3EYJ>D8(gW;0nq= z08+|z6GYAM&j~UgU%^bo3WCYXHW>_(>(31P*axARxZm;C6fXKG;@^PI|1#dJ(6`E) zwF-jCU4n3ywG#j!D#Ssw38%uEwM579hq!%rxl6!C2m<@zvD#>Xv48)G>l_AZQ>+uc zG09$EZ{VZt%{{1MfOukfO%tJ$V2$U~Gj~ny1)gd}tw&ydEE(B;bHQrH9bs`Cn^o8A zdiCI>&F6{1=;Iqde&F_qG;M;N>~x|gU&?QWIXN>{)PRs_w6_|iY`uAzI5Ys9z?g0? zGZG5KRU+3%zuA-ZUbi|RGWY(phs%scwE==XEAlHH7H4M&Dt2fPhB`_y0&Bd}BAH#C zi84`?GJeqTYPi7ddwa7@WKyf6(kf{8U;d~oHDeCy%qDw7lvb%#V=#VR@)LaRt}}x? zhUuQrvieTq`fAp$;hQMX8=cSMXh6q*_k;M%-S8U5Y4I_{0=&x(Y229i6^wJX72-i- zpeo@KwavOmWHk&wU(HkMJ1>#dM@j5}fW*)$)niJo^FM z3*2~-onZ!}0=Y8b2}4uIMekiF0tzZTkZ_Cm_mo250yPGu>VXf8c4HDk zL-6&)09Rw1iI@S)y*^q!jozO1f0-Ueq+dcRoz*MI8wR~q#!w)ygmWJgc(EIwu8$rA2MA{fSr3R`9Ub-^v?B?6 zqn&klT*pW>rLaTz$k0MnMCwVSK!It2UtjI&*7AEoD6{fSdLYdUJRVZRJ)QDpGAK^37xLJ)oA1346Pwf*Orvl~LP9 z-KJDk-^?{+8%OO=0*ZKq7-vH~71v}FPNhMai5%!4++8&i+3hN;8buqXzcy1jLc+gV zMnxZD|M*1a#?}Qvg%FdX-LA!z;4{7U)5ijj@uWKiUCfQsV+0VAhq7%HPi9n zD*HGP9TYFAjd4AG13>C~w`~BRZZ{iGXLzD!c+fES7$`%%^cDXDhk1%>)y!z<<6U96iB3&CXi9&q^u~L z)qQ6`N|FcJm>iRNr?TojvG89Eo*mFS;H1q$QhgB;H9Y=)94+HIF&<|d{+#V=xV=YCFaZ0 zHrnMRr7|(`;XGpvb9{{rb}$(mi-~XJzI?(*&^s+tK-*+*D3J*24QyA& zx-hadpl!f(SlO_%fnPH%o!!xS)FvlEXny`RT5>@nRIPK}CM$z`h=Tv-FD- zXHjDJb`4$DDG!SKt7Bcbg?QHQeSAMjF$V~a*nP*0BWSwbK|ytv2(?8fp7kOJVt_)%jLm- zcFZ{*BWg`D0#lsW$YE|q1;x>13IwV{YTSQJ+W)zfxu+QWNj*`WWYy;ycP|k^K~)fy zCgv)^AN#lRuOaJbxpQedIr(@k>DkuGm(tjvyB8ZdVeB(VPedsU=tCOh$e z>C2I(k>$`Y1u2^phQSe(u{XPYvQedzyCaH501LuhZv6V_+7ltrWJMDiiA(>Jnq9Xu zque)yn&nyk$Nw!EKG`K=gbGZ%>=VW@y$<44rd4@0C-OfQ$qqk9CDGU1L5QTq1Ri^O z+#hAi)CO*G+L-SLo1c#Tog+fhKj1958ma3-G*5W@_ZqYfXv*Ew*GISl3xYtP$<1Y@ zHnqr3AzYVMpV%U$vz#I#91MU0d81ivHOYHi4ojyUcbKH|aof+j>v=)p6l%!yHybxI zE}2p909Ap>xnZn>y>30XFG@05>%uhnD$rN2`m&9{iy5O`t$Md#dz(tQ?NgSHMYCnk z1sKQmOx}vmad*%@!O$5z2~cpm6DtarRo2Em&o>sH`xX7hhwm^ zSJwWBZ!h%`aG@o^@hZh`Zg|%-CpH?bfZqAnAnttCO*1BiKjjE{p+=I$J@*b!^$ zy96d_>VTZLnd_oKS5~1V|LLyF>J;KtYy4d30;CHznP|INjw%BEDaJiinOt>b!qs*q zJJWZkzjNHo1i zrv!9>Menl()=J$5GF~k5DrN)y6VZGObN>{b8w|JXx)A0320Z5t0G>klp42;|&s`4g z;297W7ms+EGZ)!^G*H~x0O+-w>*@(d+w(dyvaX~u+fV`8Q`iNUt4l2Sak1=YTjE__ z;u|K8_OwQ_+zJn?`REennjyu?@l4wTecdFfU_b9gEYL{3SS!`6G@U=EX%^W}j>s7_ zG2qmk0|#{>{6sIZWet}zN&T;f$C1hd67Gxb9}*i;q|o50hKHhYqkg{gKQpdlUEA=c z-?jhXWLCqdgTqPZ(ud*l7sTpo_7Pv_LPWSg07XE$zjT}kdHhZ6mghtlxRFxAXkt7I z!~q1y>Nvu~Qe4&ngX%Sgo&YSul3fSU0o70kAsx5HNFu0+vBoAsI|?tx@kntEnAT_U za-HsnHtXUv#8OBnn`olz(ox2^S6P4GDgn?1+2A+86BqQ8Hh|?Z7Yi%Kg|8vA#RHzA z(AfRGPZujwg1*NcO+re-%wVZ+FZey?Q`r<}BKtsiw~j3xt!{d!!Ta>5jI%ij@~KwB z;~C)Fzsuite4}#sOdhJ*iV1weEHf2q*k;)Za85{b2L);%BRP0o;SonayqccqzQ?IJ z2mcOB;vejaQrDUWS@q_dJCQj;NnX|HDOBoj7f+vOgV{JF^>7z~l4vMfqzwrdBi4Z) zC%aH)pmQv}+%`p06*@hif3sz@Qym&W{XnD6?_YsYW(IJzjY$D=@nJTnDfz-2IQ{?v zxX_{K8BZ~cAj5r~y9CWA`hhE1v~sXZotiNkFWLoy!#tU6qV>cPMsS##4W}wRh=lH{ zdou79E4}dzuwa{3sW9PstBIn%B+wHfE2G3{go++N3$(DTul`!-OaltU$v<>3(nBM# zZ{imEw3a%&S2bSGcDjrpxTNBB@VS@zvdgEbV;zFi2X3=KcPsn%kr&n%x?ygqt%Rwn zPr5|xG1wg=9{{2y3+y+Tr72Vk21v^5a5oVan%2I61yV_$-<_dhz?DZkZ6%la9?oO? zgDY+$#X~bch&3*py)0M@v(Or=zUOSwgZ^f|Klsef(Ju1aSn235J$Hqf)-iq+r(Pl? zkVtm$)YD5f%b()YP`m^!NWz3yGw_Yo(`-OFrHta@NUyd0J-5hFaBc|o#b6Rsg*N8h z5kv?EwyA=#5_rwnZ<#e!#!@sHYq4XpF_%S?f8VbCYIP+36s=xiC-N;GrHSJNRo}CR z-#mJuI1TJq#zgWu!5{wBRj)4AZQGYfS94&A0V)dtT#Nu;lh!y4J)?;Nc+2xy6T6l% zUALwia~a0DwZ5js_)8-x3cC*>{%GQ)1@fCdQb>E>&sA3Z_=un_8@NZwqS`2H zN#L_Dt1F@y*UD3ZYHC|Sq9wA^4U~8toa5J=+TpQ<=?oAGR{WRnqey!;KL&ctiC6;q zT~l7$3l0FIr|;mf5nY;gP}^QD$-aG7fg_0(p0Am$zc+uq6xLDG*iw~KkdYh&dc+YV ztM(2=SaonRE@+KHE&k9?Fj+@7?XhfAtr4S-r9Dg-Ztwslvv3r$muCviq24^0!a`?# z#cz?^ZtiS4nHYgumdt<56BB_yYg~%y)3Bpc7v-O|Jea=-+ZDKr|7F<{JqBJ~r!G8E z7(RTGsx8kW>s&s5lZ43Eo0_wp+hm&CyjPa-KOjJ?@Sb2o;Ll%4O3SDkvBGEve*oJUH!=P@{NWbnkwAt*&~ zY8B&3zMoT*Z@%Nbz*o5hcfhooiQXQn#WXD<4B%j7OxsF%4lO+B z7-}EhZfDWo-=dkNdWoSqfIH5v;yS!v1wihEpbN5HI7ke`cs&h#7~g!u36`aWX!FTv zKW3r&ML8YS#0pC}@ac)@8lF90FiwTL`eg(r%H@rIsg-7OLDAGp5(43BH^4_FF!6T;b;l zcQu{Zm!31W4CD03ROI`B?YLFa6IKw8qUldBC*e|gUoO`5%}kCiR(E4%>NpRMJ@_ssJaz#oXG zC2_GSo1Aw9uxK=sOobMtg%F(7;WLtg>|{g)N_Fa`u!-ug;HfAB=vhFaP4M|*xFrl! zg6*$r5$7@&d})C)`j-L>vtT9Yi-}3QhdYp0w3k>(XCRNEf@?ybTqHNkmDUM(*C^uB zc>*&r>=t75`sclv zRha`16C^O%nI9HwJY;#-BIDYaFUOP!gnn~_hpR*hK3FkRSdpCGKx@;%sX`xmOj6r0 z!KMMd2G3(n&xqJYG@?TIQZoLl&#vHs^!30OQ?7AxGNP> zuPMJW)<>{UZZod4&KH+QZ9tYr?--sf;0%T*1FkBCo5^AB`Tqr7wMX5}jI%Rq*{=DN z3U~s$D4jp7fuT|)uTVU2)8_b&tFK?V=V&$d4Gad$_n9OM6jk^DcUdi?^JKMjsLIkm-CXm%Q|6 z`ie4JE$7`bg89QM1aJQLFgQfqDyel9jzX(B{Zl+mASGN!dC z9kS<|GP-oeQjy-!dbg<$VGWic4i<{Xt~4BV6yN_SdPZ7{5a z$ma8d<<{21k`-5!bv0DOE*g4rmVCe$^E^Bjwo!R=zGsavsJ^s2!3R z){pj@bCUI+4fF>)dR2MC%QODi3aA2oqN0o?n_{07on~VxKc-vaoaM`Jf20-ub^k?! z2fY_9{QCf4Ksp^cT{u^{0rndzvuZ^K3mPb+!{)Uqk8)Q3nK~}tEYuNp4}c?9AO`Qx zlm}#{yPtIU^hjC}?!1oCgWo?^LnDI4*@z7*NmK6cpn!m;@()8s%nE~TG~vl0%%>u! zfzu7OS8$9inaBGO&nd5Z8@|97eANYoe8erI+nq2T-)v+m^)ZS!i|y@EN#%gumNYfx z(ESUist-)?^9)8DALOkVq zX27s{xusW%c$AP*CFX!gD~;gbU*XTn!Lr)jj=N4ZWK}^x(o}x;8(8uWJ3%Bu_HQ7O z*MW2Qc}6UYHN`tKf+R1!GPaqxTR&+*Q(XjV;r@;}@tcVagWr#27Fa8IC3UffaDE^= zW-f745uaqlY-hTP*H?U9hpWk9rut9*5)VI=oV9NuT_V63aE56M%|umBF!IE@j1PVg zB*;o>!~0k@mO>!daEJC%d|MqzM$F6MO1>3*LDId_cCJYF%DIe;X5t7O?vwJAZqF6& z6Lq~3$D6~ga}S4zDDl7XAzz6)1jx^anL=b9@)Y5gFkV~+Ab7UHP6Ft~&r{E+4A%iq zoZ^|F3ae(+O0Fw2Mfr!e#5Nb$v-`AkWL3AxVYZtX_`DI&>L}CRP-w(%=F>X6#>N8V zdUuq9FYKHl-8N8Am8T|m3?eRvS^-W99!k&S59RS$B(`Y=en#EaMC;SeJco(4>1La3 zc#{pW`nsp!G{^&UDFo4|^WtKdVc1o9RDdjep=fc)-imOHTQJx+QJHnnL1T7rhUf&` zkb6ZvisnNIAT!83Oe#&!xz-i`mwU#ufqJE9y9^u02bLe=o)PG^5{_f>4_k6_79V~$1P zR%Ldf`k|Jh2obX)=B!NWw!@Mrulk>$#yGud-de*uIc~jtlI>cl5=;YITlJy+juw@4 zS%S=zl*TUGuQYYdN;dx#=?C%BYH4}f6!>m)xoJ@9ZUgcXdGM^M(a^E6Eoi1WL#M2y z-mnI7M!eQv4fp4%GvyU&MX4G@?)14VS#Z-)*VIOcw%SS){sY0m-CP^_D6=@Va^6A^ zV33pu@r>l|HR3$X;uK$!OnWBb1fOQlJwV8|8Cdp*T zylTE~!=$q+Q#>Wi{LPK2k`rymYF@CJX0^xUVVbBPuUY zcB9!M)1^3V83?!7;GS}6<8VD$<(+(*2+JMNyCm^D%LvD~@YmgLJ-xHcY>+5JvhITd zlfiOzDb+ujYJbv537l;n6DFfqXMx08#JaDT`V#tmc4_rHIeLNGK4|kE6=~n*N3mDX zB(@Wvne+T%Sb`0^JbV?N4K&(4eBtw7=r?;T*iQEdR8DVZ+W(>@{EsiIF}#6>mWIbz)BCX5;q*O>Vq3h``q=}qblyB!$-i{v)`~@qxx9=W? z9w<3`%k70j&o3RlQ*wW#NCdY>m9i0wf+lg1#VD>818Kez%gKWB`Jv9+FTIoow1gt!Y0jb zmb@9b&LeHDxnWH8MooPu>ux|LfoH0Ton9>1L>Ir+?dk-u_D1%Zrja^~fO);u%E`?T zc);E;JI!m9Z8<6$bkiHza~H$R+wxzD6&ufQ@ccTEmjIQ%u|g!+Y`E$o2HySXFU)ty z0*Z)tI}hnclvIPO=#T$iJiWJuXEJ&AQ{o0l%VBWA8Y8DjVUz_9pL?hinoyYe5&?i{ z_wbY1rDTR!m!Nfu()V)*m9z_dFewp8tGAPi<0(Ibw)f453)L+ieKl17!b?!%vda6i zqm*`I>dcqL$^|MbD8@Mo5y+B_X01K3FPtLjUcFLPWODI$8K_Ulf}8{R8?a_4$yotY z+sJ-7JEQWC(7)zO@f>r%%}h0`p>NNY;0*fNTKhHQi^oSv$k=}3<&nieRbs1Mw=R+D+w5HVU(~V{hTwwq722$mSByyH|P9yeQA6CHcO2W*w=oc6Jp2Zp~j3_JF z1_Ja9fgkrL&~+Qhy^Wa+;`1C-@2?$QtzP1ZCt`1z0@M`r zjQL%E{LekTth6%RLBXt$&BdMC9_{TD_|P=o5a!NiJln+DzaTG3%i<&p26vV{bXUE(OQC3UXs{L{b%D-6}#paiLY$ zbQ^C_J54a!F4_Q|*Hdq){dOg)sgjkndyAgU!QP_+wn$w&TzI=_9^Qq0%PU!5m#{`i zdgBJH6PQ$ZvDORIu6g<6MBXMjx(swGrwQ9hYd-YCL4lP<+^G-XCT7Ok9EQNPA<}GD zxBb-nK)VzalZih4{{F{TW;RRVw4!)IOgQC1=}C`6+RwI$cCGqp6U2OiHBk*SH#*Z( z7P_rg7M4Z($!Hh2A9W~*YVVrB8GC=TaIZvNXUe->XW9=hawtuws%I(Esb`QFfSS`h z5Py$2!)T=>B$9l#}W^#-X$+5Eoe`&m$v;oNS5 z52H4c08tSr@M^Cr$K`l4@i?IEp%2)w>T~V@M6>zQ3sw2~H z6i9PCR?lRibRg<+DD5#PYp`$HVeL=HUE`tciD}CuSu2S^BY`S;JtjZlq$;jn3|13Z z8}^fJNS{$oxC1RWeExyMb|((Uv?so@uqg z0)RgzCtO%z+4)MYHsBr7+V1LvVXf@;nDm}-9bXs+d+v^|je7ITDV&0AffsfBYikD= z`OZfrfo!rZvv~Elu8a26XuwizFED>cg?uSah0-q|ntwW5=V0)NR{@Mr%!0a8ZOVg8_7z=Alb`ebmh+>{+lNIC}k0(zW4|SgL!z778JZT$86H6KrOD z3Yau|^$ZvG{b??P_9Y%XaHX9C)X9?x;5)*{&_H4HCN-wwTg>3jgEz;R4KGY0L>RiZ z_6mGcT+#+jxiaiiNGkZ?*!V#Z`jao-gb<-#n4}{2I=;;fxVTx4f2Be>BD#16RY0?} zD=i#?Y^Yj$#54rGSDb`6C|2DD7e6K(ijT(=w=1};Hn3lA9tZdMimLpkTyfI4w~F%E zgVpYsIFhEe%2-{uOfkOBBiHLph}_r|gdzEAZJ?(n z;%iaxpEU!yj_x0rjPz1PcR5dFK3qpf#Dh?CHjA9qApN3)UNhP6hDGdIUYZ55CPUG} za+ynpM_6mbB9L^oP~^1PmvcTW`~7ge7ZDyWuNTo#q|{A94HI{Xa$6AtV@WnrlMnCB zGUbVU3lMKl?BmSdGN80o@@-}3Wr1&cux@~eZ_1rAv!p@QG?npg@*D$#nr&HUrbEkN zTL>e3BpXD(S@P|F2!ZS-fr7c`>coj^{ls@l9@)d_rm)m3y{UbAR8$$ zq0x@qWOkXU)rZ6AHfPBAbA%es`Veu$8eLazv81*6h+ny%R%hc8gXyFFuOB1V*B*xT z9mhR$yJu&w2ODTK&e_8$nDO$3zK?{fH8K6mgooepw)yi1-2|zLkC9b-$MR3`^I11m zJ@qKy9!t&;hSB*NyTyRSz)XUcfl-gC&J*VOOMGC7AdMk z1qb{XVBPcsIc0q@2b~wYn{br%^A-1F!vG5NRQ3~<6fJ@VhcjxJMP0^K#;sMk?4hHt zQ)jIIXAz6X+*$SiB`t)!FX2VNHpOuC)JSAB7+@X!1lOm>Kh$H|k%^|a6y1wW?#l+a zVbDhacp{qQQOMECI5A0zR(xqUR~Y~7JjO$%L}|EvIgj^F&(srrp(=9%k zLVx)s-S>CQO_hVqCCwgmgYz2s!wGpxZASHHsmzsHOk5h|p*arK&g;?LE)>f-gF=Tk z4$mkX+9JzxU*-1r#0ztC@XZP|`gEG%Jc4<_z@{&_V~JF=F5~t>AaRL-Fq~ZQL9;eE z;oH-(inJ6q;!=>2b&XUR6fl%OTV zI8}D50hOGhDyl+=7xv`YfiZIu^!s1u)PCbcUl{XvY<&~dfg9v8LIMFi4uAY4@LVBS zmk*$C+pAZk+kMiJ?4j*xfq1Jn+XQ~)gBnstXLe3}HvIg11HPaURb|s0;f{E^26705oh5Z z1X^p=&x&(Xtl)H`0=>6d?1a#@P>0F4#5lmc<>V&cq^~$&|eZ**%()0XjV3iGFw^OMQD=j=Rm9R zA)@IvC}UB1Y9+*B5$#hFeXT8xQWB#w8WZn(yHeUxl>i2?jEx45r7U)Qa~@)ak1X`5Z%mrtFv*K$v(~xzFn)5 zChZpAlA5qz;X^n?plx?PAV#6+*Y~3Ljmdo$+8)qbdaTQS`~lKDS>_9AYmv`rEUj+x zCM7zElZ)QNr*I?hR16ywV4uzW$C%Jp11a*54_XyHi7*D%(uv^t+k_fIWzCHWsdOxM+`tc?$jZ`UaAG1;8FYyk7(bcb>V&HejPhztHc?-11WJ-5I6yW>9Wu)d5ak{)emP6ojJ;-8`sAKv@Y%_li;kSm);DE zx}n}61E4H|su3#-FcY82Z=0ZwA>~O^yZ2Q`-j`N!91N&mS+7>zkQJIdH1ZZZcCaw1 zLL&qt1qkz|+IBOQ85^>2-aQ_hTLGk_pKq99#3slM+Z$l+J%|JN(21L4z}=ZEhDEio zO5pNf!oxHfgZef%cTu=tRpphLKq#R~z|N`i@Fp|8G9Y$TlR8j_f6hg5#vD=GKe^9= zmv&kgXm_@(eUk2X3Zn*7GJ08A1I^({L`2eGAZaT6voGNBlE<%bnI3%X3V(gJ3Y%oZ zEz~s$PoeL%*5UGN8~_d{p|$ zEq}Rfyr_F%&ak7odOxisSB*m^!#=HHvL#>ENHWfPVcQ6#*qmUR|&R zlp~K&nIch)5f)|x>kNt;E(SAg!Ae99%U~gg$h6;`IJPj1utw>t*apEcOO}SzbmT~C zm93W4-=i7iNn-@qu1tFOgzaEWS7&-+$n3@A)fuLsJA!!6>(TQb-1~h2+`WC*bj<(I`PpHoB+!96vl5qtu~Xy(KUPRBFrF z-+Gj(;BqRU?dkMA}9B(#n z-WZf04GDfB@`6pFON*vgzYWhs=0-}mt2|Hb;a+m^gkw=?YqsVJxWpvD9CtAHmcU#! zWCaYwRd4cK1Wpn&OkOBJhBh&?PyN)Dk$9=VQ%L~bk}O|%Fvh9poscvrE5iI^s+(nwdnVk+L=wtsn%>vgX|?&pH4}~XqblBm?u+Fs^);T#JPs{UjLLYm`&V- zBow)1qbX$Unz3*B&?&AkTT*5dH`_H)Ke#h~+5z0afhM zaqt47aN;Sj!teC-V}0{Q@k1o?En{t#ka;Yv0m# zd&$_Oj!0|R-(V!a6YXiHEq3POaVM#9qQHaDgy7M56Xp+wLJY2#?tad`Gra`wPod#HLonDH zz{QiHR?K_rtgBF(VAuuZV4VdJY_gS&I$jHHA z(NQ)J%ju9?f5j^sZqH?#=0o*mCcbZ(=AR?pR~>nTk?gOZ!$L@^ZDN9uYiG^383DY` z9~4iFr%%Uc5oNs-i*%q28pma8tFG+dZ=5vC8)qEVV#1XiW{ zvV8#VU|6xe+lbTBVg~i?h~OnX4Fn~m;Q7#8%=3VtU8WQ)fNg~vZPQtAICzK_a~rX5 zM(d4ysBNPg%$(6!M#c(dpEh<0F`K<+{Ze%wKr??Y%5F zYr?JhgMz@P-p|1i#!t_`#F)Y3_}%Ao+3(v1H-Rq%8O2L;G6niTNKME$STrs#fj<$oOTS@B0? z9a!jgnPr5cg7$^KFK7Q9-ECzqE26)hfd%*VuAgL7RY!%1TbyLXhri zStbJVhpg>1DHWJQOMl<|ilIBQDdK61Cr}ib^*uAX4M8JW(5@;Oku}zmaPdaWilyLt zp}&tcJ|R0$sO6AW#rH!dx{Xmoy!4!x_gY9bjROqim5_O5>2PzT!d#6LAhQ+Y%QOg(=$lrxU^R~yZQ3RT^9 z=#~SX6cEzF(^Pf34jpP^S;W%_@o#x-!CS^9M+&(oNy5rtL{WQWu$6n!U1*+LO?GI8Vup~+O zTG_gdaBmxT@PDEAWDyQq`50g1K4T)#m#LVC+L=5}!pyV3%QY3L=sM;xlKjZ>_X;~D z+PLb=UrZrmLM#-gAItK7z!Vq~3AuY<8StV|ey}0-tq%$iQ(VtkD4s%_gnGgB>9O&q`c2n!Ozh-{i{;j>L+H!v+97d)%wQ)7TOMEDYIIs0aXQ13psr8|_Q1#RBum2w-8c>sUjcrD9>UCI9oteMhZkA9 z430pP1UbswKDqC-hT9ENO{A{UvSqx|eWr>>M<1~7pW#l7L}%ySv_7b_fiS-W*xJiY zF|;MSIIX2Ukq?tWH;>^}1_KG^$M1zxKBsn6sRec$za7{)<_TqJ)hCCX@O@pcNxMtj z1RR$Vk17CoW4Zx zKi5_r;E)I9?Bi(__D|>22!9R0`$M$M9mMrtj3yLvWzOB=Ne=YE8{tF0dgV&7WU$>q z{<~cHFKqU{+v|5xs@DnY`V?}5XS}xk>me=}6>X2gOk}g%6t=0mT+2_=mpU?Jd38*C z?eleI$y|fb(yZ&GEaO$NwbpT~kx13i2f?PR>9*!(e&^1yfq(vUj;Y zDDJiLOM-_-q>pv-MrCipK)t9xF3*j9A4T1T{Y=%pG?sSa}s9~}ahO!tam3oJ)^fE{oYZ_?R`0!AH+M7UQZ&vip+!!!sg~239bQHU#8r`T}rVK zoeWlNJ#fM(qW7&r=Z5|a*Vbf$f9L;;ZXZZ*^jS!m2#o6=jLm#P(h#Y{!L$qeVRQxX zQCN@@s1t%7Awv`vMzltWd9a)9IjU@kO3hXcg1E-@7Iz23^q{%W0&r1y!_Y~;e5B;O z5nz9C8?FOan-LHj!A;9owKQIa-vv%<+ufez`*=6Xq7^K6+%Cb+L+bIguj}@#ZIYNE z4k-el;+yydigFQQoZmE38}yz1T6UCjfDVFW=_I>e2+aa>v%XnWMtJA}sCIE}rjMA6)&&ypO$7 zAUAx5JtcA)rj4;ECKf8$HTTLvmZQc87fj-x?WhFwCIssbs4d_05ouZ}{T2m76AHtTI$Kov ziKPXWf=`DQ2F!w!5fuq1>xq)$Ci=SLxKK!ql*~-j)4K+se>UlVS5v5lEjJWDx@1EV5;LDut8EUTXb~N$wESLWpJzoTzeF z)x|JE;+HEqpvlm%P-LoyiR&%ot`R2)CknLE8W6zugf#wm&pR@MBKrQ9@T2%^|6nn3{Qp_2AOO;#+lvIN-OIOnOD z^!Nm84OO7bPj)N5fPcL*u`6Mw1Q#MMoHuW5M9-U|$oVE3@bI zqFS*bDj4CVfM=|@vmng`3XR%VS-EB#SNmz5g^u{VYYJhw`Q9bHxL3|+wUP#7F;eQj zxVS9Lpe8G0-zI^wk`HEvC{-~5Q3c3rmMwA{tLRM6%#Nj&?ATZ0Q_X${qhA1r^T#W!CnjZv0V1*v z7|&iF4!6|4Vi;_CI9;}GL}xenL7;P<3m>5JMl%xY$bW4l_$X;?I3LHB-xT3~B+u`S z!M$K3SwxkAYJJ&^R4JS?4uo$INQu3bm&y}~nU1FH&Jl+{!ldS-7x78&b1E*m!4;R! zBpH;Aumt4PaLyYNRexzRMsw9q8AWECq{Ny!7UFwuZ$(q06Q6dLkJ&4dFOAMdn<_8p zCOKyCE*Dr`UBY_b3aww%T;^_=$?G0HX%n@##&`*HupE03dV0^xpJ1({n4$e?$>;6P zutn~j0#J_HlivO(mH)rWsGVushK8H9zv*XTwoW%eJ0F}G@#ae#f4{BgojX_Dxk>E& zF7X^6mh3m`PT=mbXm^XP9aT6)QKwVBTh@G(O+^}*5c(7meeNf->Xm;X<4Tn9;FuPC zSESDE1^fh6183pnDfw}@k_$A2E*O7(57*P$L9C$046mOa_UeR^O>4BtCAvHBf`%Kz z+@#}X1O^7C|}};+`aD zDq>P;NlsfpW6q(!vqpl;L^-I!eVZ9OmVG4Mpo{#GFN9AB-}v4Oq)sGQ0CMcwQ4UtC zVy_T#1o6r2+>>IPHeN73Y0m`|F&k zX9eTHZtK0h@`C&sL|inb9NE~9zzGU@gXcE3`1$7%=LO#mu)s9L(d)!2h5z-2P3b7)k-XOCXXf!;-kyA44ePmJ{-~`+OQ0+AJg7S}a z_Cs%&!R1TG5Z(|nZ!4k_*nPg0ImmKwHmY+$Si0C)pOnO&J`}^{&v~vE5QuPrd^t?h zI$(7K`0j{^mY=hjq}HVu35U<>%NkM=^2xlHu4vl~a6ng2_`Yn9#4}8%$~2_2#Q7t~0ewvk;WArBp< zB4)A`AoyT?TVYRI_-ydNB(o2;-H-@&Oh;*0$t|v=!uEeIPe?H14;}TbR^0|tA|MdF z+GN098=cX~WAH7!I4J+f3%p)&Gw*JJdy9m@vbJdI_N-V!Ndl5^%y!|1(Y5x{kK>5? z#6JM`oO;62AUxF`Q3|{wU@z;9)eN{lpY~TqblQ^6Mp#w!88yCyVylSZ)`(daXpy8 zR9)J)OxlZA>VUqm+Yf<{*iBgq57;I`S>j3x_OWUG#K06^7|9>oTVjjbr0m92+>#!< zBcP1Z;CBUHp%))(vUGsCGsg4p%treaEMiyRc0P*P1mU!l>MS4@dvu zp@sguz5QPlvh;oJ4o_K4NnMDi%8EHl>B_L*yKh4iv{V*A;Fg}Aq9BOLhN*lJqefDB z2f-Xc9A%ix)8O$5l|Woo{TzzFJF1%65{qaD(V}-@tY$)dliEh3sETdOal>~Vkf2Hh72s%yq_~uW8$S$;{p}P;UqsH%F%KL z=S`uD{Qy7G4YEp8fh=*z<%tgRd}iSX@+TH4@w8Mn-LP~>P)Z1hb^i62+#?%BW3n-xu@I9)m9zo)A?h^+{ zv9PM)i*DB*vGHJKMbz%Rj31MkeM=}RU5boPu=NZLnT#-TIhcbGHvmtLOJ!Ade~tIa&0g9&VcCW z5chzPw2Fm6P8Pnv3op*p4)<Nc36^(>5|Dt zHVUimh{h4s@$r^$cwU@eVWpBsh4wV&v#M3b^@qK zL=a&Bmdthhj|w(N(e^J>r3>NC+O#TE{j}c-JVHGnn<@z;&;TaWUD$O=jBJ4dRt)lv zZ3vBxD(7YGEo>CX*#uj2v>8V`W<(7P`R~K?YNPoN$k6k$u78LBdPWLhs;bf89*Q?T zqeTtO*1_B=M3q#l0E&MIT%av-N=jUo+)LfyOq-_m+J!@_?k&~G)~UZ{h7Dg4t<@sXasm)XZbsDu4J}NuZXodKRM-WuCUZR<#K8BXm`6_S#yNwR=8_r zOkAs-t}WH2q9V@=ia7zGR`TV=qqxq0w+DHtp>~TwTV!}^?^7P7%_3@64r^{)=PY4J z<2yRFSBQVdw;bQV$wEQGum9%n9#1Ow4pi}fT{&4Gi%Fl1Tt!@6L9w(;2P~hu$FyT! zvG&YV4QcC`&Jb#7;cN~>n1N&XlSW$cY7DF76Hb%fTqOtW2d$PZHU<_+*N#RLi`#mH zvZ7mGeD*lgbYvIXZ1IG0-jo%K^8+b`vi(EfV6x9y6e^Tr#O<*q73fpz3gc4-lg2&% z^AAo#CId6Op#ySr^D?91JV8*`ETZ@Frp70grKv33fWJP%Qbj*$(=~6STGc)Ni_xXx zg{AM6zh$CDowt3xxN833C(*zHd!VNaoBkEy>*a}`@u_wKD7tC@VY8)gz^g$YrAmXH z>Z3AZA#%4iq%Gap&__%+|1?pnCVWC-fp0vBoYn58`8o_CS^%Cc_O_Ofv9Bg~#cxGj z1*m505W-hztgzr-*mjfZ!B-?)yU!?Cpgbc&Tm-8w7!KXPoN>G}OtlQI(b{^mSst|% zEE;Y(kTwW9Tg^?49OVfaPNde(=vQ?sd1A$~MuVGY{`O7oWlPu(0j^*je>+snEAAXy3IcOk2z&Ho(Bv52p0 zI}MN2Lk_vgj)j-irQJye1Z4&Er4ATQ`OMq#&Lbnnv{xu+y|?MajBT1qa$_)^|L-_{)3}%D7hdNGv&Q zmbDoCQ^1q~PR*7R-P)+z`_SW#GB5u6yPbYi2%g<7xL6w={h}6pe~V#S=NbQtO0alY zFa6euix1t2Ef%(XM@uRwWnGDGhdRU(BrJ&lbKW3+dmcNJ(W3qv05>HAX6%{w;34o- zTUnn#yF+AN`fhDRPcojVrk1sQvWJviiQwLK4v4c1~}P)C~@2K**+$(}PEK5{oT zNG`3lg-B_ww}`uP`%u3J^nCfCT9V?ojxT>41&1_Q7xS3lov9|*EM^#x4)$S<)k9Z_ zLH%1{@m2?(*N-l46628=Z)p%vu!MKZD^(&F7&?c8Am_&IZc*ghESaLaNWTzE){jb~ z_VJ~{gAL0V>y3ki(ox(#m%2)u?3cbZ$N*(BZyS`ScyCxjmy?C!?Wt&m4(ku|+W(Ys zM2+DmCDjbqd8jcukuRE?Y9WsTb&(ifi2Eb=%XI6f`UOW4pe`^;5|d&uMDG>pklPH( zBliK#J2J%owD>9(#hdGL(y5-f!s-nyj_4^u2mg#tG^ZDybTuGO$6(Pna$Bvp_B5OA zh_>R@fh8v_2jO?`J_3GcpVJivqiMmqs^|JlVS?=sq%`3);6oR--QOv@qu~C?Yif3V z)cI7z)~F{vqo2|+1h*8p8X_VtjT4*n%5m1+-;FHAB9hZ9zr)_<;D z%#$bV;sDzo)2r`iWYlhN?diS~7-~sH*d>yy!Zy@Jdp6%c zxal)rIj@K`+)(C2q+<>QIIVqq9b+obR?QrLDhf9kYtWu9sE^rDGRBk^GtT?grdsJG z9(2-JV1<075mGp4}G!1+Qi#w84e*=MOl6w9jRA(e?7lViV9D`Vd_~6^4zu z4K-v9EdQD$pTj{4czLlD)AGK405BavvZ$2OdJ2hY&P6mS-IKduDmYC9g-QPV3)WQ5 zuEOu?Y_+*H_KwC9>a!CZDr&};PN0kex*1syjY{zq`A1eq_z$jSjgsxM$!|{5VCUkC zw0{(G&VWvxz}7X4xwEAKx`p2-z}urN@P2!;9njOo2nb^(Ps!Pw3L}Cgr@6o(pb|0h zz`@5K2o*+D`YKp5f{!mr;5-dtm!HFb8nIGOHvec}%r9Y`8Bj$ZgbB}C&v`Y|{g&ns zLYh4v*w$(?t+&Gnfpp~*$N>>>oyLIB5@U|c_bZjW7hRoTR21wDSz{?`nyv6}$dZ_j zhGv(qzoiv7<8y(eS}Wq3Ky0D|*rLd5N)=;Bs6+AD|M$?#BP@)ZaQ7L`bC|Ibtydh! zoLHwJS72?dZ(sZ@Ha+nxeO%QhhMM$vO!`rtK`t{kxvqKiB|abTM6y&(V=k&mRq2ZY zTGH_1(PQ|rKFw1X2E?AX?Zy8kBK8l8uSo!5x0vD4D(l$FfVBm`0!WTx#}21hMiKh& zcV%q&_?CBu&~tPe3e^Z+!GNS@%Z(i<)beaUi23LXrus1XfdYy%xk=ghMCYZb(OR-U z29zmHKr1na9vfx8#qd!1TVk8-oXH~k#}h%CsGZ>XHcu*Q%KjA0}H`^1CVFTvB1kxao0A1JCLkwqZPRl^Oc{&+!Ok$9(|CAyzyMQK= z%vR$Q?p0etc<)BT2)%#6;_FsZBo|hwa?Q%$9T)$%c#KYU=SfE(&K4gLfM})8tPHYAJ*VJsxE zVg+eS9MD7~I+Keu^aPfj;aAh=;X$;^QC*TfF(Md|M&)#JlKsNR!0vfpv+Iqr{@!WA zwjiublhR_D?k6&Nj_&pf^@E{Y6HDmfW4$M2{BWGx6WgGv#V?ONs2W{E@UFty5EXIY zigQHOPh*p$!zCSy**p58fKT%tO57xtk>IXV1QzyHq!pJOHIa4WgN<5$1wF5MWlwE*FTo99H$qID~Y__Ud?F^3G?eD3{LR&Wy%qy=$}eSNah zCciA(C5~xSw8||OuKrR3ecZ>9q*=8a4TT-=dMxbnWc#>a{d2noP5yr;5FwoQ^f7h^LLc9gDd zefEsFa?-r|?y+~Qe0|8TrpB%5xVY0#KUkNW_IY`32^O{^-Cmj8oIF>lF;73*%=%6v z@RT~nSza|)gjTE+UjUz$HDX*YQvuuB)jTR?({$+-%pcb|kC4lThmIGYft|*l9rZ1E zG|i$WS*M1PH~&^v4ENyYdm!1^Z2mIjZHvl|!Nn#?8)#IY_Mj9gSLC8RZc5)Lc^Rk# zByXv_lKBS>HU_LqFNj0WS*{%8a5>VAT<#w#d8|Ll875^(Dd)2#(7~Lw;_RWQeJ;R; zAy*h_SkpFqh*0&uVy_@fRE4I*LQ()tiYf)GFd0i|=ie*HT{NF>s-96v@r@+pC}QJ3 zvs$oOzz7OX6E7NrC8xP?ID-%@Ktc3i>W5SuVU zJa0`{&Q39?D(x_~v+HXiRJkh-rfqPa=KQr4?m3*-o(~c|=RX}q4dLcy<(VCn$ls+F zDs|P6Nz=klEWkb=q#oq5ewht_ejjpX)5^GbAH&$nM`$t3G0Rw3 z#uhysr0gIE73F;Vnj9{OjrUb!i3D6lQoUUv^fw~{@xxUpFrz|ezULvtBh&O!^h=~U zW&P8A^EoM?I*@L6-NFln;SxRN3!JZPx=!S>#MFfUH)*Myt(I3>a~c89!SiA$sAeuW z3lEmNN9o;jwE51t+lrYuf)S^9&n5BI;}opFa$aq995$}pQ3SaKt4xnAmrJJ&1CCSi zi<=@b5*%UjmIRMN`?J-EoBI}LdEWr8WE6pb2+_Z)Px5Z$cOFxtx0y)3Ae660N`h5| zrq(Dq|00e&!chlRNu37(!+DyQoV~AlJxh&Lyg2jDX+7Lla=0Np1FAsSFAWO7Ol8fiBBgUV*?h=~{73q5Tf*b<{`%kUVk zZHdhKfvxm*!A*S?hnfhQ_iC~%TYPSOZh2C{n~~n@b2leEJtJR&>N#opvvm=5C2&$KFton0Z58|% zsq0ManUp3d%;d7g&BTYwpT4RvJwun&>M0ugV9KXTEur#Y5QWlGB_j+y=Ib&{rdTJa za}`&ks*dhkK$q}M*B(72211^(-v3Pk0hsI2PJ5Lf7YQMv(=Tj}Od>5SaWJfChnKG4 zq(G{c6J6W66$*W-@#f5Tem2CXNF<@}$N9i4M1pG>WLtkkCS6lmKe-q5XfgEs(AXNM zuc=OxV#a5`EB-#oJQOy4UmmXmd3SVka|v)@Bxmy$CE{310#E7TaZu^%!7x*c`usoo zx&W(pd)pG~5CS~wC2yH{&mieUP=e}Dx0TzAT1hc71Tnty6T7LFKwaKE26N!xn_OE4 zU~EFw#H&SaorO7L?Jsp= z=akfU;GMhxwbz#_>ch7WX z___raX?Ic8dVoa>=CXW0D4-boGY^~Jqx|nK;qOebt5pXk=SRwh>O2|8ptSja`}H8J zr_P6(0=jysaGnM7Rss59@;j+)G(`faYf8I&nzZToV_*>b1{#dD#%h$$U514S7g(w^ zVVA==vIS1n#2HzN38N z!qRECfvh5Ai;cG_&j5PnT`wNS=A6~z(ckAuSn6Zmy+v9x7&@8V(f8OTwc%=5fF4V> zC+A4Q#S|VI)LusFQCYrEaqF|1WN^?Ok!`_A(-Hzx(uCxNPj~tZDuIbLspTq<@1daP zFpb$v#weqP3^$kSK#SZJ*`-*^ytXOrU3mxiJStViRss%mwx!c5{b?PeHMXXx#k0H? zTH$;Qnh<0QT?`w6L=FbzatVS*FGrRo5r+V{VdE0Iy9$c_W8jVLNpHb(XW7$r>~;J$ z>7eMFFyO^?k|h?US6JZ9$cf-QxPrhVA6}X^$$E1h&EiG<31ol|lwD29n)oFN@nafI zA}KNN#uXRm7L6MXR&Tt&22n_~srjRXTP^a8*$ACz&CTxXlQuEptiqoOK{1D8`l48; zk3=pG&z8sG1cA~nLYp$}I$qY^RX%crAKkoCUGE2%LN$Wq|53Z}giFlk{Eb!jn`buS z4P)DOD7*2ru*5)2&Y@)uFbcHfMlGnLKz8LE7p$@s$_O4NCPmg}j)YtQ`4r8@Sf)L= zwoeQR-~Z6O(&04c?f)I6}dqJhMu>mvHwt z42mMR8d&m^HoHg1*`bVZ2W{ zkP%Bv^2Z1b&UpU7hws8zuDdA=yZ{QOv2lng)KpimVs{I*9(vBs!cv4{0;^WV2g|!Z zI5aVC#nQ1`t;yJ;UeUoNc&?bo#8c^(yuJ4G=<}1AsDHDvrMvT>{ssP=zP8P^K0^17 zoks3M#do6mOt(>E?IWt4*uT`=rlMh^9Wc1A%{jgdq*-TOl3}r|c&}L|3?bIhOAZLI z)QmRJ5gKWQYBN`<+k`k_oooW;QWrUbJRr!33l+s*UmOY^2$!zBdhqap))v^C6Sdw| zvcReXEY$%~Y>l)>oE}vTKvd(XJZ1xMCOL_JT&vyp;Erdc?g7{TJjCN<6m1w3PE6AP z&)DmtfD253mzApmTYB-Q&2O=&_%q^Avr_E}&LCzh2R2A2+MS%_41wV+ulShyc7Mw& zsf5~B4oA%!FT76q9(gyih-HGsJrp+i(q>ZoBYA`m$wgwSB~nsE5v)-EJ*;__U}Q1uyNdBp?N^`wA5Bgf!F++8Ue{>xRDi_D1D3A zna=$>!5Swd&sbYHYO}A+Y6Qz8hCNTCWlmi1ZI{&l3A}V|$H4X+U%41+6~*cmu!UH` z=90aX8*8qdc_elK{USRwYJGtaZa0PRkOy0fcEfsPnNN#;J35swEjnxpb>4aK ztYdEI4!yH@;Hi9dR%&+Sf$B2s(-v@p70+Got^fIU<<8l59sYWK1iB@nZaB z!*H!RIg1BNYSdZA5l0rBoi}X`2@+EYXpEFv-9bf*Vi-RtB&_-)hnMnZ$RAf`XQc4N zg}wY#(bp8}GG)mR%s2@Xh_4GkQ1(%OW^`TT;5LmgsmmR&O{WSsqO|pnKsph6&iZXN zWSUx+{^SrDre=g2S6<6wQuXj#Ji1oF)GTLhj`>lW#{i>|lW)2AvtZ^qIWQ5$j6TP6Mt5U%B<_ z5Um)q+ozx=x!H1*5Im2jCQ1G-#ARKjYqz#tK!d# zJvtriZE#$^+7;du+~L>*JMO8K7_r@N7SF1jwXEKr_^#*&QsPmA;z4)Y)pR@}oOS!dW&+koE@|B(kf$*uIxb-d*CMXHT`u z5%}Jeu$n`GT#Hz)hmp#2q@$>5H*zE3;EpQt3v~pue0!@VfkG-U5Mt68PG~O>(~7Ju z1prUvI~)|Y)K$lPB&4Rzac>-v={frX8*KAMvRro-Cyi*m)j&s}9nVU>KuuUo!OPH8 zl6g~nPw&+HD_Pz~oR=EB>$7$d*V>=20M{hY^jJxuHlbI$SnYQag)Y4&|1lNMbP3)mrV`)~pLQI}iNU^&OpI#i{2r2XC}pL|aB zHi{Br&+~6trXS)k=9j;u9!*-V;g1@{zYg1eQTZR+n|$t;z~nB&CCPF)_j&8{T+yTF z-qBXqSYQ$Rb9itH*8e6LY*g5|>Sl?U%5#s#EK)^O5oD@0+0C+JPH#%XcTZy9R-U^G z7RR`d*ZDj45X=JeBThUgk^}JDTvmGc}jX{2kR5gcT3+o%!Sd6@u7NkFxkKS^onrhb^ zldIQ~O0Q@lxL6ORISFbs_mt@TeuNX4wui`Pj`-U~r<9>(G!I-WTHqyr9LiV_bqkNx z>=Q*{uY;%mWsdc1vOYO$Y?>`}p?bJVDw)fQn*ZZLGtIt;(KQ~D&T8w>rMPB}z@|Ql z2})-c@Md*96gSAXP!@qfkzKXK-PT4tqo5pO+MeAjq8>7gT3Lih?K{{veULD1@T`Ob zP=+mTDlf=#BxOc1BeF(&udAdiQ)dA%iW6qvR!@MI2yd}%A-f*vHooC*;gojAhHvGk z1y`3LG9)vz=?2zA;QLjYJge`=zEQm#zr0;o4KWKQ?8ycVSRj*TH4AG-Datpt{j#p+ znU|!mVqz!Z<7rp;_~dfjBb#+gmj*3n55p@v(cfwQ5hTu$TlwP6J;v1i)<%b>sLQ|^ zd2c;kJaj(^2UNy~#(aU!arxeap6Q=w*(k~&i^OFy&wwq^nzA1t7jz%coHn`jCB%el zoE%--;&qw|b%jyVmxOu?sQET&5Ek1&)L`MRf5O#>=OE{(2Z5fFBzQi>8Dtx@M38cn z$5x>IW2Dd#F%8g_FmnT3#9;*J!)15zyO*1R7y$xpVEV!;m;1bRO@?hXePn$2qx(Cp z1}_V%uh{%&B*Zx=fl_{KvVtmtz1HZXb?A<8wn<`AM{9^|0dmIl!OI8iB_O~S7Wa`w zE}4&zqyVFpO{)+yTPt|cl#`0Q-kl|Mo7ZTGa_0h4IheL&Ic?`^=-dKBUEh!@T@C$a zb#w>b3=y=40ln$J5lN24IAPq01Qe*!4jferI4sD@o}-5EA$|lO_4wlxy|qJyHojmm zYx4k>*=nam=936({!2~L#|xy!FCvDj7WyGgBd zld)UW2v})N$cen8RyAxBYhj^QeP*zszfdWG!rrI;76_UX0Tvi}__cx}py@bRcidBK zh13Ni64U-4Exwjk(r+3*=+f7&GbFd+eGz{r6L#gc=JY@$ zi*`#a`f6{y2vNwU@Av!A+vs+^f${n!m#d`C0O|6d?UC+yTbufHN<>zhhRaeT`nhMx z6Wl;E+6SS)!x+3E-*_s023IzhOV7>N}FQX+@{i6jgB@0WXMgnW4cW%z2Ky zH;`HQ2gMZ|XD25ezmYY<^7vBZ$s;jF)Dq(ppYvV~#|>a%b8{#v453obV>Mt}(eOq$ zIIpSNM-k5|5ZuE?YXH60l_)BNb#^XySP$*%!i~YwKCIV+LcTBoEWWk#0gd1^k{?WL z%O&!lmBC(UOg$MrKS4!CwGo4&9gck#GoG8YnwUGl8z=@i&7rTZ!gSPWn>shq`;+l>)57JcnML<@l%E+ZCZf5JRwByXHBes2;NMTvilZH-JhB-%F zxtHeB^GLSf8Rmjd^#Q!}>i{5sDj{+vl21;9T--lTmOZp#40TH<1m>_MLza5pY=q24 z=2hw*6PSsn6g_NkMx_4n?COtESxZZ4dLz;2M-TxXA{g=;|6$yim+Dn9jKgTz-}0He zK-px$m8dpZcx9yn0EnFrqHS*G#nwkh zxz1r<{WPF^77XW@)r1U4*5XmB32oY-$bq>Bz$LqzR^+}}9R~*zBGOs>W zhe((C5CC-fMd?lG4n!eS4W~sUZ%wMj_y2Ef=bl+=%*mCxRSA4I5G4d32s{yMsp`w< z4{uR;7Fh0Qy?r~tT}?=so@sh)*3L;{TlAg6uq}v%(qih8)?5d%5*-dY6BdQm$nwys zlZ#)ipxOH770&v(Z0DWhga=j&KqV_aLQv-J`wS!tLlwIB7|QSMNO+{WmMmk%*|6SW zU-ysH6?pCXX1EOCQ-5yG8JN$^6;hEEdc*Q<#)K4J<9ZUfN@V7JBYh}amWuQP( zm|<&2S{zl03B}iCEYlh<4<W0rSl0?Ak` z46!Q}?9?mVtj#cqTBOBM`wq@3AGa_{t4x}6p_+Q9&MRAQN?)AYfzr31tF#~fSH@I+ z&&FX&4C)+GT1;knDj2y9s2Gi8G(_wSw!cac3_E8^AE<11=KP+3BHzrH}kAogs-1d2N>+;t4t?%zJ{)%NGFq<}}F%7X?s= zEACciFA{d0D$&K{1r~($m$q}t)s7>2r@3*9-V$d-aT}Ma-eDucngS}!gz~5=%BgQl zKiwQm)dfa#>PJ^9N8`r#LK~lFX33Y=4GEXZ2+^2YiC7s?!i0ml_FH!!&j!8n4CbFKyU9@5x?|IES2TCLmy?CXV>4o+`>h26)CF*#iPO}Tnqetgn{UF#f?~u>L2~{v%=ueVkKj0Qh@%#* zQAdOtsh;vK>=?Mz(z!$8ytFl0o?5DEF_X;E1l!xfK4sdk5;f6YCYS;}ky zQS*A1j28&%<-s2JLdumJS@JgpnH9;VE;YtvwXwGPgrwZz%_u|>@l+gwN2t%9i$Y28 zqQQ9$>09l9TAoD(Fo+KZJmNBTNH}w~LRITRnAs?#^k`}~2S^Zt0R7a)M(=x>f7Ht! zFqIIG9ki8hAWK?_#*h$4^jv?mi*<@gmd{KE+L&yBY^CSJg^pZB}U}{sceea+(d+v2~rB#tHIGCW09Z5 zCZ*lI5PvXs(~S|NRGt_1H1oNFr#C@v#==z5#VsVoL_V*dSaGPXq2vd#eH)^A;!|(&@r4MAy zWkO;L2Ac3uk3jucjPf>uL3vGhq ztl1@vAER_JNy*pb;YS@=&gdu6Orj0*mh);P`XkO^rb0^jBOtf%H@JOScky;WEbMXS zLuo~hazi|9(6;l#3{=Du?Wa^Q(oJD9+&b@W_=hvvH6xg`ekSg_MpC;zn&40$&O?j? zI@tlc#w<%*)2gP5zBHACux)E~wn^Rbi6E38ua3 z_Qw5T*l@y+c7anigdmY2*Kh~zR%BuHbN3Rc&D+3(W=y!hx_EEr44QlZQJO+>*Fr7+ z)`1a#?13+dZ%El`KvX53lg@!b?rCy_TdigZm?Jzn1?lNdmtnb)IqZ@(WugOTEu%HE z5HOurb47YG2INRHggT|o@7Z@nr0bn32_J9>N*4>yMYj>veQt!HHTb1v%>F&>QQQ|yoEue}h^#Rl)2q7Lei`{43ne-*p48&-nR`N6 z0_K|vJHhD?d-Q~P_5LGrE3J}i!Y`XkV@tQ%7%e;!@fuKPCR!Izn(zTfC%cx3Lh~Ge zNE;rrq4wEZinicLb}*6jPwEU9(DbOjUYwL-DA!!?EoV9JMH_C7EYk={%wkIBte#dsdTSoZ zXa^BVYGp(z;AQh!ZX^mvka4{S+L4vhSFecLYrg1YfKPeS;DabGld&5qTUc=;s%Fw; zGW_(g>9NQrgp++7J!>sek5$wk21#kRV6PK6H0H2y%40SrQ)3SEdCSjabU*Xrt^3H9 z6!&cl(7`7<-+e*9$R{cCAF9GHTzmKjtaSjil~hTPn=odArg>U4_xb!Obzx%2TT|`M zo{xLd_4wV;g1c73?DKU(1C8k5X+3|CMJBr2OFzgW9>$*T4}runGtE(bHMZSTxu+rjb+_qqQ`bXy!IM_b6~66H3|() z6xi&$s9^*1p`FEW0!FCvcith+Ympjwakv@kOR51bPJSJ$d>fVSa?H|Y80M)nZ>gGO zIN}!nI>PbK6ygjtK1AAJ|3SHVD0=h>Rb-=;8CMe@!s=ol<6>WT{NC?QfUR1o;T(2J zz))6fi1}as8AWxFg4zJw^JONG4{*0v1Pa{vG$nFg&+M;tukNsV$ACxt-|W>zIpFRM zsZpb=1Xl(tJ}|V^&QQ!$CAK zHtS#RfO@RH%-S5M`W)SOe|XP@T!!yJ$EG@q6#+*MhkQKW6a!cu!0*)OP*b3;6s9KC z7atp^Uw|RX5#bp(6MCH-ZZ?8$)$N|?WADP&r3_n?1sS6Z6Ir&WDwhQDvz>MD*TnNK z$WSc2OSc6*GgQg#HKDIIu!rD%Gg9WFpBc$mlQVktr?`F8;%#Nii3~?vqiCo`kIuqF62Yz@ zrid>NjVnM1$afF5c+V3NlpE&zQr}6@2%>n|eSEEfNh89x)KPyNml8w}upds9PXJX5 zO}G(C6b=9pG)UftmqS*MpfoNQ(7RKDEmk47eBF{IHfBpeN(5np?%V(7CTsFo(N#ddmQNDoTvofZ3Q8bq7y;Fe(LU z@wQZwJ#B+Rpyp1QQV}$q?QF@4X0$txS0KO{j5a2CpppK`tnsOu5^l5IIXi2}G1Sg! zi9YckPfk8eRgNut)s?$Rn{GRzH5Eg7>h~e&wd8hZtwO|!4e^}76`OYE+A&^%bGAV(xPmBk*&i`vAeWm>WC)*i|E`>7}-OJ7Nfl z@03YEa8{D#v)pT9e#fiTp)ewvp3>Cw%8qS8DbuJ*X;oRzqs{jWazS0KD0T{FROs#n z%rdORGaB!ex^x!MFCVc-S4aF80%2S~FU1ZbDFu7YxGH;A2ERWOMf4Y^R{wrGXQr$8w)hBOPUZm@dFi-+!$Azk)Cj!3~&}z z$ANl@PJE?`B@V1x_HH27*z zpv0=QWS(r8`(N#WiW{tLm{Zr5Wacv2~^M;ylb5#`Ag7+!0H^il0YQn8N)Pt z!o2Q^$lgUln`SQl@SjSMj(*nLZKX7OT?zxwamt>h6IUpYW(nfqvK>1N$c2lrWSzgk zA8U12w}Up$#xU5uTcPJW*gYG_=L6z35MVczt&cfzf6~J+2a<@-L)FYzD#)9+5#Ca7zc?$T8)E_s(+P-@_@hV3S%ro5067E z4TAD>5+WZHQb9uuvtz{B2)*1lx&MX8hpzpXl}>pCPoY;3yBjc-r-J(FkO_!uN&q1f zXgiKm$h%xr8?Wa7Vx=kR8_FU!>;(Ar2sx_uN77|SS@lwUfn`26H$2ki)+f$#>J{K9 z2>A=qxR9C#N)rBE$rBk^|ubX~I_JA8XlPOssU5aJsdb+I6G;7<~;M(oXTN_k^M zydX58G_>-{cMAfp#E@=nh?$Mz{g7_pE200k%AbmT8o*AyUKBl|3cNIi(}pNV%tOf@I^D?Yc8>1ZSy)$1U*zjd-Fs%EVS@H)i0VvhsT2`c9#iQrTh-)4))y z>FZmhK>)@o;z^Q;Z$e%;mv*TN7;Pybx)siT+zeJ<{|Aljg>3ES+r+>8Z|`TUgQ&h9 z+l7aT!Q+TlnwbbZgg%3p2EO?sgPv9vYQ#7ZB5Om$157*t&VdO?^z){=^N#wiLEp!L z#e1DY3-a?I2$wf3Rs6SD7%ZQf?bSHVKwmq}`+4!#akdDauKEfJu=3dIE>ROra}}9x z+hiF0gTL$ctn~NT5E~7i-LYu|;sY^|ibVF`iY?PMxeyrda2jjHIjpslO<3M;haSM8Ymd+An_+ z32bg$;R&V8J2VYl%Y}v>G8dQUBZD;rAO)p8WX^_THbmsA@aP_qKu{zkzAkJ><{K|Fxw&nhE(E}b#``nNUEKwlZpu)|nef)Y9 z(2brDo=XS~Mj>Q^bydFaDklx;ft{p45uD3t1r_>FAik`axqVEF$w zbCbJ3rJVq>^ogvo8Fe9Nb{jU^UQ(yc)QpBOe8Mc|kb*Eg-N)W5V5S&GMs_J6?cwoP z=d{C|@s{v1lylA93saMQR0OS>Da9+JSb}emVWzpPb1qA{nRTUh!T&lirz%WeHlrHq z>$`Sg0NPLc6wXG(-d=f}85J{oEGlQQ^NFKxBDhWbKzm9s@B;yHulEEcRkEtM!omZP7a(AMOI}e8g zb+|><2Zh;VBNN0U1QSE0%^PKcs_usm`2)V^r~a*H!I7rBfcQJMhL)3G=_kJ3e8rCE zHUvUVoG*KiT*CP;^goH2Wxi?7vMvuhsKXZ@e7<-UyX5u+4DS4BDAP?tAkVpj_Y|x4 zH8*H!OWN#o^6V>IAv64|*N5O-rWuKoP(XP*6^;V()?sC8t%gwdsjqT=WL8`${S*I~ z@~IPYNhx_mn@~r<9Q@DSI8lLnE%yf6 z1;$^elHxVD%T>MtNxva!3ww9pi;we+=pxnV+L>uYGMnC5K~ zsSo)7vlyu6*}$f%>iT&x@6j4Tzk$$VGY93VY`@OerM4 zb}CtqO^xJ7OESagirg9D8jHdgJqJeR$?LrN** z0SmFqCI5u0Jiu#qxe5bH@4l<~(Z@04GhEn4S2ySmP0xsI8it=WSbqLH=pJ9GlP^rt zBN=%>ZyolC_FcM6Xoq*+7Urfok8Fen`?W7HN@r2*7g;IOZ`Qc7M3t6G4p9h2hOHV^ zeIkCrb8ksMg*$!I%Fm!=fDsIs&EnKw7)F*Xb2)V=@HX8MfsN1L-yGSq+wscY+hMn$`lVt_#m^S-cOAOJDU2P0_YPXoW1=aeWauCHXvolY3 zSuCpeN@JmkZoI^;cyt7o(IYU>JpW6wg@b`hD@*7FLHBB#x>8}h!bOJUmzKYo3=J5G zNp!C^cJXR|{xEQP*w?%1XfjbOUnC2fd)C^RY`2GZB~7HSCa@IX=CN?poIT~({yZy* zGdqzNEd)o^Bc4D)3hO)N7Ejt{BI9M@joJv9UIxX!j2s4y;Kfp4>&zfu6)sY!RYoIg zT2nnI4J;7<3rb-Eq}@$ifN|}odw|1IMkK2m*<4hHTM^|2mAKKye`8f5Tup$oHaDsG zn~;|ijiGd|M8MwL4H3%q5kSnj`hO)HlDTbJ5|EYd!0H9lBBORwmkcOq{Yi%G8YPdElEJIc0`tt0j-b#|(T}-v9nQHkALW fjhA4Tc#Ill9;s3Osf?fzO)wS}_!67S-v9sr{jhOH literal 0 HcmV?d00001 diff --git a/src/img/advantages/girlM.webp b/src/img/advantages/girlM.webp new file mode 100644 index 0000000000000000000000000000000000000000..edc2f81ce4d7597c742e7a647a6198262b1fcc14 GIT binary patch literal 13794 zcmaKzV{m3cx9^|W&cwEDYhv5BZQIGj=ESyb+qRQQGEa;QgN`Ec*;RlWAF*ZNoY z>fN=gcI~RIEF~_!$qoQ${1j1CSLD)!1poj{|GGK|zz_r=B`T^o4)SjZ02%*}2mhC{ zvv+k?mJlJ*)Y2w`+6RFAv;S&FCN7TuP5)Q_PxZ9=-`XYm|EuEvAA~VAb20fR`SY)n zIsaSyUrp%$7~SH(nd(1m{NK#?ANFu{bp5AM{0}>;DvSPO(|=55@xR#kf3b<9^MCZQ z|1^Adwr>Af>p$&3yMs5gS5x_Sh5py^04@M!fCNC~Kl}eT{?{Ce001r^005TwKQZG> z0H7@l0KnS(pBPyI0Du$<0JP5iPwap0iKCIT(SJ<`{?CJ&n*#t3WdHzz765=Y4*izOWL?8o0r1lYm$xfiA+8x=OE3q@isj%e2QYnCjF93O)Na2&cB}C8r7}h)e0} zA(C5!zdH^*pZVRv{r=ZLL6)FF7B?Va9Z`d<-sciD&b!;&)apI751xNALI$3~n+$mB z&ieN<4+AmLH&gHovmac6ix4F8YiI@lMI=mlA$Z{(Y&FHZlS`pOk&g=>wBk3h+L7c* zm}CW_)?W^80(d_)OuVp}>6$-$&n^uB-2-k-XfU=9}lHy=OAiwo<-B zu_FcLwif{zWbbh()U?!=o1t_s-k$=V{1~J-G^2=B=atwn5Wv5ulZc500B{5Y$pxX& z05Jj)V8)6TEg~)?BL{jT2SUP_S&KE&N4)v~TqYF%<|lFr+rlMMg1e|%6dVkD;k_6C zB|PGnYX9z1kbfo351xC>eE41$y!?*%SbL55Hd+0?LNZKPN!Sp4_{{2a>k;|d^&SaW z0$O~=EQ7sMzU6;^f4r;ofC{?vbAM(Cwtg>s?mT6Ee_w-qe|wAW5cYlbeMXcLSm)ag zza$2Xec!sk`n;c2y!QH9Wy~{9(tdu^=XZEVxz-SiTZzMJ4F`}TF3H3-^KRZ_!Ot?D zYGgxPnN{+5!#-bTxlyA=3ORcT(!B5ENz+Ws>P6*vd<x@}3gz2MGkpke! zK&s*Kcyc&&ZkacY-P2^dpT>elsW=A_9Y5Tw7l4Yf6G|2h7jW4Lj-z}CLpL;n&eFqY z+eh0A4R)KVP*&f`t?HhUbC{g?KG6YDU^9&$k_UyG%L|pJ3{y_gysf#by5q>0n@*#b4 zj8$PLgPX}To^WhNci)YACozUUn`0FQS=aJ{%gNew2$;}xX3WdOZ8`&TXt|(k3S(QX zaH_ge3bw~d2Ry+A`@)W*8Y3PD<1H3~Vw$3zIc33{%uI*g)LqC^(ZS?}I0$f>cy;VWah#g93Ou-sIcZhyqKt!9v{iu;hXwkD^!gmBW8oUiVCu#n%%0* zL1G(=YQ-63D-V1KE)1Boi~xMV2Qq(n33m7keiN?zjf#Sk3X*_eLP%>I55Bo;-sVP@ z4wypuYcenUZcW+7b8FFoW_Yw(>PWWzG0cHs18`=w7-Mznh-+#R1PZKcvxE9<+d;QW z9(@%0bmCU4`tpj9BbYt~x1Tj9N5J}O zg4e$Z4TnOaYE15Kifx?B3Do6JA?Qy@lVIXdhS(8DGwy+xo!VIAmggz(L@Z&l&dBF~ zIb#u`=#e~-%U9#}Vl@b9xH5iN>*59ZHgFZ!yO)HP>sdN%@bT|k5}&%)E^pDI32}sI zlNNutN<7G4yMQbBb2JnCZ`CDN(%3nnc$Fk|`JXsO&}^!7hRR$^Aj zP`3?amW_5(s*T}KT^H>p(Oe3g^^A7e!iY)H@A>73bB~*RcM|`~$sn=0`W?GeMtM$! zh9tL>KqUSxmkv(fSyrcVsylHQQN`PG^|y7GTb+DCfGOWKh7u$rvHbdz9A)cOYSqoo z;bAHM;>;OkJuHe$?xM|G*(zWA+|>{%%a)%8q{UnAdv=3y7;akArA0XVHRDjBGVbLC z95Fh%6QeZP;0LA3_0O&)Ux{Sz3$YS1LQCse z9jj6%UaRF1p+F&J{w=Ok<~R#YYwWY#XNON9HS}A&8dzI(Id@e=K8Y@R&N29Vl)$9m zREs0WmBFrShak!{M?KGLhBR#~Di%!{)H8kE?~-f9BSzS}Lh9DR&`oZdl&yJVtVaN> zCu_l(TJrY_6kQrOk%;=%jJq`U%dNru_y?$Yw!lz3DlwxbO^(c=JDi^+HoFVqg2 zV4qZc(KPj+(p^IWJhO*Oki%suoafPiTL!Bm^Iy`?F}*5GX&Sfe!Bc*#B-#oj#cqBrGL2$4Io?M?Qab5kzE z)Fa>wt@IrjAaC})JvzNTzfTxG9mm_|lGDZ3WJQMFR>pPm>Us-mt#)%9B{W|ac9SOrO&V!4 z`!N8szXGo!SHvMT;Wj7nzR$`L{a0SZbIDa*PF8lpTqnxmrbeLhuV#+q_GC-$#rgsM z`;RiSy7wHVYyo{m>^k(KO_gnP@%F+<5X0{g&E*eH}UvmHRtTXPcCYYhC3U zZNE#^2C{ng2!LKdKD@wUK^BanisAgO*4o2GpvtEK6V;@fkj0{HdSUz{tA-pUX$zt` z#YoUdxO#0!CsnQzD2YxrhGkMC*&RflSe=LDY!hS**bO%a@!Dvp4}3hcASJ!>zgNMp z?=LKWEDCG3%vIJihjxiumX6(-$g#_q(QPOb9*!suU>9;4uN57vq8KEM->-W$1_(*} zuW26bL+O^Pcjd|Ia0dR^M~>lj86JETwGBU`0M}bgJ_a-m@ZKmqyoiKl8lHR8U4zk{ z8WhfSTK0=dpXvd|%w^)clk~&DjL{0XGdO>&W{@LkwHnw3j`9c99SG?N2+9*@|#U z`@G@`98^2v*Wmo`FS5JZYnV>|L1DX*ZmJ)QrZi*jAp=IN*XknFTZ-?k{=vCQAC7-W!sZYvW<+4aGbl> zBe(h$e$5uvRwcHBxxD=#~kaQpEkZua;JyJfnN8r$2%(V?Wpz z+J!Jtqpx0d;rTt=9Ol^KP8zCYUU*{z`kOqI{OLUv`wtVl=YFb(90GF_3LUb1lnaIo zZ}kdv`}Mt|ZXev5!ewm8pMr)Byxgrgj^HJfhQ71414+;llPsiw;+hnk~q z6MY(F%W5$kKwawUh7EfuhL zqQgL&CeDQAR5sJkdFI44`FK%cd_SX{;A!e%<%nU-&+27CW-{#99?AnGoO^mOb%{M# zlt|{1f@EN@%-$lgYsKLQ;C2*VAOCo=q6UKR4Z9On9r}(;4dti%&<}-^{BB+S*$y{A2LKl!k%wJ zW9tGDoISU>f4h8x`5(PB(NhnrS8huP3)OjXPaK@c*`gep9aR`bxhu^u0#ls-o zd)4-?0cs+}A`fc~K93Cz&fQpD)LyizN3LXozeHQSb&m7m^v;d;yR%N?;oUR(`d|ke zyvkL{xCsZ&^QXb0boaZ@$Y9IF`2-hcav(6eigM1G68P>oVc%PasrFz6mMB7v=dj}P zb7*3gCA%$A8}Gqn{V@gSE2A=EV`6*ibVcA?{35_}c(m z>_zbX4Ndulc>8QexL*Q15#EWvGd`?okf`Zk)8xwCazbl3+_1>pCubHufaq>%l|~cB z&Y5B}GiBmgqmv#B;!_q;^;Ghdp(u+xbD5G@EUnNxJ8@_hA@meUEuJC-4@jdV7Bl}4 zazAGum*13T%H&tiYB4>ET*nyVU%IDgGBK&F3jX{xN@CzJgM%3DBk&9|6{PldL|;Wh zZ1M$r%U7EZ=#@Y@Ks`WFrV&AMmr zJ425MV;winyH7+V{|Xe8Ua5_$aqpbU(6mY1?FA1QQ=}iOqMbnZf}1MfS~f4K#K6L* zB3~OAg!%`?gZz`-N}-MAP1fFUMi>{EsekMvfvHKk_i`l&E95@Ft2x6R-%Q8XXpX?o z-&Cd?wthLrqsof?`bKnfkmCRG@DdWAP%{Ec1ooa{m5VCWsJVwz z8pg*k!MA+(pm2aJ}eW8F(4?;BYm<1i(^EM zDooWOVoyx-wohJr@0Cvb!>MYVhRUVvq3a1z)HhWR@#aKWhHw>97C87)!3p{`wXxoA z!VNYFx22}GQt>Ekq41Dadj;HXAl8Pk&X;$W>q|LyKilsIrgCH%#~xxM$4_BZ7M5@W zIXmPrgH0Jc`jk;TF*YSXT8Zq85!$~5$&-O50;ngU?YwAA#-M#U1ew($d!wcafcFkq>w+HBpO|=lx}}E-qmf_JEQW5k72kkx*?;W z-+?Kmav{u)2|Hr^*f26eA6I)=LX)Id?}1P)1!ljT>P>Xl7%yF`WN$>? zN6RzB3tI?O%Sjlyzi+@pEhMI)Nus#X55)tc&Lvje4N+lVDhS4nV`7{ZZ>f`!=Fw zqb8<(uT4T1$w5@C!Nl`k7Nq~`s^ZpAn0U4$C%kWtE9PIJ?P zp?=_^_ym7)3-!EkFY>&d)jCLQ2beG`2cFy+KQ&+3#j-9Ee29BAbCIj0_LMbJB9&^x z+K-TFaqzp7Hom)M*aNF4%Hb)#IwdQw^zyjJ^hkO32DMm?5j2NuO7U%x?FD4wa zr#Qh6OM{Oaed*3%KeFr!(a5m2sJ&sHKI`(c5<5HE53pS*OU)zTVs76wLwegDI0s!c z*y9-ewutqsDL!Y>_HGd%bmR7o+c}UOd+NM8i7zF8Z&Idpx$sw|C^;4eyzwNl)Zm;6 zAwY%B(k+IU5;AX!fMKBb=6SJ77UJNsApII!Y$_Paj{7uHG7YqQ;CBz5n%etTSGbk- zEp}-6p79gpGBoKsH=`FXTRPIbi}&839j>D4qycesAgpGLXnVrtl=+(Z?;q8zyDkc- zHv*Od;S$@IHUO|eju(EjdC zPlxuT6lgI7cd)Ei$m-;$qTePes|M9*ri8k_K%`GPpt*^ZhN7{r670qN-{%`mO{$EI ztuaU1P%NdK6=gTkzTgw^Nmr_EognK<_iEl&kC6`l%fI$4YQ}@L=Mq_jj5eP4+ds_| zL+-`y-M<2~Q~a*s)A+Zn_G%dwfg7N{ZtVC&ABR2Iw$4|pO#j4=KCO68 z4fcGxDz-hof_JO4|Aek-}c3k}NnJoDq*LzjhHPfw`Q3^5p&`HK@t?Tb6o_i^l9lJfXN(=|oY zX8k7%IS1@;xyYZN`(bTz-X=5w;21tDzBAn(eXk1BH2$)Kl@NB{%(HkNJa&I*$!CXC z6+m9nId`&&Uzysi@X!s&dHKF+69b&M;MBF`ddJ3F(S4XYS;DYGnjm!kewOfuP+#Ma zj)n5`Cc_z|d=gbfB9!e-w}$_Y6LiODw7Z<@y9olxif5YQ+iP`B#v+g5At1T`oa7C4 zxTg$=Kv?VilpJ{+bS}qF&Ed9SqyR1HV3kAQWgrqz5eL0*#;lAHKXRo-mmz7AwI@f) z_MJOU?xWQmrdI;3Csb!g5y|TdtXG7&eRg$FY^Vs*YzzJMPdQHFxs2zs#@H- z&*6N-7&f(cGQ1v^2k;x)k=^J#bhJs%awb2Z!5TDTpX;0BB4gknfHE8(j5|zoAFGk(zKTw(0#&q^bR)y zMypc5D6PX{9WpIGghpN`Na%i;t6A03edRZsDD7m>P!X~1rt|b!UBLj&fRD${DeKzz zlL=f1j02C}^kdTMT;7&$fK%@{@9%K0%|gA!1H(2(|Bpq^q!+IKg@6V_^xcTxZM7|l z+BrRZJVeR<((J!+RKP!hJby82sKX(os_92YtGD$h4-pAroxb-dqPET1FSp>i7yd)(2Bnll9QU zq#knfdP_R0%#!XdkHLsUU~|tqsre}wm~ux8RK;$i7>t7KEGF35duU~yl9Yiezq^9a zjM0W5_nOcKB0k6!SFIU7FD%7nr-pcBARilgW12r%?&F<#&N88ppnO!h!7Mc)GsabR z&7Nuqb$Pg2%0cX|vU@}XHh51nX?LXF?YSZD1Zzt}1->JbEhgSGy^Gj0CfBO_&r8x& zHIV=cpMQ$*$)z1Q1Lv0tIdT?b7uW?(IZBTGMQ?{TfYjf+w*~pfQMF=Ki zr)Wd2BM@H6TRZo?Niy+bF#Er1Ut_2ehm}jpQUgd7*){eXJ+dODHAkO@nr>WTQIf5{ z5(y-rtA7N4wl!Zf3d_o&^XqXyisXy-&8L!b!k%apOeCz1fLVUp(zwLQ79 zlq`VQmxjuvU=sDBMJy?V9V@Ob1QMUzE$OKyLtWu8kjw7%AaxtDMYg9|(Q1w>&4+X8 zj+4Bn4e6w!9uxivoFS+bEH5_@v+t{CJKbjcfl#dX6)mp%hmC=auoj^}V%WN$j(7?{ zqUVk@N~i7=np!RgVpB%0wbwhn3WW(N{M`x5XqZ0sTKz}zRlvu$I2J-1GlA#)wYAxo2s`@ zu=QJ88I`fSSWw}DZNgylA3S!`njaxZu!c^GB6GfvP)~3XR|t?}V=>L`7A#{cnKliU zBa*^?yy1y$q@cblkLUK)StKft#PR*7OLN}WPES!N51xNqxAyoX98{XpE1IJRu{%?s zC!Edql)7GEN0xU5jj5;}N`FljoVokvtNt>gYlaK6+CN&iPH!x~1Q`cCkkwK*l?s<` zs1@V`D~?zS>vaU8)oXuj>WEYEdYl!ei+hl3$JTsUQ5;QK8VJL8G{yA#fK;IuR@(Un zU6nHHm~>tvh>ew6#uBQJpjx_;huxj6dx1lamC2b&zecXhBDTG~45#xv+AUgFSW>N* zxgF(F+OinZwl52caC6uc?5uIgZ(OW`zk60@Ph#J~L-=RTHbl z*NN{Ac(XENV=Puz=vKYQM(aZNZG*eRyGD|I0Y_&g&eEP|00Wjk1R80df12d zcv_k&=3)N2+$!zUG5RCNRY%{#E7i`k)#%^@b$MRzSpw0f<+52U=E?6zRurcef@x|(E|-Y54cg7;_{R^rTc zkefWCM0*V~`wv-bzLV{%Y?-Xgvj33i5$E(ckqqM9RG%|%=ZBW^&tF;WAH!5OHMgA) z($eC2WMg5rZuF^DnICETGamlK79*B!2Nf$yxW6}EHqB-Gz~J`a46hk#)4pCkY||_s ztI-X6o-MaHNj|GG@$z|A_ULCzJ046g9_(a<#;Z3f_1}SAvJgJ^wxqYI)DcEX0yFtg zwg`=MC!JeUwpJmAqF7@BbXo$mWH~a-`-lr7ZN6Q*B41Ybo8YF>7)_HFGFVwzQ;VjM zp(}|Vlo_XXUo&dW*wRW8&nQBu^^71tH>0~))yc|OPQ)y}P}a)?XDzs(cJC)PKA>wC zC}leSEX+FS4`IZKV+GP`aJ&|g!`1>js@;QjDH$RSScQ>(FG?KmYU?f-LCe-NQkRqu z?)z}!3CQCp4(DE+Ty{EqdjUlpiKwC9YyI+(0->bis@A0?b${U!F4HGLW_^?|nUS0_ zCN65$FsG-(x({9hJ3yABCAu5hC^5QQD9c)U=(z0?eh-pLRyuCy;Ey2=FlN`i`-Ru- z69SyIk7+^A=chGjcauzxA!t(v!snL<%7zU~N7kek|R( zRDPmb5@%T#_cGMo&veg3OLa$Ou*Uv<*H8eZp&bwWW1QH?TV8`_*?EcOfN0Vt}f`k3$=EA@8xw9g0YB;jH7)K$6`W%P7h1ra=OdXZ| z!~*R<&`Z}o7#b+X>y16(_kTLbTy4fsy*ii?@nFYNkh8#htIdpTpTzAeP+DTX>!ml- zBp?)ZxQ#8HAd7y^lICCUmc1hT1NqX&iQRt%lm z)%oSxjf*@{b7`sy5kl{k7B$ml2l2}L5@VfL4Q$E<$`75){*UAAFuQK`%0fg9CCVqAk!x^&I5d?ONX9ouvsh1t&I`jEh}yCN`}x8tTa>8=Ecv+iWDMJ`FeL z9>yiU`GSbJNqYlP(wMrY4Dpu5A5|oP*qxA|A2&aA z;2UKb?AtH^hl1DXhOU0?i~+HnU4Pt~p0SaksH}%xST_zLeJubQ)NnI{W-9HRk??;> z(c7lBgi>V(Y(W8P<#VR)qfOKSs)#TaZl0@a_2fBS_%%H6o&0DN3F-Yuw(jkk7mGy7 z<~rx&ZDEdF&1a>_43JLK^Kj22te=Bgl{*yu2FX;b+i7_(NJ|1e!e9U${5=m9RXN9- zS0pWgj9v(Z__H!#YnFig6i&p1LFStQ>|8}dwa&{trdyHVf#dD&JE^@xe1D)|THa@oSJVAm@7MJdJ@DrDBtd5n=wbSAB`3t)Gcb$mfa$zr0Q zNvDKuZCX7cB98+!X!in2r;bfke*H|R+A=|+? zF*e}`*Xo5`qAI!}gnw4Kw0K%-1RI|7U4*`M__bAZp7FgTNz#<3`DJqs0Dz!E zVW=xF79r-t!|1$&6<#_>m4-Ac`$B>no( zEj2{rmtKAw@O~lAngw5Uwh{uvs`Nb(g3;;QuVOX>E&1XeV-e}HOUm^A{B%KPSt{6AbGJf6m34!ysnkDp4FgurLVVLntmF;|hvvP`&TiTF&j~@h|bE zMR&a5@M0oBxW?>GfwT?;VBA=BF|YiY=16l{j)tw2K$m9z8_s=nRCshY3I90#UL3nJ@1k8 zD95diGlB(3Oo({VQ;<1V0l|kHs>pZ-(HL?&5IEcPx(oRA^FKG=}cv?gOTn&3Ys2};11U)8n%6w$rH8!MW=sS za%#lHFAfx^eM+jCDlxMfe zT>^sHkKy4xND-P~dXOGYA7T6UtMJcWqu;&JJ;jS;+9*{5Kg+$;5#j|CBT+32M1z8i z^23zY;&jr)PRvG|IDfc$s1rAXqmQwcCBW_ocp{BGLalkqZ6OU;@8b@EtJ!d2zOCZR zmQ;}3^lIybrz}ET2ww@gJ5ia^%+ZPeL14?lOtT26{5ZX%l4Mc^Vm(^tSceyI&_uY z*n1uAG1q0nDYD#zp^0f-f;*q<)6-KkDtf>48?kiS5|yRHZW%=vm5n?;5u3t0NThj2 zKb`@Hh^m!+$YQr#>12*uO#6hp()^v;xL;f-G3q2J6FB$z+JXyq-(I0`y&hE*+sw_z z$$e^eB$j9NxY7otYcNRPCrbbVfu5FlF>=HgXX_>5gGPSuE9xVCegO%~m7t~?6)v9| zF6DE059f}39+eKNw^4hX`msRd3&GiaP#8ljmwTq?Td>Y;{HeC`jHZM}VhjMfXQGSS z>bF>MlQ@3_O-|m+0c+ixB&7TZ2t-&_*FcNR59j#9rv9u-z{eBcUD9SO**ekDBCHCn*nVJ~eTc+G@{CICa=hyW zlDAb9bje7lVi0_p;i&4B)HfyUFo{mNtQKnRh4n{wZ!7c5y8SEq>$50ad8wIXMOa_S z_YmVgTWWI8fL_8^QtTG#(b=B&a4OQhI&|VQqE~j5F7G1U8{6aZ2_p3hS;(ukIzB`f z`5^85yBG;0UGFgj`s+SM3F@FWa^1%6yF5|vM%5v7DiUc9Ep%o8@uSP@az8Uy%I579 z0!<~2*t>pRRX%GcE$%u?`Nly-115Y=MxTu4rp_|ABFOnnc*XA0xY~Rgaq=EtXv_A` zuS*n_?HU63K;1{H*W?v`x5Hg)OM>6ZT1zj;bSNFvt{X*~Jl!j^mc&nsc*K!QdI(V~ zc-<2iv{mMkRo|K3+UBrmGg?**PQK6StBg&A)RifqVJJKc(B2IhNx~>MawC__3Vud$ zdTtT1z7C;XpCx5?yVV~`vf1AqR!iis5O}|(2o^!2*VpMm2-{q*)FC7;r^!-6lo6tZb&!$If8qf9tp-z_yk0Ude{fW+oiB_C>q*nvakEjd??N4z8nnES;SehHgnS<=!;&AbiPm@IfN6s zxr%4;Fw)w>TmlokB;Ci-<+@O-&$NL4B-%GIWNo6<+*+FctuPoX3t`Spw#GCB9mnFn zlCA}Q!2}*>LF_$S!^fRzbl7E)u_M4 zXzd(8?_mhFE>d*RyHbo}ti&EZ!p@NX@<7iVra%8|51 z5EAdzHup%CyjRjn-JUWV@o;xZ2LshC!T8m0YsnA?~()5k+fF+($LgbKbWpBB>uqZ{&0f&bdA3w1E+&Clh^&eBK`hs3`<_+lb$Y0JJj^X+SvyXW7wyQgjAZQFKFV|v=twr$(CZF}0bZQHi7^PO{X_F{MMH#73dUq1Pd zL}f%pRaTaQq_{Y3F#zyKOju4uj#CvD001!lOI4tNUQmFfh=|+>$iE^0WaK{<{9l!o zwWGa)gfNk+nmQ5G4glm|{I8&A;9&dT^nbMfR8LF)t(~X)KPvv;P8dTY2ZMi-n}3PS z{$J<+#)S5d(M8l@^hg1^}SW006KW z|5f+T{9ndK^sfr<-?(i4MH7G}zz9GDkOWu*3;^{1i22{5G6C3yWaNG>fcd@PZ7KcxkYFPM+oH~EQrem`Hczo3kK-^=His~?(}da)d#Kh-oN-; zhcV>KsW|n@Gn{(6(&=Fb32z?7G(FUc7sJF$sfdo~XucWYpoe%mn_6zGtGo}FGZae@ z%D^|Wn8F{qEA)barjc~S$P3sGFxJ{{-<|S=D{ri->BnCsaI|<|DDp6)X0%?E+0(W^iS*=Uqdo7wf%swZ&Ru0R@9TGI!ckSQ;T!Nv zAj*PLN2tGl*|q%+U6j`|s(H;)aIl|sbEt`E|Lcd1o=0unY4a(h&W=HQ#l1ccV?9k< zQ94knkLPK81-5V_+ANNtwtjU{x?#uY`e}I;fhiAvUYRa+_2SH;qlm&akj6dMVO>kb zFN?2FjE*m_hM}xydMOwV$6t6o>t5G1#j{Nog!v#`qi-k@}UN zbgFb)$9A?W4}4yAzEZvq|3ApSeIShQ8B}02vl0%=bGqdhYb;Bt#U+%v)XKwW?UbjI zOHqE{%X@(hW9GvOI*OwE?ZE#!geKxn=LYT3oLP8i&dV>mX~yG|gviW ztHh6i#S4v^Hr8t*ncg(Yp@SZg`mp2%p)yP zHiR(W#9^4YZ9DIJGFmzmRnl6LkHbM2&4;|Gx@&u3Rysr-(#nCBXi@2S#!m-Qgj4a$ z$>tPjUAOn3!gk=0T6^|!yMVJdx_Pbo?)}lwfZEj3|DetmY;TWgmqU2(A<3y1(f*52 zz(blnuU{)d^=`)n_=B{^!5DH<5lW01&GUmIXpx4cZ6F z&x92&l24pRPR8PIR9QAFvsFTHIr^`6>7^y2e?E^s%K13QqS8^bFY7$@8}O_TFe^O+Uy?XNTYefDPm&iQTeUG(00sqy{20`~pg^v&HJ=JWV~ ze^>L=0sKV0{`#}HVQ6Q=fADQ|3pafAL{Ko10r|o61(nMHqci#z==R%{{tI(Kr&x9T zrAhw2z7lix>Zf;|F^d9}sPrYIf+dXUe3DF@@NIv8^zBv2U$Lc5N%k!ZOnNsh2-hO! z+M0YxnaOFv9dm+FJ{j2U8tC0f1<}ruQSIF79=x_4P%u<^pNnGFQuq7Fu>upHUDBdx=Q>pb@Q@+Cf z0|sJD{VUJV15*~=Yrc*oo>nInJxXgS~qIg({2gEh||u!>|gym4S13{<$JeFkj!mcp0mDX{AgZ0xTiWXfZKcM)lK zX5EKkJ}cLA)ma>Jy=SNS@L&kLllW{n-=Av!m{fW={MM(On@a)u$9< zjUz79#IoVEqB=v7_rGri6k`SlL!X0HZ|=%Bl4dEUq2(Cn1&NB9}F&wP_41T)0a-{7YKR*cJJ0 zp2YBc*Bj^VDFm(HZ1=#wiiB4fHAs)7a_Ah>y$xeg>c$eBlJV9h!L$4(pV4En7(A$$ z8j2!50dKy4jjQ2t$?~Z;Dym;~x9JWyiV>M;LUE#ngmBXrU%bFSOQ1a4ZMO_g z`L?Ehb?X}~bYMPq>C7gF!j&}EaGZFDpP-sGh-X=15Iy^nOV=_efr!b%Cq^clDihV* z`T(t@{-SYCNp*GU%`xV0*OwQ&noNu(z)CpZu!&O9+mWg^bW~22uvIA}Mxl~;K8r&Z z3^$^m&h zpy&LbWi9V>X`DbR zU`jJ|FndPzkyqJ(sf7b7>9pB&C&vCStI>jjnqVVl&v-n3!bEBe1j|D)D2`yVGu{v? zIB$>gU!_=Da@6A`@FM~|lLkys!M?$(tGq%}t>5dj2Ld&W=lBd3>Ltvg?zr7Y?!3EZ zhdJ9}`-kBddHQ!7)4A1MbHDly{c}Z`I;hl?U3k9(!aI?}a^MV3*KyCHm(*JmmRkW&3u;piUHaC-ZZ){?*)p0_y2R5&j17kK;2ch6nus>x+B7~^* zsd~~~E9Y$J<`MZTLznkOGwO0)VEfo;ZI?C@%!R7&Oj(7~qZlM~>MEUBir}A(Bp83{ z4bDq}^j(9wRPUDp$u#4&zMPLUv!ec9?zs8up1eIyKGX0MamlWB zEzV!X8XcVfx_=m1(OI|C_ zN}nTGNNGl}TItsWZK0RxwpKrrZ(J6C?VXrB^qFL{4k)HN-@6{7SiiizLUa8o9nyD7 z2@(CyP`UwGsHY~hVIq(?pB%10d|XA7(60OS@Z8BOcAr?Iql5#dd0{0q2azJ}nr*T> zjiU3zVzGv?YnWj_whBw2?<{OzV!Rm6yCRbt_A8}`)J|A+$05pq&Rt5BQg+Pfu6-({ zfRdGgPeG>b*zoG{Db-)J42GH#!ZMukCf{+95vWIj6drO(^OqS=!nF!@r8a3<)m5sT zsG|Y@8384t<(zq+WR+m*it^rsZOBkcw?3xJ>7yTirGQR|M%PfIp~%l~@nFee-^Eyp zAEs?` zi3r-)AF(=wnyXDKtK&Yi?NaCP(q$d;FU;B}x1}i});ufo(Qe5%0|Z6&XH9j5v~>Bk zkt%NiR=gZQs>DZRy2S_Hd_ zbfi??D3nzveh47Wd^QiFigiUl-HJHj2RB^(_v0N%%e9c$y8!Za-ac9{c-r6{1HNC} zE?J905_K)fi};@}_el{wBYaEQAX`NuebTnP8A18*&%E%E@=^1?II+OX_#TF?303`Z z7w~&2=FHY}>*k74bZyR+cy+NqH%aQ>d~hIxF{- zBJhi)u;g?WZ)}Ms!$v8w%A}0=|;3vDY?u61~`;yJj!+trR=rnpD*9-Mq)upsDIx z;EkrHs$O-9<&H1kkggkceOVQyB*-xmcwAE@ol5y?>u*~x-#&c0@*Gp)^$CN_WTCSV z=iqAsuUe_f$dP#8sl8w!3~lJ!RV{*W;taZ07wTP-VLM%-kga2;*MzvP`+Sl_-bhML z9Fbq(Ni6ZK3|GM6Mp8S#TI4u2qrhZ}u~dt=3PC? zp=z3kzn5RH26e|VS2`GUYd&UUKh{_8~oGXF0G?BLU^C zeLp`gvSFiX-iY}m8NKnvdcYHv4zzB-yVPh%VbGzRGh8&9qS3x?;JY`4>>0C3@3g+r zn?Tm&T+!qY@QOAuzNa%@>ifOo^_@fnTzF(1tBJ&A2h>`0VxamTaOH${83j3st z-N<6Vhvn^7KZU-C(8dw*kq~QR7QqcUEozue_#s)vVd%h zCUoI1{8_5}n*Z@gM4kZ6*$Eb?AF$#M0-!W zTOb6$6LtTwV_z~f!WEtB<@3{{*|R$ybdMjdSEQ(yIp-)AkWJT85Hp;Eb8{9-Tfx;& zAyl_Jf6@0q4p%OtOQxY-ozyClTQZInO|0IeIR%e7Sf`1z%H&7_tYcpU$Nog67)!Z} z+cb6pm|Ihol;(@P%6h?GSQ;fUjyZ=4#Y8a@s1LpgOVj*R{MLxXYgF#6V!6njxWK-w zi5B_d_?2a?tS+w=l(h|G^94-GCIS5@E5sXJGt_G|NUW{#~N4qO1V zoq#7lhx@A|1xeq1(6W`Yog2|aF=rzp-w{xb_pBkAF;WYb{IUP=DWX^%>7T43TnYln zAL?I($A7dXAt}O+7w()Xy96OVx#l8MW~sfD|1nEJrUu{dv|g%oEn0*y&H&~#z`xvSHHf&gy`mM;Rzv(XES}%hPy+kq z83;}d19b`eXG@{555`s~MO?C)&%1$Yk?#6}r4NPKLVdM$w2-&hLO^oYg2*}gIY`5j z_u2r-Pz|Dft+vtcHBX~OL5)o-=Y&V)b5oCQSG2E*V6Elp zhz7m@xvt@!j>JeZyns_=N8ylC2iFHCzwNKXBw}gE4*0+}uokWFQ=KNilI#`EVFXASQkZq+cBE ziu8z&EaDAr-QN3He1)P@$JWwlm;^HucteZ1cji6;Qf+?$y7Dl%d!O zu2W=q#iVREUA=XZVyR)2UE5A0XXYhHQ{KV zgW!>uCNTKGIsS0~1^K%RTu(!P%~6JySb8!IEo+S0CbmYa@m2sirY{LnpJb+HT}oK6 zxo?KRXqMJ)Pew#{*F#^xHcDdB9)PSP;R=Gf-G)?(;MtxFRfRs_4HXqX$JlZR2m!#s z6SzBL(778auE!4LVsp1VfUGTox$o=~!xs1YangkcaV{3y7mx8FEwmbwn zwSLUC(E6(A$Rn6VLqD}N*u6vMAjauG-}ME%a?d<|enNLHiU_;?*1^QYjdjEc$v4o@ z8;5UeYjWcVUw3^zr~1^J#AFb@smnY3&goL8;pgI(CTY{zj$$8`S-kbrLZstIXl3vU zrWFg0TnMaXde?>)b`EYS$Jtznz>?O~jZSEx40Xn0Q7HfD1iVu;3}VbmgA6G&4*&hU z8(XBZatxk}q9;mW_RCG3R4NL2T3^D?<6ATgV=KNTSIcMSK(K=W53naY+Tyr8#|BCXUP4=(mf^ zbM{Z2Hw*@ff(vht$XZSCM9-urpY=>w>!m|rx)K&87Se{#XFpimwS47gftqwfFLCMU zoe4Lcc`|KDFc}V)d7$d7CgK)@4Yn$yTaDvx;qzef8uOD_B`p%;;+1N&8HyiCc0(B9 zR=1^i*@}g0zf84?V6W}1q9^s!_-LW33jL#P^s}XP^o)YEsAb!QN)GW3n0G}ZjeRVB=z4x+{NRK+6;yIqmsxZn+ zK>{gSHTC7XZ3s;DClztL%rdT=j8W^pJ$490K$Ql!DA}g`R<0KiJN&GGS?>^H>|Jzf zL&IwuW2g;0d6>JCx{HZPI{SgqaoN&v*iF?3y4Hn=vUQPUa&}Jo(1%M zOcWx6&QLGS<^eVB?b04XXvw*;7RL=IU!wku=Y0}fgrg3Bf+=!R#uexXUdd$Ql^iAR z5UP7QwzNY81wNfDOYiUfpu0U6QScMyXS>z;@r>k&Pt7%rVpK4+rvO;`izGUaMc)i# z#5fd@#FNXOfbvjmE*ctTpV;ImH4*v|N!}+|gQM!UNiU0lNA++LR+remQ&8K~Ck<2i zqGIB-q3Glyya5Pdt4gs@F?t1xJ^tZc!)f?pU^#(Kw#3V|gflaRy5o;YsS!5? zCKXEWyThI8E&B@LB=jXo)+8GWh+XRCnV=Dd`h`0*K|zMaly_yRU0kl%+#+=1Pf<3V z1WsO0Xiw~Q*1gh?#D#$v0ZzAcX_x*edR7W`|9mF4)W*Z?{2Xx$3$~qX)xY-B2Ow%c z3`+ugy&N@?@$+OPR#E5Jp8eqjyVLExaWoUuZokednGVdKd_%S@{I7rQ;SLlTXp zdrgy#{j*+D@e$&@JxsL}Mkra6y>bW)-;19ay*4H$_~z;N42|^ zH!*RjOnE&p&VNc2Qa8*1l{`V6%w^u>t(v&na7*!VIbxe_y&4GUFT3WoMQMF@VO22H zW1@t=A^7hE_<;Rd92Y_6&g3~1amv*_hS#X)J5@qgNyB?1^&rGK9c2Z8k%wJFN7hqWII?a$6K&R&#hF!vRjIY^T)OFGNQ}5qoh&0#GBtM{OVo^( zekCpSE)O~K25h&%mM3ztiA2p`J^Gp9oO=0F6me`aLs<$K*xUOj(}TEK%=%ilTY<@S z@9;tnm*^#^tEWaPCbAW;;Vd@C5`ia7bhCvJ+JN3*@{wh%q|eut%d zxHqr^4{}r5#~LWUzS|jmyIMtx34O!po%>>73LTuy{iDMAIEFX`@96el5*!P(oOH zu;!S9Vf3bbi-u31_lcAb({>TR8SLx#^N>B{V!)OSiaJn$y8`lu8XpURi2>IK0wNbZ z?d6=Tb5MK`!}&CD-*9~Ns(zaK^}Ufyp~lG^49s%RwRpoRmaiLkUeL#*8F7rikZ?9` zwXWX?Yi6?moQGrcXL{sy3~`csg|?$%0Q!vYgdaAvChw*WWf+h3YZk#o@@s1C%iv|i z z&oX2@y*7N9f9FGmr8+Y@-w3 zP*)~sX(obS3UGcR+bk+lIKfAUkm>69?5AZM>Im=h7ceJiN(A_78OMGkLzVdcD*E&N zNN^b)jBTfsnsxn`Aya>|)3&kcR@Jf+);=<>RNd{0O!QiRG9rc__i`DQFCoVN0rU7` zK&>6h>FhQMvo~3$x|t_j+~f(cVjupExs0!1G^i~u5A3zvY+lwt$C~10UuU2#{-cq6 zu;#F%L~^~s%Fh5nex(A5kDgLu{k6U0ls6$@}{PWPzexm(B7#di7&K=(kQtj>Y>9~rOl2fIv12uBffz*(fcF)8u;S8+OVE#kDe}m^gBJ@5gohC z9eOEio%sfjlc>XN7UiTC6-RG(UvIpRilF5@MwyHHws3p)$oLmFGA}a`!GQw9C&^4` zvQ=IXs^q6U%XG2(hq)Q$+-(QSGsT;B3Q2;y^+Ww@F#S*JTZ@m*TLPCmMb3+>Z6DWj z@cuToQBsG50cfI2dM+Wa6q*J{2_SK7I??&91ilGoFo!=u*ibd_=u`cpF6sIRIvAXW zEEC3XM~z_>-|ou^2a&&u`b}6Sh&AnntM0hje&afRaAqach)*Erd(Zb1-Wz4n_H$OF z%Pk_p)N%L~{?bR|<-^~#d-7E>O$PBxmWge>lR0zsGNOgwb;rbF^SYbOaj~bH!TX_g z@B=#IZr4oVD!}OBk(3gND_>1)FX9SLy{D&i+~a@G5ISISL6>vs``z zhxm4lpMJUuz9?60@L1k1nIzxQUb4hNc0o*mtK*esd^6FQf$|rJ6mv&NZ`-;l2OgEb zd_?&s7`aqua=)19;emJA=)6)!H$$@|I32k&Meh{sr*UsDhYs6kET7usRy zCN?rPDvg!dxJa2cDCDVNpv{A-rN#7!5hvjj3l5kCs4(}(^zUK3BG8o95tJQ=C1C2K z!Jm2*@|OOA+biZPN3z%(gK_=(#^BXW9jCY-ENb>P)%#7paPDdiqi#8FO|Nz)ih9^w zrI&w%!vL>>lAoBtN2n8+nI=)WW-@i%B>W;>gv&?aP4^mWf*K`9KwB^2xq1k#Eii#m z&1g#VYEu0)dthta;zyN2E#JBP_$!<0zL~qZOiG$UU~|-P&qkYp1gqA?GbcF>US z97!H`0n$syrVV!FcK%PE)a0m@#*7RxY+&DvAMIA*I`%Zl3pX!Ux{iKrMXR!lrY$;H zHtB^gP*+mOrTf>5$M+ZcC1I$!=n0K$U0338t1@>QIT8V)VDpnQQX4%Nehp=G11(Wv z*Rp!*R*{+upbY?z7b9)q{utUYArsI1e8O_J+NdxHRr#I(35@@mW+K}}kRmfZl zHt2Xz9#9myS@v>#i|>Bi?sOKJzuCDsJg$A|A&O^vkT33iDnD40@)*D&X2R4pxq0)( ze7nUAc<~ucyT=7Yo4=&uXX~+HGxrU%hrT-6nb*I8Z>t~>pZRyNmkD#hlaG2)0-r=m zAv0{MhF4vfonBS+mwPQLB;pNUoq1{TC1?xiMsQT*{ys%krMi92y4JN1c#$M^-biLw z@K7}tmVXE~7{oRk^tLjB5`^=X+x?{SpZgg#u807VJXp#vBDXQ+OLU$=scP*6Rg@(8 zrD3X9Xe<6F8+{p_D5;Egv5?WLgk8vvd@;e?<&E?!9kP4FxFKSGl6zft7!sW zws1?8x+TK>nI-zb2ntU#{L=0S@QCqhgMZj}KBVnaCi`oy`jt53sejuhn8k3m<|yl) z8@X*`7AJjyT*tvTCxER3iq(v1bQ-!EBn+@umo_pF?8D9>v%T*Boib}|?vvPkt_Pe_ zz}#|3ed6XU$Sx<&$KjJ^F*}J7X20BzSU+uZu*{+#w2kLUa`gZ$x0d02=syC4y}N60 za)>gWxx+CZ1$T>A=n{0D2Dq9?{e)cofDAftv)RERx>19}duT3Uc}+ETIr74p;}jD( zVBDNTDzJ${^^-L15{9n`7Hmb-zvuWu&R3Yshe=T44^%&SERRRmvzqnQvPN<-^*P1f zau-4)G=*WKa3)6v=|zaCiBI!5U2AWktoL(oKZ;~C>TL?>jgoSbr=N(WB<_cKu403! zoJbo$w2qa|#T`wJ-rQ^m18H?Q0e>4OE={sVy?>^4PMSaA8%ZFU7eTPHN~G+-`r7-} zOCK`^?|}Q(Vpy^lN43{+HW-UTU>|G35K0J2J=Kld{Sf&Yu+m!)XBoYF))9uuYB}Yc zoIpBCeC&U*9B1%2uN5nkkdIv!DAOtejeyN+_J{U^opsmKv0&;Fo)0_{)i9OBU=(F{ zOIlwLf@{RlrfJKI0j4=vR;+)My&R4nYJ?7uabg$&I|J+@5XlHPgN6LX#M&Y2CTqdx zyb0Z!2He~HbqdVhXzPkxjVg9y!wqU}@#jD9-TL>lgk2<9WE(MYHr)LS=>n*UOz+AD z0eO7Czs^h(xj~cFhjRbU6d6uPdbYA`yIboZ==R+M^j;Y#ld=0H+l)xyMbF!*$}j%Z zM`~`9wISijCy_--#i8xwQL5+JWC9utEiO)bXgb03dl4!k9JEKD?X{7lp738W7+RW2 zoFG-{-oLIP>KBzT5Rp;-j&`UaRF1rmbRiP_JD(xrE6&T$r@o$aceQ4kqjpg8bnacy z=@ZE5Yd1>#0;02fsRB40kcKE~3^{bIC?<0Z5s;0)VQ}~pBW)lg^HqWT*ja*E9}qWT63udJLhr;%g1U=aJS0{hdFy4E`tX z6khMp-Rjd}C;6OWX8gs!%6=!0pVLmkAnY02^1+kJ{H0|(>)$q5e2uSwqN_ShKXncx z%nw(+4Z}WI`_DSrJ&ig& zUfv6yGL24BnHUNMrh7t<9z(dT3ChZx)jeb_-SsL>rWD7rsT7E{9yqb(s1!I#jwgpb zlcY4d{q8(~2No4te}l>F5CeC5;?dveauPJTN5_-E*fzyQiQlA09Yt5(Bh1Bi*rAG5 z_LHm|!>v`^PEmm>Qe!wLmKZS46c!gf!&GpPv}Q{Ot1a+Z9rn0p&?ONa(9b7e8Cco`b!I z0!Q|Z2yspDUgvq!w2e|H&;uLBp|Vtk#pt(b;04_LvmD;zp#8|3es!m+`T3!#clm?dve)Y1k zDojz}vUNvbi;5f!9&DCwh+2Q1Z7)1L9}8{Ud(BzC>+Bfk%h*fQX1X`E8MPY|aHO># zquf7_A(URcW&VQVS^Tidae7B$G)Mx%?eR^`d>wV$fZ4c*Nnd_JE#-dC zz4*O_vd6{{9QrFf1nsRoXAIX!hJwQnqnd|o))ZWIP z3u5N7fri31sz>67-Sl&=`^ zL`d&N5lR7hRjVDlW3iU_TT+1i$t!M5H!(jsGk|lmx=ymdF4bVdE|3ItYT#Ew zW!=j|{6Y5JXW3 z+2k=qtZo(3Pn0@z7)$-}C@O1jj5qP}6k+w1T9dPkJ-*P>2?S8I>G6gY8)sb+mir_x zrEe6^R%h(w!*eVA00YS@(NJ9#Zk+_5S}F8kmbK}t1quUh z2awK%rk{-uqB)L!4HFC?f+tm?_vAh`dXbn3eD>z(rLFQz>!y9ki>6^F^R{a@35(hq zGTf&YjHw~ryy%ciq%=ce)C9w>zGU-o&y`bbaPR~G1s<}YjutjN=!pMfJ+ncAs zX6tj_aRH(cbVgY+C;$nq&^_&>)ps%+YU_hkZa^NaDPw&})VLbz0kCFjT1EYA?(3Dc zsm96MOapp>PDevqw7A}C_(L$suj{kLROrQ#-XC$N(2YaWypu1fnsd|`ebYT<7T*DD zH1W$`&qKGYJN4=JzS`575zQFU6cC;mi+fu~GpW z*@x@o!Aup((@y#O?@RR`MffR%-%)>)WM}^d>RerDLR#C_)B1=i$e58`sXm6KKnCE( z$kp)AM(1`#m&(a&{2Xj`HssCb!imUKJ76B8dL&sYF4x(fZ&~Z>9e+If*P0uk9!NlR zLf}HzXpuozXR&U8$OB4&#phJrgQ(l<=7038WxqW6_xEbCwx}uwxE%Y5kfr2b^N;&q z7GFIv=6ZI2Fchx07x1&MW0|H4+=i80$}9+bJ6%jnq@iqNtNdZ>-ZVWV!DaEMV;8K* zxWfWSuu$}L(rr)BL#RGlduRoz#Ree^N_%baD#sF8Yoo+(g`(NWtWiqWiZ8Z7$`y?? z8^o5yz^>iz5}*N)L|xE@U(#29e>-3rlj=~$o6D&NwrTc-H5)MYGL$$a8 zHMkExaKs%6LBpq`1_HwgAIl&ugZMc#d}wVGQDC1s^O&;gT<08uu{hy1PkPaVT`>YZ zAXctlFHF!>2%~8?=Q^!GnQ6dC?ZPqP2p26teWYw_8s0ysGlMwKLu))M)QFOc=gO+7 zwB)H0D`a}H^Qk+GBSNW%{M*Y}dG<5$ zS1c;w-}&S-I+3{m94uqatRs>c)l19mWbAI%sA=&Uq#8N29yIc_)g zbhyJCBZRNBSK;ib>LT;2q~!k0gt_r)(GP!jlaj0Z^fq9CO-ew35IkD-nu?vCtzze_ z2$L*pt*ELy^LyV^z4K9&I5r>cHFXf0dLE)!I*|DCA!qeY%B}+4Vb22@^;oToWSA z$NzRl3ad8a74yrCihJb-0aBz_6nqT@I68OXl03`_djuZ%?PBLcA3cN>pemu-KeeY= zacgCr7WyKsjWyf_s)*yyT2H~&VfPJb!EV*>76c;hM%#QCym)$5QuHFy?Q)qphOCd7lA*NIy89~~-QYQH5@V`5&n z1A;Q7Zdv?bSi?v=xXMOPm)1S=UJ`kM!i;6 z=GI~pLp}!~ws?+ZH=XatlMfy7B4wI0wpD9ufYmmlLjSPZil1`j+uk=Dc=^R*LGlA8 zDB=apv8i%r1uC-TWPO)HMks^}is1KMT~;3$ptmb$(up+W;2dfbbD)&-Z2uKTG3xwU z4pOiE1AsW}h-?MNbP8-c~FJGfM$6F=fmDUAgU4fU}GIm=x(*n*BkGpC#=iteL zF2)4y;U+48tx-I-sLmsUByN6#5nGfU&}1ZAMT?Jkdf$%QveQGO{8tf~4hK_a`^Nbu z|LO}ARiO4kX3Q68jnEvkl#ealdkZm|Gt)=Bk*o-9CEB@=4w5mhk)z(~I&NINgOn$T z-Ew>d+-Z`XCxJLU0F`(dRvr+9j4|gVgzx%JuZB=}sF!e0|E)$rwXeE5F(D^k$7tWJ zIUbL>f1mlwA|L$`$u=a}KvW20KTCg+{w+XRH-fjgW%Wup^f`&g9wd_g9 z;`UoM0m$zV8jen^LnCtq>oW|*`-{pUYrT<=!@TJejXbkLDj~bsc9X%p`1u?0xdg1u zN?<&>V`p--fRKlm*0%krTJjAkb&Q?M#qz{23Lj)fxPZqjBBtS|icGSC)H@0igtt}t z2&0_t8Fh5-_V4}^d?{d`5DwE%ja6Hs>-ANdnWd+oaiib z!wt900xlgCFB7T*QY0;}I=ugEAH806u|B*^?i=OL32k~j{rk<+Y^bF4tERlgX9UqV zw;BAW$ZhtO!?y-4caBr&`IhM#SP2JfKDl4br0HnXC%V#z8|q+%sJaLn<@pqqUxRv# z{(#G(!FM(jF$vx%48-wo5wHr4iSk0}N}dW0<1M0}ktfo+jGlSpn?eL59vsZoXK+%& zP)`E!FsSr>dkXGc83M9RM8uR_hgwknB%*262z0$}aw&T0!iPeD_Iiqhl#>93H<1km(cfVwHC3lbF< zHWI~Xup=I|&eceIqI3j)%K4x_`q(NnlEB8gUCBXWZh)}FTO}Px0~v8a0!j%iJ8O08 z-UrH5?zj`eIcnkQAf=r?1QO9CXK~xN<&k?x$l%hDNo27i*PHdig&WvGLDEuxyk&Wd zL@1#vsBc|2;>@5;FiMo?6~?!qBD!9=a1W<-fhamZLDn*<>nsvULO?g$U@(pD1ze;t zQN$|9%WfUtyBG6;q)fqNWM+l$EI=kaX=cPdFBl%k*ecV#;!DX; zW7=wRg;5b9?>J?zDq}SR{@ZMgCaqH-d*9yLRKfLga%U@i1IiA%Dd>RJYQZ>bTr%=Q zIz-lkz~sR(*k&s~Dmd$FI6&FK7s1ThTg5Sisb`mV>l5fjsdzP(Q66~?_h9uM`msKy z)ch|1CqUT0+NxLCz?336o@71mJd5?2c-##pju3;nrHO2p9MFFRn;cI6?z9DZ;P;-%61? z6R3Z91vVw1Cd1CQiv|pRFhGKa9d=G5UI-bO_+n-Bw)#uk{H}QIU(2Q#5A&pRPYtXSo$Fe zQTBsS4c(dD(H^iL4yreY;j8zslu}3IL~oFzy{=>PErcysRzCwi$jPtu(*eiXqi3p4 zgyvH`vU7}eiQnJt_fhvR=F}_@>?%LG9@BzrEO)VkN&A3;eEj znl!1Svs`cdh;kt!KBoMvmqaf$Mpc-R^E26H-}QcPTZV1^3n=Xc!y3e^g)4GT2(k!2>Zne-F7`RXOE_k9D*i7b013VjZhg*ByNe#d zd))lJoQM7I(GL3@g@M6MQ#$f}1^(9PGt9B1+%ty#*_K}D&|S#;aa3w(*O^O>U}p$0 zdHRl02@D+zEh#nEnl)YYTnE0SLAq3DI{miFBA#N?i$Yq8%1X^^so4|K)jwOB?~x!o zopjks^X}T}Q*)2c5CBdMh+MblUta&8u_xm9-BAJJHBF__vEFm zXnk%sqYt7=ur+M3aNsjf%VqQ_yMB$lI%PJ2)ozOewpsm#JsQ{mR?DTy=J5V|D4e$G zbA`>oriIy(sn*=H{Kebd9jzXRCApeM?g(Kri#j&`m3J#YJjKAu5(iTZ8yO(%&gqC1 zQDmo|2e9uY?wV3e02ICAe+kjyvqvhlUck6%_k?hDNkNi4Tg0I!(kc`Xj;Mf+=6?+u zrU*w%`;eqTF(JZ)=&0T}Iqd)epM0M0JT|b`yjh}5OaG~G|H2d2^{DNEI$`axQU*W9 zJ@|5%_+eW$V0K=qiTg)J#0!H#G?d9n{D-K?BVJW?#D}v6g@AvrW*<;eCSCj`-1ED* zvr3YBqypm;sk=AY)l7~%&+I^&{Gccc4*IG{DEMI)t$vEU#t<6kmkFl5F7!ZEl2E}* zG`=JHoPfOuY-$Hf)cM@FA4^a5!s7zGEnPbmOF~JA-Ijnibi5(%)aTS#Ir&RJ1BzeV z!rcQ6b1#8ML>HX$t80e81LO&}ydY){JFQOHtjljPRVhdlgVj?u4vPQE5 zh?x{=)wm_dJEi!Wls!=aON z4$zO_C6SE!f&EC`=9EJUtR`{iw(1?(-95$w1T2>y2;>?(C3lZeD}%2gBl%MiS=P7d z1In;rL#>#V@F&=N1STYrLR@Aw@*+rD)u#T^Ei8t=O%(Ks`wy2#yyTTH_8-Ov&_i9!GuLQQRs2=Ds-fWGBhniF=>& z5U>Jxa`AcugMy8`O1V*$e)tzL!bk<;28XC?}obgeVJk6d*)gdxV=hY13xOYQa1} zll7@8%Bs!;?Yv`k?|lLFggIFUt3@2&{AQ#9YM>H=2!>HD)j7$ipwVRAG z6$zYy$RxLF4mFg^92qnk5AVN-iU;2xeTJHrh{s<8yPx*}~yH5LG!|tziiv zc87s0q43bboq@Plxqkywx&-2li2LuU8BUZ!V1@efX=US}?iZDMd~aR-7i z_O-4%yi5d;gQQwaX4N30x7hd~2wHJ@@0W{7@&lKV;Ec!owVCKf-_*v_+0(A6mfwk* z&7`tU&m5K*gKih!#_ixfj~HluTMawAYv|2ce)6orHo(B`uDRdu=-HmB49EhK1%kvbYWIFvvVt!YUnl6DI2&Np5!fttb-4 z+thck@0XSD^(e4$FwS1d_{1HqE7`-Yc<*0631HLu3t%%!lQkv6ooCM^S+xBYGu{A> zBX?OnC~2kutj><6;Ei(E)(K4Rm5BQT{xu`n`RK>4PR3-j-^1z4S{&{zD}CLqz*#_v zXEYqugX@WNS$soV0cPfDstax2X|K<12#D7U`NZu%_{CTourvdp2I&%BV0g;^tTU}o zsR)@mTes=ZPBuquGdTpUDReR za93jC!ubAb7J57;@zLd|C4zpPa_x7cui)T_N2*q!*kUHZPEn514QygJ{CE|32A5&| z2Y0eLHps7TBH=|Nx=+PAqLm0e-^~?bj9ozFv_v-CVwQ+_UrL4*r+rzx4-Wm_>lf`t z%UAw!!2Jf+J?YM1ZpO4(1G0RckYO5j@4cx+V+hMTA4}ceA_Y;hZXU5 zas!2_-tngp%oub6VvCuh&JAa3X^w3P4w(v?dt521k$OT)_ry~6v&pHscku+96=O5s z$&yLt8xn=6mG2f2fyUejO_@&C=f3u{<$U}q`YTkO;p+A1@`momx0tD~)TAcd4yEW% zrab3t)q;XT@Ax19<+{OZBqQ^dTfCFYc_ZucLu69RpZPT6#+-d?G*4@-@uU(e=Hnqf z*LD$51IPD<@SkBKC&VA~x)c1PnRSU6C!%-vENq!OfP zPvP>H@xY{87(6QtxUG@#0Ead8cG&4?oj$KeZ>7QclWvVM15R+wqHr)EBv)Q1frWQ8 z4Q&FW)Fs3DRdAhh=Dgm3|lNzeZV~oy0drtBSVB`As&jcZq2GtyMHD zd48~-oMd{Tq|)7xdHFogz1W;p++GPUYZFexbmYv%KymON3PCriD|OKEs?GT5u1-&v zXsjfk0Qf(gef+8A0}We3o#gvMQu|f5n^$(;>*yo_Li}EJfUP1{NO~UqPvqxerj|p2 zlsgI_)0HmGb1wYvM2AX5oCi(92)wfND};?iKm|$?qy9&3 zi6298EQmZ^Gu3|kqmK*`>=>C)&1FhK5B%R7l~S2jAr?af@hVgKo2yH>C6&jZQr+;P zTOC8cswjxC)>UIED71#1P8E}d5*XEMjTkPVw?=@RML-R(zU?T`-(6)IS>-hb9SDT` zG5n9jDn@a#nP-7UY|Z~5BEux_xPui5em1F}75-#{IU@(Vl~`NBS0i?-D=%9N*dWyK zN^B^6Km2~41Oof=+nNg-muv(oQ0?Aw%rl&xW=zl>3s7N#~)ino6r>rb&XZb*dFfskJir)SKl+ujqG;Ufog zp39Ea$CC~b@^8quwBtwM?HQ*X9?IYJ>qG?r5n9z-xb`_AV4*aE7B)c^wpY%&WYhG= zEFPPqk5d=}W!c3b>H;=wTawFHU zEr5KgCPB7{aUO{W4@A;{nz8(|r#rI9dQ2I8!XWJNZ)G+h5t`rfgZjSuDs;&o44Oy&@& z@B<%)`-5VP6kTWkrA$n?{O5-iwx*HL`K7JZK0U9yZB{Qnw&YxHf=ep$doP4?-oHGDcI~_O>6t8P4=G+gWm-O#f)r^94$1>iEq@)hfdmvh^mz`~B zoEdK^BME2QozmeoxrgUYuMGFAi?PEM1q?y8;wZoLAy(=eI(%?wS5=zqpd%6nUfVnf zZYSp_`qQleeuYZW5pn|*ER@U&D~PQn#@jYA4qJ#twLrtG5CbI%Kv*|PK>_&b6dDJl zOgY4kd_8bX<({0c7(|%yb9{l;PP>+R9kq5&VCu^!Rv%C5@0DtAM)EQJhS( zfrGrW^%a!Jb;=;TW8u$5@dXofnr^Q6cBjsa4B46ikHkwZ?~JXh^rKahBsmfli*>~eh3|A9D_M~vm)6f0ORX;IL(3M# z&wd1ce%JqngSAsZ@)V{v_{)bFr}viS<;l?k>%yG!VLvO*vfslN(#*ggJn27-oK34kxd0aW!0>7Wu zB}{1_pvP>X^VO|%z0hR~R5O?YDi8S%i}Fy@tHlbv^=_lOF7r$_>BG!HLVd%l&%GRG!7~LI|2mRDWFXo-<o(PDqUAPw)OAQI~u7- z9*mdQODH3{rOYWB+m3Ot(8h*awV|=R=!}J;V>`5w@i@*nS5~E@g>28RTVLw7koNvw zD@G<1S&yc3Jvpg(HAtZHmLwBhBzIZUttJJ!3p)c*#Wv810ghx@@~Z8yp2^dt|H$T! z=Cfq-S4lt%O5YO(LEK+pUm$>GDu8Mb$OMzqSD&hF)ncWHdvrx6IxV?W#F4x99|9bl znfPlIla58;>7&8c6NewI3UKhocc`XIK$6Ql`Diqig!m zL^*jk!zl$rTyidfKst_LW5PI_I4({dh)OC&A?AD-i5e}Mo$_hH$i%FCpgDU*;L1~9p z;z;LntIU`(>7)gH+eQ1WtL@)D#i(@XE4~u8cjS=0Gz0ZZA95zd&(z1uW-`>Rzth6zhBT5W z4B&UX&_=z*eSDek<5%ra`w&BYziV7h>A?p83`|}09>M%kh_;Me#CRDnS;KWlX`qzc z6XQcpQuJ(+<>Ely)BzqgE*H7V4P&nq19Njn--1Yt;$Mfub2}ePal??;x1Ny-)!U|g zEdiWk6{MwGx$s)9UUdk~4}lOKwilLU0?)~a$<>$f{R_!|5t+3b57hypyORm|te@Le zNg$(7z(kmI32#A6EP9@m4~6<>R~o$x1LX~&3AeZKv>!ih?1yIUikrdPJ6|fNlKS?6 z6vRX;oE*r9<--DF$Rs+;RHRnB7o~YiqQS?5P3#VGq}Q{B%)t$jxAeS_JHue6D%vM-QQ}ZB^|UC{t=McC4yhUHbSR$ z_Ln1UTJlEhu1Y4bd~28^Wn+>J@!hYO(+Gq{aUlFcRJU^i5b6naXh?cEI;5Z&;>y{+ zSn}|JBGNjpl%( zu@1bdH)2=*NIzfdt|Y5d5sMol4ps-50$}E{!L3QV4Do2qiiRAkZkzYT^Bc619+^-} ztKq@}|1nhg$SA8FCpVoDkY*<2ODa?v(_)K2hg16_Rnd9bX${Tm2>LL}@iCru1Qw_^ z-4StWrIBt)DD;|?M)Iitd$JjlM;L}>uJjW@C1dWLJHU!Y%mGRjk=y7i-s-5AG_%9b zcx91RD8hkSA$ef>$)n3m?Eqii{=Mkr?)I~ORr^TtT9Av;-6r@4%6o01{>A?)II}A{ zTGmv;*%79_4^JylBf1#{Yq5=&dPqAE4$YoxjUGPhz24)MA21eWX#dd09M>1#A&c&8 z|Jc!9`#rSwvL~96l?&BSYTeMK4^8cLXEJ5OabI|g5;IF$7gk z$k-}{4otw5sBj2(OQQmK>X}_Qgg^WXTatRSx*3iKhxHfu&AsQ92;dELyPfPjc8cxN z8ymOvjPS7iz-qH2yG*+ftXzU@{1txbYX(Xr$|KgUm&-cNBckhNIGC=s3XO+))TNZ{ z(OQ*nzPsf9Sp7%}(+(Y779X{KAk6Oy(Nw;DON*H;lYu};%Aa&k3tEw(Bw#vG7aH^{ zfjNlPbHBDIg$slAe+~wf%TQZy?grMH;`Bx0R5(0oUD{!8hBhV&INIsVv;bhZQgXQL zx4T!&TGKXThM{Jo@RBz+{(E#NGcFj@MCs5b*JuZu2-b>X_M-RhMQ~h;OjRK!Nbtu$ z-ZM8(cknTn5tuL)F)6sc#mILjM!R@dQXZspR!x}r<8iP7no6}-u=i}$*EXWtDCNk= zPMqbiy9Uub3(VsJj)IS$*4=WXu#=dq&!AtD3z)pPdm-jLBME*yw(C8}+n$GG+l}c=Q6-h=5TEn&TovZ`zu!VM1KQK52mMLTyIJ5s;xyfkDI@G@vYMeQTIASK#UzybD zYMdhMW&e)%DG5G|OKfN6r&8>wxDN?7*j-#Wzvq-{)aXl^a66au*qU(TaE)4Qj0t$J5i!6F^=D*lebBSa~J?ye3@YQ|aAipkMbqM!*x;nst+hp^MXaPEl($ z-9=^0;i6nm(xNAhXJJUt6?pJ=@kcfB2G?nzIF^cb=m6ZVO-e&$aO{j%S&3@D##HjA zqNJtHxa>x3R8|JeGXNGm4J>-IKYWJmR2?AwN#k4XstSUfls=D{ z%;9Z)Yt~j=zhqyE(C?BR`Mp+c`60%+af1>|d&a}A@gpXkRuka$(xSGw!~U**|Kt-; zZQ$2*5#T|Egpp0HxMlt_GN~Fc*EvR6uPtBJ!h=@FH93o(xP3BSa!LInLkZ47JN}kU zA4moJZ&nN*oo{}Kd5b;|C0!vt9XWze*mr4QK@=ye`GJIJ>>3JP8FhYYo4Sdgd{`=? z^T@0S5&u`%n7LrnX`9*r6KI8-QBKZ$Nr=I7#oDbEo753#%h-nc&;q&5;~Ji(s{Q;+ zrk*NMo2d-#T8Jb=wwaBXi2e9G;)IW_9RoRubfC^=`w_HOXG%|DVgho)W_qJeqyaPD z_mW@QGKZ1@E6bx&3s%eAL;%YOoa`tlW7rjET4Lt#x>WZ8Y&kadaDP|xqtw0c*Sq|? z*evy8dr0$=TcR~^q%ydpPaP`KxQl|P1;82oa3cJosqBvBoutNJ&-hF!4)&JWJTFQb zEz&1XE>FdRl=|P+5J24AI*U?{@z()dl<_sClh*}i&pEYZ@|#9`iKskHv6z3aq%pny z;2)X0PaX{MTA)dtdsAW83UTyWL5IR=j5FN61!nPoSa+lpLJ{XVb$j|~;CII~7`}6+g>qvZ6IUrF_XP;yESz(YL>~cH|^>Fk~Yy-+)_nPZT9!nO+ z;`v~mhR;r^%XSa&c!wGvsi*H$L(G@^X3P>A>d0=B$_qaghy!1Dt|J3slvrkFySAew zYE1>+tavhE-b&3@>$+GIEZZ4+u0s=dbO21l5ZPl2`VS&d-;0m5o|cr_S``HoVJ3jc z&=0d&M#5w)GL8ENK%4f0LZRN)zl>`pWuDxCnimh>u4$cp%VP3C&pv_a^0b4Kai0JE z1}PK-iHk^27GO?<4H(!R*vt9Z%qi_lz$;G_FUZYHhoO36ew8#^Bt4190&Kjn<9bu! z6Fk#UE!x-YI`|w-(4Th;`LbS}4=8RVD_2%nPG!)Nw^rg}5{g2mLUX72_gI!R9l2ZC;*)oRpSX!*eP0wOveK3vW zF;Kh4G7|WEx{2_vo{1di@c#UCyXouEmu951yl6yaaez+dl`{*c*RxU{K+BU>_)7#} zWZ{6BCjVh%ek$v&TbASlve3F9LK@$x%Q|JGeytf)W;wlt> z8UzI4B7tt=>9tEMi?`%v@*CjHBnZ~4dL~r+KQ(qu2f9HDN->Dm2>+Ay6fp#xxdZ|5 zY};w1%-*@$@$X!39161HOac_2tfBTAP|4I8A>C7mb$a0T#EK^sdw>Q*BE)jZqgbg# zRDY&eYs7AZ5d|RHfj~4T{J)(F!Op1tBypcKm~aY#pvlQ zNqJ*#u@?mpjB2SJLefe)9Q}X90?H#kE${~WHJWH%W|FdbTdGhvTrfUFBVm^}&3-O2 z^1viz&exFwxH?u0OC^)=SdE5EjmXGc6eVx;_1*#aAD;R#d^BYHy4~^A%u{X>UYe!t zWB=`F0tMF#`s<47!9oj^H~GmqCF6)AJnLG+&0Ub3?sIf-Kmb*jaVe=1nNhr@71}pF zR@*dB0EF<^NV%N$h?=Ww=jJ;okXZ|-Mss}i-3KF=!Z{dHd;TM91H9K=^61s>iN(Sr zFj{{Ky-%I*8sdSl;XB^Hmfe~R-C6JKR#*Xjv7ecrJ!e-T95IdFJzvZ#Iby-dTRLYh zoTns=ixY?z_w0Cu9hjlPS*pudjgj+dI$f<#qAmZ!HtIo!Y?T5W3t8P8Cqj?-COo22 z-laCZZ)0FgSroLB-=b?A(+nvX`3Z3--r_@9S@h_KR$yISsi9K}JX?XBc5!GM zzFE8avd2+dOSa9{EUs22%_q4x3yyPO}`E_F7tKi_&3SNSz9uIs&-*p}5xFPxB=|y>J1T=E^FYbU*I30?rkd z7HT1avyqn3Sfrq6q%4m=geG8Nzx%%61WW)1<1i7RQS#OdAHHxlh%W@g_kNiHYcH8b z%QMptL*GzEnS>9g(tKgZuCM#L#GfCA7$r+|8|3VEk+2P8R1$6t(O`nEpcCV{Yg$h_ zDSLfyc`9g0$O?Uf>q;M2s-ibT(CO|_q`T?YE4V+Lc{oP@BrtPc`9OEx(FS8zlic~e zhpIQf7Y!5EsnoVA8~NC8HwL`I@deFcj(%HMw@sU_ig>-WdyaW#oz|;?%2>jG%h zCw`U!-IZ>87c+0%TZN(x(#2R%L9ETaM>xNjdr3J%mw+*ikHVyg5D+Uilvg7e&K z4L%v@-D0!KPPKXmPhjD>+v-_N!Pj$hQK$V-zsZv*cD^G_$#d@Q#ym?1>O}6=tW7KL zl{)pb@Fi>o%95Fxa*IS1>&U4Y7l@zxruILG93fb&;7sG>Yd#C$2=RTm>Q|gDWZqeU zWG?LgsB)K=IyFenS@om2ax|FOBL=5AK(ci%I-0q!qt;@`;wHE(^|>Z{;$m)JoUFH} z;Dq*!4YqW=%v?YiD(u$iWOJ%N8&c~RfyOJ(I~WkmO1QvHY=U(}+yp!JGn9ezk|$Xd zuHf00>w!{WN3eLmxz?_K=7QoIhLF9K(5dM%vk`@!fSAd*cdbuB)70*dnmh`no|tgS z?rl%Y#d8hu!492i=b9FjQgA5akM2|C22QuYD`+`w1gt{xgx)Qu%2zbmc<}MG*i!$p( z(oEBz*qE5F&GoB>L5ySApAL+A+!eU5ldR}HQ_$bqqXKWU1eZc4h}0J5`Z*yz1Uas1 zK&ulTh$T2rK0p;4WI8)iRughg*MX|rga!E-vA8k-qHprKX74eG8rn`{I+r1eH<5BG zIt&{hv{C5Z^;g(ZA3^HuS9*uI?Sy@->|)l5(*5QxogT41>6VbHDvu9J8v;gttpc4` z49JaAj4~H`)?>O1(X&V%{V1!kL_A^oZ$R&MrgO;? zyE<|fR@xFb<)XqmQTZm#0SzSf0Y`7zopn@ZC>NB@{U;>?iD)Gt5ZCv{*nu*w)!M}+ zo^jLw4GxKe*;5FwdkhF_4x6Dx1hda2bWbnv$R2X9XE3i6uTvSzxbsxhrFCrHqR z;IFcHXt%fy4`I~C%*t~*ccd)S9WL{wE&7Z&Sv%wUu|T0c6E2-QeYn|-05|m}b18J$ zALjor_nvS~P`-#Dm^J8o+-ZW=o|g5&JPVzU<5^ddR_=!y+7v~thX&!L?Qy|B+T?0- zDqR-<^_-=&zuh@$?3~lbykx+!Oq`8cXZbR@_%*b{;_h15k_O`^S2Iq1d4PUq4w3}J zHb_^vHs8z%bnCU0R73Pi1mw?m11XpZ8?3?XsbA@{j39an8 z6o*YVeDy}Uv$|B<-?+M=`v6{vH8Mi5Sm zXo<6c&&v(OWYAN#4gD#ysIf)!ud-cA#zwf*PuoEX^EAJVB#M&?|( zlrCp9{kKkJjOt}5-8-7C0Rw#d>*}SuRrtr+i5m5sB)yROLqm%8BqqStTxwm3=1@@# z#4BJHvl(28xnO)^!lFc}6>#>tt>BN=bHtz(1~QhniTpELj?a9Dy~P+3x1d%R83kw&&SQP z!?}!~#}qaiw1sst1w~0+Or}scIuen;JvNIRWdeF=j(hjG0TkhAz=IcaomtENUwCD2%BI+fb0rkJ2s z#r}5|-d@@xA_P`ik&Hf`D)V1@jQ z?xbo-9&$c1LHA}R>8G?3ioG!a)qVcm8cw`RV3X@Xmq%P=L?0D|EDs^4h4iZ06DJ(z zUJtsP+`6gJ!^Vt^fLWGeeI&_DGv;AS4qaIvOH&?2+9@{M5Mo6(`Ug6=O=PArpa!cw zppc_7Phb7okXx`D?pY{ye%b548_t;rrdd4QuJ{%Xllor1_-JJDF8)-|P z?}r+UX#KGi%}FPO+%0m3W_)8KsWfK<$!C|dYtET+t#0*-Xv;KyxlP>A#Mvw2vMFhS zhHGJn&^R9^Uhm;QOSCN@$&kH0bNK9eCHWOu;j;iRObu5y!bhCQ|AO8%tp4}sCI!E_xaJ$;+lXp@-06es@OnAw<@NMFMb4-aOX^nB73H8b-i%~NbQBpf%6Vu>h zL75^m-$MUBcrPbLT*L`(-iQV))7=i2V>kS8P_aybqi;x7(Em)Gn!Mg{Gq3{BQN2ey zzZZfqbxbuXmv$_%e_Lo!?#-@9@b=Nn3?a{XOAIB7ShwoAPV4^2f8)vu?gEklojMAt z{4+AQ?F*IaJ%IG$L7zmsw{t!8YM6xv#?gU72($i^p%yD0graAEXwgfjySo*C?m}Z` zED`ESCb{xU_h`%h0lx!45I0H42BF$K20as%`uSFz~rXj9dGV}(}d z!mYx=TY_<*2%+x~lY}^`r_UkkAt`)~*%FK1w|?PS#iw|LG#Kqk5CRAc5-|{;;RwWgXN5Fr*(Y$?<7>T#Y6i2K>1#vP*IH=u@f(g^^AdCEz7cV|gS0ekUDm#0p`+h6gfOX1S#cDulKY2 zdj?Q?-IYx7c^~0$v}WJLJmvSls!VG3*0_mU%+2i9g`NYek;#eJx(!`GK?8}xB{#LnO=yisN`YZ*A`(l zE5jBv!pm6I-Ai6zxsq|55W$&=;?`QKlzdB7H{=SV!{hvkVd9%&A)HpP*F(}@d=O%A zZ!Blz1po_Zcn(e-PPi|Iz2=k!UaVsPVoVQoWOE52l28NHi!q<{s7O849pcb zE{9R&qdd~nCsvMGK?f0V;hDi6)a}bt05HMm3b%-tcrNxKmL7_RxR2@<1qcUx2Sws; z-AAO>1`T*O7>vFHXe@?!S}-_}dKuN@ITK#{#P<_$4A9)Dpr@vy87@9p6}DDFM>yzE zswWRDc?)@Nqq`jcm|}}K^F{N>rwL-?aChqmrD;}hdYr6jmmOiNENb>5St&`}_8RTI zi4BC3|70~pn*YB46T_xM5#%Dr*AEHU9K|sjTZMycX}{oWBaG=r1skl!K`>7FzrfuU zWX%$r7o0ZCJmhYE&2w5~n+$@L>*}P~&|Mv*J^a4m@w5X7T=eT{=Z{!+Aa&1+Tr3pt6O@A#VMJ ze$Ox36fLF!q38aBku3U3fE~y1BHes$N{e*PdnC~J$zX3Q!7G*;miywnL$epQ)rquk2R&xucqL94z4y)Ea5PQyZ&n2KA>wR2#>Hj#{5 zNMVR3_Hg~dB)xbs&r>XRKG{^G*tN*yhIyuT#{hWiZSUJSqeaCNDy=2Lh2xG4pMi=) zCj(`m!WW(R=1v;15J_3Bk6mKRXi=>0JAZ98+a|GRL3H|)OR0;kOtw@0>67fqi)Bag zfD}wI(Dr>zJOgtF>Vhp0@Cf79*lh;I%5`;u$!632tBdqjas%*`t=-*~G4_4R*&y>7 zL@ai(DuB^OI?lvRE2*Iy%iFUal*-;eR9vA12}krwv@G8fYF3xdK&HjX!7Opg@_&it zDOag1v{Z#Kd*2pjU2BaUFl)guA!%W=G?A&h%@=h2QTV#GbV>Y(7IF7L>8(S{u8-}m z)c;dwF}-t?0iARMB?WH7h2v!7Co zf((1|yFCUEq-|PoTYagwoKH8K#hz&B+t1vdLnhL{!KtU%)LbzrS@k07KyROLx_+t5 zqRw21~qlJT_{IUufM=yxSCq+Ew$Zs%@25-xuZjCJ0pG`#49zD{+M+ z@&U53ofyE|ip%|rH8bsK7`N@!I>ZKD14I113j~0sA(#>+s313Y(+@Ohq}tAHCIs6B z1yil7mYL;&7ZiR&cQxa|GJZA1fJP|t9^9WoZvW8TjU*y?{2w{CWNrAqZa z2h~v)W>Pk*((~VMLHZ#>t$^|+Fy2vv*ayVhnDff`cyG-e10@>GvnMf%@ZL6j3T>Llb>O}+ zS@l#NPKGP=ON?(PD#Gs!Dgj!u%Q?1k%QS*P&DHnR%D~;iL3-MJb{DvRSq-<5`qGJC z4f4Yr>oHn(V2X zhNB?Ju!rB~oL(G3G_H9zp?YXh*)holzFm~Ew3hujP-b2?JFrEqER+dsL@vN?l^RUL zWYTc{X$QLiSi9z(XIA6S1}ED|17Gb4guylXbu$^XMphE5A|! z;fX$S^)5)Av*O74{?VccNDFG1!&Tg%d{+{km}hMj7vv}x!TT7xk*#7t`xB;lJ@Nv| z(L|{Eslf>gPxPck7wkDk0O{az(I9~s?f1m2&~w8}*cA2Y_-noUb5k`0D%~kU36oFg z&0#vq(~~10L}6z#k((TKqD#~~xF5QU43N5ThKX?zBDi@EcH_9AY95k0b!24J+r;|V zFk`ZX6+mt9-d!ROlgWRi)s9aZ_$I${Z}#)6PXvpbI_^u$f#T{y@tj8J7{5k|Q2n)|81mjQ)N=!dk&&=FYafcFuM->X@|Z7eqkUKZ z_a>zsJ6MZFRB9a1z>P1vgaSZL33Y7HlS~Jr=X9rLLNRx6j_zD&+kBPHng(21Mvlz1K!;<*s3tJ&zG=l8r`B%g9;IzX81y=I+aXO`1## zFfx++XramJU`c?$#M$yv;~xyEbtMfS_y48V67L^c9wk74O?3y_=r;i1h z5PEMA`?2LhBydDEN|Xs)ZeD*YGA%ElwY}9i9AY2s+~1bA*4hQdA>voz*b$a zAh(c4ij!swV1hI&*LKZQ;pz!|qDPuG;?j#sD-2_Qv^dX8iNm z0{xApx~HDEM%bmZ6XK7bE)2&HB-346`x@Vu)}`3OhHvN2wIH2yyrEd>4gfR8rV*w9 zkNrCURc7kclhb%HO=7U1rzhYi27;8ad-LQswfX9NJ9Fplsf9Efh{%$YgX6ta>#cE- z8z;1=Nc@%)#tirnLRX!nl?bL(uOZk=10zuBk9AqL) zFl1a7NSCw*92T@?QW^6*AkgG&-?mQJK+@MTj<|0TwN|sx_7~MWBke@=gXTF}3 zwgoV!&4tzP=4c;Aoh7Y77S(f`0}wrqy@ z!!v48sE~Jk;0VSsS!3I`iJOQH^%cn5_v&pK*SKa^kDpf9R}_)m3$g3eF%Qq+hf&|h zr9U3Y@-Ac&Qo^+M751k)e8u1bZ63_5oSJyeUhe?5#S_znnnQiwfgO~To+uJ@%=Y+O zVNI}*wO3}(*Jjr3BoAr}d3Mv+{v9igPv6d}+U#ZoT(3egDFTKs4Csn)YNHagEA*jN zT}}q@Cqe_zkhl8Aeg;|OmrDnpN|5HN@v2Wb`w{Y36dT6VVv1V*)g8$Bkt47-Ct)Rr zdT18yb{0nC! zU4z zF2JD=b?7(8?Vfs_utOoFzoVyl33ZuWG$B2f83|G;1?5~_Lq_u>Fk`Q{3O7!s4n|=z zF59ULXk8vij%x;2%C5WyQ%Z7mdN(_-VYuEXJ;x=#LKTtL+!wMMac6w0GM9$&IN8)j zSHVI5qw>x}V=z;PYWEO?jV;obtEa~tgmIX}9mmmH2noj^3#c-@cV+b&AO%((L#b%{ z{6LBu6vsCdBlm1ZKkGR*7@%*D&^kqt@UTj*QeNr&goNG-1n2MeI7^c zh0ROfhY9e|BPWw1&2Ufq zqk%Ag2K84m{m;IRYQ$JT(aSE>&`+B<1=>(&^aM}mWszQUVEt;L?in15TE}Oh453sK zJ{i^38^&7N@?@jcngQeBFm2BB*MDxVG!2eJ|8mO$W>aDMZ z^`4a5<(^*mg5uO7CV|Je-4Pi?p~Zk>0RZuT;+}1=WTI%31l=t+YfjV(_ABAlM1Ru# z%!h{ksDUX@;#VKg1EmZ5p{pO*<@ZslQwv$48l(@*)wV}71h&01oYNR86ws88XY4FX zOnirzLGLTjq`3cX=K$HM<{tJVK7)Ljuf&~igIO}4|1F%X3E2HR3q--|`u~kfgIvbT zrD}{9_6=cl>6H|+qDOroFl2Y7Zl&oj4Mg6<_#L{K>qqYzGl2IqSmNjD(n|d1Ha>g! z*2X*`F@9)JvIAq*-XFv`U^mmO6n*5;ItaIUNa!5|c|DknTw z6~V?+CFqE+R0de&+h2zN%9%W5bP&9sYS(L0(VjrEo}Kw!?#lSI>0 zN%YJ*P$gDLNqlnW&MY%0ct}~1*b}cpVng+J2zKQ>c(+2HvTroTo$yIoUIustuSK1& z7U@1Ox`6=QsuRkO@VyE!5PDqLI2PUcNilxy`AOW4He#z3x@hbIsOReXyrh%_A5+YT z#{@X=HLOiWD=USG!>(n2Yf1->i6zk(6npR=x@kV>H(Q1EaIKM6IdzPx5*xz}t@)+1 zgHO|6HF><*Lq1()hYRqX9|sEA)dHJMMl`d&+>PE)Mk}^-tNup)ac(T?zrrFQraV!m zL)-AP3ilSXWkD1jp^-=W`o~GP!=|1z5Ek}oV0{;8{@)?1CC-*&R1}f#)Bck8Y+Y8eUM~)Oktsf_>P%~e z-XYqaQ7`=Us)Iac@Uk7-SrTvXY@4?5TyUO90bDYD zWUc3sdh>{OUKeQJKSTA~OZD|ExC<<4rceFxPq0l&h?^P&T)00an#f_@mB4WSQB# z&l@r#Vy~Spi_?6Z-G={FwqVJu8we`JVd_+5;CjW}_|8!^N3g;t9eeuAz$Atq){ShKJrOa>AW-B@m&ZGGF>Zo;?3yue)`PaWI*zQaA=B`N9s20_v4Po zVgR&Nu!zG*V=a#AEfcfFU&VuWar**#s7tVK+|5Lu2(X7KGU$<83*UOS(6TF+vyA8R z-YV(N>&xup@b?A`B3ndpPOd$S=)2_AynsTqfj%NB?gqhYYD(nSV+Xr#oy&Bg5!bO6 z-y@*$bD0ifRj4u)&4d0Jvol1nMx@?Ashfcs&dh_gGayfY^I-|eD~HP@ zb8+ASxsuDAd@fNZq(Dsc-!P*eCx4kd6E*68s%1&1@vmU^C~Y{%aH;_k!dlaDAL#}A zz@g4a5JLJNa=I2(bWI4uJ8tW&kjvIbX$@V5p=Kn3qS9F-UA~o_*U6;E|28b_L5b_liVosk{fVX6v4IDJPhfd}@NE;&3M2_vKk zsI}s!6{3J8O{en_d|g>OP7qFr7z#A64W9E^b@2do0%XtmdlE3$WjCFA)V&d!4-+5w zJ3QVwn~7+HKkwiQtwl1^9cf0FdlpNQPEtZLNj@E1=XFTR+2n72pLw293bIIts$+yF zV?j4#Hdq5s^;P`-G6a?I`g;SGFG2qAtxAdQAtSmfxrt!(S)tetg!P`^sfD_*srE}^ z4v4eg0@ixH5hCliD*{j9b!2Am0l<%R(1nxL@(;LG`SvdSt_JX2cQ2_Oh?|%f z`({jiXU^OwVRS02#Yu4fCNaqE-}rt^<*lu9J}e!{cTKwX=@$GYEmB~O^4s0ED#M1x z*^0@pv0bf)C(dpmG>+*sm!9phY{@x8oXGVztSs&T1Dg%6@W}5&qF9Q2j*Cq<0uMmq zU{Jmsx(seMpEebpC-*8q7vQj!)cKLcmeDiD2lGy?m7=HOJDirwt-+Uh>sZzCw(9+q zM)YU*|0>peT+YFej(Dhu9o_7zBXcL0!I>KERl;8b3>X*x;srTD)$F39NH~ovr~?># zdDx0UoleU`M-&9X1!nmtm^R4{-l#E>ci?>Sd;L^EOoXV8C-Jh+Gb1kZ&PKi?ti7_3 zOl)YSGdStX7sgf`{}Az8h{#6HAq%ZSr^)ap2}Ql{mYWVOVeDe6)s&F=OJ10rQ{Wg$Q7-& zk=5V6EuE0X#XX4>dWq+IxkHp%n*%*7UT_LF=S63Puu%~+uu|ex zUr3Af_xU{tw2PF%4?I4^ll0V#ml1RnP<(FOx$jYsV^mF*wGxcfMJB`& zFSWBy59bbDK%AuCe^wGY|Fm?tZYl-KI(&oWviYB)UhgyxY{wKezAokAjs%N9=}iK? zF_0Ga2k>8)YHv$We@KDTudd$slTQ!k;GXRIS_a{SI?N}1{j# zkiDuKFQT1@Of~DwPBCZ^g6);^2AWT{C7LvX^7w$;eh1jyWVA-I-gxU_KC=4?i%vV{ zg->txx*cvQFmY;VlZhW&5fP7m&r-AUIDI$3HqVMR^t4))MnBD(M%azZRURWRF!OcR z!V`a3IaaC#R7X{5E=v2gfUdz@1hc-o8`bLk$K>9uPiPz`o2NV_e@eG)bVl!lA&B%D zQ33_1%|hbapyt&_jXvjd)_sLYY9SUFLAsPlIjmB;E2dy}``FI;dFy7M(EaQ*y}%4^N=IypY*!m0M3DhEMqf+#BklV4Hl(7o)p2g^`$DBu&Fg1`M*o5AV zFoTsw#h-(l&ITqcWaP75Y$C3VR1ep*k!7l$2U!&V4DCGd@)w|v$1-=|v-KXg(u(+kO5GHmAI{pOc*o>q#j@*b(Drkl;aIp!XJDg)8o11xc$HNEjR zYqS@ARq)SqB;>1tIr_I4pAYF^kvn$y|= zyG*a1J#WyJSW1jO3Kq<@*BaiR?d>FtKQzAppz^*@En%S$J-Z2(f@DTh0dQN3x}6AO zMLsE%DlrRVt~DOBMQ>u)<^)ipYAGgTWyO&symE#`EAc1%j&~cmFC}h16dgm>Eae~l ze&^jpm+QfA>#c2f@_~Op>$LS@AInrW<4Yse*P5XOKun{=ZgzDDsum2doy~Pzc=}my_dg%N#eo#i7ilrFUApZH>U)XKl&8F%Ga6OxV1^unP(16(CX=N^w^fGUzYtL;; zhq{Au*#Agv`utkk!tXRJ8vonCu{5jWklQ0XTpyv6wLU*~=zMj0hdB9evjXMTCw^4I zGo;%Dm8lh6f5C_oy_q6g;|sY8PAazGI#Mkqbv5a$I~u_qz&4S3C_=P9*0f)D+z!h9 zg>J4@I`ohbRDp7p*u7=T%yw4v&5UoUp*%Huqx zEVEWJWKle}9*8K$;ml1fbe7XeSbu2LRGZiNnLvN!i$J*UQY58oQ;KCQbY7y%Y_G9; zu3^K$Xd$<5};KN{KSen_+ho|we$v6?-)xAVk?H=*KHMS0&QcmwT}&%d%o zdr9IRSDFYMFc9yJ+HdoYm?-+RwGo@*#KKn?4pG#}=nKJUuP$Pcx1HF1c?Lr!jb ziZ`E$iHESnDPW9^91G>MazN`}rU4$Z{SX(gCluq-;|kB6QyF1QIu3^lyx8^8%a)uO z?#@h588=oig??Y+I+=|-gu9j`kVosWolPQn@B3R=euPuG8CApJtBM8t>+~^gbcI>w zCvjhD?2o}R!?nJ(ajtb#^R9?Xk|_tm{!eY>E_~Kvh)G()<-=EV(-Wb=53440d$SA- zZEWsJyWYG@{THq`BXrZUxJ_91v4Ry6!)+AuXbTKt69v9qs;@B?J(j)B?=yFi{@Ds% zk0gL(g6TVr3H(fZ>IG5}KNrr43e~UopKU9{mY<6hGinYx@MLN6N6EFc3mhS%PkN1r z9Q6AdfpLr1JFI0aAON#^lB5J2AqI34-!*M#$&P6`qSoo;N{&eZQVYno`jIiptgpL% z8*>TM4S5%n^XgR7sG|ZGh4}y@-0LMYlTG9$R&;VmhR(Kk6s{k2(mwOVgD0{XSn_jZ zzkl5=4oFg`&W5z;#`4R9QSe1@GD>@dO<{KA&>Cudeb9b~j?#b0vT;q!KE+U4$2^`* zi)sAn&f4vou~#`?M<8nQNNE=|JGG`Rz6Ir5!c7NJ=`5SHa*kKS8emwrT;@Y9A5Iok z=fVo>;g8~c$K)P@g{0pO*+UN*-H2Jjam%`6yY_>i;#+LRlq=ZOqYF;&*Kkgb$A2H1 z<9@xSe@6f&#cLMtG&k+6vqZG5&@uMf^>Bt?`~ICihX%jBx3>eR<@XBui&O{tCuq&Vf={IWd|Gp2`S8&w}+5yBkj!L><-g~lFuh~Au0R>}7kJ(Mf zWgwXwzlRR&)%~=ZDL}Q*?P8{!dB(_VWBk$O4sR=4m_l6L1GL;nv_MrTl@kcO=yN&U z{%g&JYqH*-R#gxeTr4dN@U$MzhK)ZZN4J*a%yo{xfP(>YxMe5W5$uJns$lW>=ggx@eWiyMj2!uUOA8D${3@ZlF)!8|QTw9G8cvQ1)x5xs^b zm0Ny!Ky?)$BQ?9q7}qKMnPV4hj?u``0{WW@wLpm<-9POA-jhKiaT!%V=84c;_X?7C z%2}@@kkT$G>N_QNQiCMlU_y9NPNx9n)V@xD(yV$-eGdqed5^r+VpL&DHcz=~lz5RL z8QS-^-FyRt@eNhj*NpWNg`@%*Mg`*a0el9_HWaYAp|-c<5bA74qA2DqZ^TkZABO`jIb(;OF(i(-f0JoZdWz86+Mw1kmwgbBdj?tZc2s1EIA-${kw{rdh~Ipi_8g83R2b z3GPc;6zuBKvsQDaY@LnN@9LLgzDb?ZN?mcD@Eox;1P2w-M<9Md+xz33)gukiMJA1v z%~*U<{;tS(^Rb;WhBV8Lq4tas>f#ZEVJisWtPQ6la0W~Yu9VHz+Rpgs@T8$ODj{Bd3;e`QJyD*F;t)Y%}f4&n>Z>As724MjTR7$4Qs4IGYCJtt>eFGHO1 zpKOtn0gYq#>SvFomkT5~EF9chgiv9@+}tB2(a89*Ufh_2bZ5m`W@pHo1JGmW)xp8j zy043W^}q#$;(V3m7)Zm4l$#=a31~U6kjh2qk&`80NF-$scan4N5nlN#0C2BV+~i z#fF@DmW7uBrEGK4XGy~~i&Tth#>OO>moXYPWNiMjU*&I2DdB+BS3kxkrq3bzm3anz z8qYH;!^uj=Q3`)}%VXo33*^N>Qmy?EbHb}T#2V(izpuI@!bizmLVNQPV7_-EZ5O0iw-G=03~&ZFvj zIX7H4_9H+C8RLcJvIP7;E4sOVIhrg85i9id0fn2h>P7!Q;ds}{l0k*g!p5Wni0j8Sa? zj3*FE6(O@h_2N6Sc!q+cTB0e#z*q)e!B+{DdZ!;_9<_IkH(vl2MSH*p)FcKMaCgEB?Pel4FlLUO&$q z`qZZ_9X_Z`KCyeOYD%Gm$cow#Dqtm%%FP3nW?df zZU*cJvAPhbucv;B`R*>k-i|rfWe`Q`o|Cj)k4Qf$_yK_d?DCOy*vp3;SGvd6ysw%& zjBReQ{SJ=eiOni!CW5)KpBPKn z-q7FnzR4Y3I+9dzT=q&XFiq)IfF~p1dnep)GQC(+WGj3!oyC-7Q}qLKssM)<*wD?Kz$twTkrU+Zu@hiJwl{Tpu)cN#S)&k&g|?e*jXa2Wdv zOW=xVaI8f)I90N}E{Gu-t3#k1wrpz1{Tunt3&VY&HThPEBwHu30+HonfDhiI-ua~a z50^zo#**Ti8~LFVB+LUNj=SJHlV)bpCOqFQv}jV{w}s6B!7Ga`5APELJu>zp?gBU5 zij8qr;-4JnRqE&b=Ah}2IG>{-c40sXTe zIXv6cSzlrz9GvWd88^ts$H@d=o1nM&UX+P^F^{GH|A={8O?F!2vuRCh^ZMu1y{-&5 zGEbqqP7qy(dh$>~Lo5+4Q2@Gr!srFf9X);*c_<@t|lhjpo@5&Od9<>85P7FZZ62t`C z)xMRzZ>oR4gMSKmwU?DV6;D?uQWsvy8bhklL~|{cN{25ann6eb)Hue%hDj0_G9l~l zXm5an6Y6FR3}uFR?+d39U~q(s zg*{o-2EdraZ@=>z&uX&*-ry!h9ou%6l^wZWfFTm9+%O7r`;qXpZAGqFBEf)380p{3 zTvkw|KsMty@aF9Pp}J|5DO=;3I<7WSnZ`;3ro|w0{|~WZM*0Ksi{8Zt+DEo~1Po7a zXd^wADoxcJk)DKR5~fYfWC7tu>7CqZ3$qDuj_d8(q4a&c(;tEO;r zyhceTbVI5S-4!=>v+_cI-wWVR)J$Uv3pg;=RM07k=;%4f&pN>jEf=nz9!(5T|F7Eu z71i=pMHX=p=^ebn3&$vgS4XJO*DLf3eI0GO>D?&@gxdj)*mWesUgFf^EB? zGMbgXjW6YMpfRESe6CjDN%B?$;2cXpm^mH+u^{@kR0 zb*$R?HGu^y5yZO#RRzMgjvB5*7R>zPu(mmL?+R7|zE$Yk4btNxn7Sm- zFO*P!PnVx2#DFb?3~!n57kp-hEx(}+oG_%yE*RP+o8ho=`&~^&{=IUFGiMWWERw}r1#z7VqKP% z;hxSxhtI*)Up;c>@geT{9Qkx*GO>m1r05q4_K!I|x=Sm5bE@OZ=iiPEN74Vx8$DZ@ z7g4k?+dUMOnrTx|y)0Zedml%(xIc{Ops&Gb7I>guky_9c+e@7t$?9CWxO$X?I)vQ7 zZP)R6q(((-WlyLX_P+&ZTVq0YQ)7naP8XIn#oY; z+4~c4zmi^~;gbF`LpUX2p57Bh*aBqG^+&jPW z|ApE5KsY-{)lO9kohLZ~k6nj~tac1|N4D(@=m) zS1*@_$)%f)df|j{9W{o|t_~eSYZi(j4t)3L>%aejn#~~|2gWq4!nP3t(Sqh$#^no7 z9SnXJ5*6+ZFaQ&rIDnsW_C{W2tGRomZ$}MK?dlOdJE4ew{Z6nt_Il0TnLdm#Fpg3Nf9gVH>eR@~o5z#TNp7AS6i zkjhQexL!PBbLfe(H9zkSf$<^}M?JPF%eFvvN_zcnd4 z=_P5jg>N20|3i>8g7w~!uQQS<(<`_wRNDljFs*`mN;5b+#p|3^8y4B6Ab*hFuV+EM* ve3Tzf5s$zYw7!5=Y9?_yvA2naJmD0^F#5?A2^!X3r56FiY>qSl00000qI7_B literal 0 HcmV?d00001 diff --git a/src/img/advantages/girlT.webp b/src/img/advantages/girlT.webp new file mode 100644 index 0000000000000000000000000000000000000000..13f958bd919e6b6eb868bd746d08c07704c15267 GIT binary patch literal 24486 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 VU%Ad;#1>Q1lhE7!?!d4B0037lR8s%| literal 0 HcmV?d00001 diff --git a/src/img/advantages/girlT@2x.webp b/src/img/advantages/girlT@2x.webp new file mode 100644 index 0000000000000000000000000000000000000000..6b684a0b85719c172c3619105dfec1ba3391d9fe GIT binary patch literal 79168 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 Date: Wed, 27 Nov 2024 18:58:31 +0200 Subject: [PATCH 050/185] add prop for AddWaterBtn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Передав пропс variant="alt" для компонента AddWaterBtn --- src/components/ChooseDate/ChooseDate.module.css | 11 +++++++++-- src/components/DailyInfo/DailyInfo.jsx | 6 ++++-- src/components/DailyInfo/DailyInfo.module.css | 6 +++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/components/ChooseDate/ChooseDate.module.css b/src/components/ChooseDate/ChooseDate.module.css index bb6cdcc..863c6e8 100644 --- a/src/components/ChooseDate/ChooseDate.module.css +++ b/src/components/ChooseDate/ChooseDate.module.css @@ -1,12 +1,19 @@ /*style*/ .day-text { font-family: Poppins; - font-size: 28px; + font-size: 20px; + line-height: 24px; font-weight: 700; - line-height: 32px; letter-spacing: -0.01em; text-align: left; text-underline-position: from-font; text-decoration-skip-ink: none; color: var(--background-primary-dark); } + +@media only screen and (min-width: 768px) { + .day-text { + font-size: 28px; + line-height: 32px; + } +} diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx index ac6ffef..dc577e0 100644 --- a/src/components/DailyInfo/DailyInfo.jsx +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -24,8 +24,10 @@ const DailyInfo = ({ date }) => { return (
    - - +
    + + +
    ); diff --git a/src/components/DailyInfo/DailyInfo.module.css b/src/components/DailyInfo/DailyInfo.module.css index 0b6e30d..bde2ecd 100644 --- a/src/components/DailyInfo/DailyInfo.module.css +++ b/src/components/DailyInfo/DailyInfo.module.css @@ -1,5 +1,9 @@ /*style*/ .daily-info-container { - margin: 0 32px; + /* border: 1px solid red; */ +} +.date-and-button-container { + display: flex; + justify-content: space-between; /* border: 1px solid red; */ } From 7bd9d463cfab1b60bb603d6c1a8c101efb4c8974 Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Wed, 27 Nov 2024 20:06:03 +0200 Subject: [PATCH 051/185] succesfully register a user --- src/components/SignUpForm/SignUpForm.jsx | 51 ++++++++++++++++-------- src/redux/auth/operations.js | 22 +++++++++- src/redux/auth/slice.js | 18 ++++++++- 3 files changed, 72 insertions(+), 19 deletions(-) diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index 7af7efb..af4ba0c 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -3,13 +3,22 @@ import css from "./SignUpForm.module.css"; import * as Yup from "yup"; import clsx from "clsx"; import { useState } from "react"; +import { useDispatch } from "react-redux"; +import { apiRegister } from "../../redux/auth/operations"; const SignUpForm = () => { -const [passwordVisibility, setPasswordVisibility]=useState({password:false, repeatPassword:false}); -const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ - ...prev, - [btnName]: !prev[btnName], -}));}; + const dispatch = useDispatch(); + + const [passwordVisibility, setPasswordVisibility] = useState({ + password: false, + repeatPassword: false, + }); + const togglePasswordView = (btnName) => { + setPasswordVisibility((prev) => ({ + ...prev, + [btnName]: !prev[btnName], + })); + }; const SignUpValidationSchema = Yup.object().shape({ emailSignUp: Yup.string() @@ -30,11 +39,15 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ repeatPassword: "", }; const handleSubmit = (values, actions) => { - console.log(values); + const email = values.emailSignUp; + const password = values.passwordSignUp; + const registerObj = { email, password }; + console.log(registerObj); + dispatch(apiRegister(registerObj)); + actions.resetForm(); }; - return ( <> {/*

    SignUp

    */} @@ -85,9 +98,12 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ component="span" className={css.errorMsg} /> -
    @@ -120,9 +135,12 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ component="span" className={css.errorMsg} /> -
    diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index b1a7245..0f466c7 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -1 +1,21 @@ -// операції авторизації +import { createAsyncThunk } from "@reduxjs/toolkit"; +import axios from "axios"; +export const instance = axios.create({ + baseURL: "https://back-inter-mafia.onrender.com/api/", +}); +const setAuthHeaders = (token) => { + instance.defaults.headers.common.Authorization = `Bearer ${token}`; +}; +export const apiRegister = createAsyncThunk( + "users/register", + async (formData, thunkApi) => { + try { + const { data } = await instance.post("users/register", formData); + setAuthHeaders(data.token); + // console.log("data:", data); + } catch (error) { + // console.error("Error during registration:", error); + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 04b4696..c7701ed 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -1,4 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; +import { apiRegister } from "./operations"; const INITIAL_STATE = { user: { @@ -15,7 +16,22 @@ const authSlice = createSlice({ name: "auth", initialState: INITIAL_STATE, reducers: {}, - // extraReducers: {}, // II777: deprecated syntax was breaking the build + extraReducers: (builder) => { + builder + .addCase(apiRegister.pending, () => { + // console.log("apiRegister pending..."); + }) + .addCase(apiRegister.fulfilled, (state, action) => { + // console.log("apiRegister fulfilled:", action.payload); + state.user = action.payload.user; + state.token = action.payload.token; + state.isLoggedIn = true; + }) + .addCase(apiRegister.rejected, (state, action) => { + // console.error("apiRegister rejected:", action.payload); + state.error = action.payload; + }); + }, }); export const authReducer = authSlice.reducer; From 65eae65cd02fce2fb0e3441f387a8621b5c05ac9 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Wed, 27 Nov 2024 20:55:24 +0200 Subject: [PATCH 052/185] fixed bgImg for retina --- src/components/WaterMainInfo/WaterMainInfo.jsx | 2 +- .../WaterMainInfo/WaterMainInfo.module.css | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 6c5dccb..2935a4e 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -8,7 +8,7 @@ const WaterMainInfo = () => { return ( <>
    - + diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index ad8cce2..bae35b0 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -7,11 +7,13 @@ background-image: url("/src/img/water-main-info/bottle-mob.png"); background-repeat: no-repeat; background-position: center 50px; + background-attachment: local; padding: 24px 16px 120px 16px; position: relative; + background-size: contain; } -.logo { +.log { margin-bottom: 78px; } @@ -23,7 +25,7 @@ background-position: center 69px; } - .logo { + .log { margin-bottom: 101px; } } @@ -33,10 +35,13 @@ max-width: 672px; margin-right: auto; margin-left: 0; - background-image: url("/src/img/water-main-info/bottle-desktop.png"); background-position: center 92px; } + + .log { + margin-bottom: 215px; + } } /* ============ retina =========== */ @@ -44,17 +49,20 @@ @media only screen and (min-resolution: 192dpi) and (max-width: 767px) { .container { background-image: url("/src/img/water-main-info/bottle-mob@2x.png"); + background-size: contain; } } @media only screen and (min-width: 768px) and (min-resolution: 192dpi) { .container { background-image: url("/src/img/water-main-info/bottle-tablet@2x.png"); + background-size: contain; } } @media only screen and (min-width: 1440px) and (min-resolution: 192dpi) { .container { background-image: url("/src/img/water-main-info/bottle-desktop@2x.png"); + background-size: contain; } } From 872fd748fc102ee2dddac07115694b03a4c6ed29 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Wed, 27 Nov 2024 21:00:21 +0200 Subject: [PATCH 053/185] calendar base --- src/components/Calendar/Calendar.jsx | 64 ++++++++++++++++++- src/components/Calendar/Calendar.module.css | 8 ++- src/components/CalendarItem/CalendarItem.jsx | 21 +++++- .../CalendarItem/CalendarItem.module.css | 42 +++++++++++- .../CalendarPagination/CalendarPagination.jsx | 39 ++++++++++- .../CalendarPagination.module.css | 22 ++++++- src/components/MonthInfo/MonthInfo.jsx | 24 ++++++- src/components/MonthInfo/MonthInfo.module.css | 29 ++++++++- src/redux/store.js | 8 ++- src/redux/water/operations.js | 19 +++++- src/redux/water/selectors.js | 5 +- src/redux/water/slice.js | 31 ++++++++- 12 files changed, 297 insertions(+), 15 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index b8805aa..e72cb7f 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -1,5 +1,67 @@ +import { useSelector } from "react-redux"; +import { + selectChosenDate, + selectDaysDrinking, + selectIsLoading, +} from "../../redux/water/selectors"; +import CalendarItem from "../CalendarItem/CalendarItem"; +import css from "./Calendar.module.css"; + const Calendar = () => { - return <>; + const chosenDate = new Date(useSelector(selectChosenDate)); + const daysDrinking = useSelector(selectDaysDrinking); + const isLoading = useSelector(selectIsLoading); + + const generateCalendarDays = () => { + const year = chosenDate.getFullYear(); + const month = chosenDate.getMonth(); + + const firstDayOfMonth = new Date(year, month, 0).getDay(); // 0 - euro (Monday first) + const totalDaysInMonth = new Date(year, month + 1, 0).getDate(); + + const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => ({ + day: i + 1, + percent: "--", + })); + + daysDrinking.forEach((dayData) => { + daysArray[dayData.number].percent = dayData.percent; + }); + + const emptyDaysBefore = Array.from({ length: firstDayOfMonth }, () => ({ + day: null, + percent: null, + })); + + return [...emptyDaysBefore, ...daysArray]; + }; + + const calendarDays = generateCalendarDays(); + + return ( +
    + {isLoading ? ( +

    Creating your water-drinking calendar...

    + ) : ( +
    + {calendarDays.map(({ day, percent }, index) => ( + + ))} +
    + )} +
    + ); }; export default Calendar; +// по роботі з датами: https://uk.javascript.info/date diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index 189ff91..04a8b14 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -1 +1,7 @@ -/*style*/ +/* .calendar {} */ + +.grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 20px; +} diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx index 6557d2a..67e1789 100644 --- a/src/components/CalendarItem/CalendarItem.jsx +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -1,5 +1,22 @@ -const CalendarItem = () => { - return <>; +import css from "./CalendarItem.module.css"; + +const CalendarItem = ({ day, percent, isActive }) => { + return ( + + ); }; export default CalendarItem; diff --git a/src/components/CalendarItem/CalendarItem.module.css b/src/components/CalendarItem/CalendarItem.module.css index 189ff91..3c68483 100644 --- a/src/components/CalendarItem/CalendarItem.module.css +++ b/src/components/CalendarItem/CalendarItem.module.css @@ -1 +1,41 @@ -/*style*/ +.item { + width: 28px; + height: 44px; + margin: 0; + padding: 0; + border: none; + cursor: pointer; +} + +.item.empty { + background-color: transparent; + cursor: default; +} + +.item.active { + background-color: #2c3e50; +} + +.dayNumber { + display: inline-flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + border-radius: 50%; + background-color: #fff; +} + +.percent { +} + +.item:hover { + background-color: aqua; +} + +@media only screen and (min-width: 768px) { + .item { + width: 38px; + height: 65px; + } +} diff --git a/src/components/CalendarPagination/CalendarPagination.jsx b/src/components/CalendarPagination/CalendarPagination.jsx index 0134dc8..2251435 100644 --- a/src/components/CalendarPagination/CalendarPagination.jsx +++ b/src/components/CalendarPagination/CalendarPagination.jsx @@ -1,5 +1,42 @@ +import { useDispatch, useSelector } from "react-redux"; +import css from "./CalendarPagination.module.css"; +import { selectChosenDate } from "../../redux/water/selectors"; +import { setChosenDate } from "../../redux/water/slice"; + const CalendarPagination = () => { - return <>; + const dispatch = useDispatch(); + const chosenDate = new Date(useSelector(selectChosenDate)); + + const handleMonthChange = (shift) => { + const updatedDate = new Date(chosenDate); + updatedDate.setMonth(updatedDate.getMonth() + shift); + dispatch(setChosenDate(updatedDate.toISOString())); + }; + + const formatDate = (date) => + `${date.toLocaleString("default", { + month: "long", + })}, ${date.getFullYear()}`; + + return ( +
    + + {formatDate(chosenDate)} + +
    + ); }; export default CalendarPagination; diff --git a/src/components/CalendarPagination/CalendarPagination.module.css b/src/components/CalendarPagination/CalendarPagination.module.css index 189ff91..5176dcc 100644 --- a/src/components/CalendarPagination/CalendarPagination.module.css +++ b/src/components/CalendarPagination/CalendarPagination.module.css @@ -1 +1,21 @@ -/*style*/ +.arrow { + border: transparent; + background-color: transparent; + font-weight: 800; + font-size: 14px; +} + +.chosenDate { + color: #323f47; + font-weight: 700; + font-size: 14px; + font-family: "Poppins", sans-serif; + line-height: 1.28571; + letter-spacing: -0.01em; + text-align: center; +} + +.arrow:hover, +.chosenDate:hover { + color: aqua; +} diff --git a/src/components/MonthInfo/MonthInfo.jsx b/src/components/MonthInfo/MonthInfo.jsx index 0d1b3cd..519cdd2 100644 --- a/src/components/MonthInfo/MonthInfo.jsx +++ b/src/components/MonthInfo/MonthInfo.jsx @@ -1,5 +1,27 @@ +import { useState } from "react"; +import css from "./MonthInfo.module.css"; +import CalendarPagination from "../CalendarPagination/CalendarPagination.jsx"; +import Calendar from "../Calendar/Calendar.jsx"; + const MonthInfo = () => { - return <>; + const [isCalendarVisible, setIsCalendarVisible] = useState(true); + + const toggleView = () => { + setIsCalendarVisible((prevState) => !prevState); + }; + + return ( + <> +
    +

    Month

    +
    + + +
    +
    + {isCalendarVisible ? : "Тут буде графік"} + + ); }; export default MonthInfo; diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index 189ff91..db7af8c 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -1 +1,28 @@ -/*style*/ +.MonthInfo { + margin-bottom: 24px; +} + +.toRow { + display: flex; + justify-content: space-between; +} + +.title { + color: #323f47; + font-weight: 700; + font-size: 20px; + line-height: 1.2; + letter-spacing: -0.01em; +} + +@media only screen and (min-width: 768px) { + .title { + font-size: 28px; + line-height: 1.14; + } +} + +/* @media only screen and (min-width: 1440px) { + .title { + } +} */ diff --git a/src/redux/store.js b/src/redux/store.js index e8f0ed4..068e9fd 100644 --- a/src/redux/store.js +++ b/src/redux/store.js @@ -19,9 +19,15 @@ const authConfig = { whitelist: ["token"], }; +const persistConfig = { + key: "water", + storage, + whitelist: ["water"], +}; + export const store = configureStore({ reducer: { - water: waterReducer, + water: persistReducer(persistConfig, waterReducer), auth: persistReducer(authConfig, authReducer), }, middleware: (getDefaultMiddleware) => diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 9a35dde..8471a1c 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -1 +1,18 @@ -// операції з водою +import axios from "axios"; +import { createAsyncThunk } from "@reduxjs/toolkit"; + +axios.defaults.baseURL = "https://api.com/endpoint"; + +export const fetchDaysDrinking = createAsyncThunk( + "water/fetchDaysDrinking", + async (date, thunkAPI) => { + try { + const response = await axios.get(`/month`, { + params: { date: date.slice(0, 7) }, + }); + return response.data; + } catch (error) { + return thunkAPI.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index a892399..1ec6fe8 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -1 +1,4 @@ -//селектори +export const selectDaysDrinking = (state) => state.water.daysDrinking; // Дні +export const selectChosenDate = (state) => state.water.chosenDate; // Обрана дата +export const selectIsLoading = (state) => state.water.loading; // Лоадер +export const selectError = (state) => state.water.error; // Помилки diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 51dced2..75bc586 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -1,12 +1,37 @@ import { createSlice } from "@reduxjs/toolkit"; +import { fetchDaysDrinking } from "./operations"; -const INITIAL_STATE = {}; +const INITIAL_STATE = { + daysDrinking: [], + chosenDate: Date.now(), + loading: false, + error: null, +}; const waterSlice = createSlice({ name: "water", initialState: INITIAL_STATE, - reducers: {}, - // extraReducers: {}, // II777: deprecated syntax was breaking the build + reducers: { + setChosenDate(state, action) { + state.chosenDate = action.payload; + }, + }, + extraReducers: (builder) => { + builder + .addCase(fetchDaysDrinking.pending, (state) => { + state.loading = true; + }) + .addCase(fetchDaysDrinking.fulfilled, (state, action) => { + state.loading = false; + state.error = null; + state.daysDrinking = action.payload; + }) + .addCase(fetchDaysDrinking.rejected, (state, action) => { + state.loading = false; + state.error = action.payload; + }); + }, }); +export const { setChosenDate } = waterSlice.actions; export const waterReducer = waterSlice.reducer; From 9017cdb7cd2e31b797faac20152cd3a3807920cb Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Wed, 27 Nov 2024 21:00:29 +0200 Subject: [PATCH 054/185] fixed bgImg for retina --- src/components/WaterMainInfo/WaterMainInfo.module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index bae35b0..b7ed3ef 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -10,7 +10,7 @@ background-attachment: local; padding: 24px 16px 120px 16px; position: relative; - background-size: contain; + /* background-size: contain; */ } .log { From cf16a6fdb856156688a3dec870ec1dd5c5713c92 Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Wed, 27 Nov 2024 22:18:15 +0200 Subject: [PATCH 055/185] register page css done --- src/components/SignUpForm/SignUpForm.jsx | 48 ++++++++------ src/pages/SignUpPage/SignUpPage.jsx | 23 ++++++- src/pages/SignUpPage/SignUpPage.module.css | 77 +++++++++++++++++++++- 3 files changed, 124 insertions(+), 24 deletions(-) diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index 7af7efb..d29e845 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -5,11 +5,16 @@ import clsx from "clsx"; import { useState } from "react"; const SignUpForm = () => { -const [passwordVisibility, setPasswordVisibility]=useState({password:false, repeatPassword:false}); -const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ - ...prev, - [btnName]: !prev[btnName], -}));}; + const [passwordVisibility, setPasswordVisibility] = useState({ + password: false, + repeatPassword: false, + }); + const togglePasswordView = (btnName) => { + setPasswordVisibility((prev) => ({ + ...prev, + [btnName]: !prev[btnName], + })); + }; const SignUpValidationSchema = Yup.object().shape({ emailSignUp: Yup.string() @@ -34,7 +39,6 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ actions.resetForm(); }; - return ( <> {/*

    SignUp

    */} @@ -85,18 +89,20 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ component="span" className={css.errorMsg} /> -
    @@ -120,18 +126,20 @@ const togglePasswordView=(btnName)=>{setPasswordVisibility((prev) => ({ component="span" className={css.errorMsg} /> -
    diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index 63ec4cf..d562cdc 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -1,10 +1,27 @@ import SignUpForm from "../../components/SignUpForm/SignUpForm"; +import Logo from "../../components/Logo/Logo"; +import { NavLink } from "react-router-dom"; +import css from "./SignUpPage.module.css"; +import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; +import { useMediaQuery } from "react-responsive"; const SignUpPage = () => { + const isDesktop = useMediaQuery({ minWidth: 1440 }); return ( - <> - - +
    +
    + +

    Sign Up

    + +

    + Already have account?{" "} + + Sign In + +

    +
    + {isDesktop && } +
    ); }; diff --git a/src/pages/SignUpPage/SignUpPage.module.css b/src/pages/SignUpPage/SignUpPage.module.css index 189ff91..89cf7f5 100644 --- a/src/pages/SignUpPage/SignUpPage.module.css +++ b/src/pages/SignUpPage/SignUpPage.module.css @@ -1 +1,76 @@ -/*style*/ +.section { + padding: 16px; +} +.container { + margin: 0 auto; + border-radius: 30px; + max-width: 343px; + padding: 24px 16px 170px; + background-color: #f0eff4; +} +.logo { + margin-bottom: 126px; +} + +.title { + margin-bottom: 32px; + font-weight: 700; + font-size: 32px; + line-height: 1; + letter-spacing: -0.01em; + color: #323f47; +} +.text { + margin-top: 16px; + text-align: center; + font-weight: 400; + font-size: 14px; + line-height: 1.28571; + letter-spacing: -0.01em; + color: rgba(47, 47, 47, 0.5); +} +.link { + font-weight: 700; + text-decoration: underline; + text-decoration-skip-ink: none; + color: #2f2f2f; +} +@media only screen and (min-width: 768px) { + .section { + padding: 32px; + } + .container { + max-width: 704px; + padding: 32px 32px 227px; + } + .logo { + margin-bottom: 171px; + } + + .title { + padding-left: 102px; + font-size: 36px; + line-height: 1.05556; + } + .text { + font-size: 16px; + line-height: 1.5; + letter-spacing: -0.01em; + } +} + +@media only screen and (min-width: 768px) { + .section { + margin: 0 auto; + max-width: 1440px; + display: flex; + gap: 32px; + } + .container { + width: 50%; + padding-bottom: 100px; + } + .logo { + margin-bottom: 74px; + } +} From 95bae76251e0ba8460bee7240361bdac2339f651 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Wed, 27 Nov 2024 22:54:10 +0100 Subject: [PATCH 056/185] update setting modal --- src/components/WaterMainInfo/WaterMainInfo.jsx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index c1e6270..296c392 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -9,13 +9,8 @@ import bottleMob2x from "../../img/water-main-info/bottle-mob@2x.png"; import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; -import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; -import { useState } from "react"; const WaterMainInfo = () => { - const [isModalOpen, setIsModalOpen] = useState(false); - const openModal = () => setIsModalOpen(true); - const closeModal = () => setIsModalOpen(false); return ( <>
    @@ -32,13 +27,7 @@ const WaterMainInfo = () => { />
    - -
    - - ); }; From ae9bd8a37e8820dd924dccf64fe10dbedaf7f377 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Wed, 27 Nov 2024 23:16:23 +0100 Subject: [PATCH 057/185] update setting modal --- src/components/Icon/Icon.jsx | 11 ----------- src/components/WaterMainInfo/WaterMainInfo.jsx | 3 +++ src/modals/UserSettingsModal/UserSettingsModal.jsx | 10 +++------- .../UserSettingsModal/UserSettingsModal.module.css | 4 ++++ 4 files changed, 10 insertions(+), 18 deletions(-) delete mode 100644 src/components/Icon/Icon.jsx diff --git a/src/components/Icon/Icon.jsx b/src/components/Icon/Icon.jsx deleted file mode 100644 index 25af983..0000000 --- a/src/components/Icon/Icon.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import sprite from "../../icons/sprite.svg"; - -const Icon = ({ width, height, iconName, className }) => { - return ( - - - - ); -}; - -export default Icon; diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 6c5dccb..44ff2be 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -4,6 +4,9 @@ import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import css from "./WaterMainInfo.module.css"; import Logo from "../Logo/Logo.jsx"; +import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; +import { useState } from "react"; + const WaterMainInfo = () => { return ( <> diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index 240d6b8..c5ae2f1 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -1,5 +1,4 @@ import ReactDOM from "react-dom"; -import Icon from "../../components/Icon/Icon"; import UsersSettingsForm from "../../components/UsersSettingsForm/UsersSettingsForm"; import css from "./UserSettingsModal.module.css"; @@ -12,12 +11,9 @@ const UserSettingsModal = ({ isOpen, onClose }) => {

    Setting

    diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index f502d62..6ff2b6d 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -42,6 +42,10 @@ } } +.settingModalIcon { + stroke: #2f2f2f; +} + .settingModalButton { border: none; background-color: transparent; From 25a735211a3158b200edc8ef64c4cf71353d0c06 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Thu, 28 Nov 2024 00:47:42 +0200 Subject: [PATCH 058/185] fixed styles/add container TrackerPage --- src/components/AddWaterBtn/AddWaterBtn.jsx | 2 +- .../AddWaterBtn/AddWaterBtn.module.css | 29 ++++++++++++++----- .../WaterMainInfo/WaterMainInfo.jsx | 3 +- .../WaterMainInfo/WaterMainInfo.module.css | 25 ++++++++-------- 4 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 365283d..e8a4716 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -29,7 +29,7 @@ const AddWaterBtn = ({ variant = "default" }) => { Add water - {isModalOpen && } + {/* {isModalOpen && } */} ); }; diff --git a/src/components/AddWaterBtn/AddWaterBtn.module.css b/src/components/AddWaterBtn/AddWaterBtn.module.css index 4cd9266..f331ebc 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.module.css +++ b/src/components/AddWaterBtn/AddWaterBtn.module.css @@ -1,15 +1,14 @@ .addBtn { - position: absolute; cursor: pointer; font-weight: 700; letter-spacing: 0.01em; - text-align: center; border: none; - right: 16px; - bottom: 32px; } .defaultBtn { + position: absolute; + right: 16px; + bottom: 32px; font-size: 14px; line-height: 129%; background-color: #323f47; @@ -34,19 +33,35 @@ text-align: center; color: #323f47; background-color: transparent; + display: inline-flex; + align-items: center; + justify-content: center; } .icon { vertical-align: middle; margin-right: 10px; - transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), - stroke 250ms cubic-bezier(0.4, 0, 0.2, 1); + transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1); } .icon:hover { transform: scale(1.1); } +.addBtnAlt .iconAlt { + border-radius: 30px; + background-color: #9be1a0; + stroke: #323f47; + padding: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1), + stroke 250ms cubic-bezier(0.4, 0, 0.2, 1); +} +.addBtnAlt:hover .iconAlt { + background-color: #323f47; + stroke: #ffffff; +} + +/* .iconAlt { border-radius: 30px; background-color: #9be1a0; @@ -58,7 +73,7 @@ .iconAlt:hover { background-color: #323f47; stroke: #ffffff; -} +} */ @media only screen and (min-width: 768px) { .addBtn { diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 2935a4e..fc0ce44 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -3,12 +3,11 @@ import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import css from "./WaterMainInfo.module.css"; -import Logo from "../Logo/Logo.jsx"; const WaterMainInfo = () => { return ( <>
    - +

    aquatrack

    diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index b7ed3ef..6cd8ccc 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -7,13 +7,17 @@ background-image: url("/src/img/water-main-info/bottle-mob.png"); background-repeat: no-repeat; background-position: center 50px; - background-attachment: local; padding: 24px 16px 120px 16px; position: relative; - /* background-size: contain; */ } -.log { +.title { + font-family: "Poppins", sans-serif; + color: #323f47; + font-size: 18px; + font-weight: 700; + text-transform: uppercase; + line-height: 111%; margin-bottom: 78px; } @@ -25,7 +29,8 @@ background-position: center 69px; } - .log { + .title { + line-height: 100%; margin-bottom: 101px; } } @@ -36,11 +41,6 @@ margin-right: auto; margin-left: 0; background-image: url("/src/img/water-main-info/bottle-desktop.png"); - background-position: center 92px; - } - - .log { - margin-bottom: 215px; } } @@ -48,21 +48,20 @@ @media only screen and (min-resolution: 192dpi) and (max-width: 767px) { .container { - background-image: url("/src/img/water-main-info/bottle-mob@2x.png"); - background-size: contain; + background-size: auto 80%; } } @media only screen and (min-width: 768px) and (min-resolution: 192dpi) { .container { background-image: url("/src/img/water-main-info/bottle-tablet@2x.png"); - background-size: contain; + background-size: auto 84%; } } @media only screen and (min-width: 1440px) and (min-resolution: 192dpi) { .container { background-image: url("/src/img/water-main-info/bottle-desktop@2x.png"); - background-size: contain; + background-size: auto 87%; } } From dd10d618ea508fc1e1d384537ffa11c54e7cfeae Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Thu, 28 Nov 2024 00:22:02 +0100 Subject: [PATCH 059/185] create logic for setting modal --- .../WaterMainInfo/WaterMainInfo.jsx | 2 -- .../UserSettingsModal/UserSettingsModal.jsx | 26 ++++++++++++++++--- .../UserSettingsModal.module.css | 9 +++---- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 44ff2be..882fe73 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -4,8 +4,6 @@ import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import css from "./WaterMainInfo.module.css"; import Logo from "../Logo/Logo.jsx"; -import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; -import { useState } from "react"; const WaterMainInfo = () => { return ( diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index c5ae2f1..97c385a 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -1,13 +1,31 @@ import ReactDOM from "react-dom"; import UsersSettingsForm from "../../components/UsersSettingsForm/UsersSettingsForm"; import css from "./UserSettingsModal.module.css"; +import { useEffect } from "react"; -const UserSettingsModal = ({ isOpen, onClose }) => { - if (!isOpen) return null; +const UserSettingsModal = ({ onClose }) => { + useEffect(() => { + const handleKeyDown = (e) => { + if (e.key === "Escape") { + onClose(); + } + }; + + document.addEventListener("keydown", handleKeyDown); + return () => { + document.removeEventListener("keydown", handleKeyDown); + }; + }, [onClose]); + + const handleOverlayClick = (e) => { + if (e.target === e.currentTarget) { + onClose(); + } + }; return ReactDOM.createPortal( -
    -
    +
    +
    e.stopPropagation()}>

    Setting

    + + {isPopoverOpen && ( + + )} + {isPopoverOpen &&
    } +
    + ); }; export default UserBar; diff --git a/src/components/UserBarPopover/UserBarPopover.jsx b/src/components/UserBarPopover/UserBarPopover.jsx index 9ca162e..d81d4b9 100644 --- a/src/components/UserBarPopover/UserBarPopover.jsx +++ b/src/components/UserBarPopover/UserBarPopover.jsx @@ -1,5 +1,37 @@ -const UserBarPopover = () => { - return <>; -}; +import { forwardRef } from "react" +import css from "./UserBarPopover.module.css" + + +const UserBarPopover = forwardRef( + ({ styles, attributes, onSettingsClick, onLogOutClick, closePopover }, ref) => { + return ( +
    + + +
    + ); + } +); export default UserBarPopover; diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx index 24247dd..e6c25f3 100644 --- a/src/components/UserPanel/UserPanel.jsx +++ b/src/components/UserPanel/UserPanel.jsx @@ -1,5 +1,43 @@ -const UserPanel = () => { - return <>; +import { useState } from "react"; +import UserBar from "../UserBar/UserBar.jsx"; +import UserSettingsModal from "../UserSettingsModal/UserSettingsModal.jsx"; +import LogOutModal from "../LogOutModal/LogOutModal.jsx"; +import css from "./UserPanel.module.css" + +const UserPanel = ({ userName, avatarUrl }) => { + const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false); + const [isLogOutModalOpen, setIsLogOutModalOpen] = useState(false); + + const handleOpenSettings = () => { + console.log("Settings modal opened"); + setIsSettingsModalOpen(true); +}; +const handleOpenLogOut = () => { + console.log("Log out modal opened"); + setIsLogOutModalOpen(true); +}; + const handleCloseModals = () => { + setIsSettingsModalOpen(false); + setIsLogOutModalOpen(false); + }; + + return ( +
    +

    Hello, {userName}!

    + + {isSettingsModalOpen && ( + + )} + {isLogOutModalOpen && ( + + )} +
    + ); }; -export default UserPanel; +export default UserPanel; \ No newline at end of file diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx index 2fadd37..c31149b 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -1,5 +1,16 @@ +import UserPanel from "../UserPanel/UserPanel/UserPanel.jsx"; +import DailyInfo from "../DailyInfo/DailyInfo.jsx"; +import MonthInfo from "../MonthInfo/MonthInfo.jsx"; +import css from "./WaterDetailedInfo.module.css" + const WaterDetailedInfo = () => { - return <>; + return ( +
    + + + +
    + );; }; export default WaterDetailedInfo; diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css index 189ff91..938b056 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css @@ -1 +1,10 @@ -/*style*/ +.container { + background-color: #f0eff4; + border-radius: 20px; + padding-top: 32px; + padding-left: 32px; + padding-right: 32px; + display: flex; + flex-direction: column; + gap: 40px; +} From 55ff50046f5b3d6d2bd44df0dd9d1dae06d77e20 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Thu, 28 Nov 2024 15:44:03 +0200 Subject: [PATCH 061/185] login finished --- package-lock.json | 2 + package.json | 1 + src/App.jsx | 10 ++++ src/components/PrivateRoute/PrivateRoute.jsx | 9 ++- .../RestrictedRoute/RestrictedRoute.jsx | 9 ++- src/components/SignInForm/SignInForm.jsx | 13 ++-- .../SignInForm/SignInForm.module.css | 15 ++--- src/index.css | 4 +- src/pages/SignInPage/SignInPage.jsx | 35 +++++++---- src/pages/SignInPage/SignInPage.module.css | 38 +++++++++++- src/redux/auth/operations.js | 60 +++++++++++++++++++ src/redux/auth/selectors.js | 5 ++ src/redux/auth/slice.js | 42 ++++++++++++- 13 files changed, 206 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee6eb1c..078f873 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "clsx": "^2.1.1", "formik": "^2.4.6", "modern-normalize": "^3.0.1", + "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icon": "^1.0.0", @@ -4640,6 +4641,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", diff --git a/package.json b/package.json index ff65f39..0fb249b 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "clsx": "^2.1.1", "formik": "^2.4.6", "modern-normalize": "^3.0.1", + "prop-types": "^15.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-icon": "^1.0.0", diff --git a/src/App.jsx b/src/App.jsx index 44b83ed..a54da3c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,6 +3,9 @@ import Loader from "./components/Loader/Loader"; import PrivateRoute from "./components/PrivateRoute/PrivateRoute"; import RestrictedRoute from "./components/RestrictedRoute/RestrictedRoute"; import { Route, Routes } from "react-router-dom"; +// import { useDispatch, useSelector } from "react-redux"; +// import { selectAuthIsRefreshing } from "./redux/auth/selectors"; +// import { apiRefresh } from "./redux/auth/operations"; const HomePage = lazy(() => import("./pages/HomePage/HomePage")); const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); @@ -10,6 +13,13 @@ const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); function App() { + // const dispatch = useDispatch(); + // const refresh = useSelector(selectAuthIsRefreshing); + + // useEffect(() => { + // dispatch(apiRefresh()); + // }, [dispatch]); + return (
    }> diff --git a/src/components/PrivateRoute/PrivateRoute.jsx b/src/components/PrivateRoute/PrivateRoute.jsx index 4b3839e..6e79f3c 100644 --- a/src/components/PrivateRoute/PrivateRoute.jsx +++ b/src/components/PrivateRoute/PrivateRoute.jsx @@ -1,5 +1,10 @@ -const PrivateRoute = ({ component }) => { - return component; +import { useSelector } from "react-redux"; +import { selectAuthIsLoggedIn } from "../../redux/auth/selectors"; +import { Navigate } from "react-router-dom"; + +const PrivateRoute = ({ component, redirectTo = "/signin" }) => { + const isLoggedIn = useSelector(selectAuthIsLoggedIn); + return isLoggedIn ? component : ; }; export default PrivateRoute; diff --git a/src/components/RestrictedRoute/RestrictedRoute.jsx b/src/components/RestrictedRoute/RestrictedRoute.jsx index 1f047eb..294461c 100644 --- a/src/components/RestrictedRoute/RestrictedRoute.jsx +++ b/src/components/RestrictedRoute/RestrictedRoute.jsx @@ -1,5 +1,10 @@ -const RestrictedRoute = ({ component }) => { - return component; +import { useSelector } from "react-redux"; +import { selectAuthIsLoggedIn } from "../../redux/auth/selectors"; +import { Navigate } from "react-router-dom"; + +const RestrictedRoute = ({ component, redirectTo = "/tracker" }) => { + const isLoggedIn = useSelector(selectAuthIsLoggedIn); + return isLoggedIn ? : component; }; export default RestrictedRoute; diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 5df564f..6676f30 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -4,6 +4,9 @@ import css from "./SignInForm.module.css"; import clsx from "clsx"; import { useMediaQuery } from "react-responsive"; import { useState } from "react"; +import { useDispatch, useSelector } from "react-redux"; +import { selectAuthError } from "../../redux/auth/selectors"; +import { apiLogin } from "../../redux/auth/operations"; const LoginValidationSchema = Yup.object({ email: Yup.string().email("Incorrect email").required("Email is required"), @@ -14,6 +17,8 @@ const LoginValidationSchema = Yup.object({ }); const SignInForm = () => { + const dispatch = useDispatch(); + const error = useSelector(selectAuthError); const isTabletAndDesktop = useMediaQuery({ minWidth: 768 }); const [openEye, setOpenEye] = useState(false); @@ -26,12 +31,12 @@ const SignInForm = () => { setOpenEye(!openEye); } - function handleSubmit(name, password) { - console.log(name, password); + function handleSubmit(values) { + dispatch(apiLogin(values)); } return ( - <> +

    Sign In

    { )} - +
    ); }; diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 4d7ae15..7446e93 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -21,18 +21,11 @@ } .emailContainer { - position: relative; display: flex; flex-direction: column; margin-bottom: 16px; } -.errorMail { - position: absolute; - bottom: -30px; - left: 0; -} - .inputForm { padding-top: 16px; padding-bottom: 16px; @@ -107,11 +100,13 @@ .signInTitle { font-size: 36px; line-height: 106%; - margin-left: 102px; } - .form { - margin-left: 102px; + .container { + display: flex; + flex-direction: column; + justify-content: start; + align-items: start; } .label { diff --git a/src/index.css b/src/index.css index c696a3f..c0bc6dc 100644 --- a/src/index.css +++ b/src/index.css @@ -21,7 +21,9 @@ line-height: 1; } -html, body { +html, +body { + font-family: Poppins; margin: 0; padding: 0; } diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index f03b133..465ec17 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -2,23 +2,32 @@ import Logo from "../../components/Logo/Logo"; import SignInForm from "../../components/SignInForm/SignInForm"; import { NavLink } from "react-router-dom"; import css from "./SignInPage.module.css"; +import { useMediaQuery } from "react-responsive"; +import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; const SignInPage = () => { + const isDesktop = useMediaQuery({ minWidth: 1440 }); + return ( -
    -
    - - -
    -

    - Don't have an account?{" "} - - Sign Up - {" "} -

    +
    +
    +
    + +
    + +
    +
    +

    + Don't have an account?{" "} + + Sign Up + {" "} +

    +
    -
    -
    + + {isDesktop && } +
    ); }; diff --git a/src/pages/SignInPage/SignInPage.module.css b/src/pages/SignInPage/SignInPage.module.css index c0f9c64..7521c00 100644 --- a/src/pages/SignInPage/SignInPage.module.css +++ b/src/pages/SignInPage/SignInPage.module.css @@ -1,9 +1,8 @@ /*style*/ .signInSection { - font-family: Poppins; padding: 16px; margin: 0 auto; - max-width: 320px; + max-width: 343px; background-color: #ffffff; } @@ -49,7 +48,14 @@ @media only screen and (min-width: 768px) { .signInSection { padding: 32px; - max-width: 768px; + max-width: 704px; + } + + .signInContainer { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } .container { @@ -70,3 +76,29 @@ line-height: 150%; } } + +@media only screen and (min-width: 1440px) { + .signInSection { + min-width: 672px; + margin-right: 0; + } + + .container { + padding-bottom: 169px; + } + + .title { + margin-bottom: 113px; + } + + .descContainer { + display: flex; + flex-direction: row; + } + + .advContainer { + max-width: 672px; + margin-left: 0; + margin-right: auto; + } +} diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index 0f466c7..1a6201e 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -1,11 +1,32 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; import axios from "axios"; + export const instance = axios.create({ baseURL: "https://back-inter-mafia.onrender.com/api/", }); + const setAuthHeaders = (token) => { instance.defaults.headers.common.Authorization = `Bearer ${token}`; }; + +const clearAuthHeader = () => { + instance.defaults.headers.common.Authorization = null; +}; + +export const apiLogin = createAsyncThunk( + "users/login", + async (formData, thunkApi) => { + try { + const { data } = await instance.post("users/login", formData); + setAuthHeaders(data.token); + // console.log(data); + return data; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); + export const apiRegister = createAsyncThunk( "users/register", async (formData, thunkApi) => { @@ -13,9 +34,48 @@ export const apiRegister = createAsyncThunk( const { data } = await instance.post("users/register", formData); setAuthHeaders(data.token); // console.log("data:", data); + return data; } catch (error) { // console.error("Error during registration:", error); return thunkApi.rejectWithValue(error.message); } } ); + +// export const apiRefresh = createAsyncThunk( +// "users/refresh", +// async (_, thunkApi) => { +// try { +// const { data } = await instance.post("users/refresh"); +// // const state = thunkApi.getState(); +// // const token = state.auth.token; +// setAuthHeaders(data); +// return data; +// } catch (error) { +// return thunkApi.rejectWithValue(error.message); +// } +// }, +// { +// condition: (_, thunkApi) => { +// const state = thunkApi.getState(); +// const token = state.auth.token; + +// if (token) return true; + +// return false; +// }, +// } +// ); + +export const apiLogout = createAsyncThunk( + "users/logout", + async (_, thunkApi) => { + try { + await instance.post("users/logout"); + clearAuthHeader(); + return; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/auth/selectors.js b/src/redux/auth/selectors.js index a892399..ecf0e93 100644 --- a/src/redux/auth/selectors.js +++ b/src/redux/auth/selectors.js @@ -1 +1,6 @@ //селектори +export const selectAuthUser = (state) => state.auth.user; +export const selectAuthToken = (state) => state.auth.token; +export const selectAuthIsLoggedIn = (state) => state.auth.isLoggedIn; +export const selectAuthIsRefreshing = (state) => state.auth.isRefreshing; +export const selectAuthError = (state) => state.auth.error; diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index c7701ed..db8c554 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -1,5 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { apiRegister } from "./operations"; +import { apiLogin, apiLogout, apiRegister } from "./operations"; const INITIAL_STATE = { user: { @@ -18,8 +18,9 @@ const authSlice = createSlice({ reducers: {}, extraReducers: (builder) => { builder - .addCase(apiRegister.pending, () => { + .addCase(apiRegister.pending, (state) => { // console.log("apiRegister pending..."); + state.error = null; }) .addCase(apiRegister.fulfilled, (state, action) => { // console.log("apiRegister fulfilled:", action.payload); @@ -30,7 +31,44 @@ const authSlice = createSlice({ .addCase(apiRegister.rejected, (state, action) => { // console.error("apiRegister rejected:", action.payload); state.error = action.payload; + }) + + .addCase(apiLogin.pending, (state) => { + state.error = null; + }) + .addCase(apiLogin.fulfilled, (state, action) => { + state.isLoggedIn = true; + state.token = action.payload.token; + state.user = action.payload.user; + }) + .addCase(apiLogin.rejected, (state, action) => { + state.error = action.payload; + }) + + .addCase(apiLogout.pending, (state) => { + state.error = null; + }) + .addCase(apiLogout.fulfilled, () => { + return INITIAL_STATE; + }) + .addCase(apiLogout.rejected, (state, action) => { + state.error = action.payload; }); + + // .addCase(apiRefresh.pending, (state) => { + // state.error = null; + // state.isRefreshing = true; + // }) + // .addCase(apiRefresh.fulfilled, (state, action) => { + // state.isLoggedIn = true; + // state.token = action.payload.token; + // state.isRefreshing = false; + // }) + // .addCase(apiRefresh.rejected, (state, action) => { + // state.error = action.payload; + // state.isRefreshing = false; + // state.token = null; + // }); }, }); From d0d6287fc05c641233c9f1ba9768f26daa437b98 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Thu, 28 Nov 2024 08:51:22 -0500 Subject: [PATCH 062/185] -m --- src/components/WelcomeSection/WelcomeSection.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/WelcomeSection/WelcomeSection.jsx b/src/components/WelcomeSection/WelcomeSection.jsx index b50425a..efb2291 100644 --- a/src/components/WelcomeSection/WelcomeSection.jsx +++ b/src/components/WelcomeSection/WelcomeSection.jsx @@ -1,4 +1,5 @@ import Logo from '../Logo/Logo'; +import { NavLink } from 'react-router-dom'; import styles from './WelcomeSection.module.css'; const WelcomeSection = ({ className = '' }) => { @@ -13,12 +14,12 @@ const WelcomeSection = ({ className = '' }) => {

From f2528047981764d1f228d3713d41792cb4bbc426 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Thu, 28 Nov 2024 09:34:19 -0500 Subject: [PATCH 063/185] fix container resizing for Advantages section on the HomePage --- src/pages/HomePage/HomePage.module.css | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/pages/HomePage/HomePage.module.css b/src/pages/HomePage/HomePage.module.css index a846444..bc61e32 100644 --- a/src/pages/HomePage/HomePage.module.css +++ b/src/pages/HomePage/HomePage.module.css @@ -13,10 +13,6 @@ } /* Section Styles */ -.welcomeSection { - padding: 24px 16px 16px 16px; -} - .welcomeSection, .advantagesSection { border-radius: 30px; @@ -36,9 +32,12 @@ .advantagesSection { background-color: var(--background-secondary-light); border: solid 1px var(--background-secondary-light); - min-height: 353px; + width: 100%; text-align: center; - height: 353px; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + overflow: hidden; } /* BREAKPOINTS (Mobile First) */ From 5bd28526a354a37938747518b2c823065d8f7f6a Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Thu, 28 Nov 2024 17:02:04 +0200 Subject: [PATCH 064/185] Formated chosen date/month (in state); settings slice; calendar starts from a specific day of the week (option); and other changes --- src/components/Calendar/Calendar.jsx | 44 ++++++++++++------- src/components/Calendar/Calendar.module.css | 10 ++++- .../CalendarItem/CalendarItem.module.css | 27 ++++++++---- .../CalendarPagination/CalendarPagination.jsx | 29 +++++++----- .../CalendarPagination.module.css | 31 ++++++++++--- src/components/MonthInfo/MonthInfo.jsx | 15 +++++-- src/components/MonthInfo/MonthInfo.module.css | 18 ++++++++ src/components/SignUpForm/SignUpForm.jsx | 2 +- src/redux/settings/operations.js | 4 ++ src/redux/settings/selectors.js | 1 + src/redux/settings/slice.js | 19 ++++++++ src/redux/store.js | 8 ++++ src/redux/water/operations.js | 2 +- src/redux/water/selectors.js | 8 ++-- src/redux/water/slice.js | 11 +++-- 15 files changed, 172 insertions(+), 57 deletions(-) create mode 100644 src/redux/settings/operations.js create mode 100644 src/redux/settings/selectors.js create mode 100644 src/redux/settings/slice.js diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index e72cb7f..bbc8735 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -1,33 +1,42 @@ import { useSelector } from "react-redux"; +import css from "./Calendar.module.css"; import { - selectChosenDate, + selectChosenMonth, selectDaysDrinking, selectIsLoading, } from "../../redux/water/selectors"; +import { selectDaysNotAsInWeek } from "../../redux/settings/selectors"; import CalendarItem from "../CalendarItem/CalendarItem"; -import css from "./Calendar.module.css"; const Calendar = () => { - const chosenDate = new Date(useSelector(selectChosenDate)); - const daysDrinking = useSelector(selectDaysDrinking); + const daysNotAsInWeek = useSelector(selectDaysNotAsInWeek) ? true : false; + console.log(useSelector(selectDaysNotAsInWeek)); const isLoading = useSelector(selectIsLoading); + const daysDrinking = useSelector(selectDaysDrinking); - const generateCalendarDays = () => { - const year = chosenDate.getFullYear(); - const month = chosenDate.getMonth(); - - const firstDayOfMonth = new Date(year, month, 0).getDay(); // 0 - euro (Monday first) - const totalDaysInMonth = new Date(year, month + 1, 0).getDate(); + const today = new Date(); + const dateFromState = useSelector(selectChosenMonth); + const [year, month] = dateFromState.split("-"); + const yearInt = parseInt(year); + const monthInt = parseInt(month) - 1; // Місяці в Date починаються з 0 + const generateCalendarDays = () => { + const totalDaysInMonth = new Date(yearInt, monthInt + 1, 0).getDate(); const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => ({ day: i + 1, percent: "--", })); daysDrinking.forEach((dayData) => { - daysArray[dayData.number].percent = dayData.percent; + if (dayData.number >= 1 && dayData.number <= totalDaysInMonth) { + daysArray[dayData.number - 1].percent = dayData.percent; + } }); + if (daysNotAsInWeek) return daysArray; + + // Порожні дні перед початком місяця + const firstDayOfMonth = new Date(yearInt, monthInt, 0).getDay(); // set 1 for Sunday-start week const emptyDaysBefore = Array.from({ length: firstDayOfMonth }, () => ({ day: null, percent: null, @@ -36,6 +45,12 @@ const Calendar = () => { return [...emptyDaysBefore, ...daysArray]; }; + const isActiveDay = (day) => + day && + today.getDate() === day && + today.getMonth() === monthInt && + today.getFullYear() === yearInt; + const calendarDays = generateCalendarDays(); return ( @@ -49,12 +64,7 @@ const Calendar = () => { key={`${index}${percent}`} day={day} percent={percent} - isActive={ - day && - chosenDate.getDate() === day && - chosenDate.getMonth() === new Date().getMonth() && - chosenDate.getFullYear() === new Date().getFullYear() - } + isActive={isActiveDay(day)} /> ))} diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index 04a8b14..48f1ac4 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -3,5 +3,13 @@ .grid { display: grid; grid-template-columns: repeat(7, 1fr); - gap: 20px; + gap: 20px 18px; +} + +@media only screen and (min-width: 768px) { + .grid { + /* grid-template-columns: repeat(8, 1fr); */ + /* gap: 15px 48px; */ + gap: 15px 62px; + } } diff --git a/src/components/CalendarItem/CalendarItem.module.css b/src/components/CalendarItem/CalendarItem.module.css index 3c68483..493c359 100644 --- a/src/components/CalendarItem/CalendarItem.module.css +++ b/src/components/CalendarItem/CalendarItem.module.css @@ -1,10 +1,9 @@ .item { width: 28px; height: 44px; - margin: 0; - padding: 0; border: none; cursor: pointer; + background-color: transparent; } .item.empty { @@ -12,25 +11,31 @@ cursor: default; } -.item.active { - background-color: #2c3e50; +.item.active .dayNumber { + background-color: #323f47; + color: #9be1a0; } .dayNumber { display: inline-flex; - align-items: center; justify-content: center; + align-items: center; width: 28px; height: 28px; border-radius: 50%; - background-color: #fff; + background-color: rgba(50, 63, 71, 0.2); + font-weight: 700; + font-size: 14px; + font-family: "Poppins", sans-serif; + /* line-height: 1.3; */ + letter-spacing: -0.01em; } .percent { } -.item:hover { - background-color: aqua; +.item:hover .dayNumber { + background-color: #9be1a0; } @media only screen and (min-width: 768px) { @@ -38,4 +43,10 @@ width: 38px; height: 65px; } + .dayNumber { + width: 38px; + height: 38px; + font-size: 16px; + /* line-height: 1.5; */ + } } diff --git a/src/components/CalendarPagination/CalendarPagination.jsx b/src/components/CalendarPagination/CalendarPagination.jsx index 2251435..b070020 100644 --- a/src/components/CalendarPagination/CalendarPagination.jsx +++ b/src/components/CalendarPagination/CalendarPagination.jsx @@ -1,25 +1,34 @@ import { useDispatch, useSelector } from "react-redux"; import css from "./CalendarPagination.module.css"; -import { selectChosenDate } from "../../redux/water/selectors"; -import { setChosenDate } from "../../redux/water/slice"; +import { selectChosenMonth } from "../../redux/water/selectors"; +import { setChosenMonth } from "../../redux/water/slice"; const CalendarPagination = () => { const dispatch = useDispatch(); - const chosenDate = new Date(useSelector(selectChosenDate)); + const dateFromState = useSelector(selectChosenMonth); const handleMonthChange = (shift) => { - const updatedDate = new Date(chosenDate); - updatedDate.setMonth(updatedDate.getMonth() + shift); - dispatch(setChosenDate(updatedDate.toISOString())); + const [year, month] = dateFromState.split("-"); + const newMonth = parseInt(month) + shift; + let newDate; + if (newMonth === 0) { + newDate = parseInt(year) - 1 + "-12-01"; + } else if (newMonth === 13) { + newDate = parseInt(year) + 1 + "-01-01"; + } else { + newDate = year + "-" + newMonth.toString().padStart(2, "0") + "-01"; + } + + dispatch(setChosenMonth(newDate)); // Відправляємо нову дату }; const formatDate = (date) => - `${date.toLocaleString("default", { + `${new Date(date).toLocaleString("default", { month: "long", - })}, ${date.getFullYear()}`; + })}, ${date.slice(0, 4)}`; return ( -
+
- {formatDate(chosenDate)} + {formatDate(dateFromState)} +
- {isCalendarVisible ? : "Тут буде графік"} - + + {isCalendarVisible ? ( + + ) : ( +
"Тут буде графік"
+ )} + ); }; diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index db7af8c..8ca2cc6 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -1,3 +1,12 @@ +.sectionCalendar { + max-width: 303px; + margin: 0 auto; +} + +.box { + min-height: 300px; +} + .MonthInfo { margin-bottom: 24px; } @@ -11,11 +20,20 @@ color: #323f47; font-weight: 700; font-size: 20px; + font-family: "Poppins", sans-serif; line-height: 1.2; letter-spacing: -0.01em; } +.toggleViewBtn { + margin-left: 16px; +} + @media only screen and (min-width: 768px) { + .sectionCalendar { + max-width: 640px; + } + .title { font-size: 28px; line-height: 1.14; diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index 06f1a31..25a0d6f 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -41,7 +41,7 @@ const SignUpForm = () => { const email = values.emailSignUp; const password = values.passwordSignUp; const registerObj = { email, password }; - console.log(registerObj); + // console.log(registerObj); dispatch(apiRegister(registerObj)); actions.resetForm(); diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js new file mode 100644 index 0000000..60e4484 --- /dev/null +++ b/src/redux/settings/operations.js @@ -0,0 +1,4 @@ +import axios from "axios"; +import { createAsyncThunk } from "@reduxjs/toolkit"; + +axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; diff --git a/src/redux/settings/selectors.js b/src/redux/settings/selectors.js new file mode 100644 index 0000000..27c0aab --- /dev/null +++ b/src/redux/settings/selectors.js @@ -0,0 +1 @@ +export const selectDaysNotAsInWeek = (state) => state.settings.DaysNotAsInWeek; // Чи виставляти дні без врахування, як вони в тижні diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js new file mode 100644 index 0000000..e1583a8 --- /dev/null +++ b/src/redux/settings/slice.js @@ -0,0 +1,19 @@ +import { createSlice } from "@reduxjs/toolkit"; +// import { } from "./operations"; + +const INITIAL_STATE = { + DaysNotAsInWeek: false, +}; + +const settingsSlice = createSlice({ + name: "settings", + initialState: INITIAL_STATE, + reducers: { + setDaysNotAsInWeek(state, action) { + state.DaysNotAsInWeek = action.payload; + }, + }, +}); + +export const settingsReducer = settingsSlice.reducer; +export const { setDaysNotAsInWeek } = settingsSlice.actions; diff --git a/src/redux/store.js b/src/redux/store.js index 068e9fd..bacf46f 100644 --- a/src/redux/store.js +++ b/src/redux/store.js @@ -11,6 +11,7 @@ import { } from "redux-persist"; import storage from "redux-persist/lib/storage"; import { authReducer } from "./auth/slice"; +import { settingsReducer } from "./settings/slice"; import { waterReducer } from "./water/slice"; const authConfig = { @@ -19,6 +20,12 @@ const authConfig = { whitelist: ["token"], }; +const settingsConfig = { + key: "settings", + storage, + whitelist: ["settings"], +}; + const persistConfig = { key: "water", storage, @@ -28,6 +35,7 @@ const persistConfig = { export const store = configureStore({ reducer: { water: persistReducer(persistConfig, waterReducer), + settings: persistReducer(settingsConfig, settingsReducer), auth: persistReducer(authConfig, authReducer), }, middleware: (getDefaultMiddleware) => diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 8471a1c..832ec64 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -1,7 +1,7 @@ import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; -axios.defaults.baseURL = "https://api.com/endpoint"; +axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; export const fetchDaysDrinking = createAsyncThunk( "water/fetchDaysDrinking", diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index 1ec6fe8..eff8f91 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -1,4 +1,4 @@ -export const selectDaysDrinking = (state) => state.water.daysDrinking; // Дні -export const selectChosenDate = (state) => state.water.chosenDate; // Обрана дата -export const selectIsLoading = (state) => state.water.loading; // Лоадер -export const selectError = (state) => state.water.error; // Помилки +export const selectDaysDrinking = (state) => state.water.daysDrinking; // Дні пиття води +export const selectChosenMonth = (state) => state.water.chosenMonth; +export const selectIsLoading = (state) => state.water.loading; +export const selectError = (state) => state.water.error; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 75bc586..7926827 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -1,9 +1,12 @@ import { createSlice } from "@reduxjs/toolkit"; import { fetchDaysDrinking } from "./operations"; +const today = new Date().toISOString(); + const INITIAL_STATE = { daysDrinking: [], - chosenDate: Date.now(), + chosenDate: today.slice(0, 19), + chosenMonth: today.slice(0, 7), loading: false, error: null, }; @@ -12,8 +15,8 @@ const waterSlice = createSlice({ name: "water", initialState: INITIAL_STATE, reducers: { - setChosenDate(state, action) { - state.chosenDate = action.payload; + setChosenMonth(state, action) { + state.chosenMonth = action.payload; }, }, extraReducers: (builder) => { @@ -33,5 +36,5 @@ const waterSlice = createSlice({ }, }); -export const { setChosenDate } = waterSlice.actions; +export const { setChosenMonth } = waterSlice.actions; export const waterReducer = waterSlice.reducer; From 80289e468030a5087308c78f8de31451926ee7de Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Thu, 28 Nov 2024 20:21:23 +0200 Subject: [PATCH 065/185] add some styles and other minor improvements --- src/components/Calendar/Calendar.jsx | 1 - .../CalendarItem/CalendarItem.module.css | 14 +++++++++++--- .../CalendarPagination/CalendarPagination.jsx | 6 +++--- .../CalendarPagination.module.css | 5 ++++- src/components/MonthInfo/MonthInfo.jsx | 8 ++++++-- src/components/MonthInfo/MonthInfo.module.css | 19 +++++++++++++++++-- 6 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index bbc8735..03c206e 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -10,7 +10,6 @@ import CalendarItem from "../CalendarItem/CalendarItem"; const Calendar = () => { const daysNotAsInWeek = useSelector(selectDaysNotAsInWeek) ? true : false; - console.log(useSelector(selectDaysNotAsInWeek)); const isLoading = useSelector(selectIsLoading); const daysDrinking = useSelector(selectDaysDrinking); diff --git a/src/components/CalendarItem/CalendarItem.module.css b/src/components/CalendarItem/CalendarItem.module.css index 493c359..b9f282d 100644 --- a/src/components/CalendarItem/CalendarItem.module.css +++ b/src/components/CalendarItem/CalendarItem.module.css @@ -2,8 +2,8 @@ width: 28px; height: 44px; border: none; - cursor: pointer; background-color: transparent; + cursor: pointer; } .item.empty { @@ -22,16 +22,20 @@ align-items: center; width: 28px; height: 28px; + margin-bottom: 2px; border-radius: 50%; background-color: rgba(50, 63, 71, 0.2); font-weight: 700; font-size: 14px; font-family: "Poppins", sans-serif; - /* line-height: 1.3; */ letter-spacing: -0.01em; } .percent { + color: rgba(47, 47, 47, 0.6); + font-weight: 400; + font-size: 10px; + font-family: "Poppins", sans-serif; } .item:hover .dayNumber { @@ -46,7 +50,11 @@ .dayNumber { width: 38px; height: 38px; + margin-bottom: 6px; font-size: 16px; - /* line-height: 1.5; */ + } + + .percent { + font-size: 12px; } } diff --git a/src/components/CalendarPagination/CalendarPagination.jsx b/src/components/CalendarPagination/CalendarPagination.jsx index b070020..e38f776 100644 --- a/src/components/CalendarPagination/CalendarPagination.jsx +++ b/src/components/CalendarPagination/CalendarPagination.jsx @@ -12,11 +12,11 @@ const CalendarPagination = () => { const newMonth = parseInt(month) + shift; let newDate; if (newMonth === 0) { - newDate = parseInt(year) - 1 + "-12-01"; + newDate = parseInt(year) - 1 + "-12"; } else if (newMonth === 13) { - newDate = parseInt(year) + 1 + "-01-01"; + newDate = parseInt(year) + 1 + "-01"; } else { - newDate = year + "-" + newMonth.toString().padStart(2, "0") + "-01"; + newDate = year + "-" + newMonth.toString().padStart(2, "0"); } dispatch(setChosenMonth(newDate)); // Відправляємо нову дату diff --git a/src/components/CalendarPagination/CalendarPagination.module.css b/src/components/CalendarPagination/CalendarPagination.module.css index a118ae6..7c03939 100644 --- a/src/components/CalendarPagination/CalendarPagination.module.css +++ b/src/components/CalendarPagination/CalendarPagination.module.css @@ -4,7 +4,7 @@ } .arrow { - padding: 3px 10px; + padding: 0 10px; border: transparent; background-color: transparent; font-weight: 400; @@ -35,4 +35,7 @@ .arrow { font-size: 26px; } + .chosenMonth { + font-size: 16px; + } } diff --git a/src/components/MonthInfo/MonthInfo.jsx b/src/components/MonthInfo/MonthInfo.jsx index eb7e7b8..cf4b446 100644 --- a/src/components/MonthInfo/MonthInfo.jsx +++ b/src/components/MonthInfo/MonthInfo.jsx @@ -13,11 +13,15 @@ const MonthInfo = () => { return (
-

Month

+

+ {isCalendarVisible ? "Month" : "Statistics"} +

diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index 8ca2cc6..ff9f730 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -21,12 +21,18 @@ font-weight: 700; font-size: 20px; font-family: "Poppins", sans-serif; - line-height: 1.2; + /* line-height: 1.2; */ letter-spacing: -0.01em; } .toggleViewBtn { - margin-left: 16px; + margin-left: 6px; + border: transparent; + background-color: transparent; +} +.toggleViewBtnImg { + width: 20px; + height: 20px; } @media only screen and (min-width: 768px) { @@ -38,6 +44,15 @@ font-size: 28px; line-height: 1.14; } + + .toggleViewBtn { + margin-left: 10px; + } + + .toggleViewBtnImg { + width: 24px; + height: 24px; + } } /* @media only screen and (min-width: 1440px) { From 6556e2fcbfb1766d890e321d4f61e56bf16b880b Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Thu, 28 Nov 2024 20:59:26 +0200 Subject: [PATCH 066/185] Add selectChosenDate selector and upd DailyInfo component MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Додав селектор для обраної дати, переробив компонент DailyInfo тепер працює з селектором замість пропсу --- src/components/ChooseDate/ChooseDate.jsx | 6 ------ src/components/DailyInfo/DailyInfo.jsx | 11 ++++------- src/redux/water/selectors.js | 1 + 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/components/ChooseDate/ChooseDate.jsx b/src/components/ChooseDate/ChooseDate.jsx index 268cf0f..5c4e62a 100644 --- a/src/components/ChooseDate/ChooseDate.jsx +++ b/src/components/ChooseDate/ChooseDate.jsx @@ -1,4 +1,3 @@ -import PropTypes from "prop-types"; import css from "./ChooseDate.module.css"; const ChooseDate = ({ date }) => { @@ -28,9 +27,4 @@ const ChooseDate = ({ date }) => { return

{formattedDate}

; }; -// Валідація пропсів -ChooseDate.propTypes = { - date: PropTypes.string, -}; - export default ChooseDate; diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx index dc577e0..fab2903 100644 --- a/src/components/DailyInfo/DailyInfo.jsx +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -1,9 +1,10 @@ import { useMemo } from "react"; +import { selectChosenDate } from "../../redux/water/selectors.js"; +import { useSelector } from "react-redux"; import ChooseDate from "../ChooseDate/ChooseDate.jsx"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import WaterList from "../WaterList/WaterList.jsx"; import css from "./DailyInfo.module.css"; -import PropTypes from "prop-types"; // Функція для отримання поточної дати у форматі 'YYYY-MM-DDTHH:mm:ss' const today = () => { @@ -18,7 +19,8 @@ const today = () => { return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`; }; -const DailyInfo = ({ date }) => { +const DailyInfo = () => { + const date = useSelector(selectChosenDate); const defaultDate = useMemo(() => today(), []); // Розрахунок один раз const effectiveDate = date && isValidDate(date) ? date : defaultDate; // Перевірка валідності дати @@ -40,9 +42,4 @@ const isValidDate = (date) => { return regex.test(date); }; -// Валідація пропсів -DailyInfo.propTypes = { - date: PropTypes.string, // Очікується рядок у форматі 'YYYY-MM-DDTHH:mm:ss' -}; - export default DailyInfo; diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index eff8f91..395a2ae 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -1,4 +1,5 @@ export const selectDaysDrinking = (state) => state.water.daysDrinking; // Дні пиття води export const selectChosenMonth = (state) => state.water.chosenMonth; +export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; From 2dae8a27e05b7c0ff1d29ee28ebba66600b66eb4 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Thu, 28 Nov 2024 23:17:25 +0200 Subject: [PATCH 067/185] date in store udated by click on calendar day and some other improvements --- src/components/CalendarItem/CalendarItem.jsx | 14 +++++++++++++ .../CalendarPagination/CalendarPagination.jsx | 9 +++++++- .../WaterDetailedInfo/WaterDetailedInfo.jsx | 16 +++++++------- src/pages/TrackerPage/TrackerPage.jsx | 2 ++ src/redux/water/operations.js | 16 ++++++++++++++ src/redux/water/slice.js | 21 +++++++++++++++++-- 6 files changed, 67 insertions(+), 11 deletions(-) diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx index 67e1789..d666141 100644 --- a/src/components/CalendarItem/CalendarItem.jsx +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -1,6 +1,19 @@ +import { useDispatch, useSelector } from "react-redux"; import css from "./CalendarItem.module.css"; +import { fetchDayDetails } from "../../redux/water/operations"; +import { setChosenDate } from "../../redux/water/slice"; +import { selectChosenMonth } from "../../redux/water/selectors"; const CalendarItem = ({ day, percent, isActive }) => { + const dispatch = useDispatch(); + const monthFromState = useSelector(selectChosenMonth); + + const handleClick = () => { + const date = monthFromState + "-" + day.toString().padStart(2, 0); + dispatch(setChosenDate(date)); + dispatch(fetchDayDetails(date)); + }; + return ( diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 6cd8ccc..2296619 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -1,7 +1,4 @@ .container { - max-width: 343px; - margin-left: auto; - margin-right: auto; border-radius: 30px; background-color: #9be1a0; background-image: url("/src/img/water-main-info/bottle-mob.png"); @@ -23,7 +20,6 @@ @media only screen and (min-width: 768px) { .container { - max-width: 704px; padding: 32px 32px 150px; background-image: url("/src/img/water-main-info/bottle-tablet.png"); background-position: center 69px; @@ -37,9 +33,9 @@ @media only screen and (min-width: 1440px) { .container { - max-width: 672px; - margin-right: auto; - margin-left: 0; + flex: 1; + width: 50%; + box-sizing: border-box; background-image: url("/src/img/water-main-info/bottle-desktop.png"); } } diff --git a/src/pages/TrackerPage/TrackerPage.module.css b/src/pages/TrackerPage/TrackerPage.module.css index 8cbd2fd..b9fbe5a 100644 --- a/src/pages/TrackerPage/TrackerPage.module.css +++ b/src/pages/TrackerPage/TrackerPage.module.css @@ -2,10 +2,24 @@ padding: 16px; margin-left: auto; margin-right: auto; + display: flex; + gap: 16px; + flex-direction: column; + max-width: 375px; } @media only screen and (min-width: 768px) { .container { + max-width: 768px; padding: 32px; } } + +@media only screen and (min-width: 1440px) { + .container { + flex-direction: row; + flex-wrap: nowrap; + gap: 32px; + max-width: 1440px; + } +} From c911e354a93a7eb2c29678542544290a34a67d7d Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Fri, 29 Nov 2024 08:43:18 +0200 Subject: [PATCH 069/185] final styles for signin descktop --- src/pages/SignInPage/SignInPage.jsx | 32 ++++++++++------------ src/pages/SignInPage/SignInPage.module.css | 12 ++++---- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 465ec17..471290d 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -9,25 +9,23 @@ const SignInPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); return ( -
-
-
- -
- -
-
-

- Don't have an account?{" "} - - Sign Up - {" "} -

-
+
+
+ +
+
-
+
+

+ Don't have an account?{" "} + + Sign Up + {" "} +

+
+
{isDesktop && } -
+ ); }; diff --git a/src/pages/SignInPage/SignInPage.module.css b/src/pages/SignInPage/SignInPage.module.css index 7521c00..050a35d 100644 --- a/src/pages/SignInPage/SignInPage.module.css +++ b/src/pages/SignInPage/SignInPage.module.css @@ -79,11 +79,14 @@ @media only screen and (min-width: 1440px) { .signInSection { - min-width: 672px; - margin-right: 0; + display: flex; + gap: 32px; + max-width: 1440px; + margin: 0 auto; } .container { + min-width: 672px; padding-bottom: 169px; } @@ -91,11 +94,6 @@ margin-bottom: 113px; } - .descContainer { - display: flex; - flex-direction: row; - } - .advContainer { max-width: 672px; margin-left: 0; From af7d3be2b71a35ca60d14b599d3c7752da94264f Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Fri, 29 Nov 2024 10:05:40 +0100 Subject: [PATCH 070/185] adaptive position fixed css --- .../AdvantagesSection.module.css | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index fae7dc4..0dfbb8c 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -3,6 +3,10 @@ position: relative; } +.girl { + width: 100%; +} + .customers { display: flex; gap: 72px; @@ -104,6 +108,18 @@ color: var(--text-primary-light); } +@media (max-width: 374px) { + .customers { + left: 8px; + top: 172px; + } + + .benefits { + top: 224px; + left: 110px; + } +} + @media (min-width: 768px) { .customers { padding: 10px 20px; @@ -147,13 +163,16 @@ } @media only screen and (min-width: 1440px) { + .girl { + height: 736px; + } .customers { - left: 48px; - top: 534px; + left: 32px; + top: 537px; } .benefits { - top: 591px; - left: 414px; + top: 594px; + left: 366px; } } From 44cf589183a9b694cd883bb0550205105fc20585 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Fri, 29 Nov 2024 11:48:02 +0200 Subject: [PATCH 071/185] ESLint --- eslint.config.js | 6 +++--- src/components/WaterMainInfo/WaterMainInfo.jsx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 842b03d..1a8bd9f 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -5,9 +5,9 @@ import reactHooks from "eslint-plugin-react-hooks"; import reactRefresh from "eslint-plugin-react-refresh"; export default [ + { ignores: ["dist"] }, { - files: ["*/.{js,jsx}"], - ignores: ["dist"], + files: ["**/*.{js,jsx}"], languageOptions: { ecmaVersion: 2020, globals: globals.browser, @@ -28,12 +28,12 @@ export default [ ...react.configs.recommended.rules, ...react.configs["jsx-runtime"].rules, ...reactHooks.configs.recommended.rules, - "react/prop-types": 0, "react/jsx-no-target-blank": "off", "react-refresh/only-export-components": [ "warn", { allowConstantExport: true }, ], + "react/prop-types": 0, }, }, ]; diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index ff208e6..68526ef 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -1,6 +1,6 @@ import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; -import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; +пш; import css from "./WaterMainInfo.module.css"; From 66f8106bb6a36edf024fb2e55a776e0d13178d37 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Fri, 29 Nov 2024 11:51:05 +0200 Subject: [PATCH 072/185] ESLint --- src/components/AddWaterBtn/AddWaterBtn.jsx | 12 ++++++------ src/components/WaterMainInfo/WaterMainInfo.jsx | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index ea0136e..5260831 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -1,13 +1,13 @@ -import { useState } from "react"; +// import { useState } from "react"; import css from "./AddWaterBtn.module.css"; import clsx from "clsx"; const AddWaterBtn = ({ variant = "default" }) => { - const [isModalOpen, setIsModalOpen] = useState(false); + // const [isModalOpen, setIsModalOpen] = useState(false); - const openModal = () => { - setIsModalOpen(true); - }; + // const openModal = () => { + // setIsModalOpen(true); + // }; return ( <> @@ -18,7 +18,7 @@ const AddWaterBtn = ({ variant = "default" }) => { css.addBtn, variant === "alt" ? css.addBtnAlt : css.defaultBtn )} - onClick={openModal} + // onClick={openModal} > Date: Fri, 29 Nov 2024 12:07:21 +0200 Subject: [PATCH 073/185] added calc for container --- src/components/WaterMainInfo/WaterMainInfo.module.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.module.css b/src/components/WaterMainInfo/WaterMainInfo.module.css index 2296619..d2f8d0b 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.module.css +++ b/src/components/WaterMainInfo/WaterMainInfo.module.css @@ -33,8 +33,7 @@ @media only screen and (min-width: 1440px) { .container { - flex: 1; - width: 50%; + width: calc((100% - 32px) / 2); box-sizing: border-box; background-image: url("/src/img/water-main-info/bottle-desktop.png"); } From 82b1819e9741bf6409707828187b8290bdc36b6b Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Fri, 29 Nov 2024 12:15:31 +0200 Subject: [PATCH 074/185] changed styles --- .../SignUpForm/SignUpForm.module.css | 34 ++++++++----------- src/pages/SignUpPage/SignUpPage.jsx | 2 +- src/pages/SignUpPage/SignUpPage.module.css | 15 ++++---- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/src/components/SignUpForm/SignUpForm.module.css b/src/components/SignUpForm/SignUpForm.module.css index c50c0dd..8634b24 100644 --- a/src/components/SignUpForm/SignUpForm.module.css +++ b/src/components/SignUpForm/SignUpForm.module.css @@ -12,6 +12,7 @@ margin: 0 auto; } .fieldWrap { + position: relative; display: flex; flex-direction: column; margin-bottom: 16px; @@ -56,6 +57,7 @@ color: rgba(47, 47, 47, 0.6); } .errorMsg { + /* position: absolute; */ font-weight: 400; font-size: 14px; line-height: 1.28571; @@ -63,7 +65,6 @@ color: #ef5050; } - .btn { border-radius: 30px; border: none; @@ -76,7 +77,8 @@ background-color: #9be1a0; transition: background-color 250ms linear; cursor: pointer; - width: 311px; + width: 100%; + max-width: 311px; } .btn:hover, @@ -84,8 +86,9 @@ background-color: #87d28d; } -.toggleViewBtn{display:none} - +.toggleViewBtn { + display: none; +} @media only screen and (min-width: 768px) { /* .title { @@ -98,7 +101,7 @@ } .fieldWrap { - position:relative; + /* position: relative; */ margin-bottom: 20px; } @@ -123,27 +126,20 @@ .btn { font-size: 16px; line-height: 1.5; - width: 436px; + max-width: 436px; padding: 18px; } - .toggleViewBtn{ - display:block; - position:absolute; - top:50px; - right:18px; + .toggleViewBtn { + display: block; + position: absolute; + top: 50px; + right: 18px; background: none; border: none; cursor: pointer; } - .icon{ + .icon { fill: none; stroke: #2f2f2f; } } - - - - - - - diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index d562cdc..f404ce3 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -9,7 +9,7 @@ const SignUpPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); return (
-
+

Sign Up

diff --git a/src/pages/SignUpPage/SignUpPage.module.css b/src/pages/SignUpPage/SignUpPage.module.css index 89cf7f5..06cbc89 100644 --- a/src/pages/SignUpPage/SignUpPage.module.css +++ b/src/pages/SignUpPage/SignUpPage.module.css @@ -1,7 +1,7 @@ .section { padding: 16px; } -.container { +.formWrapper { margin: 0 auto; border-radius: 30px; max-width: 343px; @@ -39,7 +39,7 @@ .section { padding: 32px; } - .container { + .formWrapper { max-width: 704px; padding: 32px 32px 227px; } @@ -59,18 +59,21 @@ } } -@media only screen and (min-width: 768px) { +@media only screen and (min-width: 1440px) { .section { margin: 0 auto; max-width: 1440px; display: flex; gap: 32px; } - .container { - width: 50%; + .formWrapper { padding-bottom: 100px; + width: 50%; } .logo { - margin-bottom: 74px; + margin-bottom: 68px; + } + .title { + padding-left: 86px; } } From 041846d9914d2c1bb4215bbd4c669b8b0dd490bc Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Fri, 29 Nov 2024 12:27:33 +0200 Subject: [PATCH 075/185] position for err msg --- src/components/SignUpForm/SignUpForm.module.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/SignUpForm/SignUpForm.module.css b/src/components/SignUpForm/SignUpForm.module.css index 8634b24..e7c2532 100644 --- a/src/components/SignUpForm/SignUpForm.module.css +++ b/src/components/SignUpForm/SignUpForm.module.css @@ -57,7 +57,9 @@ color: rgba(47, 47, 47, 0.6); } .errorMsg { - /* position: absolute; */ + position: absolute; + top: 88px; + left: 0; font-weight: 400; font-size: 14px; line-height: 1.28571; From affe453ddc6e4cc38a1e51bc3629d0711499f5ce Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Fri, 29 Nov 2024 12:32:04 +0200 Subject: [PATCH 076/185] position for err msg for mobile and desktop --- src/components/SignUpForm/SignUpForm.module.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/SignUpForm/SignUpForm.module.css b/src/components/SignUpForm/SignUpForm.module.css index e7c2532..2d88ed6 100644 --- a/src/components/SignUpForm/SignUpForm.module.css +++ b/src/components/SignUpForm/SignUpForm.module.css @@ -58,7 +58,7 @@ } .errorMsg { position: absolute; - top: 88px; + top: 76px; left: 0; font-weight: 400; font-size: 14px; @@ -123,6 +123,7 @@ .errorMsg { font-size: 16px; line-height: 1.5; + top: 88px; } .btn { From 2e57468b5cae6be19d369b8a91e7a0230124b7ef Mon Sep 17 00:00:00 2001 From: ElmiraEminova <153520598+ElmiraEminova@users.noreply.github.com> Date: Fri, 29 Nov 2024 12:46:23 +0100 Subject: [PATCH 077/185] add style --- src/components/UserBar/UserBar.jsx | 81 ++++++++----------- src/components/UserBar/UserBar.module.css | 56 ++++++++++++- .../UserBarPopover/UserBarPopover.module.css | 34 +++++++- src/components/UserPanel/UserPanel.jsx | 13 +-- src/components/UserPanel/UserPanel.module.css | 40 ++++++++- .../WaterDetailedInfo/WaterDetailedInfo.jsx | 4 +- src/pages/TrackerPage/TrackerPage.module.css | 29 ++++++- 7 files changed, 194 insertions(+), 63 deletions(-) diff --git a/src/components/UserBar/UserBar.jsx b/src/components/UserBar/UserBar.jsx index 5f7cb77..33de87b 100644 --- a/src/components/UserBar/UserBar.jsx +++ b/src/components/UserBar/UserBar.jsx @@ -1,45 +1,44 @@ import { useState, useRef } from "react"; import { usePopper } from "react-popper"; -import UserBarPopover from "../UserBarPopover/UserBarPopover.jsx" +import { HiChevronDown, HiChevronUp } from "react-icons/hi"; +import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; import css from './UserBar.module.css'; const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { - const defaultUserName = userName || "Nadia"; + const defaultUserName = userName || "Nadia"; const avatarPlaceholder = defaultUserName.charAt(0).toUpperCase(); - + const [isPopoverOpen, setIsPopoverOpen] = useState(false); const buttonRef = useRef(null); const popoverRef = useRef(null); const { styles, attributes } = usePopper(buttonRef.current, popoverRef.current, { - placement: 'bottom', - modifiers: [ - { - name: "offset", - options: { - offset: [0, 8], + placement: 'bottom', + modifiers: [ + { + name: "offset", + options: { offset: [0, 8] }, + }, + { + name: "preventOverflow", + options: { boundary: "window" }, }, - }, - { - name: "preventOverflow", - options: { boundary: "window" }, - }, - { - name: "sameWidth", - enabled: true, - phase: "beforeWrite", - requires: ["computeStyles"], - fn: ({ state }) => { - state.styles.popper.width = `${state.rects.reference.width}px`; + { + name: "sameWidth", + enabled: true, + phase: "beforeWrite", + requires: ["computeStyles"], + fn: ({ state }) => { + state.styles.popper.width = `${state.rects.reference.width}px`; + }, }, - }, - ], -}); + ], + }); const togglePopover = () => { - console.log("Popover toggled"); - setIsPopoverOpen((prev) => !prev); -}; + setIsPopoverOpen((prev) => !prev); + }; + const closePopover = () => setIsPopoverOpen(false); return ( @@ -49,36 +48,20 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { onClick={togglePopover} className={css.userbar} > - {defaultUserName} + {defaultUserName} {avatarUrl ? ( Avatar ) : ( -
+
{avatarPlaceholder}
)} - + + {isPopoverOpen ? : } {isPopoverOpen && ( @@ -91,7 +74,7 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { closePopover={closePopover} /> )} - {isPopoverOpen &&
} + {isPopoverOpen &&
}
); }; diff --git a/src/components/UserBar/UserBar.module.css b/src/components/UserBar/UserBar.module.css index 189ff91..618a723 100644 --- a/src/components/UserBar/UserBar.module.css +++ b/src/components/UserBar/UserBar.module.css @@ -1 +1,55 @@ -/*style*/ +.container { + position: relative; +} + +.userbar { + display: flex; + gap: 8px; + align-items: center; + padding-left: 12px; + padding-right: 12px; + border-radius: 30px; + height: 50px; + background-color: #323f47; +} + +.name { + font-family: var(--font-family); + font-weight: 700; + font-size: 14px; + /* line-height: 150%; + letter-spacing: -0.01em; */ + text-align: center; + color: white; +} + +.avatar { + width: 38px; + height: 38px; + border-radius: 50%; + object-fit: cover; +} + +.avatarPlaceholder { + width: 38px; + height: 38px; + border-radius: 50%; + background-color: white; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + font-weight: bold; + color: black; +} + +.icon { + color: white; +} + +@media (min-width: 768px) { + .userbar { + gap: 10px; + height: 56px; + } +} diff --git a/src/components/UserBarPopover/UserBarPopover.module.css b/src/components/UserBarPopover/UserBarPopover.module.css index 189ff91..2d27854 100644 --- a/src/components/UserBarPopover/UserBarPopover.module.css +++ b/src/components/UserBarPopover/UserBarPopover.module.css @@ -1 +1,33 @@ -/*style*/ +/* .userbarpopover { + position: absolute; + background-color: white; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + border-radius: 8px; + padding: 8px 0; + z-index: 1000; + width: auto; +} + +.popoverbutton { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 20px; + width: 100%; + text-align: left; + font-family: var(--font-family, Arial, sans-serif); + font-size: 14px; + font-weight: 600; + color: #323f47; + background: none; + border: none; + cursor: pointer; +} + +.popoverbutton:hover { + background-color: #f5f7f9; +} + +.popoverbutton:focus { + outline: 2px solid #0073e6; +} */ diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx index e6c25f3..735819c 100644 --- a/src/components/UserPanel/UserPanel.jsx +++ b/src/components/UserPanel/UserPanel.jsx @@ -1,10 +1,11 @@ import { useState } from "react"; -import UserBar from "../UserBar/UserBar.jsx"; -import UserSettingsModal from "../UserSettingsModal/UserSettingsModal.jsx"; -import LogOutModal from "../LogOutModal/LogOutModal.jsx"; +import UserBar from "../../components/UserBar/UserBar.jsx"; +// import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; +// import LogOutModal from "../../modals/LogOutModal/LogOutModal.jsx"; import css from "./UserPanel.module.css" const UserPanel = ({ userName, avatarUrl }) => { + const defaultUserName = userName || "Nadia"; const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false); const [isLogOutModalOpen, setIsLogOutModalOpen] = useState(false); @@ -23,19 +24,19 @@ const handleOpenLogOut = () => { return (
-

Hello, {userName}!

+

Hello, {defaultUserName}!

- {isSettingsModalOpen && ( + {/* {isSettingsModalOpen && ( )} {isLogOutModalOpen && ( - )} + )} */}
); }; diff --git a/src/components/UserPanel/UserPanel.module.css b/src/components/UserPanel/UserPanel.module.css index 189ff91..472fa70 100644 --- a/src/components/UserPanel/UserPanel.module.css +++ b/src/components/UserPanel/UserPanel.module.css @@ -1 +1,39 @@ -/*style*/ +.userpanel { + display: flex; + flex-direction: column; + gap: 20px; + /* justify-content: space-between; */ +} + +.greeting { + font-family: "Gilroy", sans-serif; + font-weight: 400; + font-size: 32px; + /* line-height: 106%; + letter-spacing: -0.01em; */ +} + +.name { + font-family: "Gilroy", sans-serif; + font-size: 32px; + /* line-height: 106%; + letter-spacing: -0.01em; */ + font-weight: 700; +} + +@media (min-width: 768px) { + .userpanel { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + + .greeting { + font-size: 36px; + } + + .name { + font-size: 36px; + } +} diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx index 43f2c77..4bd84fc 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -1,4 +1,4 @@ -// import UserPanel from "../UserPanel/UserPanel/UserPanel.jsx"; +import UserPanel from "../../components/UserPanel/UserPanel.jsx"; // import DailyInfo from "../DailyInfo/DailyInfo.jsx"; import MonthInfo from "../../components/MonthInfo/MonthInfo.jsx"; import css from "./WaterDetailedInfo.module.css"; @@ -6,7 +6,7 @@ import css from "./WaterDetailedInfo.module.css"; const WaterDetailedInfo = () => { return (
- {/* */} + {/* */}
diff --git a/src/pages/TrackerPage/TrackerPage.module.css b/src/pages/TrackerPage/TrackerPage.module.css index 8cbd2fd..d056d8d 100644 --- a/src/pages/TrackerPage/TrackerPage.module.css +++ b/src/pages/TrackerPage/TrackerPage.module.css @@ -1,11 +1,34 @@ .container { - padding: 16px; + display: flex; + flex-direction: column; + gap: 16px; margin-left: auto; margin-right: auto; + max-width: 1440px; + min-width: 320px; + padding: 16px 16px; } -@media only screen and (min-width: 768px) { +/* BREAKPOINTS (Mobile First) */ +/* sm */ +@media (min-width: 375px) { .container { - padding: 32px; + width: 375px; + } +} + +/* md */ +@media (min-width: 768px) { + .container { + width: 768px; + padding: 32px 32px; + } +} + +@media (min-width: 1440px) { + .container { + flex-direction: row; + width: 1440px; + gap: 32px; } } From 72e061d435c03cb152d204ebe0ce24c029a7d530 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Fri, 29 Nov 2024 17:34:43 +0100 Subject: [PATCH 078/185] fixed homepage and returned initial position --- src/components/AdvantagesSection/AdvantagesSection.module.css | 2 +- src/pages/HomePage/HomePage.module.css | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 0dfbb8c..8e02ffa 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -173,6 +173,6 @@ .benefits { top: 594px; - left: 366px; + left: 398px; } } diff --git a/src/pages/HomePage/HomePage.module.css b/src/pages/HomePage/HomePage.module.css index bc61e32..ac58ce7 100644 --- a/src/pages/HomePage/HomePage.module.css +++ b/src/pages/HomePage/HomePage.module.css @@ -84,7 +84,6 @@ .welcomeSection, .advantagesSection { width: 50%; - flex: 1; } .welcomeSection { From c56b3d7c966c660714e49abbdcffdd6d3ed2dc0a Mon Sep 17 00:00:00 2001 From: ElmiraEminova <153520598+ElmiraEminova@users.noreply.github.com> Date: Fri, 29 Nov 2024 18:00:20 +0100 Subject: [PATCH 079/185] change style to wdi --- .../WaterDetailedInfo.module.css | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css index 938b056..2f98cda 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css @@ -1,10 +1,22 @@ .container { background-color: #f0eff4; border-radius: 20px; - padding-top: 32px; - padding-left: 32px; - padding-right: 32px; + border: 1px solid #000; + padding: 16px; display: flex; flex-direction: column; gap: 40px; } + +@media (min-width: 768px) { + .container { + padding: 32px; + border: none; + } +} + +@media only screen and (min-width: 1440px) { + .container { + width: calc((100% - 32px) / 2); + } +} From 6552c5b6c74527e819ea92ba2b64cfa36a70654f Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Fri, 29 Nov 2024 18:03:39 +0100 Subject: [PATCH 080/185] update modals (Modal, LogOut, Delete) --- .../DeleteWaterModal/DeleteWaterModal.jsx | 15 +++++--- .../DeleteWaterModal.module.css | 4 +-- src/modals/LogOutModal/LogOutModal.jsx | 19 +++++----- src/modals/LogOutModal/LogOutModal.module.css | 4 +-- src/modals/Modal/Modal.jsx | 30 ++++++++-------- src/modals/Modal/Modal.module.css | 35 +++++++++++++------ 6 files changed, 63 insertions(+), 44 deletions(-) diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx index 8c3e070..57b33be 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -1,10 +1,15 @@ import css from "./DeleteWaterModal.module.css"; import Modal from "../Modal/Modal"; -const DeleteWaterModal = () => { +const DeleteWaterModal = ({ isOpen, onClose }) => { + const handleDelete = () => { + // логика удаления воды + onClose(); + // оповещение с помощью Toast + }; return ( - -
+ +

Delete entry

Are you sure you want to delete the entry?

@@ -14,7 +19,7 @@ const DeleteWaterModal = () => { className={css.deleteBtn} type="button" aria-label="Delete button" - // onClick={handleDelete} + onClick={handleDelete} > Delete @@ -22,7 +27,7 @@ const DeleteWaterModal = () => { className={css.cancelBtn} type="button" aria-label="Cancel button" - // onClick={closeModal} + onClick={onClose} > Cancel diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.module.css b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css index 1933602..a7f397d 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.module.css +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.module.css @@ -1,4 +1,4 @@ -.modalWindow { +.modal_content { background-color: var(--background-primary-light); border-radius: 15px; padding: 40px 14px; @@ -69,7 +69,7 @@ } @media only screen and (min-width: 768px) { - .modalWindow { + .modal_content { padding: 40px 78.5px; width: 516px; max-width: 516px; diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index 8c4cfd2..b1d36cd 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -4,13 +4,12 @@ import Modal from "../Modal/Modal"; // import { useDispatch } from "react-redux"; // import { logOut } from "../../redux/auth/operations"; -const LogOutModal = () => { +const LogOutModal = ({ isOpen, onClose }) => { // const dispatch = useDispatch(); - // const closeModal = ? ; return ( - -
+ +

Log Out

Do you really want to leave?

@@ -20,11 +19,11 @@ const LogOutModal = () => { className={css.logoutBtn} type="button" aria-label="Logout button" - // onClick={() => { - // dispatch(logOut()); - // closeModal(); - // }} - // Плюс не забыть оповещение с помощью Toast + onClick={() => { + // dispatch(logOut()) - логика выхода юзера; + onClose(); + // оповещение с помощью Toast + }} > Log Out @@ -32,7 +31,7 @@ const LogOutModal = () => { className={css.cancelBtn} type="button" aria-label="Cancel button" - // onClick={closeModal} + onClick={onClose} > Cancel diff --git a/src/modals/LogOutModal/LogOutModal.module.css b/src/modals/LogOutModal/LogOutModal.module.css index 922b6c9..a568742 100644 --- a/src/modals/LogOutModal/LogOutModal.module.css +++ b/src/modals/LogOutModal/LogOutModal.module.css @@ -1,4 +1,4 @@ -.modalWindow { +.modal_content { background-color: var(--background-primary-light); border-radius: 15px; padding: 40px 14px; @@ -69,7 +69,7 @@ } @media only screen and (min-width: 768px) { - .modalWindow { + .modal_content { padding: 40px 78.5px; width: 516px; max-width: 516px; diff --git a/src/modals/Modal/Modal.jsx b/src/modals/Modal/Modal.jsx index 0a8e008..56875c5 100644 --- a/src/modals/Modal/Modal.jsx +++ b/src/modals/Modal/Modal.jsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; import css from "./Modal.module.css"; -import { icons as sprite } from "../../icons/index"; +import { icons as sprite } from "../../../public/icons/index"; const Modal = ({ isOpen, onClose, children }) => { useEffect(() => { @@ -20,20 +20,22 @@ const Modal = ({ isOpen, onClose, children }) => { return null; } return ( -
-
e.stopPropagation()}> - +
+
+
e.stopPropagation()}> + - {children} + {children} +
); diff --git a/src/modals/Modal/Modal.module.css b/src/modals/Modal/Modal.module.css index 2879acc..838f2e5 100644 --- a/src/modals/Modal/Modal.module.css +++ b/src/modals/Modal/Modal.module.css @@ -1,44 +1,57 @@ -.backdrop { +.modal_backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); + overflow: hidden; + overflow-y: auto; + z-index: 999; } -.modalWindow { +.modal_wrapper { + position: absolute; + top: 0; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + min-height: 100%; +} +.modal_content { + position: relative; background: var(--background-primary-light); border-radius: 15px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + transform: translateY(-50px); + transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1); } -.closeBtn { +.modal_closeBtn { position: absolute; top: 20px; right: 16px; + padding: 0; background-color: transparent; border: transparent; cursor: pointer; } -.closeIcon { +.modal_closeIcon { width: 24px; height: 24px; stroke: var(--text-primary-dark); transition: stroke 300ms cubic-bezier(0.4, 0, 0.2, 1); } -.closeBtn .closeIcon:hover { +.modal_closeBtn .modal_closeIcon:hover { stroke: var(--accent); } @media only screen and (min-width: 768px) { - .closeBtn { + .modal_closeBtn { right: 20px; } - .closeIcon { + .modal_closeIcon { width: 28px; height: 28px; } From de5ab96e1e0edc2fb3a17730898a666e02c504aa Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Fri, 29 Nov 2024 21:06:12 +0100 Subject: [PATCH 081/185] Update LogOutModal.jsx --- src/modals/LogOutModal/LogOutModal.jsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index b1d36cd..e1b3adf 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -1,11 +1,12 @@ import css from "./LogOutModal.module.css"; import Modal from "../Modal/Modal"; -// import { useDispatch } from "react-redux"; -// import { logOut } from "../../redux/auth/operations"; +import { useDispatch } from "react-redux"; +import { apiLogout } from "../../redux/auth/operations"; +// import toast from "react-hot-toast"; const LogOutModal = ({ isOpen, onClose }) => { - // const dispatch = useDispatch(); + const dispatch = useDispatch(); return ( @@ -20,9 +21,10 @@ const LogOutModal = ({ isOpen, onClose }) => { type="button" aria-label="Logout button" onClick={() => { - // dispatch(logOut()) - логика выхода юзера; + dispatch(apiLogout()); onClose(); - // оповещение с помощью Toast + // вставить оповещение с помощью Toast, типа: + // toast.success('toast.logOut') }} > Log Out From 6d36122d517842de5829a3d3c30d705c38a2013d Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sat, 30 Nov 2024 02:26:28 +0200 Subject: [PATCH 082/185] adde slice currentAmountWater --- src/redux/water/operations.js | 14 +++++++++++++- src/redux/water/selectors.js | 2 ++ src/redux/water/slice.js | 19 ++++++++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 7b88683..a81055f 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -1,7 +1,7 @@ import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; -axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; +axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/api/water"; export const fetchDaysDrinking = createAsyncThunk( "water/fetchDaysDrinking", @@ -32,3 +32,15 @@ export const fetchDayDetails = createAsyncThunk( } } ); + +export const getCurrentAmountWater = createAsyncThunk( + "water/totalAmountWater", + async (_, thunkApi) => { + try { + const { data } = await axios.get("/"); + return data.amount; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index 395a2ae..7e2b512 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,3 +3,5 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; +export const selectCurrentAmountWater = (state) => + state.water.currentAmountWater; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 4c84337..60f826a 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -1,5 +1,9 @@ import { createSlice } from "@reduxjs/toolkit"; -import { fetchDaysDrinking, fetchDayDetails } from "./operations"; +import { + fetchDaysDrinking, + fetchDayDetails, + getCurrentAmountWater, +} from "./operations"; const today = new Date().toISOString(); @@ -8,6 +12,7 @@ const INITIAL_STATE = { dayDetails: [], chosenDate: today.slice(0, 19), chosenMonth: today.slice(0, 7), + currentAmountWater: [], loading: false, error: null, }; @@ -49,6 +54,18 @@ const waterSlice = createSlice({ .addCase(fetchDayDetails.rejected, (state, action) => { state.loading = false; state.error = action.payload; + }) + .addCase(getCurrentAmountWater.pending, (state) => { + state.loading = true; + state.error = null; + }) + .addCase(getCurrentAmountWater.fulfilled, (state, { payload }) => { + state.loading = false; + state.currentAmountWater = payload; + }) + .addCase(getCurrentAmountWater.rejected, (state, { payload }) => { + state.loading = false; + state.error = payload; }); }, }); From e5f5e0e59beab6a036265a24b71b65e3003003a1 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sat, 30 Nov 2024 02:36:59 +0200 Subject: [PATCH 083/185] up --- src/components/WaterProgressBar/WaterProgressBar.jsx | 4 ++-- src/redux/water/operations.js | 4 ++-- src/redux/water/selectors.js | 3 +-- src/redux/water/slice.js | 8 ++++---- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index 8f5dea8..4610140 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -1,9 +1,9 @@ // import { useSelector } from "react-redux"; +// import { selectCurrentAmountWater } from "../../redux/water/selectors.js"; import css from "./WaterProgressBar.module.css"; const WaterProgressBar = () => { - // const { currentAmount, dailyNorma, history } = useSelector(selectWater); - + // const currentAmount = useSelector(selectCurrentAmountWater); // export const formatVolume = (ml) => { // return `${(ml / 1000).toFixed(1)} L`; // }; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index a81055f..64c18a9 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -33,8 +33,8 @@ export const fetchDayDetails = createAsyncThunk( } ); -export const getCurrentAmountWater = createAsyncThunk( - "water/totalAmountWater", +export const getWaterAmount = createAsyncThunk( + "water/waterAmount", async (_, thunkApi) => { try { const { data } = await axios.get("/"); diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index 7e2b512..cc7263a 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,5 +3,4 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; -export const selectCurrentAmountWater = (state) => - state.water.currentAmountWater; +export const selectWaterAmount = (state) => state.water.currentAmountWater; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 60f826a..d2f8062 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -12,7 +12,7 @@ const INITIAL_STATE = { dayDetails: [], chosenDate: today.slice(0, 19), chosenMonth: today.slice(0, 7), - currentAmountWater: [], + waterAmount: [], loading: false, error: null, }; @@ -55,15 +55,15 @@ const waterSlice = createSlice({ state.loading = false; state.error = action.payload; }) - .addCase(getCurrentAmountWater.pending, (state) => { + .addCase(getWaterAmount.pending, (state) => { state.loading = true; state.error = null; }) - .addCase(getCurrentAmountWater.fulfilled, (state, { payload }) => { + .addCase(getWaterAmount.fulfilled, (state, { payload }) => { state.loading = false; state.currentAmountWater = payload; }) - .addCase(getCurrentAmountWater.rejected, (state, { payload }) => { + .addCase(getWaterAmount.rejected, (state, { payload }) => { state.loading = false; state.error = payload; }); From b2899328fbe790ff459f8d8cb3fb377137f91c7d Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sat, 30 Nov 2024 02:40:28 +0200 Subject: [PATCH 084/185] up --- src/redux/water/selectors.js | 2 +- src/redux/water/slice.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index cc7263a..7153276 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,4 +3,4 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; -export const selectWaterAmount = (state) => state.water.currentAmountWater; +export const selectWaterAmount = (state) => state.water.waterAmount; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index d2f8062..908f4d1 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -2,7 +2,7 @@ import { createSlice } from "@reduxjs/toolkit"; import { fetchDaysDrinking, fetchDayDetails, - getCurrentAmountWater, + getWaterAmount, } from "./operations"; const today = new Date().toISOString(); @@ -61,7 +61,7 @@ const waterSlice = createSlice({ }) .addCase(getWaterAmount.fulfilled, (state, { payload }) => { state.loading = false; - state.currentAmountWater = payload; + state.waterAmount = payload; }) .addCase(getWaterAmount.rejected, (state, { payload }) => { state.loading = false; From 293959ea943f1844bc3dc6a70e85b719a3dbe4bb Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sat, 30 Nov 2024 02:42:25 +0100 Subject: [PATCH 085/185] add setting form --- src/components/UserPanel/UserPanel.jsx | 40 +++++----- .../UsersSettingsForm/UsersSettingsForm.jsx | 74 ++++++++++++++++++- 2 files changed, 92 insertions(+), 22 deletions(-) diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx index 735819c..4c7770c 100644 --- a/src/components/UserPanel/UserPanel.jsx +++ b/src/components/UserPanel/UserPanel.jsx @@ -1,44 +1,42 @@ -import { useState } from "react"; +import { useState } from "react"; import UserBar from "../../components/UserBar/UserBar.jsx"; -// import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; -// import LogOutModal from "../../modals/LogOutModal/LogOutModal.jsx"; -import css from "./UserPanel.module.css" +import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; +import LogOutModal from "../../modals/LogOutModal/LogOutModal.jsx"; +import css from "./UserPanel.module.css"; const UserPanel = ({ userName, avatarUrl }) => { - const defaultUserName = userName || "Nadia"; + const defaultUserName = userName || "Nadia"; const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false); const [isLogOutModalOpen, setIsLogOutModalOpen] = useState(false); const handleOpenSettings = () => { - console.log("Settings modal opened"); - setIsSettingsModalOpen(true); -}; -const handleOpenLogOut = () => { - console.log("Log out modal opened"); - setIsLogOutModalOpen(true); -}; + console.log("Settings modal opened"); + setIsSettingsModalOpen(true); + }; + const handleOpenLogOut = () => { + console.log("Log out modal opened"); + setIsLogOutModalOpen(true); + }; const handleCloseModals = () => { setIsSettingsModalOpen(false); setIsLogOutModalOpen(false); }; return ( -
-

Hello, {defaultUserName}!

+
+

+ Hello, {defaultUserName}! +

- {/* {isSettingsModalOpen && ( - - )} - {isLogOutModalOpen && ( - - )} */} + {isSettingsModalOpen && } + {isLogOutModalOpen && }
); }; -export default UserPanel; \ No newline at end of file +export default UserPanel; diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index a78dbb0..3488be1 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -1,5 +1,77 @@ +import { useForm } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import * as Yup from "yup"; +import css from "./UsersSettingsForm.module.css"; + +const validationSettingSchema = Yup.object().shape({ + avatarUrl: Yup.mixed(), + gender: Yup.string().oneOf(["woman", "man"]).required("Gender is required"), + name: Yup.string().required("Name is required"), + email: Yup.string().email("Invalid email").required("Email is required"), + weight: Yup.number() + .positive("Weight must be a positive number") + .nullable() + .required("Weight is required"), + activeTime: Yup.number() + .min(0, "Active time cannot be negative") + .required("Active time is required") + .nullable(), + dailyNorm: Yup.number() + .positive("Water norm must be a positive number") + .nullable() + .required("Water norm is required"), +}); + const UsersSettingsForm = () => { - return <>Hello; + const [avatarPreview, setAvatarPreview] = useState(null); + const { + register, + handleSubmit, + setValue, + watch, + formState: { errors }, + } = useForm({ + resolver: yupResolver(validationSettingSchema), + }); + + const weight = watch("weight"); + const activeTime = watch("activeTime"); + const gender = watch("gender"); + + const handleAvatarChange = (e) => { + const file = e.target.files[0]; + if (file) { + setAvatarPreview(URL.createObjectURL(file)); + setValue("avatarUrl", e.target.files); + } + }; + + return ( +
console.log(d))} + > +
+ + + +
+
+ ); }; export default UsersSettingsForm; From 20881a6138378b872f87087ede0bda3b86d6ee70 Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:39:20 +0200 Subject: [PATCH 086/185] upd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit змінив формат дати, розкоментував для відображення в компоненті WaterDetailedInfo --- src/components/DailyInfo/DailyInfo.jsx | 16 +++------------- .../WaterDetailedInfo/WaterDetailedInfo.jsx | 4 ++-- src/redux/water/slice.js | 2 +- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx index fab2903..3907b6e 100644 --- a/src/components/DailyInfo/DailyInfo.jsx +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -6,23 +6,20 @@ import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import WaterList from "../WaterList/WaterList.jsx"; import css from "./DailyInfo.module.css"; -// Функція для отримання поточної дати у форматі 'YYYY-MM-DDTHH:mm:ss' +// Функція для отримання поточної дати у форматі 'YYYY-MM-DD' const today = () => { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, "0"); // Місяці з 0 const day = String(now.getDate()).padStart(2, "0"); - const hours = String(now.getHours()).padStart(2, "0"); - const minutes = String(now.getMinutes()).padStart(2, "0"); - const seconds = String(now.getSeconds()).padStart(2, "0"); - return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`; + return `${year}-${month}-${day}`; }; const DailyInfo = () => { const date = useSelector(selectChosenDate); const defaultDate = useMemo(() => today(), []); // Розрахунок один раз - const effectiveDate = date && isValidDate(date) ? date : defaultDate; // Перевірка валідності дати + const effectiveDate = date || defaultDate; return (
@@ -35,11 +32,4 @@ const DailyInfo = () => { ); }; -// Функція для перевірки валідності дати у форматі 'YYYY-MM-DDTHH:mm:ss' -const isValidDate = (date) => { - // Регулярний вираз для перевірки формату 'YYYY-MM-DDTHH:mm:ss' - const regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/; - return regex.test(date); -}; - export default DailyInfo; diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx index 4bd84fc..4e8bc40 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -1,5 +1,5 @@ import UserPanel from "../../components/UserPanel/UserPanel.jsx"; -// import DailyInfo from "../DailyInfo/DailyInfo.jsx"; +import DailyInfo from "../DailyInfo/DailyInfo.jsx"; import MonthInfo from "../../components/MonthInfo/MonthInfo.jsx"; import css from "./WaterDetailedInfo.module.css"; @@ -7,7 +7,7 @@ const WaterDetailedInfo = () => { return (
- {/* */} +
); diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 908f4d1..e26f2f0 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -10,7 +10,7 @@ const today = new Date().toISOString(); const INITIAL_STATE = { daysDrinking: [], dayDetails: [], - chosenDate: today.slice(0, 19), + chosenDate: today.slice(0, 10), chosenMonth: today.slice(0, 7), waterAmount: [], loading: false, From 132e4c53b98d3be5a8cf149795caa693ae406293 Mon Sep 17 00:00:00 2001 From: Oleksii Ozyrskyi Date: Sat, 30 Nov 2024 18:09:54 +0100 Subject: [PATCH 087/185] idk --- eslint.config.js | 34 +++++++-------- src/App.jsx | 58 ++++++++++---------------- src/components/WaterForm/WaterForm.jsx | 13 ++---- src/modals/WaterModal/WaterModal.jsx | 35 +++++++++++++++- 4 files changed, 77 insertions(+), 63 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 238d2e4..2cf9713 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,38 +1,38 @@ -import js from '@eslint/js' -import globals from 'globals' -import react from 'eslint-plugin-react' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' +import js from "@eslint/js"; +import globals from "globals"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; export default [ - { ignores: ['dist'] }, + { ignores: ["dist"] }, { - files: ['**/*.{js,jsx}'], + files: ["**/*.{js,jsx}"], languageOptions: { ecmaVersion: 2020, globals: globals.browser, parserOptions: { - ecmaVersion: 'latest', + ecmaVersion: "latest", ecmaFeatures: { jsx: true }, - sourceType: 'module', + sourceType: "module", }, }, - settings: { react: { version: '18.3' } }, + settings: { react: { version: "18.3" } }, plugins: { react, - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, + "react-hooks": reactHooks, + "react-refresh": reactRefresh, }, rules: { ...js.configs.recommended.rules, ...react.configs.recommended.rules, - ...react.configs['jsx-runtime'].rules, + ...react.configs["jsx-runtime"].rules, ...reactHooks.configs.recommended.rules, - 'react/jsx-no-target-blank': 'off', - 'react-refresh/only-export-components': [ - 'warn', + "react/jsx-no-target-blank": "off", + "react-refresh/only-export-components": [ + "warn", { allowConstantExport: true }, ], }, }, -] +]; diff --git a/src/App.jsx b/src/App.jsx index a048ff7..9a922f9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,43 +4,31 @@ import PrivateRoute from "./components/PrivateRoute/PrivateRoute"; import RestrictedRoute from "./components/RestrictedRoute/RestrictedRoute"; import { Route, Routes } from "react-router-dom"; -// const HomePage = lazy(() => import("./pages/HomePage/HomePage")); -// const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); -// const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); -// const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); +const HomePage = lazy(() => import("./pages/HomePage/HomePage")); +const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); +const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); +const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); -// function App() { -// return ( -// }> -// -// } /> -// } />} -// /> -// } />} -// /> -// } />} -// /> -// -// -// ); -// } - -// export default App; - -import WaterForm from "./components/WaterForm/WaterForm.jsx"; - -const App = () => { +function App() { return ( -
- -
+ }> + + } /> + } />} + /> + } />} + /> + } />} + /> + + ); -}; +} export default App; diff --git a/src/components/WaterForm/WaterForm.jsx b/src/components/WaterForm/WaterForm.jsx index f496b55..66b44b5 100644 --- a/src/components/WaterForm/WaterForm.jsx +++ b/src/components/WaterForm/WaterForm.jsx @@ -15,13 +15,8 @@ const entriesValidationSchema = Yup.object().shape({ recordingTime: Yup.date().required("Required"), }); -const WaterForm = () => { - const [amount, setAmount] = useState(50); - - const initialValues = { - amountOfWater: 50, - recordingTime: new Date(), - }; +const WaterForm = ({ title, paragraph, initialValues }) => { + const [amount, setAmount] = useState(initialValues.amountOfWater); const handleSubmit = (values) => { const formattedTime = values.recordingTime.toISOString().slice(11, 16); @@ -62,8 +57,8 @@ const WaterForm = () => { return (
-

Add water

-

Choose a value:

+

{title}

+

{paragraph}:

Amount of water:

diff --git a/src/modals/WaterModal/WaterModal.jsx b/src/modals/WaterModal/WaterModal.jsx index 5ab075c..f73e600 100644 --- a/src/modals/WaterModal/WaterModal.jsx +++ b/src/modals/WaterModal/WaterModal.jsx @@ -1,5 +1,36 @@ -const WaterModal = () => { - return <>; +import WaterForm from "../../components/WaterForm/WaterForm.jsx"; + +const WaterModal = ({ operationType, data }) => { + const messages = { + add: { + title: "Add water", + paragraph: "Choose a value", + }, + edit: { + title: "Edit the entered amount of water", + paragraph: "Correct entered data", + }, + }; + + const initialValues = + operationType === "add" + ? { amountOfWater: 50, recordingTime: new Date() } + : { + ...data, + recordingTime: new Date(`1970-01-01T${data.recordingTime}:00`), + }; + + const { title, paragraph } = messages[operationType]; + + return ( + <> + + + ); }; export default WaterModal; From cbc026f036ff3b7cf9d0df84104286f2e2b7f770 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Sat, 30 Nov 2024 19:22:22 +0200 Subject: [PATCH 088/185] working on fetch fn --- src/components/Calendar/Calendar.jsx | 37 +++++---- src/components/CalendarItem/CalendarItem.jsx | 6 +- .../CalendarPagination/CalendarPagination.jsx | 13 +--- src/redux/water/operations.js | 42 ++++------ src/redux/water/selectors.js | 2 +- src/redux/water/slice.js | 78 +++++++++++-------- 6 files changed, 90 insertions(+), 88 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 03c206e..e4cebb9 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -1,3 +1,4 @@ +import { useEffect } from "react"; import { useSelector } from "react-redux"; import css from "./Calendar.module.css"; import { @@ -7,15 +8,26 @@ import { } from "../../redux/water/selectors"; import { selectDaysNotAsInWeek } from "../../redux/settings/selectors"; import CalendarItem from "../CalendarItem/CalendarItem"; +import { fetchWaterData } from "../../redux/water/operations"; const Calendar = () => { + const dateToShow = useSelector(selectChosenMonth); + console.log(dateToShow); + const daysDrinking = useSelector(selectDaysDrinking); + console.log(daysDrinking); + + useEffect(() => { + console.log("fetching days drinking"); + fetchWaterData(dateToShow); + }, [dateToShow]); + const daysNotAsInWeek = useSelector(selectDaysNotAsInWeek) ? true : false; const isLoading = useSelector(selectIsLoading); - const daysDrinking = useSelector(selectDaysDrinking); - const today = new Date(); - const dateFromState = useSelector(selectChosenMonth); - const [year, month] = dateFromState.split("-"); + const today = new Date().toLocaleString(); + const [today_day, today_month, today_year_time] = today.split("."); + const today_year = today_year_time.slice(0, 4); + const [year, month] = dateToShow.split("-"); const yearInt = parseInt(year); const monthInt = parseInt(month) - 1; // Місяці в Date починаються з 0 @@ -26,11 +38,12 @@ const Calendar = () => { percent: "--", })); - daysDrinking.forEach((dayData) => { - if (dayData.number >= 1 && dayData.number <= totalDaysInMonth) { - daysArray[dayData.number - 1].percent = dayData.percent; - } - }); + console.dir(daysDrinking); + // daysDrinking.forEach((dayData) => { + // if (dayData.number >= 1 && dayData.number <= totalDaysInMonth) { + // daysArray[dayData.number - 1].percent = dayData.percent; + // } + // }); if (daysNotAsInWeek) return daysArray; @@ -45,10 +58,7 @@ const Calendar = () => { }; const isActiveDay = (day) => - day && - today.getDate() === day && - today.getMonth() === monthInt && - today.getFullYear() === yearInt; + today_day == day && today_month == month && today_year == year; const calendarDays = generateCalendarDays(); @@ -62,6 +72,7 @@ const Calendar = () => { diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx index d666141..5d5d44c 100644 --- a/src/components/CalendarItem/CalendarItem.jsx +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -1,17 +1,17 @@ import { useDispatch, useSelector } from "react-redux"; import css from "./CalendarItem.module.css"; -import { fetchDayDetails } from "../../redux/water/operations"; +import { fetchWaterData } from "../../redux/water/operations"; import { setChosenDate } from "../../redux/water/slice"; import { selectChosenMonth } from "../../redux/water/selectors"; -const CalendarItem = ({ day, percent, isActive }) => { +const CalendarItem = ({ day, month, percent, isActive }) => { const dispatch = useDispatch(); const monthFromState = useSelector(selectChosenMonth); const handleClick = () => { const date = monthFromState + "-" + day.toString().padStart(2, 0); dispatch(setChosenDate(date)); - dispatch(fetchDayDetails(date)); + dispatch(fetchWaterData(date)); }; return ( diff --git a/src/components/CalendarPagination/CalendarPagination.jsx b/src/components/CalendarPagination/CalendarPagination.jsx index caa060d..f0b38ae 100644 --- a/src/components/CalendarPagination/CalendarPagination.jsx +++ b/src/components/CalendarPagination/CalendarPagination.jsx @@ -2,20 +2,13 @@ import { useDispatch, useSelector } from "react-redux"; import css from "./CalendarPagination.module.css"; import { selectChosenMonth } from "../../redux/water/selectors"; import { setChosenMonth } from "../../redux/water/slice"; -import { fetchDaysDrinking } from "../../redux/water/operations"; -import { useEffect } from "react"; const CalendarPagination = () => { const dispatch = useDispatch(); - const dateFromState = useSelector(selectChosenMonth); - - // Викликаємо fetchDaysDrinking лише при зміні dateFromState - useEffect(() => { - dispatch(fetchDaysDrinking(dateFromState)); - }, [dispatch, dateFromState]); + const monthFromState = useSelector(selectChosenMonth); const handleMonthChange = (shift) => { - const [year, month] = dateFromState.split("-"); + const [year, month] = monthFromState.split("-"); const newMonth = parseInt(month) + shift; let newDate; if (newMonth === 0) { @@ -43,7 +36,7 @@ const CalendarPagination = () => { > < - {formatDate(dateFromState)} + {formatDate(monthFromState)} - {/* {isModalOpen && } */} + {isModalOpen && } ); }; diff --git a/src/components/WaterForm/WaterForm.jsx b/src/components/WaterForm/WaterForm.jsx index 66b44b5..68105be 100644 --- a/src/components/WaterForm/WaterForm.jsx +++ b/src/components/WaterForm/WaterForm.jsx @@ -6,6 +6,7 @@ import css from "./WaterForm.module.css"; import { useState } from "react"; import { GoPlus } from "react-icons/go"; import { GoDash } from "react-icons/go"; +import { postWaterData } from "../../redux/water/operations.js"; const entriesValidationSchema = Yup.object().shape({ amountOfWater: Yup.number() @@ -19,14 +20,15 @@ const WaterForm = ({ title, paragraph, initialValues }) => { const [amount, setAmount] = useState(initialValues.amountOfWater); const handleSubmit = (values) => { - const formattedTime = values.recordingTime.toISOString().slice(11, 16); + const formattedTime = values.recordingTime.toISOString().split(".")[0]; + const entries = { amount: values.amountOfWater, - time: formattedTime, + date: formattedTime, + currentDailyNorm: 1.5, }; - + postWaterData(entries); console.log("Values:", entries); - // dispatch(addEntries(entries)); }; return ( diff --git a/src/components/WaterForm/WaterForm.module.css b/src/components/WaterForm/WaterForm.module.css index 85038e4..223d882 100644 --- a/src/components/WaterForm/WaterForm.module.css +++ b/src/components/WaterForm/WaterForm.module.css @@ -3,12 +3,8 @@ p { } .wrapper { - margin: auto; - margin-top: 100px; border-radius: 15px; padding: 40px 20px; - width: 343px; - height: 490px; background-color: lightblue; } diff --git a/src/modals/WaterModal/WaterModal.jsx b/src/modals/WaterModal/WaterModal.jsx index f861877..0484b1c 100644 --- a/src/modals/WaterModal/WaterModal.jsx +++ b/src/modals/WaterModal/WaterModal.jsx @@ -1,7 +1,7 @@ import WaterForm from "../../components/WaterForm/WaterForm.jsx"; import Modal from "../Modal/Modal.jsx"; -const WaterModal = ({ operationType, data }) => { +const WaterModal = ({ operationType, data, isOpen, onClose }) => { const messages = { add: { title: "Add water", @@ -25,12 +25,13 @@ const WaterModal = ({ operationType, data }) => { return ( <> - - + + + ); }; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 6f6e497..1e56217 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -30,3 +30,21 @@ export const getWaterAmount = createAsyncThunk( } } ); + +export const postWaterData = async (entries) => { + try { + const response = await axios.post(`${BASE_URL}`, entries); + return response.data; + } catch (e) { + throw new Error(e.response?.status || "Post water error"); + } +}; + +export const editWaterData = async (entries) => { + try { + const response = await axios.patch(`${BASE_URL}`, entries); + return response.data; + } catch (e) { + throw new Error(e.response?.status || "Post water error"); + } +}; From 98df21afed1507dd1ce2891c2aecfb5c05068618 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Sun, 1 Dec 2024 00:01:24 +0200 Subject: [PATCH 092/185] changed name getWaterAmountPerDay --- src/components/AddWaterBtn/AddWaterBtn.jsx | 15 ++++++++------- src/redux/water/operations.js | 2 +- src/redux/water/selectors.js | 2 +- src/redux/water/slice.js | 8 ++++---- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 5260831..6398c6c 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -1,13 +1,14 @@ -// import { useState } from "react"; +import { useState } from "react"; import css from "./AddWaterBtn.module.css"; import clsx from "clsx"; +import WaterModal from "../../modals/WaterModal/WaterModal.jsx"; const AddWaterBtn = ({ variant = "default" }) => { - // const [isModalOpen, setIsModalOpen] = useState(false); + const [isModalOpen, setIsModalOpen] = useState(false); - // const openModal = () => { - // setIsModalOpen(true); - // }; + const openModal = () => { + setIsModalOpen(true); + }; return ( <> @@ -18,7 +19,7 @@ const AddWaterBtn = ({ variant = "default" }) => { css.addBtn, variant === "alt" ? css.addBtnAlt : css.defaultBtn )} - // onClick={openModal} + onClick={openModal} > { Add water - {/* {isModalOpen && } */} + {isModalOpen && } ); }; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 64c18a9..1abc8d5 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -33,7 +33,7 @@ export const fetchDayDetails = createAsyncThunk( } ); -export const getWaterAmount = createAsyncThunk( +export const getWaterAmountPerDay = createAsyncThunk( "water/waterAmount", async (_, thunkApi) => { try { diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index 7153276..95e1707 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,4 +3,4 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; -export const selectWaterAmount = (state) => state.water.waterAmount; +export const selectWaterAmountPerDay = (state) => state.water.waterAmount; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 908f4d1..8f4bfad 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -2,7 +2,7 @@ import { createSlice } from "@reduxjs/toolkit"; import { fetchDaysDrinking, fetchDayDetails, - getWaterAmount, + getWaterAmountPerDay, } from "./operations"; const today = new Date().toISOString(); @@ -55,15 +55,15 @@ const waterSlice = createSlice({ state.loading = false; state.error = action.payload; }) - .addCase(getWaterAmount.pending, (state) => { + .addCase(getWaterAmountPerDay.pending, (state) => { state.loading = true; state.error = null; }) - .addCase(getWaterAmount.fulfilled, (state, { payload }) => { + .addCase(getWaterAmountPerDay.fulfilled, (state, { payload }) => { state.loading = false; state.waterAmount = payload; }) - .addCase(getWaterAmount.rejected, (state, { payload }) => { + .addCase(getWaterAmountPerDay.rejected, (state, { payload }) => { state.loading = false; state.error = payload; }); From 57dc9176e733e57a5b077c770759658b4f20e1b4 Mon Sep 17 00:00:00 2001 From: ElmiraEminova <153520598+ElmiraEminova@users.noreply.github.com> Date: Sat, 30 Nov 2024 23:56:34 +0100 Subject: [PATCH 093/185] add style to popover --- src/components/UserBar/UserBar.jsx | 93 ++++++++++--------- src/components/UserBar/UserBar.module.css | 39 ++++++++ .../UserBarPopover/UserBarPopover.jsx | 2 +- 3 files changed, 90 insertions(+), 44 deletions(-) diff --git a/src/components/UserBar/UserBar.jsx b/src/components/UserBar/UserBar.jsx index 33de87b..1828bf0 100644 --- a/src/components/UserBar/UserBar.jsx +++ b/src/components/UserBar/UserBar.jsx @@ -1,7 +1,9 @@ -import { useState, useRef } from "react"; +import { useState, useRef, useEffect } from "react"; import { usePopper } from "react-popper"; -import { HiChevronDown, HiChevronUp } from "react-icons/hi"; -import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; +import { HiChevronDown, HiChevronUp } from "react-icons/hi"; +import { AiOutlineSetting } from "react-icons/ai"; +import { IoLogOutOutline } from 'react-icons/io5'; +// import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; import css from './UserBar.module.css'; const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { @@ -12,69 +14,74 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { const buttonRef = useRef(null); const popoverRef = useRef(null); - const { styles, attributes } = usePopper(buttonRef.current, popoverRef.current, { - placement: 'bottom', + const { styles, attributes, update } = usePopper(buttonRef.current, popoverRef.current, { + placement: 'bottom-end', modifiers: [ { - name: "offset", + name: 'offset', options: { offset: [0, 8] }, }, { - name: "preventOverflow", - options: { boundary: "window" }, - }, - { - name: "sameWidth", - enabled: true, - phase: "beforeWrite", - requires: ["computeStyles"], - fn: ({ state }) => { - state.styles.popper.width = `${state.rects.reference.width}px`; - }, + name: 'preventOverflow', + options: { boundary: 'viewport' }, }, + ], }); const togglePopover = () => { setIsPopoverOpen((prev) => !prev); + if (update) { + setTimeout(() => update(), 0); + } }; - const closePopover = () => setIsPopoverOpen(false); + // const closePopover = () => setIsPopoverOpen(false); + + useEffect(() => { + const handleClickOutside = (event) => { + if (popoverRef.current && !popoverRef.current.contains(event.target)) { + setIsPopoverOpen(false); + } + }; + + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + useEffect(() => { + if (buttonRef.current && popoverRef.current) { + const buttonWidth = buttonRef.current.offsetWidth; + popoverRef.current.style.width = `${buttonWidth}px`; + } + }, [isPopoverOpen]); return (
- - {isPopoverOpen && ( - - )} - {isPopoverOpen &&
} +
+ + +
); }; diff --git a/src/components/UserBar/UserBar.module.css b/src/components/UserBar/UserBar.module.css index 618a723..7e35d5d 100644 --- a/src/components/UserBar/UserBar.module.css +++ b/src/components/UserBar/UserBar.module.css @@ -11,6 +11,7 @@ border-radius: 30px; height: 50px; background-color: #323f47; + border: none; } .name { @@ -47,6 +48,44 @@ color: white; } +.userbarpopover { + position: absolute; + display: flex; + flex-direction: column; + gap: 8px; + width: auto; + border-radius: 15px; + padding-top: 14px; + padding-bottom: 14px; + padding-left: 20px; + background-color: white; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + z-index: 1000; +} + +.popoverbutton { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + text-align: left; + font-family: var(--font-family, Arial, sans-serif); + font-size: 14px; + font-weight: 700; + color: #323f47; + background: none; + border: none; + cursor: pointer; +} + +.popoverbutton:hover { + background-color: #f5f7f9; +} + +.popoverbutton:focus { + outline: 2px solid #0073e6; +} + @media (min-width: 768px) { .userbar { gap: 10px; diff --git a/src/components/UserBarPopover/UserBarPopover.jsx b/src/components/UserBarPopover/UserBarPopover.jsx index d81d4b9..ea47f53 100644 --- a/src/components/UserBarPopover/UserBarPopover.jsx +++ b/src/components/UserBarPopover/UserBarPopover.jsx @@ -33,5 +33,5 @@ const UserBarPopover = forwardRef( ); } ); - +UserBarPopover.displayName = "UserBarPopover" export default UserBarPopover; From f6c262b2b6a05b9286209a51232a66387cb88195 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 00:51:18 +0100 Subject: [PATCH 094/185] add setting form --- public/icons/sprite.svg | 4 +- .../UsersSettingsForm/UsersSettingsForm.jsx | 138 +++++++++++++++--- .../UsersSettingsForm.module.css | 47 +++++- 3 files changed, 169 insertions(+), 20 deletions(-) diff --git a/public/icons/sprite.svg b/public/icons/sprite.svg index 2a93b92..9d5317b 100644 --- a/public/icons/sprite.svg +++ b/public/icons/sprite.svg @@ -35,10 +35,9 @@ - - + @@ -56,5 +55,6 @@ + \ No newline at end of file diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 3488be1..887fe58 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -2,6 +2,7 @@ import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import * as Yup from "yup"; import css from "./UsersSettingsForm.module.css"; +import { useEffect, useState } from "react"; const validationSettingSchema = Yup.object().shape({ avatarUrl: Yup.mixed(), @@ -24,6 +25,8 @@ const validationSettingSchema = Yup.object().shape({ const UsersSettingsForm = () => { const [avatarPreview, setAvatarPreview] = useState(null); + const [calculateWaterNorm, setCalculateWaterNorm] = useState(null); + const { register, handleSubmit, @@ -38,6 +41,19 @@ const UsersSettingsForm = () => { const activeTime = watch("activeTime"); const gender = watch("gender"); + useEffect(() => { + if (weight && activeTime && gender) { + let waterNorm = 0; + if (gender === "woman") { + waterNorm = Math.max(weight * 0.03 + activeTime * 0.4, 0); + } else if (gender === "man") { + waterNorm = Math.max(weight * 0.04 + activeTime * 0.6, 0); + } + setValue("waterDrink", waterNorm.toFixed(1)); + setCalculateWaterNorm(waterNorm.toFixed(1)); + } + }, [weight, activeTime, gender, setValue]); + const handleAvatarChange = (e) => { const file = e.target.files[0]; if (file) { @@ -52,24 +68,112 @@ const UsersSettingsForm = () => { onSubmit={handleSubmit((d) => console.log(d))} >
- - - + {avatarPreview ? ( + Avatar + ) : ( +
N
+ )} +
+ + +
+
+
+ + + + {errors.gender &&

{errors.gender.message}

} +
+
+
+ + + {errors.name &&

{errors.name.message}

} +
+ +
+ + + {errors.email &&

{errors.email.message}

} +
+
+
+ +
+

+ For woman: V=(M*0.03) + (T*0.4) +

+
+
+

+ For man: V=(M*0.04) + (T*0.6) +

+
+
+

+ * * V is the volume of the water norm in liters per + day, M is your body weight, T is the time of active sports, or + another type of activity commensurate in terms of loads (in the + absence of these, you must set 0) +

+
+
+ ! Active time in honours +
+
+
+
+ + + {errors.weight &&

{errors.weight.message}

} +
+
+ + + {errors.activeTime &&

{errors.activeTime.message}

} +
+
+
+
+

The required amount of water in liters per day:

+ {calculateWaterNorm} +
+
+ + + {errors.waterNorm &&

{errors.waterNorm.message}

} +
+
+
+ + ); }; diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index 189ff91..e457674 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -1 +1,46 @@ -/*style*/ +.settingFormAvatar { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 10px; + margin-bottom: 40px; +} + +.settingAvatarImg { + width: 75px; + height: 75px; + border-radius: 100%; +} + +.settingModalButton { + border: none; + background: transparent; + display: flex; + justify-content: center; + align-items: center; + gap: 8px; +} + +.settingAvatarIcon { + stroke: #2f2f2f; + fill: none; +} + +.avatarButtonText { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.settingAllForms { + display: flex; + flex-direction: column; + gap: 24px; +} + +.settingGenderForm { +} From fcf3c01df71b589378b814c49fdfd18a499c9bd2 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 01:10:53 +0100 Subject: [PATCH 095/185] add style for radio button --- .../UsersSettingsForm/UsersSettingsForm.jsx | 46 +++++++++----- .../UsersSettingsForm.module.css | 60 +++++++++++++++++++ 2 files changed, 92 insertions(+), 14 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 887fe58..5f73f29 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -100,32 +100,48 @@ const UsersSettingsForm = () => {
- - - - {errors.gender &&

{errors.gender.message}

} +
+ +
+
+ + + {errors.gender &&

{errors.gender.message}

} +
- + {errors.name &&

{errors.name.message}

}
- + {errors.email &&

{errors.email.message}

}
- +

For woman: V=(M*0.03) + (T*0.4) @@ -166,7 +182,9 @@ const UsersSettingsForm = () => { {calculateWaterNorm}

- + {errors.waterNorm &&

{errors.waterNorm.message}

}
diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index e457674..034e574 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -42,5 +42,65 @@ gap: 24px; } +.settingLabel { + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 16px; + line-height: 1.25; + letter-spacing: -0.01em; + text-align: center; + color: #323f47; +} + .settingGenderForm { + display: flex; + flex-direction: column; + gap: 14px; +} + +.settingRadioButton { + display: flex; + gap: 20px; +} + +.settingRadioLabel { + display: flex; + align-items: center; + cursor: pointer; + position: relative; +} + +.settingRadioInput { + display: none; +} + +.settingRadioCustom { + width: 20px; + height: 20px; + border: 2px solid #9be1a0; + border-radius: 50%; + position: relative; + display: inline-block; + margin-right: 8px; +} + +.settingRadioInput:checked + .settingRadioCustom::after { + content: ""; + width: 12px; + height: 12px; + background-color: #9be1a0; + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.settingRadioText { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; } From d8fa1b6579286a4b0a0964018ec8eb8a182bda85 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 02:11:01 +0100 Subject: [PATCH 096/185] add style for setting daily form --- .../UsersSettingsForm/UsersSettingsForm.jsx | 72 +++++++----- .../UsersSettingsForm.module.css | 106 ++++++++++++++++++ 2 files changed, 153 insertions(+), 25 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 5f73f29..1a7a42e 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -124,56 +124,76 @@ const UsersSettingsForm = () => { Man - {errors.gender &&

{errors.gender.message}

} + {errors.gender && ( +

{errors.gender.message}

+ )}
-
+
- - {errors.name &&

{errors.name.message}

} + + {errors.name && ( +

{errors.name.message}

+ )}
-
+
- - {errors.email &&

{errors.email.message}

} + + {errors.email && ( +

{errors.email.message}

+ )}
-
-

- For woman: V=(M*0.03) + (T*0.4) -

+
+

For woman:

+

V=(M*0.03) + (T*0.4)

-
-

- For man: V=(M*0.04) + (T*0.6) -

+
+

For man:

+

V=(M*0.04) + (T*0.6)

-
-

- * * V is the volume of the water norm in liters per - day, M is your body weight, T is the time of active sports, or - another type of activity commensurate in terms of loads (in the - absence of these, you must set 0) +

+

+ * V is + the volume of the water norm in liters per day, M is your body + weight, T is the time of active sports, or another type of + activity commensurate in terms of loads (in the absence of these, + you must set 0)

- ! Active time in honours +

+ ! Active time + in honours +

- {errors.weight &&

{errors.weight.message}

} + {errors.weight && ( +

{errors.weight.message}

+ )}
- {errors.activeTime &&

{errors.activeTime.message}

} + {errors.activeTime && ( +

{errors.activeTime.message}

+ )}
@@ -186,7 +206,9 @@ const UsersSettingsForm = () => { Write down how much water you will drink: - {errors.waterNorm &&

{errors.waterNorm.message}

} + {errors.waterNorm && ( +

{errors.waterNorm.message}

+ )}
diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index 034e574..d6ed442 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -7,6 +7,14 @@ margin-bottom: 40px; } +.settingError { + font-weight: 400; + font-size: 14px; + border-color: #ef5050; + color: #ef5050; + margin-top: 5px; +} + .settingAvatarImg { width: 75px; height: 75px; @@ -104,3 +112,101 @@ letter-spacing: -0.01em; color: #2f2f2f; } + +.settingNameForm { + display: flex; + flex-direction: column; + gap: 14px; +} + +.settingNameFormLabels { + display: flex; + flex-direction: column; + gap: 8px; + align-items: start; + justify-content: start; +} + +.settingNameFormInput { + border: 1px solid rgba(47, 47, 47, 0.15); + border-radius: 15px; + padding: 14px 0 14px 16px; + width: 303px; + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 16px; + line-height: 1.5; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.settingNameFormInput:focus { + outline: none; + border-color: rgba(47, 47, 47, 0.4); +} + +.settingDailyForm { + display: flex; + flex-direction: column; + gap: 14px; + justify-content: start; + align-items: start; +} + +.settingDailyCard { + display: flex; + flex-direction: column; + gap: 4px; +} + +.settingDailyContext { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.settingDailyFormula { + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #9be1a0; +} + +.settingDailyDescription { + border: 1px solid rgba(47, 47, 47, 0.15); + border-radius: 15px; + padding: 16px; + width: 303px; +} + +.settingDailyDescrText { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: rgba(47, 47, 47, 0.6); +} + +.settingDailyDescriptionSpan { + color: #9be1a0; +} + +.settingDailyRemark { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.settingDailyRemarkSpan { + margin-right: 4px; + color: #9be1a0; +} From 96064b49a8eb55f17d6259d793993cb361aab90e Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 02:53:54 +0100 Subject: [PATCH 097/185] add style for setting form from mob version --- package-lock.json | 1 - public/icons/sprite.svg | 2 +- .../UsersSettingsForm/UsersSettingsForm.jsx | 61 +++++++++----- .../UsersSettingsForm.module.css | 83 ++++++++++++++++++- 4 files changed, 119 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 078f873..3b6562f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1711,7 +1711,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", "engines": { "node": ">=6" } diff --git a/public/icons/sprite.svg b/public/icons/sprite.svg index 9d5317b..227fdc6 100644 --- a/public/icons/sprite.svg +++ b/public/icons/sprite.svg @@ -37,7 +37,7 @@ - + diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 1a7a42e..f9eaddc 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -3,6 +3,7 @@ import { yupResolver } from "@hookform/resolvers/yup"; import * as Yup from "yup"; import css from "./UsersSettingsForm.module.css"; import { useEffect, useState } from "react"; +import clsx from "clsx"; const validationSettingSchema = Yup.object().shape({ avatarUrl: Yup.mixed(), @@ -124,10 +125,10 @@ const UsersSettingsForm = () => { Man - {errors.gender && ( -

{errors.gender.message}

- )}
+ {errors.gender && ( +

{errors.gender.message}

+ )}
@@ -135,7 +136,7 @@ const UsersSettingsForm = () => { {errors.name && (

{errors.name.message}

@@ -147,7 +148,7 @@ const UsersSettingsForm = () => { {errors.email && (

{errors.email.message}

@@ -182,38 +183,52 @@ const UsersSettingsForm = () => {
- - - {errors.weight && ( -

{errors.weight.message}

- )} + +
- - - {errors.activeTime && ( -

{errors.activeTime.message}

- )} + +
-

The required amount of water in liters per day:

- {calculateWaterNorm} +

+ The required amount of water in liters per day: +

+

+ 2 {calculateWaterNorm} +

-
- + ); }; diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index d6ed442..1084f95 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -1,3 +1,6 @@ +.settingAllForms { + margin-bottom: 40px; +} .settingFormAvatar { display: flex; flex-direction: column; @@ -33,6 +36,7 @@ .settingAvatarIcon { stroke: #2f2f2f; fill: none; + stroke-width: 4px; } .avatarButtonText { @@ -127,10 +131,10 @@ justify-content: start; } -.settingNameFormInput { +.settingFormInput { border: 1px solid rgba(47, 47, 47, 0.15); border-radius: 15px; - padding: 14px 0 14px 16px; + padding: 14px 14px 14px 16px; width: 303px; font-family: "Poppins", sans-serif; font-weight: 400; @@ -140,7 +144,7 @@ color: #2f2f2f; } -.settingNameFormInput:focus { +.settingFormInput:focus { outline: none; border-color: rgba(47, 47, 47, 0.4); } @@ -210,3 +214,76 @@ margin-right: 4px; color: #9be1a0; } + +.settingWeightTimeForm { + display: flex; + flex-direction: column; + gap: 14px; + align-items: start; + justify-content: start; +} + +.settingWeightContext { + margin-bottom: 8px; + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; +} + +.settingCalculateForm { + display: flex; + flex-direction: column; + gap: 14px; + align-items: start; + justify-content: start; +} + +.settingCalculateText { + font-family: "Poppins", sans-serif; + font-weight: 400; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + color: #2f2f2f; + margin-bottom: 5px; +} + +.settingCalculateTextSpan { + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 14px; + line-height: 1.29; + color: #9be1a0; +} + +.settingLabelText { + margin-bottom: 8px; + display: block; + text-align: start; +} + +.settingFormButton { + border: none; + border-radius: 30px; + padding: 14px 40px; + max-width: 116px; + background-color: #9be1a0; + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 14px; + line-height: 1.29; + letter-spacing: -0.01em; + text-align: center; + color: #323f47; +} + +.settingFormButton:hover { + background-color: #87d28d; +} + +.settingFormButton:focus { + background-color: #e6e6e6; +} From 874ed9c7227262c93b644b80470e839b0a3052e5 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 04:07:18 +0100 Subject: [PATCH 098/185] add all styles for setting form --- .../UsersSettingsForm/UsersSettingsForm.jsx | 191 ++++++++++-------- .../UsersSettingsForm.module.css | 105 +++++++++- 2 files changed, 199 insertions(+), 97 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index f9eaddc..aef7803 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -99,6 +99,7 @@ const UsersSettingsForm = () => { />
+
@@ -130,98 +131,110 @@ const UsersSettingsForm = () => {

{errors.gender.message}

)}
-
-
- - - {errors.name && ( -

{errors.name.message}

- )} -
- -
- - - {errors.email && ( -

{errors.email.message}

- )} -
-
-
- -
-

For woman:

-

V=(M*0.03) + (T*0.4)

-
-
-

For man:

-

V=(M*0.04) + (T*0.6)

-
-
-

- * V is - the volume of the water norm in liters per day, M is your body - weight, T is the time of active sports, or another type of - activity commensurate in terms of loads (in the absence of these, - you must set 0) -

-
-
-

- ! Active time - in honours -

-
-
-
+
- - -
-
- - -
-
-
-
-

- The required amount of water in liters per day: -

-

- 2 {calculateWaterNorm} -

+
+
+ + + {errors.name && ( +

{errors.name.message}

+ )} +
+ +
+ + + {errors.email && ( +

{errors.email.message}

+ )} +
+
+
+ +
+
+

For woman:

+

+ V=(M*0.03) + (T*0.4) +

+
+
+

For man:

+

+ V=(M*0.04) + (T*0.6) +

+
+
+
+

+ * V + is the volume of the water norm in liters per day, M is your + body weight, T is the time of active sports, or another type + of activity commensurate in terms of loads (in the absence of + these, you must set 0) +

+
+
+

+ ! Active + time in honours +

+
+
-
- +
+
+
+ + +
+
+ + +
+
+
+
+

+ The required amount of water in liters per day: +

+

+ 2 {calculateWaterNorm} +

+
+
+ - + +
+
diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index 1084f95..ab081e2 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -1,6 +1,17 @@ -.settingAllForms { - margin-bottom: 40px; +.settingAllForms, +.settingAllFormsSecond { + display: flex; + flex-direction: column; + gap: 24px; } + +@media (min-width: 1440px) { + .settingAllFormsDesctop { + display: flex; + gap: 40px; + } +} + .settingFormAvatar { display: flex; flex-direction: column; @@ -22,6 +33,10 @@ width: 75px; height: 75px; border-radius: 100%; + @media (min-width: 768px) { + width: 100px; + height: 100px; + } } .settingModalButton { @@ -37,6 +52,10 @@ stroke: #2f2f2f; fill: none; stroke-width: 4px; + @media (min-width: 768px) { + width: 20px; + height: 20px; + } } .avatarButtonText { @@ -46,12 +65,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #2f2f2f; -} - -.settingAllForms { - display: flex; - flex-direction: column; - gap: 24px; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingLabel { @@ -62,6 +78,10 @@ letter-spacing: -0.01em; text-align: center; color: #323f47; + @media (min-width: 768px) { + font-size: 18px; + line-height: 1.5; + } } .settingGenderForm { @@ -115,6 +135,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #2f2f2f; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingNameForm { @@ -142,6 +165,14 @@ line-height: 1.5; letter-spacing: -0.01em; color: #2f2f2f; + @media (min-width: 768px) { + padding: 16px; + width: 568px; + } + + @media (min-width: 1440px) { + width: 400px; + } } .settingFormInput:focus { @@ -155,6 +186,18 @@ gap: 14px; justify-content: start; align-items: start; + margin-bottom: 24px; +} + +.settingDailyAllCard { + display: flex; + flex-direction: column; + gap: 12px; + @media (min-width: 768px) { + display: flex; + flex-direction: row; + gap: 28px; + } } .settingDailyCard { @@ -170,6 +213,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #2f2f2f; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingDailyFormula { @@ -179,6 +225,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #9be1a0; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingDailyDescription { @@ -186,6 +235,13 @@ border-radius: 15px; padding: 16px; width: 303px; + @media (min-width: 768px) { + width: 568px; + } + + @media (min-width: 1440px) { + width: 400px; + } } .settingDailyDescrText { @@ -195,6 +251,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: rgba(47, 47, 47, 0.6); + @media (min-width: 768px) { + line-height: 1.5; + } } .settingDailyDescriptionSpan { @@ -208,6 +267,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #2f2f2f; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingDailyRemarkSpan { @@ -215,6 +277,12 @@ color: #9be1a0; } +.settingWeightLabel { + display: flex; + flex-direction: column; + gap: 8px; +} + .settingWeightTimeForm { display: flex; flex-direction: column; @@ -231,6 +299,9 @@ line-height: 1.29; letter-spacing: -0.01em; color: #2f2f2f; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingCalculateForm { @@ -241,6 +312,14 @@ justify-content: start; } +@media (min-width: 768px) { + .settingCalculate { + display: flex; + flex-direction: row; + gap: 5px; + } +} + .settingCalculateText { font-family: "Poppins", sans-serif; font-weight: 400; @@ -249,6 +328,9 @@ letter-spacing: -0.01em; color: #2f2f2f; margin-bottom: 5px; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingCalculateTextSpan { @@ -257,6 +339,9 @@ font-size: 14px; line-height: 1.29; color: #9be1a0; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingLabelText { @@ -266,6 +351,7 @@ } .settingFormButton { + margin-top: 40px; border: none; border-radius: 30px; padding: 14px 40px; @@ -278,6 +364,9 @@ letter-spacing: -0.01em; text-align: center; color: #323f47; + @media (min-width: 768px) { + line-height: 1.5; + } } .settingFormButton:hover { From a920e56d39592f8b22c978d97e029cefebce3c68 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Sun, 1 Dec 2024 08:39:43 +0100 Subject: [PATCH 099/185] common components --- src/components/Container/Container.jsx | 5 ++++ src/components/Container/Container.module.css | 23 +++++++++++++++++++ src/components/Section/Section.jsx | 5 ++++ src/components/Section/Section.module.css | 9 ++++++++ 4 files changed, 42 insertions(+) create mode 100644 src/components/Container/Container.jsx create mode 100644 src/components/Container/Container.module.css create mode 100644 src/components/Section/Section.jsx create mode 100644 src/components/Section/Section.module.css diff --git a/src/components/Container/Container.jsx b/src/components/Container/Container.jsx new file mode 100644 index 0000000..cc4bf4a --- /dev/null +++ b/src/components/Container/Container.jsx @@ -0,0 +1,5 @@ +import css from "./Container.module.css"; + +export const Container = ({ children }) => { + return
{children}
; +}; diff --git a/src/components/Container/Container.module.css b/src/components/Container/Container.module.css new file mode 100644 index 0000000..5692053 --- /dev/null +++ b/src/components/Container/Container.module.css @@ -0,0 +1,23 @@ +.container { + padding: 0 16px; + margin: 0 auto; +} + +@media only screen and (min-width: 375px) { + .container { + max-width: 375px; + } +} + +@media only screen and (min-width: 768px) { + .container { + padding: 0 32px; + max-width: 768px; + } +} + +@media only screen and (min-width: 1440px) { + .container { + max-width: 1440px; + } +} diff --git a/src/components/Section/Section.jsx b/src/components/Section/Section.jsx new file mode 100644 index 0000000..10cf051 --- /dev/null +++ b/src/components/Section/Section.jsx @@ -0,0 +1,5 @@ +import css from "./Section.module.css"; + +export const Section = ({ children }) => { + return
{children}
; +}; diff --git a/src/components/Section/Section.module.css b/src/components/Section/Section.module.css new file mode 100644 index 0000000..6637a47 --- /dev/null +++ b/src/components/Section/Section.module.css @@ -0,0 +1,9 @@ +.section { + padding: 16px 0; +} + +@media only screen and (min-width: 768px) { + .section { + padding: 32px 0; + } +} From 9899c5515ba976fed0e3c75fb1d3d37a910d96bf Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sun, 1 Dec 2024 10:40:14 +0200 Subject: [PATCH 100/185] section and conatiner component --- src/components/Container/Container.jsx | 6 ++-- src/components/Container/Container.module.css | 16 ++-------- src/components/Section/Section.jsx | 8 +++-- src/components/Section/Section.module.css | 17 ++++++++-- src/pages/SignInPage/SignInPage.jsx | 10 +++--- src/pages/SignInPage/SignInPage.module.css | 31 ++----------------- 6 files changed, 36 insertions(+), 52 deletions(-) diff --git a/src/components/Container/Container.jsx b/src/components/Container/Container.jsx index cc4bf4a..d2b8110 100644 --- a/src/components/Container/Container.jsx +++ b/src/components/Container/Container.jsx @@ -1,5 +1,7 @@ import css from "./Container.module.css"; -export const Container = ({ children }) => { - return
{children}
; +const Container = ({ children, className = "" }) => { + return
{children}
; }; + +export default Container; diff --git a/src/components/Container/Container.module.css b/src/components/Container/Container.module.css index 5692053..305907f 100644 --- a/src/components/Container/Container.module.css +++ b/src/components/Container/Container.module.css @@ -1,23 +1,11 @@ .container { padding: 0 16px; - margin: 0 auto; -} - -@media only screen and (min-width: 375px) { - .container { - max-width: 375px; - } + border-radius: 30px; + background-color: #f0eff4; } @media only screen and (min-width: 768px) { .container { padding: 0 32px; - max-width: 768px; - } -} - -@media only screen and (min-width: 1440px) { - .container { - max-width: 1440px; } } diff --git a/src/components/Section/Section.jsx b/src/components/Section/Section.jsx index 10cf051..c14c1e0 100644 --- a/src/components/Section/Section.jsx +++ b/src/components/Section/Section.jsx @@ -1,5 +1,9 @@ import css from "./Section.module.css"; -export const Section = ({ children }) => { - return
{children}
; +const Section = ({ children, className = "" }) => { + return ( +
{children}
+ ); }; + +export default Section; diff --git a/src/components/Section/Section.module.css b/src/components/Section/Section.module.css index 6637a47..0945ea8 100644 --- a/src/components/Section/Section.module.css +++ b/src/components/Section/Section.module.css @@ -1,9 +1,22 @@ .section { - padding: 16px 0; + padding: 16px; + margin: 0 auto; + max-width: 375px; + background-color: #ffffff; } @media only screen and (min-width: 768px) { .section { - padding: 32px 0; + padding: 32px; + max-width: 768px; + } +} + +@media only screen and (min-width: 1440px) { + .section { + display: flex; + gap: 32px; + max-width: 1440px; + margin: 0 auto; } } diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 471290d..735b553 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -1,5 +1,7 @@ import Logo from "../../components/Logo/Logo"; import SignInForm from "../../components/SignInForm/SignInForm"; +import Section from "../../components/Section/Section"; +import Container from "../../components/Container/Container"; import { NavLink } from "react-router-dom"; import css from "./SignInPage.module.css"; import { useMediaQuery } from "react-responsive"; @@ -9,8 +11,8 @@ const SignInPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); return ( -
-
+
+
@@ -23,9 +25,9 @@ const SignInPage = () => { {" "}

-
+ {isDesktop && } -
+ ); }; diff --git a/src/pages/SignInPage/SignInPage.module.css b/src/pages/SignInPage/SignInPage.module.css index 050a35d..09dc266 100644 --- a/src/pages/SignInPage/SignInPage.module.css +++ b/src/pages/SignInPage/SignInPage.module.css @@ -1,11 +1,4 @@ /*style*/ -.signInSection { - padding: 16px; - margin: 0 auto; - max-width: 343px; - background-color: #ffffff; -} - .title { font-size: 18px; line-height: 111%; @@ -14,13 +7,9 @@ margin-bottom: 172px; } -.container { +.signin { padding-top: 24px; - padding-right: 16px; - padding-left: 16px; padding-bottom: 216px; - border-radius: 30px; - background-color: #f0eff4; } .descContainer { @@ -46,11 +35,6 @@ } @media only screen and (min-width: 768px) { - .signInSection { - padding: 32px; - max-width: 704px; - } - .signInContainer { display: flex; flex-direction: column; @@ -58,10 +42,8 @@ align-items: center; } - .container { + .signin { padding-top: 32px; - padding-right: 32px; - padding-left: 32px; padding-bottom: 281px; } @@ -78,14 +60,7 @@ } @media only screen and (min-width: 1440px) { - .signInSection { - display: flex; - gap: 32px; - max-width: 1440px; - margin: 0 auto; - } - - .container { + .signin { min-width: 672px; padding-bottom: 169px; } From 8d35f4af57068d6963111747777de51b3c548d02 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Sun, 1 Dec 2024 11:48:42 +0200 Subject: [PATCH 101/185] use conteiner for WaterDetailedInfo & some oter styles for calendar --- src/components/Calendar/Calendar.module.css | 31 +++++++++++++++++-- .../CalendarPagination.module.css | 8 ++++- src/components/MonthInfo/MonthInfo.jsx | 6 +--- src/components/MonthInfo/MonthInfo.module.css | 15 ++++----- .../WaterDetailedInfo/WaterDetailedInfo.jsx | 5 +-- .../WaterDetailedInfo.module.css | 21 ++++++------- src/redux/water/slice.js | 6 ++-- 7 files changed, 58 insertions(+), 34 deletions(-) diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index 48f1ac4..1cc07d3 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -4,12 +4,39 @@ display: grid; grid-template-columns: repeat(7, 1fr); gap: 20px 18px; + align-content: center; + justify-content: center; + align-items: center; + justify-items: center; +} + +@media only screen and (max-width: 374px) { + .grid { + row-gap: 20px; + column-gap: calc(0.33 * (100vw - 320px)); + } } @media only screen and (min-width: 768px) { .grid { - /* grid-template-columns: repeat(8, 1fr); */ - /* gap: 15px 48px; */ gap: 15px 62px; } } + +@media only screen and (min-width: 1440px) { + .grid { + gap: 15px 57px; + } +} + +@media only screen and (min-width: 1440px) { + .grid8 { + grid-template-columns: repeat(8, 1fr); + gap: 15px 48px; + } +} +@media only screen and (min-width: 1440px) { + .grid8 { + gap: 15px 43px; + } +} diff --git a/src/components/CalendarPagination/CalendarPagination.module.css b/src/components/CalendarPagination/CalendarPagination.module.css index 7c03939..f0676ea 100644 --- a/src/components/CalendarPagination/CalendarPagination.module.css +++ b/src/components/CalendarPagination/CalendarPagination.module.css @@ -9,8 +9,8 @@ background-color: transparent; font-weight: 400; font-size: 22px; - line-height: 0.8; font-family: "Poppins", sans-serif; + line-height: 0.8; } .chosenMonth { @@ -31,6 +31,12 @@ color: #9be1a0; } +@media only screen and (max-width: 374px) { + .chosenMonth { + width: 110px; + } +} + @media only screen and (min-width: 768px) { .arrow { font-size: 26px; diff --git a/src/components/MonthInfo/MonthInfo.jsx b/src/components/MonthInfo/MonthInfo.jsx index cf4b446..63237d3 100644 --- a/src/components/MonthInfo/MonthInfo.jsx +++ b/src/components/MonthInfo/MonthInfo.jsx @@ -26,11 +26,7 @@ const MonthInfo = () => {
- {isCalendarVisible ? ( - - ) : ( -
"Тут буде графік"
- )} + {isCalendarVisible ? :
}
); }; diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index ff9f730..1e7a69a 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -1,13 +1,9 @@ .sectionCalendar { - max-width: 303px; margin: 0 auto; } -.box { - min-height: 300px; -} - .MonthInfo { + width: 100%; margin-bottom: 24px; } @@ -37,7 +33,7 @@ @media only screen and (min-width: 768px) { .sectionCalendar { - max-width: 640px; + width: 100%; } .title { @@ -55,7 +51,8 @@ } } -/* @media only screen and (min-width: 1440px) { - .title { +@media only screen and (max-width: 375px) { + .sectionCalendar { + max-width: 303px; } -} */ +} diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx index 4e8bc40..e2567e4 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -1,15 +1,16 @@ import UserPanel from "../../components/UserPanel/UserPanel.jsx"; import DailyInfo from "../DailyInfo/DailyInfo.jsx"; import MonthInfo from "../../components/MonthInfo/MonthInfo.jsx"; +import Container from "../../components/Container/Container.jsx"; import css from "./WaterDetailedInfo.module.css"; const WaterDetailedInfo = () => { return ( -
+ -
+ ); }; diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css index 2f98cda..56aca3f 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css @@ -1,22 +1,19 @@ .container { - background-color: #f0eff4; - border-radius: 20px; - border: 1px solid #000; - padding: 16px; - display: flex; - flex-direction: column; - gap: 40px; + padding-top: 20px; + padding-bottom: 20px; } -@media (min-width: 768px) { +@media only screen and (max-width: 374px) { .container { - padding: 32px; - border: none; + padding-right: 10px; + padding-left: 10px; } } -@media only screen and (min-width: 1440px) { +@media (min-width: 768px) { .container { - width: calc((100% - 32px) / 2); + min-height: 738px; + padding-top: 32px; + padding-bottom: 32px; } } diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 71b6772..868fa76 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -1,12 +1,12 @@ import { createSlice } from "@reduxjs/toolkit"; import { fetchWaterData, getWaterAmount } from "./operations"; -const today = new Date().toISOString(); - +const today = new Date().toLocaleDateString("en-CA"); // дата локальна, (YYYY-MM-DD) +console.log(today); const INITIAL_STATE = { daysDrinking: [], // Дані про дні пиття води за місяць dayDetails: [], // Деталі пиття води за конкретний день - chosenDate: today.slice(0, 10), // Обрана дата (YYYY-MM-DD) + chosenDate: today, chosenMonth: today.slice(0, 7), // Обраний місяць (YYYY-MM) waterAmount: [], // Кількість води loading: false, // Стан завантаження From aab35cc7a277345f18ed91b642938d98723868e9 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Sun, 1 Dec 2024 11:13:12 +0100 Subject: [PATCH 102/185] add background image --- .../AdvantagesSection/AdvantagesSection.jsx | 31 ++----------- .../AdvantagesSection.module.css | 44 +++++++++++++++---- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.jsx b/src/components/AdvantagesSection/AdvantagesSection.jsx index 9404363..c733a04 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.jsx +++ b/src/components/AdvantagesSection/AdvantagesSection.jsx @@ -1,38 +1,13 @@ import css from "./AdvantagesSection.module.css"; -import girlM from "./../../img/advantages/girlM.webp"; -import girlM2x from "./../../img/advantages/girlM@2x.webp"; -import girlD2x from "./../../img/advantages/girlD@2x.webp"; -import girlD from "./../../img/advantages/girlD.webp"; -import girlT2x from "./../../img/advantages/girlT@2x.webp"; -import girlT from "./../../img/advantages/girlT.webp"; + import avatar1 from "./../../img/advantages/Avatar1.png"; import avatar2 from "./../../img/advantages/Avatar2.png"; import avatar3 from "./../../img/advantages/Avatar3.png"; -const AdvantagesSection = ({ className = "" }) => { +const AdvantagesSection = () => { return ( -
+
- - - - - Girl drink water -
    diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 8e02ffa..1394d1a 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -1,10 +1,20 @@ -.advantages_section { - width: 100%; - position: relative; +.bgimage { + background-image: url("./../../img/advantages/girlM.webp"); + background-size: cover; + background-position: center; + background-repeat: no-repeat; + border-radius: 30px; + min-height: 353px; +} + +@media only screen and (min-resolution: 192dpi) { + .bgimage { + background-image: url("./../../img/advantages/girlM@2x.webp"); + } } -.girl { - width: 100%; +.advantages_section { + position: relative; } .customers { @@ -111,16 +121,18 @@ @media (max-width: 374px) { .customers { left: 8px; - top: 172px; } .benefits { - top: 224px; left: 110px; } } @media (min-width: 768px) { + .bgimage { + min-height: 446px; + background-image: url("./../../img/advantages/girlT.webp"); + } .customers { padding: 10px 20px; gap: 104px; @@ -162,10 +174,18 @@ } } +@media only screen and (min-width: 768px) and (min-resolution: 192dpi) { + .bgimage { + background-image: url("./../../img/advantages/girlT@2x.webp"); + } +} + @media only screen and (min-width: 1440px) { - .girl { - height: 736px; + .bgimage { + width: 100%; + background-image: url("./../../img/advantages/girlD.webp"); } + .customers { left: 32px; top: 537px; @@ -176,3 +196,9 @@ left: 398px; } } + +@media only screen and (min-width: 1440px) and (min-resolution: 192dpi) { + .bgimage { + background-image: url("./../../img/advantages/girlD@2x.webp"); + } +} From fb193f9b32f71d3de132c7a92225945cddd73823 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Sun, 1 Dec 2024 11:27:14 +0100 Subject: [PATCH 103/185] update logic for logout & delete modals --- .../DeleteWaterModal/DeleteWaterModal.jsx | 9 +++++++- src/modals/LogOutModal/LogOutModal.jsx | 21 +++++++++++++------ src/redux/water/operations.js | 12 +++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx index 57b33be..1ccc356 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -1,12 +1,19 @@ import css from "./DeleteWaterModal.module.css"; import Modal from "../Modal/Modal"; +import { useDispatch } from "react-redux"; +import { apiDeleteWater } from "../../redux/water/operations"; const DeleteWaterModal = ({ isOpen, onClose }) => { + const dispatch = useDispatch(); + const handleDelete = () => { // логика удаления воды - onClose(); + dispatch(apiDeleteWater()); // оповещение с помощью Toast + onClose(); + // актуализировать с помощью redux данные в WaterProgressBar, WaterList та Calendar }; + return (
    diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index e1b3adf..97766aa 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -3,11 +3,25 @@ import Modal from "../Modal/Modal"; import { useDispatch } from "react-redux"; import { apiLogout } from "../../redux/auth/operations"; +import { useHistory } from "react-router-dom"; // import toast from "react-hot-toast"; const LogOutModal = ({ isOpen, onClose }) => { const dispatch = useDispatch(); + const history = useHistory(); + const handleRedirect = () => { + history.push("/"); // переадресация на главную страницу + }; + + const handleLogOut = () => { + dispatch(apiLogout()); + onClose(); + // вставить оповещение с помощью Toast, типа: + // toast.success('toast.logOut') + handleRedirect(); + }; + return (
    @@ -20,12 +34,7 @@ const LogOutModal = ({ isOpen, onClose }) => { className={css.logoutBtn} type="button" aria-label="Logout button" - onClick={() => { - dispatch(apiLogout()); - onClose(); - // вставить оповещение с помощью Toast, типа: - // toast.success('toast.logOut') - }} + onClick={handleLogOut} > Log Out diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 7b88683..9ccf15e 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -32,3 +32,15 @@ export const fetchDayDetails = createAsyncThunk( } } ); + +export const apiDeleteWater = createAsyncThunk( + "water/apiDeleteWater", + async (waterId, thunkApi) => { + try { + const {data} = await axios.delete(`/water/${waterId}`) + return data; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +) From 51527e8d12698326347f3fea76635d2c3d1cfcaf Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Sun, 1 Dec 2024 12:35:31 +0200 Subject: [PATCH 104/185] styles: flex for WaterDetailedInfo --- .../CalendarPagination/CalendarPagination.module.css | 2 +- src/components/MonthInfo/MonthInfo.module.css | 11 +---------- .../WaterDetailedInfo/WaterDetailedInfo.jsx | 6 +++--- .../WaterDetailedInfo/WaterDetailedInfo.module.css | 5 ++++- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/components/CalendarPagination/CalendarPagination.module.css b/src/components/CalendarPagination/CalendarPagination.module.css index f0676ea..49f89e0 100644 --- a/src/components/CalendarPagination/CalendarPagination.module.css +++ b/src/components/CalendarPagination/CalendarPagination.module.css @@ -33,7 +33,7 @@ @media only screen and (max-width: 374px) { .chosenMonth { - width: 110px; + min-width: 110px; } } diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index 1e7a69a..c889595 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -1,5 +1,6 @@ .sectionCalendar { margin: 0 auto; + width: 100%; } .MonthInfo { @@ -32,10 +33,6 @@ } @media only screen and (min-width: 768px) { - .sectionCalendar { - width: 100%; - } - .title { font-size: 28px; line-height: 1.14; @@ -50,9 +47,3 @@ height: 24px; } } - -@media only screen and (max-width: 375px) { - .sectionCalendar { - max-width: 303px; - } -} diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx index e2567e4..d0acb01 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.jsx @@ -1,7 +1,7 @@ -import UserPanel from "../../components/UserPanel/UserPanel.jsx"; +import UserPanel from "../UserPanel/UserPanel.jsx"; import DailyInfo from "../DailyInfo/DailyInfo.jsx"; -import MonthInfo from "../../components/MonthInfo/MonthInfo.jsx"; -import Container from "../../components/Container/Container.jsx"; +import MonthInfo from "../MonthInfo/MonthInfo.jsx"; +import Container from "../Container/Container.jsx"; import css from "./WaterDetailedInfo.module.css"; const WaterDetailedInfo = () => { diff --git a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css index 56aca3f..1fd2f6a 100644 --- a/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css +++ b/src/components/WaterDetailedInfo/WaterDetailedInfo.module.css @@ -1,9 +1,12 @@ .container { padding-top: 20px; padding-bottom: 20px; + display: flex; + flex-direction: column; + gap: 40px; } -@media only screen and (max-width: 374px) { +@media only screen and (max-width: 329px) { .container { padding-right: 10px; padding-left: 10px; From 01c68c8fbb1b83936aa8613cb587f36354630097 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sun, 1 Dec 2024 13:03:14 +0200 Subject: [PATCH 105/185] sign in update --- package-lock.json | 12 ++++++++++++ package.json | 1 + src/components/SignInForm/SignInForm.jsx | 7 +++---- src/components/SignInForm/SignInForm.module.css | 14 ++++++++++++++ src/pages/SignInPage/SignInPage.jsx | 15 +++++++++++++++ 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3b6562f..52527ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "axios": "^1.7.7", "clsx": "^2.1.1", "formik": "^2.4.6", + "izitoast": "^1.4.0", "modern-normalize": "^3.0.1", "prop-types": "^15.8.1", "react": "^18.3.1", @@ -3790,6 +3791,12 @@ "node": ">= 0.4" } }, + "node_modules/izitoast": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/izitoast/-/izitoast-1.4.0.tgz", + "integrity": "sha512-Oc1X2wiQtPp39i5VpIjf3GJf5sfCtHKXZ5szx7RareyEeFLUlcEW0FSfBni28+Ul6KNKZRKzhVuWzSP4Xngh0w==", + "license": "Apache-2.0" + }, "node_modules/js-base64": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", @@ -9072,6 +9079,11 @@ "set-function-name": "^2.0.1" } }, + "izitoast": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/izitoast/-/izitoast-1.4.0.tgz", + "integrity": "sha512-Oc1X2wiQtPp39i5VpIjf3GJf5sfCtHKXZ5szx7RareyEeFLUlcEW0FSfBni28+Ul6KNKZRKzhVuWzSP4Xngh0w==" + }, "js-base64": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", diff --git a/package.json b/package.json index 0fb249b..a4cb505 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "axios": "^1.7.7", "clsx": "^2.1.1", "formik": "^2.4.6", + "izitoast": "^1.4.0", "modern-normalize": "^3.0.1", "prop-types": "^15.8.1", "react": "^18.3.1", diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index 6676f30..da2add3 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -4,8 +4,7 @@ import css from "./SignInForm.module.css"; import clsx from "clsx"; import { useMediaQuery } from "react-responsive"; import { useState } from "react"; -import { useDispatch, useSelector } from "react-redux"; -import { selectAuthError } from "../../redux/auth/selectors"; +import { useDispatch } from "react-redux"; import { apiLogin } from "../../redux/auth/operations"; const LoginValidationSchema = Yup.object({ @@ -18,7 +17,6 @@ const LoginValidationSchema = Yup.object({ const SignInForm = () => { const dispatch = useDispatch(); - const error = useSelector(selectAuthError); const isTabletAndDesktop = useMediaQuery({ minWidth: 768 }); const [openEye, setOpenEye] = useState(false); @@ -31,8 +29,9 @@ const SignInForm = () => { setOpenEye(!openEye); } - function handleSubmit(values) { + function handleSubmit(values, actions) { dispatch(apiLogin(values)); + actions.resetForm(); } return ( diff --git a/src/components/SignInForm/SignInForm.module.css b/src/components/SignInForm/SignInForm.module.css index 7446e93..1de3ecf 100644 --- a/src/components/SignInForm/SignInForm.module.css +++ b/src/components/SignInForm/SignInForm.module.css @@ -21,11 +21,18 @@ } .emailContainer { + position: relative; display: flex; flex-direction: column; margin-bottom: 16px; } +.errorMail { + position: absolute; + bottom: -20px; + left: 0; +} + .inputForm { padding-top: 16px; padding-bottom: 16px; @@ -83,6 +90,7 @@ .submitBtn:hover, .submitBtn:focus { + outline: none; cursor: pointer; color: #323f47; background-color: #87d28d; @@ -125,6 +133,12 @@ margin-bottom: 20px; } + .errorMail { + position: absolute; + bottom: -25px; + left: 0; + } + .passwordContainer { position: relative; max-width: 436px; diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 735b553..8b0a4e5 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -6,9 +6,14 @@ import { NavLink } from "react-router-dom"; import css from "./SignInPage.module.css"; import { useMediaQuery } from "react-responsive"; import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; +import { selectAuthError } from "../../redux/auth/selectors"; +import { useSelector } from "react-redux"; +import iziToast from "izitoast"; +import "izitoast/dist/css/iziToast.min.css"; const SignInPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); + const error = useSelector(selectAuthError); return (
    @@ -27,6 +32,16 @@ const SignInPage = () => {
    {isDesktop && } + {error && + iziToast.error({ + title: "Error", + message: "Wrong password or email", + titleColor: "#ef5050", + messageColor: "#ef5050", + displayMode: 1, + position: "topRight", + maxWidth: "300px", + })} ); }; From 2437ceb18aa71d9e77b5ad43a606ad3b4f8b8bc5 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sun, 1 Dec 2024 13:53:55 +0200 Subject: [PATCH 106/185] delete resetForm --- src/components/SignInForm/SignInForm.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index da2add3..c0a236e 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -29,9 +29,8 @@ const SignInForm = () => { setOpenEye(!openEye); } - function handleSubmit(values, actions) { + function handleSubmit(values) { dispatch(apiLogin(values)); - actions.resetForm(); } return ( From ad48365a5d15d63aea2521f0c145be788b1a344c Mon Sep 17 00:00:00 2001 From: Oleksii Ozyrskyi Date: Sun, 1 Dec 2024 13:18:22 +0100 Subject: [PATCH 107/185] commit --- src/components/AddWaterBtn/AddWaterBtn.jsx | 8 +++++++- src/redux/water/operations.js | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index a3fc550..8eab0bb 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -30,7 +30,13 @@ const AddWaterBtn = ({ variant = "default" }) => { Add water - {isModalOpen && } + {isModalOpen && ( + + )} ); }; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 8a5e507..beeaec4 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -36,7 +36,7 @@ export const getWaterAmount = createAsyncThunk( export const postWaterData = async (entries) => { try { - const response = await axios.post(`${BASE_URL}`, entries); + const response = await axios.post("/", entries); return response.data; } catch (e) { throw new Error(e.response?.status || "Post water error"); @@ -45,7 +45,7 @@ export const postWaterData = async (entries) => { export const editWaterData = async (entries) => { try { - const response = await axios.patch(`${BASE_URL}`, entries); + const response = await axios.patch(`/`, entries); return response.data; } catch (e) { throw new Error(e.response?.status || "Post water error"); From 991db97a13a61239ea753f11b42cf14b5ceb17c3 Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Sun, 1 Dec 2024 16:12:03 +0200 Subject: [PATCH 108/185] add common components --- src/components/Container/Container.module.css | 7 +++-- src/pages/SignUpPage/SignUpPage.jsx | 10 +++--- src/pages/SignUpPage/SignUpPage.module.css | 31 +++++-------------- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/components/Container/Container.module.css b/src/components/Container/Container.module.css index 305907f..b344462 100644 --- a/src/components/Container/Container.module.css +++ b/src/components/Container/Container.module.css @@ -1,11 +1,14 @@ .container { - padding: 0 16px; + padding-left: 16px; + padding-right: 16px; + border-radius: 30px; background-color: #f0eff4; } @media only screen and (min-width: 768px) { .container { - padding: 0 32px; + padding-left: 32px; + padding-right: 32px; } } diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index f404ce3..fe6a996 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -4,12 +4,14 @@ import { NavLink } from "react-router-dom"; import css from "./SignUpPage.module.css"; import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; import { useMediaQuery } from "react-responsive"; +import Section from "../../components/Section/Section"; +import Container from "../../components/Container/Container"; const SignUpPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); return ( -
    -
    +
    +

    Sign Up

    @@ -19,9 +21,9 @@ const SignUpPage = () => { Sign In

    -
    + {isDesktop && } -
    + ); }; diff --git a/src/pages/SignUpPage/SignUpPage.module.css b/src/pages/SignUpPage/SignUpPage.module.css index 06cbc89..f95dad4 100644 --- a/src/pages/SignUpPage/SignUpPage.module.css +++ b/src/pages/SignUpPage/SignUpPage.module.css @@ -1,12 +1,6 @@ -.section { - padding: 16px; -} -.formWrapper { - margin: 0 auto; - border-radius: 30px; - max-width: 343px; - padding: 24px 16px 170px; - background-color: #f0eff4; +.signUpWrapper { + padding-top: 24px; + padding-bottom: 170px; } .logo { margin-bottom: 126px; @@ -36,12 +30,9 @@ color: #2f2f2f; } @media only screen and (min-width: 768px) { - .section { - padding: 32px; - } - .formWrapper { - max-width: 704px; - padding: 32px 32px 227px; + .signUpWrapper { + padding-top: 32px; + padding-bottom: 227px; } .logo { margin-bottom: 171px; @@ -60,15 +51,9 @@ } @media only screen and (min-width: 1440px) { - .section { - margin: 0 auto; - max-width: 1440px; - display: flex; - gap: 32px; - } - .formWrapper { + .signUpWrapper { padding-bottom: 100px; - width: 50%; + min-width: 672px; } .logo { margin-bottom: 68px; From 4ffda29619e06638dd91442de6656f09d230d476 Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Sun, 1 Dec 2024 17:26:14 +0200 Subject: [PATCH 109/185] izi toast and loader in progress --- src/components/SignUpForm/SignUpForm.jsx | 2 +- src/pages/SignUpPage/SignUpPage.jsx | 41 +++++++++++++++++++++--- src/redux/auth/operations.js | 6 ++-- src/redux/auth/selectors.js | 3 ++ src/redux/auth/slice.js | 12 +++++-- 5 files changed, 53 insertions(+), 11 deletions(-) diff --git a/src/components/SignUpForm/SignUpForm.jsx b/src/components/SignUpForm/SignUpForm.jsx index 25a0d6f..daecd21 100644 --- a/src/components/SignUpForm/SignUpForm.jsx +++ b/src/components/SignUpForm/SignUpForm.jsx @@ -43,7 +43,7 @@ const SignUpForm = () => { const registerObj = { email, password }; // console.log(registerObj); dispatch(apiRegister(registerObj)); - + console.log("Form submitted, dispatch work"); actions.resetForm(); }; diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index fe6a996..c3a4885 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -1,14 +1,29 @@ -import SignUpForm from "../../components/SignUpForm/SignUpForm"; +import Section from "../../components/Section/Section"; +import Container from "../../components/Container/Container"; import Logo from "../../components/Logo/Logo"; +import SignUpForm from "../../components/SignUpForm/SignUpForm"; +import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; import { NavLink } from "react-router-dom"; import css from "./SignUpPage.module.css"; -import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; import { useMediaQuery } from "react-responsive"; -import Section from "../../components/Section/Section"; -import Container from "../../components/Container/Container"; +import iziToast from "izitoast"; +import "izitoast/dist/css/iziToast.min.css"; +import { useSelector } from "react-redux"; +import { + selectAuthError, + selectAuthIsLoading, + selectAuthIsRegisteredSuccess, +} from "../../redux/auth/selectors"; const SignUpPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); + const error = useSelector(selectAuthError); + const isRegistered = useSelector(selectAuthIsRegisteredSuccess); + const isLoading = useSelector(selectAuthIsLoading); + console.log("register Page state error: ", error); + console.log("register Page state isRegistered: ", isRegistered); + console.log("register Page state isLoading: ", isLoading); + return (
    @@ -23,6 +38,24 @@ const SignUpPage = () => {

    {isDesktop && } + {error && + iziToast.error({ + title: "Error", + message: error, + titleColor: "#ef5050", + messageColor: "#ef5050", + displayMode: 1, + position: "topRight", + maxWidth: "300px", + })} + {isRegistered && + iziToast.success({ + title: "Success", + message: "Successfully register user", + displayMode: 1, + position: "topRight", + maxWidth: "300px", + })}
    ); }; diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index 1a6201e..465c13d 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -32,12 +32,12 @@ export const apiRegister = createAsyncThunk( async (formData, thunkApi) => { try { const { data } = await instance.post("users/register", formData); - setAuthHeaders(data.token); + // setAuthHeaders(data.token); // console.log("data:", data); return data; } catch (error) { - // console.error("Error during registration:", error); - return thunkApi.rejectWithValue(error.message); + // console.error("Error during registration:", error); + return thunkApi.rejectWithValue(error.response.data.data.message); } } ); diff --git a/src/redux/auth/selectors.js b/src/redux/auth/selectors.js index ecf0e93..bb60e33 100644 --- a/src/redux/auth/selectors.js +++ b/src/redux/auth/selectors.js @@ -4,3 +4,6 @@ export const selectAuthToken = (state) => state.auth.token; export const selectAuthIsLoggedIn = (state) => state.auth.isLoggedIn; export const selectAuthIsRefreshing = (state) => state.auth.isRefreshing; export const selectAuthError = (state) => state.auth.error; +export const selectAuthIsRegisteredSuccess = (state) => + state.auth.isRegisteredSuccess; +export const selectAuthIsLoading = (state) => state.auth.isLoading; diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index db8c554..87fdb1b 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -7,9 +7,11 @@ const INITIAL_STATE = { email: "", }, token: null, + isRegisteredSuccess: false, isLoggedIn: false, isRefreshing: false, error: null, + isLoading: false, }; const authSlice = createSlice({ @@ -21,16 +23,20 @@ const authSlice = createSlice({ .addCase(apiRegister.pending, (state) => { // console.log("apiRegister pending..."); state.error = null; + state.isRegisteredSuccess = false; + state.isLoading = true; }) .addCase(apiRegister.fulfilled, (state, action) => { // console.log("apiRegister fulfilled:", action.payload); state.user = action.payload.user; - state.token = action.payload.token; - state.isLoggedIn = true; + state.isRegisteredSuccess = true; + state.isLoading = false; }) .addCase(apiRegister.rejected, (state, action) => { - // console.error("apiRegister rejected:", action.payload); + // console.error("apiRegister rejected :", action); state.error = action.payload; + state.isRegisteredSuccess = false; + state.isLoading.false; }) .addCase(apiLogin.pending, (state) => { From 3a745837d7661bee5200afa025b93454b0b33e5e Mon Sep 17 00:00:00 2001 From: Olga Blud Date: Sun, 1 Dec 2024 17:48:25 +0200 Subject: [PATCH 110/185] loading text temporary --- src/pages/SignUpPage/SignUpPage.jsx | 1 + src/redux/auth/slice.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/SignUpPage/SignUpPage.jsx b/src/pages/SignUpPage/SignUpPage.jsx index c3a4885..4958bf2 100644 --- a/src/pages/SignUpPage/SignUpPage.jsx +++ b/src/pages/SignUpPage/SignUpPage.jsx @@ -27,6 +27,7 @@ const SignUpPage = () => { return (
    + {isLoading &&

    LOADING .........

    }

    Sign Up

    diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 87fdb1b..2faf5a8 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -36,7 +36,7 @@ const authSlice = createSlice({ // console.error("apiRegister rejected :", action); state.error = action.payload; state.isRegisteredSuccess = false; - state.isLoading.false; + state.isLoading = false; }) .addCase(apiLogin.pending, (state) => { From 3f8426183790785389708a6d37f917af85b76304 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Sun, 1 Dec 2024 17:58:50 +0100 Subject: [PATCH 111/185] fix homepage add section and container --- .../AdvantagesSection.module.css | 1 + src/components/Container/Container.module.css | 7 ++- src/pages/HomePage/HomePage.jsx | 20 +++++--- src/pages/HomePage/HomePage.module.css | 47 ++++--------------- 4 files changed, 27 insertions(+), 48 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 1394d1a..1d827fe 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -5,6 +5,7 @@ background-repeat: no-repeat; border-radius: 30px; min-height: 353px; + width: 100%; } @media only screen and (min-resolution: 192dpi) { diff --git a/src/components/Container/Container.module.css b/src/components/Container/Container.module.css index 305907f..b344462 100644 --- a/src/components/Container/Container.module.css +++ b/src/components/Container/Container.module.css @@ -1,11 +1,14 @@ .container { - padding: 0 16px; + padding-left: 16px; + padding-right: 16px; + border-radius: 30px; background-color: #f0eff4; } @media only screen and (min-width: 768px) { .container { - padding: 0 32px; + padding-left: 32px; + padding-right: 32px; } } diff --git a/src/pages/HomePage/HomePage.jsx b/src/pages/HomePage/HomePage.jsx index 4bf7e16..43e63cb 100644 --- a/src/pages/HomePage/HomePage.jsx +++ b/src/pages/HomePage/HomePage.jsx @@ -1,13 +1,19 @@ -import AdvantagesSection from '../../components/AdvantagesSection/AdvantagesSection'; -import WelcomeSection from '../../components/WelcomeSection/WelcomeSection'; -import styles from './HomePage.module.css'; +import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; +import WelcomeSection from "../../components/WelcomeSection/WelcomeSection"; +import Section from "../../components/Section/Section"; +import Container from "../../components/Container/Container"; +import styles from "./HomePage.module.css"; const HomePage = () => { return ( -
    - - -
    +
    +
    + + + + +
    +
    ); }; diff --git a/src/pages/HomePage/HomePage.module.css b/src/pages/HomePage/HomePage.module.css index ac58ce7..88d6bf9 100644 --- a/src/pages/HomePage/HomePage.module.css +++ b/src/pages/HomePage/HomePage.module.css @@ -1,20 +1,12 @@ /* Initial Container Settings (Mobile First) */ -.container { +.wrap { display: flex; flex-direction: column; - font-family: "Poppins", sans-serif; - font-weight: 400; gap: 16px; - margin-left: auto; - margin-right: auto; - max-width: 1440px; - min-width: 320px; - padding: 16px 16px; } /* Section Styles */ -.welcomeSection, -.advantagesSection { +.welcomeSection { border-radius: 30px; border: solid 1px var(--background-secondary-light); } @@ -24,7 +16,7 @@ border: solid 1px var(--background-secondary-light); color: var(--background-primary-dark); min-height: 411px; - padding: 24px 16px 16px 16px; + padding: 24px 0px 16px 0px; width: 100%; height: 411px; } @@ -51,46 +43,23 @@ /* md */ @media (min-width: 768px) { - .container { - width: 768px; - height: 1024px; - padding: 32px 32px; - } - .welcomeSection { height: 498px; - padding: 32px 32px 32px 32px; - } - - .advantagesSection { - height: 446; + padding: 32px 0px; } } /* lg */ @media (min-width: 1440px) { - .container { + .wrap { flex-direction: row; - width: 1440px; - height: 800px; - padding: 32px 32px; + width: 1376px; gap: 32px; } .welcomeSection { - padding: 32px 32px 32px 32px; - } - - .welcomeSection, - .advantagesSection { - width: 50%; - } - - .welcomeSection { - height: 736px; - } - - .advantagesSection { + padding: 32px 0px; height: 736px; + max-width: 672px; } } From c2b6ecd292f6d27daa5147ac1e8027b1d3a3b8d2 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Sun, 1 Dec 2024 19:41:13 +0200 Subject: [PATCH 112/185] almost done --- src/components/Calendar/Calendar.jsx | 75 ++++++++++++------- src/components/Calendar/Calendar.module.css | 8 +- src/components/CalendarItem/CalendarItem.jsx | 10 ++- .../CalendarItem/CalendarItem.module.css | 4 + src/redux/water/operations.js | 2 +- src/redux/water/slice.js | 7 +- 6 files changed, 68 insertions(+), 38 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 056beba..027a241 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import { useEffect, useMemo } from "react"; import { useDispatch, useSelector } from "react-redux"; import css from "./Calendar.module.css"; import { @@ -13,54 +13,77 @@ import { fetchWaterData } from "../../redux/water/operations"; const Calendar = () => { const dispatch = useDispatch(); const dateToShow = useSelector(selectChosenMonth); - console.log(dateToShow); const daysDrinking = useSelector(selectDaysDrinking); - console.log(daysDrinking); - - useEffect(() => { - dispatch(fetchWaterData({ type: "month", date: dateToShow })); - }, [dateToShow]); - const daysNotAsInWeek = useSelector(selectDaysNotAsInWeek) ? true : false; const isLoading = useSelector(selectIsLoading); - const today = new Date().toLocaleString(); - const [today_day, today_month, today_year_time] = today.split("."); + // const today = ; + const [today_day, today_month, today_year_time] = new Date() // month починаються з нуля в Date + .toLocaleString() + .split("."); const today_year = today_year_time.slice(0, 4); const [year, month] = dateToShow.split("-"); - const yearInt = parseInt(year); - const monthInt = parseInt(month) - 1; // Місяці в Date починаються з 0 + const firstDayOfWeek = 0; // Перший день місяця (0 - понеділок, 1 - неділя) - const generateCalendarDays = () => { - const totalDaysInMonth = new Date(yearInt, monthInt + 1, 0).getDate(); + useEffect(() => { + dispatch(fetchWaterData({ type: "month", date: dateToShow })); + }, [dateToShow, dispatch]); + + const isActiveDay = (day) => + today_day == day && today_month + 1 == month && today_year == year; + + const calendarDays = useMemo(() => { + const totalDaysInMonth = new Date(year, month, 0).getDate(); const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => ({ day: i + 1, - percent: "--", + percent: 0, + totalAmount: 0, + currentDailyNorm: 0, })); - console.dir(daysDrinking.data); - daysDrinking.date?.forEach((dayData) => { - if (dayData.number >= 1 && dayData.number <= totalDaysInMonth) { - daysArray[dayData.number - 1].percent = dayData.percent; + // Перший прохід: групуємо дані за днями + daysDrinking?.forEach((dayData) => { + // тимчасова перевірка, поки сервер присилає більше ніж треба + if (dayData.date.slice(5, 7) != month || dayData.date.slice(0, 4) != year) + return; + + const currentDay = daysArray[parseInt(dayData.date.slice(8, 10)) - 1]; + currentDay.totalAmount += dayData.amount; + + // Взяти найсвіжішу currentDailyNorm + if (!currentDay.updatedAt || dayData.updatedAt > currentDay.updatedAt) { + currentDay.updatedAt = dayData.updatedAt; + currentDay.currentDailyNorm = dayData.currentDailyNorm; } }); + // Другий прохід: обчислюємо відсотки + daysArray.forEach((day) => { + if (day.currentDailyNorm) + day.percent = Math.round( + (day.totalAmount / day.currentDailyNorm) * 100 + ); + }); + if (daysNotAsInWeek) return daysArray; - // Порожні дні перед початком місяця - const firstDayOfMonth = new Date(yearInt, monthInt, 0).getDay(); // set 1 for Sunday-start week + // Додаємо порожні дні перед початком місяця + const firstDayOfMonth = new Date( + year, + parseInt(month) - 1, + firstDayOfWeek + ).getDay(); const emptyDaysBefore = Array.from({ length: firstDayOfMonth }, () => ({ day: null, percent: null, + totalAmount: null, + currentDailyNorm: null, })); return [...emptyDaysBefore, ...daysArray]; - }; - - const isActiveDay = (day) => - today_day == day && today_month == month && today_year == year; + }, [daysDrinking, daysNotAsInWeek, month, year]); - const calendarDays = generateCalendarDays(); + // console.dir(calendarDays); return (
    diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index 1cc07d3..3a97510 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -4,10 +4,10 @@ display: grid; grid-template-columns: repeat(7, 1fr); gap: 20px 18px; - align-content: center; - justify-content: center; - align-items: center; - justify-items: center; + /* align-content: center; */ + /* justify-content: center; */ + align-items: baseline; + /* justify-items: center; */ } @media only screen and (max-width: 374px) { diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx index a304f05..2f37dbe 100644 --- a/src/components/CalendarItem/CalendarItem.jsx +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -1,4 +1,4 @@ -import { useDispatch, useSelector } from "react-redux"; +import { useDispatch } from "react-redux"; import css from "./CalendarItem.module.css"; import { fetchWaterData } from "../../redux/water/operations"; import { setChosenDate } from "../../redux/water/slice"; @@ -16,15 +16,17 @@ const CalendarItem = ({ month, day, percent, isActive }) => { diff --git a/src/components/CalendarItem/CalendarItem.module.css b/src/components/CalendarItem/CalendarItem.module.css index b9f282d..441ddc3 100644 --- a/src/components/CalendarItem/CalendarItem.module.css +++ b/src/components/CalendarItem/CalendarItem.module.css @@ -38,6 +38,10 @@ font-family: "Poppins", sans-serif; } +.drinkALot .dayNumber { + background-color: #fff; +} + .item:hover .dayNumber { background-color: #9be1a0; } diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index ce1a3d7..f9c6a70 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -8,7 +8,7 @@ export const fetchWaterData = createAsyncThunk( async ({ type, date }, thunkAPI) => { try { const endpoint = type === "month" ? "/month" : "/day"; - // console.log(endpoint); + console.log(endpoint); const response = await axios.get(endpoint, { params: { date }, diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 868fa76..13b4921 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -2,7 +2,7 @@ import { createSlice } from "@reduxjs/toolkit"; import { fetchWaterData, getWaterAmount } from "./operations"; const today = new Date().toLocaleDateString("en-CA"); // дата локальна, (YYYY-MM-DD) -console.log(today); + const INITIAL_STATE = { daysDrinking: [], // Дані про дні пиття води за місяць dayDetails: [], // Деталі пиття води за конкретний день @@ -36,10 +36,11 @@ const waterSlice = createSlice({ // Розподіл даних за місяцем або днем if (action.meta.arg.type === "month") { - state.daysDrinking = action.payload; // Дані за місяць + state.daysDrinking = action.payload.data; // Дані за місяць } else if (action.meta.arg.type === "day") { - state.dayDetails = action.payload; // Дані за день + state.dayDetails = action.payload.data; // Дані за день } + console.log(action.payload.data); }) .addCase(fetchWaterData.rejected, (state, action) => { state.loading = false; From aa6f7f5566adeeee3de2c663707ec73ad65d2f26 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Sun, 1 Dec 2024 20:36:49 +0200 Subject: [PATCH 113/185] almost done, styles improved, logic work --- src/components/Calendar/Calendar.jsx | 2 +- src/components/Calendar/Calendar.module.css | 6 ++---- src/components/CalendarItem/CalendarItem.jsx | 6 +++--- src/components/CalendarItem/CalendarItem.module.css | 13 ++++++++----- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 027a241..2bac17a 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -30,7 +30,7 @@ const Calendar = () => { }, [dateToShow, dispatch]); const isActiveDay = (day) => - today_day == day && today_month + 1 == month && today_year == year; + today_day == day && today_month == month && today_year == year; const calendarDays = useMemo(() => { const totalDaysInMonth = new Date(year, month, 0).getDate(); diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index 3a97510..a1220d4 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -4,10 +4,8 @@ display: grid; grid-template-columns: repeat(7, 1fr); gap: 20px 18px; - /* align-content: center; */ - /* justify-content: center; */ - align-items: baseline; - /* justify-items: center; */ + align-items: start; + justify-items: center; } @media only screen and (max-width: 374px) { diff --git a/src/components/CalendarItem/CalendarItem.jsx b/src/components/CalendarItem/CalendarItem.jsx index 2f37dbe..4841fdc 100644 --- a/src/components/CalendarItem/CalendarItem.jsx +++ b/src/components/CalendarItem/CalendarItem.jsx @@ -15,9 +15,9 @@ const CalendarItem = ({ month, day, percent, isActive }) => { return ( From baa770b9482cc03b67ae9e547719cba0d8031a68 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Sun, 1 Dec 2024 22:32:30 +0100 Subject: [PATCH 115/185] add scroll on modal content --- .../UserSettingsModal/UserSettingsModal.jsx | 16 ++++++++-- .../UserSettingsModal.module.css | 31 +++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/modals/UserSettingsModal/UserSettingsModal.jsx b/src/modals/UserSettingsModal/UserSettingsModal.jsx index 97c385a..f439085 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.jsx +++ b/src/modals/UserSettingsModal/UserSettingsModal.jsx @@ -4,6 +4,15 @@ import css from "./UserSettingsModal.module.css"; import { useEffect } from "react"; const UserSettingsModal = ({ onClose }) => { + useEffect(() => { + const originalStyle = window.getComputedStyle(document.body).overflow; + document.body.style.overflow = "hidden"; + + return () => { + document.body.style.overflow = originalStyle; + }; + }, []); + useEffect(() => { const handleKeyDown = (e) => { if (e.key === "Escape") { @@ -34,9 +43,10 @@ const UserSettingsModal = ({ onClose }) => {
    - -
    - +
    +
    + +
    , diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index 0a3e15e..806aa3d 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -10,25 +10,30 @@ justify-content: center; z-index: 1000; overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: #ccc transparent; } .settingModal { border-radius: 15px; padding: 40px 20px; - /* max-height: 1302px; */ width: 343px; margin-top: 80px; background-color: #fff; box-shadow: 0 4px 50px 0 rgba(0, 0, 0, 0.1); overflow: hidden; - + display: flex; + flex-direction: column; + max-height: 735px; @media (min-width: 768px) { padding: 40px; width: 648px; + max-height: 880px; } @media (min-width: 1440px) { width: 920px; + max-height: 685px; } } @@ -60,6 +65,28 @@ } } +.settingModalScrollable { + flex: 1; + overflow-y: auto; + margin: 0 -15px; + padding: 0 7px; + scrollbar-width: thin; + scrollbar-color: #f0eff4 transparent; +} + +.settingModalScrollable::-webkit-scrollbar { + width: 4px; +} + +.settingModalScrollable::-webkit-scrollbar-thumb { + background-color: #f0eff4; + border-radius: 30px; +} + +.settingModalScrollable::-webkit-scrollbar-track { + background-color: transparent; +} + .settingModalContent { flex: 1; overflow-y: auto; From 6bb2d1ea61d56ce940c8e25ee918467deb009d2d Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 01:30:43 +0200 Subject: [PATCH 116/185] getUserInfo/redux --- .../WaterDailyNorma/WaterDailyNorma.jsx | 15 ++++++-- .../WaterMainInfo/WaterMainInfo.jsx | 8 ++++ src/redux/settings/operations.js | 38 ++++++++++++++++++- src/redux/settings/selectors.js | 1 + src/redux/settings/slice.js | 18 +++++++++ src/redux/water/operations.js | 1 + src/redux/water/slice.js | 26 ++++++------- 7 files changed, 88 insertions(+), 19 deletions(-) diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index a96d12d..75d5b4d 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -1,13 +1,20 @@ +import { useSelector } from "react-redux"; import css from "./WaterDailyNorma.module.css"; +import { selectGetUserInfo } from "../../redux/settings/selectors.js"; + +export const formatVolume = (ml) => { + return `${(ml / 1000).toFixed(1)} L`; +}; const WaterDailyNorma = () => { - // const dailyNorma = useSelector() - // const volumeToShow = dailyNorma === 0 ? "1.5 L" : `${dailyNorma} L`; + const userInfo = useSelector(selectGetUserInfo); + // console.log(userInfo); + const dailyNorma = userInfo.data?.dailyNorm; + return ( <>
    -

    1.5 L

    - {/* {formatVolume(volumeToShow)} */} +

    {formatVolume(dailyNorma)} L

    My daily norma

    diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index ad207ff..e977a53 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -1,10 +1,18 @@ +import { useEffect } from "react"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import WaterDailyNorma from "../WaterDailyNorma/WaterDailyNorma.jsx"; import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; import css from "./WaterMainInfo.module.css"; +import { getUserInfo } from "../../redux/settings/operations.js"; +import { useDispatch } from "react-redux"; const WaterMainInfo = () => { + const dispatch = useDispatch(); + + useEffect(() => { + dispatch(getUserInfo()); + }, [dispatch]); return ( <>
    diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 60e4484..020e662 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,4 +1,38 @@ -import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; +import { instance } from "../auth/operations.js"; +// import { selectAuthToken } from "../auth/selectors.js"; -axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; +// export const getUserInfo = createAsyncThunk( +// "users/getUserInfo", +// async (_, thunkApi) => { +// try { +// const token = selectAuthToken(thunkApi.getState()); +// console.log(token); +// // if (!token) { +// // throw new Error("No token found"); +// // } +// const { data } = await instance.get("/users", { +// headers: { +// Authorization: `Bearer ${token}`, +// }, +// }); +// // console.log("Data received from API:", data); +// return data; +// } catch (error) { +// return thunkApi.rejectWithValue(error.message); +// } +// } +// ); + +export const getUserInfo = createAsyncThunk( + "users/getUserInfo", + async (_, thunkApi) => { + try { + const { data } = await instance.get("/users"); + console.log("Data received from API:", data); + return data; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/settings/selectors.js b/src/redux/settings/selectors.js index 27c0aab..3522cd5 100644 --- a/src/redux/settings/selectors.js +++ b/src/redux/settings/selectors.js @@ -1 +1,2 @@ export const selectDaysNotAsInWeek = (state) => state.settings.DaysNotAsInWeek; // Чи виставляти дні без врахування, як вони в тижні +export const selectGetUserInfo = (state) => state.settings.user; diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index e1583a8..c422f9d 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -1,8 +1,10 @@ import { createSlice } from "@reduxjs/toolkit"; +import { getUserInfo } from "./operations.js"; // import { } from "./operations"; const INITIAL_STATE = { DaysNotAsInWeek: false, + user: {}, }; const settingsSlice = createSlice({ @@ -13,6 +15,22 @@ const settingsSlice = createSlice({ state.DaysNotAsInWeek = action.payload; }, }, + extraReducers: (builder) => { + builder + .addCase(getUserInfo.pending, (state) => { + state.loading = true; + state.error = null; + }) + .addCase(getUserInfo.fulfilled, (state, { payload }) => { + state.loading = false; + // console.log("User info payload:", payload); + state.user = payload; + }) + .addCase(getUserInfo.rejected, (state, { payload }) => { + state.loading = false; + state.error = payload; + }); + }, }); export const settingsReducer = settingsSlice.reducer; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index a306ddd..105072a 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -27,6 +27,7 @@ export const getWaterAmountPerDay = createAsyncThunk( async (_, thunkApi) => { try { const { data } = await axios.get("/"); + // console.log(data); return data.amount; } catch (error) { return thunkApi.rejectWithValue(error.message); diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index 89b15d6..d57b06d 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -1,5 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { fetchWaterData, getWaterAmount } from "./operations"; +import { fetchWaterData } from "./operations"; const today = new Date().toLocaleDateString("en-CA"); // дата локальна, (YYYY-MM-DD) @@ -45,19 +45,19 @@ const waterSlice = createSlice({ .addCase(fetchWaterData.rejected, (state, action) => { state.loading = false; state.error = action.payload; - }) - .addCase(getWaterAmountPerDay.pending, (state) => { - state.loading = true; - state.error = null; - }) - .addCase(getWaterAmountPerDay.fulfilled, (state, { payload }) => { - state.loading = false; - state.waterAmount = payload; - }) - .addCase(getWaterAmountPerDay.rejected, (state, { payload }) => { - state.loading = false; - state.error = payload; }); + // .addCase(getWaterAmountPerDay.pending, (state) => { + // state.loading = true; + // state.error = null; + // }) + // .addCase(getWaterAmountPerDay.fulfilled, (state, { payload }) => { + // state.loading = false; + // state.waterAmount = payload; + // }) + // .addCase(getWaterAmountPerDay.rejected, (state, { payload }) => { + // state.loading = false; + // state.error = payload; + // }) }, }); From 7afb51cc7d058683def03bf235d958097c348532 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Mon, 2 Dec 2024 01:05:10 +0100 Subject: [PATCH 117/185] useNavigate in LogOutModal --- src/modals/LogOutModal/LogOutModal.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index 97766aa..539cc76 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -3,15 +3,16 @@ import Modal from "../Modal/Modal"; import { useDispatch } from "react-redux"; import { apiLogout } from "../../redux/auth/operations"; -import { useHistory } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; + // import toast from "react-hot-toast"; const LogOutModal = ({ isOpen, onClose }) => { const dispatch = useDispatch(); - const history = useHistory(); + const navigateTo = useNavigate(); const handleRedirect = () => { - history.push("/"); // переадресация на главную страницу + navigateTo("/"); // переадресация на главную страницу }; const handleLogOut = () => { From d6a1beda1451e6095a1ad73ae88148cd345c6720 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Mon, 2 Dec 2024 02:57:27 +0100 Subject: [PATCH 118/185] some fix in UserBar/UserPanel & modals --- src/components/UserBar/UserBar.jsx | 73 +++++++++++++------ src/components/UserBar/UserBar.module.css | 21 ++++-- src/components/UserPanel/UserPanel.jsx | 6 +- src/modals/LogOutModal/LogOutModal.jsx | 4 +- .../UserSettingsModal.module.css | 5 ++ 5 files changed, 73 insertions(+), 36 deletions(-) diff --git a/src/components/UserBar/UserBar.jsx b/src/components/UserBar/UserBar.jsx index 1828bf0..e4fd527 100644 --- a/src/components/UserBar/UserBar.jsx +++ b/src/components/UserBar/UserBar.jsx @@ -1,10 +1,10 @@ import { useState, useRef, useEffect } from "react"; import { usePopper } from "react-popper"; import { HiChevronDown, HiChevronUp } from "react-icons/hi"; -import { AiOutlineSetting } from "react-icons/ai"; -import { IoLogOutOutline } from 'react-icons/io5'; +import { AiOutlineSetting } from "react-icons/ai"; +import { IoLogOutOutline } from "react-icons/io5"; // import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; -import css from './UserBar.module.css'; +import css from "./UserBar.module.css"; const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { const defaultUserName = userName || "Nadia"; @@ -14,20 +14,23 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { const buttonRef = useRef(null); const popoverRef = useRef(null); - const { styles, attributes, update } = usePopper(buttonRef.current, popoverRef.current, { - placement: 'bottom-end', - modifiers: [ - { - name: 'offset', - options: { offset: [0, 8] }, - }, - { - name: 'preventOverflow', - options: { boundary: 'viewport' }, - }, - - ], - }); + const { styles, attributes, update } = usePopper( + buttonRef.current, + popoverRef.current, + { + placement: "bottom-end", + modifiers: [ + { + name: "offset", + options: { offset: [0, 8] }, + }, + { + name: "preventOverflow", + options: { boundary: "viewport" }, + }, + ], + } + ); const togglePopover = () => { setIsPopoverOpen((prev) => !prev); @@ -36,7 +39,7 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { } }; - // const closePopover = () => setIsPopoverOpen(false); + const closePopover = () => setIsPopoverOpen(false); useEffect(() => { const handleClickOutside = (event) => { @@ -45,9 +48,9 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { } }; - document.addEventListener('mousedown', handleClickOutside); + document.addEventListener("mousedown", handleClickOutside); return () => { - document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener("mousedown", handleClickOutside); }; }, []); @@ -67,20 +70,42 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { ) : (
    {avatarPlaceholder}
    )} - {isPopoverOpen ? : } + {isPopoverOpen ? ( + + ) : ( + + )}
    - - + +
    ); diff --git a/src/components/UserBar/UserBar.module.css b/src/components/UserBar/UserBar.module.css index 7e35d5d..b4b54b3 100644 --- a/src/components/UserBar/UserBar.module.css +++ b/src/components/UserBar/UserBar.module.css @@ -46,6 +46,8 @@ .icon { color: white; + width: 16px; + height: 16px; } .userbarpopover { @@ -69,21 +71,19 @@ gap: 8px; width: 100%; text-align: left; - font-family: var(--font-family, Arial, sans-serif); + font-family: var(--font-family); font-size: 14px; font-weight: 700; - color: #323f47; + line-height: 1.29; + color: rgba(50, 63, 71, 0.4); background: none; border: none; cursor: pointer; + transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); } .popoverbutton:hover { - background-color: #f5f7f9; -} - -.popoverbutton:focus { - outline: 2px solid #0073e6; + color: var(--background-primary-dark); } @media (min-width: 768px) { @@ -91,4 +91,11 @@ gap: 10px; height: 56px; } + .popoverbutton { + line-height: 1.49; + } + .icon { + width: 20px; + height: 20px; + } } diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx index 4c7770c..daf8589 100644 --- a/src/components/UserPanel/UserPanel.jsx +++ b/src/components/UserPanel/UserPanel.jsx @@ -10,11 +10,11 @@ const UserPanel = ({ userName, avatarUrl }) => { const [isLogOutModalOpen, setIsLogOutModalOpen] = useState(false); const handleOpenSettings = () => { - console.log("Settings modal opened"); + // console.log("Settings modal opened"); setIsSettingsModalOpen(true); }; const handleOpenLogOut = () => { - console.log("Log out modal opened"); + // console.log("Log out modal opened"); setIsLogOutModalOpen(true); }; const handleCloseModals = () => { @@ -34,7 +34,7 @@ const UserPanel = ({ userName, avatarUrl }) => { onLogOutClick={handleOpenLogOut} /> {isSettingsModalOpen && } - {isLogOutModalOpen && } +
); }; diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index 539cc76..714520f 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -18,9 +18,9 @@ const LogOutModal = ({ isOpen, onClose }) => { const handleLogOut = () => { dispatch(apiLogout()); onClose(); - // вставить оповещение с помощью Toast, типа: - // toast.success('toast.logOut') handleRedirect(); + // вставить оповещение с помощью Toast, типа: + // toast.success('Successfully logged Out!') }; return ( diff --git a/src/modals/UserSettingsModal/UserSettingsModal.module.css b/src/modals/UserSettingsModal/UserSettingsModal.module.css index 806aa3d..6e079c7 100644 --- a/src/modals/UserSettingsModal/UserSettingsModal.module.css +++ b/src/modals/UserSettingsModal/UserSettingsModal.module.css @@ -58,6 +58,7 @@ .settingModalButton { border: none; background-color: transparent; + cursor: pointer; @media (max-width: 767px) { position: absolute; top: -20px; @@ -65,6 +66,10 @@ } } +.settingModalButton .settingModalIcon:hover { + stroke: var(--accent); +} + .settingModalScrollable { flex: 1; overflow-y: auto; From 3ed909f4c5139230eb6a3cb71b0f483a0297e903 Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:42:08 +0200 Subject: [PATCH 119/185] loader and token --- src/components/Loader/Loader.jsx | 15 ++++++++++++++- src/pages/SignInPage/SignInPage.jsx | 18 +++++++++++++++--- src/redux/auth/operations.js | 4 ++-- src/redux/auth/slice.js | 3 +-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/components/Loader/Loader.jsx b/src/components/Loader/Loader.jsx index 332a6fb..46439b3 100644 --- a/src/components/Loader/Loader.jsx +++ b/src/components/Loader/Loader.jsx @@ -1,5 +1,18 @@ +import { ThreeDots } from "react-loader-spinner"; + const Loader = () => { - return <>; + return ( + + ); }; export default Loader; diff --git a/src/pages/SignInPage/SignInPage.jsx b/src/pages/SignInPage/SignInPage.jsx index 8b0a4e5..203706c 100644 --- a/src/pages/SignInPage/SignInPage.jsx +++ b/src/pages/SignInPage/SignInPage.jsx @@ -6,7 +6,10 @@ import { NavLink } from "react-router-dom"; import css from "./SignInPage.module.css"; import { useMediaQuery } from "react-responsive"; import AdvantagesSection from "../../components/AdvantagesSection/AdvantagesSection"; -import { selectAuthError } from "../../redux/auth/selectors"; +import { + selectAuthError, + selectAuthIsLoggedIn, +} from "../../redux/auth/selectors"; import { useSelector } from "react-redux"; import iziToast from "izitoast"; import "izitoast/dist/css/iziToast.min.css"; @@ -14,6 +17,7 @@ import "izitoast/dist/css/iziToast.min.css"; const SignInPage = () => { const isDesktop = useMediaQuery({ minWidth: 1440 }); const error = useSelector(selectAuthError); + const successLoggedIn = useSelector(selectAuthIsLoggedIn); return (
@@ -35,12 +39,20 @@ const SignInPage = () => { {error && iziToast.error({ title: "Error", - message: "Wrong password or email", + message: error, titleColor: "#ef5050", messageColor: "#ef5050", displayMode: 1, position: "topRight", - maxWidth: "300px", + maxWidth: "400px", + })} + {successLoggedIn && + iziToast.success({ + title: "Success", + message: "Successfully logged user", + displayMode: 1, + position: "topRight", + maxWidth: "400px", })}
); diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index 465c13d..19f0814 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -18,9 +18,9 @@ export const apiLogin = createAsyncThunk( async (formData, thunkApi) => { try { const { data } = await instance.post("users/login", formData); - setAuthHeaders(data.token); + setAuthHeaders(data.data.accessToken); // console.log(data); - return data; + return data.data; } catch (error) { return thunkApi.rejectWithValue(error.message); } diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 2faf5a8..8a2b770 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -44,8 +44,7 @@ const authSlice = createSlice({ }) .addCase(apiLogin.fulfilled, (state, action) => { state.isLoggedIn = true; - state.token = action.payload.token; - state.user = action.payload.user; + state.token = action.payload.accessToken; }) .addCase(apiLogin.rejected, (state, action) => { state.error = action.payload; From 566a6449c3451f97e8795822ee2189eb8ec47f02 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 10:46:40 +0200 Subject: [PATCH 120/185] up --- .../WaterMainInfo/WaterMainInfo.jsx | 4 ++- src/redux/settings/operations.js | 34 +++++++++++++------ src/redux/settings/slice.js | 2 +- src/redux/water/operations.js | 2 +- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index e977a53..899a9a1 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -9,10 +9,12 @@ import { useDispatch } from "react-redux"; const WaterMainInfo = () => { const dispatch = useDispatch(); - + // const token = useSelector(selectAuthToken); + // console.log(token); useEffect(() => { dispatch(getUserInfo()); }, [dispatch]); + return ( <>
diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 020e662..c37d9e0 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,6 +1,6 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; -import { instance } from "../auth/operations.js"; -// import { selectAuthToken } from "../auth/selectors.js"; +import { selectAuthToken } from "../auth/selectors.js"; +// import { instance } from "../auth/operations.js"; // export const getUserInfo = createAsyncThunk( // "users/getUserInfo", @@ -8,14 +8,7 @@ import { instance } from "../auth/operations.js"; // try { // const token = selectAuthToken(thunkApi.getState()); // console.log(token); -// // if (!token) { -// // throw new Error("No token found"); -// // } -// const { data } = await instance.get("/users", { -// headers: { -// Authorization: `Bearer ${token}`, -// }, -// }); +// const { data } = await instance.get("/users"); // // console.log("Data received from API:", data); // return data; // } catch (error) { @@ -24,11 +17,30 @@ import { instance } from "../auth/operations.js"; // } // ); +import axios from "axios"; +// import { useSelector } from "react-redux"; + +export const instance = axios.create({ + baseURL: "https://back-inter-mafia.onrender.com/api/users", +}); + +const setAuthHeaders = (token) => { + instance.defaults.headers.common.Authorization = `Bearer ${token}`; +}; + export const getUserInfo = createAsyncThunk( "users/getUserInfo", async (_, thunkApi) => { try { - const { data } = await instance.get("/users"); + // const token = selectAuthToken(thunkApi.getState()); + // console.log(token); + // const token = useSelector(selectAuthToken); + // console.log(token); + // if (!token) { + // throw new Error("No token found"); + // } + const { data } = await instance.get("/"); + setAuthHeaders(data.token); console.log("Data received from API:", data); return data; } catch (error) { diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index c422f9d..78ef5b8 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -24,7 +24,7 @@ const settingsSlice = createSlice({ .addCase(getUserInfo.fulfilled, (state, { payload }) => { state.loading = false; // console.log("User info payload:", payload); - state.user = payload; + state.user = payload.data; }) .addCase(getUserInfo.rejected, (state, { payload }) => { state.loading = false; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index 105072a..fdb967a 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -8,7 +8,7 @@ export const fetchWaterData = createAsyncThunk( async ({ type, date }, thunkAPI) => { try { const endpoint = type === "month" ? "/month" : "/day"; - console.log(endpoint); + // console.log(endpoint); const response = await axios.get(endpoint, { params: { date }, From 2fbcc7055f4f52893ec633f349430fde73f2170f Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 10:56:36 +0200 Subject: [PATCH 121/185] up --- src/redux/settings/operations.js | 74 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index c37d9e0..3afb2e2 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,50 +1,50 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; import { selectAuthToken } from "../auth/selectors.js"; -// import { instance } from "../auth/operations.js"; - -// export const getUserInfo = createAsyncThunk( -// "users/getUserInfo", -// async (_, thunkApi) => { -// try { -// const token = selectAuthToken(thunkApi.getState()); -// console.log(token); -// const { data } = await instance.get("/users"); -// // console.log("Data received from API:", data); -// return data; -// } catch (error) { -// return thunkApi.rejectWithValue(error.message); -// } -// } -// ); - -import axios from "axios"; -// import { useSelector } from "react-redux"; - -export const instance = axios.create({ - baseURL: "https://back-inter-mafia.onrender.com/api/users", -}); - -const setAuthHeaders = (token) => { - instance.defaults.headers.common.Authorization = `Bearer ${token}`; -}; +import { instance } from "../auth/operations.js"; export const getUserInfo = createAsyncThunk( "users/getUserInfo", async (_, thunkApi) => { try { - // const token = selectAuthToken(thunkApi.getState()); - // console.log(token); - // const token = useSelector(selectAuthToken); - // console.log(token); - // if (!token) { - // throw new Error("No token found"); - // } - const { data } = await instance.get("/"); - setAuthHeaders(data.token); - console.log("Data received from API:", data); + const token = selectAuthToken(thunkApi.getState()); + console.log(token); + const { data } = await instance.get("/users"); + // console.log("Data received from API:", data); return data; } catch (error) { return thunkApi.rejectWithValue(error.message); } } ); + +// import axios from "axios"; +// // import { useSelector } from "react-redux"; + +// export const instance = axios.create({ +// baseURL: "https://back-inter-mafia.onrender.com/api/users", +// }); + +// const setAuthHeaders = (token) => { +// instance.defaults.headers.common.Authorization = `Bearer ${token}`; +// }; + +// export const getUserInfo = createAsyncThunk( +// "users/getUserInfo", +// async (_, thunkApi) => { +// try { +// // const token = selectAuthToken(thunkApi.getState()); +// // console.log(token); +// // const token = useSelector(selectAuthToken); +// // console.log(token); +// // if (!token) { +// // throw new Error("No token found"); +// // } +// const { data } = await instance.get("/"); +// setAuthHeaders(data.token); +// console.log("Data received from API:", data); +// return data; +// } catch (error) { +// return thunkApi.rejectWithValue(error.message); +// } +// } +// ); From 94c9419a1e1a060b7bea849d3350e704bb473521 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Mon, 2 Dec 2024 10:00:00 +0100 Subject: [PATCH 122/185] create setting form --- .../UsersSettingsForm/UsersSettingsForm.jsx | 14 +++++++++++++- .../UsersSettingsForm.module.css | 19 +++++++++++++++++++ src/redux/settings/operations.js | 6 +++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index aef7803..7bea905 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -4,6 +4,8 @@ import * as Yup from "yup"; import css from "./UsersSettingsForm.module.css"; import { useEffect, useState } from "react"; import clsx from "clsx"; +import { useSelector } from "react-redux"; +import { selectAuthToken } from "../../redux/auth/selectors"; const validationSettingSchema = Yup.object().shape({ avatarUrl: Yup.mixed(), @@ -28,6 +30,9 @@ const UsersSettingsForm = () => { const [avatarPreview, setAvatarPreview] = useState(null); const [calculateWaterNorm, setCalculateWaterNorm] = useState(null); + const token = useSelector(selectAuthToken); + console.log(token); + const { register, handleSubmit, @@ -68,6 +73,7 @@ const UsersSettingsForm = () => { className={css.settingForm} onSubmit={handleSubmit((d) => console.log(d))} > + {/* Avatar */}
{avatarPreview ? ( {
+ {/* Gender Form */}
@@ -133,6 +140,7 @@ const UsersSettingsForm = () => {
+ {/* Name and Email */}
@@ -158,6 +166,7 @@ const UsersSettingsForm = () => { )}
+ {/* Daily Norm Context */}
@@ -192,6 +201,7 @@ const UsersSettingsForm = () => {
+ {/* Weight and Time active */}
+ {/* Calculate Form */}

- The required amount of water in liters per day: + The required amount of water in liters per{" "} +
day:

2 {calculateWaterNorm} diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index ab081e2..754b4d0 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -46,6 +46,7 @@ justify-content: center; align-items: center; gap: 8px; + cursor: pointer; } .settingAvatarIcon { @@ -180,6 +181,16 @@ border-color: rgba(47, 47, 47, 0.4); } +input[type="number"] { + -moz-appearance: textfield; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + .settingDailyForm { display: flex; flex-direction: column; @@ -187,6 +198,7 @@ justify-content: start; align-items: start; margin-bottom: 24px; + margin-top: 24px; } .settingDailyAllCard { @@ -364,6 +376,7 @@ letter-spacing: -0.01em; text-align: center; color: #323f47; + cursor: pointer; @media (min-width: 768px) { line-height: 1.5; } @@ -376,3 +389,9 @@ .settingFormButton:focus { background-color: #e6e6e6; } + +@media (min-width: 768px) { + .settingTransferText { + display: none; + } +} diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 60e4484..a4b1b36 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,4 +1,8 @@ import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; -axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; +// axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; + +export const instance = axios.create({ + baseURL: "https://back-inter-mafia.onrender.com/", +}); From 50d70852da64836132ce0a5b32b86d9c6b621aec Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 12:01:41 +0200 Subject: [PATCH 123/185] set token --- src/redux/settings/operations.js | 71 ++++++++++++++++---------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 3afb2e2..2380ba5 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,6 +1,32 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; import { selectAuthToken } from "../auth/selectors.js"; -import { instance } from "../auth/operations.js"; +// import { instance } from "../auth/operations.js"; + +// export const getUserInfo = createAsyncThunk( +// "users/getUserInfo", +// async (_, thunkApi) => { +// try { +// const token = selectAuthToken(thunkApi.getState()); +// console.log(token); +// const { data } = await instance.get("/users"); +// // console.log("Data received from API:", data); +// return data; +// } catch (error) { +// return thunkApi.rejectWithValue(error.message); +// } +// } +// ); + +import axios from "axios"; +// import { useSelector } from "react-redux"; + +export const instance = axios.create({ + baseURL: "https://back-inter-mafia.onrender.com/api/users", +}); + +const setAuthHeaders = (token) => { + instance.defaults.headers.common.Authorization = `Bearer ${token}`; +}; export const getUserInfo = createAsyncThunk( "users/getUserInfo", @@ -8,43 +34,18 @@ export const getUserInfo = createAsyncThunk( try { const token = selectAuthToken(thunkApi.getState()); console.log(token); - const { data } = await instance.get("/users"); - // console.log("Data received from API:", data); + // const token = useSelector(selectAuthToken); + // console.log(token); + if (!token) { + throw new Error("No token found"); + } + setAuthHeaders(token); + const { data } = await instance.get("/"); + + console.log("Data received from API:", data); return data; } catch (error) { return thunkApi.rejectWithValue(error.message); } } ); - -// import axios from "axios"; -// // import { useSelector } from "react-redux"; - -// export const instance = axios.create({ -// baseURL: "https://back-inter-mafia.onrender.com/api/users", -// }); - -// const setAuthHeaders = (token) => { -// instance.defaults.headers.common.Authorization = `Bearer ${token}`; -// }; - -// export const getUserInfo = createAsyncThunk( -// "users/getUserInfo", -// async (_, thunkApi) => { -// try { -// // const token = selectAuthToken(thunkApi.getState()); -// // console.log(token); -// // const token = useSelector(selectAuthToken); -// // console.log(token); -// // if (!token) { -// // throw new Error("No token found"); -// // } -// const { data } = await instance.get("/"); -// setAuthHeaders(data.token); -// console.log("Data received from API:", data); -// return data; -// } catch (error) { -// return thunkApi.rejectWithValue(error.message); -// } -// } -// ); From 139a12b7c9aa2fab93358f197a879a9d7c7d8add Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Mon, 2 Dec 2024 12:25:17 +0100 Subject: [PATCH 124/185] add setting redux --- .../UsersSettingsForm/UsersSettingsForm.jsx | 2 +- .../UsersSettingsForm.module.css | 1 + src/redux/settings/operations.js | 41 ++++++++++++++++++- src/redux/settings/selectors.js | 5 +++ src/redux/settings/slice.js | 35 ++++++++++++++++ 5 files changed, 82 insertions(+), 2 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 7bea905..d82f83c 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -195,7 +195,7 @@ const UsersSettingsForm = () => {

! Active - time in honours + time in hours

diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index 754b4d0..dc99db0 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -265,6 +265,7 @@ input[type="number"]::-webkit-outer-spin-button { color: rgba(47, 47, 47, 0.6); @media (min-width: 768px) { line-height: 1.5; + font-size: 16px; } } diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index a4b1b36..4ef22d8 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -4,5 +4,44 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; // axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; export const instance = axios.create({ - baseURL: "https://back-inter-mafia.onrender.com/", + baseURL: "https://back-inter-mafia.onrender.com/api/users", + withCredentials: true, }); + +const setAuthHeaders = (token) => { + instance.defaults.headers.common.Authorization = `Bearer ${token}`; +}; + +export const currentUser = createAsyncThunk( + "users/current", + async (_, { getState, rejectWithValue }) => { + try { + const state = getState(); + setAuthHeaders(state.auth.accessToken); + const { data } = await instance.get(""); + return data; + } catch (error) { + return rejectWithValue(error.message); + } + }, + { + condition: (_, { getState }) => { + const token = getState().auth.accessToken; + + if (!token) return false; + return true; + }, + } +); + +export const editUser = createAsyncThunk( + "users/edit", + async (formData, thunkAPI) => { + try { + const { data } = await instance.patch("", formData); + return data; + } catch (error) { + return thunkAPI.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/settings/selectors.js b/src/redux/settings/selectors.js index 27c0aab..fdca05a 100644 --- a/src/redux/settings/selectors.js +++ b/src/redux/settings/selectors.js @@ -1 +1,6 @@ export const selectDaysNotAsInWeek = (state) => state.settings.DaysNotAsInWeek; // Чи виставляти дні без врахування, як вони в тижні +export const selectUser = (state) => state.settings.user; +export const selectAvatarUrl = (state) => state.settings.user.avatarURL; +export const selectName = (state) => state.settings.user.name; +export const selectEmail = (state) => state.settings.user.email; +export const selectDailyNorm = (state) => state.settings.user.dailyNorm; diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index e1583a8..02279f3 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -1,7 +1,19 @@ import { createSlice } from "@reduxjs/toolkit"; +import { currentUser, editUser } from "./operations"; // import { } from "./operations"; const INITIAL_STATE = { + user: { + name: "", + email: "", + weight: null, + activeTime: null, + gender: "woman", + dailyNorm: 1500, + avatarUrl: "", + }, + error: null, + accessToken: null, DaysNotAsInWeek: false, }; @@ -13,6 +25,29 @@ const settingsSlice = createSlice({ state.DaysNotAsInWeek = action.payload; }, }, + extraReducers: (builder) => { + builder + + .addCase(currentUser.pending, (state) => { + state.error = null; + }) + .addCase(currentUser.fulfilled, (state, action) => { + state.isLoggedIn = true; + state.user = action.payload.data; + }) + .addCase(currentUser.rejected, (state, action) => { + state.error = action.payload; + }) + .addCase(editUser.pending, (state) => { + state.error = null; + }) + .addCase(editUser.fulfilled, (state, action) => { + state.user = action.payload.data; + }) + .addCase(editUser.rejected, (state, action) => { + state.error = action.payload; + }); + }, }); export const settingsReducer = settingsSlice.reducer; From 01b7564f19c3070ee2b0493d84fd256710840661 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Mon, 2 Dec 2024 12:44:08 +0100 Subject: [PATCH 125/185] Update Logo & styles SignIn --- src/components/Logo/Logo.jsx | 11 ++++++-- src/components/Logo/Logo.module.css | 1 + src/components/SignInForm/SignInForm.jsx | 3 +- .../SignInForm/SignInForm.module.css | 28 +++++++++++++------ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/components/Logo/Logo.jsx b/src/components/Logo/Logo.jsx index 9f4d1c5..27be010 100644 --- a/src/components/Logo/Logo.jsx +++ b/src/components/Logo/Logo.jsx @@ -1,8 +1,13 @@ -import styles from './Logo.module.css'; +import { NavLink } from "react-router-dom"; +import styles from "./Logo.module.css"; -const Logo = ({ className = '' }) => { +const Logo = ({ className = "" }) => { return ( -
aquatrack
+ <> + +
aquatrack
+
+ ); }; diff --git a/src/components/Logo/Logo.module.css b/src/components/Logo/Logo.module.css index 1326128..0f6e2d6 100644 --- a/src/components/Logo/Logo.module.css +++ b/src/components/Logo/Logo.module.css @@ -4,6 +4,7 @@ font-weight: 700; position: relative; text-transform: uppercase; + display: inline-block; } /* BREAKPOINTS (Mobile First) */ diff --git a/src/components/SignInForm/SignInForm.jsx b/src/components/SignInForm/SignInForm.jsx index c0a236e..7c8c19a 100644 --- a/src/components/SignInForm/SignInForm.jsx +++ b/src/components/SignInForm/SignInForm.jsx @@ -48,13 +48,14 @@ const SignInForm = () => { Email Date: Mon, 2 Dec 2024 14:54:24 +0100 Subject: [PATCH 126/185] l --- src/components/AddWaterBtn/AddWaterBtn.jsx | 23 ++++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 8eab0bb..4981bdb 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -1,14 +1,13 @@ import { useState } from "react"; import css from "./AddWaterBtn.module.css"; import clsx from "clsx"; + import WaterModal from "../../modals/WaterModal/WaterModal.jsx"; const AddWaterBtn = ({ variant = "default" }) => { - const [isModalOpen, setIsModalOpen] = useState(false); - - const openModal = () => { - setIsModalOpen(true); - }; + const [logOutModalisOpen, setLogOutModalisOpen] = useState(false); + const openLogOutModal = () => setLogOutModalisOpen(true); + const closeLogOutModal = () => setLogOutModalisOpen(false); return ( <> @@ -19,7 +18,7 @@ const AddWaterBtn = ({ variant = "default" }) => { css.addBtn, variant === "alt" ? css.addBtnAlt : css.defaultBtn )} - onClick={openModal} + onClick={openLogOutModal} > { Add water - {isModalOpen && ( - - )} + ); }; From b7f0235b602a2512700253ffb65700b2327f496b Mon Sep 17 00:00:00 2001 From: Oleksii Ozyrskyi Date: Mon, 2 Dec 2024 15:05:49 +0100 Subject: [PATCH 127/185] Special for Yuliia --- src/components/AddWaterBtn/AddWaterBtn.jsx | 1 - src/components/WaterForm/WaterForm.jsx | 1 - src/components/WaterForm/WaterForm.module.css | 11 ++++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/AddWaterBtn/AddWaterBtn.jsx b/src/components/AddWaterBtn/AddWaterBtn.jsx index 99a78e7..4981bdb 100644 --- a/src/components/AddWaterBtn/AddWaterBtn.jsx +++ b/src/components/AddWaterBtn/AddWaterBtn.jsx @@ -1,5 +1,4 @@ import { useState } from "react"; -import { useState } from "react"; import css from "./AddWaterBtn.module.css"; import clsx from "clsx"; diff --git a/src/components/WaterForm/WaterForm.jsx b/src/components/WaterForm/WaterForm.jsx index 68105be..9ce867e 100644 --- a/src/components/WaterForm/WaterForm.jsx +++ b/src/components/WaterForm/WaterForm.jsx @@ -25,7 +25,6 @@ const WaterForm = ({ title, paragraph, initialValues }) => { const entries = { amount: values.amountOfWater, date: formattedTime, - currentDailyNorm: 1.5, }; postWaterData(entries); console.log("Values:", entries); diff --git a/src/components/WaterForm/WaterForm.module.css b/src/components/WaterForm/WaterForm.module.css index 223d882..7307a01 100644 --- a/src/components/WaterForm/WaterForm.module.css +++ b/src/components/WaterForm/WaterForm.module.css @@ -5,6 +5,7 @@ p { .wrapper { border-radius: 15px; padding: 40px 20px; + width: 313px; background-color: lightblue; } @@ -59,7 +60,7 @@ p { .valueDisplay > span { display: block; - padding: 10px; + padding: 13px; } .ctrlBtn { @@ -86,7 +87,7 @@ p { .field { border: 1px solid rgba(47, 47, 47, 0.15); border-radius: 15px; - width: 318px; + width: 272px; padding-left: 20px; height: 56px; margin-bottom: 24px; @@ -109,7 +110,7 @@ p { border: 1px solid rgba(47, 47, 47, 0.15); border-radius: 15px; padding-left: 20px; - width: 318px; + width: 272px; height: 56px; font-size: 14px; line-height: 129%; @@ -143,7 +144,7 @@ p { .wrapper { padding: 40px; width: 438px; - height: 475px; + height: 555px; background-color: lightblue; } @@ -179,7 +180,7 @@ p { } .amountOfWaterField, .field { - width: 410px; + width: 360px; font-size: 16px; line-height: 150%; letter-spacing: -0.01em; From b316652c34c52a326fe75f2a0ef3bd5238af4d64 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Mon, 2 Dec 2024 15:16:14 +0100 Subject: [PATCH 128/185] add logic for setting form --- .../UsersSettingsForm/UsersSettingsForm.jsx | 91 +++++++++++++++---- src/redux/settings/operations.js | 4 + src/redux/settings/slice.js | 4 +- 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index d82f83c..aa60ec0 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -4,8 +4,15 @@ import * as Yup from "yup"; import css from "./UsersSettingsForm.module.css"; import { useEffect, useState } from "react"; import clsx from "clsx"; -import { useSelector } from "react-redux"; -import { selectAuthToken } from "../../redux/auth/selectors"; +import { useDispatch, useSelector } from "react-redux"; +import { + selectEmail, + // selectEmail, + selectName, + selectUser, +} from "../../redux/settings/selectors"; +import { currentUser, editUser } from "../../redux/settings/operations"; +// import { selectAuthUser } from "../../redux/auth/selectors"; const validationSettingSchema = Yup.object().shape({ avatarUrl: Yup.mixed(), @@ -27,11 +34,18 @@ const validationSettingSchema = Yup.object().shape({ }); const UsersSettingsForm = () => { - const [avatarPreview, setAvatarPreview] = useState(null); - const [calculateWaterNorm, setCalculateWaterNorm] = useState(null); + const dispatch = useDispatch(); + + const userName = useSelector(selectName); + const userEmail = useSelector(selectEmail); + const user = useSelector(selectUser); + console.log(userEmail); + + useEffect(() => { + dispatch(currentUser()); + }, [dispatch]); - const token = useSelector(selectAuthToken); - console.log(token); + const [avatarPreview, setAvatarPreview] = useState(null); const { register, @@ -40,6 +54,14 @@ const UsersSettingsForm = () => { watch, formState: { errors }, } = useForm({ + defaultValues: { + name: "", + email: "", + weight: 0, + activeTime: 0, + gender: "woman", + dailyNorm: 1.5, + }, resolver: yupResolver(validationSettingSchema), }); @@ -47,6 +69,19 @@ const UsersSettingsForm = () => { const activeTime = watch("activeTime"); const gender = watch("gender"); + useEffect(() => { + if (user.avatarUrl) { + setAvatarPreview(user.avatarUrl); + } else if (userName) { + setAvatarPreview(userName.charAt(0).toUpperCase()); + } + }, [user.avatarUrl, userName]); + + useEffect(() => { + setValue("name", userName); + setValue("email", userEmail); + }, [userName, userEmail, setValue]); + useEffect(() => { if (weight && activeTime && gender) { let waterNorm = 0; @@ -55,8 +90,7 @@ const UsersSettingsForm = () => { } else if (gender === "man") { waterNorm = Math.max(weight * 0.04 + activeTime * 0.6, 0); } - setValue("waterDrink", waterNorm.toFixed(1)); - setCalculateWaterNorm(waterNorm.toFixed(1)); + setValue("dailyNorm", waterNorm.toFixed(1)); } }, [weight, activeTime, gender, setValue]); @@ -64,25 +98,42 @@ const UsersSettingsForm = () => { const file = e.target.files[0]; if (file) { setAvatarPreview(URL.createObjectURL(file)); - setValue("avatarUrl", e.target.files); + setValue("avatarUrl", file); + } + }; + + const onSubmit = async (data) => { + const formData = new FormData(); + Object.entries(data).forEach(([key, value]) => + formData.append(key, value instanceof FileList ? value[0] : value) + ); + + try { + await dispatch(editUser(formData)); + alert("User updated successfully!"); + } catch (error) { + console.error("Error updating user:", error); + alert("Failed to update user. Please try again."); } }; return ( -
console.log(d))} - > + {/* Avatar */}
{avatarPreview ? ( - Avatar + typeof avatarPreview === "string" && + avatarPreview.startsWith("http") ? ( + User Avatar + ) : ( +
{avatarPreview}
+ ) ) : ( -
N
+
{userName?.charAt(0)}
)}
diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 4ef22d8..69adc4f 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -19,8 +19,12 @@ export const currentUser = createAsyncThunk( const state = getState(); setAuthHeaders(state.auth.accessToken); const { data } = await instance.get(""); + // console.log(data); + return data; } catch (error) { + // console.log(error); + return rejectWithValue(error.message); } }, diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index 02279f3..ba09881 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -33,7 +33,7 @@ const settingsSlice = createSlice({ }) .addCase(currentUser.fulfilled, (state, action) => { state.isLoggedIn = true; - state.user = action.payload.data; + state.user = action.payload; }) .addCase(currentUser.rejected, (state, action) => { state.error = action.payload; @@ -42,7 +42,7 @@ const settingsSlice = createSlice({ state.error = null; }) .addCase(editUser.fulfilled, (state, action) => { - state.user = action.payload.data; + state.user = action.payload; }) .addCase(editUser.rejected, (state, action) => { state.error = action.payload; From df485515f40e7d3645e67412304a5d017b032230 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 17:58:25 +0200 Subject: [PATCH 129/185] add styles fot progress bar/selectWaterAmountForToday --- .../WaterDailyNorma/WaterDailyNorma.jsx | 8 ++--- .../WaterMainInfo/WaterMainInfo.jsx | 9 +++-- .../WaterProgressBar/WaterProgressBar.jsx | 35 +++++++++++++------ .../WaterProgressBar.module.css | 21 ++++++----- src/redux/settings/selectors.js | 2 +- src/redux/water/operations.js | 23 +++--------- src/redux/water/selectors.js | 15 +++++++- src/redux/water/slice.js | 13 ------- 8 files changed, 69 insertions(+), 57 deletions(-) diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index 75d5b4d..4536660 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -1,15 +1,15 @@ import { useSelector } from "react-redux"; import css from "./WaterDailyNorma.module.css"; -import { selectGetUserInfo } from "../../redux/settings/selectors.js"; +import { selectDailyNorm } from "../../redux/settings/selectors.js"; export const formatVolume = (ml) => { - return `${(ml / 1000).toFixed(1)} L`; + return `${(ml / 1000).toFixed(1)}`; }; const WaterDailyNorma = () => { - const userInfo = useSelector(selectGetUserInfo); + const dailyNorma = useSelector(selectDailyNorm); // console.log(userInfo); - const dailyNorma = userInfo.data?.dailyNorm; + // const dailyNorma = userInfo.data?.dailyNorm; return ( <> diff --git a/src/components/WaterMainInfo/WaterMainInfo.jsx b/src/components/WaterMainInfo/WaterMainInfo.jsx index 899a9a1..92c1070 100644 --- a/src/components/WaterMainInfo/WaterMainInfo.jsx +++ b/src/components/WaterMainInfo/WaterMainInfo.jsx @@ -6,15 +6,20 @@ import WaterProgressBar from "../WaterProgressBar/WaterProgressBar.jsx"; import css from "./WaterMainInfo.module.css"; import { getUserInfo } from "../../redux/settings/operations.js"; import { useDispatch } from "react-redux"; +import { fetchWaterData } from "../../redux/water/operations.js"; const WaterMainInfo = () => { const dispatch = useDispatch(); - // const token = useSelector(selectAuthToken); - // console.log(token); + useEffect(() => { dispatch(getUserInfo()); }, [dispatch]); + useEffect(() => { + const today = new Date().toLocaleDateString("en-CA"); + dispatch(fetchWaterData({ type: "day", date: today })); + }, [dispatch]); + return ( <>
diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index 4610140..fee4337 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -1,27 +1,42 @@ -// import { useSelector } from "react-redux"; -// import { selectCurrentAmountWater } from "../../redux/water/selectors.js"; +import { useSelector } from "react-redux"; +import { selectWaterAmountForToday } from "../../redux/water/selectors.js"; +import { selectDailyNorm } from "../../redux/settings/selectors.js"; import css from "./WaterProgressBar.module.css"; +import { formatVolume } from "../WaterDailyNorma/WaterDailyNorma.jsx"; const WaterProgressBar = () => { - // const currentAmount = useSelector(selectCurrentAmountWater); - // export const formatVolume = (ml) => { - // return `${(ml / 1000).toFixed(1)} L`; - // }; - // const waterPercentage = Math.round((currentAmount / dailyNorma) * 100); + const currentAmount = useSelector(selectWaterAmountForToday); + console.log(currentAmount); + const dailyNorma = useSelector(selectDailyNorm); + + const waterPercentage = formatVolume( + Math.round((currentAmount / dailyNorma) * 100) + ); return ( <>

Today

- {/* {formatVolume(currentAmount)} / {formatVolume(dailyGoal) * 100} */} -

80

+ {waterPercentage} +
+ + +
0% diff --git a/src/components/WaterProgressBar/WaterProgressBar.module.css b/src/components/WaterProgressBar/WaterProgressBar.module.css index b419528..40742da 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.module.css +++ b/src/components/WaterProgressBar/WaterProgressBar.module.css @@ -25,11 +25,16 @@ align-items: center; } +.volumeInfo { + font-size: 10px; + line-height: 180%; + color: #9be1a0; +} .progressBarContainer { position: relative; - width: 100%; + max-width: 255px; height: 0.5rem; - background-color: #e5e7eb; + background-color: #f0eff4; border-radius: 9999px; margin-bottom: 8px; } @@ -39,15 +44,15 @@ left: 0; top: 0; height: 100%; - background-color: #4ade80; - border-radius: 9999px; + background-color: #9be1a0; + border-radius: 9px; transition: width 0.3s ease-out; } -.volumeInfo { - font-size: 10px; - line-height: 180%; - color: #9be1a0; +.icon { + position: absolute; + top: 50%; + transform: translateY(-50%); } @media only screen and (min-width: 768px) { diff --git a/src/redux/settings/selectors.js b/src/redux/settings/selectors.js index 3522cd5..368d26f 100644 --- a/src/redux/settings/selectors.js +++ b/src/redux/settings/selectors.js @@ -1,2 +1,2 @@ export const selectDaysNotAsInWeek = (state) => state.settings.DaysNotAsInWeek; // Чи виставляти дні без врахування, як вони в тижні -export const selectGetUserInfo = (state) => state.settings.user; +export const selectDailyNorm = (state) => state.settings.user.dailyNorm; diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index ab2c83f..2e184cb 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -22,27 +22,14 @@ export const fetchWaterData = createAsyncThunk( } ); -export const getWaterAmountPerDay = createAsyncThunk( - "water/waterAmount", - async (_, thunkApi) => { +export const apiDeleteWater = createAsyncThunk( + "water/apiDeleteWater", + async (waterId, thunkApi) => { try { - const { data } = await axios.get("/"); - // console.log(data); - return data.amount; + const { data } = await axios.delete(`/water/${waterId}`); + return data; } catch (error) { return thunkApi.rejectWithValue(error.message); } } ); - -export const apiDeleteWater = createAsyncThunk( - "water/apiDeleteWater", - async (waterId, thunkApi) => { - try { - const {data} = await axios.delete(`/water/${waterId}`) - return data; - } catch (error) { - return thunkApi.rejectWithValue(error.message); - } - } -) diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index 59564f9..a6f9bf1 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,4 +3,17 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; -export const selectWaterAmountPerDay = (state) => state.water.waterAmount; + +export const selectWaterAmountForToday = (state) => { + const today = new Date().toLocaleDateString("en-CA"); + const dayDetails = state.water.dayDetails; + const todayData = dayDetails.filter((detail) => { + const recordDate = new Date(detail.date).toLocaleDateString("en-CA"); + return recordDate === today; + }); + const totalWaterAmount = todayData.reduce( + (total, record) => total + record.amount, + 0 + ); + return totalWaterAmount; +}; diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index d57b06d..f926db9 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -8,7 +8,6 @@ const INITIAL_STATE = { dayDetails: [], // Деталі пиття води за конкретний день chosenDate: today, chosenMonth: today.slice(0, 7), // Обраний місяць (YYYY-MM) - waterAmount: [], // Кількість води loading: false, // Стан завантаження error: null, // Помилки }; @@ -46,18 +45,6 @@ const waterSlice = createSlice({ state.loading = false; state.error = action.payload; }); - // .addCase(getWaterAmountPerDay.pending, (state) => { - // state.loading = true; - // state.error = null; - // }) - // .addCase(getWaterAmountPerDay.fulfilled, (state, { payload }) => { - // state.loading = false; - // state.waterAmount = payload; - // }) - // .addCase(getWaterAmountPerDay.rejected, (state, { payload }) => { - // state.loading = false; - // state.error = payload; - // }) }, }); From 5dd968d6d82748097bb300974e947465b152147f Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Mon, 2 Dec 2024 18:12:07 +0200 Subject: [PATCH 130/185] up --- src/components/WaterDailyNorma/WaterDailyNorma.jsx | 4 +--- src/components/WaterProgressBar/WaterProgressBar.jsx | 7 ++----- src/redux/water/operations.js | 12 ------------ 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index 4536660..c8d495f 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -1,6 +1,6 @@ import { useSelector } from "react-redux"; -import css from "./WaterDailyNorma.module.css"; import { selectDailyNorm } from "../../redux/settings/selectors.js"; +import css from "./WaterDailyNorma.module.css"; export const formatVolume = (ml) => { return `${(ml / 1000).toFixed(1)}`; @@ -8,8 +8,6 @@ export const formatVolume = (ml) => { const WaterDailyNorma = () => { const dailyNorma = useSelector(selectDailyNorm); - // console.log(userInfo); - // const dailyNorma = userInfo.data?.dailyNorm; return ( <> diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index fee4337..4043967 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -6,7 +6,7 @@ import { formatVolume } from "../WaterDailyNorma/WaterDailyNorma.jsx"; const WaterProgressBar = () => { const currentAmount = useSelector(selectWaterAmountForToday); - console.log(currentAmount); + // console.log(currentAmount); const dailyNorma = useSelector(selectDailyNorm); const waterPercentage = formatVolume( @@ -17,10 +17,7 @@ const WaterProgressBar = () => { <>

Today

- - {waterPercentage} - - + {waterPercentage}
{ - try { - const { data } = await axios.delete(`/water/${waterId}`); - return data; - } catch (error) { - return thunkApi.rejectWithValue(error.message); - } - } -); - export const postWaterData = async (entries) => { try { const response = await axios.post("/", entries); From 4261375f73223a11a5649d1bbad35cab043a6869 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Mon, 2 Dec 2024 20:41:58 +0100 Subject: [PATCH 131/185] create redux setting --- .../UsersSettingsForm/UsersSettingsForm.jsx | 4 +- src/redux/settings/operations.js | 86 +++++++++---------- src/redux/settings/slice.js | 21 ++--- 3 files changed, 50 insertions(+), 61 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index aa60ec0..c1812f8 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -11,7 +11,7 @@ import { selectName, selectUser, } from "../../redux/settings/selectors"; -import { currentUser, editUser } from "../../redux/settings/operations"; +import { getUserInfo, editUser } from "../../redux/settings/operations"; // import { selectAuthUser } from "../../redux/auth/selectors"; const validationSettingSchema = Yup.object().shape({ @@ -42,7 +42,7 @@ const UsersSettingsForm = () => { console.log(userEmail); useEffect(() => { - dispatch(currentUser()); + dispatch(getUserInfo()); }, [dispatch]); const [avatarPreview, setAvatarPreview] = useState(null); diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 7943e2d..c9dc938 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,5 +1,5 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; -// import { selectAuthToken } from "../auth/selectors.js"; +import { selectAuthToken } from "../auth/selectors.js"; import axios from "axios"; // axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; @@ -12,31 +12,31 @@ const setAuthHeaders = (token) => { instance.defaults.headers.common.Authorization = `Bearer ${token}`; }; -export const currentUser = createAsyncThunk( - "users/current", - async (_, { getState, rejectWithValue }) => { - try { - const state = getState(); - setAuthHeaders(state.auth.accessToken); - const { data } = await instance.get(""); - // console.log(data); +// export const currentUser = createAsyncThunk( +// "users/current", +// async (_, { getState, rejectWithValue }) => { +// try { +// const state = getState(); +// setAuthHeaders(state.auth.accessToken); +// const { data } = await instance.get(""); +// // console.log(data); - return data; - } catch (error) { - // console.log(error); +// return data; +// } catch (error) { +// // console.log(error); - return rejectWithValue(error.message); - } - }, - { - condition: (_, { getState }) => { - const token = getState().auth.accessToken; +// return rejectWithValue(error.message); +// } +// }, +// { +// condition: (_, { getState }) => { +// const token = getState().auth.accessToken; - if (!token) return false; - return true; - }, - } -); +// if (!token) return false; +// return true; +// }, +// } +// ); export const editUser = createAsyncThunk( "users/edit", @@ -50,24 +50,24 @@ export const editUser = createAsyncThunk( } ); -// export const getUserInfo = createAsyncThunk( -// "users/getUserInfo", -// async (_, thunkApi) => { -// try { -// const token = selectAuthToken(thunkApi.getState()); -// console.log(token); -// // const token = useSelector(selectAuthToken); -// // console.log(token); -// if (!token) { -// throw new Error("No token found"); -// } -// setAuthHeaders(token); -// const { data } = await instance.get("/"); +export const getUserInfo = createAsyncThunk( + "users/getUserInfo", + async (_, thunkApi) => { + try { + const token = selectAuthToken(thunkApi.getState()); + console.log(token); + // const token = useSelector(selectAuthToken); + // console.log(token); + if (!token) { + throw new Error("No token found"); + } + setAuthHeaders(token); + const { data } = await instance.get("/"); -// console.log("Data received from API:", data); -// return data; -// } catch (error) { -// return thunkApi.rejectWithValue(error.message); -// } -// } -// ); + console.log("Data received from API:", data); + return data; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index d691970..83481a5 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -1,5 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { currentUser, editUser } from "./operations"; +import { editUser } from "./operations"; import { getUserInfo } from "./operations.js"; const INITIAL_STATE = { @@ -27,24 +27,14 @@ const settingsSlice = createSlice({ }, extraReducers: (builder) => { builder - .addCase(currentUser.pending, (state) => { - state.error = null; - }) - .addCase(currentUser.fulfilled, (state, action) => { - state.isLoggedIn = true; - state.user = action.payload; - }) - .addCase(currentUser.rejected, (state, action) => { - state.error = action.payload; - }) .addCase(editUser.pending, (state) => { state.error = null; }) - .addCase(editUser.fulfilled, (state, action) => { - state.user = action.payload; + .addCase(editUser.fulfilled, (state, { payload }) => { + state.user = payload; }) - .addCase(editUser.rejected, (state, action) => { - state.error = action.payload; + .addCase(editUser.rejected, (state, { payload }) => { + state.error = payload; }) .addCase(getUserInfo.pending, (state) => { @@ -55,7 +45,6 @@ const settingsSlice = createSlice({ state.user = payload.data; }) .addCase(getUserInfo.rejected, (state, { payload }) => { - state.loading = false; state.error = payload; }); }, From 8ad791506010f81fecd9edecdefc34d8951b4314 Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Mon, 2 Dec 2024 20:51:41 +0100 Subject: [PATCH 132/185] add icon for Yulia --- public/icons/sprite.svg | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/icons/sprite.svg b/public/icons/sprite.svg index 227fdc6..fb43e53 100644 --- a/public/icons/sprite.svg +++ b/public/icons/sprite.svg @@ -55,6 +55,10 @@ + + + + \ No newline at end of file From d605333e1009a599e6a3cb1a3716b1c43f0448c6 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Mon, 2 Dec 2024 21:06:25 +0100 Subject: [PATCH 133/185] update redux setting --- src/redux/settings/slice.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index 83481a5..3f80a7b 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -1,6 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { editUser } from "./operations"; -import { getUserInfo } from "./operations.js"; +import { getUserInfo, editUser } from "./operations.js"; const INITIAL_STATE = { user: { From 0474a5054f653f3dd6a4b2e932c3f284a5f9c307 Mon Sep 17 00:00:00 2001 From: JeinKh Date: Tue, 3 Dec 2024 00:22:16 +0200 Subject: [PATCH 134/185] add logic and some styles --- src/components/WaterItem/WaterItem.jsx | 39 ++++++++++- src/components/WaterItem/WaterItem.module.css | 64 +++++++++++++++++++ src/components/WaterList/WaterList.jsx | 28 +++++++- src/components/WaterList/WaterList.module.css | 16 +++++ src/redux/water/operations.js | 49 ++++++++++++++ src/redux/water/selectors.js | 1 + src/redux/water/slice.js | 48 ++++++++++++++ 7 files changed, 243 insertions(+), 2 deletions(-) diff --git a/src/components/WaterItem/WaterItem.jsx b/src/components/WaterItem/WaterItem.jsx index b2aeecb..83f3642 100644 --- a/src/components/WaterItem/WaterItem.jsx +++ b/src/components/WaterItem/WaterItem.jsx @@ -1,5 +1,42 @@ +// import { useDispatch } from "react-redux"; +// import { deleteWaterItem } from "../../redux/water/operations"; +import s from "./WaterItem.module.css"; const WaterItem = () => { - return <>; + // const dispatch = useDispatch(); + return ( +
+
+ + + +
+

250 ml

+

7:00 AM

+
+
+ + + + + + +
+
+ {/* icon +
+

{amount} ml

+

{createdAt}

+
+
+ + +
*/} +
+ ); }; export default WaterItem; diff --git a/src/components/WaterItem/WaterItem.module.css b/src/components/WaterItem/WaterItem.module.css index 189ff91..0a0e9e2 100644 --- a/src/components/WaterItem/WaterItem.module.css +++ b/src/components/WaterItem/WaterItem.module.css @@ -1 +1,65 @@ /*style*/ +.wrapper { + display: flex; + align-items: center; + gap: 20px; + background-color: #fff; + border-radius: 15px; + padding: 20px; + width: 192px; + margin: 24px 0px; +} + +.amount { + color: #323f47; + font-size: 15px; + font-weight: 700; + line-height: 22.4px; +} + +.time { + color: #2f2f2f99; + font-size: 12px; + font-weight: 400; + line-height: 22.4px; +} + +.container { + display: flex; + flex-direction: column; + gap: 14px; +} + +.edit { + fill: #323f47; +} + +.trash { + fill: #323f47; +} + +/* @media (min-width: 765px) { +} + +@media (min-width: 375px) { + .wrapper { + gap: 10px; + padding: 21px 14px; + width: 149px; + margin: 24px 0px; + } + + .amount { + font-size: 14px; + line-height: 14px; + } + + .time { + font-size: 12px; + line-height: 12px; + } + + .container { + gap: 8px; + } +} */ diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx index 56321bd..eb91af2 100644 --- a/src/components/WaterList/WaterList.jsx +++ b/src/components/WaterList/WaterList.jsx @@ -1,5 +1,31 @@ +// import { useDispatch, useSelector } from "react-redux"; +import WaterItem from "../WaterItem/WaterItem"; +import s from "./WaterList.module.css"; +// import { useEffect } from "react"; +// import { fetchWaterItems } from "../../redux/water/operations"; const WaterList = () => { - return <>; + // const dispatch = useDispatch(); + // useEffect(() => { + // dispatch(fetchWaterItems()); + // }, [dispatch]); + return ( +
    + + + + {/* {items.map((item) => { + return ( +
  • + +
  • + ); + })} */} +
+ ); }; export default WaterList; diff --git a/src/components/WaterList/WaterList.module.css b/src/components/WaterList/WaterList.module.css index 189ff91..0a22cb0 100644 --- a/src/components/WaterList/WaterList.module.css +++ b/src/components/WaterList/WaterList.module.css @@ -1 +1,17 @@ /*style*/ +.wrapper { + display: flex; + gap: 16px; +} + +/* @media (min-width: 768px) { + .wrapper { + gap: 32px; + } +} + +@media (min-width: 375px) { + .wrapper { + gap: 8px; + } +} */ diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index e998ecf..b301043 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -51,3 +51,52 @@ export const editWaterData = async (entries) => { throw new Error(e.response?.status || "Post water error"); } }; + +// export const fetchWaterItems = createAsyncThunk( +// "water/fetchAll", +// async (_, thunkAPI) => { +// try { +// const response = await axios.get("/api/water"); +// console.log(response.data); +// // return response.data; +// } catch (error) { +// return thunkAPI.rejectWithValue(error.message); +// } +// } +// ); + +// export const addWaterItem = createAsyncThunk( +// "water/addWaterItem", +// async (body, thunkAPI) => { +// try { +// const { data } = await axios.post("/", body); +// return data; +// } catch (error) { +// return thunkAPI.rejectWithValue(error.message); +// } +// } +// ); + +// export const deleteWaterItem = createAsyncThunk( +// "water/deleteWaterItem", +// async (_id, thunkAPI) => { +// try { +// await axios.delete(`/${_id}`); +// return _id; +// } catch (error) { +// return thunkAPI.rejectWithValue(error.message); +// } +// } +// ); + +// export const editWaterItem = createAsyncThunk( +// "water/editWaterItem", +// async (body, thunkAPI) => { +// try { +// const { data } = await axios.patch(`/${_id}`, { ...body }); +// return data; +// } catch (error) { +// return thunkAPI.rejectWithValue(error.message); +// } +// } +// ); diff --git a/src/redux/water/selectors.js b/src/redux/water/selectors.js index a6f9bf1..1487e3f 100644 --- a/src/redux/water/selectors.js +++ b/src/redux/water/selectors.js @@ -3,6 +3,7 @@ export const selectChosenMonth = (state) => state.water.chosenMonth; export const selectChosenDate = (state) => state.water.chosenDate; //Обрана дата export const selectIsLoading = (state) => state.water.loading; export const selectError = (state) => state.water.error; +export const selectWaterItems = (state) => state.water.items; export const selectWaterAmountForToday = (state) => { const today = new Date().toLocaleDateString("en-CA"); diff --git a/src/redux/water/slice.js b/src/redux/water/slice.js index f926db9..49a4942 100644 --- a/src/redux/water/slice.js +++ b/src/redux/water/slice.js @@ -4,6 +4,7 @@ import { fetchWaterData } from "./operations"; const today = new Date().toLocaleDateString("en-CA"); // дата локальна, (YYYY-MM-DD) const INITIAL_STATE = { + items: [], daysDrinking: [], // Дані про дні пиття води за місяць dayDetails: [], // Деталі пиття води за конкретний день chosenDate: today, @@ -45,6 +46,53 @@ const waterSlice = createSlice({ state.loading = false; state.error = action.payload; }); + // .addCase(fetchWaterItems.pending, (state) => { + // state.loading = true; + // state.error = null; + // }) + // .addCase(fetchWaterItems.fulfilled, (state, action) => { + // (state.loading = false), (state.items = action.payload); + // }) + // .addCase(fetchWaterItems.rejected, (state, action) => { + // (state.loading = false), (state.error = action.payload); + // }) + // .addCase(addWaterItem.pending, (state) => { + // state.loading = true; + // }) + // .addCase(addWaterItem.fulfilled, (state, action) => { + // state.loading = false; + // state.error = null; + // state.items.push(action.payload); + // }) + // .addCase(addWaterItem.rejected, (state, action) => { + // state.loading = false; + // state.error = action.payload; + // }) + // .addCase(deleteWaterItem.pending, (state) => { + // state.loading = true; + // }) + // .addCase(deleteWaterItem.fulfilled, (state, action) => { + // state.loading = false; + // state.error = null; + // state.items = state.items.filter((item) => { + // item._id !== action.payload._id; + // }); + // }) + // .addCase(deleteWaterItem.rejected, (state, action) => { + // state.loading = false; + // state.error = action.payload; + // }) + // .addCase(editWaterItem.pending, (state) => { + // state.loading = true; + // }) + // .addCase(editWaterItem.fulfilled, (state, action) => { + // state.loading = false; + // state.error = null; + // }) + // .addCase(editWaterItem.rejected, (state, action) => { + // state.loading = false; + // state.error = action.payload; + // }); }, }); From 578ff43c8ca29d392098f679be32bd5ca4079520 Mon Sep 17 00:00:00 2001 From: II-777 <45958058+II-777@users.noreply.github.com> Date: Tue, 3 Dec 2024 02:07:04 -0500 Subject: [PATCH 135/185] fix HomePage styles, remove hardcoded container height --- .../AdvantagesSection.module.css | 2 +- src/components/Container/Container.module.css | 9 ++- src/components/Section/Section.module.css | 1 + .../WelcomeSection/WelcomeSection.module.css | 69 +++++++++++++++---- src/pages/HomePage/HomePage.module.css | 14 ---- 5 files changed, 66 insertions(+), 29 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 1d827fe..4cbe205 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -183,7 +183,7 @@ @media only screen and (min-width: 1440px) { .bgimage { - width: 100%; + width: 672px; background-image: url("./../../img/advantages/girlD.webp"); } diff --git a/src/components/Container/Container.module.css b/src/components/Container/Container.module.css index b344462..36836e7 100644 --- a/src/components/Container/Container.module.css +++ b/src/components/Container/Container.module.css @@ -3,12 +3,19 @@ padding-right: 16px; border-radius: 30px; - background-color: #f0eff4; + background-color: var(--background-secondary-light); } @media only screen and (min-width: 768px) { .container { + width: 704; padding-left: 32px; padding-right: 32px; } } + +@media only screen and (min-width: 1440px) { + .container { + width: 672px; + } +} diff --git a/src/components/Section/Section.module.css b/src/components/Section/Section.module.css index 0945ea8..e03fbe9 100644 --- a/src/components/Section/Section.module.css +++ b/src/components/Section/Section.module.css @@ -2,6 +2,7 @@ padding: 16px; margin: 0 auto; max-width: 375px; + min-width: 320px; background-color: #ffffff; } diff --git a/src/components/WelcomeSection/WelcomeSection.module.css b/src/components/WelcomeSection/WelcomeSection.module.css index e8af7bc..09f0939 100644 --- a/src/components/WelcomeSection/WelcomeSection.module.css +++ b/src/components/WelcomeSection/WelcomeSection.module.css @@ -14,6 +14,9 @@ /* Logo Component */ .logo { margin-bottom: 74px; + width: 114px; + height: 20px; + letter-spacing: -0.01em; } /* Headers Styles */ @@ -27,6 +30,8 @@ font-family: 'Poppins', sans-serif; font-weight: 400; font-size: 14px; + height: 18px; + letter-spacing: 0.06em; line-height: 1em; margin-bottom: 16px; color: var(--text-primary-dark); @@ -39,6 +44,7 @@ margin-bottom: 32px; line-height: 1em; color: var(--background-primary-dark); + letter-spacing: -0.01em; } /* Buttons Styles */ @@ -47,29 +53,39 @@ justify-content: flex-start; align-items: center; gap: 10px; + margin-bottom: 51px; } .btn { font-family: 'Poppins', sans-serif; font-size: 14px; + line-height: 18px; + letter-spacing: -0.01em; font-weight: 700; text-align: center; + align-items: center; border-radius: 30px; - display: inline-block; + display: flex; + justify-content: center; + align-items: center; text-decoration: none; transition: background-color 0.3s ease; } .btnPrimary { - color: var(--text-primary-dark); + color: var(--background-primary-dark); background-color: var(--accent); padding: 14px 19px; + width: 116px; + height: 46px; } .btnSecondary { - color: var(--text-primary-dark); - border: 1px solid var(--text-primary-dark); + color: var(--background-primary-dark); + border: 1px solid var(--background-primary-dark); padding: 14px 28px; + width: 104px; + height: 46px; } .btnPrimary:hover { @@ -87,48 +103,75 @@ .logo { font-size: 24px; margin-bottom: 50px; + width: 155px; + height: 24px; + letter-spacing: -0.01em; + } + + .welcomeSection { + width: calc(704px - 64px); } .contentWrapper { - padding: 32px; - margin-bottom: 50px; + padding: 0px 32px; } .subtitle { + height: 24px; font-size: 16px; + letter-spacing: 0.06em; } .title { + height: 210px; font-size: 64px; - line-height: 1em; + line-height: 70px; margin-bottom: 32px; + letter-spacing: -0.01em; + } + + .btn { + font-family: 'Poppins', sans-serif; + font-size: 16px; + line-height: 24px; + letter-spacing: -0.01em; + font-weight: 700; + } + + .buttonsWrapper { + margin-bottom: 18px; + gap: 16px; } .btnPrimary { padding: 18px 40px; + height: 60px; + width: 169px; } .btnSecondary { padding: 18px 40px; + height: 60px; + width: 135px; } } /* lg */ @media (min-width: 1440px) { - .contentWrapper { - padding: 32px; - margin-bottom: 188px; - } - .logo { - font-size: 24px; margin-bottom: 132px; } .title { + height: 228px; + line-height: 76px; font-size: 80px; } + .buttonsWrapper { + margin-bottom: 156px; + } + .btnPrimary { padding: 18px 40px; } diff --git a/src/pages/HomePage/HomePage.module.css b/src/pages/HomePage/HomePage.module.css index 88d6bf9..4c52690 100644 --- a/src/pages/HomePage/HomePage.module.css +++ b/src/pages/HomePage/HomePage.module.css @@ -7,23 +7,12 @@ /* Section Styles */ .welcomeSection { - border-radius: 30px; - border: solid 1px var(--background-secondary-light); -} - -.welcomeSection { - background-color: var(--background-secondary-light); - border: solid 1px var(--background-secondary-light); color: var(--background-primary-dark); - min-height: 411px; padding: 24px 0px 16px 0px; width: 100%; - height: 411px; } .advantagesSection { - background-color: var(--background-secondary-light); - border: solid 1px var(--background-secondary-light); width: 100%; text-align: center; background-size: cover; @@ -37,14 +26,12 @@ @media (min-width: 375px) { .container { width: 375px; - height: 812px; } } /* md */ @media (min-width: 768px) { .welcomeSection { - height: 498px; padding: 32px 0px; } } @@ -59,7 +46,6 @@ .welcomeSection { padding: 32px 0px; - height: 736px; max-width: 672px; } } From 58e98b7c2171658e6fb5638d9dbf811f352924d9 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Tue, 3 Dec 2024 13:36:09 +0200 Subject: [PATCH 136/185] loader update --- src/components/Calendar/Calendar.jsx | 13 ++++---- src/components/Calendar/Calendar.module.css | 36 ++++++++++++++------- src/components/Loader/Loader.jsx | 8 +++-- 3 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 2bac17a..247cc11 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -9,15 +9,16 @@ import { import { selectDaysNotAsInWeek } from "../../redux/settings/selectors"; import CalendarItem from "../CalendarItem/CalendarItem"; import { fetchWaterData } from "../../redux/water/operations"; +import Loader from "../Loader/Loader"; const Calendar = () => { const dispatch = useDispatch(); const dateToShow = useSelector(selectChosenMonth); const daysDrinking = useSelector(selectDaysDrinking); - const daysNotAsInWeek = useSelector(selectDaysNotAsInWeek) ? true : false; + const daysAsInWeek = useSelector(selectDaysNotAsInWeek) ? false : true; const isLoading = useSelector(selectIsLoading); + const mobileOrDesktop = window.matchMedia("(max-width: 767px)").matches; - // const today = ; const [today_day, today_month, today_year_time] = new Date() // month починаються з нуля в Date .toLocaleString() .split("."); @@ -65,7 +66,7 @@ const Calendar = () => { ); }); - if (daysNotAsInWeek) return daysArray; + if (!daysAsInWeek) return daysArray; // Додаємо порожні дні перед початком місяця const firstDayOfMonth = new Date( @@ -81,16 +82,16 @@ const Calendar = () => { })); return [...emptyDaysBefore, ...daysArray]; - }, [daysDrinking, daysNotAsInWeek, month, year]); + }, [daysDrinking, daysAsInWeek, month, year]); // console.dir(calendarDays); return (
{isLoading ? ( -

Creating your water-drinking calendar...

+ ) : ( -
+
{calendarDays.map(({ day, percent }, index) => ( { +const Loader = ({ height = "100vh" }) => { return ( { color="#87d28d" radius="9" ariaLabel="three-dots-loading" - wrapperStyle={{}} + wrapperStyle={{ + height: height, + justifyContent: "center", + alignItems: "center", + }} wrapperClass="" /> ); From 60aced6a52f0cc6ad7cd9af6a5d9977b86e40d2e Mon Sep 17 00:00:00 2001 From: Sergey Stupak Date: Tue, 3 Dec 2024 13:09:36 +0100 Subject: [PATCH 137/185] added notify izitoast for modals --- src/modals/DeleteWaterModal/DeleteWaterModal.jsx | 13 ++++++++++--- src/modals/LogOutModal/LogOutModal.jsx | 16 ++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx index 1ccc356..77f5c2d 100644 --- a/src/modals/DeleteWaterModal/DeleteWaterModal.jsx +++ b/src/modals/DeleteWaterModal/DeleteWaterModal.jsx @@ -2,15 +2,22 @@ import css from "./DeleteWaterModal.module.css"; import Modal from "../Modal/Modal"; import { useDispatch } from "react-redux"; import { apiDeleteWater } from "../../redux/water/operations"; +import iziToast from "izitoast"; +import "izitoast/dist/css/iziToast.min.css"; const DeleteWaterModal = ({ isOpen, onClose }) => { const dispatch = useDispatch(); const handleDelete = () => { - // логика удаления воды - dispatch(apiDeleteWater()); - // оповещение с помощью Toast + dispatch(apiDeleteWater()); // логика удаления воды onClose(); + iziToast.success({ + title: "Done", + message: "Successfully Logged Out!", + displayMode: 1, + position: "topRight", + maxWidth: "300px", + }); // актуализировать с помощью redux данные в WaterProgressBar, WaterList та Calendar }; diff --git a/src/modals/LogOutModal/LogOutModal.jsx b/src/modals/LogOutModal/LogOutModal.jsx index 714520f..179e866 100644 --- a/src/modals/LogOutModal/LogOutModal.jsx +++ b/src/modals/LogOutModal/LogOutModal.jsx @@ -4,23 +4,27 @@ import Modal from "../Modal/Modal"; import { useDispatch } from "react-redux"; import { apiLogout } from "../../redux/auth/operations"; import { useNavigate } from "react-router-dom"; - -// import toast from "react-hot-toast"; +import iziToast from "izitoast"; +import "izitoast/dist/css/iziToast.min.css"; const LogOutModal = ({ isOpen, onClose }) => { const dispatch = useDispatch(); - const navigateTo = useNavigate(); const handleRedirect = () => { - navigateTo("/"); // переадресация на главную страницу + navigateTo("/"); }; const handleLogOut = () => { dispatch(apiLogout()); onClose(); handleRedirect(); - // вставить оповещение с помощью Toast, типа: - // toast.success('Successfully logged Out!') + iziToast.success({ + title: "Done", + message: "Successfully Logged Out!", + displayMode: 1, + position: "topRight", + maxWidth: "300px", + }); }; return ( From 4d0eda5d3559e7b7f3c9701ced3aeefa5325a994 Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Tue, 3 Dec 2024 14:41:05 +0200 Subject: [PATCH 138/185] fixed userGetInfo/myDailyNorma component done --- src/components/WaterDailyNorma/WaterDailyNorma.jsx | 1 + src/redux/settings/operations.js | 10 +--------- src/redux/settings/slice.js | 1 - 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index c8d495f..bcc44b5 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -8,6 +8,7 @@ export const formatVolume = (ml) => { const WaterDailyNorma = () => { const dailyNorma = useSelector(selectDailyNorm); + // console.log("daily norma", dailyNorma); return ( <> diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index c9dc938..443af62 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -1,13 +1,12 @@ +import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; import { selectAuthToken } from "../auth/selectors.js"; -import axios from "axios"; // axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/"; export const instance = axios.create({ baseURL: "https://back-inter-mafia.onrender.com/api/users", }); - const setAuthHeaders = (token) => { instance.defaults.headers.common.Authorization = `Bearer ${token}`; }; @@ -55,16 +54,9 @@ export const getUserInfo = createAsyncThunk( async (_, thunkApi) => { try { const token = selectAuthToken(thunkApi.getState()); - console.log(token); - // const token = useSelector(selectAuthToken); // console.log(token); - if (!token) { - throw new Error("No token found"); - } setAuthHeaders(token); const { data } = await instance.get("/"); - - console.log("Data received from API:", data); return data; } catch (error) { return thunkApi.rejectWithValue(error.message); diff --git a/src/redux/settings/slice.js b/src/redux/settings/slice.js index 3f80a7b..ebb82b0 100644 --- a/src/redux/settings/slice.js +++ b/src/redux/settings/slice.js @@ -40,7 +40,6 @@ const settingsSlice = createSlice({ state.error = null; }) .addCase(getUserInfo.fulfilled, (state, { payload }) => { - // console.log("User info payload:", payload); state.user = payload.data; }) .addCase(getUserInfo.rejected, (state, { payload }) => { From c0cdf0c0968bc516c5c47ae29b75aa5982d48365 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Tue, 3 Dec 2024 14:37:01 +0100 Subject: [PATCH 139/185] update setting form --- .../UsersSettingsForm/UsersSettingsForm.jsx | 19 +++++++++++-------- src/redux/settings/operations.js | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index c1812f8..92f93eb 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -7,11 +7,10 @@ import clsx from "clsx"; import { useDispatch, useSelector } from "react-redux"; import { selectEmail, - // selectEmail, selectName, selectUser, } from "../../redux/settings/selectors"; -import { getUserInfo, editUser } from "../../redux/settings/operations"; +import { editUser } from "../../redux/settings/operations"; // import { selectAuthUser } from "../../redux/auth/selectors"; const validationSettingSchema = Yup.object().shape({ @@ -39,11 +38,10 @@ const UsersSettingsForm = () => { const userName = useSelector(selectName); const userEmail = useSelector(selectEmail); const user = useSelector(selectUser); - console.log(userEmail); - useEffect(() => { - dispatch(getUserInfo()); - }, [dispatch]); + // useEffect(() => { + // dispatch(getUserInfo()); + // }, [dispatch]); const [avatarPreview, setAvatarPreview] = useState(null); @@ -77,10 +75,15 @@ const UsersSettingsForm = () => { } }, [user.avatarUrl, userName]); + // console.log(userEmail); + useEffect(() => { - setValue("name", userName); + if (userEmail) { + const emailNamePart = userEmail.split("@")[0]; + setValue("name", emailNamePart); + } setValue("email", userEmail); - }, [userName, userEmail, setValue]); + }, [userEmail, setValue]); useEffect(() => { if (weight && activeTime && gender) { diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index 443af62..b6cf6cc 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -41,7 +41,7 @@ export const editUser = createAsyncThunk( "users/edit", async (formData, thunkAPI) => { try { - const { data } = await instance.patch("", formData); + const { data } = await instance.patch("/", formData); return data; } catch (error) { return thunkAPI.rejectWithValue(error.message); From c078bf8618da4d58f423a8bd8508b1f39e1c0ad0 Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Tue, 3 Dec 2024 15:24:06 +0100 Subject: [PATCH 140/185] add avatar logic --- .../UsersSettingsForm/UsersSettingsForm.jsx | 42 +++++++++---------- .../UsersSettingsForm.module.css | 14 +++++++ 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 92f93eb..09c41b6 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -39,10 +39,6 @@ const UsersSettingsForm = () => { const userEmail = useSelector(selectEmail); const user = useSelector(selectUser); - // useEffect(() => { - // dispatch(getUserInfo()); - // }, [dispatch]); - const [avatarPreview, setAvatarPreview] = useState(null); const { @@ -67,15 +63,15 @@ const UsersSettingsForm = () => { const activeTime = watch("activeTime"); const gender = watch("gender"); - useEffect(() => { - if (user.avatarUrl) { - setAvatarPreview(user.avatarUrl); - } else if (userName) { - setAvatarPreview(userName.charAt(0).toUpperCase()); + const handleAvatarChange = (e) => { + const file = e.target.files[0]; + if (file && file.type.startsWith("image/")) { + setAvatarPreview(URL.createObjectURL(file)); + setValue("avatarUrl", file); + } else { + alert("Please select a valid image file."); } - }, [user.avatarUrl, userName]); - - // console.log(userEmail); + }; useEffect(() => { if (userEmail) { @@ -85,6 +81,14 @@ const UsersSettingsForm = () => { setValue("email", userEmail); }, [userEmail, setValue]); + useEffect(() => { + if (user.avatarUrl) { + setAvatarPreview(user.avatarUrl); + } else if (userName) { + setAvatarPreview(userName.charAt(0).toUpperCase()); + } + }, [user.avatarUrl, userName]); + useEffect(() => { if (weight && activeTime && gender) { let waterNorm = 0; @@ -97,14 +101,6 @@ const UsersSettingsForm = () => { } }, [weight, activeTime, gender, setValue]); - const handleAvatarChange = (e) => { - const file = e.target.files[0]; - if (file) { - setAvatarPreview(URL.createObjectURL(file)); - setValue("avatarUrl", file); - } - }; - const onSubmit = async (data) => { const formData = new FormData(); Object.entries(data).forEach(([key, value]) => @@ -133,7 +129,11 @@ const UsersSettingsForm = () => { alt="User Avatar" /> ) : ( -
{avatarPreview}
+ Preview Avatar ) ) : (
{userName?.charAt(0)}
diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.module.css b/src/components/UsersSettingsForm/UsersSettingsForm.module.css index dc99db0..c00c2f1 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.module.css +++ b/src/components/UsersSettingsForm/UsersSettingsForm.module.css @@ -396,3 +396,17 @@ input[type="number"]::-webkit-outer-spin-button { display: none; } } + +.avatarPlaceholder { + width: 75px; + height: 75px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background-color: #f0f0f0; + font-family: "Poppins", sans-serif; + font-weight: 700; + font-size: 36px; + color: #9be1a0; +} From 35b5e317cd72eae6e695b0948a1f4818e019fd54 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Tue, 3 Dec 2024 17:05:23 +0200 Subject: [PATCH 141/185] styles done --- src/components/Calendar/Calendar.jsx | 14 +++++++++----- .../CalendarItem/CalendarItem.module.css | 5 +++++ src/components/MonthInfo/MonthInfo.jsx | 6 +++++- src/components/MonthInfo/MonthInfo.module.css | 9 ++++++++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 247cc11..4653340 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -17,7 +17,7 @@ const Calendar = () => { const daysDrinking = useSelector(selectDaysDrinking); const daysAsInWeek = useSelector(selectDaysNotAsInWeek) ? false : true; const isLoading = useSelector(selectIsLoading); - const mobileOrDesktop = window.matchMedia("(max-width: 767px)").matches; + const mobileDevice = window.matchMedia("(max-width: 767px)").matches; const [today_day, today_month, today_year_time] = new Date() // month починаються з нуля в Date .toLocaleString() @@ -84,14 +84,18 @@ const Calendar = () => { return [...emptyDaysBefore, ...daysArray]; }, [daysDrinking, daysAsInWeek, month, year]); - // console.dir(calendarDays); - return (
{isLoading ? ( - + ) : ( -
+
{calendarDays.map(({ day, percent }, index) => ( {

- {isCalendarVisible ? "Month" : "Statistics"} + {isCalendarVisible ? ( + "Month" + ) : ( + Statistics + )}

diff --git a/src/components/MonthInfo/MonthInfo.module.css b/src/components/MonthInfo/MonthInfo.module.css index c889595..ad56e3b 100644 --- a/src/components/MonthInfo/MonthInfo.module.css +++ b/src/components/MonthInfo/MonthInfo.module.css @@ -1,6 +1,6 @@ .sectionCalendar { - margin: 0 auto; width: 100%; + margin: 0 auto; } .MonthInfo { @@ -14,6 +14,8 @@ } .title { + display: flex; + align-items: center; color: #323f47; font-weight: 700; font-size: 20px; @@ -21,6 +23,11 @@ /* line-height: 1.2; */ letter-spacing: -0.01em; } +@media only screen and (max-width: 355px) { + .statisticsTitle { + font-size: 14px; + } +} .toggleViewBtn { margin-left: 6px; From 538e8bb8382b181ba24cc8300b082ebecf1e96c3 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Tue, 3 Dec 2024 17:27:05 +0200 Subject: [PATCH 142/185] styles done. correct gap for small content --- src/components/Calendar/Calendar.module.css | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/Calendar/Calendar.module.css b/src/components/Calendar/Calendar.module.css index e7eeb08..5e6865e 100644 --- a/src/components/Calendar/Calendar.module.css +++ b/src/components/Calendar/Calendar.module.css @@ -7,13 +7,13 @@ row-gap: 20px; align-items: start; justify-items: center; - height: 300px; + max-height: 300px; column-gap: 18px; } @media only screen and (min-width: 768px) { .grid { gap: 15px 62px; - height: 305px; + max-height: 305px; } } @media only screen and (min-width: 1440px) { @@ -25,17 +25,18 @@ /* ===== 8-days week view ===== */ .grid8 { display: grid; - grid-template-columns: repeat(8, 1fr); + grid-template-columns: repeat(7, 1fr); row-gap: 20px; align-items: start; justify-items: center; - height: 300px; + max-height: 300px; column-gap: 18px; } @media only screen and (min-width: 768px) { .grid8 { + grid-template-columns: repeat(8, 1fr); gap: 15px 48px; - height: 305px; + max-height: 305px; } } @media only screen and (min-width: 1440px) { From 9f2f196b5243a4cfd5656749e6241b1944eb6110 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Tue, 3 Dec 2024 16:50:03 +0100 Subject: [PATCH 143/185] add number of customers --- .../AdvantagesSection/AdvantagesSection.jsx | 22 ++++++++++++++++++- .../AdvantagesSection.module.css | 2 -- src/redux/auth/operations.js | 12 ++++++++++ src/redux/auth/selectors.js | 1 + src/redux/auth/slice.js | 16 +++++++++++++- 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.jsx b/src/components/AdvantagesSection/AdvantagesSection.jsx index c733a04..cd69983 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.jsx +++ b/src/components/AdvantagesSection/AdvantagesSection.jsx @@ -1,10 +1,28 @@ +import { useEffect } from "react"; +import { useSelector, useDispatch } from "react-redux"; + import css from "./AdvantagesSection.module.css"; import avatar1 from "./../../img/advantages/Avatar1.png"; import avatar2 from "./../../img/advantages/Avatar2.png"; import avatar3 from "./../../img/advantages/Avatar3.png"; +import { + selectAllUsers, + selectAuthIsLoading, +} from "../../redux/auth/selectors.js"; +import { getAllUsers } from "../../redux/auth/operations.js"; const AdvantagesSection = () => { + const dispatch = useDispatch(); + const isLoading = useSelector(selectAuthIsLoading); + const count = useSelector(selectAllUsers); + console.log(count); + console.log(typeof count); + + useEffect(() => { + dispatch(getAllUsers()); + }, [dispatch]); + return (
@@ -25,7 +43,9 @@ const AdvantagesSection = () => {

- Our happy + Our {!count || isLoading ? " " : `${count} `} + happy +
customers

diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index 4cbe205..adcceef 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -62,7 +62,6 @@ font-weight: 700; font-size: 12px; color: var(--background-primary-dark); - width: 67px; } .span { color: var(--accent); @@ -144,7 +143,6 @@ .customers_text { font-size: 15px; line-height: 1.49333; - width: 90px; } .avatar { diff --git a/src/redux/auth/operations.js b/src/redux/auth/operations.js index 19f0814..bb2d5e5 100644 --- a/src/redux/auth/operations.js +++ b/src/redux/auth/operations.js @@ -79,3 +79,15 @@ export const apiLogout = createAsyncThunk( } } ); + +export const getAllUsers = createAsyncThunk( + "users/getAllUsers", + async (_, thunkApi) => { + try { + const response = await instance.get("users/count-user"); + return response.data.data; + } catch (error) { + return thunkApi.rejectWithValue(error.message); + } + } +); diff --git a/src/redux/auth/selectors.js b/src/redux/auth/selectors.js index bb60e33..ae6b6f6 100644 --- a/src/redux/auth/selectors.js +++ b/src/redux/auth/selectors.js @@ -7,3 +7,4 @@ export const selectAuthError = (state) => state.auth.error; export const selectAuthIsRegisteredSuccess = (state) => state.auth.isRegisteredSuccess; export const selectAuthIsLoading = (state) => state.auth.isLoading; +export const selectAllUsers = (state) => state.auth.count; diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index 8a2b770..9f51ac5 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -1,5 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { apiLogin, apiLogout, apiRegister } from "./operations"; +import { apiLogin, apiLogout, apiRegister, getAllUsers } from "./operations"; const INITIAL_STATE = { user: { @@ -12,6 +12,7 @@ const INITIAL_STATE = { isRefreshing: false, error: null, isLoading: false, + count: 0, }; const authSlice = createSlice({ @@ -58,6 +59,19 @@ const authSlice = createSlice({ }) .addCase(apiLogout.rejected, (state, action) => { state.error = action.payload; + }) + + .addCase(getAllUsers.pending, (state) => { + state.isLoading = true; + state.error = null; + }) + .addCase(getAllUsers.fulfilled, (state, action) => { + state.isLoading = false; + state.count = action.payload; + }) + .addCase(getAllUsers.rejected, (state, action) => { + state.isLoading = false; + state.error = action.payload; }); // .addCase(apiRefresh.pending, (state) => { From ef50c07100709ee1d6cf0aab392494a90152ae69 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Tue, 3 Dec 2024 18:46:58 +0200 Subject: [PATCH 144/185] use correct date in any local --- src/components/Calendar/Calendar.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 4653340..803c8da 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -19,10 +19,11 @@ const Calendar = () => { const isLoading = useSelector(selectIsLoading); const mobileDevice = window.matchMedia("(max-width: 767px)").matches; - const [today_day, today_month, today_year_time] = new Date() // month починаються з нуля в Date - .toLocaleString() - .split("."); - const today_year = today_year_time.slice(0, 4); + const today = new Date(); + const today_day = today.getDate().toString().padStart(2, "0"); + const today_month = (today.getMonth() + 1).toString().padStart(2, "0"); // Місяці починаються з 0 + const today_year = today.getFullYear().toString(); + const [year, month] = dateToShow.split("-"); const firstDayOfWeek = 0; // Перший день місяця (0 - понеділок, 1 - неділя) From 37f4d58fa2821ccbec644a286eaf45242979f1e0 Mon Sep 17 00:00:00 2001 From: JeinKh Date: Tue, 3 Dec 2024 19:04:59 +0200 Subject: [PATCH 145/185] add swiper --- package-lock.json | 24 +++++++ package.json | 1 + src/components/WaterItem/WaterItem.jsx | 6 +- src/components/WaterItem/WaterItem.module.css | 69 ++++++++++++------- src/components/WaterList/WaterList.jsx | 35 +++++++++- src/components/WaterList/WaterList.module.css | 10 +-- 6 files changed, 109 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b9d56e..1c16c5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", + "swiper": "^11.1.15", "yup": "^1.4.0" }, "devDependencies": { @@ -6065,6 +6066,24 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/swiper": { + "version": "11.1.15", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.1.15.tgz", + "integrity": "sha512-IzWeU34WwC7gbhjKsjkImTuCRf+lRbO6cnxMGs88iVNKDwV+xQpBCJxZ4bNH6gSrIbbyVJ1kuGzo3JTtz//CBw==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", @@ -10845,6 +10864,11 @@ "picocolors": "^1.0.0" } }, + "swiper": { + "version": "11.1.15", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.1.15.tgz", + "integrity": "sha512-IzWeU34WwC7gbhjKsjkImTuCRf+lRbO6cnxMGs88iVNKDwV+xQpBCJxZ4bNH6gSrIbbyVJ1kuGzo3JTtz//CBw==" + }, "tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", diff --git a/package.json b/package.json index 0e8ad55..46d8166 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "react-router-dom": "^7.0.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", + "swiper": "^11.1.15", "yup": "^1.4.0" }, "devDependencies": { diff --git a/src/components/WaterItem/WaterItem.jsx b/src/components/WaterItem/WaterItem.jsx index 83f3642..52068f0 100644 --- a/src/components/WaterItem/WaterItem.jsx +++ b/src/components/WaterItem/WaterItem.jsx @@ -6,7 +6,7 @@ const WaterItem = () => { return (
- +
@@ -14,10 +14,10 @@ const WaterItem = () => {

7:00 AM

- + - +
diff --git a/src/components/WaterItem/WaterItem.module.css b/src/components/WaterItem/WaterItem.module.css index 0a0e9e2..ad5ffda 100644 --- a/src/components/WaterItem/WaterItem.module.css +++ b/src/components/WaterItem/WaterItem.module.css @@ -2,64 +2,81 @@ .wrapper { display: flex; align-items: center; - gap: 20px; background-color: #fff; border-radius: 15px; - padding: 20px; - width: 192px; + gap: 10px; + padding: 18px 14px; + width: 149px; margin: 24px 0px; } +.waterglass { + width: 38px; + height: 38px; +} + .amount { color: #323f47; - font-size: 15px; font-weight: 700; - line-height: 22.4px; + font-size: 14px; + line-height: 14px; } .time { color: #2f2f2f99; - font-size: 12px; font-weight: 400; - line-height: 22.4px; + font-size: 12px; + line-height: 12px; +} + +.edit, +.trash { + fill: #fff; + stroke: var(--text-primary-dark); + width: 14px; + height: 14px; } .container { display: flex; flex-direction: column; - gap: 14px; + gap: 8px; } -.edit { - fill: #323f47; -} +/* @media screen and (min-width: 768px){ -.trash { - fill: #323f47; -} - -/* @media (min-width: 765px) { -} +} */ -@media (min-width: 375px) { +@media screen and (min-width: 1440px) { .wrapper { - gap: 10px; - padding: 21px 14px; - width: 149px; + gap: 20px; + padding: 20px; + width: 192px; margin: 24px 0px; } + .waterglass { + width: 44px; + height: 45px; + } + .amount { - font-size: 14px; - line-height: 14px; + font-size: 15px; + line-height: 22.4px; } .time { font-size: 12px; - line-height: 12px; + line-height: 22.4px; } .container { - gap: 8px; + gap: 14px; } -} */ + + .edit, + .trash { + width: 16px; + height: 16px; + } +} diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx index eb91af2..d1f5436 100644 --- a/src/components/WaterList/WaterList.jsx +++ b/src/components/WaterList/WaterList.jsx @@ -1,4 +1,13 @@ // import { useDispatch, useSelector } from "react-redux"; + +import { Scrollbar } from "swiper/modules"; +import { Swiper, SwiperSlide } from "swiper/react"; + +import "swiper/css"; +// import "swiper/css/navigation"; +// import "swiper/css/pagination"; +import "swiper/css/scrollbar"; + import WaterItem from "../WaterItem/WaterItem"; import s from "./WaterList.module.css"; // import { useEffect } from "react"; @@ -10,9 +19,31 @@ const WaterList = () => { // }, [dispatch]); return (
    + console.log(swiper)} + onSlideChange={() => console.log("slide change")} + > + + + + + + + + + + + + + + {/* - - + */} {/* {items.map((item) => { return (
  • diff --git a/src/components/WaterList/WaterList.module.css b/src/components/WaterList/WaterList.module.css index 0a22cb0..4106b06 100644 --- a/src/components/WaterList/WaterList.module.css +++ b/src/components/WaterList/WaterList.module.css @@ -1,17 +1,17 @@ /*style*/ .wrapper { display: flex; - gap: 16px; + gap: 8px; } -/* @media (min-width: 768px) { +@media screen and (min-width: 768px) { .wrapper { gap: 32px; } } -@media (min-width: 375px) { +@media screen and (min-width: 1440px) { .wrapper { - gap: 8px; + gap: 16px; } -} */ +} From 73193ab989e88910c53e4d8a23f1a67770fba27c Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Tue, 3 Dec 2024 20:16:03 +0200 Subject: [PATCH 146/185] upd chooseDate --- src/components/ChooseDate/ChooseDate.jsx | 26 ++++++++++-------------- src/components/DailyInfo/DailyInfo.jsx | 19 +---------------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/src/components/ChooseDate/ChooseDate.jsx b/src/components/ChooseDate/ChooseDate.jsx index 5c4e62a..6425c7d 100644 --- a/src/components/ChooseDate/ChooseDate.jsx +++ b/src/components/ChooseDate/ChooseDate.jsx @@ -1,26 +1,22 @@ +import { useSelector } from "react-redux"; +import { selectChosenDate } from "../../redux/water/selectors.js"; import css from "./ChooseDate.module.css"; -const ChooseDate = ({ date }) => { +const ChooseDate = () => { + const choseDate = useSelector(selectChosenDate); + // Функція для перевірки, чи є дата сьогоднішньою const isToday = (date) => { - const today = new Date(); - const inputDate = new Date(date); - - // Порівнюємо лише рік, місяць і день - return ( - today.getFullYear() === inputDate.getFullYear() && - today.getMonth() === inputDate.getMonth() && - today.getDate() === inputDate.getDate() - ); + const today = new Date().toLocaleDateString("en-CA"); // Сьогоднішня дата у форматі "YYYY-MM-DD" + return today === date; // Порівнюємо дати як рядки }; - // Якщо дата сьогодні, відображаємо "Today", якщо ні — форматовану дату - const formattedDate = isToday(date) + const formattedDate = isToday(choseDate) ? "Today" : (() => { - const dateObj = new Date(date); - const day = dateObj.getDate(); - const month = dateObj.toLocaleString("en-GB", { month: "long" }); + const date = new Date(choseDate); // Створюємо Date-об'єкт з рядка + const day = date.getDate(); // Отримуємо день + const month = date.toLocaleString("en-CA", { month: "long" }); // Отримуємо назву місяця return `${day}, ${month}`; })(); diff --git a/src/components/DailyInfo/DailyInfo.jsx b/src/components/DailyInfo/DailyInfo.jsx index 3907b6e..8025ac6 100644 --- a/src/components/DailyInfo/DailyInfo.jsx +++ b/src/components/DailyInfo/DailyInfo.jsx @@ -1,30 +1,13 @@ -import { useMemo } from "react"; -import { selectChosenDate } from "../../redux/water/selectors.js"; -import { useSelector } from "react-redux"; import ChooseDate from "../ChooseDate/ChooseDate.jsx"; import AddWaterBtn from "../AddWaterBtn/AddWaterBtn.jsx"; import WaterList from "../WaterList/WaterList.jsx"; import css from "./DailyInfo.module.css"; -// Функція для отримання поточної дати у форматі 'YYYY-MM-DD' -const today = () => { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, "0"); // Місяці з 0 - const day = String(now.getDate()).padStart(2, "0"); - - return `${year}-${month}-${day}`; -}; - const DailyInfo = () => { - const date = useSelector(selectChosenDate); - const defaultDate = useMemo(() => today(), []); // Розрахунок один раз - const effectiveDate = date || defaultDate; - return (
    - +
    From 4e4400e85523eb94d4e3eaf65874c958f7a39bed Mon Sep 17 00:00:00 2001 From: Myroslava Hubar Date: Tue, 3 Dec 2024 19:33:40 +0100 Subject: [PATCH 147/185] create setting form --- src/components/UsersSettingsForm/UsersSettingsForm.jsx | 4 +++- src/components/UsersSettingsForm/UsersSettingsForm.module.css | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/UsersSettingsForm/UsersSettingsForm.jsx b/src/components/UsersSettingsForm/UsersSettingsForm.jsx index 09c41b6..c716030 100644 --- a/src/components/UsersSettingsForm/UsersSettingsForm.jsx +++ b/src/components/UsersSettingsForm/UsersSettingsForm.jsx @@ -136,7 +136,9 @@ const UsersSettingsForm = () => { /> ) ) : ( -
    {userName?.charAt(0)}
    +
    + {userName?.charAt(0)} +
    )}
    +
    + {/* icon

    {amount} ml

    diff --git a/src/components/WaterItem/WaterItem.module.css b/src/components/WaterItem/WaterItem.module.css index ad5ffda..8487094 100644 --- a/src/components/WaterItem/WaterItem.module.css +++ b/src/components/WaterItem/WaterItem.module.css @@ -29,6 +29,11 @@ line-height: 12px; } +.btn { + border: none; + background-color: transparent; +} + .edit, .trash { fill: #fff; diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx index d1f5436..9b24304 100644 --- a/src/components/WaterList/WaterList.jsx +++ b/src/components/WaterList/WaterList.jsx @@ -4,8 +4,6 @@ import { Scrollbar } from "swiper/modules"; import { Swiper, SwiperSlide } from "swiper/react"; import "swiper/css"; -// import "swiper/css/navigation"; -// import "swiper/css/pagination"; import "swiper/css/scrollbar"; import WaterItem from "../WaterItem/WaterItem"; @@ -28,7 +26,7 @@ const WaterList = () => { onSwiper={(swiper) => console.log(swiper)} onSlideChange={() => console.log("slide change")} > - + diff --git a/src/components/WaterList/WaterList.module.css b/src/components/WaterList/WaterList.module.css index 4106b06..1f520cb 100644 --- a/src/components/WaterList/WaterList.module.css +++ b/src/components/WaterList/WaterList.module.css @@ -4,6 +4,12 @@ gap: 8px; } +.scrollbar { + background: rgba(0, 0, 0, 0.1); + border-radius: 10px; + height: 8px; +} + @media screen and (min-width: 768px) { .wrapper { gap: 32px; From 43f335085b35176f76646a4b1f3db68003546aa4 Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Tue, 3 Dec 2024 20:46:05 +0100 Subject: [PATCH 150/185] fix isLoading conflict --- .../AdvantagesSection/AdvantagesSection.jsx | 10 +++------- .../AdvantagesSection.module.css | 17 +++++++++++++++++ src/redux/auth/slice.js | 3 --- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/AdvantagesSection/AdvantagesSection.jsx b/src/components/AdvantagesSection/AdvantagesSection.jsx index cd69983..ddf44cb 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.jsx +++ b/src/components/AdvantagesSection/AdvantagesSection.jsx @@ -6,15 +6,11 @@ import css from "./AdvantagesSection.module.css"; import avatar1 from "./../../img/advantages/Avatar1.png"; import avatar2 from "./../../img/advantages/Avatar2.png"; import avatar3 from "./../../img/advantages/Avatar3.png"; -import { - selectAllUsers, - selectAuthIsLoading, -} from "../../redux/auth/selectors.js"; +import { selectAllUsers } from "../../redux/auth/selectors.js"; import { getAllUsers } from "../../redux/auth/operations.js"; const AdvantagesSection = () => { const dispatch = useDispatch(); - const isLoading = useSelector(selectAuthIsLoading); const count = useSelector(selectAllUsers); console.log(count); console.log(typeof count); @@ -42,8 +38,8 @@ const AdvantagesSection = () => {
    -

    - Our {!count || isLoading ? " " : `${count} `} +

    + Our {!count ? " " : {count}}{" "} happy
    customers diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index adcceef..b733ad1 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -63,6 +63,23 @@ font-size: 12px; color: var(--background-primary-dark); } + +.count { + display: inline-block; + animation: countUp 2.5s ease-out; +} + +@keyframes countUp { + from { + transform: scale(1.2); + opacity: 0; + } + to { + transform: scale(1); + opacity: 1; + } +} + .span { color: var(--accent); } diff --git a/src/redux/auth/slice.js b/src/redux/auth/slice.js index fea36da..4d1e346 100644 --- a/src/redux/auth/slice.js +++ b/src/redux/auth/slice.js @@ -71,15 +71,12 @@ const authSlice = createSlice({ }) .addCase(getAllUsers.pending, (state) => { - state.isLoading = true; state.error = null; }) .addCase(getAllUsers.fulfilled, (state, action) => { - state.isLoading = false; state.count = action.payload; }) .addCase(getAllUsers.rejected, (state, action) => { - state.isLoading = false; state.error = action.payload; }); From 9b328b1840bee41b65a37fb722aa3ca4d43ea53a Mon Sep 17 00:00:00 2001 From: SvitLanaTy Date: Tue, 3 Dec 2024 21:03:31 +0100 Subject: [PATCH 151/185] fix error --- .../AdvantagesSection/AdvantagesSection.module.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/components/AdvantagesSection/AdvantagesSection.module.css b/src/components/AdvantagesSection/AdvantagesSection.module.css index b733ad1..aa17401 100644 --- a/src/components/AdvantagesSection/AdvantagesSection.module.css +++ b/src/components/AdvantagesSection/AdvantagesSection.module.css @@ -34,6 +34,7 @@ position: relative; display: flex; } + .customers_item { position: absolute; } @@ -44,6 +45,7 @@ width: 26px; height: 28px; } + .customers_item:nth-child(3) { z-index: 1; left: 36px; @@ -90,6 +92,7 @@ left: 159px; width: 168px; } + .benefits_list { display: flex; flex-wrap: wrap; @@ -99,15 +102,18 @@ border-radius: 30px; padding: 9px 12px; } + .benefits_item:nth-child(1) { background: var(--background-primary-dark); } + .benefits_item:nth-child(2) { background-color: var(--accent); } .benefits_item:nth-child(3) { background-color: var(--background-primary-light); } + .flex { display: flex; align-items: center; @@ -115,6 +121,7 @@ flex-direction: row; gap: 4px; } + .ellipse13 { width: 8px; height: 8px; @@ -150,6 +157,7 @@ min-height: 446px; background-image: url("./../../img/advantages/girlT.webp"); } + .customers { padding: 10px 20px; gap: 104px; @@ -166,6 +174,7 @@ width: 43px; height: 43px; } + .customers_item:nth-child(3) { left: 56px; } @@ -179,12 +188,15 @@ left: 430px; width: 242px; } + .benefits_list { gap: 10px; } + .benefits_item { padding: 11px 16px; } + .text { font-size: 12px; } From 337857c3636c7055f3d3d7b96b72c7a300b5ba19 Mon Sep 17 00:00:00 2001 From: ElmiraEminova <153520598+ElmiraEminova@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:42:15 +0100 Subject: [PATCH 152/185] Add Selector --- src/components/UserBar/UserBar.jsx | 49 +++-------- src/components/UserBar/UserBar.module.css | 7 +- .../UserBarPopover/UserBarPopover.jsx | 83 +++++++++++-------- .../UserBarPopover/UserBarPopover.module.css | 33 +++++--- src/components/UserPanel/UserPanel.jsx | 16 ++-- src/components/UserPanel/UserPanel.module.css | 7 +- 6 files changed, 96 insertions(+), 99 deletions(-) diff --git a/src/components/UserBar/UserBar.jsx b/src/components/UserBar/UserBar.jsx index e4fd527..487ccbe 100644 --- a/src/components/UserBar/UserBar.jsx +++ b/src/components/UserBar/UserBar.jsx @@ -1,14 +1,12 @@ import { useState, useRef, useEffect } from "react"; import { usePopper } from "react-popper"; import { HiChevronDown, HiChevronUp } from "react-icons/hi"; -import { AiOutlineSetting } from "react-icons/ai"; -import { IoLogOutOutline } from "react-icons/io5"; -// import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; +import UserBarPopover from "../../components/UserBarPopover/UserBarPopover.jsx"; import css from "./UserBar.module.css"; const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { - const defaultUserName = userName || "Nadia"; - const avatarPlaceholder = defaultUserName.charAt(0).toUpperCase(); + + const avatarPlaceholder = userName.charAt(0).toUpperCase(); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const buttonRef = useRef(null); @@ -64,7 +62,7 @@ const UserBar = ({ userName, avatarUrl, onSettingsClick, onLogOutClick }) => { return (

    -
    - - -
    +
    ); }; diff --git a/src/components/UserBar/UserBar.module.css b/src/components/UserBar/UserBar.module.css index b4b54b3..5dcd103 100644 --- a/src/components/UserBar/UserBar.module.css +++ b/src/components/UserBar/UserBar.module.css @@ -91,11 +91,8 @@ gap: 10px; height: 56px; } + .popoverbutton { - line-height: 1.49; - } - .icon { - width: 20px; - height: 20px; + font-size: 15px; } } diff --git a/src/components/UserBarPopover/UserBarPopover.jsx b/src/components/UserBarPopover/UserBarPopover.jsx index ea47f53..da8b474 100644 --- a/src/components/UserBarPopover/UserBarPopover.jsx +++ b/src/components/UserBarPopover/UserBarPopover.jsx @@ -1,37 +1,50 @@ -import { forwardRef } from "react" -import css from "./UserBarPopover.module.css" +import css from "./UserBarPopover.module.css"; - -const UserBarPopover = forwardRef( - ({ styles, attributes, onSettingsClick, onLogOutClick, closePopover }, ref) => { - return ( -
    { + return ( +
    + + - -
    - ); - } -); -UserBarPopover.displayName = "UserBarPopover" -export default UserBarPopover; + + + + Log out + +
    + ); +}; + +export default UserBarPopover; \ No newline at end of file diff --git a/src/components/UserBarPopover/UserBarPopover.module.css b/src/components/UserBarPopover/UserBarPopover.module.css index 2d27854..a1abaea 100644 --- a/src/components/UserBarPopover/UserBarPopover.module.css +++ b/src/components/UserBarPopover/UserBarPopover.module.css @@ -1,33 +1,42 @@ -/* .userbarpopover { +.userbarpopover { position: absolute; + display: flex; + flex-direction: column; + gap: 8px; + width: auto; + border-radius: 15px; + padding-top: 14px; + padding-bottom: 14px; + padding-left: 20px; background-color: white; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); - border-radius: 8px; - padding: 8px 0; z-index: 1000; - width: auto; } .popoverbutton { display: flex; align-items: center; gap: 8px; - padding: 12px 20px; width: 100%; text-align: left; - font-family: var(--font-family, Arial, sans-serif); + font-family: var(--font-family); font-size: 14px; - font-weight: 600; - color: #323f47; + font-weight: 700; + line-height: 1.29; + color: rgba(50, 63, 71, 0.4); background: none; border: none; cursor: pointer; + transition: color 300ms cubic-bezier(0.4, 0, 0.2, 1); } .popoverbutton:hover { - background-color: #f5f7f9; + color: var(--background-primary-dark); } -.popoverbutton:focus { - outline: 2px solid #0073e6; -} */ +@media (min-width: 768px) { + .popoverbutton { + line-height: 1.49; + font-size: 15px; + } +} diff --git a/src/components/UserPanel/UserPanel.jsx b/src/components/UserPanel/UserPanel.jsx index daf8589..b6a9e4d 100644 --- a/src/components/UserPanel/UserPanel.jsx +++ b/src/components/UserPanel/UserPanel.jsx @@ -1,20 +1,24 @@ import { useState } from "react"; +import { useSelector } from "react-redux"; +import { selectUser } from "../../redux/settings/selectors.js"; import UserBar from "../../components/UserBar/UserBar.jsx"; import UserSettingsModal from "../../modals/UserSettingsModal/UserSettingsModal.jsx"; import LogOutModal from "../../modals/LogOutModal/LogOutModal.jsx"; + import css from "./UserPanel.module.css"; -const UserPanel = ({ userName, avatarUrl }) => { - const defaultUserName = userName || "Nadia"; +const UserPanel = () => { + + const user = useSelector(selectUser); + // console.log(user) + const defaultUserName = user.name || user.email.split('@')[0]; const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false); const [isLogOutModalOpen, setIsLogOutModalOpen] = useState(false); const handleOpenSettings = () => { - // console.log("Settings modal opened"); setIsSettingsModalOpen(true); }; const handleOpenLogOut = () => { - // console.log("Log out modal opened"); setIsLogOutModalOpen(true); }; const handleCloseModals = () => { @@ -28,8 +32,8 @@ const UserPanel = ({ userName, avatarUrl }) => { Hello, {defaultUserName}! diff --git a/src/components/UserPanel/UserPanel.module.css b/src/components/UserPanel/UserPanel.module.css index 472fa70..1067350 100644 --- a/src/components/UserPanel/UserPanel.module.css +++ b/src/components/UserPanel/UserPanel.module.css @@ -2,22 +2,19 @@ display: flex; flex-direction: column; gap: 20px; - /* justify-content: space-between; */ } .greeting { font-family: "Gilroy", sans-serif; font-weight: 400; font-size: 32px; - /* line-height: 106%; - letter-spacing: -0.01em; */ + line-height: 1, 06; } .name { font-family: "Gilroy", sans-serif; font-size: 32px; - /* line-height: 106%; - letter-spacing: -0.01em; */ + line-height: 1, 06; font-weight: 700; } From e16f930cb246b19510f4c434eba5a52fd91304f7 Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Tue, 3 Dec 2024 23:29:25 +0200 Subject: [PATCH 153/185] swiper upd --- src/components/WaterItem/WaterItem.module.css | 9 ++++--- src/components/WaterList/WaterList.jsx | 26 +++++++++++++++++++ src/components/WaterList/WaterList.module.css | 8 +++--- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/components/WaterItem/WaterItem.module.css b/src/components/WaterItem/WaterItem.module.css index 8487094..39ab3cd 100644 --- a/src/components/WaterItem/WaterItem.module.css +++ b/src/components/WaterItem/WaterItem.module.css @@ -2,11 +2,12 @@ .wrapper { display: flex; align-items: center; + justify-content: space-between; background-color: #fff; border-radius: 15px; - gap: 10px; + /* gap: 10px; */ padding: 18px 14px; - width: 149px; + /* width: 149px; */ margin: 24px 0px; } @@ -53,12 +54,12 @@ } */ @media screen and (min-width: 1440px) { - .wrapper { + /* .wrapper { gap: 20px; padding: 20px; width: 192px; margin: 24px 0px; - } + } */ .waterglass { width: 44px; diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx index 9b24304..4395b7c 100644 --- a/src/components/WaterList/WaterList.jsx +++ b/src/components/WaterList/WaterList.jsx @@ -18,6 +18,26 @@ const WaterList = () => { return (
      + {/* { > + */} + + + + + diff --git a/src/components/WaterList/WaterList.module.css b/src/components/WaterList/WaterList.module.css index 1f520cb..f2b994f 100644 --- a/src/components/WaterList/WaterList.module.css +++ b/src/components/WaterList/WaterList.module.css @@ -1,5 +1,5 @@ /*style*/ -.wrapper { +/* .wrapper { display: flex; gap: 8px; } @@ -8,8 +8,8 @@ background: rgba(0, 0, 0, 0.1); border-radius: 10px; height: 8px; -} - +} */ +/* @media screen and (min-width: 768px) { .wrapper { gap: 32px; @@ -20,4 +20,4 @@ .wrapper { gap: 16px; } -} +} */ From ef7a6c4a8a2ce6f71a7a6bead7f6adefecd2019e Mon Sep 17 00:00:00 2001 From: Yuliia_Harashchenko Date: Tue, 3 Dec 2024 23:56:34 +0200 Subject: [PATCH 154/185] fetchWaterData --- public/icons/sprite.svg | 4 +-- .../WaterDailyNorma/WaterDailyNorma.jsx | 8 ++--- .../WaterProgressBar/WaterProgressBar.jsx | 31 ++++++++++++------- src/redux/settings/operations.js | 9 ++---- src/redux/water/operations.js | 14 ++++++--- 5 files changed, 39 insertions(+), 27 deletions(-) diff --git a/public/icons/sprite.svg b/public/icons/sprite.svg index fb43e53..9f9c40e 100644 --- a/public/icons/sprite.svg +++ b/public/icons/sprite.svg @@ -57,8 +57,8 @@ - - + + \ No newline at end of file diff --git a/src/components/WaterDailyNorma/WaterDailyNorma.jsx b/src/components/WaterDailyNorma/WaterDailyNorma.jsx index c8d495f..dc3489c 100644 --- a/src/components/WaterDailyNorma/WaterDailyNorma.jsx +++ b/src/components/WaterDailyNorma/WaterDailyNorma.jsx @@ -2,13 +2,13 @@ import { useSelector } from "react-redux"; import { selectDailyNorm } from "../../redux/settings/selectors.js"; import css from "./WaterDailyNorma.module.css"; -export const formatVolume = (ml) => { - return `${(ml / 1000).toFixed(1)}`; -}; - const WaterDailyNorma = () => { const dailyNorma = useSelector(selectDailyNorm); + const formatVolume = (ml) => { + return `${(ml / 1000).toFixed(1)}`; + }; + return ( <>
      diff --git a/src/components/WaterProgressBar/WaterProgressBar.jsx b/src/components/WaterProgressBar/WaterProgressBar.jsx index 4043967..51cdcd8 100644 --- a/src/components/WaterProgressBar/WaterProgressBar.jsx +++ b/src/components/WaterProgressBar/WaterProgressBar.jsx @@ -1,17 +1,24 @@ import { useSelector } from "react-redux"; -import { selectWaterAmountForToday } from "../../redux/water/selectors.js"; +// import { selectWaterAmountForToday } from "../../redux/water/selectors.js"; import { selectDailyNorm } from "../../redux/settings/selectors.js"; import css from "./WaterProgressBar.module.css"; -import { formatVolume } from "../WaterDailyNorma/WaterDailyNorma.jsx"; const WaterProgressBar = () => { - const currentAmount = useSelector(selectWaterAmountForToday); + // const currentAmount = useSelector(selectWaterAmountForToday); // console.log(currentAmount); const dailyNorma = useSelector(selectDailyNorm); - const waterPercentage = formatVolume( - Math.round((currentAmount / dailyNorma) * 100) - ); + // const dayDetails = useSelector(selectDayDetails); // Отримуємо дані за день + // const chosenDate = useSelector(selectChosenDate); // Отримуємо поточну дату, якщо потрібно + + // const todayData = dayDetails.filter((entry) => entry.date === chosenDate); + + // // Якщо структура даних dayDetails виглядає як масив, можна пройтись по ньому: + // const totalWater = dayDetails.reduce((total, entry) => { + // return total + (entry.amount || 0); // amount - це приклад назви поля з кількістю води + // }, 0); + + const waterPercentage = Math.round((0 / dailyNorma) * 100); return ( <> @@ -25,14 +32,16 @@ const WaterProgressBar = () => { /> - +
      diff --git a/src/redux/settings/operations.js b/src/redux/settings/operations.js index c9dc938..e9ddcc1 100644 --- a/src/redux/settings/operations.js +++ b/src/redux/settings/operations.js @@ -55,16 +55,13 @@ export const getUserInfo = createAsyncThunk( async (_, thunkApi) => { try { const token = selectAuthToken(thunkApi.getState()); - console.log(token); + // console.log(token); // const token = useSelector(selectAuthToken); // console.log(token); - if (!token) { - throw new Error("No token found"); - } + setAuthHeaders(token); const { data } = await instance.get("/"); - - console.log("Data received from API:", data); + // console.log("Data received from API:", data); return data; } catch (error) { return thunkApi.rejectWithValue(error.message); diff --git a/src/redux/water/operations.js b/src/redux/water/operations.js index e998ecf..8c4ba75 100644 --- a/src/redux/water/operations.js +++ b/src/redux/water/operations.js @@ -1,19 +1,25 @@ import axios from "axios"; import { createAsyncThunk } from "@reduxjs/toolkit"; +import { selectAuthToken } from "../auth/selectors.js"; -axios.defaults.baseURL = "https://back-inter-mafia.onrender.com/api/water"; +export const instance = axios.create({ + baseURL: "https://back-inter-mafia.onrender.com/api/water", +}); +const setAuthHeaders = (token) => { + instance.defaults.headers.common.Authorization = `Bearer ${token}`; +}; export const fetchWaterData = createAsyncThunk( "water/fetchWaterData", async ({ type, date }, thunkAPI) => { try { + const token = selectAuthToken(thunkAPI.getState()); + setAuthHeaders(token); const endpoint = type === "month" ? "/month" : "/day"; // console.log(endpoint); - - const response = await axios.get(endpoint, { + const response = await instance.get(endpoint, { params: { date }, }); - // console.dir(response.data); return response.data; } catch (error) { From fe21934ca7755a505b2502e2eb6f63ff2721a3d1 Mon Sep 17 00:00:00 2001 From: Anton Pokydko Date: Wed, 4 Dec 2024 00:16:33 +0200 Subject: [PATCH 155/185] add recharts --- package-lock.json | 590 ++++++++++++++++++ package.json | 1 + src/components/Calendar/Calendar.jsx | 7 +- src/components/MonthInfo/MonthInfo.jsx | 3 +- .../RechartsComponent/RechartsComponent.jsx | 74 +++ 5 files changed, 670 insertions(+), 5 deletions(-) create mode 100644 src/components/RechartsComponent/RechartsComponent.jsx diff --git a/package-lock.json b/package-lock.json index 1c16c5a..fa51987 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "react-redux": "^9.1.2", "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", + "recharts": "^2.14.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", "swiper": "^11.1.15", @@ -47,6 +48,18 @@ "vite-plugin-svg-sprite": "^0.5.2" } }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", @@ -1183,6 +1196,69 @@ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", "license": "MIT" }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2051,6 +2127,127 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -2129,6 +2326,12 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -2220,6 +2423,16 @@ "node": ">=0.10.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -2699,6 +2912,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2794,6 +3013,15 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3380,6 +3608,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/is-accessor-descriptor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", @@ -4988,6 +5225,37 @@ "react-dom": ">=18" } }, + "node_modules/react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -5002,6 +5270,44 @@ "node": ">= 6" } }, + "node_modules/recharts": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.14.1.tgz", + "integrity": "sha512-xtWulflkA+/xu4/QClBdtZYN30dbvTHjxjkh5XTMrH/CQ3WGDDPHHa/LLKCbgoqz0z3UaSH2/blV1i6VNMeh1g==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", @@ -5047,6 +5353,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6096,6 +6408,12 @@ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", "license": "MIT" }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", @@ -6486,6 +6804,28 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", @@ -6698,6 +7038,14 @@ } }, "dependencies": { + "@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, "@emotion/is-prop-valid": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", @@ -7304,6 +7652,60 @@ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, + "@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" + }, + "@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -7953,6 +8355,83 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, "data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -8000,6 +8479,11 @@ "ms": "^2.1.3" } }, + "decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, "decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -8062,6 +8546,15 @@ "esutils": "^2.0.2" } }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -8431,6 +8924,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -8513,6 +9011,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==" + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -8921,6 +9424,11 @@ "side-channel": "^1.0.4" } }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, "is-accessor-descriptor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", @@ -10052,6 +10560,27 @@ "react-router": "7.0.1" } }, + "react-smooth": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", + "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "requires": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + } + }, + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -10063,6 +10592,36 @@ "util-deprecate": "^1.0.1" } }, + "recharts": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.14.1.tgz", + "integrity": "sha512-xtWulflkA+/xu4/QClBdtZYN30dbvTHjxjkh5XTMrH/CQ3WGDDPHHa/LLKCbgoqz0z3UaSH2/blV1i6VNMeh1g==", + "requires": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.0", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "dependencies": { + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + } + } + }, + "recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "requires": { + "decimal.js-light": "^2.4.1" + } + }, "redux": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", @@ -10095,6 +10654,11 @@ "which-builtin-type": "^1.1.3" } }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -10879,6 +11443,11 @@ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, + "tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", @@ -11178,6 +11747,27 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "requires": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", diff --git a/package.json b/package.json index 46d8166..e42b102 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "react-redux": "^9.1.2", "react-responsive": "^10.0.0", "react-router-dom": "^7.0.1", + "recharts": "^2.14.1", "redux": "^5.0.1", "redux-persist": "^6.0.0", "swiper": "^11.1.15", diff --git a/src/components/Calendar/Calendar.jsx b/src/components/Calendar/Calendar.jsx index 803c8da..a62cf4c 100644 --- a/src/components/Calendar/Calendar.jsx +++ b/src/components/Calendar/Calendar.jsx @@ -19,10 +19,9 @@ const Calendar = () => { const isLoading = useSelector(selectIsLoading); const mobileDevice = window.matchMedia("(max-width: 767px)").matches; - const today = new Date(); - const today_day = today.getDate().toString().padStart(2, "0"); - const today_month = (today.getMonth() + 1).toString().padStart(2, "0"); // Місяці починаються з 0 - const today_year = today.getFullYear().toString(); + const [today_year, today_month, today_day] = new Date() // month починаються з нуля в Date + .toLocaleDateString("en-CA") + .split("-"); const [year, month] = dateToShow.split("-"); const firstDayOfWeek = 0; // Перший день місяця (0 - понеділок, 1 - неділя) diff --git a/src/components/MonthInfo/MonthInfo.jsx b/src/components/MonthInfo/MonthInfo.jsx index 84b0f0d..3ef13f6 100644 --- a/src/components/MonthInfo/MonthInfo.jsx +++ b/src/components/MonthInfo/MonthInfo.jsx @@ -2,6 +2,7 @@ import { useState } from "react"; import css from "./MonthInfo.module.css"; import CalendarPagination from "../CalendarPagination/CalendarPagination.jsx"; import Calendar from "../Calendar/Calendar.jsx"; +import RechartsComponent from "../RechartsComponent/RechartsComponent.jsx"; const MonthInfo = () => { const [isCalendarVisible, setIsCalendarVisible] = useState(true); @@ -30,7 +31,7 @@ const MonthInfo = () => {
    - {isCalendarVisible ? :
    } + {isCalendarVisible ? : }
); }; diff --git a/src/components/RechartsComponent/RechartsComponent.jsx b/src/components/RechartsComponent/RechartsComponent.jsx new file mode 100644 index 0000000..c3f6375 --- /dev/null +++ b/src/components/RechartsComponent/RechartsComponent.jsx @@ -0,0 +1,74 @@ +import { + LineChart, + Line, + XAxis, + YAxis, + Tooltip, + CartesianGrid, + ResponsiveContainer, +} from "recharts"; +import { useMemo } from "react"; +import { useSelector } from "react-redux"; +import { + selectChosenMonth, + selectDaysDrinking, +} from "../../redux/water/selectors"; + +const RechartsComponent = () => { + const dateToShow = useSelector(selectChosenMonth); + const daysDrinking = useSelector(selectDaysDrinking); + + const chartData = useMemo(() => { + if (!dateToShow) return []; // Захист від відсутності даних + + const [year, month] = dateToShow.split("-"); + + // Отримуємо кількість днів у місяці + const totalDaysInMonth = new Date(year, month, 0).getDate(); + + // Створюємо масив із днями місяця + const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => ({ + date: i + 1, + amount: 0, + })); + + // Додаємо дані про споживання води + daysDrinking?.forEach(({ date, amount }) => { + const dayIndex = parseInt(date.slice(8, 10), 10) - 1; // Отримуємо день з дати + if (daysArray[dayIndex]) { + daysArray[dayIndex].amount += amount; + } + }); + + return daysArray; + }, [dateToShow, daysDrinking]); + + return ( + + + + + `${value / 1000} L`} + label={{ value: "Water (L)", angle: -90, position: "insideLeft" }} + /> + `${value} ml`} /> + + + + ); +}; + +export default RechartsComponent; From d3fb7326ee09495314ad1e0e9cc79d55126d3975 Mon Sep 17 00:00:00 2001 From: Mitka92 <134132348+Mitka92@users.noreply.github.com> Date: Wed, 4 Dec 2024 00:35:45 +0200 Subject: [PATCH 156/185] upd scrollbar --- src/components/WaterList/WaterList.jsx | 76 ++++++++++--------- src/components/WaterList/WaterList.module.css | 13 ++++ 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/src/components/WaterList/WaterList.jsx b/src/components/WaterList/WaterList.jsx index 4395b7c..d25b3fc 100644 --- a/src/components/WaterList/WaterList.jsx +++ b/src/components/WaterList/WaterList.jsx @@ -17,26 +17,6 @@ const WaterList = () => { // }, [dispatch]); return (